const float DISTANCE_BETWEEN_IMAGE_AND_LABEL( 5.0f );
const float ANIMATION_TIME( 0.26f ); // EFL checkbox tick time
+// Required for the UV reveal shader to render the tick on top of the rest of the checkbox.
+const float SHADER_DEPTH_OFFSET = 1.0f;
BaseHandle Create()
{
// Wrap around all children
Self().SetResizePolicy( ResizePolicy::FIT_TO_CHILDREN, Dimension::ALL_DIMENSIONS );
- Image buttonImage = Dali::ResourceImage::New( UNSELECTED_BUTTON_IMAGE_DIR, ResourceImage::ON_DEMAND, ResourceImage::NEVER );
- Image selectedImage = Dali::ResourceImage::New( SELECTED_BUTTON_IMAGE_DIR, ResourceImage::ON_DEMAND, ResourceImage::NEVER );
- Image disabledImage = Dali::ResourceImage::New( DISABLED_UNSELECTED_BUTTON_IMAGE_DIR, ResourceImage::ON_DEMAND, ResourceImage::NEVER );
- Image disabledSelectedImage = Dali::ResourceImage::New( DISABLED_SELECTED_BUTTON_IMAGE_DIR, ResourceImage::ON_DEMAND, ResourceImage::NEVER );
-
- SetButtonImage( ImageActor::New( buttonImage ) );
- SetSelectedImage( ImageActor::New( selectedImage ) );
- SetDisabledImage( ImageActor::New( disabledImage ) );
- SetDisabledSelectedImage( ImageActor::New( disabledSelectedImage ) );
+ SetUnselectedImage( UNSELECTED_BUTTON_IMAGE_DIR );
+ SetSelectedImage( SELECTED_BUTTON_IMAGE_DIR );
+ SetDisabledImage( DISABLED_UNSELECTED_BUTTON_IMAGE_DIR );
+ SetDisabledSelectedImage( DISABLED_SELECTED_BUTTON_IMAGE_DIR );
}
-void CheckBoxButton::OnLabelSet()
+void CheckBoxButton::OnLabelSet( bool noPadding )
{
- Actor& label = GetLabel();
+ Actor& label = GetLabelActor();
if( label )
{
{
label.SetX( GetSelectedImage().GetNaturalSize().width + DISTANCE_BETWEEN_IMAGE_AND_LABEL );
}
- else if( GetButtonImage() )
+ else if( GetUnselectedImage() )
{
- label.SetX( GetButtonImage().GetNaturalSize().width + DISTANCE_BETWEEN_IMAGE_AND_LABEL );
+ label.SetX( GetUnselectedImage().GetNaturalSize().width + DISTANCE_BETWEEN_IMAGE_AND_LABEL );
}
else
{
Actor& backgroundImage = GetBackgroundImage();
Actor& disabledBackgroundImage = GetDisabledBackgroundImage();
- Actor& label = GetLabel();
+ Actor& label = GetLabelActor();
if( label )
{
if( IsDisabled() && disabledBackgroundImage )
{
label.SetX( GetSelectedImage().GetNaturalSize().width + DISTANCE_BETWEEN_IMAGE_AND_LABEL );
}
- else if( GetButtonImage() )
+ else if( GetUnselectedImage() )
{
- label.SetX( GetButtonImage().GetNaturalSize().width + DISTANCE_BETWEEN_IMAGE_AND_LABEL );
+ label.SetX( GetUnselectedImage().GetNaturalSize().width + DISTANCE_BETWEEN_IMAGE_AND_LABEL );
}
else
{
{
mTickUVEffect = CreateImageRegionEffect();
}
- mTickUVEffect.SetUniform("uBottomRight", Vector2( 0.0f, 1.0f ) );
+ mTickUVEffect.SetUniform( "uBottomRight", Vector2( 0.0f, 1.0f ) );
ImageActor imageActor = ImageActor::DownCast( actor );
if( imageActor )
{
+ // Ensure the tick effect is rendered above the reset of the checkbox.
+ imageActor.SetSortModifier( SHADER_DEPTH_OFFSET );
imageActor.SetShaderEffect( mTickUVEffect );
}
}
if( !mTickUVEffect )
{
- mTickUVEffect = CreateImageRegionEffect();
+ mTickUVEffect = CreateImageRegionEffect();
}
- mTickUVEffect.SetUniform("uBottomRight", Vector2::ONE );
+ mTickUVEffect.SetUniform( "uBottomRight", Vector2::ONE );
ImageActor imageActor = ImageActor::DownCast( actor );
if( imageActor )
actor.SetScale( Vector3::ONE );
if( mTickUVEffect )
{
- mTickUVEffect.SetUniform("uBottomRight", Vector2::ONE );
+ mTickUVEffect.SetUniform( "uBottomRight", Vector2::ONE );
}
}
}