From: Adeel Kazmi Date: Fri, 27 Jul 2018 15:51:55 +0000 (+0000) Subject: Merge "Change layout item list order according to the actor's child list" into devel... X-Git-Tag: dali_1.3.35~4 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=d8ec629f3d3ce51d49eeb2068c38909ca21cf4a3;hp=d714e9d1a30e1270c18867d239176394f2221718 Merge "Change layout item list order according to the actor's child list" into devel/master --- diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp index dcffb5b..77121d5 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -1734,3 +1734,44 @@ int UtcDaliImageViewUsingAtlasAndGetNaturalSize(void) END_TEST; } +int UtcDaliImageViewFillMode(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Create an ImageVisual without padding and set the fill-mode to fill" ); + tet_infoline( " There should be no need to change the transform, our size-policy should be relative and size shoudl be [1,1]"); + + ImageView imageView = ImageView::New(); + Property::Map imageMap; + imageMap.Add( Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE ); + imageMap.Add( Toolkit::ImageVisual::Property::URL, gImage_600_RGB ); + imageMap.Add( DevelVisual::Property::VISUAL_FITTING_MODE, DevelVisual::FittingMode::FILL ); + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + + Stage::GetCurrent().Add( imageView ); + + // Trigger a potential relayout + application.SendNotification(); + application.Render(); + + Toolkit::Visual::Base visual = DevelControl::GetVisual( Toolkit::Internal::GetImplementation( imageView ), Toolkit::ImageView::Property::IMAGE ); + Property::Map returnedMap; + visual.CreatePropertyMap( returnedMap ); + + Property::Value* value = returnedMap.Find( Toolkit::Visual::Property::TRANSFORM ); + DALI_TEST_CHECK( value ); + Property::Map* map = value->GetMap(); + DALI_TEST_CHECK( map ); + + // If there's + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2::ONE, TEST_LOCATION ); // Relative size so will take up 100% + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get< int >() == Toolkit::Visual::Transform::Policy::RELATIVE ); + + END_TEST; +} 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 11d5389..f709559 100755 --- a/dali-toolkit/internal/controls/image-view/image-view-impl.cpp +++ b/dali-toolkit/internal/controls/image-view/image-view-impl.cpp @@ -271,45 +271,50 @@ void ImageView::OnRelayout( const Vector2& size, RelayoutContainer& container ) Property::Map transformMap = Property::Map(); Extents padding = Self().GetProperty( Toolkit::Control::Property::PADDING ); + const Visual::FittingMode fittingMode = Toolkit::GetImplementation(mVisual).GetFittingMode(); - Dali::LayoutDirection::Type layoutDirection = static_cast( - Self().GetProperty( Dali::Actor::Property::LAYOUT_DIRECTION ).Get() ); - - if( Dali::LayoutDirection::RIGHT_TO_LEFT == layoutDirection ) + if( ( padding != Extents() ) || // If padding is not zero + ( fittingMode == Visual::FittingMode::FIT_KEEP_ASPECT_RATIO ) ) { - std::swap( padding.start, padding.end ); - } + Dali::LayoutDirection::Type layoutDirection = static_cast( + Self().GetProperty( Dali::Actor::Property::LAYOUT_DIRECTION ).Get() ); - auto finalOffset = Vector2( padding.start, padding.top ); + if( Dali::LayoutDirection::RIGHT_TO_LEFT == layoutDirection ) + { + std::swap( padding.start, padding.end ); + } - // remove padding from the size to know how much is left for the visual - auto finalSize = size - Vector2( padding.start + padding.end, padding.top + padding.bottom ); + auto finalOffset = Vector2( padding.start, padding.top ); - // Should provide a transform that handles aspect ratio according to image size - if( Toolkit::GetImplementation(mVisual).GetFittingMode() == Visual::FittingMode::FIT_KEEP_ASPECT_RATIO ) - { - auto availableVisualSize = finalSize; + // remove padding from the size to know how much is left for the visual + auto finalSize = size - Vector2( padding.start + padding.end, padding.top + padding.bottom ); - Vector2 naturalSize; - mVisual.GetNaturalSize( naturalSize ); + // Should provide a transform that handles aspect ratio according to image size + if( fittingMode == Visual::FittingMode::FIT_KEEP_ASPECT_RATIO ) + { + auto availableVisualSize = finalSize; - // scale to fit the padded area - finalSize = naturalSize * std::min( ( naturalSize.width ? ( availableVisualSize.width / naturalSize.width ) : 0 ), - ( naturalSize.height ? ( availableVisualSize.height / naturalSize.height ) : 0 ) ); + Vector2 naturalSize; + mVisual.GetNaturalSize( naturalSize ); - // calculate final offset within the padded area - finalOffset += ( availableVisualSize - finalSize ) * .5f; - } + // scale to fit the padded area + finalSize = naturalSize * std::min( ( naturalSize.width ? ( availableVisualSize.width / naturalSize.width ) : 0 ), + ( naturalSize.height ? ( availableVisualSize.height / naturalSize.height ) : 0 ) ); - // populate the transform map - transformMap.Add( Toolkit::Visual::Transform::Property::OFFSET, finalOffset ) - .Add( Toolkit::Visual::Transform::Property::OFFSET_POLICY, - Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) ) - .Add( Toolkit::Visual::Transform::Property::ORIGIN, Toolkit::Align::TOP_BEGIN ) - .Add( Toolkit::Visual::Transform::Property::ANCHOR_POINT, Toolkit::Align::TOP_BEGIN ) - .Add( Toolkit::Visual::Transform::Property::SIZE, finalSize ) - .Add( Toolkit::Visual::Transform::Property::SIZE_POLICY, - Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) ); + // calculate final offset within the padded area + finalOffset += ( availableVisualSize - finalSize ) * .5f; + } + + // populate the transform map + transformMap.Add( Toolkit::Visual::Transform::Property::OFFSET, finalOffset ) + .Add( Toolkit::Visual::Transform::Property::OFFSET_POLICY, + Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) ) + .Add( Toolkit::Visual::Transform::Property::ORIGIN, Toolkit::Align::TOP_BEGIN ) + .Add( Toolkit::Visual::Transform::Property::ANCHOR_POINT, Toolkit::Align::TOP_BEGIN ) + .Add( Toolkit::Visual::Transform::Property::SIZE, finalSize ) + .Add( Toolkit::Visual::Transform::Property::SIZE_POLICY, + Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) ); + } mVisual.SetTransformAndSize( transformMap, size ); } diff --git a/dali-toolkit/public-api/dali-toolkit-version.cpp b/dali-toolkit/public-api/dali-toolkit-version.cpp index 70e33f9..b13f65b 100644 --- a/dali-toolkit/public-api/dali-toolkit-version.cpp +++ b/dali-toolkit/public-api/dali-toolkit-version.cpp @@ -31,7 +31,7 @@ namespace Toolkit const unsigned int TOOLKIT_MAJOR_VERSION = 1; const unsigned int TOOLKIT_MINOR_VERSION = 3; -const unsigned int TOOLKIT_MICRO_VERSION = 33; +const unsigned int TOOLKIT_MICRO_VERSION = 34; const char * const TOOLKIT_BUILD_DATE = __DATE__ " " __TIME__; #ifdef DEBUG_ENABLED diff --git a/packaging/dali-toolkit.spec b/packaging/dali-toolkit.spec index ab7c82f..82a9ed9 100644 --- a/packaging/dali-toolkit.spec +++ b/packaging/dali-toolkit.spec @@ -1,6 +1,6 @@ Name: dali-toolkit Summary: Dali 3D engine Toolkit -Version: 1.3.33 +Version: 1.3.34 Release: 1 Group: System/Libraries License: Apache-2.0 and BSD-3-Clause and MIT