X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-ImageView.cpp;h=6829d9820b80f474e90631e8c030f2c8967ed876;hb=5aaba5adcf1a717e1ece3ef9c55c8912420993b5;hp=bd74fdbe1a4d32e637279f5a1b68efcd1f7da3aa;hpb=3ad20543558830da2b46ec83e3be4f8daf77add0;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp index bd74fdb..6829d98 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ImageView.cpp @@ -94,6 +94,8 @@ static const char* gImage_600_RGB = TEST_RESOURCE_DIR "/test-image-600.jpg"; // resolution: 50*50, frame count: 4, frame delay: 0.2 second for each frame const char* TEST_GIF_FILE_NAME = TEST_RESOURCE_DIR "/anim.gif"; +const char* TEST_VECTOR_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/insta_camera.json"; + void TestImage( ImageView imageView, BufferImage image ) { Property::Value value = imageView.GetProperty( imageView.GetPropertyIndex( "image" ) ); @@ -644,8 +646,8 @@ int UtcDaliImageViewAsyncLoadingWithoutAltasing(void) // By default, Aysnc loading is used Stage::GetCurrent().Add( imageView ); - imageView.SetSize(100, 100); - imageView.SetParentOrigin( ParentOrigin::CENTER ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(100, 100) ); + imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -880,8 +882,8 @@ int UtcDaliImageViewSizeWithBackground(void) application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( imageView.GetCurrentSize().width, (float)width, TEST_LOCATION ); - DALI_TEST_EQUALS( imageView.GetCurrentSize().height, (float)height, TEST_LOCATION ); + DALI_TEST_EQUALS( imageView.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ).width, (float)width, TEST_LOCATION ); + DALI_TEST_EQUALS( imageView.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ).height, (float)height, TEST_LOCATION ); END_TEST; } @@ -913,8 +915,8 @@ int UtcDaliImageViewSizeWithBackgroundAndImage(void) application.SendNotification(); application.Render(); - DALI_TEST_EQUALS( imageView.GetCurrentSize().width, (float)width, TEST_LOCATION ); - DALI_TEST_EQUALS( imageView.GetCurrentSize().height, (float)height, TEST_LOCATION ); + DALI_TEST_EQUALS( imageView.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ).width, (float)width, TEST_LOCATION ); + DALI_TEST_EQUALS( imageView.GetCurrentProperty< Vector3 >( Actor::Property::SIZE ).height, (float)height, TEST_LOCATION ); END_TEST; } @@ -1873,8 +1875,8 @@ int UtcDaliImageViewPaddingProperty(void) imagePropertyMap[ ImageVisual::Property::DESIRED_WIDTH ] = 128; imagePropertyMap[ ImageVisual::Property::DESIRED_HEIGHT ] = 128; imageView.SetProperty( Toolkit::ImageView::Property::IMAGE , imagePropertyMap ); - imageView.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - imageView.SetParentOrigin( ParentOrigin::TOP_LEFT ); + imageView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); imageView.SetProperty( Control::Property::PADDING, Extents( 15, 10, 5, 10 ) ); Stage::GetCurrent().Add( imageView ); @@ -1885,7 +1887,7 @@ int UtcDaliImageViewPaddingProperty(void) ImageView childImage = ImageView::New(); childImage.SetBackgroundColor( Color::BLACK ); - childImage.SetSize( 10.f, 10.f ); + childImage.SetProperty( Actor::Property::SIZE, Vector2( 10.f, 10.f ) ); imageView.Add( childImage ); application.SendNotification(); @@ -1923,8 +1925,8 @@ int UtcDaliImageViewPaddingProperty02(void) imagePropertyMap[ ImageVisual::Property::DESIRED_HEIGHT ] = 128; imagePropertyMap[ DevelVisual::Property::VISUAL_FITTING_MODE ] = Toolkit::DevelVisual::FIT_KEEP_ASPECT_RATIO; imageView.SetProperty( Toolkit::ImageView::Property::IMAGE , imagePropertyMap ); - imageView.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - imageView.SetParentOrigin( ParentOrigin::TOP_LEFT ); + imageView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); imageView.SetProperty( Control::Property::PADDING, Extents( 15, 10, 5, 10 ) ); Stage::GetCurrent().Add( imageView ); @@ -1964,8 +1966,8 @@ int UtcDaliImageViewPaddingProperty03(void) imagePropertyMap[ ImageVisual::Property::DESIRED_HEIGHT ] = 128; imagePropertyMap[ DevelVisual::Property::VISUAL_FITTING_MODE ] = Toolkit::DevelVisual::FIT_KEEP_ASPECT_RATIO; imageView.SetProperty( Toolkit::ImageView::Property::IMAGE , imagePropertyMap ); - imageView.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - imageView.SetParentOrigin( ParentOrigin::TOP_LEFT ); + imageView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); imageView.SetProperty( Control::Property::PADDING, Extents( 15, 10, 5, 10 ) ); Stage::GetCurrent().Add( imageView ); @@ -2012,8 +2014,8 @@ int UtcDaliImageViewPaddingProperty04(void) imagePropertyMap[ ImageVisual::Property::DESIRED_HEIGHT ] = 128; imagePropertyMap[ DevelVisual::Property::VISUAL_FITTING_MODE ] = Toolkit::DevelVisual::FILL; imageView.SetProperty( Toolkit::ImageView::Property::IMAGE , imagePropertyMap ); - imageView.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - imageView.SetParentOrigin( ParentOrigin::TOP_LEFT ); + imageView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); imageView.SetProperty( Control::Property::PADDING, Extents( 15, 10, 5, 10 ) ); Stage::GetCurrent().Add( imageView ); @@ -2065,8 +2067,8 @@ int UtcDaliImageViewTransformTest01(void) .Add( Toolkit::Visual::Transform::Property::OFFSET, Vector2( 8, 8 ) ) ); imageView.SetProperty( Toolkit::ImageView::Property::IMAGE , imagePropertyMap ); - imageView.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - imageView.SetParentOrigin( ParentOrigin::TOP_LEFT ); + imageView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); Stage::GetCurrent().Add( imageView ); application.SendNotification(); @@ -2120,7 +2122,6 @@ 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 should be [1,1]"); ImageView imageView = ImageView::New(); Property::Map imageMap; @@ -2145,18 +2146,718 @@ int UtcDaliImageViewFillMode(void) Property::Map* map = value->GetMap(); DALI_TEST_CHECK( map ); + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2::ONE, TEST_LOCATION ); + + 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; +} + +int UtcDaliImageViewFittingModeFitKeepAspectRatio(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Create an ImageVisual using FitKeepAspectRatio ( image: [600,600], view: [600,700] )" ); + tet_infoline( " There should be need to change the transform, offset is adjusted to fit inside"); + + 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 ); // 600x600 image + imageMap.Add( DevelVisual::Property::VISUAL_FITTING_MODE , Toolkit::DevelVisual::FIT_KEEP_ASPECT_RATIO ); + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(600,700) ); + + 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% + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 600, 600 ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 0, 50 ), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliImageViewFittingModesFill(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Create an ImageVisual using Fill ( image: [600,600], view: [600,700] )" ); + tet_infoline( " There should be no need to change the transform, only size is changed to fit view"); + + 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 ); // 600x600 image + imageMap.Add( DevelVisual::Property::VISUAL_FITTING_MODE , Toolkit::DevelVisual::FILL ); + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(600,700) ); + + 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 ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2::ONE, TEST_LOCATION ); // Change the internal size according to the image view size value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get< int >() == Toolkit::Visual::Transform::Policy::RELATIVE ); + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 0, 0 ), TEST_LOCATION ); // OFFSET is zero + + END_TEST; +} + +int UtcDaliImageViewFittingModesOverfitKeepAspectRatio(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Create an ImageVisual using OverFitKeepAspectRatio ( image: [600,600], view: [600,500] )" ); + tet_infoline( " offset or size is the same as view, but adjust internally using pixelArea "); + + 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 ); // 600x600 image + imageMap.Add( DevelVisual::Property::VISUAL_FITTING_MODE , Toolkit::DevelVisual::OVER_FIT_KEEP_ASPECT_RATIO ); + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(600,500) ); + + 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( 600, 500 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 0, 0 ), TEST_LOCATION ); // OFFSET is zero + + END_TEST; +} + +int UtcDaliImageViewFittingModesCenter01(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Create an ImageVisual using Center ( image: [600,600], view: [700,700] )" ); + tet_infoline( " There should be need to change the transform, offset is adjusted to fit inside"); + + 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 ); // 600x600 image + imageMap.Add( DevelVisual::Property::VISUAL_FITTING_MODE, Toolkit::DevelVisual::CENTER); + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(700,700) ); + + 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 ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 600, 600 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 50, 50 ), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliImageViewFittingModesCenter02(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Create an ImageVisual using Center ( image: [600,600], view: [500,500] )" ); + tet_infoline( " There should be need to change the transform, offset is adjusted to fit inside"); + + 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 ); // 600x600 image + imageMap.Add( DevelVisual::Property::VISUAL_FITTING_MODE, Toolkit::DevelVisual::CENTER); + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(700,700) ); + + 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 ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 600, 600 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 50, 50 ), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliImageViewFittingModesFitHeight01(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Create an ImageVisual using FitHeight ( image: [600,600], view: [600,700] )" ); + + 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 ); // 600x600 image + imageMap.Add( DevelVisual::Property::VISUAL_FITTING_MODE, Toolkit::DevelVisual::FIT_HEIGHT); + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(600,700) ); + + 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 ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 600, 700 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 0, 0 ), TEST_LOCATION ); // OFFSET is zero + + END_TEST; +} + +int UtcDaliImageViewFittingModesFitHeight02(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Create an ImageVisual using FitHeight ( image: [600,600], view: [700,600] )" ); + + 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 ); // 249x169 image + imageMap.Add( DevelVisual::Property::VISUAL_FITTING_MODE, Toolkit::DevelVisual::FIT_HEIGHT); + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(700,600) ); + + 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 ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 600, 600 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 50, 0 ), TEST_LOCATION ); + END_TEST; } +int UtcDaliImageViewFittingModesFitWidth01(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Create an ImageVisual using FitWidth ( image: [600,600], view: [600,700] )" ); + + 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 ); // 600x600 image + imageMap.Add( DevelVisual::Property::VISUAL_FITTING_MODE, Toolkit::DevelVisual::FIT_WIDTH); + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(600,700) ); + + 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 ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 600, 600 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 0, 50 ), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliImageViewFittingModesFitWidth02(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Create an ImageVisual using FitWidth ( image: [600,600], view:[700,600] )" ); + + 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 ); // 249x169 image + imageMap.Add( DevelVisual::Property::VISUAL_FITTING_MODE, Toolkit::DevelVisual::FIT_WIDTH); + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(700,600) ); + + 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 ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 700, 600 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 0, 0 ), TEST_LOCATION ); // OFFSET is zero + + END_TEST; +} + +int UtcDaliImageViewFittingModesChangeFittingMode01(void) +{ + ToolkitTestApplication application; + + tet_infoline( "UtcDaliImageViewFittingModesChangeFittingMode, image: [600,600], view:[800,700]" ); + + ImageView imageView = ImageView::New(); + + // 1. Render using FittingMode::SHRINK_TO_FIT + Property::Map imageMap; + imageMap[ Toolkit::Visual::Property::TYPE ] = Toolkit::Visual::IMAGE; + imageMap[ Toolkit::ImageVisual::Property::URL ] = gImage_600_RGB; + imageMap[ DevelVisual::Property::VISUAL_FITTING_MODE ] = Toolkit::DevelVisual::FIT_KEEP_ASPECT_RATIO; + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(800,700) ); + + 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 ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 700, 700 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 50, 0 ), TEST_LOCATION ); + + // 2. Render again using DevelVisaul::CENTER + Property::Map imageMap2; + imageMap2[ Toolkit::Visual::Property::TYPE ] = Toolkit::Visual::IMAGE; + imageMap2[ Toolkit::ImageVisual::Property::URL ] = gImage_600_RGB; + imageMap2[ DevelVisual::Property::VISUAL_FITTING_MODE ] = Toolkit::DevelVisual::CENTER; + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap2 ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(800,700) ); + + Stage::GetCurrent().Add( imageView ); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + // Trigger a potential relayout + application.SendNotification(); + application.Render(); + + returnedMap.Clear(); + visual = DevelControl::GetVisual( Toolkit::Internal::GetImplementation( imageView ), Toolkit::ImageView::Property::IMAGE ); + + visual.CreatePropertyMap( returnedMap ); + + value = returnedMap.Find( Toolkit::Visual::Property::TRANSFORM ); + DALI_TEST_CHECK( value ); + map = value->GetMap(); + DALI_TEST_CHECK( map ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 600, 600 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 100, 50 ), TEST_LOCATION ); + + // 3. Render again using before fittingMode + Property::Map imageMap3; + imageMap3[ Toolkit::Visual::Property::TYPE ] = Toolkit::Visual::IMAGE; + imageMap3[ Toolkit::ImageVisual::Property::URL ] = gImage_600_RGB; + imageMap3[ DevelVisual::Property::VISUAL_FITTING_MODE ] = Toolkit::DevelVisual::FIT_KEEP_ASPECT_RATIO; + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap3 ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(800,700) ); + + Stage::GetCurrent().Add( imageView ); + + // Trigger a potential relayout + application.SendNotification(); + application.Render(); + + returnedMap.Clear(); + visual = DevelControl::GetVisual( Toolkit::Internal::GetImplementation( imageView ), Toolkit::ImageView::Property::IMAGE ); + visual.CreatePropertyMap( returnedMap ); + + value = returnedMap.Find( Toolkit::Visual::Property::TRANSFORM ); + DALI_TEST_CHECK( value ); + map = value->GetMap(); + DALI_TEST_CHECK( map ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 700, 700 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 50, 0 ), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliImageViewFittingModesChangeFittingMode02(void) +{ + ToolkitTestApplication application; + + tet_infoline( "UtcDaliImageViewFittingModesChangeFittingMode, image: [600,600], view:[800,700]" ); + + ImageView imageView = ImageView::New(); + + // 1. Render using FittingMode::OVER_FIT_KEEP_ASPECT_RATIO + Property::Map imageMap; + imageMap[ Toolkit::Visual::Property::TYPE ] = Toolkit::Visual::IMAGE; + imageMap[ Toolkit::ImageVisual::Property::URL ] = gImage_600_RGB; + imageMap[ DevelVisual::Property::VISUAL_FITTING_MODE ] = Toolkit::DevelVisual::OVER_FIT_KEEP_ASPECT_RATIO; + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(800,700) ); + + 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 ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 800, 700 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 0, 0 ), TEST_LOCATION ); + + // 2. Render again using DevelVisaul::CENTER + Property::Map imageMap2; + imageMap2[ Toolkit::Visual::Property::TYPE ] = Toolkit::Visual::IMAGE; + imageMap2[ Toolkit::ImageVisual::Property::URL ] = gImage_600_RGB; + imageMap2[ DevelVisual::Property::VISUAL_FITTING_MODE ] = Toolkit::DevelVisual::CENTER; + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap2 ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(800,700) ); + + Stage::GetCurrent().Add( imageView ); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + // Trigger a potential relayout + application.SendNotification(); + application.Render(); + + returnedMap.Clear(); + visual = DevelControl::GetVisual( Toolkit::Internal::GetImplementation( imageView ), Toolkit::ImageView::Property::IMAGE ); + + visual.CreatePropertyMap( returnedMap ); + + value = returnedMap.Find( Toolkit::Visual::Property::TRANSFORM ); + DALI_TEST_CHECK( value ); + map = value->GetMap(); + DALI_TEST_CHECK( map ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 600, 600 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 100, 50 ), TEST_LOCATION ); + + // 3. Render again using before fittingMode + Property::Map imageMap3; + imageMap3[ Toolkit::Visual::Property::TYPE ] = Toolkit::Visual::IMAGE; + imageMap3[ Toolkit::ImageVisual::Property::URL ] = gImage_600_RGB; + imageMap3[ DevelVisual::Property::VISUAL_FITTING_MODE ] = Toolkit::DevelVisual::OVER_FIT_KEEP_ASPECT_RATIO; + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap3 ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(800,700) ); + + Stage::GetCurrent().Add( imageView ); + + // Trigger a potential relayout + application.SendNotification(); + application.Render(); + + returnedMap.Clear(); + visual = DevelControl::GetVisual( Toolkit::Internal::GetImplementation( imageView ), Toolkit::ImageView::Property::IMAGE ); + visual.CreatePropertyMap( returnedMap ); + + value = returnedMap.Find( Toolkit::Visual::Property::TRANSFORM ); + DALI_TEST_CHECK( value ); + map = value->GetMap(); + DALI_TEST_CHECK( map ); + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 800, 700 ), TEST_LOCATION ); // Change the internal size according to the image view size + + value = map->Find( Toolkit::Visual::Transform::Property::SIZE_POLICY ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ), TEST_LOCATION ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 0, 0 ), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliImageViewFittingModesWithAnimatedVectorImageVisual(void) +{ + ToolkitTestApplication application; + + tet_infoline( "Create an ImageVisual using ScaleToFill and animated vector image ( image: [600,600], view:[600,600] )" ); + + ImageView imageView = ImageView::New(); + Property::Map imageMap; + imageMap.Add( Toolkit::Visual::Property::TYPE, DevelVisual::ANIMATED_VECTOR_IMAGE ); + imageMap.Add( Toolkit::ImageVisual::Property::URL, TEST_VECTOR_IMAGE_FILE_NAME ); // 249x169 image + + imageView.SetProperty( Toolkit::ImageView::Property::IMAGE, imageMap ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(600,600) ); + + 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 ); + + 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 ); + + value = map->Find( Toolkit::Visual::Transform::Property::OFFSET ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get< Vector2 >(), Vector2( 0, 0 ), TEST_LOCATION ); // OFFSET is zero + + END_TEST; +} + + int UtcDaliImageViewCustomShader(void) { ToolkitTestApplication application; @@ -2411,10 +3112,10 @@ int UtcDaliImageViewLoadRemoteSVG(void) imageView.SetImage("https://dev.w3.org/SVG/tools/svgweb/samples/svg-files/check.svg"); // Victor. Temporary (or permanent?) update as the url above seems not to work from time to time ... imageView.SetImage("https://upload.wikimedia.org/wikipedia/commons/thumb/0/02/SVG_logo.svg/64px-SVG_logo.svg.png"); - imageView.SetParentOrigin( ParentOrigin::TOP_LEFT ); - imageView.SetAnchorPoint( AnchorPoint::TOP_LEFT ); - imageView.SetSize(300, 300); - imageView.SetPosition( Vector3( 150.0f , 150.0f , 0.0f ) ); + imageView.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::TOP_LEFT ); + imageView.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::TOP_LEFT ); + imageView.SetProperty( Actor::Property::SIZE, Vector2(300, 300) ); + imageView.SetProperty( Actor::Property::POSITION, Vector3( 150.0f , 150.0f , 0.0f ) ); Stage::GetCurrent().Add( imageView ); @@ -2559,7 +3260,7 @@ int UtcDaliImageViewSvgLoadingFailure(void) gResourceReadySignalFired = false; ImageView imageView = ImageView::New( TEST_RESOURCE_DIR "/Kid1.svg" ); - imageView.SetSize( 200.f, 200.f ); + imageView.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); imageView.ResourceReadySignal().Connect( &ResourceReadySignal); DALI_TEST_EQUALS( imageView.IsResourceReady(), false, TEST_LOCATION ); @@ -2584,7 +3285,7 @@ int UtcDaliImageViewSvgLoadingFailure(void) gResourceReadySignalFired = false; ImageView imageView = ImageView::New( "https://bar.org/foobar.svg" ); - imageView.SetSize( 200.f, 200.f ); + imageView.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); imageView.ResourceReadySignal().Connect( &ResourceReadySignal); DALI_TEST_EQUALS( imageView.IsResourceReady(), false, TEST_LOCATION );