X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Ftext-controls%2Fcommon-text-utils.h;h=a0d0ad48c6e0fc10e8ca46e753e388ed5b925a53;hb=ff6ce970724ccc8bee65f7c93411b274907c09d7;hp=212f162cc98b2d3e84dd698d5c8938c2c550535a;hpb=79f571c4268280bc8384dae746193742f713e745;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/text-controls/common-text-utils.h b/dali-toolkit/internal/controls/text-controls/common-text-utils.h index 212f162..a0d0ad4 100644 --- a/dali-toolkit/internal/controls/text-controls/common-text-utils.h +++ b/dali-toolkit/internal/controls/text-controls/common-text-utils.h @@ -16,15 +16,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ + +// EXTERNAL INCLUDES +#include +#include +#include +#include +#include + +// INTERNAL INCLUDES +#include #include #include #include #include #include #include -#include - -#include namespace Dali::Toolkit::Internal { @@ -53,6 +60,7 @@ public: float& alignmentOffset, Actor& renderableActor, Actor& backgroundActor, + Actor& cursorLayerActor, Toolkit::Control& stencil, std::vector& clippingDecorationActors, std::vector& anchorActors, @@ -70,6 +78,181 @@ public: std::vector& anchorActors); }; +class TextControlAccessible : public DevelControl::ControlAccessible, + public virtual Dali::Accessibility::Text, + public virtual Dali::Accessibility::Hypertext +{ +public: + using DevelControl::ControlAccessible::ControlAccessible; + + // Text + + /** + * @copydoc Dali::Accessibility::Text::GetCharacterCount() + */ + std::size_t GetCharacterCount() const override; + + /** + * @copydoc Dali::Accessibility::Text::GetCursorOffset() + */ + std::size_t GetCursorOffset() const override; + + /** + * @copydoc Dali::Accessibility::Text::GetRangeExtents() + */ + Rect<> GetRangeExtents(std::size_t startOffset, std::size_t endOffset, Accessibility::CoordinateType type) override; + + /** + * @copydoc Dali::Accessibility::Text::GetRangeOfSelection() + */ + Accessibility::Range GetRangeOfSelection(std::size_t selectionIndex) const override; + + /** + * @copydoc Dali::Accessibility::Text::GetText() + */ + std::string GetText(std::size_t startOffset, std::size_t endOffset) const override; + + /** + * @copydoc Dali::Accessibility::Text::GetTextAtOffset() + */ + Accessibility::Range GetTextAtOffset(std::size_t offset, Accessibility::TextBoundary boundary) const override; + + /** + * @copydoc Dali::Accessibility::Text::RemoveSelection() + */ + bool RemoveSelection(std::size_t selectionIndex) override; + + /** + * @copydoc Dali::Accessibility::Text::SetCursorOffset() + */ + bool SetCursorOffset(std::size_t offset) override; + + /** + * @copydoc Dali::Accessibility::Text::SetRangeOfSelection() + */ + bool SetRangeOfSelection(std::size_t selectionIndex, std::size_t startOffset, std::size_t endOffset) override; + + // Hypertext + + /** + * @copydoc Dali::Accessibility::Hypertext::GetLink() + */ + Accessibility::Hyperlink* GetLink(std::int32_t linkIndex) const override; + + /** + * @copydoc Dali::Accessibility::Hypertext::GetLinkCount() + */ + std::int32_t GetLinkCount() const override; + + /** + * @copydoc Dali::Accessibility::Hypertext::GetLinkIndex() + */ + std::int32_t GetLinkIndex(std::int32_t characterOffset) const override; + +protected: + /** + * @brief Gets whole text. + * + * @return The text + */ + std::string GetWholeText() const; + + /** + * @brief Gets text anchors. + * + * @return Text anchors + */ + virtual const std::vector& GetTextAnchors() const = 0; + + /** + * @brief Gets text controller. + * + * @return The text controller + */ + virtual Toolkit::Text::ControllerPtr GetTextController() const = 0; + + /** + * @brief Get substitute character for hidden text. + * + * @return The substitute character (Unicode codepoint) + */ + virtual std::uint32_t GetSubstituteCharacter() const; + + /** + * @brief Checks whether text should be hidden (replaced with substitute characters). + * + * @return True if text should be hidden, false otherwise + */ + virtual bool IsHiddenInput() const; + + /** + * @brief Checks whether [startPosition, endPosition) is a valid, non-empty range within a given string. + * + * @param string Source string + * @param begin Start index (inclusive) + * @param end End index (exclusive) + * @return true if the range is valid, false otherwise + */ + static bool ValidateRange(const std::string& string, std::size_t begin, std::size_t end); +}; + +class EditableTextControlAccessible : public TextControlAccessible, + public virtual Dali::Accessibility::EditableText +{ +public: + using TextControlAccessible::TextControlAccessible; + + /** + * @copydoc Dali::Toolkit::DevelControl::ControlAccessible::CalculateStates() + */ + Accessibility::States CalculateStates() override; + + // Text + + /** + * @copydoc Dali::Accessibility::Text::GetCursorOffset() + */ + std::size_t GetCursorOffset() const override; + + /** + * @copydoc Dali::Accessibility::Text::SetCursorOffset() + */ + bool SetCursorOffset(std::size_t offset) override; + + // EditableText + + /** + * @copydoc Dali::Accessibility::EditableText::CopyText() + */ + bool CopyText(size_t startPosition, size_t endPosition) override; + + /** + * @copydoc Dali::Accessibility::EditableText::CutText() + */ + bool CutText(size_t startPosition, size_t endPosition) override; + + /** + * @copydoc Dali::Accessibility::EditableText::DeleteText() + */ + bool DeleteText(size_t startPosition, size_t endPosition) override; + + /** + * @copydoc Dali::Accessibility::EditableText::InsertText() + */ + bool InsertText(size_t startPosition, std::string text) override; + + /** + * @copydoc Dali::Accessibility::EditableText::SetTextContents() + */ + bool SetTextContents(std::string newContents) override; + +protected: + /** + * @brief Requests text relayout. + */ + virtual void RequestTextRelayout() = 0; +}; + } // namespace Dali::Toolkit::Internal #endif //DALI_TOOLKIT_INTERNAL_TEXT_CONTROLS_COMMON_TEXT_UTILS_H