X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Flayouts%2Flayout-engine.cpp;h=54a957c696e1d1661195f408e2b50da40527d78e;hb=80e64104f82d3f0e87a58c12934c50b3a009805f;hp=5a28904047e1ec60b14948403b4ae2e18b4ff545;hpb=522fdef5220890d655c8bb777b15574667a931b6;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/text/layouts/layout-engine.cpp b/dali-toolkit/internal/text/layouts/layout-engine.cpp index 5a28904..54a957c 100644 --- a/dali-toolkit/internal/text/layouts/layout-engine.cpp +++ b/dali-toolkit/internal/text/layouts/layout-engine.cpp @@ -45,6 +45,7 @@ namespace const float MAX_FLOAT = std::numeric_limits::max(); const bool RTL = true; +const float CURSOR_WIDTH = 1.f; } //namespace @@ -101,9 +102,9 @@ struct LayoutEngine::Impl : mLayout( LayoutEngine::SINGLE_LINE_BOX ), mHorizontalAlignment( LayoutEngine::HORIZONTAL_ALIGN_BEGIN ), mVerticalAlignment( LayoutEngine::VERTICAL_ALIGN_TOP ), + mCursorWidth( CURSOR_WIDTH ), mEllipsisEnabled( false ) { - mFontClient = TextAbstraction::FontClient::Get(); } /** @@ -115,7 +116,7 @@ struct LayoutEngine::Impl void UpdateLineHeight( FontId fontId, LineLayout& lineLayout ) { Text::FontMetrics fontMetrics; - mFontClient.GetFontMetrics( fontId, fontMetrics ); + mMetrics->GetFontMetrics( fontId, fontMetrics ); // Sets the maximum ascender. if( fontMetrics.ascender > lineLayout.ascender ) @@ -210,7 +211,7 @@ struct LayoutEngine::Impl float tmpExtraBearing = ( 0.f > glyphInfo.xBearing ) ? -glyphInfo.xBearing : 0.f; - tmpLineLayout.length += 1.f; // Added one unit to give some space to the cursor. + tmpLineLayout.length += mCursorWidth; // Added to give some space to the cursor. // Calculate the line height if there is no characters. FontId lastFontId = glyphInfo.fontId; @@ -450,7 +451,6 @@ struct LayoutEngine::Impl const GlyphInfo& glyph = *glyphsBuffer; float penX = ( 0.f > glyph.xBearing ) ? -glyph.xBearing : 0.f; - penX += 1.f; // Added one unit to give some space to the cursor. for( GlyphIndex i = 0u; i < numberOfGlyphs; ++i ) { @@ -632,7 +632,7 @@ struct LayoutEngine::Impl const GlyphInfo& glyphInfo = *( layoutParameters.glyphsBuffer + layoutParameters.totalNumberOfGlyphs - 1u ); Text::FontMetrics fontMetrics; - mFontClient.GetFontMetrics( glyphInfo.fontId, fontMetrics ); + mMetrics->GetFontMetrics( glyphInfo.fontId, fontMetrics ); LineRun lineRun; lineRun.glyphRun.glyphIndex = 0u; @@ -671,7 +671,6 @@ struct LayoutEngine::Impl const GlyphInfo& glyph = *( layoutParameters.glyphsBuffer + *( layoutParameters.charactersToGlyphsBuffer + characterVisualIndex ) ); float penX = ( 0.f > glyph.xBearing ) ? -glyph.xBearing : 0.f; - penX += 1.f; // Added one unit to give some space to the cursor. Vector2* glyphPositionsBuffer = glyphPositions.Begin(); @@ -817,8 +816,9 @@ struct LayoutEngine::Impl LayoutEngine::Layout mLayout; LayoutEngine::HorizontalAlignment mHorizontalAlignment; LayoutEngine::VerticalAlignment mVerticalAlignment; + float mCursorWidth; - TextAbstraction::FontClient mFontClient; + IntrusivePtr mMetrics; bool mEllipsisEnabled:1; }; @@ -834,6 +834,11 @@ LayoutEngine::~LayoutEngine() delete mImpl; } +void LayoutEngine::SetMetrics( MetricsPtr& metrics ) +{ + mImpl->mMetrics = metrics; +} + void LayoutEngine::SetLayout( Layout layout ) { mImpl->mLayout = layout; @@ -874,6 +879,16 @@ LayoutEngine::VerticalAlignment LayoutEngine::GetVerticalAlignment() const return mImpl->mVerticalAlignment; } +void LayoutEngine::SetCursorWidth( int width ) +{ + mImpl->mCursorWidth = static_cast( width ); +} + +int LayoutEngine::GetCursorWidth() const +{ + return static_cast( mImpl->mCursorWidth ); +} + bool LayoutEngine::LayoutText( const LayoutParameters& layoutParameters, Vector& glyphPositions, Vector& lines,