DALI_TEST_EQUALS( label.GetProperty< Vector4 >( TextLabel::Property::TEXT_COLOR ), Vector4( 0.0f, 0.0f, 1.0f, 0.6f ), TEST_LOCATION );
DALI_TEST_EQUALS( label.GetProperty< Vector4 >( TextLabel::Property::UNUSED_PROPERTY_TEXT_COLOR ), Vector4( 0.0f, 0.0f, 1.0f, 0.6f ), TEST_LOCATION );
+ // Test a transparent text - Rendering should be skipped.
+ label.SetProperty( TextLabel::Property::TEXT, "Hello world Hello world" );
+ label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::BLUE );
+
+ Stage::GetCurrent().Add( label );
+
+ TraceCallStack& drawTrace = application.GetGlAbstraction().GetDrawTrace();
+ drawTrace.Enable( true );
+
+ application.SendNotification();
+ application.Render();
+
+ DALI_TEST_EQUALS( drawTrace.FindMethod( "DrawArrays" ), true, TEST_LOCATION ); // Should be rendered
+
+ label.SetProperty( TextLabel::Property::TEXT_COLOR, Color::TRANSPARENT );
+
+ drawTrace.Reset();
+
+ application.SendNotification();
+ application.Render();
+
+ DALI_TEST_EQUALS( drawTrace.FindMethod( "DrawArrays" ), false, TEST_LOCATION ); // Rendering should be skipped
+
END_TEST;
}
DALI_TEST_EQUALS( label.GetProperty< int >( DevelTextLabel::Property::VERTICAL_LINE_ALIGNMENT ), static_cast< int >( Toolkit::DevelText::VerticalLineAlignment::BOTTOM ), TEST_LOCATION );
END_TEST;
-}
\ No newline at end of file
+}
uniform lowp vec4 uTextColorAnimatable;\n
uniform lowp vec4 uColor;\n
uniform lowp vec3 mixColor;\n
- uniform lowp float preMultipliedAlpha;\n
\n
void main()\n
{\n
uniform sampler2D sTexture;\n
uniform lowp vec4 uColor;\n
uniform lowp vec3 mixColor;\n
- uniform lowp float preMultipliedAlpha;\n
\n
void main()\n
{\n
mediump vec4 textTexture = texture2D( sTexture, vTexCoord );\n
- textTexture.rgb *= mix( 1.0, textTexture.a, preMultipliedAlpha );\n
gl_FragColor = textTexture * uColor * vec4( mixColor, 1.0 );
}\n
uniform lowp vec4 uTextColorAnimatable;\n
uniform lowp vec4 uColor;\n
uniform lowp vec3 mixColor;\n
- uniform lowp float preMultipliedAlpha;\n
\n
void main()\n
{\n
uniform sampler2D sStyle;\n
uniform lowp vec4 uColor;\n
uniform lowp vec3 mixColor;\n
- uniform lowp float preMultipliedAlpha;\n
\n
void main()\n
{\n
mediump vec4 textTexture = texture2D( sTexture, vTexCoord );\n
mediump vec4 styleTexture = texture2D( sStyle, vTexCoord );\n
- 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 * vec4( mixColor, 1.0 );\n
uniform lowp vec4 uTextColorAnimatable;\n
uniform lowp vec4 uColor;\n
uniform lowp vec3 mixColor;\n
- uniform lowp float preMultipliedAlpha;\n
\n
void main()\n
{\n
// Markup text with multiple text colors are not animated (but can be supported later on if required).
// Emoji color are not animated.
mediump float vstep = step( 0.0001, textTexture.a );\n
- textTexture.rgb = mix( textTexture.rgb, uTextColorAnimatable.rgb, vstep * maskTexture ) * mix( 1.0, textTexture.a, preMultipliedAlpha );\n
+ textTexture.rgb = mix( textTexture.rgb, uTextColorAnimatable.rgb, vstep * maskTexture );\n
// Draw the text as overlay above the style
gl_FragColor = textTexture * uColor * vec4( mixColor, 1.0 );\n
uniform lowp vec4 uTextColorAnimatable;\n
uniform lowp vec4 uColor;\n
uniform lowp vec3 mixColor;\n
- uniform lowp float preMultipliedAlpha;\n
\n
void main()\n
{\n
// Markup text with multiple text colors are not animated (but can be supported later on if required).
// Emoji color are not animated.
mediump float vstep = step( 0.0001, textTexture.a );\n
- textTexture.rgb = mix( textTexture.rgb, uTextColorAnimatable.rgb, vstep * maskTexture * ( 1.0 - uHasMultipleTextColors ) ) * mix( 1.0, textTexture.a, preMultipliedAlpha );\n
+ textTexture.rgb = mix( textTexture.rgb, uTextColorAnimatable.rgb, vstep * maskTexture * ( 1.0 - uHasMultipleTextColors ) );\n
// Draw the text as overlay above the style
gl_FragColor = ( textTexture + styleTexture * ( 1.0 - textTexture.a ) ) * uColor * vec4( mixColor, 1.0 );\n
void OpacityConstraint( float& current, const PropertyInputContainer& inputs )
{
- current = inputs[0]->GetVector4().a;
+ // Make zero if the alpha value of text color is zero to skip rendering text
+ if( EqualsZero( inputs[0]->GetVector4().a ) )
+ {
+ current = 0.0f;
+ }
}
} // unnamed namespace
colorConstraint.AddSource( Source( actor, mAnimatableTextColorPropertyIndex ) );
colorConstraint.Apply();
+ // Make zero if the alpha value of text color is zero to skip rendering text
Constraint opacityConstraint = Constraint::New< float >( mImpl->mRenderer, Dali::DevelRenderer::Property::OPACITY, OpacityConstraint );
opacityConstraint.AddSource( Source( actor, mAnimatableTextColorPropertyIndex ) );
opacityConstraint.Apply();