X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=base%2Fdali-toolkit%2Finternal%2Fcontrols%2Ftext-view%2Fsplit-by-char-policies.cpp;h=613b0a65f6476fe2d42e85be2df79a4d39cfbd41;hb=refs%2Fchanges%2F50%2F27450%2F10;hp=6ee85bd31f9db0f98f01721a3ea3710d4d972580;hpb=64485a966f60d59a33610e3439703dc7e7c19c32;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/base/dali-toolkit/internal/controls/text-view/split-by-char-policies.cpp b/base/dali-toolkit/internal/controls/text-view/split-by-char-policies.cpp index 6ee85bd..613b0a6 100644 --- a/base/dali-toolkit/internal/controls/text-view/split-by-char-policies.cpp +++ b/base/dali-toolkit/internal/controls/text-view/split-by-char-policies.cpp @@ -50,7 +50,7 @@ Vector3 NoShrinkWhenExceedPosition( const TextViewRelayout::RelayoutParameters& ( wordOffset + relayoutParameters.mCharacterSize.width > relayoutData.mTextViewSize.width ) ) ) { if( !relayoutParameters.mIsNewLine && - ( relayoutParameters.mIsWhiteSpace || relayoutParameters.mIsNewLineCharacter ) ) + ( relayoutParameters.mIsWhiteSpace || relayoutParameters.mIsNewParagraphCharacter ) ) { // Current character is a white space. Don't want to move a white space to the next line. // These white spaces are placed just in the edge. @@ -59,31 +59,23 @@ Vector3 NoShrinkWhenExceedPosition( const TextViewRelayout::RelayoutParameters& else { // Calculate the line length and the max character height for the current line. - TextViewRelayout::SubLineLayoutInfo subLineInfo; + TextViewRelayout::LineLayoutInfo subLineInfo; subLineInfo.mLineLength = 0.f; subLineInfo.mMaxCharHeight = 0.f; subLineInfo.mMaxAscender = 0.f; - const TextViewProcessor::LineLayoutInfo& lineLayoutInfo( *( relayoutData.mTextLayoutInfo.mLinesLayoutInfo.begin() + relayoutParameters.mIndices.mLineIndex ) ); + const TextViewProcessor::ParagraphLayoutInfo& paragraphLayoutInfo( *( relayoutData.mTextLayoutInfo.mParagraphsLayoutInfo.begin() + relayoutParameters.mIndices.mParagraphIndex ) ); - TextViewRelayout::CalculateSubLineLayout( relayoutData.mTextViewSize.width, - relayoutParameters.mIndices, - lineLayoutInfo, - TextViewRelayout::WrapByCharacter, - 1.f, // Shrink factor - subLineInfo ); - - // Stores some info to calculate the line justification in a post-process. - TextView::LineJustificationInfo justificationInfo; - - justificationInfo.mIndices = relayoutParameters.mIndices; - justificationInfo.mLineLength = subLineInfo.mLineLength; - - relayoutData.mLineJustificationInfo.push_back( justificationInfo ); + TextViewRelayout::CalculateLineLayout( relayoutData.mTextViewSize.width, + relayoutParameters.mIndices, + paragraphLayoutInfo, + TextViewRelayout::WrapByCharacter, + 1.f, // Shrink factor + subLineInfo ); Toolkit::TextView::LineLayoutInfo lineInfo; lineInfo.mCharacterGlobalIndex = relayoutParameters.mCharacterGlobalIndex; // Index to the first character of the next line. - lineInfo.mSize = Size( subLineInfo.mLineLength, subLineInfo.mMaxCharHeight ); // Size of this piece of line. - lineInfo.mAscender = subLineInfo.mMaxAscender; // Ascender of this piece of line. + lineInfo.mSize = Size( subLineInfo.mLineLength, subLineInfo.mMaxCharHeight ); // Size of this piece of paragraph. + lineInfo.mAscender = subLineInfo.mMaxAscender; // Ascender of this piece of paragraph. relayoutData.mLines.push_back( lineInfo ); return Vector3( 0.f, previousPositionY + subLineInfo.mMaxCharHeight + layoutParameters.mLineHeightOffset, 0.f ); @@ -115,32 +107,32 @@ void CalculateSizeAndPosition( const TextView::LayoutParameters& layoutParameter relayoutParameters.mPositionOffset = Vector3::ZERO; relayoutParameters.mIsFirstCharacter = true; - relayoutParameters.mIndices.mLineIndex = 0; - relayoutParameters.mCharacterGlobalIndex = 0; + relayoutParameters.mIndices.mParagraphIndex = 0u; + relayoutParameters.mCharacterGlobalIndex = 0u; - for( TextViewProcessor::LineLayoutInfoContainer::iterator lineLayoutIt = relayoutData.mTextLayoutInfo.mLinesLayoutInfo.begin(), - endLineLayoutIt = relayoutData.mTextLayoutInfo.mLinesLayoutInfo.end(); - lineLayoutIt != endLineLayoutIt; - ++lineLayoutIt, ++relayoutParameters.mIndices.mLineIndex ) + for( TextViewProcessor::ParagraphLayoutInfoContainer::iterator paragraphLayoutIt = relayoutData.mTextLayoutInfo.mParagraphsLayoutInfo.begin(), + endParagraphLayoutIt = relayoutData.mTextLayoutInfo.mParagraphsLayoutInfo.end(); + paragraphLayoutIt != endParagraphLayoutIt; + ++paragraphLayoutIt, ++relayoutParameters.mIndices.mParagraphIndex ) { - TextViewProcessor::LineLayoutInfo& lineLayoutInfo( *lineLayoutIt ); + TextViewProcessor::ParagraphLayoutInfo& paragraphLayoutInfo( *paragraphLayoutIt ); relayoutParameters.mIsNewLine = true; - relayoutParameters.mLineSize = lineLayoutInfo.mSize; - relayoutParameters.mIndices.mWordIndex = 0; + relayoutParameters.mParagraphSize = paragraphLayoutInfo.mSize; + relayoutParameters.mIndices.mWordIndex = 0u; - for( TextViewProcessor::WordLayoutInfoContainer::iterator wordLayoutIt = lineLayoutInfo.mWordsLayoutInfo.begin(), - endWordLayoutIt = lineLayoutInfo.mWordsLayoutInfo.end(); + for( TextViewProcessor::WordLayoutInfoContainer::iterator wordLayoutIt = paragraphLayoutInfo.mWordsLayoutInfo.begin(), + endWordLayoutIt = paragraphLayoutInfo.mWordsLayoutInfo.end(); wordLayoutIt != endWordLayoutIt; ++wordLayoutIt, ++relayoutParameters.mIndices.mWordIndex ) { TextViewProcessor::WordLayoutInfo& wordLayoutInfo( *wordLayoutIt ); relayoutParameters.mIsWhiteSpace = TextViewProcessor::WordSeparator == wordLayoutInfo.mType; - relayoutParameters.mIsNewLineCharacter = TextViewProcessor::LineSeparator == wordLayoutInfo.mType; + relayoutParameters.mIsNewParagraphCharacter = TextViewProcessor::ParagraphSeparator == wordLayoutInfo.mType; relayoutParameters.mIsFirstCharacterOfWord = true; relayoutParameters.mWordSize = wordLayoutInfo.mSize; - relayoutParameters.mIndices.mCharacterIndex = 0; + relayoutParameters.mIndices.mCharacterIndex = 0u; for( TextViewProcessor::CharacterLayoutInfoContainer::iterator characterLayoutIt = wordLayoutInfo.mCharactersLayoutInfo.begin(), endCharacterLayoutIt = wordLayoutInfo.mCharactersLayoutInfo.end(); @@ -200,7 +192,7 @@ void CalculateSizeAndPosition( const TextView::LayoutParameters& layoutParameter relayoutParameters.mIsNewLine = false; } // end characters } // end words - } // end lines + } // end paragraphs if( relayoutData.mCharacterLayoutInfoTable.empty() ) { @@ -212,14 +204,14 @@ void CalculateSizeAndPosition( const TextView::LayoutParameters& layoutParameter relayoutData.mTextSizeForRelayoutOption.height = minMaxXY.w - minMaxXY.y; } - // Check if the last character is a new line character. In that case the height should be added. - if( !relayoutData.mTextLayoutInfo.mLinesLayoutInfo.empty() ) + // Check if the last character is a new paragraph character. In that case the height should be added. + if( !relayoutData.mTextLayoutInfo.mParagraphsLayoutInfo.empty() ) { - const TextViewProcessor::LineLayoutInfo& lineLayoutInfo( *( relayoutData.mTextLayoutInfo.mLinesLayoutInfo.end() - 1 ) ); + const TextViewProcessor::ParagraphLayoutInfo& paragraphLayoutInfo( *( relayoutData.mTextLayoutInfo.mParagraphsLayoutInfo.end() - 1u ) ); - if( lineLayoutInfo.mWordsLayoutInfo.empty() ) // if it's empty, it means the last character is a new line character. + if( paragraphLayoutInfo.mWordsLayoutInfo.empty() ) // if it's empty, it means the last character is a new paragraph character. { - relayoutData.mTextSizeForRelayoutOption.height += lineLayoutInfo.mSize.height; + relayoutData.mTextSizeForRelayoutOption.height += paragraphLayoutInfo.mSize.height; } } } @@ -234,10 +226,11 @@ void Relayout( Actor textView, { if( relayoutOperationMask & TextView::RELAYOUT_SIZE_POSITION ) { - relayoutData.mLineJustificationInfo.clear(); CalculateSizeAndPosition( layoutParameters, relayoutData ); + TextViewRelayout::ReorderRightToLeftLayout( relayoutData ); + TextViewRelayout::SetUnderlineInfo( relayoutData ); } @@ -254,22 +247,18 @@ void Relayout( Actor textView, relayoutData ); } - if( relayoutOperationMask & TextView::RELAYOUT_INITIALIZE_TEXT_ACTORS ) - { - TextViewProcessor::InitializeTextActorInfo( relayoutData ); - } - - if( relayoutOperationMask & TextView::RELAYOUT_TEXT_ACTOR_UPDATE ) + const bool initializeTextActors = relayoutOperationMask & TextView::RELAYOUT_INITIALIZE_TEXT_ACTORS; + const bool updateTextActors = relayoutOperationMask & TextView::RELAYOUT_TEXT_ACTOR_UPDATE; + if( initializeTextActors || updateTextActors ) { TextViewRelayout::UpdateTextActorInfo( visualParameters, - relayoutData ); + relayoutData, + initializeTextActors ); } - if( ( relayoutOperationMask & TextView::RELAYOUT_INSERT_TO_TEXT_VIEW ) || - ( relayoutOperationMask & TextView::RELAYOUT_INSERT_TO_TEXT_ACTOR_LIST ) ) + if( relayoutOperationMask & TextView::RELAYOUT_INSERT_TO_TEXT_VIEW ) { - TextViewRelayout::InsertToTextView( relayoutOperationMask, - textView, + TextViewRelayout::InsertToTextView( textView, relayoutData ); } }