From: Bowon Ryu Date: Fri, 12 Jul 2024 05:02:03 +0000 (+0900) Subject: Add manual rendered property to text label X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=6e45dd0f0621071af6c025d1cf44b06b0a2b5b98;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git Add manual rendered property to text label Whether the last async rendering result is a manual render. If it's false, the render result was automatically requested by OnRelayout. Change-Id: I99798b64bce31d04992403a2dc44ce137e9fa575 Signed-off-by: Bowon Ryu --- diff --git a/dali-toolkit/devel-api/controls/text-controls/text-label-devel.h b/dali-toolkit/devel-api/controls/text-controls/text-label-devel.h index f277f95..f3a66c1 100644 --- a/dali-toolkit/devel-api/controls/text-controls/text-label-devel.h +++ b/dali-toolkit/devel-api/controls/text-controls/text-label-devel.h @@ -262,6 +262,13 @@ enum Type * ASYNC_MANUAL : users should manually request rendering using the async text method. */ RENDER_MODE, + + /** + * @brief Whether the last rendering result is a manual render. + * @details Name "manualRender", type Property::BOOLEAN. + * @note If it's false, the render result was automatically requested by OnRelayout. + */ + MANUAL_RENDERED, }; } // namespace Property diff --git a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp index 787901b..b04f808 100644 --- a/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-label-impl.cpp @@ -149,6 +149,7 @@ DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextLabel, "removeFrontInset DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextLabel, "removeBackInset", BOOLEAN, REMOVE_BACK_INSET ) DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextLabel, "cutout", BOOLEAN, CUTOUT ) DALI_DEVEL_PROPERTY_REGISTRATION(Toolkit, TextLabel, "renderMode", INTEGER, RENDER_MODE ) +DALI_DEVEL_PROPERTY_REGISTRATION_READ_ONLY(Toolkit, TextLabel, "manualRendered", BOOLEAN, MANUAL_RENDERED ) DALI_ANIMATABLE_PROPERTY_REGISTRATION_WITH_DEFAULT(Toolkit, TextLabel, "textColor", Color::BLACK, TEXT_COLOR ) DALI_ANIMATABLE_PROPERTY_COMPONENT_REGISTRATION(Toolkit, TextLabel, "textColorRed", TEXT_COLOR_RED, TEXT_COLOR, 0) @@ -957,6 +958,11 @@ Property::Value TextLabel::GetProperty(BaseObject* object, Property::Index index value = impl.mController->GetRenderMode(); break; } + case Toolkit::DevelTextLabel::Property::MANUAL_RENDERED: + { + value = impl.mManualRendered; + break; + } } } @@ -1630,6 +1636,8 @@ void TextLabel::AsyncLoadComplete(Text::AsyncTextRenderInfo renderInfo) mIsManualRendered = true; } + mManualRendered = renderInfo.manualRendered; + EmitAsyncTextRenderedSignal(renderInfo.renderedSize.width + (padding.start + padding.end), renderInfo.renderedSize.height + (padding.top + padding.bottom)); } @@ -1680,7 +1688,8 @@ TextLabel::TextLabel(ControlBehaviour additionalBehaviour) mIsPropertyUpdated(false), mIsSizeChanged(false), mIsManualRender(false), - mIsManualRendered(false) + mIsManualRendered(false), + mManualRendered(false) { } @@ -1804,6 +1813,7 @@ void TextLabel::RequestAsyncRenderWithFixedSize(float width, float height) AsyncTextParameters parameters = GetAsyncTextParameters(contentSize, padding, layoutDirection); parameters.renderType = AsyncTextParameters::FIXED_SIZE; + parameters.manualRender = true; TextVisual::UpdateAsyncRenderer(mVisual, parameters); mTextUpdateNeeded = false; @@ -1840,6 +1850,7 @@ void TextLabel::RequestAsyncRenderWithFixedWidth(float width, float heightConstr AsyncTextParameters parameters = GetAsyncTextParameters(contentSize, padding, layoutDirection); parameters.renderType = AsyncTextParameters::FIXED_WIDTH; + parameters.manualRender = true; TextVisual::UpdateAsyncRenderer(mVisual, parameters); mTextUpdateNeeded = false; @@ -1876,6 +1887,7 @@ void TextLabel::RequestAsyncRenderWithConstraint(float widthConstraint, float he AsyncTextParameters parameters = GetAsyncTextParameters(contentSize, padding, layoutDirection); parameters.renderType = AsyncTextParameters::CONSTRAINT; + parameters.manualRender = true; TextVisual::UpdateAsyncRenderer(mVisual, parameters); mTextUpdateNeeded = false; diff --git a/dali-toolkit/internal/controls/text-controls/text-label-impl.h b/dali-toolkit/internal/controls/text-controls/text-label-impl.h index 14cda70..f3640c2 100644 --- a/dali-toolkit/internal/controls/text-controls/text-label-impl.h +++ b/dali-toolkit/internal/controls/text-controls/text-label-impl.h @@ -456,6 +456,7 @@ private: // Data bool mIsSizeChanged : 1; // whether the size has been changed or not. bool mIsManualRender : 1; // whether an async manual render has been requested, returns false when completed. bool mIsManualRendered : 1; // whether an async manual render has been completed, returns false on the next relayout. + bool mManualRendered : 1; protected: /** diff --git a/dali-toolkit/internal/text/async-text/async-text-loader-impl.cpp b/dali-toolkit/internal/text/async-text/async-text-loader-impl.cpp index 74fcfa0..623b26e 100644 --- a/dali-toolkit/internal/text/async-text/async-text-loader-impl.cpp +++ b/dali-toolkit/internal/text/async-text/async-text-loader-impl.cpp @@ -1053,6 +1053,7 @@ AsyncTextRenderInfo AsyncTextLoader::Render(AsyncTextParameters& parameters) renderInfo.containsColorGlyph = containsColorGlyph; renderInfo.styleEnabled = styleEnabled; renderInfo.isOverlayStyle = isOverlayStyle; + renderInfo.manualRendered = parameters.manualRender; if(cutoutEnabled) { diff --git a/dali-toolkit/internal/text/async-text/async-text-loader.h b/dali-toolkit/internal/text/async-text/async-text-loader.h index cf87b5e..dd71c00 100644 --- a/dali-toolkit/internal/text/async-text/async-text-loader.h +++ b/dali-toolkit/internal/text/async-text/async-text-loader.h @@ -54,6 +54,7 @@ struct AsyncTextParameters AsyncTextParameters() : renderType{FIXED_SIZE}, + manualRender{false}, maxTextureSize{0}, text{}, fontSize{0.f}, @@ -122,6 +123,7 @@ struct AsyncTextParameters } RenderType renderType; + bool manualRender : 1; int maxTextureSize; ///< The maximum size of texture. @@ -218,7 +220,8 @@ struct AsyncTextRenderInfo styleEnabled(false), isOverlayStyle(false), isTextDirectionRTL(false), - isCutout(false) + isCutout(false), + manualRendered(false) { } @@ -242,6 +245,7 @@ struct AsyncTextRenderInfo bool isOverlayStyle; bool isTextDirectionRTL; bool isCutout; + bool manualRendered; }; /**