X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-controller-impl.h;h=59440393baa97aa8421d5484a9aedbe86716a9cf;hp=e49971a1337ac41b3737cf7b4220625ac897aa33;hb=6a219d0bbcfd016e24b5466d5fb1a666c92feae5;hpb=70468ae7ba6b75df1db1063e9b3fcf0313ffd787 diff --git a/dali-toolkit/internal/text/text-controller-impl.h b/dali-toolkit/internal/text/text-controller-impl.h index e49971a..5944039 100644 --- a/dali-toolkit/internal/text/text-controller-impl.h +++ b/dali-toolkit/internal/text/text-controller-impl.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_TEXT_CONTROLLER_IMPL_H /* - * Copyright (c) 2021 Samsung Electronics Co., Ltd. + * Copyright (c) 2022 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -41,6 +41,7 @@ const float DEFAULT_TEXTFIT_MIN = 10.f; const float DEFAULT_TEXTFIT_MAX = 100.f; const float DEFAULT_TEXTFIT_STEP = 1.f; const float DEFAULT_FONT_SIZE_SCALE = 1.f; +const float DEFAULT_DISABLED_COLOR_OPACITY = 0.3f; //Forward declarations struct CursorInfo; @@ -351,14 +352,19 @@ struct Controller::Impl mShadowSetByString(false), mOutlineSetByString(false), mFontStyleSetByString(false), + mStrikethroughSetByString(false), mShouldClearFocusOnEscape(true), mLayoutDirection(LayoutDirection::LEFT_TO_RIGHT), mTextFitMinSize(DEFAULT_TEXTFIT_MIN), mTextFitMaxSize(DEFAULT_TEXTFIT_MAX), mTextFitStepSize(DEFAULT_TEXTFIT_STEP), - mTextFitEnabled(false), mFontSizeScale(DEFAULT_FONT_SIZE_SCALE), - mIsLayoutDirectionChanged(false) + mDisabledColorOpacity(DEFAULT_DISABLED_COLOR_OPACITY), + mFontSizeScaleEnabled(true), + mTextFitEnabled(false), + mTextFitChanged(false), + mIsLayoutDirectionChanged(false), + mIsUserInteractionEnabled(true) { mModel = Model::New(); @@ -366,6 +372,7 @@ struct Controller::Impl mClipboard = Clipboard::Get(); mView.SetVisualModel(mModel->mVisualModel); + mView.SetLogicalModel(mModel->mLogicalModel); // Use this to access FontClient i.e. to get down-scaled Emoji metrics. mMetrics = Metrics::New(mFontClient); @@ -496,6 +503,11 @@ struct Controller::Impl } } + float GetFontSizeScale() + { + return mFontSizeScaleEnabled ? mFontSizeScale : 1.0f; + } + /** * @brief Helper to notify InputMethodContext with surrounding text & cursor changes. */ @@ -523,6 +535,13 @@ struct Controller::Impl Length GetNumberOfWhiteSpaces(CharacterIndex index) const; /** + * @brief Retrieve any text previously set. + * + * @param[out] text A string of UTF-8 characters. + */ + void GetText(std::string& text) const; + + /** * @brief Retrieve any text previously set starting from the given @p index. * * @param[in] index The character index from where to retrieve the text. @@ -550,6 +569,12 @@ struct Controller::Impl Dali::LayoutDirection::Type GetLayoutDirection(Dali::Actor& actor) const; /** + * @brief Checks text direction. + * @return The text direction. + */ + Toolkit::DevelText::TextDirection::Type GetTextDirection(); + + /** * @brief Calculates the start character index of the first paragraph to be updated and * the end character index of the last paragraph to be updated. * @@ -605,6 +630,16 @@ struct Controller::Impl bool SetDefaultLineSize(float lineSize); /** + * @copydoc Controller::SetRelativeLineSize + */ + bool SetRelativeLineSize(float relativeLineSize); + + /** + * @copydoc Controller::GetRelativeLineSize + */ + float GetRelativeLineSize(); + + /** * @copydoc Text::Controller::GetPrimaryCursorPosition() */ CharacterIndex GetPrimaryCursorPosition() const; @@ -615,6 +650,21 @@ struct Controller::Impl bool SetPrimaryCursorPosition(CharacterIndex index, bool focused); /** + * @copydoc Text::SelectableControlInterface::GetSelectedText() + */ + string GetSelectedText(); + + /** + * @copydoc Text::EditableControlInterface::CopyText() + */ + string CopyText(); + + /** + * @copydoc Text::EditableControlInterface::CutText() + */ + string CutText(); + + /** * @copydoc Text::SelectableControlInterface::SetTextSelectionRange() */ void SetTextSelectionRange(const uint32_t* pStart, const uint32_t* pEndf); @@ -762,9 +812,9 @@ struct Controller::Impl Actor CreateBackgroundActor(); /** - * @brief fill needed relayout parameters when line size is changed & request relayout. + * @brief fill needed relayout parameters whenever a property is changed and a re-layout is needed for the entire text. */ - void RelayoutForNewLineSize(); + void RelayoutAllCharacters(); /** * @copydoc Controller::IsInputStyleChangedSignalsQueueEmpty @@ -827,6 +877,11 @@ struct Controller::Impl void SetDefaultColor(const Vector4& color); /** + * @copydoc Controller::SetUserInteractionEnabled() + */ + void SetUserInteractionEnabled(bool enabled); + + /** * @brief Helper to clear font-specific data (only). */ void ClearFontData(); @@ -908,6 +963,18 @@ private: */ void CopyUnderlinedFromLogicalToVisualModels(bool shouldClearPreUnderlineRuns); + /** + * @brief Copy strikethrough-Character-Runs from Logical-Model to strikethrough-Glyph-Runs in Visual-Model + * + */ + void CopyStrikethroughFromLogicalToVisualModels(); + + /** + * @brief Copy CharacterSpacing-Character-Runs from Logical-Model to CharacterSpacing-Glyph-Runs in Visual-Model + * + */ + void CopyCharacterSpacingFromLogicalToVisualModels(); + public: ControlInterface* mControlInterface; ///< Reference to the text controller. EditableControlInterface* mEditableControlInterface; ///< Reference to the editable text controller. @@ -945,6 +1012,7 @@ public: bool mShadowSetByString : 1; ///< Set when shadow is set by string (legacy) instead of map bool mOutlineSetByString : 1; ///< Set when outline is set by string (legacy) instead of map bool mFontStyleSetByString : 1; ///< Set when font style is set by string (legacy) instead of map + bool mStrikethroughSetByString : 1; ///< Set when strikethrough is set by string (legacy) instead of map bool mShouldClearFocusOnEscape : 1; ///< Whether text control should clear key input focus LayoutDirection::Type mLayoutDirection; ///< Current system language direction @@ -953,10 +1021,13 @@ public: float mTextFitMinSize; ///< Minimum Font Size for text fit. Default 10 float mTextFitMaxSize; ///< Maximum Font Size for text fit. Default 100 float mTextFitStepSize; ///< Step Size for font intervalse. Default 1 - bool mTextFitEnabled : 1; ///< Whether the text's fit is enabled. - float mTextFitChanged; ///< Whether the text fit property has changed. float mFontSizeScale; ///< Scale value for Font Size. Default 1.0 + float mDisabledColorOpacity; ///< Color opacity when disabled. + bool mFontSizeScaleEnabled : 1; ///< Whether the font size scale is enabled. + bool mTextFitEnabled : 1; ///< Whether the text's fit is enabled. + bool mTextFitChanged : 1; ///< Whether the text fit property has changed. bool mIsLayoutDirectionChanged : 1; ///< Whether the layout has changed. + bool mIsUserInteractionEnabled : 1; ///< Whether the user interaction is enabled. private: friend ControllerImplEventHandler;