From: Eunki, Hong Date: Wed, 18 May 2022 11:22:32 +0000 (+0900) Subject: Fix text render issue when use tiling X-Git-Tag: dali_2.1.23~1 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=65e58b27f299fb8a469722c54ee53fd09d88e37d Fix text render issue when use tiling Due to the "uTextColorAnimatable" uniform values are not registered into tiling renderer, It show some strange color when we required some tiling text feature. This patch make that all other renderers in mRenderList also have there own constraint relative with TextLabel's TEXT_COLOR index so tilied renderes also rendering well Change-Id: I36198372f1a585529b25080919bf96be939577fa Signed-off-by: Eunki, Hong --- diff --git a/dali-toolkit/internal/visuals/text/text-visual.cpp b/dali-toolkit/internal/visuals/text/text-visual.cpp index 9744ca5..777e48f 100644 --- a/dali-toolkit/internal/visuals/text/text-visual.cpp +++ b/dali-toolkit/internal/visuals/text/text-visual.cpp @@ -342,8 +342,6 @@ void TextVisual::DoSetOnScene(Actor& actor) // Renderer needs textures and to be added to control mRendererUpdateNeeded = true; - mRendererList.push_back(mImpl->mRenderer); - UpdateRenderer(); } @@ -766,12 +764,38 @@ void TextVisual::AddRenderer(Actor& actor, const Vector2& size, bool hasMultiple mImpl->mFlags &= ~Impl::IS_ATLASING_APPLIED; + const Vector4& defaultColor = mController->GetTextModel()->GetDefaultColor(); + for(RendererContainer::iterator iter = mRendererList.begin(); iter != mRendererList.end(); ++iter) { Renderer renderer = (*iter); if(renderer) { actor.AddRenderer(renderer); + + if(renderer != mImpl->mRenderer) + { + // Set constraint for text label's color for non-default renderers. + if(mAnimatableTextColorPropertyIndex != Property::INVALID_INDEX) + { + // Register unique property, or get property for default renderer. + Property::Index index = renderer.RegisterUniqueProperty("uTextColorAnimatable", defaultColor); + + // Create constraint for the animatable text's color Property with uTextColorAnimatable in the renderer. + if(index != Property::INVALID_INDEX) + { + Constraint colorConstraint = Constraint::New(renderer, index, TextColorConstraint); + colorConstraint.AddSource(Source(actor, mAnimatableTextColorPropertyIndex)); + colorConstraint.Apply(); + } + + // Make zero if the alpha value of text color is zero to skip rendering text + // VisualRenderer::Property::OPACITY uses same animatable property internally. + Constraint opacityConstraint = Constraint::New(renderer, Dali::DevelRenderer::Property::OPACITY, OpacityConstraint); + opacityConstraint.AddSource(Source(actor, mAnimatableTextColorPropertyIndex)); + opacityConstraint.Apply(); + } + } } } }