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 )
*( 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();
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 ) )