X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Frendering%2Fview-model.cpp;h=0b26e4e73825baed98099a8cfbb2b5ecc4e54c62;hp=35c0a8724f4e71f20260faaca1ebe27b28b8b9cd;hb=29bbe2381a1cfdd96757dfd441e7f9747560b2c8;hpb=b0faad981257720e1a5fb15af45647f30b669adf diff --git a/dali-toolkit/internal/text/rendering/view-model.cpp b/dali-toolkit/internal/text/rendering/view-model.cpp index 35c0a87..0b26e4e 100644 --- a/dali-toolkit/internal/text/rendering/view-model.cpp +++ b/dali-toolkit/internal/text/rendering/view-model.cpp @@ -1,5 +1,5 @@ /* - * 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. @@ -23,6 +23,7 @@ #include // INTERNAL INCLUDES +#include #include namespace Dali @@ -249,12 +250,27 @@ float ViewModel::GetUnderlineHeight() const return mModel->GetUnderlineHeight(); } +Text::Underline::Type ViewModel::GetUnderlineType() const +{ + return mModel->GetUnderlineType(); +} + +float ViewModel::GetDashedUnderlineWidth() const +{ + return mModel->GetDashedUnderlineWidth(); +} + +float ViewModel::GetDashedUnderlineGap() const +{ + return mModel->GetDashedUnderlineGap(); +} + Length ViewModel::GetNumberOfUnderlineRuns() const { return mModel->GetNumberOfUnderlineRuns(); } -void ViewModel::GetUnderlineRuns(GlyphRun* underlineRuns, UnderlineRunIndex index, Length numberOfRuns) const +void ViewModel::GetUnderlineRuns(UnderlinedGlyphRun* underlineRuns, UnderlineRunIndex index, Length numberOfRuns) const { mModel->GetUnderlineRuns(underlineRuns, index, numberOfRuns); } @@ -299,13 +315,33 @@ Length ViewModel::GetHyphensCount() const return mModel->GetHyphensCount(); } +const float ViewModel::GetCharacterSpacing() const +{ + return mModel->GetCharacterSpacing(); +} + +const Character* ViewModel::GetTextBuffer() const +{ + return mModel->GetTextBuffer(); +} + +const Vector& ViewModel::GetGlyphsToCharacters() const +{ + return mModel->GetGlyphsToCharacters(); +} + void ViewModel::ElideGlyphs() { mIsTextElided = false; mStartIndexOfElidedGlyphs = mFirstMiddleIndexOfElidedGlyphs = mSecondMiddleIndexOfElidedGlyphs = 0; mEndIndexOfElidedGlyphs = mModel->GetNumberOfGlyphs() - 1u; - auto ellipsisPosition = GetEllipsisPosition(); + auto ellipsisPosition = GetEllipsisPosition(); + auto characterSpacing = GetCharacterSpacing(); + const Character* textBuffer = GetTextBuffer(); + const Vector& glyphToCharacterMap = GetGlyphsToCharacters(); + const CharacterIndex* glyphToCharacterMapBuffer = glyphToCharacterMap.Begin(); + float calculatedAdvance = 0.f; if(IsTextElideEnabled()) { @@ -449,7 +485,7 @@ void ViewModel::ElideGlyphs() // Need to reshape the glyph as the font may be different in size. const GlyphInfo& ellipsisGlyph = fontClient.GetEllipsisGlyph(fontClient.GetPointSize(glyphToRemove.fontId)); - if(!firstPenSet) + if(!firstPenSet || EqualsZero(glyphToRemove.advance)) { const Vector2& position = *(elidedPositionsBuffer + indexOfEllipsis); @@ -469,7 +505,8 @@ void ViewModel::ElideGlyphs() firstPenSet = true; } - removedGlypsWidth += std::min(glyphToRemove.advance, (glyphToRemove.xBearing + glyphToRemove.width)); + calculatedAdvance = GetCalculatedAdvance(*(textBuffer + (*(glyphToCharacterMapBuffer + indexOfEllipsis))), characterSpacing, glyphToRemove.advance); + removedGlypsWidth += std::min(calculatedAdvance, (glyphToRemove.xBearing + glyphToRemove.width)); // Calculate the width of the ellipsis glyph and check if it fits. const float ellipsisGlyphWidth = ellipsisGlyph.width + ellipsisGlyph.xBearing; @@ -583,6 +620,41 @@ void ViewModel::ElideGlyphs() } } +float ViewModel::GetStrikethroughHeight() const +{ + return mModel->GetStrikethroughHeight(); +} + +const Vector4& ViewModel::GetStrikethroughColor() const +{ + return mModel->GetStrikethroughColor(); +} + +bool ViewModel::IsStrikethroughEnabled() const +{ + return mModel->IsStrikethroughEnabled(); +} + +Length ViewModel::GetNumberOfStrikethroughRuns() const +{ + return mModel->GetNumberOfStrikethroughRuns(); +} + +void ViewModel::GetStrikethroughRuns(StrikethroughGlyphRun* strikethroughRuns, StrikethroughRunIndex index, Length numberOfRuns) const +{ + mModel->GetStrikethroughRuns(strikethroughRuns, index, numberOfRuns); +} + +Length ViewModel::GetNumberOfBoundedParagraphRuns() const +{ + return mModel->GetNumberOfBoundedParagraphRuns(); +} + +const Vector& ViewModel::GetBoundedParagraphRuns() const +{ + return mModel->GetBoundedParagraphRuns(); +} + } // namespace Text } // namespace Toolkit