return GetImpl(textLabel).TextFitChangedSignal();
}
+AsyncTextRenderedSignalType& AsyncTextRenderedSignal(TextLabel textLabel)
+{
+ return GetImpl(textLabel).AsyncTextRenderedSignal();
+}
+
Vector<Vector2> GetTextSize(TextLabel textLabel, const uint32_t startIndex, const uint32_t endIndex)
{
return GetImpl(textLabel).GetTextSize(startIndex, endIndex);
using TextFitChangedSignalType = Signal<void(TextLabel)>;
/**
+ * @brief Async text rendered signal type.
+ *
+ * @note Signal
+ * - float : rendered width.
+ * - float : rendered height.
+ */
+using AsyncTextRenderedSignalType = Signal<void(TextLabel, float, float)>;
+
+/**
* @brief This signal is emitted when the anchor is clicked.
*
* A callback of the following type may be connected:
*/
DALI_TOOLKIT_API TextFitChangedSignalType& TextFitChangedSignal(TextLabel textLabel);
+/**
+ * @brief This signal is emitted when the async text rendered.
+ *
+ * A callback of the following type may be connected:
+ * @code
+ * void YourCallbackName(TextLabel textLabel);
+ * @endcode
+ * @param[in] textLabel The instance of TextLabel.
+ * @return The signal to connect to.
+ */
+DALI_TOOLKIT_API AsyncTextRenderedSignalType& AsyncTextRenderedSignal(TextLabel textLabel);
+
} // namespace DevelTextLabel
} // namespace Toolkit
DALI_SIGNAL_REGISTRATION(Toolkit, TextLabel, "anchorClicked", SIGNAL_ANCHOR_CLICKED)
DALI_SIGNAL_REGISTRATION(Toolkit, TextLabel, "textFitChanged", SIGNAL_TEXT_FIT_CHANGED)
+DALI_SIGNAL_REGISTRATION(Toolkit, TextLabel, "asyncTextRendered", SIGNAL_ASYNC_TEXT_RENDERED)
DALI_TYPE_REGISTRATION_END()
// clang-format on
labelImpl.TextFitChangedSignal().Connect(tracker, functor);
}
}
+ else if(0 == strcmp(signalName.c_str(), SIGNAL_ASYNC_TEXT_RENDERED))
+ {
+ if(label)
+ {
+ Internal::TextLabel& labelImpl(GetImpl(label));
+ labelImpl.AsyncTextRenderedSignal().Connect(tracker, functor);
+ }
+ }
else
{
// signalName does not match any signal
return mTextFitChangedSignal;
}
+DevelTextLabel::AsyncTextRenderedSignalType& TextLabel::AsyncTextRenderedSignal()
+{
+ return mAsyncTextRenderedSignal;
+}
+
void TextLabel::OnInitialize()
{
Actor self = Self();
// To avoid flickering issues, enable/disable the background visual when async load is completed.
EnableControlBackground(!mController->IsTextCutout());
+
+ EmitAsyncTextRenderedSignal(renderInfo.renderedSize.width, renderInfo.renderedSize.height);
}
void TextLabel::OnLayoutDirectionChanged(Actor actor, LayoutDirection::Type type)
mTextFitChangedSignal.Emit(handle);
}
+void TextLabel::EmitAsyncTextRenderedSignal(float width, float height)
+{
+ Dali::Toolkit::TextLabel handle(GetOwner());
+ mAsyncTextRenderedSignal.Emit(handle, width, height);
+}
+
void TextLabel::OnAccessibilityStatusChanged()
{
CommonTextUtils::SynchronizeTextAnchorsInParent(Self(), mController, mAnchorActors);
DevelTextLabel::TextFitChangedSignalType& TextFitChangedSignal();
/**
+ * @copydoc Dali::Toollkit::TextLabel::AsyncTextRenderedSignal()
+ */
+ DevelTextLabel::AsyncTextRenderedSignalType& AsyncTextRenderedSignal();
+
+ /**
* Connects a callback function with the object's signals.
* @param[in] object The object providing the signal.
* @param[in] tracker Used to disconnect the signal.
* @brief Emits TextFitChanged signal.
*/
void EmitTextFitChangedSignal();
+
+ /**
+ * @brief Emits AsyncTextRendered signal.
+ */
+ void EmitAsyncTextRenderedSignal(float width, float height);
+
void OnAccessibilityStatusChanged();
private: // Data
// Signals
Toolkit::DevelTextLabel::AnchorClickedSignalType mAnchorClickedSignal;
Toolkit::DevelTextLabel::TextFitChangedSignalType mTextFitChangedSignal;
+ Toolkit::DevelTextLabel::AsyncTextRenderedSignalType mAsyncTextRenderedSignal;
std::string mLocale;