X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Flayouts%2Flayout-engine.cpp;h=5ee4992338333f74fd1ad52c8ef4045189ad97bb;hb=3e39b3bd20678fc2aba9618f782a830014f2062a;hp=25ea95a481e5027209207a267c38732d6a894321;hpb=cacac45f98aade99ec9bda47d126c3fb02eef79a;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 25ea95a..5ee4992 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,6 +102,7 @@ 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(); @@ -210,7 +212,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 +452,7 @@ 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. + penX += mCursorWidth; // Added to give some space to the cursor. for( GlyphIndex i = 0u; i < numberOfGlyphs; ++i ) { @@ -527,11 +529,11 @@ struct LayoutEngine::Impl penY -= layout.ascender - lineRun.descender; - ellipsisLayout.glyphIndex = lineRun.glyphIndex; + ellipsisLayout.glyphIndex = lineRun.glyphRun.glyphIndex; } else { - lineRun.glyphIndex = 0u; + lineRun.glyphRun.glyphIndex = 0u; ellipsisLayout.glyphIndex = 0u; } @@ -540,7 +542,7 @@ struct LayoutEngine::Impl currentParagraphDirection, true ); - lineRun.numberOfGlyphs = ellipsisLayout.numberOfGlyphs; + lineRun.glyphRun.numberOfGlyphs = ellipsisLayout.numberOfGlyphs; lineRun.characterRun.characterIndex = ellipsisLayout.characterIndex; lineRun.characterRun.numberOfCharacters = ellipsisLayout.numberOfCharacters; lineRun.width = ellipsisLayout.length; @@ -553,10 +555,10 @@ struct LayoutEngine::Impl actualSize.width = layoutParameters.boundingBox.width; actualSize.height += ( lineRun.ascender + -lineRun.descender ); - SetGlyphPositions( layoutParameters.glyphsBuffer + lineRun.glyphIndex, + SetGlyphPositions( layoutParameters.glyphsBuffer + lineRun.glyphRun.glyphIndex, ellipsisLayout.numberOfGlyphs, penY, - glyphPositions.Begin() + lineRun.glyphIndex ); + glyphPositions.Begin() + lineRun.glyphRun.glyphIndex ); if( 0u != numberOfLines ) { @@ -576,8 +578,8 @@ struct LayoutEngine::Impl const bool isLastLine = index + layout.numberOfGlyphs == layoutParameters.totalNumberOfGlyphs; LineRun lineRun; - lineRun.glyphIndex = index; - lineRun.numberOfGlyphs = layout.numberOfGlyphs; + lineRun.glyphRun.glyphIndex = index; + lineRun.glyphRun.numberOfGlyphs = layout.numberOfGlyphs; lineRun.characterRun.characterIndex = layout.characterIndex; lineRun.characterRun.numberOfCharacters = layout.numberOfCharacters; if( isLastLine && !layoutParameters.isLastNewParagraph ) @@ -635,8 +637,8 @@ struct LayoutEngine::Impl mFontClient.GetFontMetrics( glyphInfo.fontId, fontMetrics ); LineRun lineRun; - lineRun.glyphIndex = 0u; - lineRun.numberOfGlyphs = 0u; + lineRun.glyphRun.glyphIndex = 0u; + lineRun.glyphRun.numberOfGlyphs = 0u; lineRun.characterRun.characterIndex = 0u; lineRun.characterRun.numberOfCharacters = 0u; lineRun.width = 0.f; @@ -671,7 +673,7 @@ 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. + penX += mCursorWidth; // Added to give some space to the cursor. Vector2* glyphPositionsBuffer = glyphPositions.Begin(); @@ -817,6 +819,7 @@ struct LayoutEngine::Impl LayoutEngine::Layout mLayout; LayoutEngine::HorizontalAlignment mHorizontalAlignment; LayoutEngine::VerticalAlignment mVerticalAlignment; + float mCursorWidth; TextAbstraction::FontClient mFontClient; @@ -874,6 +877,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,