From: Victor Cebollada Date: Mon, 25 Apr 2016 07:38:52 +0000 (+0100) Subject: TextModel - Remove the logical to visual conversion table. X-Git-Tag: dali_1.1.32~17 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=ba97ce44c977dc567b46e685a10a64b8cd70d4cd TextModel - Remove the logical to visual conversion table. * Is not needed. Change-Id: I19e208281bfe70dbf5abe7de37059b4d259ee0fb Signed-off-by: Victor Cebollada --- diff --git a/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/toolkit-text-model.cpp b/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/toolkit-text-model.cpp index 4bba1f9..9f39bd2 100644 --- a/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/toolkit-text-model.cpp +++ b/automated-tests/src/dali-toolkit-internal/dali-toolkit-test-utils/toolkit-text-model.cpp @@ -81,7 +81,6 @@ void ClearModelData( CharacterIndex characterIndex, logicalModel->mBidirectionalParagraphInfo.Clear(); logicalModel->mCharacterDirections.Clear(); logicalModel->mBidirectionalLineInfo.Clear(); - logicalModel->mLogicalToVisualMap.Clear(); logicalModel->mVisualToLogicalMap.Clear(); visualModel->mGlyphs.Clear(); visualModel->mGlyphsToCharacters.Clear(); @@ -323,9 +322,7 @@ void CreateTextModel( const std::string& text, layoutParameters.numberOfBidirectionalInfoRuns = bidirectionalLineInfo.Count(); // Set the bidirectional info into the model. - logicalModel->SetVisualToLogicalMap( layoutParameters.lineBidirectionalInfoRunsBuffer, - layoutParameters.numberOfBidirectionalInfoRuns, - 0u, + logicalModel->SetVisualToLogicalMap( 0u, numberOfCharacters ); if( options.reorder ) diff --git a/dali-toolkit/internal/text/logical-model-impl.cpp b/dali-toolkit/internal/text/logical-model-impl.cpp index c61e004..b64ae2b 100644 --- a/dali-toolkit/internal/text/logical-model-impl.cpp +++ b/dali-toolkit/internal/text/logical-model-impl.cpp @@ -78,21 +78,15 @@ CharacterDirection LogicalModel::GetCharacterDirection( CharacterIndex character return *( mCharacterDirections.Begin() + characterIndex ); } -void LogicalModel::SetVisualToLogicalMap( const BidirectionalLineInfoRun* const bidirectionalInfo, - Length numberOfRuns, - CharacterIndex startIndex, +void LogicalModel::SetVisualToLogicalMap( CharacterIndex startIndex, Length numberOfCharacters ) { mVisualToLogicalMap.Resize( numberOfCharacters ); - mLogicalToVisualMap.Resize( numberOfCharacters ); - - const Length numberOfCharactersPlus = numberOfCharacters + 1u; - mVisualToLogicalCursorMap.Resize( numberOfCharactersPlus ); CharacterIndex* modelVisualToLogicalMapBuffer = mVisualToLogicalMap.Begin(); - CharacterIndex* modelLogicalToVisualMapBuffer = mLogicalToVisualMap.Begin(); - CharacterIndex* modelVisualToLogicalCursorMap = mVisualToLogicalCursorMap.Begin(); + const BidirectionalLineInfoRun* const bidirectionalInfo = mBidirectionalLineInfo.Begin(); + const Length numberOfRuns = mBidirectionalLineInfo.Count(); CharacterIndex lastIndex = startIndex; for( unsigned int bidiIndex = 0u; bidiIndex < numberOfRuns; ++bidiIndex ) @@ -129,13 +123,11 @@ void LogicalModel::SetVisualToLogicalMap( const BidirectionalLineInfoRun* const *( modelVisualToLogicalMapBuffer + lastIndex ) = lastIndex; } - // Sets the logical to visual conversion map. - for( CharacterIndex index = startIndex; index < numberOfCharacters; ++index ) - { - *( modelLogicalToVisualMapBuffer + *( modelVisualToLogicalMapBuffer + index ) ) = index; - } - // Sets the visual to logical conversion map for cursor positions. + const Length numberOfCharactersPlusOne = numberOfCharacters + 1u; + mVisualToLogicalCursorMap.Resize( numberOfCharactersPlusOne ); + + CharacterIndex* modelVisualToLogicalCursorMap = mVisualToLogicalCursorMap.Begin(); const Length numberOfBidirectionalParagraphs = mBidirectionalParagraphInfo.Count(); BidirectionalParagraphInfoRun* bidirectionalParagraphInfoBuffer = mBidirectionalParagraphInfo.Begin(); @@ -145,7 +137,7 @@ void LogicalModel::SetVisualToLogicalMap( const BidirectionalLineInfoRun* const Length bidirectionalParagraphIndex = 0u; bool isRightToLeftParagraph = false; - for( CharacterIndex index = startIndex; index < numberOfCharactersPlus; ++index ) + for( CharacterIndex index = startIndex; index < numberOfCharactersPlusOne; ++index ) { if( bidirectionalParagraph && ( bidirectionalParagraph->characterRun.characterIndex == index ) ) diff --git a/dali-toolkit/internal/text/logical-model-impl.h b/dali-toolkit/internal/text/logical-model-impl.h index e41f0fa..089af8e 100644 --- a/dali-toolkit/internal/text/logical-model-impl.h +++ b/dali-toolkit/internal/text/logical-model-impl.h @@ -95,14 +95,10 @@ public: * * @note If the number of runs is zero the bidirectional info buffer is cleared. * - * @param[in] bidirectionalInfo Pointer to a buffer with all the bidirectional info runs. - * @param[in] numberOfRuns The number of bidirectional info runs. * @param[in] startIndex Character index from where the conversion tables are set. * @param[in] numberOfCharacters The number of characters. */ - void SetVisualToLogicalMap( const BidirectionalLineInfoRun* const bidirectionalInfo, - Length numberOfRuns, - CharacterIndex startIndex, + void SetVisualToLogicalMap( CharacterIndex startIndex, Length numberOfCharacters ); /** @@ -194,7 +190,6 @@ public: Vector mBidirectionalParagraphInfo; Vector mCharacterDirections; ///< For each character, whether is right to left. ( @e flase is left to right, @e true right to left ). Vector mBidirectionalLineInfo; - Vector mLogicalToVisualMap; ///< Bidirectional logical to visual conversion table. Vector mVisualToLogicalMap; ///< Bidirectional visual to logical conversion table. Vector mVisualToLogicalCursorMap; ///< Bidirectional visual to logical cursor conversion table. }; diff --git a/dali-toolkit/internal/text/text-controller-impl.cpp b/dali-toolkit/internal/text/text-controller-impl.cpp index c37c7be..56820ae 100644 --- a/dali-toolkit/internal/text/text-controller-impl.cpp +++ b/dali-toolkit/internal/text/text-controller-impl.cpp @@ -389,7 +389,6 @@ void Controller::Impl::ClearFullModelData( OperationsMask operations ) } mLogicalModel->mBidirectionalLineInfo.Clear(); - mLogicalModel->mLogicalToVisualMap.Clear(); mLogicalModel->mVisualToLogicalMap.Clear(); } } @@ -501,11 +500,6 @@ void Controller::Impl::ClearCharacterModelData( CharacterIndex startIndex, Chara mLogicalModel->mBidirectionalLineInfo.Erase( bidirectionalLineInfoBuffer + startRemoveIndex, bidirectionalLineInfoBuffer + endRemoveIndex ); - // Clear the logical to visual and the visual to logical conversion tables. - CharacterIndex* logicalToVisualMapBuffer = mLogicalModel->mLogicalToVisualMap.Begin(); - mLogicalModel->mLogicalToVisualMap.Erase( logicalToVisualMapBuffer + startIndex, - logicalToVisualMapBuffer + endIndexPlusOne ); - CharacterIndex* visualToLogicalMapBuffer = mLogicalModel->mVisualToLogicalMap.Begin(); mLogicalModel->mVisualToLogicalMap.Erase( visualToLogicalMapBuffer + startIndex, visualToLogicalMapBuffer + endIndexPlusOne ); diff --git a/dali-toolkit/internal/text/text-controller.cpp b/dali-toolkit/internal/text/text-controller.cpp index c92aab8..37110dc 100644 --- a/dali-toolkit/internal/text/text-controller.cpp +++ b/dali-toolkit/internal/text/text-controller.cpp @@ -1531,9 +1531,7 @@ bool Controller::DoRelayout( const Size& size, // It's better to refactor this. Store this table per line and don't update the indices. // For the cursor position probably is better to use the function instead creating a table. // Set the bidirectional info into the model. - mImpl->mLogicalModel->SetVisualToLogicalMap( layoutParameters.lineBidirectionalInfoRunsBuffer, - layoutParameters.numberOfBidirectionalInfoRuns, - 0u, + mImpl->mLogicalModel->SetVisualToLogicalMap( 0u, mImpl->mLogicalModel->mText.Count() ); // Re-layout the text. Reorder those lines with right to left characters.