X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Ftext-model.cpp;h=2d60854e0fc65416de16519d30d5f04f0d9f01af;hb=HEAD;hp=2c00cf8be89e757445f9508f9b877a9617e444e2;hpb=5d9d55db30babd7cb6662b1cab287c2ff74430d9;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/text-model.cpp b/dali-toolkit/internal/text/text-model.cpp index 2c00cf8..bbe126b 100644 --- a/dali-toolkit/internal/text/text-model.cpp +++ b/dali-toolkit/internal/text/text-model.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. + * Copyright (c) 2023 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. @@ -18,18 +18,23 @@ // CLASS HEADER #include +// EXTERNAL INCLUDES +#include + namespace Dali { - namespace Toolkit { - namespace Text { +namespace +{ +const char* DALI_ENV_MATCH_SYSTEM_LANGUAGE_DIRECTION("DALI_MATCH_SYSTEM_LANGUAGE_DIRECTION"); +} ModelPtr Model::New() { - return ModelPtr( new Model() ); + return ModelPtr(new Model()); } const Size& Model::GetControlSize() const @@ -47,16 +52,26 @@ const Vector2& Model::GetScrollPosition() const return mScrollPosition; } -Layout::HorizontalAlignment Model::GetHorizontalAlignment() const +HorizontalAlignment::Type Model::GetHorizontalAlignment() const { return mHorizontalAlignment; } -Layout::VerticalAlignment Model::GetVerticalAlignment() const +VerticalAlignment::Type Model::GetVerticalAlignment() const { return mVerticalAlignment; } +DevelText::VerticalLineAlignment::Type Model::GetVerticalLineAlignment() const +{ + return mVerticalLineAlignment; +} + +DevelText::EllipsisPosition::Type Model::GetEllipsisPosition() const +{ + return mEllipsisPosition; +} + bool Model::IsTextElideEnabled() const { return mElideEnabled; @@ -67,7 +82,7 @@ Length Model::GetNumberOfLines() const return mVisualModel->mLines.Count(); } -const LineRun* const Model::GetLines() const +const LineRun* Model::GetLines() const { return mVisualModel->mLines.Begin(); } @@ -77,36 +92,76 @@ Length Model::GetNumberOfScripts() const return mLogicalModel->mScriptRuns.Count(); } -const ScriptRun* const Model::GetScriptRuns() const +const ScriptRun* Model::GetScriptRuns() const { return mLogicalModel->mScriptRuns.Begin(); } +Length Model::GetNumberOfCharacters() const +{ + return mLogicalModel->mText.Count(); +} + Length Model::GetNumberOfGlyphs() const { return mVisualModel->mGlyphs.Count(); } -const GlyphInfo* const Model::GetGlyphs() const +GlyphIndex Model::GetStartIndexOfElidedGlyphs() const +{ + return mVisualModel->GetStartIndexOfElidedGlyphs(); +} + +GlyphIndex Model::GetEndIndexOfElidedGlyphs() const +{ + return mVisualModel->GetEndIndexOfElidedGlyphs(); +} + +GlyphIndex Model::GetFirstMiddleIndexOfElidedGlyphs() const +{ + return mVisualModel->GetFirstMiddleIndexOfElidedGlyphs(); +} + +GlyphIndex Model::GetSecondMiddleIndexOfElidedGlyphs() const +{ + return mVisualModel->GetSecondMiddleIndexOfElidedGlyphs(); +} + +const GlyphInfo* Model::GetGlyphs() const { return mVisualModel->mGlyphs.Begin(); } -const Vector2* const Model::GetLayout() const +const Vector2* Model::GetLayout() const { return mVisualModel->mGlyphPositions.Begin(); } -const Vector4* const Model::GetColors() const +const Vector4* Model::GetColors() const { return mVisualModel->mColors.Begin(); } -const ColorIndex* const Model::GetColorIndices() const +const ColorIndex* Model::GetColorIndices() const { return mVisualModel->mColorIndices.Begin(); } +const Vector4* Model::GetBackgroundColors() const +{ + return mVisualModel->mBackgroundColors.Begin(); +} + +const ColorIndex* Model::GetBackgroundColorIndices() const +{ + return mVisualModel->mBackgroundColorIndices.Begin(); +} + +bool Model::IsMarkupBackgroundColorSet() const +{ + return (mVisualModel->mBackgroundColors.Count() > 0); +} + const Vector4& Model::GetDefaultColor() const { return mVisualModel->mTextColor; @@ -122,6 +177,11 @@ const Vector4& Model::GetShadowColor() const return mVisualModel->mShadowColor; } +const float& Model::GetShadowBlurRadius() const +{ + return mVisualModel->mShadowBlurRadius; +} + const Vector4& Model::GetUnderlineColor() const { return mVisualModel->GetUnderlineColor(); @@ -132,19 +192,193 @@ bool Model::IsUnderlineEnabled() const return mVisualModel->IsUnderlineEnabled(); } +bool Model::IsMarkupUnderlineSet() const +{ + return (mVisualModel->mUnderlineRuns.Count() > 0u); +} + float Model::GetUnderlineHeight() const { return mVisualModel->GetUnderlineHeight(); } +Text::Underline::Type Model::GetUnderlineType() const +{ + return mVisualModel->GetUnderlineType(); +} + +float Model::GetDashedUnderlineWidth() const +{ + return mVisualModel->GetDashedUnderlineWidth(); +} + +float Model::GetDashedUnderlineGap() const +{ + return mVisualModel->GetDashedUnderlineGap(); +} + Length Model::GetNumberOfUnderlineRuns() const { return mVisualModel->GetNumberOfUnderlineRuns(); } -void Model::GetUnderlineRuns( GlyphRun* underlineRuns, UnderlineRunIndex index, Length numberOfRuns ) const +void Model::GetUnderlineRuns(UnderlinedGlyphRun* underlineRuns, UnderlineRunIndex index, Length numberOfRuns) const +{ + mVisualModel->GetUnderlineRuns(underlineRuns, index, numberOfRuns); +} + +const Vector2& Model::GetOutlineOffset() const +{ + return mVisualModel->GetOutlineOffset(); +} + +const Vector4& Model::GetOutlineColor() const +{ + return mVisualModel->GetOutlineColor(); +} + +uint16_t Model::GetOutlineWidth() const +{ + return mVisualModel->GetOutlineWidth(); +} + +const float& Model::GetOutlineBlurRadius() const +{ + return mVisualModel->mOutlineBlurRadius; +} + +const Vector4& Model::GetBackgroundColor() const +{ + return mVisualModel->GetBackgroundColor(); +} + +bool Model::IsBackgroundEnabled() const +{ + return mVisualModel->IsBackgroundEnabled(); +} + +bool Model::IsMarkupProcessorEnabled() const +{ + return mVisualModel->IsMarkupProcessorEnabled(); +} + +bool Model::IsSpannedTextPlaced() const +{ + return mLogicalModel->mSpannedTextPlaced; +} + +const GlyphInfo* Model::GetHyphens() const +{ + return mVisualModel->mHyphen.glyph.Begin(); +} + +const Length* Model::GetHyphenIndices() const +{ + return mVisualModel->mHyphen.index.Begin(); +} + +Length Model::GetHyphensCount() const +{ + return mVisualModel->mHyphen.glyph.Size(); +} +const Vector4& Model::GetStrikethroughColor() const +{ + return mVisualModel->GetStrikethroughColor(); +} + +bool Model::IsStrikethroughEnabled() const +{ + return mVisualModel->IsStrikethroughEnabled(); +} + +bool Model::IsMarkupStrikethroughSet() const +{ + return (mVisualModel->mStrikethroughRuns.Count() > 0u); +} + +float Model::GetStrikethroughHeight() const +{ + return mVisualModel->GetStrikethroughHeight(); +} + +Length Model::GetNumberOfStrikethroughRuns() const +{ + return mVisualModel->GetNumberOfStrikethroughRuns(); +} + +Length Model::GetNumberOfBoundedParagraphRuns() const +{ + return mLogicalModel->GetNumberOfBoundedParagraphRuns(); +} + +const Vector& Model::GetBoundedParagraphRuns() const +{ + return mLogicalModel->GetBoundedParagraphRuns(); +} + +void Model::GetStrikethroughRuns(StrikethroughGlyphRun* strikethroughRuns, StrikethroughRunIndex index, Length numberOfRuns) const +{ + mVisualModel->GetStrikethroughRuns(strikethroughRuns, index, numberOfRuns); +} + +Length Model::GetNumberOfCharacterSpacingGlyphRuns() const +{ + return mVisualModel->GetNumberOfCharacterSpacingGlyphRuns(); +} + +const Vector& Model::GetCharacterSpacingGlyphRuns() const +{ + return mVisualModel->GetCharacterSpacingGlyphRuns(); +} + +float Model::GetCharacterSpacing() const +{ + return mVisualModel->GetCharacterSpacing(); +} + +const Character* Model::GetTextBuffer() const +{ + return mLogicalModel->mText.Begin(); +} + +const Vector& Model::GetGlyphsToCharacters() const +{ + return mVisualModel->mGlyphsToCharacters; +} + +const Vector& Model::GetFontRuns() const +{ + return mLogicalModel->mFontRuns; +} + +const Vector& Model::GetFontDescriptionRuns() const +{ + return mLogicalModel->mFontDescriptionRuns; +} + +bool Model::IsRemoveFrontInset() const +{ + return mRemoveFrontInset; +} + +bool Model::IsRemoveBackInset() const +{ + return mRemoveBackInset; +} + +bool Model::IsCutoutEnabled() const +{ + return mVisualModel->IsCutoutEnabled(); +} + +const bool Model::IsBackgroundWithCutoutEnabled() const +{ + return mVisualModel->IsBackgroundWithCutoutEnabled(); +} + +const Vector4& Model::GetBackgroundColorWithCutout() const { - mVisualModel->GetUnderlineRuns( underlineRuns, index, numberOfRuns ); + return mVisualModel->GetBackgroundColorWithCutout(); } Model::Model() @@ -152,14 +386,27 @@ Model::Model() mVisualModel(), mScrollPosition(), mScrollPositionLast(), - mHorizontalAlignment( Layout::HORIZONTAL_ALIGN_BEGIN ), - mVerticalAlignment( Layout::VERTICAL_ALIGN_TOP ), - mLineWrapMode( Layout::LineWrap::WORD ), - mAlignmentOffset( 0.0f ), - mElideEnabled( false ) + mHorizontalAlignment(Text::HorizontalAlignment::BEGIN), + mVerticalAlignment(Text::VerticalAlignment::TOP), + mVerticalLineAlignment(DevelText::VerticalLineAlignment::TOP), + mLineWrapMode(Text::LineWrap::WORD), + mAlignmentOffset(0.0f), + mElideEnabled(false), + mIgnoreSpacesAfterText(true), + mRemoveFrontInset(true), + mRemoveBackInset(true), + mMatchLayoutDirection(DevelText::MatchLayoutDirection::INHERIT), + mEllipsisPosition(DevelText::EllipsisPosition::END) { mLogicalModel = LogicalModel::New(); - mVisualModel = VisualModel::New(); + mVisualModel = VisualModel::New(); + + // Check environment variable for DALI_MATCH_SYSTEM_LANGUAGE_DIRECTION + auto match = Dali::EnvironmentVariable::GetEnvironmentVariable(DALI_ENV_MATCH_SYSTEM_LANGUAGE_DIRECTION); + if(match && (std::atoi(match) == 0)) + { + mMatchLayoutDirection = DevelText::MatchLayoutDirection::CONTENTS; + } } Model::~Model()