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=f17f1209c83e50de7629e93857a9e86510f50cbe;hp=ab45fc08574aa0ae71cd763efc6508c67b097a53;hb=b86fa7f2bedebe580b0e9a20f9b42cf2d628fafa;hpb=4c75bf7cad5d505c34f9bcb247b5fa9806115349 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp index ab45fc0..f17f120 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) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2020 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. @@ -18,12 +18,17 @@ #include #include +#include #include +#include #include +#include #include #include +#include #include #include +#include #include #include #include @@ -43,6 +48,7 @@ const char* TEST_NPATCH_FILE_NAME = TEST_RESOURCE_DIR "/button-up.9.png"; const char* TEST_SVG_FILE_NAME = TEST_RESOURCE_DIR "/svg1.svg"; const char* TEST_OBJ_FILE_NAME = TEST_RESOURCE_DIR "/Cube.obj"; const char* TEST_MTL_FILE_NAME = TEST_RESOURCE_DIR "/ToyRobot-Metal.mtl"; +const char* TEST_VECTOR_IMAGE_FILE_NAME = TEST_RESOURCE_DIR "/insta_camera.json"; const char* TEST_RESOURCE_LOCATION = TEST_RESOURCE_DIR "/"; @@ -135,20 +141,6 @@ 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) @@ -255,8 +247,8 @@ int UtcDaliVisualSetGetDepthIndex(void) Impl::DummyControl& dummyImpl = static_cast(dummyControl.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - dummyControl.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( dummyControl ); + dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( dummyControl ); int depthIndex = dummyControl.GetRendererAt(0u).GetProperty( Renderer::Property::DEPTH_INDEX ); @@ -274,7 +266,7 @@ int UtcDaliVisualSetGetDepthIndex(void) int UtcDaliVisualSize(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliVisualGetNaturalSize" ); + tet_infoline( "UtcDaliVisualSize" ); VisualFactory factory = VisualFactory::Get(); Vector2 controlSize( 20.f, 30.f ); @@ -292,9 +284,12 @@ 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 ); + map.Clear(); + map[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE; + map[Toolkit::ImageVisual::Property::URL] = TEST_IMAGE_FILE_NAME; + map[Toolkit::ImageVisual::Property::DESIRED_WIDTH] = 100.0f; + map[Toolkit::ImageVisual::Property::DESIRED_HEIGHT] = 200.0f; + Visual::Base imageVisual = factory.CreateVisual( map ); imageVisual.SetTransformAndSize(DefaultTransform(), controlSize ); imageVisual.GetNaturalSize(naturalSize); @@ -343,7 +338,6 @@ int UtcDaliVisualSize(void) // svg visual Visual::Base svgVisual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() ); - svgVisual.SetTransformAndSize(DefaultTransform(), controlSize ); svgVisual.GetNaturalSize(naturalSize); // TEST_SVG_FILE: // @@ -368,18 +362,29 @@ int UtcDaliVisualSize(void) fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" ); + // Create a TextVisual with a font size of 12 first propertyMap.Clear(); propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::TEXT ); propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true ); propertyMap.Insert( TextVisual::Property::TEXT, "Hello world" ); propertyMap.Insert( TextVisual::Property::MULTI_LINE, true ); - Visual::Base textVisual = factory.CreateVisual( propertyMap ); - textVisual.GetNaturalSize( naturalSize ); - DALI_TEST_EQUALS( naturalSize, Size( 80.f, 20.f ), TEST_LOCATION ); + Visual::Base smallTextVisual = factory.CreateVisual( propertyMap ); + Vector2 smallTextVisualNaturalSize; + smallTextVisual.GetNaturalSize( smallTextVisualNaturalSize ); - const float height = textVisual.GetHeightForWidth( 40.f ); - DALI_TEST_EQUALS( height, 40.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); + // Then create a TextVisual with a font size of 20 + propertyMap[ TextVisual::Property::TEXT ] = "Hello world"; + Visual::Base largeTextVisual = factory.CreateVisual( propertyMap ); + Vector2 largeTextVisualNaturalSize; + largeTextVisual.GetNaturalSize( largeTextVisualNaturalSize ); + + // Compare the sizes of the two text visuals, the second one should be bigger as it has a larger point size in the markup. + DALI_TEST_CHECK( smallTextVisualNaturalSize.width < largeTextVisualNaturalSize.width && + smallTextVisualNaturalSize.height < largeTextVisualNaturalSize.height ); + + // The height returned for a particular width should also be greater for the large text visual + DALI_TEST_CHECK( smallTextVisual.GetHeightForWidth( 40.f ) < largeTextVisual.GetHeightForWidth( 40.f ) ); //AnimatedImageVisual Visual::Base animatedImageVisual = factory.CreateVisual( TEST_GIF_FILE_NAME, ImageDimensions() ); @@ -392,10 +397,10 @@ int UtcDaliVisualSize(void) END_TEST; } -int UtcDaliVisualSetOnOffStage(void) +int UtcDaliVisualSetOnOffScene(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliVisualSetDepthIndex" ); + tet_infoline( "UtcDaliVisualSetOnOffScene" ); VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; @@ -407,19 +412,77 @@ int UtcDaliVisualSetOnOffStage(void) Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); - actor.SetSize(200.f, 200.f); + actor.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); application.SendNotification(); 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); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + + END_TEST; +} + +int UtcDaliVisualSetOnOffScene2(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualSetOnOffScene2" ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::SVG ); + propertyMap.Insert( ImageVisual::Property::URL, TEST_SVG_FILE_NAME ); + 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.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + + application.SendNotification(); + application.Render(0); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + + // First on/off + application.GetScene().Add( actor ); + + application.SendNotification(); + application.Render(0); + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + Renderer renderer = actor.GetRendererAt( 0 ); + auto textures = renderer.GetTextures(); + DALI_TEST_CHECK( textures.GetTextureCount() != 0u ); + + application.GetScene().Remove( actor ); + + application.SendNotification(); + application.Render(0); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + + // Second on/off + application.GetScene().Add( actor ); + + application.SendNotification(); + application.Render(0); + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + renderer = actor.GetRendererAt( 0 ); + textures = renderer.GetTextures(); + DALI_TEST_CHECK( textures.GetTextureCount() != 0u ); + + application.GetScene().Remove( actor ); application.SendNotification(); application.Render(0); @@ -437,6 +500,9 @@ int UtcDaliVisualGetPropertyMap1(void) 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 ); Property::Map resultMap; @@ -450,6 +516,18 @@ int UtcDaliVisualGetPropertyMap1(void) DALI_TEST_CHECK( colorValue ); DALI_TEST_CHECK( colorValue->Get() == Color::BLUE ); + Property::Value* cornerRadiusValue = resultMap.Find( DevelVisual::Property::CORNER_RADIUS, Property::FLOAT ); + 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 ); + // change the blend color propertyMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN; colorVisual = factory.CreateVisual( propertyMap ); @@ -459,6 +537,16 @@ int UtcDaliVisualGetPropertyMap1(void) DALI_TEST_CHECK( colorValue ); DALI_TEST_CHECK( colorValue->Get() == Color::CYAN ); + // Test wrong values + propertyMap[DevelColorVisual::Property::BLUR_RADIUS] = "3.0f"; + + colorVisual = factory.CreateVisual( propertyMap ); + colorVisual.CreatePropertyMap( resultMap ); + + blurRadiusValue = resultMap.Find( DevelColorVisual::Property::BLUR_RADIUS, Property::FLOAT ); + DALI_TEST_CHECK( blurRadiusValue ); + DALI_TEST_CHECK( blurRadiusValue->Get< float >() == 0.0f ); + END_TEST; } @@ -535,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 ); @@ -751,52 +839,6 @@ int UtcDaliVisualGetPropertyMap5(void) DALI_TEST_CHECK( value ); 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 ); - - value = resultMap.Find( Toolkit::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::FITTING_MODE, Property::INTEGER ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == FittingMode::SHRINK_TO_FIT ); - - value = resultMap.Find( ImageVisual::Property::SAMPLING_MODE, Property::INTEGER ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == SamplingMode::BOX ); - - value = resultMap.Find( ImageVisual::Property::DESIRED_WIDTH, Property::INTEGER ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == 100 ); - - value = resultMap.Find( ImageVisual::Property::DESIRED_HEIGHT, Property::INTEGER ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == 200 ); - - value = resultMap.Find( ImageVisual::Property::PIXEL_AREA, Property::VECTOR4 ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( value->Get(), Vector4( 0.f, 0.f, 1.f, 1.f ), Math::MACHINE_EPSILON_100, TEST_LOCATION ); - - value = resultMap.Find( ImageVisual::Property::WRAP_MODE_U, Property::INTEGER ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == WrapMode::DEFAULT); - - value = resultMap.Find( ImageVisual::Property::WRAP_MODE_V, Property::INTEGER ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == WrapMode::DEFAULT); - - value = resultMap.Find( "synchronousLoading", Property::BOOLEAN ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( value->Get() == false ); - END_TEST; } @@ -1103,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" ); @@ -1122,11 +1164,14 @@ int UtcDaliVisualGetPropertyMap10(void) propertyMap.Insert( "shadow", shadowMapSet.Add("color", Color::RED).Add("offset", Vector2(2.0f, 2.0f)).Add("blurRadius", 3.0f) ); Property::Map underlineMapSet; - propertyMap.Insert( "underline", underlineMapSet.Add("enable", "true").Add("color", "green").Add("height", "1") ); + propertyMap.Insert( "underline", underlineMapSet.Add("enable", true).Add("color", Color::GREEN).Add("height", 1) ); Property::Map outlineMapSet; propertyMap.Insert( "outline", outlineMapSet.Add("color", Color::YELLOW).Add("width", 1) ); + Property::Map backgroundMapSet; + propertyMap.Insert( "textBackground", backgroundMapSet.Add("enable", true).Add("color", Color::CYAN) ); + Visual::Base textVisual = factory.CreateVisual( propertyMap ); Property::Map resultMap; @@ -1201,6 +1246,13 @@ int UtcDaliVisualGetPropertyMap10(void) DALI_TEST_EQUALS( outlineMapGet.Count(), outlineMapSet.Count(), TEST_LOCATION ); DALI_TEST_EQUALS( DaliTestCheckMaps( outlineMapGet, outlineMapSet ), true, TEST_LOCATION ); + value = resultMap.Find( DevelTextVisual::Property::BACKGROUND, Property::MAP ); + DALI_TEST_CHECK( value ); + + Property::Map backgroundMapGet = value->Get(); + DALI_TEST_EQUALS( backgroundMapGet.Count(), backgroundMapSet.Count(), TEST_LOCATION ); + DALI_TEST_EQUALS( DaliTestCheckMaps( backgroundMapGet, backgroundMapSet ), true, TEST_LOCATION ); + END_TEST; } @@ -1704,7 +1756,7 @@ int UtcDaliVisualAnimateBorderVisual01(void) Property::Map map; map["target"] = "testVisual"; map["property"] = "mixColor"; - map["targetValue"] = Vector4(1,1,1,0); + map["targetValue"] = Vector4(1,1,1,0.1); map["animator"] = Property::Map() .Add("alphaFunction", "LINEAR") .Add("timePeriod", Property::Map() @@ -1716,15 +1768,15 @@ int UtcDaliVisualAnimateBorderVisual01(void) 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); + actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); + actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); + 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 ); @@ -1743,10 +1795,13 @@ int UtcDaliVisualAnimateBorderVisual01(void) DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("borderColor", testColor ), true, TEST_LOCATION ); color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex ); - testColor = Vector4( 1,1,1,0.4f ); + testColor = Vector4( 1,1,1,0.45f ); 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 ); + + Vector4 uColor; + DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", uColor ) ); + DALI_TEST_EQUALS( uColor.a, testColor.a, TEST_LOCATION ); application.Render(2000u); @@ -1754,11 +1809,13 @@ int UtcDaliVisualAnimateBorderVisual01(void) DALI_TEST_EQUALS( color, Color::WHITE, TEST_LOCATION ); DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("borderColor", Color::WHITE ), true, TEST_LOCATION ); - color = renderer.GetCurrentProperty< Vector4 >( mixColorIndex ); - testColor = Vector4(1,1,1,0); - DALI_TEST_EQUALS( color, testColor, TEST_LOCATION ); + color = renderer.GetCurrentProperty< Vector3 >( mixColorIndex ); + testColor = Vector4(1,1,1,0.1); + DALI_TEST_EQUALS( Vector3(color), Vector3(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 ); + + DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", uColor ) ); + DALI_TEST_EQUALS( uColor.a, testColor.a, TEST_LOCATION ); END_TEST; } @@ -1779,14 +1836,14 @@ int UtcDaliVisualAnimateBorderVisual02(void) 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); + actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); + actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); + 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 ); @@ -1823,14 +1880,14 @@ int UtcDaliVisualAnimateColorVisual(void) 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); + actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); + actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); + 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 ); @@ -1878,15 +1935,15 @@ int UtcDaliVisualAnimatePrimitiveVisual(void) 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); + 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); + 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 ); @@ -1919,19 +1976,16 @@ int UtcDaliVisualAnimatePrimitiveVisual(void) 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("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_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( actor.GetCurrentProperty< Vector4 >( Actor::Property::COLOR ), Color::WHITE, TEST_LOCATION ); + 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 ); - 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 ); @@ -1956,10 +2010,10 @@ int UtcDaliVisualAnimatedGradientVisual01(void) 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); + 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); + application.GetScene().Add(actor); application.SendNotification(); application.Render(0); @@ -2127,10 +2181,10 @@ int UtcDaliVisualAnimatedGradientVisual02(void) 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); + 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); + application.GetScene().Add(actor); application.SendNotification(); application.Render( 0 ); @@ -2401,10 +2455,10 @@ int UtcDaliVisualAnimatedGradientVisual03(void) 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); + 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); + application.GetScene().Add(actor); application.SendNotification(); application.Render( 0 ); @@ -2623,6 +2677,11 @@ int UtcDaliVisualGetTransform(void) DALI_TEST_CHECK( typeValue ); DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get() == Toolkit::Align::TOP_BEGIN ); } + { + Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::EXTRA_SIZE ); + DALI_TEST_CHECK( typeValue ); + DALI_TEST_CHECK( typeValue->Get() == Vector2(0.0f,0.0f) ); + } END_TEST; } @@ -2635,6 +2694,7 @@ static void TestTransform( ToolkitTestApplication& application, Visual::Base vis transform.Insert( Visual::Transform::Property::OFFSET_POLICY, Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) ); transform.Insert( Visual::Transform::Property::ORIGIN, "CENTER" ); transform.Insert( Visual::Transform::Property::ANCHOR_POINT, Toolkit::Align::BOTTOM_END ); + transform.Insert( DevelVisual::Transform::Property::EXTRA_SIZE, Vector2(50.0f, 50.0f) ); visual.SetTransformAndSize( transform, Vector2(100, 100) ); @@ -2674,13 +2734,18 @@ static void TestTransform( ToolkitTestApplication& application, Visual::Base vis DALI_TEST_CHECK( typeValue ); DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get(), Toolkit::Align::BOTTOM_END, TEST_LOCATION ); } + { + Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::EXTRA_SIZE ); + DALI_TEST_CHECK( typeValue ); + DALI_TEST_EQUALS( typeValue->Get(),Vector2(50.0f,50.0f), TEST_LOCATION ); + } //Put the visual on the stage DummyControl actor = DummyControl::New(true); Impl::DummyControl& dummyImpl = static_cast(actor.GetImplementation()); - actor.SetSize(2000, 2000); - actor.SetParentOrigin(ParentOrigin::CENTER); - Stage::GetCurrent().Add(actor); + actor.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); + actor.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); + application.GetScene().Add(actor); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); dummyImpl.SetLayout( DummyControl::Property::TEST_VISUAL, transform ); @@ -2715,12 +2780,18 @@ static void TestTransform( ToolkitTestApplication& application, Visual::Base vis Vector2 anchorPoint = renderer.GetProperty( index ); DALI_TEST_EQUALS( anchorPoint, Vector2(-0.5f,-0.5f), TEST_LOCATION ); + index = renderer.GetPropertyIndex( "extraSize" ); + DALI_TEST_CHECK( index != Property::INVALID_INDEX ); + Vector2 extraSize = renderer.GetProperty( index ); + DALI_TEST_EQUALS( extraSize, Vector2(50.0f,50.0f), TEST_LOCATION ); + //Set a new transform transform.Clear(); transform = DefaultTransform(); transform.Insert( Visual::Transform::Property::OFFSET, Vector2(20.0f, 20.0f) ); transform.Insert( Visual::Transform::Property::SIZE, Vector2(100.0f, 100.0f) ); transform.Insert( Visual::Transform::Property::SIZE_POLICY, Vector2( Toolkit::Visual::Transform::Policy::ABSOLUTE, Toolkit::Visual::Transform::Policy::ABSOLUTE ) ); + transform.Insert( DevelVisual::Transform::Property::EXTRA_SIZE, Vector2(0.5f, 0.5f) ); visual.SetTransformAndSize( transform, Vector2(100, 100) ); application.SendNotification(); application.Render(0); @@ -2741,6 +2812,26 @@ static void TestTransform( ToolkitTestApplication& application, Visual::Base vis anchorPoint = renderer.GetProperty( renderer.GetPropertyIndex( "anchorPoint" ) ); DALI_TEST_EQUALS( anchorPoint, Vector2(0.5f,0.5f), TEST_LOCATION ); + + extraSize = renderer.GetProperty( renderer.GetPropertyIndex( "extraSize" ) ); + 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) @@ -2855,20 +2946,6 @@ int UtcDaliVisualSetTransform4(void) int UtcDaliVisualSetTransform5(void) { ToolkitTestApplication application; - tet_infoline( "UtcDaliVisualSetTransform: ImageVisual from Image" ); - - VisualFactory factory = VisualFactory::Get(); - Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200)); - Visual::Base visual = factory.CreateVisual(image); - TestTransform( application, visual ); - TestMixColor( visual, Visual::Property::MIX_COLOR, Color::WHITE ); - - END_TEST; -} - -int UtcDaliVisualSetTransform6(void) -{ - ToolkitTestApplication application; tet_infoline( "UtcDaliVisualSetTransform: ImageVisual for URL " ); VisualFactory factory = VisualFactory::Get(); @@ -2888,14 +2965,17 @@ int UtcDaliVisualSetTransform6(void) END_TEST; } -int UtcDaliVisualSetTransform7(void) +int UtcDaliVisualSetTransform6(void) { ToolkitTestApplication application; tet_infoline( "UtcDaliVisualSetTransform: NPatch visual" ); VisualFactory factory = VisualFactory::Get(); - Image image = ResourceImage::New(TEST_NPATCH_FILE_NAME, ImageDimensions(100, 200)); - Visual::Base visual = factory.CreateVisual(image); + Property::Map propertyMap; + propertyMap[Toolkit::Visual::Property::TYPE] = Toolkit::Visual::IMAGE; + propertyMap[Toolkit::ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME; + propertyMap[Toolkit::ImageVisual::Property::SYNCHRONOUS_LOADING] = true; + Visual::Base visual = factory.CreateVisual(propertyMap); TestTransform( application, visual ); TestMixColor( visual, Visual::Property::MIX_COLOR, Color::WHITE ); @@ -2959,12 +3039,14 @@ int UtcDaliNPatchVisualCustomShader(void) transformMap["offsetPolicy"] = Vector2( Visual::Transform::Policy::ABSOLUTE, Visual::Transform::Policy::ABSOLUTE ); transformMap["anchorPoint"] = Align::CENTER; transformMap["origin"] = Align::CENTER; + transformMap["extraSize"] = Vector2( 0.0f, 50.0f ); properties[Visual::Property::TRANSFORM] = transformMap; properties[Visual::Property::TYPE] = Visual::IMAGE; properties[Visual::Property::MIX_COLOR] = Color::BLUE; properties[Visual::Property::SHADER]=shader; properties[ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME; + properties[ImageVisual::Property::SYNCHRONOUS_LOADING] = true; Visual::Base visual = factory.CreateVisual( properties ); TestMixColor( visual, Visual::Property::MIX_COLOR, Color::BLUE ); @@ -2974,9 +3056,9 @@ int UtcDaliNPatchVisualCustomShader(void) 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); + dummy.SetProperty( Actor::Property::SIZE, Vector2( 2000.f, 2000.f ) ); + dummy.SetProperty( Actor::Property::PARENT_ORIGIN,ParentOrigin::CENTER); + application.GetScene().Add(dummy); application.SendNotification(); Renderer renderer = dummy.GetRendererAt( 0 ); @@ -2994,6 +3076,9 @@ int UtcDaliNPatchVisualCustomShader(void) Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp DALI_TEST_EQUALS( vertexShader, vertex->Get(), TEST_LOCATION ); + Vector2 extraSize = renderer.GetProperty( renderer.GetPropertyIndex( "extraSize" ) ); + DALI_TEST_EQUALS( extraSize, Vector2(0.0f, 50.0f), TEST_LOCATION ); + END_TEST; } @@ -3018,7 +3103,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 ); @@ -3053,10 +3138,10 @@ int UtcDaliVisualRendererRemovalAndReAddition(void) dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION ); - dummyControl.SetSize(200.f, 200.f); + 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(); @@ -3064,7 +3149,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(); @@ -3072,7 +3157,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(); @@ -3093,7 +3178,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" ); @@ -3115,10 +3200,10 @@ int UtcDaliVisualTextVisualRender(void) 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 ); + 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(); @@ -3138,7 +3223,7 @@ int UtcDaliVisualTextVisualRender(void) textVisual.SetDepthIndex( 1 ); dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, textVisual ); - dummyControl.SetSize( 720.f, 640.f ); + dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 720.f, 640.f ) ); application.SendNotification(); // force process events to ensure text visual // adds renderer to the dummy control in OnRelayout @@ -3162,7 +3247,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" ); @@ -3184,10 +3269,10 @@ int UtcDaliVisualTextVisualDisableEnable(void) 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 ); + 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(); @@ -3211,7 +3296,7 @@ int UtcDaliVisualPremultipliedAlpha(void) VisualFactory factory = VisualFactory::Get(); - // image visual, test default value ( false ) + // image visual, test default value ( true ) { Visual::Base imageVisual = factory.CreateVisual( Property::Map() @@ -3224,7 +3309,7 @@ int UtcDaliVisualPremultipliedAlpha(void) // test values DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( value->Get(), false, TEST_LOCATION ); + DALI_TEST_EQUALS( value->Get(), true, TEST_LOCATION ); } // image visual, override premultiplied @@ -3233,7 +3318,7 @@ int UtcDaliVisualPremultipliedAlpha(void) Property::Map() .Add( Toolkit::Visual::Property::TYPE, Visual::IMAGE ) .Add( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ) - .Add( Visual::Property::PREMULTIPLIED_ALPHA, true ) ); + .Add( Visual::Property::PREMULTIPLIED_ALPHA, false ) ); Dali::Property::Map visualMap; imageVisual.CreatePropertyMap( visualMap ); @@ -3241,7 +3326,7 @@ int UtcDaliVisualPremultipliedAlpha(void) // test values DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( value->Get(), true, TEST_LOCATION); + DALI_TEST_EQUALS( value->Get(), false, TEST_LOCATION); } // svg visual ( premultiplied alpha by default is true ) @@ -3314,8 +3399,8 @@ int UtcDaliRegisterVisualOrder(void) dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, anotherTestVisual2Replacement ); DALI_TEST_EQUALS( anotherTestVisual2Replacement.GetDepthIndex(), 2000, TEST_LOCATION ); - dummyControl.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( dummyControl ); + dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( dummyControl ); END_TEST; } @@ -3350,8 +3435,8 @@ int UtcDaliRegisterVisualOrder02(void) dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL2, testVisual2 ); DALI_TEST_CHECK( testVisual2.GetDepthIndex() > testVisual1.GetDepthIndex() ); - dummyControl.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( dummyControl ); + dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( dummyControl ); END_TEST; } @@ -3387,8 +3472,459 @@ int UtcDaliRegisterVisualWithDepthIndex(void) DALI_TEST_EQUALS( testVisual3.GetDepthIndex(), 300, TEST_LOCATION ); DALI_TEST_EQUALS( DevelControl::IsVisualEnabled( dummyImpl, DummyControl::Property::TEST_VISUAL2 ), true, TEST_LOCATION ); - dummyControl.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( dummyControl ); + dummyControl.SetProperty( Actor::Property::SIZE, Vector2( 200.f, 200.f ) ); + application.GetScene().Add( dummyControl ); + + END_TEST; +} + +int UtcDaliColorVisualRenderIfTransparentProperty(void) +{ + ToolkitTestApplication application; + tet_infoline( "Test the renderIfTransparent property of ColorVisual" ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert( Visual::Property::TYPE, Visual::COLOR ); + propertyMap.Insert( ColorVisual::Property::MIX_COLOR, Color::BLUE ); + + tet_infoline( "Check default value" ); + { + Visual::Base testVisual = factory.CreateVisual( propertyMap ); + Property::Map returnedMap; + testVisual.CreatePropertyMap( returnedMap ); + + Property::Value* renderIfTransparentProperty = returnedMap.Find( DevelColorVisual::Property::RENDER_IF_TRANSPARENT ); + DALI_TEST_CHECK( renderIfTransparentProperty ); + DALI_TEST_EQUALS( renderIfTransparentProperty->Get< bool >(), false, TEST_LOCATION ); + } + + propertyMap.Insert( DevelColorVisual::Property::RENDER_IF_TRANSPARENT, true ); + + tet_infoline( "Ensure set to value required" ); + { + Visual::Base testVisual = factory.CreateVisual( propertyMap ); + Property::Map returnedMap; + testVisual.CreatePropertyMap( returnedMap ); + + Property::Value* renderIfTransparentProperty = returnedMap.Find( DevelColorVisual::Property::RENDER_IF_TRANSPARENT ); + DALI_TEST_CHECK( renderIfTransparentProperty ); + DALI_TEST_EQUALS( renderIfTransparentProperty->Get< bool >(), true, TEST_LOCATION ); + } + + propertyMap[ DevelColorVisual::Property::RENDER_IF_TRANSPARENT ] = Color::BLUE; + + tet_infoline( "Ensure it returns default value if set to wrong type" ); + { + Visual::Base testVisual = factory.CreateVisual( propertyMap ); + Property::Map returnedMap; + testVisual.CreatePropertyMap( returnedMap ); + + Property::Value* renderIfTransparentProperty = returnedMap.Find( DevelColorVisual::Property::RENDER_IF_TRANSPARENT ); + DALI_TEST_CHECK( renderIfTransparentProperty ); + DALI_TEST_EQUALS( renderIfTransparentProperty->Get< bool >(), false, TEST_LOCATION ); + } + + END_TEST; +} + +int UtcDaliSvgVisualCustomShader(void) +{ + ToolkitTestApplication application; + tet_infoline( "SvgVisual with custom shader" ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map properties; + Property::Map shader; + const std::string vertexShader = "Foobar"; + const std::string fragmentShader = "Foobar"; + shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader; + shader[Dali::Toolkit::Visual::Shader::Property::VERTEX_SHADER] = vertexShader; + + properties[Visual::Property::TYPE] = Visual::IMAGE; + properties[Visual::Property::SHADER] = shader; + properties[ImageVisual::Property::URL] = TEST_SVG_FILE_NAME; + + 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 ); + + Renderer renderer = dummy.GetRendererAt( 0 ); + Shader shader2 = renderer.GetShader(); + Property::Value value = shader2.GetProperty( Shader::Property::PROGRAM ); + Property::Map* map = value.GetMap(); + DALI_TEST_CHECK( map ); + + Property::Value* fragment = map->Find( "fragment" ); // fragment key name from shader-impl.cpp + DALI_TEST_EQUALS( fragmentShader, fragment->Get< std::string >(), TEST_LOCATION ); + + Property::Value* vertex = map->Find( "vertex" ); // vertex key name from shader-impl.cpp + DALI_TEST_EQUALS( vertexShader, vertex->Get< std::string >(), TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliVisualRoundedCorner(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualRoundedCorner" ); + + // image visual + { + VisualFactory factory = VisualFactory::Get(); + Property::Map properties; + float cornerRadius = 30.0f; + + properties[Visual::Property::TYPE] = Visual::IMAGE; + properties[ImageVisual::Property::URL] = TEST_IMAGE_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 ); + } + + // color visual 1 + { + 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["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 ); + + // 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 ); + // Default corner radius policy is absolute. + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadiusPolicy", Toolkit::Visual::Transform::Policy::ABSOLUTE ), true, TEST_LOCATION ); + } + + // gradient visual + { + VisualFactory factory = VisualFactory::Get(); + Property::Map properties; + float cornerRadius = 30.0f; + + properties[Visual::Property::TYPE] = Visual::GRADIENT; + properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE; + properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius; + properties[GradientVisual::Property::START_POSITION] = Vector2( 0.5f, 0.5f ); + properties[GradientVisual::Property::END_POSITION] = Vector2( -0.5f, -0.5f ); + properties[GradientVisual::Property::UNITS] = GradientVisual::Units::USER_SPACE; + + Property::Array stopOffsets; + stopOffsets.PushBack( 0.0f ); + stopOffsets.PushBack( 0.6f ); + stopOffsets.PushBack( 1.0f ); + properties[GradientVisual::Property::STOP_OFFSET] = stopOffsets; + + Property::Array stopColors; + stopColors.PushBack( Color::RED ); + stopColors.PushBack( Color::YELLOW ); + stopColors.PushBack( Color::GREEN ); + properties[GradientVisual::Property::STOP_COLOR] = stopColors; + + 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 ); + } + + END_TEST; +} + +int UtcDaliColorVisualBlurRadius(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliColorVisualBlurRadius" ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map properties; + float blurRadius = 20.0f; + + properties[Visual::Property::TYPE] = Visual::COLOR; + properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE; + properties["blurRadius"] = blurRadius; + + 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 >( "blurRadius", blurRadius ), true, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliVisualGetType(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualGetType" ); + + VisualFactory factory = VisualFactory::Get(); + + { + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::BORDER; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == Visual::BORDER ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::COLOR; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == Visual::COLOR ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::GRADIENT; + properties[GradientVisual::Property::START_POSITION] = Vector2( -1.f, -1.f ); + properties[GradientVisual::Property::END_POSITION] = Vector2( 1.f, 1.f ); + properties[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 ); + properties[GradientVisual::Property::STOP_COLOR] = stopColors; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == Visual::GRADIENT ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::IMAGE; + properties.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == Visual::IMAGE ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::MESH; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == Visual::MESH ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::PRIMITIVE; + properties[PrimitiveVisual::Property::SHAPE] = PrimitiveVisual::Shape::CUBE; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == Visual::PRIMITIVE ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::WIREFRAME; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == Visual::WIREFRAME ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::TEXT; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == Visual::TEXT ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::N_PATCH; + properties[ImageVisual::Property::URL] = TEST_NPATCH_FILE_NAME; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == Visual::N_PATCH ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::SVG; + properties[ImageVisual::Property::URL] = TEST_SVG_FILE_NAME; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == Visual::SVG ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = Visual::ANIMATED_IMAGE; + properties[ImageVisual::Property::URL] = TEST_GIF_FILE_NAME; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == Visual::ANIMATED_IMAGE ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = DevelVisual::ANIMATED_GRADIENT; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == static_cast( DevelVisual::ANIMATED_GRADIENT ) ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = DevelVisual::ANIMATED_VECTOR_IMAGE; + properties[ImageVisual::Property::URL] = TEST_VECTOR_IMAGE_FILE_NAME; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == static_cast( DevelVisual::ANIMATED_VECTOR_IMAGE ) ); + } + + { + Property::Map properties; + properties[Visual::Property::TYPE] = DevelVisual::ARC; + Visual::Base visual = factory.CreateVisual( properties ); + + DALI_TEST_CHECK( visual.GetType() == static_cast( DevelVisual::ARC ) ); + } END_TEST; }