X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-Visual.cpp;h=a9a2ed253ca9273e5ec9d4ce7b2c974d7222c461;hp=79aec895cb397a5a0dc6839c52931dea3d56d0c1;hb=538e266eef5a998be3d6d4b6e1019ecd313d59d4;hpb=d37f5d8ff0d554b566dfbcdc765a681123cbf4e8 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp index 79aec89..a9a2ed2 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2021 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. @@ -25,6 +25,7 @@ #include #include #include +#include #include #include #include @@ -247,7 +248,7 @@ int UtcDaliVisualSetGetDepthIndex(void) dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); - Stage::GetCurrent().Add( dummyControl ); + application.GetScene().Add( dummyControl ); int depthIndex = dummyControl.GetRendererAt(0u).GetProperty( Renderer::Property::DEPTH_INDEX ); @@ -396,10 +397,10 @@ int UtcDaliVisualSize(void) END_TEST; } -int UtcDaliVisualSetOnOffStage(void) +int UtcDaliVisualSetOnOffScene(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliVisualSetOnOffStage" ); + tet_infoline( "UtcDaliVisualSetOnOffScene" ); VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; @@ -417,13 +418,13 @@ int UtcDaliVisualSetOnOffStage(void) application.Render(0); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(0); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); application.SendNotification(); application.Render(0); @@ -432,10 +433,10 @@ int UtcDaliVisualSetOnOffStage(void) END_TEST; } -int UtcDaliVisualSetOnOffStage2(void) +int UtcDaliVisualSetOnOffScene2(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliVisualSetOnOffStage2" ); + tet_infoline( "UtcDaliVisualSetOnOffScene2" ); VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; @@ -454,7 +455,7 @@ int UtcDaliVisualSetOnOffStage2(void) DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); // First on/off - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(0); @@ -464,14 +465,14 @@ int UtcDaliVisualSetOnOffStage2(void) auto textures = renderer.GetTextures(); DALI_TEST_CHECK( textures.GetTextureCount() != 0u ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); application.SendNotification(); application.Render(0); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); // Second on/off - Stage::GetCurrent().Add( actor ); + application.GetScene().Add( actor ); application.SendNotification(); application.Render(0); @@ -481,7 +482,7 @@ int UtcDaliVisualSetOnOffStage2(void) textures = renderer.GetTextures(); DALI_TEST_CHECK( textures.GetTextureCount() != 0u ); - Stage::GetCurrent().Remove( actor ); + application.GetScene().Remove( actor ); application.SendNotification(); application.Render(0); @@ -500,6 +501,7 @@ int UtcDaliVisualGetPropertyMap1(void) propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR); propertyMap.Insert(Visual::Property::MIX_COLOR, Color::BLUE); propertyMap.Insert( DevelVisual::Property::CORNER_RADIUS, 10.0f ); + propertyMap.Insert( DevelVisual::Property::CORNER_RADIUS_POLICY, Toolkit::Visual::Transform::Policy::RELATIVE ); propertyMap.Insert( DevelColorVisual::Property::BLUR_RADIUS, 20.0f ); Visual::Base colorVisual = factory.CreateVisual( propertyMap ); @@ -518,6 +520,10 @@ int UtcDaliVisualGetPropertyMap1(void) DALI_TEST_CHECK( cornerRadiusValue ); DALI_TEST_CHECK( cornerRadiusValue->Get< float >() == 10.0f ); + Property::Value* cornerRadiusPolicyValue = resultMap.Find( DevelVisual::Property::CORNER_RADIUS_POLICY, Property::INTEGER ); + DALI_TEST_CHECK( cornerRadiusPolicyValue ); + DALI_TEST_CHECK( cornerRadiusPolicyValue->Get< int >() == Toolkit::Visual::Transform::Policy::RELATIVE ); + Property::Value* blurRadiusValue = resultMap.Find( DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT ); DALI_TEST_CHECK( blurRadiusValue ); DALI_TEST_CHECK( blurRadiusValue->Get< float >() == 20.0f ); @@ -617,7 +623,7 @@ int UtcDaliVisualGetPropertyMap2N(void) DummyControl dummyControl = DummyControl::New(true); Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual ); - Stage::GetCurrent().Add( dummyControl ); + application.GetScene().Add( dummyControl ); DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION ); @@ -1139,7 +1145,7 @@ int UtcDaliVisualGetPropertyMap10(void) Property::Map propertyMap; propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT ); propertyMap.Insert( Visual::Property::MIX_COLOR, Color::BLACK ); - propertyMap.Insert( "renderingBackend", static_cast( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) ); + propertyMap.Insert( "renderingBackend", static_cast( Toolkit::DevelText::DEFAULT_RENDERING_BACKEND ) ); propertyMap.Insert( "enableMarkup", false ); propertyMap.Insert( "text", "Hello world" ); propertyMap.Insert( "fontFamily", "TizenSans" ); @@ -1739,6 +1745,15 @@ int UtcDaliVisualAnimateBorderVisual01(void) ToolkitTestApplication application; tet_infoline( "UtcDaliAnimateBorderVisual Color" ); + static std::vector customUniforms = + { + UniformData("borderColor", Property::Type::VECTOR4), + UniformData("mixColor", Property::Type::VECTOR3), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER); @@ -1764,13 +1779,13 @@ int UtcDaliVisualAnimateBorderVisual01(void) dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual ); actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index borderColorIndex = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::COLOR ); - Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, Visual::Property::MIX_COLOR ); + Property::Index borderColorIndex = renderer.GetPropertyIndex( BorderVisual::Property::COLOR ); + Property::Index mixColorIndex = renderer.GetPropertyIndex( Visual::Property::MIX_COLOR ); Animation animation = dummyImpl.CreateTransition( transition ); @@ -1820,6 +1835,14 @@ int UtcDaliVisualAnimateBorderVisual02(void) ToolkitTestApplication application; tet_infoline( "UtcDaliAnimateBorderVisual Size" ); + static std::vector customUniforms = + { + UniformData("borderSize", Property::Type::FLOAT), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER); @@ -1832,12 +1855,12 @@ int UtcDaliVisualAnimateBorderVisual02(void) dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual ); actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index index = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::SIZE ); + Property::Index index = renderer.GetPropertyIndex( BorderVisual::Property::SIZE ); Animation animation = Animation::New(4.0f); animation.AnimateTo( Property(renderer, index), 9.0f ); @@ -1865,6 +1888,14 @@ int UtcDaliVisualAnimateColorVisual(void) ToolkitTestApplication application; tet_infoline( "UtcDaliAnimateColorVisual mixColor" ); + static std::vector customUniforms = + { + UniformData("mixColor", Property::Type::VECTOR3), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR); @@ -1876,12 +1907,12 @@ int UtcDaliVisualAnimateColorVisual(void) dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual ); actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + Property::Index mixColorIndex = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR ); Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::AUTO, TEST_LOCATION ); @@ -1918,6 +1949,14 @@ int UtcDaliVisualAnimatePrimitiveVisual(void) ToolkitTestApplication application; tet_infoline( "UtcDaliAnimatePrimitiveVisual color" ); + static std::vector customUniforms = + { + UniformData("mixColor", Property::Type::VECTOR3), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + { VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; @@ -1932,12 +1971,12 @@ int UtcDaliVisualAnimatePrimitiveVisual(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); actor.SetProperty( Actor::Property::COLOR,Color::BLACK); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index index = DevelHandle::GetPropertyIndex( renderer, PrimitiveVisual::Property::MIX_COLOR ); + Property::Index index = renderer.GetPropertyIndex( PrimitiveVisual::Property::MIX_COLOR ); tet_infoline("Test that the renderer has the Primitive mix color"); DALI_TEST_CHECK( index != Property::INVALID_INDEX ); @@ -1959,12 +1998,15 @@ int UtcDaliVisualAnimatePrimitiveVisual(void) Dali::Toolkit::TransitionData transition = TransitionData::New( map ); Animation animation = dummyImpl.CreateTransition( transition ); - Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); - DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); - animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE ); animation.Play(); + TestGlAbstraction& glAbstraction = application.GetGlAbstraction(); + glAbstraction.EnableEnableDisableCallTrace( true ); + TraceCallStack& glEnableStack = glAbstraction.GetEnableDisableTrace(); + std::ostringstream blendStr; + blendStr << std::hex << GL_BLEND; + application.SendNotification(); application.Render(0); application.Render(2000u); // halfway point @@ -1974,6 +2016,10 @@ int UtcDaliVisualAnimatePrimitiveVisual(void) DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("uColor", Vector4(0.5f, 0.5f, 0.5f, halfwayColor.a )), true, TEST_LOCATION ); DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", Vector3(halfwayColor) ), true, TEST_LOCATION ); + DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Enable", blendStr.str() ) ); + + glEnableStack.Reset(); + application.Render(2001u); // go past end application.SendNotification(); // Trigger signals @@ -1981,8 +2027,7 @@ int UtcDaliVisualAnimatePrimitiveVisual(void) DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("uColor", Vector4( 1.0f, 1.0f, 1.0f, TARGET_MIX_COLOR.a ) ), true, TEST_LOCATION ); DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", Vector3(TARGET_MIX_COLOR) ), true, TEST_LOCATION ); - blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); - DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::AUTO, TEST_LOCATION ); + DALI_TEST_CHECK( glEnableStack.FindMethodAndParams( "Disable", blendStr.str() ) ); actor.Unparent(); } @@ -1995,6 +2040,20 @@ int UtcDaliVisualAnimatedGradientVisual01(void) ToolkitTestApplication application; tet_infoline( "UtcDaliAnimatedGradientVisual with default" ); + static std::vector customUniforms = + { + UniformData("start_point", Property::Type::VECTOR2), + UniformData("end_point", Property::Type::VECTOR2), + UniformData("start_color", Property::Type::VECTOR4), + UniformData("end_color", Property::Type::VECTOR4), + UniformData("rotate_center", Property::Type::VECTOR2), + UniformData("rotate_angle", Property::Type::FLOAT), + UniformData("gradient_offset", Property::Type::FLOAT), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + { VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; @@ -2007,7 +2066,7 @@ int UtcDaliVisualAnimatedGradientVisual01(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); actor.SetProperty( Actor::Property::COLOR,Color::BLACK); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); application.SendNotification(); application.Render(0); @@ -2052,6 +2111,20 @@ int UtcDaliVisualAnimatedGradientVisual02(void) ToolkitTestApplication application; tet_infoline( "UtcDaliAnimatedGradientVisual with full-option" ); + static std::vector customUniforms = + { + UniformData("start_point", Property::Type::VECTOR2), + UniformData("end_point", Property::Type::VECTOR2), + UniformData("start_color", Property::Type::VECTOR4), + UniformData("end_color", Property::Type::VECTOR4), + UniformData("rotate_center", Property::Type::VECTOR2), + UniformData("rotate_angle", Property::Type::FLOAT), + UniformData("gradient_offset", Property::Type::FLOAT), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + { float _delay[4] = {0.0f, -1.35f, 0.15f, -0.4f}; // fract(_delay) must NOT be 1/4, 2/4, 3/4. cause we don't know progress is 1.0f or 0.0f int _direction[2] = {0, 1}; @@ -2178,7 +2251,7 @@ int UtcDaliVisualAnimatedGradientVisual02(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); actor.SetProperty( Actor::Property::COLOR,Color::BLACK); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); application.SendNotification(); application.Render( 0 ); @@ -2330,6 +2403,20 @@ int UtcDaliVisualAnimatedGradientVisual03(void) ToolkitTestApplication application; tet_infoline( "UtcDaliAnimatedGradientVisual with full-option use string key" ); + static std::vector customUniforms = + { + UniformData("start_point", Property::Type::VECTOR2), + UniformData("end_point", Property::Type::VECTOR2), + UniformData("start_color", Property::Type::VECTOR4), + UniformData("end_color", Property::Type::VECTOR4), + UniformData("rotate_center", Property::Type::VECTOR2), + UniformData("rotate_angle", Property::Type::FLOAT), + UniformData("gradient_offset", Property::Type::FLOAT), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + { float _delay[4] = {0.0f, -1.35f, 0.15f, -0.4f}; // fract(_delay) must NOT be 1/4, 2/4, 3/4. cause we don't know progress is 1.0f or 0.0f int _direction[2] = {0, 1}; @@ -2452,7 +2539,7 @@ int UtcDaliVisualAnimatedGradientVisual03(void) actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); actor.SetProperty( Actor::Property::COLOR,Color::BLACK); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); application.SendNotification(); application.Render( 0 ); @@ -2739,7 +2826,7 @@ static void TestTransform( ToolkitTestApplication& application, Visual::Base vis Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); - Stage::GetCurrent().Add(actor); + application.GetScene().Add(actor); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transform ); @@ -2811,6 +2898,23 @@ static void TestTransform( ToolkitTestApplication& application, Visual::Base vis DALI_TEST_EQUALS( extraSize, Vector2(0.5f,0.5f), TEST_LOCATION ); } +int UtcDaliVisualSetTransform01(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualSetTransform: ColorVisual" ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR); + propertyMap.Insert(Visual::Property::OPACITY, 0.5f); + propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); + Visual::Base visual = factory.CreateVisual( propertyMap ); + TestTransform( application, visual ); + TestMixColor( visual, ColorVisual::Property::MIX_COLOR, Color::BLUE ); + + END_TEST; +} + int UtcDaliVisualSetTransform0(void) { ToolkitTestApplication application; @@ -3035,7 +3139,7 @@ int UtcDaliNPatchVisualCustomShader(void) dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transformMap ); dummy.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); dummy.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); - Stage::GetCurrent().Add(dummy); + application.GetScene().Add(dummy); application.SendNotification(); Renderer renderer = dummy.GetRendererAt( 0 ); @@ -3080,7 +3184,7 @@ int UtcDaliGradientVisualBlendMode(void) DummyControl control = DummyControl::New(true); control.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); - Stage::GetCurrent().Add( control ); + application.GetScene().Add( control ); Impl::DummyControl& dummyImpl = static_cast( control.GetImplementation() ); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, opaqueGradientVisual ); @@ -3118,7 +3222,7 @@ int UtcDaliVisualRendererRemovalAndReAddition(void) dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); tet_infoline( "Add control with visual to stage and check renderer count is 1" ); - Stage::GetCurrent().Add( dummyControl ); + application.GetScene().Add( dummyControl ); application.SendNotification(); application.Render(); @@ -3126,7 +3230,7 @@ int UtcDaliVisualRendererRemovalAndReAddition(void) DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION ); tet_infoline( "Remove control with visual from stage and check renderer count is 0" ); - Stage::GetCurrent().Remove( dummyControl ); + application.GetScene().Remove( dummyControl ); application.SendNotification(); application.Render(); @@ -3134,7 +3238,7 @@ int UtcDaliVisualRendererRemovalAndReAddition(void) tet_infoline( "Re-add control with visual to stage and check renderer count is still 1" ); - Stage::GetCurrent().Add( dummyControl ); + application.GetScene().Add( dummyControl ); application.SendNotification(); application.Render(); @@ -3155,7 +3259,7 @@ int UtcDaliVisualTextVisualRender(void) Property::Map propertyMap; propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT ); propertyMap.Insert( "mixColor", Color::WHITE ); - propertyMap.Insert( "renderingBackend", static_cast( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) ); + propertyMap.Insert( "renderingBackend", static_cast( Toolkit::DevelText::DEFAULT_RENDERING_BACKEND ) ); propertyMap.Insert( "enableMarkup", false ); propertyMap.Insert( "text", "Hello world" ); propertyMap.Insert( "fontFamily", "TizenSans" ); @@ -3180,7 +3284,7 @@ int UtcDaliVisualTextVisualRender(void) dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); dummyControl.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - Stage::GetCurrent().Add( dummyControl ); + application.GetScene().Add( dummyControl ); application.SendNotification(); application.Render(); @@ -3224,7 +3328,7 @@ int UtcDaliVisualTextVisualDisableEnable(void) Property::Map propertyMap; propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT ); propertyMap.Insert( "mixColor", Color::WHITE ); - propertyMap.Insert( "renderingBackend", static_cast( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) ); + propertyMap.Insert( "renderingBackend", static_cast( Toolkit::DevelText::DEFAULT_RENDERING_BACKEND ) ); propertyMap.Insert( "enableMarkup", false ); propertyMap.Insert( "text", "Hello world" ); propertyMap.Insert( "fontFamily", "TizenSans" ); @@ -3249,7 +3353,7 @@ int UtcDaliVisualTextVisualDisableEnable(void) dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); dummyControl.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - Stage::GetCurrent().Add( dummyControl ); + application.GetScene().Add( dummyControl ); application.SendNotification(); application.Render(); @@ -3377,7 +3481,7 @@ int UtcDaliRegisterVisualOrder(void) DALI_TEST_EQUALS( anotherTestVisual2Replacement.GetDepthIndex(), 2000, TEST_LOCATION ); dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); - Stage::GetCurrent().Add( dummyControl ); + application.GetScene().Add( dummyControl ); END_TEST; } @@ -3413,7 +3517,7 @@ int UtcDaliRegisterVisualOrder02(void) DALI_TEST_CHECK( testVisual2.GetDepthIndex() > testVisual1.GetDepthIndex() ); dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); - Stage::GetCurrent().Add( dummyControl ); + application.GetScene().Add( dummyControl ); END_TEST; } @@ -3450,7 +3554,7 @@ int UtcDaliRegisterVisualWithDepthIndex(void) DALI_TEST_EQUALS( DevelControl::IsVisualEnabled( dummyImpl, DummyControl::Property::TEST_VISUAL2 ), true, TEST_LOCATION ); dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); - Stage::GetCurrent().Add( dummyControl ); + application.GetScene().Add( dummyControl ); END_TEST; } @@ -3531,7 +3635,7 @@ int UtcDaliSvgVisualCustomShader(void) dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - Stage::GetCurrent().Add( dummy ); + application.GetScene().Add( dummy ); application.SendNotification(); application.Render(); @@ -3555,9 +3659,19 @@ int UtcDaliSvgVisualCustomShader(void) int UtcDaliVisualRoundedCorner(void) { +#ifdef OLD_GRAPHICS_TEST ToolkitTestApplication application; tet_infoline( "UtcDaliVisualRoundedCorner" ); + static std::vector customUniforms = + { + UniformData("cornerRadius", Property::Type::FLOAT), + UniformData("cornerRadiusPolicy", Property::Type::FLOAT), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + // image visual { VisualFactory factory = VisualFactory::Get(); @@ -3577,7 +3691,7 @@ int UtcDaliVisualRoundedCorner(void) dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - Stage::GetCurrent().Add( dummy ); + application.GetScene().Add( dummy ); application.SendNotification(); application.Render(); @@ -3588,9 +3702,11 @@ int UtcDaliVisualRoundedCorner(void) application.Render(); DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION ); + // Default corner radius policy is absolute. + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION ); } - // color visual + // color visual 1 { VisualFactory factory = VisualFactory::Get(); Property::Map properties; @@ -3599,6 +3715,71 @@ int UtcDaliVisualRoundedCorner(void) properties[Visual::Property::TYPE] = Visual::COLOR; properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE; properties["cornerRadius"] = cornerRadius; + properties["cornerRadiusPolicy"] = Toolkit::Visual::Transform::Policy::ABSOLUTE; + + Visual::Base visual = factory.CreateVisual( properties ); + + // trigger creation through setting on stage + DummyControl dummy = DummyControl::New( true ); + Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() ); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + application.GetScene().Add( dummy ); + + application.SendNotification(); + application.Render(); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION ); + } + + // color visual 2 + { + VisualFactory factory = VisualFactory::Get(); + Property::Map properties; + float cornerRadius = 0.5f; + + properties[Visual::Property::TYPE] = Visual::COLOR; + properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE; + properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius; + properties[DevelVisual::Property::CORNER_RADIUS_POLICY] = Toolkit::Visual::Transform::Policy::RELATIVE; + + Visual::Base visual = factory.CreateVisual( properties ); + + // trigger creation through setting on stage + DummyControl dummy = DummyControl::New( true ); + Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() ); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + application.GetScene().Add( dummy ); + + application.SendNotification(); + application.Render(); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::RELATIVE ), true, TEST_LOCATION ); + } + + // color visual 3 - invalid value + { + VisualFactory factory = VisualFactory::Get(); + Property::Map properties; + float cornerRadius = 30.0f; + + properties[Visual::Property::TYPE] = Visual::COLOR; + properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE; + properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius; + properties[DevelVisual::Property::CORNER_RADIUS_POLICY] = -1; // Set an invalid value Visual::Base visual = factory.CreateVisual( properties ); @@ -3609,7 +3790,7 @@ int UtcDaliVisualRoundedCorner(void) dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - Stage::GetCurrent().Add( dummy ); + application.GetScene().Add( dummy ); application.SendNotification(); application.Render(); @@ -3618,6 +3799,8 @@ int UtcDaliVisualRoundedCorner(void) application.Render(); DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION ); + // Default corner radius policy is absolute. + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION ); } // gradient visual @@ -3654,7 +3837,7 @@ int UtcDaliVisualRoundedCorner(void) dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - Stage::GetCurrent().Add( dummy ); + application.GetScene().Add( dummy ); application.SendNotification(); application.Render(); @@ -3663,8 +3846,116 @@ int UtcDaliVisualRoundedCorner(void) application.Render(); DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION ); + // Default corner radius policy is absolute. + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION ); } + // animated image visual + { + VisualFactory factory = VisualFactory::Get(); + Property::Map properties; + float cornerRadius = 24.0f; + + properties[Visual::Property::TYPE] = Visual::ANIMATED_IMAGE; + properties[ImageVisual::Property::URL] = TEST_GIF_FILE_NAME; + properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius + 10.0f; // Dummy Input + properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius; + properties["cornerRadiusPolicy"] = Toolkit::Visual::Transform::Policy::ABSOLUTE; + + Visual::Base visual = factory.CreateVisual( properties ); + + // trigger creation through setting on stage + DummyControl dummy = DummyControl::New( true ); + Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() ); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + application.GetScene().Add( dummy ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION ); + } + + // vector image visual + { + VisualFactory factory = VisualFactory::Get(); + Property::Map properties; + float cornerRadius = 27.0f; + + properties[Visual::Property::TYPE] = Visual::SVG; + properties[ImageVisual::Property::URL] = TEST_SVG_FILE_NAME; + properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius; + + Visual::Base visual = factory.CreateVisual( properties ); + + // trigger creation through setting on stage + DummyControl dummy = DummyControl::New( true ); + Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() ); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + application.GetScene().Add( dummy ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION ); + // Default corner radius policy is absolute. + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION ); + } + + // animated vector image visual + { + VisualFactory factory = VisualFactory::Get(); + Property::Map properties; + float cornerRadius = 1.3f; + + properties[Visual::Property::TYPE] = DevelVisual::ANIMATED_VECTOR_IMAGE; + properties[ImageVisual::Property::URL] = TEST_VECTOR_IMAGE_FILE_NAME; + properties["cornerRadius"] = cornerRadius; + properties[DevelVisual::Property::CORNER_RADIUS_POLICY] = Toolkit::Visual::Transform::Policy::RELATIVE; + + Visual::Base visual = factory.CreateVisual( properties ); + + // trigger creation through setting on stage + DummyControl dummy = DummyControl::New( true ); + Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() ); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + application.GetScene().Add( dummy ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::RELATIVE ), true, TEST_LOCATION ); + } +#else + tet_result(TET_PASS); +#endif + END_TEST; } @@ -3673,6 +3964,14 @@ int UtcDaliColorVisualBlurRadius(void) ToolkitTestApplication application; tet_infoline( "UtcDaliColorVisualBlurRadius" ); + static std::vector customUniforms = + { + UniformData("blurRadius", Property::Type::FLOAT), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + VisualFactory factory = VisualFactory::Get(); Property::Map properties; float blurRadius = 20.0f; @@ -3690,7 +3989,7 @@ int UtcDaliColorVisualBlurRadius(void) dummy.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); dummy.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); - Stage::GetCurrent().Add( dummy ); + application.GetScene().Add( dummy ); application.SendNotification(); application.Render(); @@ -3838,3 +4137,342 @@ int UtcDaliVisualGetType(void) END_TEST; } + +int UtcDaliVisualGetVisualProperty01(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualGetVisualProperty01: Test animatable property, Visual::Base, ColorVisual" ); + + static std::vector customUniforms = + { + UniformData("mixColor", Property::Type::VECTOR3), + UniformData("offset", Property::Type::VECTOR2), + UniformData("size", Property::Type::VECTOR2), + UniformData("cornerRadius", Property::Type::FLOAT), + UniformData("blurRadius", Property::Type::FLOAT), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR); + propertyMap.Insert(Visual::Property::MIX_COLOR, Color::BLUE); + propertyMap.Insert(DevelVisual::Property::CORNER_RADIUS, 10.0f); + propertyMap.Insert(DevelVisual::Property::CORNER_RADIUS_POLICY, Toolkit::Visual::Transform::Policy::RELATIVE); + propertyMap.Insert(DevelColorVisual::Property::BLUR_RADIUS, 20.0f); + Visual::Base colorVisual = factory.CreateVisual(propertyMap); + + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, colorVisual); + dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f); + application.GetScene().Add(dummyControl); + + application.SendNotification(); + application.Render(); + + Vector3 targetColor(1.0f, 1.0f, 1.0f); + Vector2 targetOffset(0.05f, 0.05f); + Vector2 targetSize(1.1f, 1.1f); + float targetOpacity = 0.5f; + float targetCornerRadius = 20.0f; + float targetBlurRadius = 10.0f; + + Animation animation = Animation::New(1.0f); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::MIX_COLOR), targetColor); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::OPACITY), targetOpacity); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Transform::Property::OFFSET), targetOffset); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Transform::Property::SIZE), targetSize); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::CORNER_RADIUS), targetCornerRadius); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelColorVisual::Property::BLUR_RADIUS), targetBlurRadius); + animation.Play(); + + application.SendNotification(); + application.Render(); + application.Render(1001u); // End of animation + + Property::Map resultMap; + colorVisual.CreatePropertyMap( resultMap ); + + // Test property values: they should be updated + Property::Value* colorValue = resultMap.Find(ColorVisual::Property::MIX_COLOR, Property::VECTOR4); + DALI_TEST_CHECK(colorValue); + DALI_TEST_EQUALS(colorValue->Get(), Vector4(targetColor.r, targetColor.g, targetColor.b, targetOpacity), TEST_LOCATION); + + Property::Value* transformValue = resultMap.Find(Dali::Toolkit::Visual::Property::TRANSFORM); + Dali::Property::Map* transformMap = transformValue->GetMap(); + DALI_TEST_CHECK(transformMap); + + Property::Value* offsetValue = transformMap->Find(Toolkit::Visual::Transform::Property::OFFSET); + DALI_TEST_CHECK(offsetValue); + DALI_TEST_EQUALS(offsetValue->Get(), targetOffset, TEST_LOCATION); + + Property::Value* sizeValue = transformMap->Find(Toolkit::Visual::Transform::Property::SIZE); + DALI_TEST_CHECK(sizeValue); + DALI_TEST_EQUALS(sizeValue->Get(), targetSize, TEST_LOCATION); + + Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::FLOAT); + DALI_TEST_CHECK(cornerRadiusValue); + DALI_TEST_EQUALS(cornerRadiusValue->Get< float >(), targetCornerRadius, TEST_LOCATION); + + Property::Value* blurRadiusValue = resultMap.Find(DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT); + DALI_TEST_CHECK(blurRadiusValue); + DALI_TEST_EQUALS(blurRadiusValue->Get< float >(), targetBlurRadius, TEST_LOCATION); + + // Test uniform values + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("mixColor", targetColor), true, TEST_LOCATION); + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("offset", targetOffset), true, TEST_LOCATION); + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("size", targetSize), true, TEST_LOCATION); + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("cornerRadius", targetCornerRadius), true, TEST_LOCATION); + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("blurRadius", targetBlurRadius), true, TEST_LOCATION); + + // Test not-supported property + Property property1 = DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::PREMULTIPLIED_ALPHA); + DALI_TEST_CHECK(!property1.object); + DALI_TEST_CHECK(property1.propertyIndex == Property::INVALID_INDEX); + + // Test not-supported property + Property property2 = DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelColorVisual::Property::RENDER_IF_TRANSPARENT); + DALI_TEST_CHECK(!property2.object); + DALI_TEST_CHECK(property2.propertyIndex == Property::INVALID_INDEX); + + // Test unregistered visual + Property property3 = DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL2, Visual::Property::MIX_COLOR); + DALI_TEST_CHECK(!property3.object); + DALI_TEST_CHECK(property3.propertyIndex == Property::INVALID_INDEX); + + END_TEST; +} + +int UtcDaliVisualGetVisualProperty02(void) +{ +#ifdef OLD_GRAPHICS_TEST + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualGetVisualProperty02: Test animatable property" ); + + static std::vector customUniforms = + { + UniformData("mixColor", Property::Type::VECTOR3), + UniformData("offset", Property::Type::VECTOR2), + UniformData("size", Property::Type::VECTOR2), + UniformData("cornerRadius", Property::Type::FLOAT), + UniformData("blurRadius", Property::Type::FLOAT), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR); + Visual::Base colorVisual = factory.CreateVisual(propertyMap); + + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, colorVisual); + dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f); + application.GetScene().Add(dummyControl); + + application.SendNotification(); + application.Render(); + + Vector3 targetColor(1.0f, 1.0f, 1.0f); + Vector2 targetOffset(0.05f, 0.05f); + Vector2 targetSize(1.1f, 1.1f); + float targetOpacity = 0.5f; + float targetCornerRadius = 20.0f; + float targetBlurRadius = 10.0f; + + // Should work when the properties are not set before + Animation animation = Animation::New(1.0f); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "mixColor"), targetColor); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "opacity"), targetOpacity); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "offset"), targetOffset); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "size"), targetSize); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "cornerRadius"), targetCornerRadius); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, "blurRadius"), targetBlurRadius); + animation.Play(); + + application.SendNotification(); + application.Render(); + application.Render(1001u); // End of animation + + Property::Map resultMap; + colorVisual.CreatePropertyMap(resultMap); + + // Test property values: they should be updated + Property::Value* colorValue = resultMap.Find(ColorVisual::Property::MIX_COLOR, Property::VECTOR4); + DALI_TEST_CHECK(colorValue); + DALI_TEST_EQUALS(colorValue->Get(), Vector4(targetColor.r, targetColor.g, targetColor.b, targetOpacity), TEST_LOCATION); + + Property::Value* transformValue = resultMap.Find(Dali::Toolkit::Visual::Property::TRANSFORM); + Dali::Property::Map* transformMap = transformValue->GetMap(); + DALI_TEST_CHECK(transformMap); + + Property::Value* offsetValue = transformMap->Find(Toolkit::Visual::Transform::Property::OFFSET); + DALI_TEST_CHECK(offsetValue); + DALI_TEST_EQUALS(offsetValue->Get(), targetOffset, TEST_LOCATION); + + Property::Value* sizeValue = transformMap->Find(Toolkit::Visual::Transform::Property::SIZE); + DALI_TEST_CHECK(sizeValue); + DALI_TEST_EQUALS(sizeValue->Get(), targetSize, TEST_LOCATION); + + Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::FLOAT); + DALI_TEST_CHECK(cornerRadiusValue); + DALI_TEST_EQUALS(cornerRadiusValue->Get< float >(), targetCornerRadius, TEST_LOCATION); + + Property::Value* blurRadiusValue = resultMap.Find(DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT); + DALI_TEST_CHECK(blurRadiusValue); + DALI_TEST_EQUALS(blurRadiusValue->Get< float >(), targetBlurRadius, TEST_LOCATION); + + // Test uniform values + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("mixColor", targetColor), true, TEST_LOCATION); + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("offset", targetOffset), true, TEST_LOCATION); + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("size", targetSize), true, TEST_LOCATION); + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("cornerRadius", targetCornerRadius), true, TEST_LOCATION); + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("blurRadius", targetBlurRadius), true, TEST_LOCATION); +#else + tet_result(TET_PASS); +#endif + + END_TEST; +} + +int UtcDaliVisualGetVisualProperty03(void) +{ +#ifdef OLD_GRAPHICS_TEST + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualGetVisualProperty01: Test animatable property, ImageVisual" ); + + static std::vector customUniforms = + { + UniformData("cornerRadius", Property::Type::FLOAT), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE); + propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME); + Visual::Base imageVisual = factory.CreateVisual(propertyMap); + + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, imageVisual); + dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f); + application.GetScene().Add(dummyControl); + + // Wait for image loading + DALI_TEST_EQUALS(Test::WaitForEventThreadTrigger(1), true, TEST_LOCATION); + + application.SendNotification(); + application.Render(); + + float targetOpacity = 0.5f; + float targetCornerRadius = 20.0f; + + Animation animation = Animation::New(1.0f); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::OPACITY), targetOpacity); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::CORNER_RADIUS), targetCornerRadius); + animation.Play(); + + application.SendNotification(); + application.Render(); + application.Render(1001u); // End of animation + + Property::Map resultMap; + imageVisual.CreatePropertyMap( resultMap ); + + // Test property values: they should be updated + Property::Value* colorValue = resultMap.Find(Visual::Property::MIX_COLOR, Property::VECTOR4); + DALI_TEST_CHECK(colorValue); + DALI_TEST_EQUALS(colorValue->Get(), Vector4(1.0f, 1.0f, 1.0f, targetOpacity), TEST_LOCATION); + + Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::FLOAT); + DALI_TEST_CHECK(cornerRadiusValue); + DALI_TEST_EQUALS(cornerRadiusValue->Get< float >(), targetCornerRadius, TEST_LOCATION); + + // Test uniform value + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("cornerRadius", targetCornerRadius), true, TEST_LOCATION); +#else + tet_result(TET_PASS); +#endif + + END_TEST; +} + +int UtcDaliVisualGetVisualProperty04(void) +{ +#ifdef OLD_GRAPHICS_TEST + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualGetVisualProperty01: Test animatable property, GradientVisual" ); + + static std::vector customUniforms = + { + UniformData("cornerRadius", Property::Type::FLOAT), + }; + + TestGraphicsController& graphics = application.GetGraphicsController(); + graphics.AddCustomUniforms(customUniforms); + + Vector2 start(-1.f, -1.f); + Vector2 end(1.f, 1.f); + Property::Array stopColors; + stopColors.PushBack( Color::RED ); + stopColors.PushBack( Color::GREEN ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT); + propertyMap.Insert(GradientVisual::Property::START_POSITION, start); + propertyMap.Insert(GradientVisual::Property::END_POSITION, end); + propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector2(0.f, 1.f)); + propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT); + propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors); + Visual::Base gradientVisual = factory.CreateVisual(propertyMap); + + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual(DummyControl::Property::TEST_VISUAL, gradientVisual); + dummyControl[Actor::Property::SIZE] = Vector2(200.f, 200.f); + application.GetScene().Add(dummyControl); + + application.SendNotification(); + application.Render(); + + float targetOpacity = 0.5f; + float targetCornerRadius = 20.0f; + + Animation animation = Animation::New(1.0f); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, Visual::Property::OPACITY), targetOpacity); + animation.AnimateTo(DevelControl::GetVisualProperty(dummyControl, DummyControl::Property::TEST_VISUAL, DevelVisual::Property::CORNER_RADIUS), targetCornerRadius); + animation.Play(); + + application.SendNotification(); + application.Render(); + application.Render(1001u); // End of animation + + Property::Map resultMap; + gradientVisual.CreatePropertyMap( resultMap ); + + // Test property values: they should be updated + Property::Value* colorValue = resultMap.Find(Visual::Property::MIX_COLOR, Property::VECTOR4); + DALI_TEST_CHECK(colorValue); + DALI_TEST_EQUALS(colorValue->Get(), Vector4(1.0f, 1.0f, 1.0f, targetOpacity), TEST_LOCATION); + + Property::Value* cornerRadiusValue = resultMap.Find(DevelVisual::Property::CORNER_RADIUS, Property::FLOAT); + DALI_TEST_CHECK(cornerRadiusValue); + DALI_TEST_EQUALS(cornerRadiusValue->Get< float >(), targetCornerRadius, TEST_LOCATION); + + // Test uniform value + DALI_TEST_EQUALS(application.GetGlAbstraction().CheckUniformValue("cornerRadius", targetCornerRadius), true, TEST_LOCATION); +#else + tet_result(TET_PASS); +#endif + + END_TEST; +}