+ void InputStyleChanged(Text::InputStyle::Mask inputStyleMask) override;
+
+ /**
+ * @copydoc Text::SelectableControlInterface::SelectionChanged()
+ */
+ void SelectionChanged(uint32_t oldStart, uint32_t oldEnd, uint32_t newStart, uint32_t newEnd) override;
+
+ /**
+ * @copydoc Text::EditableControlInterface::AddDecoration()
+ */
+ void AddDecoration(Actor& actor, Toolkit::Text::DecorationType type, bool needsClipping) override;
+
+ /**
+ * @copydoc Text::EditableControlInterface::InputFiltered()
+ */
+ void InputFiltered(Toolkit::InputFilter::Property::Type type) override;
+
+ /**
+ * @copydoc Text::EditableControlInterface::GetControlBackgroundColor()
+ */
+ void GetControlBackgroundColor(Vector4& color) const override;
+
+ // From SelectableControlInterface
+public:
+
+ /**
+ * @copydoc Text::SelectableControlInterface::SetTextSelectionRange()
+ */
+ void SetTextSelectionRange(const uint32_t* start, const uint32_t* end) override;
+
+ /**
+ * @copydoc Text::SelectableControlInterface::GetTextSelectionRange()
+ */
+ Uint32Pair GetTextSelectionRange() const override;
+
+ /**
+ * @copydoc Text::SelectableControlInterface::SelectWholeText()
+ */
+ void SelectWholeText() override;
+
+ /**
+ * @copydoc Text::SelectableControlInterface::SelectNone()
+ */
+ void SelectNone() override;
+
+ /**
+ * @copydoc Text::SelectableControlInterface::SelectText()
+ */
+ void SelectText(const uint32_t start, const uint32_t end) override;
+
+ /**
+ * @copydoc Text::SelectableControlInterface::GetSelectedText()
+ */
+ string GetSelectedText() const override;
+
+ /**
+ * @copydoc Text::EditableControlInterface::IsEditable()
+ */
+ bool IsEditable() const override;
+
+ /**
+ * @copydoc Text::EditableControlInterface::SetEditable()
+ */
+ void SetEditable(bool editable) override;
+
+ /**
+ * @copydoc Dali::EditableControlInterface::CopyText()
+ */
+ string CopyText() override;
+
+ /**
+ * @copydoc Dali::EditableControlInterface::CutText()
+ */
+ string CutText() override;
+
+ /**
+ * @copydoc Text::EditableControlInterface::PasteText()
+ */
+ void PasteText() override;
+
+ // From AnchorControlInterface
+
+ /**
+ * @copydoc Text::AnchorControlInterface::AnchorClicked()
+ */
+ void AnchorClicked(const std::string& href) override;
+
+ /**
+ * @brief Get the rendered size of a specific text range.
+ * if the requested text is at multilines, multiple sizes will be returned for each text located in a separate line.
+ * if a line contains characters with different directions, multiple sizes will be returned for each block of contiguous characters with the same direction.
+ *
+ * @param[in] startIndex start index of the text requested to calculate size for.
+ * @param[in] endIndex end index(included) of the text requested to calculate size for.
+ * @return list of sizes of the reuested text.
+ */
+ Vector<Vector2> GetTextSize(const uint32_t startIndex, const uint32_t endIndex) const;
+
+ /**
+ * @brief Get the top/left rendered position of a specific text range.
+ * if the requested text is at multilines, multiple positions will be returned for each text located in a separate line.
+ * if a line contains characters with different directions, multiple positions will be returned for each block of contiguous characters with the same direction.
+ *
+ * @param[in] startIndex start index of the text requested to get position to.
+ * @param[in] endIndex end index(included) of the text requested to get position to.
+ * @return list of positions of the requested text.
+ */
+ Vector<Vector2> GetTextPosition(const uint32_t startIndex, const uint32_t endIndex) const;
+
+private: // Implementation
+ /**
+ * @copydoc Dali::Toolkit::Text::Controller::(InputMethodContext& inputMethodContext, const InputMethodContext::EventData& inputMethodContextEvent)
+ */
+ InputMethodContext::CallbackData OnInputMethodContextEvent(InputMethodContext& inputMethodContext, const InputMethodContext::EventData& inputMethodContextEvent);