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=fc941302d5fe6c32a623a91de1dce07f415c9076;hp=4885bc209fb34c8c990f6fd57aa4b62e8e681faa;hb=5a2a5883422f4d114902ac57d57d7d1e973fbb2e;hpb=dc256c60aaab03a8d7319b9257549d32f6a5b22d diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp index 4885bc2..fc94130 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) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 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. @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -85,6 +86,20 @@ bool DaliTestCheckMaps( const Property::Map& fontStyleMapGet, const Property::Ma return true; } +void PrepareResourceImage( ToolkitTestApplication& application, unsigned int imageWidth, unsigned int imageHeight, Pixel::Format pixelFormat ) +{ + TestPlatformAbstraction& platform = application.GetPlatform(); + platform.SetClosestImageSize(Vector2( imageWidth, imageHeight)); + + Integration::Bitmap* bitmap = Integration::Bitmap::New( Integration::Bitmap::BITMAP_2D_PACKED_PIXELS, ResourcePolicy::OWNED_RETAIN ); + Integration::PixelBuffer* pixbuffer = bitmap->GetPackedPixelsProfile()->ReserveBuffer( pixelFormat, imageWidth, imageHeight, imageWidth, imageHeight ); + unsigned int bytesPerPixel = GetBytesPerPixel( pixelFormat ); + unsigned int initialColor = 0xFF; + memset( pixbuffer, initialColor, imageHeight*imageWidth*bytesPerPixel); + + Integration::ResourcePointer resourcePtr(bitmap); + platform.SetSynchronouslyLoadedResource( resourcePtr ); +} } //namespace void dali_visual_startup(void) @@ -97,6 +112,31 @@ void dali_visual_cleanup(void) test_return_value = TET_PASS; } + +static void TestMixColor( Visual::Base visual, Property::Index mixColorIndex, const Vector4& testColor ) +{ + Property::Map map; + visual.CreatePropertyMap(map); + Property::Value* value = map.Find( mixColorIndex ); + DALI_TEST_CHECK( value ); + Vector3 mixColor1; + DALI_TEST_CHECK( value->Get( mixColor1 ) ); + DALI_TEST_EQUALS( mixColor1, Vector3(testColor), 0.001, TEST_LOCATION ); + + value = map.Find( DevelVisual::Property::MIX_COLOR ); + DALI_TEST_CHECK( value ); + Vector4 mixColor2; + DALI_TEST_CHECK( value->Get( mixColor2 ) ); + DALI_TEST_EQUALS( mixColor2, testColor, 0.001, TEST_LOCATION ); + + value = map.Find( DevelVisual::Property::OPACITY ); + DALI_TEST_CHECK( value ); + float opacity; + DALI_TEST_CHECK( value->Get( opacity ) ); + DALI_TEST_EQUALS( opacity, testColor.a, 0.001, TEST_LOCATION ); +} + + int UtcDaliVisualCopyAndAssignment(void) { ToolkitTestApplication application; @@ -162,9 +202,9 @@ int UtcDaliVisualSetGetDepthIndex(void) visual.SetDepthIndex( 1.f ); - DummyControl dummyControl = DummyControl::New(); - DummyControlImpl& dummyImpl = static_cast(dummyControl.GetImplementation()); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); dummyControl.SetSize(200.f, 200.f); Stage::GetCurrent().Add( dummyControl ); @@ -203,6 +243,7 @@ int UtcDaliVisualSize(void) DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION ); // image visual + PrepareResourceImage( application, 100u, 200u, Pixel::RGBA8888 ); Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200)); Visual::Base imageVisual = factory.CreateVisual( image ); imageVisual.SetTransformAndSize(DefaultTransform(), controlSize ); @@ -228,9 +269,11 @@ int UtcDaliVisualSize(void) propertyMap.Insert(Visual::Property::TYPE, Visual::GRADIENT); Vector2 start(-1.f, -1.f); Vector2 end(1.f, 1.f); - 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( "mixColor", Color::MAGENTA ); + 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) ; Property::Array stopColors; stopColors.PushBack( Color::RED ); stopColors.PushBack( Color::GREEN ); @@ -255,19 +298,6 @@ int UtcDaliVisualSize(void) svgVisual2.GetNaturalSize(naturalSize); DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 100.f), TEST_LOCATION ); // Natural size should still be 100, 100 - // Batch Image visual - TestPlatformAbstraction& platform = application.GetPlatform(); - Vector2 testSize(80.f, 160.f); - platform.SetClosestImageSize(testSize); - propertyMap.Clear(); - propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE ); - propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); - propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true ); - Visual::Base batchImageVisual = factory.CreateVisual( propertyMap ); - batchImageVisual.SetTransformAndSize(DefaultTransform(), controlSize ); - batchImageVisual.GetNaturalSize( naturalSize ); - DALI_TEST_EQUALS( naturalSize, Vector2( 80.0f, 160.0f ), TEST_LOCATION ); - // Text visual. // Load some fonts to get the same metrics on different platforms. @@ -315,9 +345,9 @@ int UtcDaliVisualSetOnOffStage(void) propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); Visual::Base visual = factory.CreateVisual( propertyMap ); - DummyControl actor = DummyControl::New(); - DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + DummyControl actor = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); actor.SetSize(200.f, 200.f); @@ -340,16 +370,15 @@ int UtcDaliVisualSetOnOffStage(void) END_TEST; } - int UtcDaliVisualGetPropertyMap1(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliVisualGetPropertyMap1: ColorVisual" ); + tet_infoline( "UtcDaliVisualGetPropertyMap1: ColorVisual (With base MixColor" ); VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR); - propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); + propertyMap.Insert(DevelVisual::Property::MIX_COLOR, Color::BLUE); Visual::Base colorVisual = factory.CreateVisual( propertyMap ); Property::Map resultMap; @@ -383,8 +412,10 @@ int UtcDaliVisualGetPropertyMap2(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER); - propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE); - propertyMap.Insert(BorderVisual::Property::SIZE, 5.f); + propertyMap.Insert("mixColor", Vector4(1.0f, 0.0f, 1.0f, 0.5f) ); + propertyMap.Insert("borderColor", Color::BLUE); + propertyMap.Insert("borderSize", 5.f); + propertyMap.Insert("antiAliasing", true); Visual::Base borderVisual = factory.CreateVisual( propertyMap ); Property::Map resultMap; @@ -403,6 +434,10 @@ int UtcDaliVisualGetPropertyMap2(void) DALI_TEST_CHECK( sizeValue ); DALI_TEST_CHECK( sizeValue->Get() == 5.f ); + Property::Value* AAValue = resultMap.Find( BorderVisual::Property::ANTI_ALIASING, Property::BOOLEAN ); + DALI_TEST_CHECK( AAValue ); + DALI_TEST_CHECK( AAValue->Get() == true ); + Property::Map propertyMap1; propertyMap1[ Visual::Property::TYPE ] = Visual::BORDER; propertyMap1[ BorderVisual::Property::COLOR ] = Color::CYAN; @@ -426,6 +461,30 @@ int UtcDaliVisualGetPropertyMap2(void) END_TEST; } +int UtcDaliVisualGetPropertyMap2N(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualGetPropertyMap2N: BorderVisual with no setup properties" ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER); + Visual::Base borderVisual = factory.CreateVisual( propertyMap ); + + tet_infoline( "Test that the visual is created, with a default renderer" ); + DALI_TEST_CHECK( borderVisual ); + + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual ); + Stage::GetCurrent().Add( dummyControl ); + + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION ); + + END_TEST; +} + + int UtcDaliVisualGetPropertyMap3(void) { ToolkitTestApplication application; @@ -439,9 +498,9 @@ int UtcDaliVisualGetPropertyMap3(void) Vector2 start(-1.f, -1.f); Vector2 end(1.f, 1.f); - propertyMap.Insert(GradientVisual::Property::START_POSITION, start); - propertyMap.Insert(GradientVisual::Property::END_POSITION, end); - propertyMap.Insert(GradientVisual::Property::SPREAD_METHOD, GradientVisual::SpreadMethod::REPEAT); + propertyMap.Insert( "startPosition", start); + propertyMap.Insert( "endPosition", end); + propertyMap.Insert( "spreadMethod", GradientVisual::SpreadMethod::REPEAT); propertyMap.Insert(GradientVisual::Property::STOP_OFFSET, Vector2(0.2f, 0.8f)); @@ -572,14 +631,15 @@ int UtcDaliVisualGetPropertyMap5(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE ); + propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::MAGENTA ); propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 ); propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 ); - propertyMap.Insert( ImageVisual::Property::FITTING_MODE, FittingMode::FIT_HEIGHT ); - propertyMap.Insert( ImageVisual::Property::SAMPLING_MODE, SamplingMode::BOX_THEN_NEAREST ); - propertyMap.Insert( ImageVisual::Property::PIXEL_AREA, Vector4( 0.25f, 0.25f, 0.5f, 0.5f ) ); - propertyMap.Insert( ImageVisual::Property::WRAP_MODE_U, WrapMode::REPEAT ); - propertyMap.Insert( ImageVisual::Property::WRAP_MODE_V, WrapMode::MIRRORED_REPEAT ); + propertyMap.Insert( "fittingMode", FittingMode::FIT_HEIGHT ); + propertyMap.Insert( "samplingMode", SamplingMode::BOX_THEN_NEAREST ); + propertyMap.Insert( "pixelArea", Vector4( 0.25f, 0.25f, 0.5f, 0.5f ) ); + propertyMap.Insert( "wrapModeU", WrapMode::REPEAT ); + propertyMap.Insert( "wrapModeV", WrapMode::MIRRORED_REPEAT ); propertyMap.Insert( "synchronousLoading", true ); Visual::Base imageVisual = factory.CreateVisual(propertyMap); @@ -597,6 +657,10 @@ int UtcDaliVisualGetPropertyMap5(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == TEST_IMAGE_FILE_NAME ); + value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == Color::MAGENTA ); + value = resultMap.Find( ImageVisual::Property::FITTING_MODE, Property::INTEGER ); DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == FittingMode::FIT_HEIGHT ); @@ -630,6 +694,7 @@ int UtcDaliVisualGetPropertyMap5(void) DALI_TEST_CHECK( value->Get() == true ); // Get an image visual with an image handle, and test the default property values + PrepareResourceImage( application, 100u, 200u, Pixel::RGBA8888 ); Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200)); imageVisual = factory.CreateVisual(image); imageVisual.CreatePropertyMap( resultMap ); @@ -685,6 +750,7 @@ int UtcDaliVisualGetPropertyMap6(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE ); + propertyMap.Insert( "mixColor", Color::MAGENTA ); propertyMap.Insert( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME ); propertyMap.Insert( ImageVisual::Property::BORDER_ONLY, true ); Visual::Base nPatchVisual = factory.CreateVisual( propertyMap ); @@ -697,6 +763,10 @@ int UtcDaliVisualGetPropertyMap6(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == Visual::IMAGE ); + value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 ); + DALI_TEST_CHECK( value ); + DALI_TEST_CHECK( value->Get() == Color::MAGENTA ); + value = resultMap.Find( ImageVisual::Property::URL, Property::STRING ); DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == TEST_NPATCH_FILE_NAME ); @@ -718,6 +788,7 @@ int UtcDaliVisualGetPropertyMap7(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE ); + propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::WHITE ); propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME ); Visual::Base svgVisual = factory.CreateVisual( propertyMap ); @@ -758,6 +829,7 @@ int UtcDaliVisualGetPropertyMap8(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert( Visual::Property::TYPE, Visual::MESH ); + propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::BLUE ); propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME ); propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME ); propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION ); @@ -767,6 +839,7 @@ int UtcDaliVisualGetPropertyMap8(void) Property::Map resultMap; meshVisual.CreatePropertyMap( resultMap ); + TestMixColor( meshVisual, DevelVisual::Property::MIX_COLOR, Color::BLUE ); //Check values in the result map are identical to the initial map's values. Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER ); @@ -883,45 +956,6 @@ int UtcDaliVisualGetPropertyMap9(void) END_TEST; } -int UtcDaliVisualGetPropertyMapBatchImageVisual(void) -{ - ToolkitTestApplication application; - tet_infoline( "UtcDaliVisualGetPropertyMapBatchImageVisual:" ); - - VisualFactory factory = VisualFactory::Get(); - Property::Map propertyMap; - propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE ); - propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true ); - propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); - propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 ); - propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 ); - - Visual::Base batchImageVisual = factory.CreateVisual( propertyMap ); - DALI_TEST_CHECK( batchImageVisual ); - - Property::Map resultMap; - batchImageVisual.CreatePropertyMap( resultMap ); - - // Check the property values from the returned map from visual - Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == Visual::IMAGE ); - - value = resultMap.Find( ImageVisual::Property::URL, Property::STRING ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == TEST_IMAGE_FILE_NAME ); - - value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == 20 ); - - value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == 30 ); - - END_TEST; -} - //Text shape visual int UtcDaliVisualGetPropertyMap10(void) { @@ -933,6 +967,7 @@ int UtcDaliVisualGetPropertyMap10(void) Property::Map propertyMap; propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT ); + propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::BLACK ); propertyMap.Insert( "renderingBackend", static_cast( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) ); propertyMap.Insert( "enableMarkup", false ); propertyMap.Insert( "text", "Hello world" ); @@ -957,6 +992,10 @@ int UtcDaliVisualGetPropertyMap10(void) DALI_TEST_CHECK( value ); DALI_TEST_EQUALS( value->Get(), (int)DevelVisual::TEXT, TEST_LOCATION ); + value = resultMap.Find( DevelVisual::Property::MIX_COLOR, Property::VECTOR4 ); + DALI_TEST_CHECK( value ); + DALI_TEST_EQUALS( value->Get(), Color::BLACK, 0.001f, TEST_LOCATION ); + value = resultMap.Find( TextVisual::Property::TEXT, Property::STRING ); DALI_TEST_CHECK( value ); DALI_TEST_EQUALS( value->Get(), "Hello world", TEST_LOCATION ); @@ -1038,36 +1077,6 @@ int UtcDaliVisualGetPropertyMap11(void) END_TEST; } -int UtcDaliVisualGetPropertyMapBatchImageVisualNoAtlas(void) -{ - ToolkitTestApplication application; - tet_infoline( "UtcDaliVisualGetPropertyMapBatchImageVisualNoAtlas:" ); - - VisualFactory factory = VisualFactory::Get(); - Property::Map propertyMap; - propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE ); - propertyMap.Insert( ImageVisual::Property::BATCHING_ENABLED, true ); - propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); - - // Set the desired size to be larger than the atlas limit of 1024x1024. - propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 2048 ); - propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 2048 ); - - // Create the visual. - Visual::Base batchImageVisual = factory.CreateVisual( propertyMap ); - - DALI_TEST_CHECK( batchImageVisual ); - - DummyControl dummyControl = DummyControl::New(); - DummyControlImpl& dummyImpl = static_cast(dummyControl.GetImplementation()); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, batchImageVisual ); - Stage::GetCurrent().Add( dummyControl ); - - DALI_TEST_CHECK( dummyControl.GetRendererCount() == 1u ); - - END_TEST; -} - int UtcDaliVisualAnimateBorderVisual01(void) { ToolkitTestApplication application; @@ -1076,13 +1085,26 @@ int UtcDaliVisualAnimateBorderVisual01(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert(Visual::Property::TYPE, Visual::BORDER); + propertyMap.Insert(DevelVisual::Property::MIX_COLOR, Vector4(1, 1, 1, 0.8f)); propertyMap.Insert(BorderVisual::Property::COLOR, Color::BLUE); propertyMap.Insert(BorderVisual::Property::SIZE, 5.f); Visual::Base borderVisual = factory.CreateVisual( propertyMap ); - DummyControl actor = DummyControl::New(); - DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, borderVisual ); + Property::Map map; + map["target"] = "testVisual"; + map["property"] = "mixColor"; + map["targetValue"] = Vector4(1,1,1,0); + map["animator"] = Property::Map() + .Add("alphaFunction", "LINEAR") + .Add("timePeriod", Property::Map() + .Add("delay", 0.0f) + .Add("duration", 4.0f)); + + Dali::Toolkit::TransitionData transition = TransitionData::New( map ); + + DummyControl actor = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual ); actor.SetSize(2000, 2000); actor.SetParentOrigin(ParentOrigin::CENTER); Stage::GetCurrent().Add(actor); @@ -1090,27 +1112,43 @@ int UtcDaliVisualAnimateBorderVisual01(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index index = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::COLOR ); + Property::Index borderColorIndex = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::COLOR ); + Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR ); - Animation animation = Animation::New(4.0f); - animation.AnimateTo( Property(renderer, index), Color::WHITE ); + Animation animation = dummyImpl.CreateTransition( transition ); + + // Animate the mix color through the transition, and the border color through + // programmatic method. + animation.AnimateTo( Property(renderer, borderColorIndex), Color::WHITE ); animation.Play(); application.SendNotification(); application.Render(0); application.Render(2000u); // halfway point between blue and white - Vector4 color = renderer.GetProperty( index ); + Vector4 color = renderer.GetProperty( borderColorIndex ); Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f; DALI_TEST_EQUALS( color, testColor, TEST_LOCATION ); DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("borderColor", testColor ), true, TEST_LOCATION ); - application.Render(2000u); // halfway point between blue and white + color = renderer.GetProperty( mixColorIndex ); + testColor = Vector4( 1,1,1,0.4f ); + DALI_TEST_EQUALS( Vector3(color), Vector3(testColor), 0.0001f, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", Vector3(testColor) ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", testColor.a ) , true, TEST_LOCATION ); + + application.Render(2000u); - color = renderer.GetProperty( index ); + color = renderer.GetProperty( borderColorIndex ); DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION ); DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("borderColor", Color::WHITE ), true, TEST_LOCATION ); + color = renderer.GetProperty( mixColorIndex ); + testColor = Vector4(1,1,1,0); + DALI_TEST_EQUALS( color, testColor, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", Vector3(testColor) ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", testColor.a ), true, TEST_LOCATION ); + END_TEST; } @@ -1127,9 +1165,9 @@ int UtcDaliVisualAnimateBorderVisual02(void) propertyMap.Insert(BorderVisual::Property::SIZE, 5.f); Visual::Base borderVisual = factory.CreateVisual( propertyMap ); - DummyControl actor = DummyControl::New(); - DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, borderVisual ); + DummyControl actor = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual ); actor.SetSize(2000, 2000); actor.SetParentOrigin(ParentOrigin::CENTER); Stage::GetCurrent().Add(actor); @@ -1171,9 +1209,9 @@ int UtcDaliVisualAnimateColorVisual(void) propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); Visual::Base borderVisual = factory.CreateVisual( propertyMap ); - DummyControl actor = DummyControl::New(); - DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, borderVisual ); + DummyControl actor = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, borderVisual ); actor.SetSize(2000, 2000); actor.SetParentOrigin(ParentOrigin::CENTER); Stage::GetCurrent().Add(actor); @@ -1181,48 +1219,137 @@ int UtcDaliVisualAnimateColorVisual(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index index = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); + + Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); + DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::AUTO, TEST_LOCATION ); Animation animation = Animation::New(4.0f); - animation.AnimateTo( Property(renderer, index), Color::WHITE ); + animation.AnimateTo( Property(renderer, mixColorIndex), Vector3(Color::WHITE) ); animation.Play(); application.SendNotification(); application.Render(0); application.Render(2000u); // halfway point - Vector4 color = renderer.GetProperty( index ); - Vector4 testColor = (Color::BLUE + Color::WHITE)*0.5f; + Vector3 color = renderer.GetProperty( mixColorIndex ); + Vector3 testColor = Vector3(Color::BLUE + Color::WHITE)*0.5f; DALI_TEST_EQUALS( color, testColor, TEST_LOCATION ); - DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", testColor ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", testColor ), true, TEST_LOCATION ); application.Render(2000u); // halfway point between blue and white - color = renderer.GetProperty( index ); - DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION ); + color = renderer.GetProperty( mixColorIndex ); + DALI_TEST_EQUALS( color, Vector3(Color::WHITE), TEST_LOCATION ); - DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", Color::WHITE ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", Vector3(Color::WHITE) ), true, TEST_LOCATION ); + blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); + DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::AUTO, TEST_LOCATION ); END_TEST; } - int UtcDaliVisualAnimatePrimitiveVisual(void) { ToolkitTestApplication application; tet_infoline( "UtcDaliAnimatePrimitiveVisual color" ); + { + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::PRIMITIVE); + propertyMap.Insert(PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE); + propertyMap.Insert(PrimitiveVisual::Property::MIX_COLOR, Color::BLUE); + Visual::Base visual = factory.CreateVisual( propertyMap ); + + DummyControl actor = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + actor.SetSize(2000, 2000); + actor.SetParentOrigin(ParentOrigin::CENTER); + actor.SetColor(Color::BLACK); + Stage::GetCurrent().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 ); + + tet_infoline("Test that the renderer has the Primitive mix color"); + DALI_TEST_CHECK( index != Property::INVALID_INDEX ); + + const Vector4 INITIAL_MIX_COLOR( 1.0f,0.0f,1.0f,0.5f ); // Magenta with half alpha + const Vector4 TARGET_MIX_COLOR( Color::RED ); + + Property::Map map; + map["target"] = "testVisual"; + map["property"] = "mixColor"; + map["initialValue"] = INITIAL_MIX_COLOR; + map["targetValue"] = TARGET_MIX_COLOR; + map["animator"] = Property::Map() + .Add("alphaFunction", "LINEAR") + .Add("timePeriod", Property::Map() + .Add("delay", 0.0f) + .Add("duration", 4.0f)); + + 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(); + + application.SendNotification(); + application.Render(0); + application.Render(2000u); // halfway point + application.SendNotification(); + + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION ); + + Vector4 halfwayColor = (INITIAL_MIX_COLOR + TARGET_MIX_COLOR)*0.5; + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", Vector3(halfwayColor) ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", halfwayColor.a ), true, TEST_LOCATION ); + + application.Render(2001u); // go past end + application.SendNotification(); // Trigger signals + + DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("uColor", Color::WHITE ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", Vector3(TARGET_MIX_COLOR) ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", TARGET_MIX_COLOR.a ), true, TEST_LOCATION ); + + blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); + DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::AUTO, TEST_LOCATION ); + + actor.Unparent(); + } + + END_TEST; +} + +int UtcDaliVisualAnimateImageVisualMixColor(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliAnimateImageVisual mix color" ); + + application.GetPlatform().SetClosestImageSize( Vector2(100, 100) ); + VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; - propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR); - propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); - Visual::Base borderVisual = factory.CreateVisual( propertyMap ); + propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE); + propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); + propertyMap.Insert("mixColor", Color::BLUE); + propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true); + Visual::Base visual = factory.CreateVisual( propertyMap ); + + DummyControl actor = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - DummyControl actor = DummyControl::New(); - DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, borderVisual ); actor.SetSize(2000, 2000); actor.SetParentOrigin(ParentOrigin::CENTER); actor.SetColor(Color::BLACK); @@ -1231,31 +1358,234 @@ int UtcDaliVisualAnimatePrimitiveVisual(void) 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 = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR ); + Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); + DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::AUTO, TEST_LOCATION ); - // The property isn't registered on the renderer, it's instead registered on the shader. - DALI_TEST_EQUALS( index, Property::INVALID_INDEX, TEST_LOCATION ); + tet_infoline("Test that the renderer has the mixColor property"); + DALI_TEST_CHECK( index != Property::INVALID_INDEX ); + + const Vector4 TARGET_MIX_COLOR( 1.0f, 0.0f, 0.0f, 0.5f ); + + Property::Map map; + map["target"] = "testVisual"; + map["property"] = "mixColor"; + map["initialValue"] = Color::MAGENTA; + map["targetValue"] = TARGET_MIX_COLOR; + map["animator"] = Property::Map() + .Add("alphaFunction", "LINEAR") + .Add("timePeriod", Property::Map() + .Add("delay", 0.0f) + .Add("duration", 4.0f)); + + Dali::Toolkit::TransitionData transition = TransitionData::New( map ); + + Animation animation = dummyImpl.CreateTransition( transition ); + + blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); + DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); - Animation animation = Animation::New(4.0f); animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE ); animation.Play(); application.SendNotification(); application.Render(0); application.Render(2000u); // halfway point + Vector4 testColor(1.0f, 0.0f, 0.5f, 0.75f ); - // Actor color overrides renderer color. DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", Vector3(testColor)), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", testColor.a), true, TEST_LOCATION ); application.Render(2000u); // halfway point between blue and white DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION ); DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("uColor", Color::WHITE ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", Vector3(TARGET_MIX_COLOR)), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", TARGET_MIX_COLOR.a), true, TEST_LOCATION ); + + TestMixColor( visual, DevelVisual::Property::MIX_COLOR, TARGET_MIX_COLOR ); + + blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); + DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); + + END_TEST; +} + + +int UtcDaliVisualAnimateImageVisualOpacity(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliAnimateImageVisual mix color" ); + + application.GetPlatform().SetClosestImageSize( Vector2(100, 100) ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE); + propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); + propertyMap.Insert("opacity", 0.5f); + propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true); + Visual::Base visual = factory.CreateVisual( propertyMap ); + + DummyControl actor = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + actor.SetSize(2000, 2000); + actor.SetParentOrigin(ParentOrigin::CENTER); + actor.SetColor(Color::BLACK); + Stage::GetCurrent().Add(actor); + + DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); + + Renderer renderer = actor.GetRendererAt(0); + tet_infoline("Test that the renderer has the opacity property"); + Property::Index index = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::OPACITY ); + DALI_TEST_CHECK( index != Property::INVALID_INDEX ); + + + Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); + DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); + + { + tet_infoline( "Test that the opacity can be increased to full via animation, and that the blend mode is set appropriately at the start and end of the animation." ); + + Property::Map map; + map["target"] = "testVisual"; + map["property"] = "opacity"; + map["targetValue"] = 1.0f; + map["animator"] = Property::Map() + .Add("alphaFunction", "LINEAR") + .Add("timePeriod", Property::Map() + .Add("delay", 0.0f) + .Add("duration", 4.0f)); + + Dali::Toolkit::TransitionData transition = TransitionData::New( map ); + Animation animation = dummyImpl.CreateTransition( transition ); + animation.Play(); + + application.SendNotification(); + application.Render(0); + application.Render(2000u); // halfway point + application.SendNotification(); + + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", 0.75f), true, TEST_LOCATION ); + + application.Render(2001u); // end + application.SendNotification(); + + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", 1.0f), true, TEST_LOCATION ); + + blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); + DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::AUTO, TEST_LOCATION ); + } + + + { + tet_infoline( "Test that the opacity can be reduced via animation, and that the blend mode is set appropriately at the start and end of the animation." ); + + Property::Map map; + map["target"] = "testVisual"; + map["property"] = DevelVisual::Property::OPACITY; + map["targetValue"] = 0.1f; + map["animator"] = Property::Map() + .Add("alphaFunction", "LINEAR") + .Add("timePeriod", Property::Map() + .Add("delay", 0.0f) + .Add("duration", 4.0f)); + + Dali::Toolkit::TransitionData transition = TransitionData::New( map ); + Animation animation = dummyImpl.CreateTransition( transition ); + animation.Play(); + + blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); + DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); + + application.SendNotification(); + application.Render(0); + application.Render(2000u); // halfway point + application.SendNotification(); + + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", 0.55f), true, TEST_LOCATION ); + + application.Render(2016u); // end + application.SendNotification(); + + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", 0.1f), true, TEST_LOCATION ); + + blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); + DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); + } END_TEST; } +int UtcDaliVisualAnimateImageVisualPixelArea(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliAnimateImageVisual pixel area" ); + + application.GetPlatform().SetClosestImageSize( Vector2(100, 100) ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::IMAGE); + propertyMap.Insert(ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); + propertyMap.Insert("mixColor", Color::BLUE); + propertyMap.Insert(ImageVisual::Property::SYNCHRONOUS_LOADING, true); + Visual::Base visual = factory.CreateVisual( propertyMap ); + + DummyControl actor = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + actor.SetSize(2000, 2000); + actor.SetParentOrigin(ParentOrigin::CENTER); + actor.SetColor(Color::BLACK); + Stage::GetCurrent().Add(actor); + + DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); + + Renderer renderer = actor.GetRendererAt(0); + Property::Index index = DevelHandle::GetPropertyIndex( renderer, DevelVisual::Property::MIX_COLOR ); + + tet_infoline("Test that the renderer has the mixColor property"); + DALI_TEST_CHECK( index != Property::INVALID_INDEX ); + + // TransitionData only takes string keys + Property::Map map; + map["target"] = "testVisual"; + map["property"] = "pixelArea"; + map["initialValue"] = Vector4( 0,0,0,1 ); + map["targetValue"] = Vector4( 0,0,1,1 ); // Animate width from zero to full + map["animator"] = Property::Map() + .Add("alphaFunction", "LINEAR") + .Add("timePeriod", Property::Map() + .Add("delay", 0.0f) + .Add("duration", 4.0f)); + + Dali::Toolkit::TransitionData transition = TransitionData::New( map ); + + Animation animation = dummyImpl.CreateTransition( transition ); + animation.AnimateTo( Property(actor, Actor::Property::COLOR), Color::WHITE ); + animation.Play(); + + application.SendNotification(); + application.Render(0); + application.Render(2000u); // halfway point + + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("pixelArea", Vector4(0.0f, 0.0f, 0.5f, 1.0f )), true, TEST_LOCATION ); + + application.Render(2000u); + + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("pixelArea", Vector4( 0.0f, 0.0f, 1.0f, 1.0f )), true, TEST_LOCATION ); + + END_TEST; +} + + int UtcDaliVisualWireframeVisual(void) { ToolkitTestApplication application; @@ -1371,35 +1701,48 @@ static void TestTransform( ToolkitTestApplication& application, Visual::Base vis } //Put the visual on the stage - DummyControl actor = DummyControl::New(); - DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + DummyControl actor = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); actor.SetSize(2000, 2000); actor.SetParentOrigin(ParentOrigin::CENTER); Stage::GetCurrent().Add(actor); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transform ); + application.SendNotification(); application.Render(0); Renderer renderer( actor.GetRendererAt(0) ); //Check that the properties have been registered on the Renderer - Vector2 offset = renderer.GetProperty( renderer.GetPropertyIndex( "offset" ) ); + Property::Index index = renderer.GetPropertyIndex( "offset" ); + DALI_TEST_CHECK( index != Property::INVALID_INDEX ); + Vector2 offset = renderer.GetProperty( index ); DALI_TEST_EQUALS( offset, Vector2(10.0f,10.0f), TEST_LOCATION ); - Vector2 size = renderer.GetProperty( renderer.GetPropertyIndex( "size" ) ); + index = renderer.GetPropertyIndex( "size" ); + DALI_TEST_CHECK( index != Property::INVALID_INDEX ); + Vector2 size = renderer.GetProperty( index ); DALI_TEST_EQUALS( size, Vector2(0.2f,0.2f), TEST_LOCATION ); - Vector4 offsetSizeMode = renderer.GetProperty( renderer.GetPropertyIndex( "offsetSizeMode" ) ); + index = renderer.GetPropertyIndex( "offsetSizeMode" ); + DALI_TEST_CHECK( index != Property::INVALID_INDEX ); + Vector4 offsetSizeMode = renderer.GetProperty( index ); DALI_TEST_EQUALS( offsetSizeMode, Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION ); - Vector2 parentOrigin = renderer.GetProperty( renderer.GetPropertyIndex( "origin" ) ); + index = renderer.GetPropertyIndex( "origin" ); + DALI_TEST_CHECK( index != Property::INVALID_INDEX ); + Vector2 parentOrigin = renderer.GetProperty( index ); DALI_TEST_EQUALS( parentOrigin, Vector2(-0.5f,-0.5f), TEST_LOCATION ); - Vector2 anchorPoint = renderer.GetProperty( renderer.GetPropertyIndex( "anchorPoint" ) ); + index = renderer.GetPropertyIndex( "anchorPoint" ); + DALI_TEST_CHECK( index != Property::INVALID_INDEX ); + Vector2 anchorPoint = renderer.GetProperty( index ); DALI_TEST_EQUALS( anchorPoint, Vector2(-0.5f,-0.5f), TEST_LOCATION ); //Set a new transform transform.Clear(); + transform = DefaultTransform(); transform.Insert( DevelVisual::Transform::Property::OFFSET, Vector2(20.0f, 20.0f) ); transform.Insert( DevelVisual::Transform::Property::SIZE, Vector2(100.0f, 100.0f) ); transform.Insert( DevelVisual::Transform::Property::OFFSET_SIZE_MODE, Vector4(0.0f, 0.0f, 1.0f,1.0f) ); @@ -1436,6 +1779,7 @@ int UtcDaliVisualSetTransform0(void) 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; } @@ -1448,12 +1792,13 @@ int UtcDaliVisualSetTransform1(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap[ Visual::Property::TYPE ] = Visual::PRIMITIVE; - propertyMap[ PrimitiveVisual::Property::MIX_COLOR ] = Vector4(1.0f,1.0f,1.0f,1.0f); + propertyMap[ PrimitiveVisual::Property::MIX_COLOR ] = Color::WHITE; propertyMap[ PrimitiveVisual::Property::SHAPE ] = PrimitiveVisual::Shape::SPHERE; propertyMap[ PrimitiveVisual::Property::SLICES ] = 10; propertyMap[ PrimitiveVisual::Property::STACKS ] = 10; Visual::Base visual = factory.CreateVisual( propertyMap ); TestTransform( application, visual ); + TestMixColor( visual, PrimitiveVisual::Property::MIX_COLOR, Color::WHITE ); END_TEST; } @@ -1466,6 +1811,8 @@ int UtcDaliVisualSetTransform2(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert( Visual::Property::TYPE, Visual::GRADIENT ); + propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::GREEN ); + Property::Array stopOffsets; stopOffsets.PushBack( 0.0f ); stopOffsets.PushBack( 0.3f ); @@ -1485,6 +1832,7 @@ int UtcDaliVisualSetTransform2(void) propertyMap.Insert( GradientVisual::Property::RADIUS, 1.414f ); Visual::Base visual = factory.CreateVisual( propertyMap ); TestTransform( application, visual ); + TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::GREEN ); END_TEST; } @@ -1497,10 +1845,12 @@ int UtcDaliVisualSetTransform3(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert( Visual::Property::TYPE, Visual::BORDER ); + propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::MAGENTA ); propertyMap.Insert( BorderVisual::Property::COLOR, Vector4(0.f, 1.f, 0.f, 0.6f) ); propertyMap.Insert( BorderVisual::Property::SIZE, 3.0f ); Visual::Base visual = factory.CreateVisual( propertyMap ); TestTransform( application, visual ); + TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::MAGENTA ); END_TEST; } @@ -1513,13 +1863,16 @@ int UtcDaliVisualSetTransform4(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert( Visual::Property::TYPE, Visual::MESH ); - propertyMap.Insert( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME ); - propertyMap.Insert( MeshVisual::Property::MATERIAL_URL, TEST_MTL_FILE_NAME ); - propertyMap.Insert( MeshVisual::Property::TEXTURES_PATH, TEST_RESOURCE_LOCATION ); - propertyMap.Insert( MeshVisual::Property::SHADING_MODE, MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING ); - propertyMap.Insert( MeshVisual::Property::LIGHT_POSITION, Vector3( 5.0f, 10.0f, 15.0f) ); + propertyMap.Insert( DevelVisual::Property::MIX_COLOR, Color::CYAN ); + + propertyMap.Insert( "objectUrl", TEST_OBJ_FILE_NAME ); + propertyMap.Insert( "materialUrl", TEST_MTL_FILE_NAME ); + propertyMap.Insert( "texturesPath", TEST_RESOURCE_LOCATION ); + propertyMap.Insert( "shadingMode", MeshVisual::ShadingMode::TEXTURELESS_WITH_DIFFUSE_LIGHTING ); + propertyMap.Insert( "lightPosition", Vector3( 5.0f, 10.0f, 15.0f) ); Visual::Base visual = factory.CreateVisual( propertyMap ); TestTransform( application, visual ); + TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::CYAN ); END_TEST; } @@ -1533,6 +1886,7 @@ int UtcDaliVisualSetTransform5(void) Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200)); Visual::Base visual = factory.CreateVisual(image); TestTransform( application, visual ); + TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::WHITE ); END_TEST; } @@ -1545,6 +1899,7 @@ int UtcDaliVisualSetTransform6(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE; + propertyMap[DevelVisual::Property::MIX_COLOR] = Color::YELLOW; propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME; propertyMap[Toolkit::ImageVisual::Property::DESIRED_WIDTH] = 100.0f; propertyMap[Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = 100.0f; @@ -1553,6 +1908,7 @@ int UtcDaliVisualSetTransform6(void) propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true; Visual::Base visual = factory.CreateVisual(propertyMap); TestTransform( application, visual ); + TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::YELLOW ); END_TEST; } @@ -1566,6 +1922,7 @@ int UtcDaliVisualSetTransform7(void) Image image = ResourceImage::New(TEST_NPATCH_FILE_NAME, ImageDimensions(100, 200)); Visual::Base visual = factory.CreateVisual(image); TestTransform( application, visual ); + TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::WHITE ); END_TEST; } @@ -1589,16 +1946,19 @@ int UtcDaliNPatchVisualCustomShader(void) transformMap["origin"] = Align::CENTER; properties[DevelVisual::Property::TRANSFORM] = transformMap; - properties[Dali::Toolkit::Visual::Property::TYPE] = Dali::Toolkit::Visual::IMAGE; - properties[Dali::Toolkit::Visual::Property::SHADER]=shader; - properties[Dali::Toolkit::ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME; + properties[Visual::Property::TYPE] = Visual::IMAGE; + properties[DevelVisual::Property::MIX_COLOR] = Color::BLUE; + properties[Visual::Property::SHADER]=shader; + properties[ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME; Visual::Base visual = factory.CreateVisual( properties ); + TestMixColor( visual, DevelVisual::Property::MIX_COLOR, Color::BLUE ); // trigger creation through setting on stage - DummyControl dummy = DummyControl::New(); - DummyControlImpl& dummyImpl = static_cast(dummy.GetImplementation()); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + DummyControl dummy = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummy.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transformMap ); dummy.SetSize(2000, 2000); dummy.SetParentOrigin(ParentOrigin::CENTER); Stage::GetCurrent().Add(dummy); @@ -1620,6 +1980,7 @@ int UtcDaliNPatchVisualCustomShader(void) END_TEST; } + int UtcDaliGradientVisualBlendMode(void) { ToolkitTestApplication application; @@ -1639,13 +2000,13 @@ int UtcDaliGradientVisualBlendMode(void) .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED ) .Add( Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ) ) ); - DummyControl control = DummyControl::New(); + DummyControl control = DummyControl::New(true); control.SetResizePolicy(ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS); Stage::GetCurrent().Add( control ); - DummyControlImpl& dummyImpl = static_cast( control.GetImplementation() ); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, opaqueGradientVisual ); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 2, alphaGradientVisual ); + Impl::DummyControl& dummyImpl = static_cast( control.GetImplementation() ); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, opaqueGradientVisual ); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, alphaGradientVisual ); application.SendNotification(); application.Render(); @@ -1671,9 +2032,9 @@ int UtcDaliVisualRendererRemovalAndReAddition(void) visual.SetDepthIndex( 1.f ); - DummyControl dummyControl = DummyControl::New(); - DummyControlImpl& dummyImpl = static_cast(dummyControl.GetImplementation()); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION ); dummyControl.SetSize(200.f, 200.f); @@ -1715,6 +2076,7 @@ int UtcDaliVisualTextVisualRender(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT ); + propertyMap.Insert( "mixColor", Color::WHITE ); propertyMap.Insert( "renderingBackend", static_cast( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) ); propertyMap.Insert( "enableMarkup", false ); propertyMap.Insert( "text", "Hello world" ); @@ -1733,8 +2095,8 @@ int UtcDaliVisualTextVisualRender(void) textVisual.SetDepthIndex( 1.f ); DummyControl dummyControl = DummyControl::New(true); - DummyControlImpl& dummyImpl = static_cast(dummyControl.GetImplementation()); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, textVisual ); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual ); DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION ); dummyControl.SetSize(200.f, 200.f); @@ -1759,7 +2121,7 @@ int UtcDaliVisualTextVisualRender(void) textVisual = factory.CreateVisual( propertyMap ); textVisual.SetDepthIndex( 1.f ); - dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, textVisual ); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual ); dummyControl.SetSize( 720.f, 640.f ); application.SendNotification(); // force process events to ensure text visual @@ -1769,8 +2131,59 @@ int UtcDaliVisualTextVisualRender(void) Renderer renderer = dummyControl.GetRendererAt(0u); Property::Index index = renderer.GetPropertyIndex("size"); - tet_infoline( "Test that the TextVisual overrides anything set by developer" ); - DALI_TEST_EQUALS( renderer.GetProperty(index), Vector2( 1.0, 1.0 ), 0.001f, TEST_LOCATION ); + tet_infoline( "Test that the TextVisual has NOT overridden what was set by developer" ); + DALI_TEST_EQUALS( renderer.GetProperty(index), Vector2( 0.5f, 0.5f ), 0.001f, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliVisualTextVisualDisableEnable(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualTextVisualDisableEnable Ensure Text visible can be re-enabled" ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT ); + propertyMap.Insert( "mixColor", Color::WHITE ); + propertyMap.Insert( "renderingBackend", static_cast( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) ); + propertyMap.Insert( "enableMarkup", false ); + propertyMap.Insert( "text", "Hello world" ); + propertyMap.Insert( "fontFamily", "TizenSans" ); + + Property::Map fontStyleMapSet; + fontStyleMapSet.Insert( "weight", "bold" ); + propertyMap.Insert( "fontStyle", fontStyleMapSet ); + + propertyMap.Insert( "pointSize", 12.f ); + propertyMap.Insert( "multiLine", true ); + propertyMap.Insert( "horizontalAlignment", "CENTER" ); + propertyMap.Insert( "verticalAlignment", "CENTER" ); + propertyMap.Insert( "textColor", Color::RED ); + Visual::Base textVisual = factory.CreateVisual( propertyMap ); + textVisual.SetDepthIndex( 1.f ); + + DummyControl dummyControl = DummyControl::New(true); + Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual ); + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION ); + + dummyControl.SetSize(200.f, 200.f); + dummyControl.SetParentOrigin( ParentOrigin::CENTER ); + + Stage::GetCurrent().Add( dummyControl ); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION ); + + dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, false ); + + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION ); + + dummyImpl.EnableVisual( DummyControl::Property::TEST_VISUAL, true ); + + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION ); END_TEST; }