X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Frendering%2Fview-model.cpp;h=0e8dc617815791160cbc66ba060e3bd132dd89b5;hb=893ca7b6b58b59ed4671daf867c4a319d8c9a770;hp=5636506013df8053c9a5027add65738557c91c86;hpb=ee431c9e2b342243f9e0e2b6bafca7505d321457;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/rendering/view-model.cpp b/dali-toolkit/internal/text/rendering/view-model.cpp old mode 100644 new mode 100755 index 5636506..0e8dc61 --- a/dali-toolkit/internal/text/rendering/view-model.cpp +++ b/dali-toolkit/internal/text/rendering/view-model.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 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. @@ -61,16 +61,21 @@ const Vector2& ViewModel::GetScrollPosition() const return mModel->GetScrollPosition(); } -Layout::HorizontalAlignment ViewModel::GetHorizontalAlignment() const +HorizontalAlignment::Type ViewModel::GetHorizontalAlignment() const { return mModel->GetHorizontalAlignment(); } -Layout::VerticalAlignment ViewModel::GetVerticalAlignment() const +VerticalAlignment::Type ViewModel::GetVerticalAlignment() const { return mModel->GetVerticalAlignment(); } +DevelText::VerticalLineAlignment::Type ViewModel::GetVerticalLineAlignment() const +{ + return mModel->GetVerticalLineAlignment(); +} + bool ViewModel::IsTextElideEnabled() const { return mModel->IsTextElideEnabled(); @@ -86,6 +91,16 @@ const LineRun* const ViewModel::GetLines() const return mModel->GetLines(); } +Length ViewModel::GetNumberOfScripts() const +{ + return mModel->GetNumberOfScripts(); +} + +const ScriptRun* const ViewModel::GetScriptRuns() const +{ + return mModel->GetScriptRuns(); +} + Length ViewModel::GetNumberOfGlyphs() const { if( mIsTextElided && mModel->IsTextElideEnabled() ) @@ -138,11 +153,81 @@ const ColorIndex* const ViewModel::GetColorIndices() const return mModel->GetColorIndices(); } +const Vector4* const ViewModel::GetBackgroundColors() const +{ + return mModel->GetBackgroundColors(); +} + +const ColorIndex* const ViewModel::GetBackgroundColorIndices() const +{ + return mModel->GetBackgroundColorIndices(); +} + const Vector4& ViewModel::GetDefaultColor() const { return mModel->GetDefaultColor(); } +const Vector2& ViewModel::GetShadowOffset() const +{ + return mModel->GetShadowOffset(); +} + +const Vector4& ViewModel::GetShadowColor() const +{ + return mModel->GetShadowColor(); +} + +const float& ViewModel::GetShadowBlurRadius() const +{ + return mModel->GetShadowBlurRadius(); +} + +const Vector4& ViewModel::GetUnderlineColor() const +{ + return mModel->GetUnderlineColor(); +} + +bool ViewModel::IsUnderlineEnabled() const +{ + return mModel->IsUnderlineEnabled(); +} + +float ViewModel::GetUnderlineHeight() const +{ + return mModel->GetUnderlineHeight(); +} + +Length ViewModel::GetNumberOfUnderlineRuns() const +{ + return mModel->GetNumberOfUnderlineRuns(); +} + +void ViewModel::GetUnderlineRuns( GlyphRun* underlineRuns, UnderlineRunIndex index, Length numberOfRuns ) const +{ + mModel->GetUnderlineRuns( underlineRuns, index, numberOfRuns ); +} + +const Vector4& ViewModel::GetOutlineColor() const +{ + return mModel->GetOutlineColor(); +} + +uint16_t ViewModel::GetOutlineWidth() const +{ + return mModel->GetOutlineWidth(); +} + +const Vector4& ViewModel::GetBackgroundColor() const +{ + return mModel->GetBackgroundColor(); +} + +bool ViewModel::IsBackgroundEnabled() const +{ + return mModel->IsBackgroundEnabled(); +} + void ViewModel::ElideGlyphs() { mIsTextElided = false; @@ -222,7 +307,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 + index ); @@ -239,7 +324,10 @@ void ViewModel::ElideGlyphs() removedGlypsWidth = -ellipsisGlyph.xBearing; - firstPenSet = true; + if( !EqualsZero( firstPenX ) ) + { + firstPenSet = true; + } } removedGlypsWidth += std::min( glyphToRemove.advance, ( glyphToRemove.xBearing + glyphToRemove.width ) ); @@ -247,7 +335,8 @@ void ViewModel::ElideGlyphs() // Calculate the width of the ellipsis glyph and check if it fits. const float ellipsisGlyphWidth = ellipsisGlyph.width + ellipsisGlyph.xBearing; - if( ellipsisGlyphWidth < removedGlypsWidth ) + // If it is the last glyph to remove, add the ellipsis glyph without checking its width. + if( ( ellipsisGlyphWidth < removedGlypsWidth ) || ( index == 0u ) ) { GlyphInfo& glyphInfo = *( elidedGlyphsBuffer + index ); Vector2& position = *( elidedPositionsBuffer + index ); @@ -257,10 +346,13 @@ void ViewModel::ElideGlyphs() glyphInfo = ellipsisGlyph; // Change the 'x' and 'y' position of the ellipsis glyph. - if( position.x > firstPenX ) { - position.x = firstPenX + removedGlypsWidth - ellipsisGlyphWidth; + position.x = firstPenX; + if (ellipsisGlyphWidth < removedGlypsWidth) + { + position.x += removedGlypsWidth - ellipsisGlyphWidth; + } } position.x += ellipsisGlyph.xBearing;