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=82d6d58f6a9fc1e11b8ef0a9150bd6535b912fab;hp=4959ed91f84233dfaf6197c85f4f567aa99fb5d7;hb=ce4bae9bcaabc3b38d016e7ef36cc55357087bc0;hpb=16a4ae532b2d38157fa31a2fe21d29bfb4c7be75 diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp index 4959ed9..82d6d58 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp @@ -22,8 +22,10 @@ #include #include #include +#include #include -#include +#include +#include #include #include #include "dummy-control.h" @@ -42,6 +44,18 @@ const char* TEST_RESOURCE_LOCATION = TEST_RESOURCE_DIR "/"; const std::string DEFAULT_FONT_DIR( "/resources/fonts" ); +Property::Map DefaultTransform() +{ + Property::Map transformMap; + transformMap + .Add( Toolkit::DevelVisual::Transform::Property::OFFSET, Vector2(0.0f, 0.0f) ) + .Add( Toolkit::DevelVisual::Transform::Property::SIZE, Vector2(1.0f, 1.0f) ) + .Add( Toolkit::DevelVisual::Transform::Property::ORIGIN, Toolkit::Align::CENTER ) + .Add( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT, Toolkit::Align::CENTER ) + .Add( Toolkit::DevelVisual::Transform::Property::OFFSET_SIZE_MODE, Vector4::ZERO ); + return transformMap; +} + bool DaliTestCheckMaps( const Property::Map& fontStyleMapGet, const Property::Map& fontStyleMapSet ) { if( fontStyleMapGet.Count() == fontStyleMapSet.Count() ) @@ -147,17 +161,20 @@ int UtcDaliVisualSetGetDepthIndex(void) visual.SetDepthIndex( 1.f ); - Actor actor = Actor::New(); - actor.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( actor ); - visual.SetOnStage( actor ); + DummyControl dummyControl = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + + dummyControl.SetSize(200.f, 200.f); + Stage::GetCurrent().Add( dummyControl ); - int depthIndex = actor.GetRendererAt(0u).GetProperty( Renderer::Property::DEPTH_INDEX ); + + int depthIndex = dummyControl.GetRendererAt(0u).GetProperty( Renderer::Property::DEPTH_INDEX ); DALI_TEST_EQUALS( depthIndex, 1, TEST_LOCATION ); DALI_TEST_EQUALS( visual.GetDepthIndex(), 1.f, TEST_LOCATION ); visual.SetDepthIndex( -1.f ); - depthIndex = actor.GetRendererAt(0u).GetProperty( Renderer::Property::DEPTH_INDEX ); + depthIndex = dummyControl.GetRendererAt(0u).GetProperty( Renderer::Property::DEPTH_INDEX ); DALI_TEST_EQUALS( depthIndex, -1, TEST_LOCATION ); DALI_TEST_EQUALS( visual.GetDepthIndex(), -1.f, TEST_LOCATION ); @@ -170,37 +187,29 @@ int UtcDaliVisualSize(void) tet_infoline( "UtcDaliVisualGetNaturalSize" ); VisualFactory factory = VisualFactory::Get(); - Vector2 visualSize( 20.f, 30.f ); + Vector2 controlSize( 20.f, 30.f ); Vector2 naturalSize; // color colorVisual Dali::Property::Map map; map[ Visual::Property::TYPE ] = Visual::COLOR; map[ ColorVisual::Property::MIX_COLOR ] = Color::MAGENTA; + Visual::Base colorVisual = factory.CreateVisual( map ); - colorVisual.SetSize( visualSize ); - DALI_TEST_EQUALS( colorVisual.GetSize(), visualSize, TEST_LOCATION ); + colorVisual.SetTransformAndSize(DefaultTransform(), controlSize ); + colorVisual.GetNaturalSize(naturalSize); DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION ); // image visual Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200)); Visual::Base imageVisual = factory.CreateVisual( image ); - imageVisual.SetSize( visualSize ); - DALI_TEST_EQUALS( imageVisual.GetSize(), visualSize, TEST_LOCATION ); + imageVisual.SetTransformAndSize(DefaultTransform(), controlSize ); + imageVisual.GetNaturalSize(naturalSize); DALI_TEST_EQUALS( naturalSize, Vector2(100.f, 200.f), TEST_LOCATION ); - // n patch visual - TestPlatformAbstraction& platform = application.GetPlatform(); - Vector2 testSize(80.f, 160.f); - platform.SetClosestImageSize(testSize); - image = ResourceImage::New(TEST_NPATCH_FILE_NAME); - Visual::Base nPatchVisual = factory.CreateVisual( image ); - nPatchVisual.SetSize( visualSize ); - DALI_TEST_EQUALS( nPatchVisual.GetSize(), visualSize, TEST_LOCATION ); - nPatchVisual.GetNaturalSize(naturalSize); - DALI_TEST_EQUALS( naturalSize, testSize, TEST_LOCATION ); + // n patch visual is tested in the utc-Dali-VisualFactory.cpp // border visual float borderSize = 5.f; @@ -209,8 +218,7 @@ int UtcDaliVisualSize(void) map[ BorderVisual::Property::COLOR ] = Color::RED; map[ BorderVisual::Property::SIZE ] = borderSize; Visual::Base borderVisual = factory.CreateVisual( map ); - borderVisual.SetSize( visualSize ); - DALI_TEST_EQUALS( borderVisual.GetSize(), visualSize, TEST_LOCATION ); + borderVisual.SetTransformAndSize(DefaultTransform(), controlSize ); borderVisual.GetNaturalSize(naturalSize); DALI_TEST_EQUALS( naturalSize, Vector2::ZERO, TEST_LOCATION ); @@ -227,15 +235,13 @@ int UtcDaliVisualSize(void) stopColors.PushBack( Color::GREEN ); propertyMap.Insert(GradientVisual::Property::STOP_COLOR, stopColors); Visual::Base gradientVisual = factory.CreateVisual(propertyMap); - gradientVisual.SetSize( visualSize ); - DALI_TEST_EQUALS( gradientVisual.GetSize(), visualSize, TEST_LOCATION ); + gradientVisual.SetTransformAndSize(DefaultTransform(), controlSize ); gradientVisual.GetNaturalSize(naturalSize); DALI_TEST_EQUALS( naturalSize, Vector2::ZERO,TEST_LOCATION ); // svg visual Visual::Base svgVisual = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions() ); - svgVisual.SetSize( visualSize ); - DALI_TEST_EQUALS( svgVisual.GetSize(), visualSize, TEST_LOCATION ); + svgVisual.SetTransformAndSize(DefaultTransform(), controlSize ); svgVisual.GetNaturalSize(naturalSize); // TEST_SVG_FILE: // @@ -245,18 +251,19 @@ int UtcDaliVisualSize(void) // svg visual with a size Visual::Base svgVisual2 = factory.CreateVisual( TEST_SVG_FILE_NAME, ImageDimensions(200, 200) ); - DALI_TEST_EQUALS( svgVisual2.GetSize(), Vector2( 200.f, 200.f ), TEST_LOCATION ); 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.SetSize( visualSize ); - DALI_TEST_EQUALS( batchImageVisual.GetSize(), visualSize, TEST_LOCATION ); + batchImageVisual.SetTransformAndSize(DefaultTransform(), controlSize ); batchImageVisual.GetNaturalSize( naturalSize ); DALI_TEST_EQUALS( naturalSize, Vector2( 80.0f, 160.0f ), TEST_LOCATION ); @@ -273,7 +280,7 @@ int UtcDaliVisualSize(void) fontClient.GetFontId( pathName + DEFAULT_FONT_DIR + "/tizen/TizenSansRegular.ttf" ); propertyMap.Clear(); - propertyMap.Insert( Visual::Property::TYPE, Visual::TEXT ); + propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT ); propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true ); propertyMap.Insert( TextVisual::Property::TEXT, "Hello world" ); propertyMap.Insert( TextVisual::Property::MULTI_LINE, true ); @@ -299,68 +306,32 @@ int UtcDaliVisualSetOnOffStage(void) propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); Visual::Base visual = factory.CreateVisual( propertyMap ); - Actor actor = Actor::New(); - actor.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( actor ); - - application.SendNotification(); - application.Render(0); - DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + DummyControl actor = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); - visual.SetOnStage( actor ); - application.SendNotification(); - application.Render(0); - DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); + actor.SetSize(200.f, 200.f); - visual.SetOffStage( actor ); application.SendNotification(); application.Render(0); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); - END_TEST; -} - -int UtcDaliVisualRemoveAndReset(void) -{ - ToolkitTestApplication application; - tet_infoline( "intUtcDaliVisualRemoveAndReset" ); - - VisualFactory factory = VisualFactory::Get(); - - Actor actor = Actor::New(); - actor.SetSize(200.f, 200.f); Stage::GetCurrent().Add( actor ); - Visual::Base imageVisual; - // test calling RemoveAndReset with an empty handle - try - { - imageVisual.RemoveAndReset( actor ); - tet_result(TET_PASS); - } - catch (DaliException& exception) - { - tet_result(TET_FAIL); - } - - Image image = ResourceImage::New(TEST_IMAGE_FILE_NAME, ImageDimensions(100, 200)); - imageVisual = factory.CreateVisual(image); - DALI_TEST_CHECK( imageVisual ); - - imageVisual.SetOnStage( actor ); application.SendNotification(); application.Render(0); DALI_TEST_CHECK( actor.GetRendererCount() == 1u ); - imageVisual.RemoveAndReset( actor ); + Stage::GetCurrent().Remove( actor ); + application.SendNotification(); application.Render(0); - DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); // visual is removed from actor - DALI_TEST_CHECK( !imageVisual ); // visual is reset + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); END_TEST; } + int UtcDaliVisualGetPropertyMap1(void) { ToolkitTestApplication application; @@ -384,8 +355,6 @@ int UtcDaliVisualGetPropertyMap1(void) DALI_TEST_CHECK( colorValue->Get() == Color::BLUE ); // change the blend color - Actor actor; - colorVisual.RemoveAndReset( actor ); propertyMap[ColorVisual::Property::MIX_COLOR] = Color::CYAN; colorVisual = factory.CreateVisual( propertyMap ); colorVisual.CreatePropertyMap( resultMap ); @@ -394,10 +363,6 @@ int UtcDaliVisualGetPropertyMap1(void) DALI_TEST_CHECK( colorValue ); DALI_TEST_CHECK( colorValue->Get() == Color::CYAN ); - // Test the properties. TODO: to be completed. - colorVisual.SetProperty( ColorVisual::Property::MIX_COLOR, Color::RED ); - Property::Value value = colorVisual.GetProperty( ColorVisual::Property::MIX_COLOR ); - END_TEST; } @@ -448,9 +413,6 @@ int UtcDaliVisualGetPropertyMap2(void) DALI_TEST_CHECK( colorValue ); DALI_TEST_CHECK( colorValue->Get() == 10.f ); - // Test the properties. TODO: to be completed. - borderVisual.SetProperty( BorderVisual::Property::COLOR, Color::RED ); - Property::Value value = borderVisual.GetProperty( BorderVisual::Property::COLOR ); END_TEST; } @@ -519,10 +481,6 @@ int UtcDaliVisualGetPropertyMap3(void) DALI_TEST_EQUALS( colorArray->GetElementAt(0).Get(), Color::RED , Math::MACHINE_EPSILON_100, TEST_LOCATION ); DALI_TEST_EQUALS( colorArray->GetElementAt(1).Get(), Color::GREEN , Math::MACHINE_EPSILON_100, TEST_LOCATION ); - // Test the properties. TODO: to be completed. - gradientVisual.SetProperty( GradientVisual::Property::STOP_COLOR, Color::RED ); - Property::Value gradientValue = gradientVisual.GetProperty( GradientVisual::Property::STOP_COLOR ); - END_TEST; } @@ -707,10 +665,6 @@ int UtcDaliVisualGetPropertyMap5(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == false ); - // Test the properties. TODO: to be completed. - imageVisual.SetProperty( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); - Property::Value imageValue = imageVisual.GetProperty( ImageVisual::Property::URL ); - END_TEST; } @@ -742,9 +696,6 @@ int UtcDaliVisualGetPropertyMap6(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() ); - // Test the properties. TODO: to be completed. - nPatchVisual.SetProperty( ImageVisual::Property::URL, TEST_NPATCH_FILE_NAME ); - Property::Value nPatchValue = nPatchVisual.GetProperty( ImageVisual::Property::URL ); END_TEST; } @@ -785,10 +736,6 @@ int UtcDaliVisualGetPropertyMap7(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == TEST_SVG_FILE_NAME ); - // Test the properties. TODO: to be completed. - svgVisual.SetProperty( ImageVisual::Property::URL, TEST_SVG_FILE_NAME ); - Property::Value svgValue = svgVisual.GetProperty( ImageVisual::Property::URL ); - END_TEST; } @@ -837,11 +784,7 @@ int UtcDaliVisualGetPropertyMap8(void) DALI_TEST_CHECK( value ); DALI_TEST_EQUALS( value->Get(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION ); - // Test the properties. TODO: to be completed. - meshVisual.SetProperty( MeshVisual::Property::OBJECT_URL, TEST_OBJ_FILE_NAME ); - Property::Value meshValue = meshVisual.GetProperty( MeshVisual::Property::OBJECT_URL ); - - END_TEST; + END_TEST; } //Primitive shape visual @@ -928,10 +871,6 @@ int UtcDaliVisualGetPropertyMap9(void) DALI_TEST_CHECK( value ); DALI_TEST_EQUALS( value->Get(), Vector3( 5.0f, 10.0f, 15.0f), Math::MACHINE_EPSILON_100, TEST_LOCATION ); - // Test the properties. TODO: to be completed. - primitiveVisual.SetProperty( PrimitiveVisual::Property::SHAPE, PrimitiveVisual::Shape::CUBE ); - Property::Value primitiveValue = primitiveVisual.GetProperty( PrimitiveVisual::Property::SHAPE ); - END_TEST; } @@ -971,10 +910,6 @@ int UtcDaliVisualGetPropertyMapBatchImageVisual(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == 30 ); - // Test the properties. TODO: to be completed. - batchImageVisual.SetProperty( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); - Property::Value primitiveValue = batchImageVisual.GetProperty( ImageVisual::Property::URL ); - END_TEST; } @@ -988,8 +923,9 @@ int UtcDaliVisualGetPropertyMap10(void) VisualFactory factory = VisualFactory::Get(); Property::Map propertyMap; - propertyMap.Insert( Visual::Property::TYPE, Visual::TEXT ); + propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT ); propertyMap.Insert( "renderingBackend", static_cast( Toolkit::Text::DEFAULT_RENDERING_BACKEND ) ); + propertyMap.Insert( "enableMarkup", false ); propertyMap.Insert( "text", "Hello world" ); propertyMap.Insert( "fontFamily", "TizenSans" ); @@ -1002,10 +938,6 @@ int UtcDaliVisualGetPropertyMap10(void) propertyMap.Insert( "horizontalAlignment", "CENTER" ); propertyMap.Insert( "verticalAlignment", "CENTER" ); propertyMap.Insert( "textColor", Color::RED ); - propertyMap.Insert( "enableMarkup", false ); - propertyMap.Insert( "enableAutoScroll", false ); - propertyMap.Insert( "lineSpacing", 0.f ); - propertyMap.Insert( "batchingEnabled", false ); Visual::Base textVisual = factory.CreateVisual( propertyMap ); Property::Map resultMap; @@ -1014,11 +946,7 @@ int UtcDaliVisualGetPropertyMap10(void) //Check values in the result map are identical to the initial map's values. Property::Value* value = resultMap.Find( Visual::Property::TYPE, Property::INTEGER ); DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( value->Get(), (int)Visual::TEXT, TEST_LOCATION ); - - value = resultMap.Find( TextVisual::Property::RENDERING_BACKEND, Property::INTEGER ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( value->Get(), Toolkit::Text::DEFAULT_RENDERING_BACKEND, TEST_LOCATION ); + DALI_TEST_EQUALS( value->Get(), (int)DevelVisual::TEXT, TEST_LOCATION ); value = resultMap.Find( TextVisual::Property::TEXT, Property::STRING ); DALI_TEST_CHECK( value ); @@ -1059,18 +987,6 @@ int UtcDaliVisualGetPropertyMap10(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( !value->Get() ); - value = resultMap.Find( TextVisual::Property::ENABLE_AUTO_SCROLL, Property::BOOLEAN ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( !value->Get() ); - - value = resultMap.Find( TextVisual::Property::LINE_SPACING, Property::FLOAT ); - DALI_TEST_CHECK( value ); - DALI_TEST_EQUALS( value->Get(), 0.f, Math::MACHINE_EPSILON_1000, TEST_LOCATION ); - - value = resultMap.Find( TextVisual::Property::BATCHING_ENABLED, Property::BOOLEAN ); - DALI_TEST_CHECK( value ); - DALI_TEST_CHECK( !value->Get() ); - END_TEST; } @@ -1094,10 +1010,12 @@ int UtcDaliVisualGetPropertyMapBatchImageVisualNoAtlas(void) DALI_TEST_CHECK( batchImageVisual ); - Actor actor = Actor::New(); - batchImageVisual.SetOnStage( actor ); + 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( actor.GetRendererCount() == 1u ); + DALI_TEST_CHECK( dummyControl.GetRendererCount() == 1u ); END_TEST; } @@ -1114,16 +1032,17 @@ int UtcDaliVisualAnimateBorderVisual01(void) propertyMap.Insert(BorderVisual::Property::SIZE, 5.f); Visual::Base borderVisual = factory.CreateVisual( propertyMap ); - Actor actor = Actor::New(); + 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); Stage::GetCurrent().Add(actor); - borderVisual.SetOnStage( actor ); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index index = renderer.GetPropertyIndex( BorderVisual::Property::COLOR ); + Property::Index index = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::COLOR ); Animation animation = Animation::New(4.0f); animation.AnimateTo( Property(renderer, index), Color::WHITE ); @@ -1160,16 +1079,17 @@ int UtcDaliVisualAnimateBorderVisual02(void) propertyMap.Insert(BorderVisual::Property::SIZE, 5.f); Visual::Base borderVisual = factory.CreateVisual( propertyMap ); - Actor actor = Actor::New(); + 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); Stage::GetCurrent().Add(actor); - borderVisual.SetOnStage( actor ); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index index = renderer.GetPropertyIndex( BorderVisual::Property::SIZE ); + Property::Index index = DevelHandle::GetPropertyIndex( renderer, BorderVisual::Property::SIZE ); Animation animation = Animation::New(4.0f); animation.AnimateTo( Property(renderer, index), 9.0f ); @@ -1203,16 +1123,17 @@ int UtcDaliVisualAnimateColorVisual(void) propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); Visual::Base borderVisual = factory.CreateVisual( propertyMap ); - Actor actor = Actor::New(); + 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); Stage::GetCurrent().Add(actor); - borderVisual.SetOnStage( actor ); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index index = renderer.GetPropertyIndex( ColorVisual::Property::MIX_COLOR ); + Property::Index index = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); Animation animation = Animation::New(4.0f); animation.AnimateTo( Property(renderer, index), Color::WHITE ); @@ -1251,17 +1172,18 @@ int UtcDaliVisualAnimatePrimitiveVisual(void) propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); Visual::Base borderVisual = factory.CreateVisual( propertyMap ); - Actor actor = Actor::New(); + 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); Stage::GetCurrent().Add(actor); - borderVisual.SetOnStage( actor ); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - Property::Index index = renderer.GetPropertyIndex( PrimitiveVisual::Property::MIX_COLOR ); + Property::Index index = DevelHandle::GetPropertyIndex( renderer, PrimitiveVisual::Property::MIX_COLOR ); // The property isn't registered on the renderer, it's instead registered on the shader. DALI_TEST_EQUALS( index, Property::INVALID_INDEX, TEST_LOCATION ); @@ -1307,9 +1229,6 @@ int UtcDaliVisualWireframeVisual(void) DALI_TEST_CHECK( value ); DALI_TEST_CHECK( value->Get() == Visual::WIREFRAME ); - // Test the properties. TODO: to be completed. - Property::Value primitiveValue = visual.GetProperty( Visual::Property::TYPE ); - END_TEST; } @@ -1324,33 +1243,35 @@ int UtcDaliVisualGetTransform(void) propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); Visual::Base colorVisual = factory.CreateVisual( propertyMap ); - Dali::Property::Map map; - Dali::Property::Value transformProperty = colorVisual.GetProperty( Dali::Toolkit::Visual::DevelProperty::TRANSFORM ); - transformProperty.Get(map); + Dali::Property::Map visualMap; + colorVisual.CreatePropertyMap( visualMap ); + Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM ); + Dali::Property::Map* map = value->GetMap(); + DALI_TEST_CHECK( map ); //Test default values { - Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET ); + Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET ); DALI_TEST_CHECK( typeValue ); DALI_TEST_CHECK( typeValue->Get() == Vector2(0.0f,0.0f) ); } { - Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::SIZE ); + Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE ); DALI_TEST_CHECK( typeValue ); DALI_TEST_CHECK( typeValue->Get() == Vector2(1.0f,1.0f) ); } { - Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE ); + Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_SIZE_MODE ); DALI_TEST_CHECK( typeValue ); DALI_TEST_CHECK( typeValue->Get() == Vector4(0.0f,0.0f,0.0f,0.0f) ); } { - Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::ORIGIN ); + Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ORIGIN ); DALI_TEST_CHECK( typeValue ); DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get() == Toolkit::Align::CENTER ); } { - Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::ANCHOR_POINT ); + Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT ); DALI_TEST_CHECK( typeValue ); DALI_TEST_CHECK( (Toolkit::Align::Type)typeValue->Get() == Toolkit::Align::CENTER ); } @@ -1361,49 +1282,54 @@ int UtcDaliVisualGetTransform(void) static void TestTransform( ToolkitTestApplication& application, Visual::Base visual ) { Property::Map transform; - transform.Insert( Visual::DevelProperty::Transform::Property::OFFSET, Vector2(10.0f, 10.0f) ); - transform.Insert( Visual::DevelProperty::Transform::Property::SIZE, Vector2(0.2f, 0.2f) ); - transform.Insert( Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE, Vector4(1.0f, 1.0f, 0.0f,0.0f) ); - transform.Insert( Visual::DevelProperty::Transform::Property::ORIGIN, "TOP_BEGIN" ); - transform.Insert( Visual::DevelProperty::Transform::Property::ANCHOR_POINT, Toolkit::Align::BOTTOM_END ); + transform.Insert( DevelVisual::Transform::Property::OFFSET, Vector2(10.0f, 10.0f) ); + transform.Insert( DevelVisual::Transform::Property::SIZE, Vector2(0.2f, 0.2f) ); + transform.Insert( DevelVisual::Transform::Property::OFFSET_SIZE_MODE, Vector4(1.0f, 1.0f, 0.0f,0.0f) ); + transform.Insert( DevelVisual::Transform::Property::ORIGIN, "TOP_BEGIN" ); + transform.Insert( DevelVisual::Transform::Property::ANCHOR_POINT, Toolkit::Align::BOTTOM_END ); - visual.SetProperty( Dali::Toolkit::Visual::DevelProperty::TRANSFORM, transform ); + visual.SetTransformAndSize( transform, Vector2(100, 100) ); - Dali::Property::Map map; - Dali::Property::Value transformProperty = visual.GetProperty( Dali::Toolkit::Visual::DevelProperty::TRANSFORM ); - transformProperty.Get(map); + Dali::Property::Map visualMap; + visual.CreatePropertyMap( visualMap ); + Property::Value* value = visualMap.Find( Dali::Toolkit::DevelVisual::Property::TRANSFORM ); + Dali::Property::Map* map = value->GetMap(); + DALI_TEST_CHECK( map ); { - Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET ); + Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET ); DALI_TEST_CHECK( typeValue ); DALI_TEST_EQUALS( typeValue->Get(),Vector2(10.0f,10.0f), TEST_LOCATION ); } { - Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::SIZE ); + Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::SIZE ); DALI_TEST_CHECK( typeValue ); DALI_TEST_EQUALS( typeValue->Get(), Vector2(0.2f,0.2f), TEST_LOCATION ); } { - Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE ); + Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::OFFSET_SIZE_MODE ); DALI_TEST_CHECK( typeValue ); DALI_TEST_EQUALS( typeValue->Get(), Vector4(1.0f,1.0f,0.0f,0.0f), TEST_LOCATION ); } { - Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::ORIGIN ); + Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ORIGIN ); DALI_TEST_CHECK( typeValue ); DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get(), Toolkit::Align::TOP_BEGIN, TEST_LOCATION ); } { - Property::Value* typeValue = map.Find( Toolkit::Visual::DevelProperty::Transform::Property::ANCHOR_POINT ); + Property::Value* typeValue = map->Find( Toolkit::DevelVisual::Transform::Property::ANCHOR_POINT ); DALI_TEST_CHECK( typeValue ); DALI_TEST_EQUALS( (Toolkit::Align::Type)typeValue->Get(), Toolkit::Align::BOTTOM_END, TEST_LOCATION ); } //Put the visual on the stage - Actor actor = Actor::New(); - actor.SetSize(200.f, 200.f); - Stage::GetCurrent().Add( actor ); - visual.SetOnStage( actor ); + DummyControl actor = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + actor.SetSize(2000, 2000); + actor.SetParentOrigin(ParentOrigin::CENTER); + Stage::GetCurrent().Add(actor); + application.SendNotification(); application.Render(0); Renderer renderer( actor.GetRendererAt(0) ); @@ -1426,10 +1352,10 @@ static void TestTransform( ToolkitTestApplication& application, Visual::Base vis //Set a new transform transform.Clear(); - transform.Insert( Visual::DevelProperty::Transform::Property::OFFSET, Vector2(20.0f, 20.0f) ); - transform.Insert( Visual::DevelProperty::Transform::Property::SIZE, Vector2(100.0f, 100.0f) ); - transform.Insert( Visual::DevelProperty::Transform::Property::OFFSET_SIZE_MODE, Vector4(0.0f, 0.0f, 1.0f,1.0f) ); - visual.SetProperty( Dali::Toolkit::Visual::DevelProperty::TRANSFORM, transform ); + 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) ); + visual.SetTransformAndSize( transform, Vector2(100, 100) ); application.SendNotification(); application.Render(0); @@ -1596,4 +1522,186 @@ int UtcDaliVisualSetTransform7(void) END_TEST; } +int UtcDaliNPatchVisualCustomShader(void) +{ + ToolkitTestApplication application; + tet_infoline( "NPatchVisual with custom shader" ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map properties; + Property::Map shader; + const std::string fragmentShader = "Foobar"; + shader[Dali::Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = fragmentShader; + 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; + + Visual::Base visual = factory.CreateVisual( properties ); + + // 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 ); + dummy.SetSize(2000, 2000); + dummy.SetParentOrigin(ParentOrigin::CENTER); + Stage::GetCurrent().Add(dummy); + + 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 + // *map["vertex"]; is default here so not verifying it + + DALI_TEST_EQUALS( fragmentShader, fragment->Get(), TEST_LOCATION ); + END_TEST; +} +int UtcDaliGradientVisualBlendMode(void) +{ + ToolkitTestApplication application; + VisualFactory factory = VisualFactory::Get(); + + Visual::Base opaqueGradientVisual = factory.CreateVisual( + Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT ) + .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) ) + .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) ) + .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED ) + .Add( Color::GREEN ) ) ); + + Visual::Base alphaGradientVisual = factory.CreateVisual( + Property::Map().Add( Visual::Property::TYPE, Visual::GRADIENT ) + .Add( GradientVisual::Property::START_POSITION, Vector2( -0.5f, -0.5f ) ) + .Add( GradientVisual::Property::END_POSITION, Vector2( 0.5f, 0.5f ) ) + .Add( GradientVisual::Property::STOP_COLOR, Property::Array().Add( Color::RED ) + .Add( Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ) ) ); + + DummyControl control = DummyControl::New(); + 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 ); + + application.SendNotification(); + application.Render(); + + // Control should have two renderers, the first one is opaque so our blending mode should be off, the second one has some alpha so should be set to automatic + DALI_TEST_EQUALS( 2u, control.GetRendererCount(), TEST_LOCATION ); + DALI_TEST_EQUALS( control.GetRendererAt( 0 ).GetProperty( Renderer::Property::BLEND_MODE ).Get(), (int)BlendMode::OFF, TEST_LOCATION ); + DALI_TEST_EQUALS( control.GetRendererAt( 1 ).GetProperty( Renderer::Property::BLEND_MODE ).Get(), (int)BlendMode::AUTO, TEST_LOCATION ); + + END_TEST; +} + +int UtcDaliVisualRendererRemovalAndReAddition(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualRendererRemoval" ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert(Visual::Property::TYPE, Visual::COLOR); + propertyMap.Insert(ColorVisual::Property::MIX_COLOR, Color::BLUE); + Visual::Base visual = factory.CreateVisual( propertyMap ); + + visual.SetDepthIndex( 1.f ); + + DummyControl dummyControl = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION ); + + dummyControl.SetSize(200.f, 200.f); + tet_infoline( "Add control with visual to stage and check renderer count is 1" ); + + Stage::GetCurrent().Add( dummyControl ); + + application.SendNotification(); + application.Render(); + + 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.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION ); + + tet_infoline( "Re-add control with visual to stage and check renderer count is still 1" ); + + Stage::GetCurrent().Add( dummyControl ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 1, TEST_LOCATION ); + + END_TEST; +} + + + +int UtcDaliVisualTextVisualRender(void) +{ + ToolkitTestApplication application; + tet_infoline( "UtcDaliVisualTextVisualRender" ); + + VisualFactory factory = VisualFactory::Get(); + Property::Map propertyMap; + propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT ); + 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); + DummyControlImpl& dummyImpl = static_cast(dummyControl.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, textVisual ); + DALI_TEST_EQUALS( dummyControl.GetRendererCount(), 0, TEST_LOCATION ); + + dummyControl.SetSize(200.f, 200.f); + + Stage::GetCurrent().Add( dummyControl ); + application.SendNotification(); + application.Render(); + + + // Create a texture bigger than the maximum allowed by the image atlas. Used to increase coverage. + propertyMap.Clear(); + propertyMap.Insert( Visual::Property::TYPE, DevelVisual::TEXT ); + propertyMap.Insert( TextVisual::Property::ENABLE_MARKUP, true ); + propertyMap.Insert( TextVisual::Property::TEXT, "Hello world" ); + propertyMap.Insert( TextVisual::Property::MULTI_LINE, true ); + + Property::Map transformMap; + transformMap.Insert( DevelVisual::Transform::Property::SIZE, Vector2( 720.f, 640.f ) ); + propertyMap.Insert( DevelVisual::Property::TRANSFORM, transformMap ); + + textVisual = factory.CreateVisual( propertyMap ); + textVisual.SetDepthIndex( 1.f ); + + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, textVisual ); + dummyControl.SetSize( 720.f, 640.f ); + + application.SendNotification(); + application.Render(); + + END_TEST; +}