From d89ca5c663fa01a5b2e083f4141d90683e0a716a Mon Sep 17 00:00:00 2001 From: Heeyong Song Date: Tue, 20 Feb 2018 17:30:33 +0900 Subject: [PATCH] Replace visual opacity with Renderer's opacity Change-Id: I5887c2ec3f041f0fee51fd938c6d461096dcccf2 --- .../utc-Dali-Visuals-internal.cpp | 47 +++++++++++++++- .../src/dali-toolkit/utc-Dali-ImageVisual.cpp | 34 ++++++------ .../src/dali-toolkit/utc-Dali-TransitionData.cpp | 55 +++++++++---------- .../src/dali-toolkit/utc-Dali-Visual.cpp | 26 +++++---- .../src/dali-toolkit/utc-Dali-VisualFactory.cpp | 14 ++--- .../controls/video-view/video-view-impl.cpp | 5 +- dali-toolkit/internal/text/text-scroller.cpp | 10 +--- .../internal/visuals/border/border-visual.cpp | 6 +- .../internal/visuals/color/color-visual.cpp | 3 +- .../internal/visuals/gradient/gradient-visual.cpp | 6 +- .../internal/visuals/image/image-visual.cpp | 23 +------- dali-toolkit/internal/visuals/mesh/mesh-visual.cpp | 21 +------ .../internal/visuals/npatch/npatch-visual.cpp | 16 ++---- .../visuals/primitive/primitive-visual.cpp | 3 +- dali-toolkit/internal/visuals/text/text-visual.cpp | 64 +++++++--------------- .../internal/visuals/visual-base-data-impl.cpp | 1 - .../internal/visuals/visual-base-data-impl.h | 1 - dali-toolkit/internal/visuals/visual-base-impl.cpp | 42 +++++--------- .../visuals/wireframe/wireframe-visual.cpp | 3 +- 19 files changed, 164 insertions(+), 216 deletions(-) diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Visuals-internal.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Visuals-internal.cpp index bbe1aa6..5a215dd 100644 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Visuals-internal.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Visuals-internal.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -23,6 +23,8 @@ #include #include #include +#include +#include #include #include <../dali-toolkit/dali-toolkit-test-utils/dummy-control.h> @@ -105,3 +107,46 @@ int UtcDaliVisualActionNotImplemented(void) END_TEST; } + +int UtcDaliVisualSetProperties(void) +{ + ToolkitTestApplication application; + tet_infoline( "Register a visual and SetProperties" ); + + Toolkit::Internal::VisualFactoryCache* factoryCache = new Toolkit::Internal::VisualFactoryCache(false); + + //Created ColorVisual + Property::Map propertyMap1; + propertyMap1.Insert(Visual::Property::TYPE, Visual::COLOR); + propertyMap1.Insert(ColorVisual::Property::MIX_COLOR, Color::RED); + Toolkit::Internal::ColorVisualPtr colorVisualPtr = Toolkit::Internal::ColorVisual::New( *factoryCache, propertyMap1 ); + + DummyControl dummyControl = DummyControl::New( true ); + Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummyControl.GetImplementation() ); + + Toolkit::Visual::Base visualBaseHandle = Toolkit::Visual::Base( colorVisualPtr.Get() ); + dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visualBaseHandle ); + dummyControl.SetSize( 200.f, 200.f ); + Stage::GetCurrent().Add( dummyControl ); + + application.SendNotification(); + application.Render(); + + Property::Map propertyMap; + propertyMap.Insert( Visual::Property::MIX_COLOR, Color::BLUE ); + + colorVisualPtr->SetProperties( propertyMap ); + application.SendNotification(); + application.Render(); + + Property::Map resultMap; + visualBaseHandle.CreatePropertyMap( resultMap ); + + Property::Value* colorValue = resultMap.Find( Visual::Property::MIX_COLOR, Property::VECTOR4 ); + DALI_TEST_CHECK( colorValue ); + DALI_TEST_CHECK( colorValue->Get< Vector4 >() == Color::BLUE ); + + delete factoryCache; + + END_TEST; +} diff --git a/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp index 1a15ec6..8b17338 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-ImageVisual.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -760,18 +760,17 @@ int UtcDaliImageVisualAnimateMixColor(void) application.SendNotification(); application.Render(0); // Ensure animation starts application.Render(2000u); // Halfway point - Vector4 testColor(1.0f, 0.0f, 0.5f, 0.75f ); + Vector3 testColor( 1.0f, 0.0f, 0.5f ); - DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("uColor", Vector4(0.5f, 0.5f, 0.5f, 1.0f )), true, TEST_LOCATION ); - DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", Vector3(testColor)), true, TEST_LOCATION ); - DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", testColor.a), true, TEST_LOCATION ); + // uColor.a should be actor's alpha * mixColor.a. + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue( "uColor", Vector4( 0.5f, 0.5f, 0.5f, 0.75f ) ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue( "mixColor", testColor ), true, TEST_LOCATION ); application.Render(2000u); // Halfway point between blue and white DALI_TEST_EQUALS( actor.GetCurrentColor(), Color::WHITE, TEST_LOCATION ); - DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("uColor", Color::WHITE ), true, TEST_LOCATION ); - DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("mixColor", Vector3(TARGET_MIX_COLOR)), true, TEST_LOCATION ); - DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", TARGET_MIX_COLOR.a), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue( "uColor", Vector4( 1.0f, 1.0f, 1.0f, 0.5f ) ), true, TEST_LOCATION ); + DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue( "mixColor", Vector3( TARGET_MIX_COLOR ) ), true, TEST_LOCATION ); TestMixColor( visual, Visual::Property::MIX_COLOR, TARGET_MIX_COLOR ); @@ -808,11 +807,6 @@ int UtcDaliImageVisualAnimateOpacity(void) DALI_TEST_EQUALS( actor.GetRendererCount(), 1u, TEST_LOCATION); Renderer renderer = actor.GetRendererAt(0); - tet_infoline("Test that the renderer has the opacity property"); - Property::Index index = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); - DALI_TEST_CHECK( index != Property::INVALID_INDEX ); - - Property::Value blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); @@ -838,12 +832,15 @@ int UtcDaliImageVisualAnimateOpacity(void) application.Render(2000u); // Halfway point through animation application.SendNotification(); // Handle any signals - DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", 0.75f), true, TEST_LOCATION ); + Vector4 color; + DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", color ) ); + DALI_TEST_EQUALS( color.a, 0.75f, TEST_LOCATION ); application.Render(2001u); // end application.SendNotification(); // ensure animation finished signal is sent - DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", 1.0f), true, TEST_LOCATION ); + DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", color ) ); + DALI_TEST_EQUALS( color.a, 1.0f, TEST_LOCATION ); blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::AUTO, TEST_LOCATION ); @@ -875,12 +872,15 @@ int UtcDaliImageVisualAnimateOpacity(void) application.Render(2000u); // Halfway point application.SendNotification(); - DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", 0.55f), true, TEST_LOCATION ); + Vector4 color; + DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", color ) ); + DALI_TEST_EQUALS( color.a, 0.55f, TEST_LOCATION ); application.Render(2016u); // end application.SendNotification(); - DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue("opacity", 0.1f), true, TEST_LOCATION ); + DALI_TEST_CHECK( application.GetGlAbstraction().GetUniformValue< Vector4 >( "uColor", color ) ); + DALI_TEST_EQUALS( color.a, 0.1f, TEST_LOCATION ); blendModeValue = renderer.GetProperty( Renderer::Property::BLEND_MODE ); DALI_TEST_EQUALS( blendModeValue.Get(), (int)BlendMode::ON, TEST_LOCATION ); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TransitionData.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TransitionData.cpp index 42ca88e..3850d2a 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-TransitionData.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-TransitionData.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -254,14 +255,13 @@ int UtcDaliTransitionDataMap1P(void) Renderer renderer = actor.GetRendererAt(0); Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); - Property::Index opacityIndex = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); application.SendNotification(); application.Render(0); DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION ); - DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION ); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION ); anim.Play(); @@ -270,12 +270,12 @@ int UtcDaliTransitionDataMap1P(void) application.Render(500); // Halfway thru anim application.SendNotification(); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION ); application.Render(500); // End of anim application.SendNotification(); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::RED), TEST_LOCATION ); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION ); END_TEST; } @@ -323,14 +323,13 @@ int UtcDaliTransitionDataMap2P(void) Renderer renderer = actor.GetRendererAt(0); Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); - Property::Index opacityIndex = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); application.SendNotification(); application.Render(0); DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION ); - DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION ); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION ); anim.Play(); @@ -340,12 +339,12 @@ int UtcDaliTransitionDataMap2P(void) application.Render(500); // Halfway thru anim application.SendNotification(); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION); application.Render(500); // End of anim application.SendNotification(); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::RED), TEST_LOCATION ); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION); END_TEST; } @@ -396,14 +395,13 @@ int UtcDaliTransitionDataMap2Pb(void) Renderer renderer = actor.GetRendererAt(0); Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, PrimitiveVisual::Property::MIX_COLOR ); - Property::Index opacityIndex = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); application.SendNotification(); application.Render(0); DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION ); - DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION ); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION ); anim.Play(); @@ -413,12 +411,12 @@ int UtcDaliTransitionDataMap2Pb(void) application.Render(500); // Halfway thru anim application.SendNotification(); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA+Color::RED)*0.5f, TEST_LOCATION); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION); application.Render(500); // End of anim application.SendNotification(); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::RED), TEST_LOCATION ); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION); END_TEST; } @@ -593,16 +591,15 @@ int UtcDaliTransitionDataMap5P(void) Renderer renderer = actor.GetRendererAt(0); Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); - Property::Index opacityIndex = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); application.SendNotification(); application.Render(0); DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); - DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 0.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty( DevelRenderer::Property::OPACITY ), 0.0f, 0.001f, TEST_LOCATION ); DALI_TEST_EQUALS( renderer.GetProperty(Renderer::Property::BLEND_MODE), (int)BlendMode::ON, TEST_LOCATION ); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 0.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 0.0f, 0.001f, TEST_LOCATION ); DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION ); anim.Play(); @@ -612,13 +609,14 @@ int UtcDaliTransitionDataMap5P(void) application.Render(500); // Halfway thru anim application.SendNotification(); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 0.5f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 0.5f, 0.001f, TEST_LOCATION ); DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION ); application.Render(501); // End of anim application.SendNotification(); + application.Render(); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION ); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION ); DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::AUTO, TEST_LOCATION ); END_TEST; @@ -665,14 +663,13 @@ int UtcDaliTransitionDataMap6P(void) Renderer renderer = actor.GetRendererAt(0); Property::Index mixColorIndex = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); - Property::Index opacityIndex = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); application.SendNotification(); application.Render(0); DALI_TEST_EQUALS( renderer.GetProperty(mixColorIndex), Vector3(Color::MAGENTA), TEST_LOCATION); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION); - DALI_TEST_EQUALS( renderer.GetProperty(opacityIndex), 1.0f, 0.001f, TEST_LOCATION ); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetProperty( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 1.0f, 0.001f, TEST_LOCATION ); // Note, This should be testing for AUTO // this is the same problem as C# target value being set before Play is called. @@ -687,13 +684,13 @@ int UtcDaliTransitionDataMap6P(void) application.Render(500); // Halfway thru anim application.SendNotification(); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 0.5f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 0.5f, 0.001f, TEST_LOCATION ); DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION ); application.Render(500); // End of anim application.SendNotification(); DALI_TEST_EQUALS( renderer.GetCurrentProperty< Vector3 >( mixColorIndex ), Vector3(Color::MAGENTA), TEST_LOCATION ); - DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( opacityIndex ), 0.0f, 0.001f, TEST_LOCATION ); + DALI_TEST_EQUALS( renderer.GetCurrentProperty< float >( DevelRenderer::Property::OPACITY ), 0.0f, 0.001f, TEST_LOCATION ); DALI_TEST_EQUALS( renderer.GetCurrentProperty< int >( Renderer::Property::BLEND_MODE ), (int)BlendMode::ON, TEST_LOCATION ); END_TEST; @@ -818,11 +815,10 @@ int UtcDaliTransitionDataMapN4(void) Renderer renderer = actor.GetRendererAt(0); Property::Index mixColorIdx = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); - Property::Index opacityIdx = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); tet_printf( "Test that the property has been set to target value\n"); DALI_TEST_EQUALS(renderer.GetProperty(mixColorIdx), Vector3(Color::RED), 0.001, TEST_LOCATION); - DALI_TEST_EQUALS(renderer.GetProperty(opacityIdx), 1.0f, 0.001, TEST_LOCATION); + DALI_TEST_EQUALS(renderer.GetProperty( DevelRenderer::Property::OPACITY ), 1.0f, 0.001, TEST_LOCATION); END_TEST; } @@ -922,11 +918,10 @@ int UtcDaliTransitionDataMapN6(void) Renderer renderer = actor.GetRendererAt(0); Property::Index mixColorIdx = DevelHandle::GetPropertyIndex( renderer, ColorVisual::Property::MIX_COLOR ); - Property::Index opacityIdx = DevelHandle::GetPropertyIndex( renderer, Visual::Property::OPACITY ); tet_printf( "Test that the property has been set to target value\n"); DALI_TEST_EQUALS(renderer.GetProperty(mixColorIdx), Vector3(Color::RED), 0.001, TEST_LOCATION); - DALI_TEST_EQUALS(renderer.GetProperty(opacityIdx), 1.0f, 0.001, TEST_LOCATION); + DALI_TEST_EQUALS(renderer.GetProperty( DevelRenderer::Property::OPACITY ), 1.0f, 0.001, TEST_LOCATION); END_TEST; } diff --git a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp index ae541f9..9c817b6 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp @@ -1715,7 +1715,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() @@ -1754,10 +1754,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); @@ -1765,11 +1768,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; } @@ -1930,19 +1935,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( 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 ); diff --git a/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp b/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp index 849cf7e..99479c3 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-VisualFactory.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -316,12 +316,12 @@ int UtcDaliVisualFactoryGetColorVisual1(void) TestVisualRender( application, actor, visual ); Vector3 actualValue(Vector4::ZERO); - float opacity=0.0f; + Vector4 actualColor(Vector4::ZERO); TestGlAbstraction& gl = application.GetGlAbstraction(); DALI_TEST_CHECK( gl.GetUniformValue( "mixColor", actualValue ) ); - DALI_TEST_CHECK( gl.GetUniformValue( "opacity", opacity ) ); + DALI_TEST_CHECK( gl.GetUniformValue( "uColor", actualColor ) ); DALI_TEST_EQUALS( actualValue, Vector3(testColor), TEST_LOCATION ); - DALI_TEST_EQUALS( opacity, testColor.a, TEST_LOCATION ); + DALI_TEST_EQUALS( actualColor.a, testColor.a, TEST_LOCATION ); END_TEST; } @@ -345,12 +345,12 @@ int UtcDaliVisualFactoryGetColorVisual2(void) TestVisualRender( application, actor, visual ); Vector3 actualValue; - float opacity; + Vector4 actualColor; TestGlAbstraction& gl = application.GetGlAbstraction(); DALI_TEST_CHECK( gl.GetUniformValue( "mixColor", actualValue ) ); - DALI_TEST_CHECK( gl.GetUniformValue( "opacity", opacity ) ); + DALI_TEST_CHECK( gl.GetUniformValue( "uColor", actualColor ) ); DALI_TEST_EQUALS( actualValue, Vector3(testColor), TEST_LOCATION ); - DALI_TEST_EQUALS( opacity, testColor.a, TEST_LOCATION ); + DALI_TEST_EQUALS( actualColor.a, testColor.a, TEST_LOCATION ); Stage::GetCurrent().Remove(actor); DALI_TEST_CHECK( actor.GetRendererCount() == 0u ); diff --git a/dali-toolkit/internal/controls/video-view/video-view-impl.cpp b/dali-toolkit/internal/controls/video-view/video-view-impl.cpp index fe3088d..1e6da13 100755 --- a/dali-toolkit/internal/controls/video-view/video-view-impl.cpp +++ b/dali-toolkit/internal/controls/video-view/video-view-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -100,11 +100,10 @@ const char* VERTEX_SHADER = DALI_COMPOSE_SHADER( const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n \n void main()\n {\n - gl_FragColor = vec4(mixColor, opacity)*uColor;\n + gl_FragColor = vec4(mixColor, 1.0)*uColor;\n }\n ); diff --git a/dali-toolkit/internal/text/text-scroller.cpp b/dali-toolkit/internal/text/text-scroller.cpp index fab9327..f421cf7 100644 --- a/dali-toolkit/internal/text/text-scroller.cpp +++ b/dali-toolkit/internal/text/text-scroller.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 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. @@ -80,14 +80,8 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( uniform sampler2D sTexture;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n \n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n - \n void main()\n {\n if ( vTexCoord.y > 1.0 )\n @@ -96,7 +90,7 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( mediump vec4 textTexture = texture2D( sTexture, vTexCoord );\n textTexture.rgb *= mix( 1.0, textTexture.a, preMultipliedAlpha );\n \n - gl_FragColor = textTexture * uColor * visualMixColor(); + gl_FragColor = textTexture * uColor * vec4( mixColor, 1.0 ); }\n ); diff --git a/dali-toolkit/internal/visuals/border/border-visual.cpp b/dali-toolkit/internal/visuals/border/border-visual.cpp index cf1d6f4..993bcde 100644 --- a/dali-toolkit/internal/visuals/border/border-visual.cpp +++ b/dali-toolkit/internal/visuals/border/border-visual.cpp @@ -83,11 +83,10 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( uniform lowp vec4 uColor;\n uniform lowp vec4 borderColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n \n void main()\n {\n - gl_FragColor = vec4(mixColor, opacity)*borderColor*uColor;\n + gl_FragColor = vec4(mixColor, 1.0)*borderColor*uColor;\n }\n ); @@ -111,13 +110,12 @@ const char* FRAGMENT_SHADER_ANTI_ALIASING = DALI_COMPOSE_SHADER( uniform lowp vec4 uColor;\n uniform lowp vec4 borderColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform mediump float borderSize;\n varying mediump float vAlpha;\n \n void main()\n {\n - gl_FragColor = vec4(mixColor, opacity)*borderColor*uColor;\n + gl_FragColor = vec4(mixColor, 1.0)*borderColor*uColor;\n gl_FragColor.a *= smoothstep(0.0, 1.5, vAlpha)*smoothstep( borderSize+1.5, borderSize, vAlpha );\n }\n ); diff --git a/dali-toolkit/internal/visuals/color/color-visual.cpp b/dali-toolkit/internal/visuals/color/color-visual.cpp index 8228550..fdc4835 100644 --- a/dali-toolkit/internal/visuals/color/color-visual.cpp +++ b/dali-toolkit/internal/visuals/color/color-visual.cpp @@ -72,11 +72,10 @@ const char* VERTEX_SHADER = DALI_COMPOSE_SHADER( const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n \n void main()\n {\n - gl_FragColor = vec4(mixColor, opacity)*uColor;\n + gl_FragColor = vec4(mixColor, 1.0)*uColor;\n }\n ); } diff --git a/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp b/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp index e54d811..aaf4f03 100644 --- a/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp +++ b/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp @@ -173,12 +173,11 @@ DALI_COMPOSE_SHADER( uniform sampler2D sTexture;\n // sampler1D? uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n varying mediump vec2 vTexCoord;\n \n void main()\n {\n - gl_FragColor = texture2D( sTexture, vec2( vTexCoord.y, 0.5 ) ) * vec4(mixColor*opacity, opacity) * uColor;\n + gl_FragColor = texture2D( sTexture, vec2( vTexCoord.y, 0.5 ) ) * vec4(mixColor, 1.0) * uColor;\n }\n ), @@ -187,12 +186,11 @@ DALI_COMPOSE_SHADER( uniform sampler2D sTexture;\n // sampler1D? uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n varying mediump vec2 vTexCoord;\n \n void main()\n {\n - gl_FragColor = texture2D( sTexture, vec2( length(vTexCoord), 0.5 ) ) * vec4(mixColor*opacity, opacity) * uColor;\n + gl_FragColor = texture2D( sTexture, vec2( length(vTexCoord), 0.5 ) ) * vec4(mixColor, 1.0) * uColor;\n }\n ) }; diff --git a/dali-toolkit/internal/visuals/image/image-visual.cpp b/dali-toolkit/internal/visuals/image/image-visual.cpp index 5917754..bd32b97 100644 --- a/dali-toolkit/internal/visuals/image/image-visual.cpp +++ b/dali-toolkit/internal/visuals/image/image-visual.cpp @@ -152,16 +152,11 @@ const char* FRAGMENT_SHADER_NO_ATLAS = DALI_COMPOSE_SHADER( uniform sampler2D sTexture;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n \n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n void main()\n {\n - gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor * visualMixColor();\n + gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor * vec4( mixColor, 1.0 );\n }\n ); @@ -171,18 +166,12 @@ const char* FRAGMENT_SHADER_ATLAS_CLAMP = DALI_COMPOSE_SHADER( uniform mediump vec4 uAtlasRect;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n \n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n - \n void main()\n {\n mediump vec2 texCoord = clamp( mix( uAtlasRect.xy, uAtlasRect.zw, vTexCoord ), uAtlasRect.xy, uAtlasRect.zw );\n - gl_FragColor = texture2D( sTexture, texCoord ) * uColor * visualMixColor();\n + gl_FragColor = texture2D( sTexture, texCoord ) * uColor * vec4( mixColor, 1.0 );\n }\n ); @@ -194,7 +183,6 @@ const char* FRAGMENT_SHADER_ATLAS_VARIOUS_WRAP = DALI_COMPOSE_SHADER( uniform lowp vec2 wrapMode;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n \n mediump float wrapCoordinate( mediump vec2 range, mediump float coordinate, lowp float wrap )\n @@ -207,16 +195,11 @@ const char* FRAGMENT_SHADER_ATLAS_VARIOUS_WRAP = DALI_COMPOSE_SHADER( return clamp( mix(range.x, range.y, coord), range.x, range.y ); }\n \n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n - \n void main()\n {\n mediump vec2 texCoord = vec2( wrapCoordinate( uAtlasRect.xz, vTexCoord.x, wrapMode.x ), wrapCoordinate( uAtlasRect.yw, vTexCoord.y, wrapMode.y ) );\n - gl_FragColor = texture2D( sTexture, texCoord ) * uColor * visualMixColor();\n + gl_FragColor = texture2D( sTexture, texCoord ) * uColor * vec4( mixColor, 1.0 );\n }\n ); diff --git a/dali-toolkit/internal/visuals/mesh/mesh-visual.cpp b/dali-toolkit/internal/visuals/mesh/mesh-visual.cpp index f7ed731..0d81192 100644 --- a/dali-toolkit/internal/visuals/mesh/mesh-visual.cpp +++ b/dali-toolkit/internal/visuals/mesh/mesh-visual.cpp @@ -165,16 +165,11 @@ const char* SIMPLE_FRAGMENT_SHADER = DALI_COMPOSE_SHADER( varying mediump vec3 vIllumination;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n void main()\n {\n - gl_FragColor = vec4( vIllumination.rgb * uColor.rgb, uColor.a ) * visualMixColor();\n + gl_FragColor = vec4( vIllumination.rgb * uColor.rgb, uColor.a ) * vec4( mixColor, 1.0 );\n }\n ); @@ -249,17 +244,12 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( uniform sampler2D sDiffuse;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n void main()\n {\n vec4 texture = texture2D( sDiffuse, vTexCoord );\n - vec4 visualMixColor = visualMixColor();\n + vec4 visualMixColor = vec4( mixColor, 1.0 );\n gl_FragColor = vec4( vIllumination.rgb * texture.rgb * uColor.rgb * visualMixColor.rgb + vSpecular * 0.3, texture.a * uColor.a * visualMixColor.a );\n }\n ); @@ -342,19 +332,14 @@ const char* NORMAL_MAP_FRAGMENT_SHADER = DALI_COMPOSE_SHADER( uniform sampler2D sGloss;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n void main()\n {\n vec4 texture = texture2D( sDiffuse, vTexCoord );\n vec3 normal = normalize( texture2D( sNormal, vTexCoord ).xyz * 2.0 - 1.0 );\n vec4 glossMap = texture2D( sGloss, vTexCoord );\n - vec4 visualMixColor = visualMixColor();\n + vec4 visualMixColor = vec4( mixColor, 1.0 );\n float lightDiffuse = max( 0.0, dot( normal, normalize( vLightDirection ) ) );\n lightDiffuse = lightDiffuse * 0.5 + 0.5;\n diff --git a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp index afb517b..971c73d 100755 --- a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp +++ b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp @@ -141,15 +141,11 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( uniform sampler2D sTexture;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n + \n void main()\n {\n - gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor * visualMixColor();\n + gl_FragColor = texture2D( sTexture, vTexCoord ) * uColor * vec4( mixColor, 1.0 );\n }\n ); @@ -160,13 +156,9 @@ const char* FRAGMENT_MASK_SHADER = DALI_COMPOSE_SHADER( uniform sampler2D sMask;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n uniform mediump float auxiliaryImageAlpha;\n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n + \n void main()\n {\n // Where mask image is transparent, all of background image must show through. @@ -179,7 +171,7 @@ const char* FRAGMENT_MASK_SHADER = DALI_COMPOSE_SHADER( mediump vec3 mixedColor = color.rgb * mix( 1.0-mask.a, 1.0, 1.0-auxiliaryImageAlpha) + mask.rgb*mask.a * auxiliaryImageAlpha;\n - gl_FragColor = vec4(mixedColor,1.0) * uColor * visualMixColor();\n + gl_FragColor = vec4(mixedColor,1.0) * uColor * vec4( mixColor, 1.0 );\n }\n ); diff --git a/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp b/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp index 8a2ec88..103529b 100644 --- a/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp +++ b/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp @@ -169,10 +169,9 @@ const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER( varying mediump vec3 vIllumination;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n void main()\n {\n - vec4 baseColor = vec4(mixColor, opacity) * uColor;\n + vec4 baseColor = vec4(mixColor, 1.0) * uColor;\n gl_FragColor = vec4( vIllumination.rgb * baseColor.rgb, baseColor.a );\n }\n ); diff --git a/dali-toolkit/internal/visuals/text/text-visual.cpp b/dali-toolkit/internal/visuals/text/text-visual.cpp index d1ad16c..7729bb7 100755 --- a/dali-toolkit/internal/visuals/text/text-visual.cpp +++ b/dali-toolkit/internal/visuals/text/text-visual.cpp @@ -20,6 +20,7 @@ // EXTERNAL INCLUDES #include +#include #include // INTERNAL HEADER @@ -109,21 +110,15 @@ const char* FRAGMENT_SHADER_SINGLE_COLOR_TEXT = DALI_COMPOSE_SHADER( uniform mediump vec4 uAtlasRect;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n \n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n - \n void main()\n {\n mediump vec2 texCoord = clamp( mix( uAtlasRect.xy, uAtlasRect.zw, vTexCoord ), uAtlasRect.xy, uAtlasRect.zw );\n mediump float textTexture = texture2D( sTexture, texCoord ).r;\n // Set the color of the text to what it is animated to. - gl_FragColor = uTextColorAnimatable * textTexture * uColor * visualMixColor(); + gl_FragColor = uTextColorAnimatable * textTexture * uColor * vec4( mixColor, 1.0 ); }\n ); @@ -133,21 +128,15 @@ const char* FRAGMENT_SHADER_MULTI_COLOR_TEXT = DALI_COMPOSE_SHADER( uniform mediump vec4 uAtlasRect;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n \n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n - \n void main()\n {\n mediump vec2 texCoord = clamp( mix( uAtlasRect.xy, uAtlasRect.zw, vTexCoord ), uAtlasRect.xy, uAtlasRect.zw );\n mediump vec4 textTexture = texture2D( sTexture, texCoord );\n textTexture.rgb *= mix( 1.0, textTexture.a, preMultipliedAlpha );\n - gl_FragColor = textTexture * uColor * visualMixColor(); + gl_FragColor = textTexture * uColor * vec4( mixColor, 1.0 ); }\n ); @@ -159,14 +148,8 @@ const char* FRAGMENT_SHADER_SINGLE_COLOR_TEXT_WITH_STYLE = DALI_COMPOSE_SHADER( uniform mediump vec4 uAtlasRect;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n \n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n - \n void main()\n {\n mediump vec2 texCoord = clamp( mix( uAtlasRect.xy, uAtlasRect.zw, vTexCoord ), uAtlasRect.xy, uAtlasRect.zw );\n @@ -174,7 +157,7 @@ const char* FRAGMENT_SHADER_SINGLE_COLOR_TEXT_WITH_STYLE = DALI_COMPOSE_SHADER( mediump vec4 styleTexture = texture2D( sStyle, texCoord );\n // Draw the text as overlay above the style - gl_FragColor = ( uTextColorAnimatable * textTexture + styleTexture * ( 1.0 - textTexture ) ) * uColor * visualMixColor();\n + gl_FragColor = ( uTextColorAnimatable * textTexture + styleTexture * ( 1.0 - textTexture ) ) * uColor * vec4( mixColor, 1.0 );\n }\n ); @@ -185,14 +168,8 @@ const char* FRAGMENT_SHADER_MULTI_COLOR_TEXT_WITH_STYLE = DALI_COMPOSE_SHADER( uniform mediump vec4 uAtlasRect;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n \n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n - \n void main()\n {\n mediump vec2 texCoord = clamp( mix( uAtlasRect.xy, uAtlasRect.zw, vTexCoord ), uAtlasRect.xy, uAtlasRect.zw );\n @@ -201,7 +178,7 @@ const char* FRAGMENT_SHADER_MULTI_COLOR_TEXT_WITH_STYLE = DALI_COMPOSE_SHADER( textTexture.rgb *= mix( 1.0, textTexture.a, preMultipliedAlpha );\n // Draw the text as overlay above the style - gl_FragColor = ( textTexture + styleTexture * ( 1.0 - textTexture.a ) ) * uColor * visualMixColor();\n + gl_FragColor = ( textTexture + styleTexture * ( 1.0 - textTexture.a ) ) * uColor * vec4( mixColor, 1.0 );\n }\n ); @@ -213,14 +190,8 @@ const char* FRAGMENT_SHADER_SINGLE_COLOR_TEXT_WITH_EMOJI = DALI_COMPOSE_SHADER( uniform mediump vec4 uAtlasRect;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n \n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n - \n void main()\n {\n mediump vec2 texCoord = clamp( mix( uAtlasRect.xy, uAtlasRect.zw, vTexCoord ), uAtlasRect.xy, uAtlasRect.zw );\n @@ -234,7 +205,7 @@ const char* FRAGMENT_SHADER_SINGLE_COLOR_TEXT_WITH_EMOJI = DALI_COMPOSE_SHADER( textTexture.rgb = mix( textTexture.rgb, uTextColorAnimatable.rgb, vstep * maskTexture ) * mix( 1.0, textTexture.a, preMultipliedAlpha );\n // Draw the text as overlay above the style - gl_FragColor = textTexture * uColor * visualMixColor();\n + gl_FragColor = textTexture * uColor * vec4( mixColor, 1.0 );\n }\n ); @@ -248,14 +219,8 @@ const char* FRAGMENT_SHADER_SINGLE_COLOR_TEXT_WITH_STYLE_AND_EMOJI = DALI_COMPOS uniform mediump vec4 uAtlasRect;\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n uniform lowp float preMultipliedAlpha;\n \n - lowp vec4 visualMixColor()\n - {\n - return vec4( mixColor * mix( 1.0, opacity, preMultipliedAlpha ), opacity );\n - }\n - \n void main()\n {\n mediump vec2 texCoord = clamp( mix( uAtlasRect.xy, uAtlasRect.zw, vTexCoord ), uAtlasRect.xy, uAtlasRect.zw );\n @@ -270,7 +235,7 @@ const char* FRAGMENT_SHADER_SINGLE_COLOR_TEXT_WITH_STYLE_AND_EMOJI = DALI_COMPOS textTexture.rgb = mix( textTexture.rgb, uTextColorAnimatable.rgb, vstep * maskTexture * ( 1.0 - uHasMultipleTextColors ) ) * mix( 1.0, textTexture.a, preMultipliedAlpha );\n // Draw the text as overlay above the style - gl_FragColor = ( textTexture + styleTexture * ( 1.0 - textTexture.a ) ) * uColor * visualMixColor();\n + gl_FragColor = ( textTexture + styleTexture * ( 1.0 - textTexture.a ) ) * uColor * vec4( mixColor, 1.0 );\n }\n ); @@ -344,6 +309,11 @@ Dali::Property::Index StringKeyToIndexKey( const std::string& stringKey ) return result; } +void OpacityConstraint( float& current, const PropertyInputContainer& inputs ) +{ + current = inputs[0]->GetVector4().a; +} + } // unnamed namespace TextVisualPtr TextVisual::New( VisualFactoryCache& factoryCache, const Property::Map& properties ) @@ -495,9 +465,13 @@ void TextVisual::DoSetOnStage( Actor& actor ) // Create constraint for the animatable text's color Property with uTextColorAnimatable in the renderer. if( shaderTextColorIndex != Property::INVALID_INDEX ) { - Constraint constraint = Constraint::New( mImpl->mRenderer, shaderTextColorIndex, EqualToConstraint() ); - constraint.AddSource( Source( actor, mAnimatableTextColorPropertyIndex ) ); - constraint.Apply(); + Constraint colorConstraint = Constraint::New( mImpl->mRenderer, shaderTextColorIndex, EqualToConstraint() ); + colorConstraint.AddSource( Source( actor, mAnimatableTextColorPropertyIndex ) ); + colorConstraint.Apply(); + + Constraint opacityConstraint = Constraint::New< float >( mImpl->mRenderer, Dali::DevelRenderer::Property::OPACITY, OpacityConstraint ); + opacityConstraint.AddSource( Source( actor, mAnimatableTextColorPropertyIndex ) ); + opacityConstraint.Apply(); } } diff --git a/dali-toolkit/internal/visuals/visual-base-data-impl.cpp b/dali-toolkit/internal/visuals/visual-base-data-impl.cpp index b6f75ee..90dcd32 100644 --- a/dali-toolkit/internal/visuals/visual-base-data-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-base-data-impl.cpp @@ -123,7 +123,6 @@ Internal::Visual::Base::Impl::Impl(FittingMode fittingMode) mControlSize( Vector2::ZERO ), mDepthIndex( 0.0f ), mMixColorIndex( Property::INVALID_INDEX ), - mOpacityIndex( Property::INVALID_INDEX ), mFittingMode( fittingMode ), mFlags( 0 ), mResourceStatus( Toolkit::Visual::ResourceStatus::PREPARING ) diff --git a/dali-toolkit/internal/visuals/visual-base-data-impl.h b/dali-toolkit/internal/visuals/visual-base-data-impl.h index 3ce75aa..1f59ec0 100644 --- a/dali-toolkit/internal/visuals/visual-base-data-impl.h +++ b/dali-toolkit/internal/visuals/visual-base-data-impl.h @@ -126,7 +126,6 @@ struct Base::Impl Size mControlSize; int mDepthIndex; Property::Index mMixColorIndex; - Property::Index mOpacityIndex; FittingMode mFittingMode; //< How the contents should fit the view int mFlags; Toolkit::Visual::ResourceStatus mResourceStatus; diff --git a/dali-toolkit/internal/visuals/visual-base-impl.cpp b/dali-toolkit/internal/visuals/visual-base-impl.cpp index 8389fc0..05a318b 100755 --- a/dali-toolkit/internal/visuals/visual-base-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-base-impl.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include //INTERNAL HEARDER @@ -291,7 +292,6 @@ void Visual::Base::SetOffStage( Actor& actor ) { DoSetOffStage( actor ); mImpl->mMixColorIndex = Property::INVALID_INDEX; - mImpl->mOpacityIndex = Property::INVALID_INDEX; mImpl->mFlags &= ~Impl::IS_ON_STAGE; } } @@ -393,14 +393,7 @@ void Visual::Base::RegisterMixColor() mImpl->mRenderer.SetProperty( Renderer::Property::BLEND_MODE, BlendMode::ON ); } - if( mImpl->mOpacityIndex == Property::INVALID_INDEX ) - { - mImpl->mOpacityIndex = DevelHandle::RegisterProperty( - mImpl->mRenderer, - Toolkit::Visual::Property::OPACITY, - OPACITY, - mImpl->mMixColor.a ); - } + mImpl->mRenderer.SetProperty( DevelRenderer::Property::OPACITY, mImpl->mMixColor.a ); float preMultipliedAlpha = 0.0f; if( IsPreMultipliedAlphaEnabled() ) @@ -417,7 +410,7 @@ void Visual::Base::SetMixColor( const Vector4& color ) if( mImpl->mRenderer ) { mImpl->mRenderer.SetProperty( mImpl->mMixColorIndex, Vector3(color) ); - mImpl->mRenderer.SetProperty( mImpl->mOpacityIndex, color.a ); + mImpl->mRenderer.SetProperty( DevelRenderer::Property::OPACITY, color.a ); if( color.a < 1.f ) { mImpl->mRenderer.SetProperty( Renderer::Property::BLEND_MODE, BlendMode::ON ); @@ -600,27 +593,22 @@ void Visual::Base::AnimateOpacityProperty( Dali::Animation& transition, Internal::TransitionData::Animator& animator ) { - Property::Index index = mImpl->mOpacityIndex; - bool isOpaque = mImpl->mMixColor.a >= 1.0f; - if( index != Property::INVALID_INDEX ) + float initialOpacity; + if( animator.initialValue.Get( initialOpacity ) ) { - float initialOpacity; - if( animator.initialValue.Get( initialOpacity ) ) - { - isOpaque = (initialOpacity >= 1.0f); - } - - float targetOpacity; - if( animator.targetValue.Get( targetOpacity ) ) - { - mImpl->mMixColor.a = targetOpacity; - } + isOpaque = (initialOpacity >= 1.0f); + } - SetupTransition( transition, animator, index, animator.initialValue, animator.targetValue ); - SetupBlendMode( transition, isOpaque, animator.animate ); + float targetOpacity; + if( animator.targetValue.Get( targetOpacity ) ) + { + mImpl->mMixColor.a = targetOpacity; } + + SetupTransition( transition, animator, DevelRenderer::Property::OPACITY, animator.initialValue, animator.targetValue ); + SetupBlendMode( transition, isOpaque, animator.animate ); } void Visual::Base::AnimateRendererProperty( @@ -699,7 +687,7 @@ void Visual::Base::AnimateMixColorProperty( SetupTransition( transition, animator, index, initialMixColor, targetMixColor ); if( animateOpacity ) { - SetupTransition( transition, animator, mImpl->mOpacityIndex, initialOpacity, targetOpacity ); + SetupTransition( transition, animator, DevelRenderer::Property::OPACITY, initialOpacity, targetOpacity ); SetupBlendMode( transition, isOpaque, animator.animate ); } } diff --git a/dali-toolkit/internal/visuals/wireframe/wireframe-visual.cpp b/dali-toolkit/internal/visuals/wireframe/wireframe-visual.cpp index 3319e92..238d4ac 100644 --- a/dali-toolkit/internal/visuals/wireframe/wireframe-visual.cpp +++ b/dali-toolkit/internal/visuals/wireframe/wireframe-visual.cpp @@ -69,11 +69,10 @@ void main()\n const char* FRAGMENT_SHADER = DALI_COMPOSE_SHADER(\n uniform lowp vec4 uColor;\n uniform lowp vec3 mixColor;\n - uniform lowp float opacity;\n \n void main()\n {\n - gl_FragColor = uColor * vec4( mixColor, opacity );\n + gl_FragColor = uColor * vec4( mixColor, 1.0 );\n }\n ); -- 2.7.4