X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ftext%2Flogical-model-impl.cpp;h=80d6595442b4274a2cb63adab8db30bfc0c91fcf;hp=807f7fb65df7ee43c1452110275a0004790de39c;hb=refs%2Fchanges%2F33%2F37133%2F3;hpb=f3cd2c3c30817bbb889e8ba8ce6b1106a1617e82 diff --git a/dali-toolkit/internal/text/logical-model-impl.cpp b/dali-toolkit/internal/text/logical-model-impl.cpp index 807f7fb..80d6595 100644 --- a/dali-toolkit/internal/text/logical-model-impl.cpp +++ b/dali-toolkit/internal/text/logical-model-impl.cpp @@ -391,15 +391,42 @@ void ReplaceBidirectionalInfo( CharacterIndex characterIndex, { } +void LogicalModel::SetCharacterDirections( const CharacterDirection* const directions, + Length numberOfCharacters ) +{ + if( 0u == numberOfCharacters ) + { + mCharacterDirections.Clear(); + } + else + { + mCharacterDirections.Resize( numberOfCharacters ); + memcpy( mCharacterDirections.Begin(), directions, numberOfCharacters * sizeof( CharacterDirection ) ); + } +} + void LogicalModel::GetCharacterDirections( CharacterDirection* directions, CharacterIndex characterIndex, Length numberOfCharacters ) const { + if( 0u == mCharacterDirections.Count() ) + { + // Nothing to retrieve if the model has no right to left characters. + return; + } + + memcpy( directions, mCharacterDirections.Begin() + characterIndex, numberOfCharacters * sizeof( CharacterDirection ) ); } CharacterDirection LogicalModel::GetCharacterDirection( CharacterIndex characterIndex ) const { - return false; + if( characterIndex >= mCharacterDirections.Count() ) + { + // The model has no right to left characters, so the vector of directions is void. + return false; + } + + return *( mCharacterDirections.Begin() + characterIndex ); } void LogicalModel::SetVisualToLogicalMap( const BidirectionalLineInfoRun* const bidirectionalInfo,