From: Eunki, Hong Date: Tue, 7 Mar 2023 04:35:49 +0000 (+0900) Subject: Get NaturalSize only if required X-Git-Tag: dali_2.2.17~6 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=refs%2Fchanges%2F93%2F289393%2F2 Get NaturalSize only if required Since "GetClosestImageSize" spend a lot of time, let we setup fitting mode only if we use it. Change-Id: Id08c0d08c1784b60f4c3bccecf9affecdda8fc61 Signed-off-by: Eunki, Hong --- diff --git a/dali-toolkit/internal/controls/image-view/image-view-impl.cpp b/dali-toolkit/internal/controls/image-view/image-view-impl.cpp index 1133211..7fcc702 100644 --- a/dali-toolkit/internal/controls/image-view/image-view-impl.cpp +++ b/dali-toolkit/internal/controls/image-view/image-view-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -267,9 +267,6 @@ void ImageView::OnRelayout(const Vector2& size, RelayoutContainer& container) bool zeroPadding = (padding == Extents()); - Vector2 naturalSize; - mVisual.GetNaturalSize(naturalSize); - Dali::LayoutDirection::Type layoutDirection = static_cast( Self().GetProperty(Dali::Actor::Property::LAYOUT_DIRECTION).Get()); if(Dali::LayoutDirection::RIGHT_TO_LEFT == layoutDirection) @@ -281,7 +278,7 @@ void ImageView::OnRelayout(const Vector2& size, RelayoutContainer& container) Vector2 finalSize = size - Vector2(padding.start + padding.end, padding.top + padding.bottom); Vector2 finalOffset = Vector2(padding.start, padding.top); - ApplyFittingMode(finalSize, naturalSize, finalOffset, zeroPadding, transformMap); + ApplyFittingMode(finalSize, finalOffset, zeroPadding, transformMap); mVisual.SetTransformAndSize(transformMap, size); @@ -413,7 +410,7 @@ void ImageView::SetTransformMapForFittingMode(Vector2 finalSize, Vector2 natural } } -void ImageView::ApplyFittingMode(Vector2 finalSize, Vector2 naturalSize, Vector2 finalOffset, bool zeroPadding, Property::Map& transformMap) +void ImageView::ApplyFittingMode(Vector2 finalSize, Vector2 finalOffset, bool zeroPadding, Property::Map& transformMap) { Visual::FittingMode fittingMode = Toolkit::GetImplementation(mVisual).GetFittingMode(); @@ -429,6 +426,14 @@ void ImageView::ApplyFittingMode(Vector2 finalSize, Vector2 naturalSize, Vector2 { mImageVisualPaddingSetByTransform = true; + Vector2 naturalSize; + // NaturalSize will not be used for FILL fitting mode, which is default. + // Skip GetNaturalSize + if(fittingMode != Visual::FittingMode::FILL) + { + mVisual.GetNaturalSize(naturalSize); + } + // If FittingMode use FIT_WIDTH or FIT_HEIGTH, it need to change proper fittingMode if(fittingMode == Visual::FittingMode::FIT_WIDTH) { diff --git a/dali-toolkit/internal/controls/image-view/image-view-impl.h b/dali-toolkit/internal/controls/image-view/image-view-impl.h index 47f7283..7caf9eb 100644 --- a/dali-toolkit/internal/controls/image-view/image-view-impl.h +++ b/dali-toolkit/internal/controls/image-view/image-view-impl.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_INTERNAL_IMAGE_VIEW_H /* - * Copyright (c) 2022 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -177,12 +177,11 @@ private: /** * @brief Apply fittingMode * param[in] finalSize The size for fittingMode - * param[in] textureSize The size of texture * param[in] offset The offset for fittingMode * param[in] zeroPadding whether padding is zero * param[in] transformMap The map for fitting image */ - void ApplyFittingMode(Vector2 finalSize, Vector2 textureSize, Vector2 offset, bool zeroPadding, Property::Map& transformMap); + void ApplyFittingMode(Vector2 finalSize, Vector2 offset, bool zeroPadding, Property::Map& transformMap); private: // Undefined