X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=automated-tests%2Fsrc%2Fdali-toolkit%2Futc-Dali-ImageVisual.cpp;h=1a15ec651def82d4dcf4e0777557d8376c5d290d;hb=539ba0fddbfafdeb2022bb3c508db05e9b92825c;hp=ba64af342d2360c7fdb1f488ab901e038b1e449c;hpb=6c3063e269a7f2d370c0ad45efde3eeb38dac3a1;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp index ba64af3..1a15ec6 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp @@ -154,6 +154,63 @@ int UtcDaliImageVisualPropertyMap(void) VisualFactory factory = VisualFactory::Get(); DALI_TEST_CHECK( factory ); + factory.SetPreMultiplyOnLoad( true ); + + Property::Map propertyMap; + propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::IMAGE ); + propertyMap.Insert( ImageVisual::Property::URL, TEST_LARGE_IMAGE_FILE_NAME ); + + Visual::Base visual = factory.CreateVisual( propertyMap ); + DALI_TEST_CHECK( visual ); + + // For tesing the LoadResourceFunc is called, a big image size should be set, so the atlasing is not applied. + // Image with a size smaller than 512*512 will be uploaded as a part of the atlas. + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + + DummyControl actor = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual ); + + actor.SetSize( 200.f, 200.f ); + DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); + + Stage::GetCurrent().Add( actor ); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); + auto renderer = actor.GetRendererAt(0); + auto preMultipliedIndex = renderer.GetPropertyIndex( "preMultipliedAlpha" ); + DALI_TEST_CHECK( preMultipliedIndex != Property::INVALID_INDEX ); + auto preMultipliedAlpha = renderer.GetProperty( preMultipliedIndex ); + auto preMultipliedAlpha2 = renderer.GetProperty( Renderer::Property::BLEND_PRE_MULTIPLIED_ALPHA ); + DALI_TEST_EQUALS( preMultipliedAlpha, 1.0f, TEST_LOCATION ); + DALI_TEST_EQUALS( preMultipliedAlpha2, true, TEST_LOCATION ); + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); + + Stage::GetCurrent().Remove( actor ); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + + END_TEST; +} + + +int UtcDaliImageVisualNoPremultipliedAlpha01(void) +{ + ToolkitTestApplication application; + tet_infoline( "Request image visual without pre-multiplied alpha" ); + + VisualFactory factory = VisualFactory::Get(); + DALI_TEST_CHECK( factory ); + factory.SetPreMultiplyOnLoad( false ); Property::Map propertyMap; propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::IMAGE ); @@ -186,6 +243,71 @@ int UtcDaliImageVisualPropertyMap(void) application.Render(); DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); + auto renderer = actor.GetRendererAt(0); + auto preMultipliedIndex = renderer.GetPropertyIndex( "preMultipliedAlpha" ); + DALI_TEST_CHECK( preMultipliedIndex != Property::INVALID_INDEX ); + auto preMultipliedAlpha = renderer.GetProperty( preMultipliedIndex ); + auto preMultipliedAlpha2 = renderer.GetProperty( Renderer::Property::BLEND_PRE_MULTIPLIED_ALPHA ); + + DALI_TEST_EQUALS( preMultipliedAlpha, false, TEST_LOCATION ); + DALI_TEST_EQUALS( preMultipliedAlpha2, false, TEST_LOCATION ); + + DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); + + Stage::GetCurrent().Remove( actor ); + DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); + + END_TEST; +} + + +int UtcDaliImageVisualNoPremultipliedAlpha02(void) +{ + ToolkitTestApplication application; + tet_infoline( "Request image visual with no alpha channel" ); + + VisualFactory factory = VisualFactory::Get(); + DALI_TEST_CHECK( factory ); + + Property::Map propertyMap; + propertyMap.Insert( Toolkit::Visual::Property::TYPE, Visual::IMAGE ); + propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); + + Visual::Base visual = factory.CreateVisual( propertyMap ); + DALI_TEST_CHECK( visual ); + + // For tesing the LoadResourceFunc is called, a big image size should be set, so the atlasing is not applied. + // Image with a size smaller than 512*512 will be uploaded as a part of the atlas. + + TestGlAbstraction& gl = application.GetGlAbstraction(); + TraceCallStack& textureTrace = gl.GetTextureTrace(); + textureTrace.Enable(true); + + DummyControl actor = DummyControl::New(); + DummyControlImpl& dummyImpl = static_cast(actor.GetImplementation()); + dummyImpl.RegisterVisual( Control::CONTROL_PROPERTY_END_INDEX + 1, visual ); + + actor.SetSize( 200.f, 200.f ); + DALI_TEST_EQUALS( actor.GetRendererCount(), 0u, TEST_LOCATION ); + + Stage::GetCurrent().Add( actor ); + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); + + application.SendNotification(); + application.Render(); + + DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION ); + auto renderer = actor.GetRendererAt(0); + auto preMultipliedIndex = renderer.GetPropertyIndex( "preMultipliedAlpha" ); + DALI_TEST_CHECK( preMultipliedIndex != Property::INVALID_INDEX ); + auto preMultipliedAlpha = renderer.GetProperty( preMultipliedIndex ); + auto preMultipliedAlpha2 = renderer.GetProperty( Renderer::Property::BLEND_PRE_MULTIPLIED_ALPHA ); + + DALI_TEST_EQUALS( preMultipliedAlpha, false, TEST_LOCATION ); + DALI_TEST_EQUALS( preMultipliedAlpha2, false, TEST_LOCATION ); DALI_TEST_EQUALS( textureTrace.FindMethod("BindTexture"), true, TEST_LOCATION ); @@ -1584,7 +1706,21 @@ int UtcDaliImageVisualLoadPolicy01(void) textureTrace.Enable(true); tet_infoline( "Create visual with IMMEDIATE load policy" ); - Visual::Base imageVisual = CreateVisualWithPolicy( TEST_IMAGE_FILE_NAME, ImageVisual::Property::LOAD_POLICY, ImageVisual::LoadPolicy::IMMEDIATE ); + VisualFactory factory = VisualFactory::Get(); + + Property::Map propertyMap; + propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE ); + propertyMap.Insert( ImageVisual::Property::URL, TEST_IMAGE_FILE_NAME ); + propertyMap.Insert( ImageVisual::Property::DESIRED_WIDTH, 20 ); + propertyMap.Insert( ImageVisual::Property::DESIRED_HEIGHT, 30 ); + propertyMap.Insert( "loadPolicy" , ImageVisual::LoadPolicy::IMMEDIATE ); + + Visual::Base imageVisual = factory.CreateVisual( propertyMap ); + + Property::Map resultMap; + imageVisual.CreatePropertyMap( resultMap ); + DALI_TEST_CHECK( ! resultMap.Empty() ); + DALI_TEST_EQUALS( ( resultMap.Find( ImageVisual::Property::LOAD_POLICY ) )->Get(), (int)ImageVisual::LoadPolicy::IMMEDIATE, TEST_LOCATION ); DALI_TEST_EQUALS( Test::WaitForEventThreadTrigger( 1 ), true, TEST_LOCATION ); @@ -1832,7 +1968,7 @@ int UtcDaliImageVisualOrientationCorrection(void) Property::Map propertyMap; propertyMap.Insert( Visual::Property::TYPE, Visual::IMAGE ); propertyMap.Insert( ImageVisual::Property::URL, TEST_ROTATED_IMAGE ); - propertyMap.Insert( ImageVisual::Property::ORIENTATION_CORRECTION, false ); + propertyMap.Insert( "orientationCorrection", false ); Visual::Base imageVisual = factory.CreateVisual( propertyMap ); tet_infoline( "Create control for visual, need to loaded it" );