binfilter/bf_sw/source/core/inc/drawfont.hxx | 5 binfilter/bf_sw/source/core/layout/sw_flycnt.cxx | 5 binfilter/bf_sw/source/core/text/inftxt.hxx | 9 binfilter/bf_sw/source/core/text/sw_frmform.cxx | 2 binfilter/bf_sw/source/core/text/sw_porlay.cxx | 114 ------- binfilter/bf_sw/source/core/text/sw_pormulti.cxx | 373 ----------------------- 6 files changed, 508 deletions(-)
New commits: commit 21eb5cb817082d46491cea84fd3b82a3931a6a52 Author: Caolán McNamara <caol...@redhat.com> Date: Fri Sep 23 13:51:08 2011 +0100 callcatcher: remove newly unused methods diff --git a/binfilter/bf_sw/source/core/inc/drawfont.hxx b/binfilter/bf_sw/source/core/inc/drawfont.hxx index bf5cbfb..4274542 100644 --- a/binfilter/bf_sw/source/core/inc/drawfont.hxx +++ b/binfilter/bf_sw/source/core/inc/drawfont.hxx @@ -163,11 +163,6 @@ public: // examines the range [ nStart, nStart + nEnd ] if there are kanas // returns start index of kana entry in array, otherwise USHRT_MAX USHORT HasKana( xub_StrLen nStart, const xub_StrLen nEnd ) const; - - // modifies the kerning array according to a given compress value - long Compress( sal_Int32* pKernArray, xub_StrLen nIdx, xub_StrLen nLen, - const USHORT nCompress, const USHORT nFontHeight, - Point* pPoint = NULL ) const; }; inline void SwScriptInfo::SetInvalidity( const xub_StrLen nPos ) diff --git a/binfilter/bf_sw/source/core/layout/sw_flycnt.cxx b/binfilter/bf_sw/source/core/layout/sw_flycnt.cxx index 568ee53..3cc2395 100644 --- a/binfilter/bf_sw/source/core/layout/sw_flycnt.cxx +++ b/binfilter/bf_sw/source/core/layout/sw_flycnt.cxx @@ -249,11 +249,6 @@ namespace binfilter { /*?*/ SwOszControl::pStk5 = 0; /*N*/ } -/*N*/ bool IsInProgress( const SwFlyFrm* /*pFly*/ ) -/*N*/ { - DBG_BF_ASSERT(0, "STRIP"); return FALSE; -/*N*/ } - /*N*/ bool SwOszControl::IsInProgress( const SwFlyFrm *pFly ) /*N*/ { /*N*/ if ( SwOszControl::pStk1 && !pFly->IsLowerOf( SwOszControl::pStk1 ) ) diff --git a/binfilter/bf_sw/source/core/text/inftxt.hxx b/binfilter/bf_sw/source/core/text/inftxt.hxx index 4d9f9be..cb38c31 100644 --- a/binfilter/bf_sw/source/core/text/inftxt.hxx +++ b/binfilter/bf_sw/source/core/text/inftxt.hxx @@ -232,15 +232,6 @@ public: const xub_StrLen _nLen = STRING_LEN ) { CtorInit( _pFrm, _pFnt, _nIdx, _nLen ); } - // GetMultiAttr returns the text attribute of the multiportion, - // if rPos is inside any multi-line part. - // rPos will set to the end of the multi-line part. -#ifdef BIDI - SwMultiCreator* GetMultiCreator( xub_StrLen &rPos, SwMultiPortion* pM ) const; -#else - SwMultiCreator* GetMultiCreator( xub_StrLen &rPos ) const; -#endif - inline sal_Bool OnWin() const { return bOnWin; } inline void SetOnWin( const sal_Bool bNew ) { bOnWin = bNew; } inline sal_Bool NotEOL() const { return bNotEOL; } diff --git a/binfilter/bf_sw/source/core/text/sw_frmform.cxx b/binfilter/bf_sw/source/core/text/sw_frmform.cxx index 0ef23bd..09a5171 100644 --- a/binfilter/bf_sw/source/core/text/sw_frmform.cxx +++ b/binfilter/bf_sw/source/core/text/sw_frmform.cxx @@ -56,8 +56,6 @@ namespace binfilter { -extern bool IsInProgress( const SwFlyFrm *pFly ); - class FormatLevel { static MSHORT nLevel; diff --git a/binfilter/bf_sw/source/core/text/sw_porlay.cxx b/binfilter/bf_sw/source/core/text/sw_porlay.cxx index cf78792..a6eb583 100644 --- a/binfilter/bf_sw/source/core/text/sw_porlay.cxx +++ b/binfilter/bf_sw/source/core/text/sw_porlay.cxx @@ -915,120 +915,6 @@ SwLinePortion *SwLineLayout::Insert( SwLinePortion *pIns ) /*N*/ } /************************************************************************* - * SwScriptInfo::Compress() - *************************************************************************/ - -/*N*/ long SwScriptInfo::Compress( sal_Int32* pKernArray, xub_StrLen nIdx, xub_StrLen nLen, -/*N*/ const USHORT nCompress, const USHORT nFontHeight, -/*N*/ Point* pPoint ) const -/*N*/ { -/*N*/ OSL_ENSURE( nCompress, "Compression without compression?!" ); -/*N*/ OSL_ENSURE( nLen, "Compression without text?!" ); -/*N*/ USHORT nCompCount = CountCompChg(); -/*N*/ -/*N*/ // In asian typography, there are full width and half width characters. -/*N*/ // Full width punctuation characters can be compressed by 50 % -/*N*/ // to determine this, we compare the font width with 75 % of its height -/*N*/ USHORT nMinWidth = ( 3 * nFontHeight ) / 4; -/*N*/ -/*N*/ USHORT nCompIdx = HasKana( nIdx, nLen ); -/*N*/ -/*N*/ if ( USHRT_MAX == nCompIdx ) -/*N*/ return 0; -/*N*/ -/*N*/ xub_StrLen nChg = GetCompStart( nCompIdx ); -/*N*/ xub_StrLen nCompLen = GetCompLen( nCompIdx ); -/*N*/ USHORT nI = 0; -/*N*/ nLen += nIdx; -/*N*/ -/*N*/ if( nChg > nIdx ) -/*N*/ { -/*N*/ nI = nChg - nIdx; -/*N*/ nIdx = nChg; -/*N*/ } -/*N*/ else if( nIdx < nChg + nCompLen ) -/*N*/ nCompLen -= nIdx - nChg; -/*N*/ -/*N*/ if( nIdx > nLen || nCompIdx >= nCompCount ) -/*N*/ return 0; -/*N*/ -/*N*/ long nSub = 0; -/*N*/ long nLast = nI ? pKernArray[ nI - 1 ] : 0; -/*N*/ do -/*N*/ { -/*N*/ USHORT nType = GetCompType( nCompIdx ); -/*N*/ OSL_ENSURE( nType == CompType( nIdx ), "Gimme the right type!" ); -/*N*/ nCompLen += nIdx; -/*N*/ if( nCompLen > nLen ) -/*N*/ nCompLen = nLen; -/*N*/ -/*N*/ // are we allowed to compress the character? -/*N*/ if ( pKernArray[ nI ] - nLast < nMinWidth ) -/*N*/ { -/*N*/ nIdx++; nI++; -/*N*/ } -/*N*/ else -/*N*/ { -/*N*/ while( nIdx < nCompLen ) -/*N*/ { -/*N*/ OSL_ENSURE( SwScriptInfo::NONE != nType, "None compression?!" ); -/*N*/ -/*N*/ // nLast is width of current character -/*N*/ nLast -= pKernArray[ nI ]; -/*N*/ -/*N*/ nLast *= nCompress; -/*N*/ long nMove = 0; -/*N*/ if( SwScriptInfo::KANA != nType ) -/*N*/ { -/*N*/ nLast /= 20000; -/*N*/ if( pPoint && SwScriptInfo::SPECIAL_LEFT == nType ) -/*N*/ { -/*N*/ if( nI ) -/*N*/ nMove = nLast; -/*N*/ else -/*N*/ { -/*N*/ pPoint->X() += nLast; -/*N*/ nLast = 0; -/*N*/ } -/*N*/ } -/*N*/ } -/*N*/ else -/*N*/ nLast /= 100000; -/*N*/ nSub -= nLast; -/*N*/ nLast = pKernArray[ nI ]; -/*N*/ if( nMove ) -/*N*/ pKernArray[ nI - 1 ] += nMove; -/*N*/ pKernArray[ nI++ ] -= nSub; -/*N*/ ++nIdx; -/*N*/ } -/*N*/ } -/*N*/ -/*N*/ if( nIdx < nLen ) -/*N*/ { -/*N*/ xub_StrLen nChg1; -/*N*/ if( ++nCompIdx < nCompCount ) -/*N*/ { -/*N*/ nChg1 = GetCompStart( nCompIdx ); -/*N*/ if( nChg1 > nLen ) -/*N*/ nChg1 = nLen; -/*N*/ nCompLen = GetCompLen( nCompIdx ); -/*N*/ } -/*N*/ else -/*N*/ nChg1 = nLen; -/*N*/ while( nIdx < nChg1 ) -/*N*/ { -/*N*/ nLast = pKernArray[ nI ]; -/*N*/ pKernArray[ nI++ ] -= nSub; -/*N*/ ++nIdx; -/*N*/ } -/*N*/ } -/*N*/ else -/*N*/ break; -/*N*/ } while( nIdx < nLen ); -/*N*/ return nSub; -/*N*/ } - -/************************************************************************* * class SwParaPortion *************************************************************************/ diff --git a/binfilter/bf_sw/source/core/text/sw_pormulti.cxx b/binfilter/bf_sw/source/core/text/sw_pormulti.cxx index c2dc44b..0df5771 100644 --- a/binfilter/bf_sw/source/core/text/sw_pormulti.cxx +++ b/binfilter/bf_sw/source/core/text/sw_pormulti.cxx @@ -160,379 +160,6 @@ extern BYTE WhichFont( xub_StrLen nIdx, const String* pTxt, /*N*/ return sal_False; /*N*/ } -/*N*/ #ifdef BIDI -/*N*/ SwMultiCreator* SwTxtSizeInfo::GetMultiCreator( xub_StrLen &rPos, -/*N*/ SwMultiPortion* pMulti ) const -/*N*/ #else -/*N*/ SwMultiCreator* SwTxtSizeInfo::GetMultiCreator( xub_StrLen &rPos ) const -/*N*/ #endif -/*N*/ { -/*N*/ #ifdef BIDI -/*N*/ SwScriptInfo& rSI = ((SwParaPortion*)GetParaPortion())->GetScriptInfo(); -/*N*/ -/*N*/ // get the last embedding level -/*N*/ BYTE nCurrLevel; -/*N*/ if ( !pMulti ) -/*N*/ // no nested bidi portion required -/*N*/ nCurrLevel = GetTxtFrm()->IsRightToLeft() ? 1 : 0; -/*N*/ -/*N*/ // check if there is a field at rPos: -/*N*/ BYTE nNextLevel = nCurrLevel; -/*N*/ sal_Bool bFldBidi = sal_False; -/*N*/ -/*N*/ if ( CH_TXTATR_BREAKWORD == GetChar( rPos ) ) - bFldBidi = sal_True; -/*N*/ else -/*N*/ nNextLevel = rSI.DirType( rPos ); -/*N*/ -/*N*/ if ( GetTxt().Len() != rPos && nNextLevel > nCurrLevel ) -/*N*/ { -/*?*/ rPos = bFldBidi ? rPos + 1 : rSI.NextDirChg( rPos, &nCurrLevel ); -/*?*/ if ( STRING_LEN == rPos ) -/*?*/ return NULL; -/*?*/ SwMultiCreator *pRet = new SwMultiCreator; -/*?*/ pRet->pItem = NULL; -/*?*/ pRet->pAttr = NULL; -/*?*/ pRet->nId = SW_MC_BIDI; -/*?*/ pRet->nLevel = nCurrLevel + 1; -/*?*/ return pRet; -/*N*/ } -/*N*/ -/*N*/ // a bidi portion can only contain other bidi portions -/*N*/ if ( pMulti ) -/*N*/ return NULL; -/*N*/ #endif -/*N*/ -/*N*/ const SvxCharRotateItem* pRotate = NULL; -/*N*/ const SfxPoolItem* pRotItem; -/*N*/ if( SFX_ITEM_SET == pFrm->GetTxtNode()->GetSwAttrSet(). -/*N*/ GetItemState( RES_CHRATR_ROTATE, TRUE, &pRotItem ) && -/*N*/ ((SvxCharRotateItem*)pRotItem)->GetValue() ) -/*?*/ pRotate = (SvxCharRotateItem*)pRotItem; -/*N*/ else -/*N*/ pRotItem = NULL; -/*N*/ const SvxTwoLinesItem* p2Lines = NULL; -/*N*/ const SfxPoolItem* pItem; -/*N*/ if( SFX_ITEM_SET == pFrm->GetTxtNode()->GetSwAttrSet(). -/*N*/ GetItemState( RES_CHRATR_TWO_LINES, TRUE, &pItem ) && -/*N*/ ((SvxTwoLinesItem*)pItem)->GetValue() ) -/*N*/ p2Lines = (SvxTwoLinesItem*)pItem; -/*N*/ else -/*N*/ pItem = NULL; -/*N*/ -/*N*/ const SwpHints *pHints = pFrm->GetTxtNode()->GetpSwpHints(); -/*N*/ if( !pHints && !p2Lines && !pRotate ) -/*N*/ return NULL; -/*N*/ const SwTxtAttr *pRuby = NULL; -/*N*/ sal_Bool bTwo = sal_False; -/*N*/ sal_Bool bRot = sal_False; -/*N*/ USHORT n2Lines = USHRT_MAX; -/*N*/ USHORT nRotate = USHRT_MAX; -/*N*/ USHORT nCount = pHints ? pHints->Count() : 0; -/*N*/ USHORT i; -/*N*/ for( i = 0; i < nCount; ++i ) -/*N*/ { -/*N*/ const SwTxtAttr *pTmp = (*pHints)[i]; -/*N*/ xub_StrLen nStart = *pTmp->GetStart(); -/*N*/ if( rPos < nStart ) -/*N*/ break; -/*N*/ if( *pTmp->GetAnyEnd() > rPos ) -/*N*/ { -/*N*/ if( RES_TXTATR_CJK_RUBY == pTmp->Which() ) -/*N*/ pRuby = pTmp; -/*N*/ else -/*N*/ { -/*N*/ const SvxCharRotateItem* pRoTmp = NULL; -/*N*/ if( lcl_HasRotation( *pTmp, pRoTmp, bRot ) ) -/*N*/ { -/*N*/ nRotate = bRot ? i : nCount; -/*N*/ pRotate = pRoTmp; -/*N*/ } -/*N*/ const SvxTwoLinesItem* p2Tmp = NULL; -/*N*/ if( lcl_Has2Lines( *pTmp, p2Tmp, bTwo ) ) -/*N*/ { -/*N*/ n2Lines = bTwo ? i : nCount; -/*N*/ p2Lines = p2Tmp; -/*N*/ } -/*N*/ } -/*N*/ } -/*N*/ } -/*N*/ if( pRuby ) -/*N*/ { // The winner is ... a ruby attribute and so -/*N*/ // the end of the multiportion is the end of the ruby attribute. -/*?*/ rPos = *pRuby->GetEnd(); -/*?*/ SwMultiCreator *pRet = new SwMultiCreator; -/*?*/ pRet->pItem = NULL; -/*?*/ pRet->pAttr = pRuby; -/*?*/ pRet->nId = SW_MC_RUBY; -/*?*/ #ifdef BIDI -/*?*/ pRet->nLevel = GetTxtFrm()->IsRightToLeft() ? 1 : 0; -/*?*/ #endif -/*?*/ return pRet; -/*N*/ } -/*N*/ if( n2Lines < nCount || ( pItem && pItem == p2Lines && -/*N*/ rPos < GetTxt().Len() ) ) -/*N*/ { // The winner is a 2-line-attribute, -/*?*/ // the end of the multiportion depends on the following attributes... -/*?*/ SwMultiCreator *pRet = new SwMultiCreator; -/*?*/ -/*?*/ // We note the endpositions of the 2-line attributes in aEnd as stack -/*?*/ SvXub_StrLens aEnd; -/*?*/ -/*?*/ // The bOn flag signs the state of the last 2-line attribute in the -/*?*/ // aEnd-stack, it is compatible with the winner-attribute or -/*?*/ // it interrupts the other attribute. -/*?*/ sal_Bool bOn = sal_True; -/*?*/ -/*?*/ if( n2Lines < nCount ) -/*?*/ { -/*?*/ pRet->pItem = NULL; -/*?*/ pRet->pAttr = (*pHints)[n2Lines]; -/*?*/ aEnd.Insert( *pRet->pAttr->GetEnd(), 0 ); -/*?*/ if( pItem ) -/*?*/ { -/*?*/ aEnd[ 0 ] = GetTxt().Len(); -/*?*/ bOn = ((SvxTwoLinesItem*)pItem)->GetEndBracket() == -/*?*/ p2Lines->GetEndBracket() && -/*?*/ ((SvxTwoLinesItem*)pItem)->GetStartBracket() == -/*?*/ p2Lines->GetStartBracket(); -/*?*/ } -/*?*/ } -/*?*/ else -/*?*/ { -/*?*/ pRet->pItem = pItem; -/*?*/ pRet->pAttr = NULL; -/*?*/ aEnd.Insert( GetTxt().Len(), 0 ); -/*?*/ } -/*?*/ pRet->nId = SW_MC_DOUBLE; -/*?*/ #ifdef BIDI -/*?*/ pRet->nLevel = GetTxtFrm()->IsRightToLeft() ? 1 : 0; -/*?*/ #endif -/*?*/ -/*?*/ // n2Lines is the index of the last 2-line-attribute, which contains -/*?*/ // the actual position. -/*?*/ i = 0; -/*?*/ // At this moment we know that at position rPos the "winner"-attribute -/*?*/ // causes a 2-line-portion. The end of the attribute is the end of the -/*?*/ // portion, if there's no interrupting attribute. -/*?*/ // There are two kinds of interruptors: -/*?*/ // - ruby attributes stops the 2-line-attribute, the end of the -/*?*/ // multiline is the start of the ruby attribute -/*?*/ // - 2-line-attributes with value "Off" or with different brackets, -/*?*/ // these attributes may interrupt the winner, but they could be -/*?*/ // neutralized by another 2-line-attribute starting at the same -/*?*/ // position with the same brackets as the winner-attribute. -/*?*/ -/*?*/ // In the following loop rPos is the critical position and it will be -/*?*/ // evaluated, if at rPos starts a interrupting or a maintaining -/*?*/ // continuity attribute. -/*?*/ while( i < nCount ) -/*?*/ { -/*?*/ const SwTxtAttr *pTmp = (*pHints)[i++]; -/*?*/ if( *pTmp->GetAnyEnd() <= rPos ) -/*?*/ continue; -/*?*/ if( rPos < *pTmp->GetStart() ) -/*?*/ { -/*?*/ // If bOn is FALSE and the next attribute starts later than rPos -/*?*/ // the winner attribute is interrupted at rPos. -/*?*/ // If the start of the next atribute is behind the end of -/*?*/ // the last attribute on the aEnd-stack, this is the endposition -/*?*/ // on the stack is the end of the 2-line portion. -/*?*/ if( !bOn || aEnd[ aEnd.Count()-1 ] < *pTmp->GetStart() ) -/*?*/ break; -/*?*/ // At this moment, bOn is TRUE and the next attribute starts -/*?*/ // behind rPos, so we could move rPos to the next startpoint -/*?*/ rPos = *pTmp->GetStart(); -/*?*/ // We clean up the aEnd-stack, endpositions equal to rPos are -/*?*/ // superfluous. -/*?*/ while( aEnd.Count() && aEnd[ aEnd.Count()-1 ] <= rPos ) -/*?*/ { -/*?*/ bOn = !bOn; -/*?*/ aEnd.Remove( aEnd.Count()-1, 1 ); -/*?*/ } -/*?*/ // If the endstack is empty, we simulate an attribute with -/*?*/ // state TRUE and endposition rPos -/*?*/ if( !aEnd.Count() ) -/*?*/ { -/*?*/ aEnd.Insert( rPos, 0 ); -/*?*/ bOn = sal_True; -/*?*/ } -/*?*/ } -/*?*/ // A ruby attribute stops the 2-line immediately -/*?*/ if( RES_TXTATR_CJK_RUBY == pTmp->Which() ) -/*?*/ return pRet; -/*?*/ if( lcl_Has2Lines( *pTmp, p2Lines, bTwo ) ) -/*?*/ { // We have an interesting attribute.. -/*?*/ if( bTwo == bOn ) -/*?*/ { // .. with the same state, so the last attribute could -/*?*/ // be continued. -/*?*/ if( aEnd[ aEnd.Count()-1 ] < *pTmp->GetEnd() ) -/*?*/ aEnd[ aEnd.Count()-1 ] = *pTmp->GetEnd(); -/*?*/ } -/*?*/ else -/*?*/ { // .. with a different state. -/*?*/ bOn = bTwo; -/*?*/ // If this is smaller than the last on the stack, we put -/*?*/ // it on the stack. If it has the same endposition, the last -/*?*/ // could be removed. -/*?*/ if( aEnd[ aEnd.Count()-1 ] > *pTmp->GetEnd() ) -/*?*/ aEnd.Insert( *pTmp->GetEnd(), aEnd.Count() ); -/*?*/ else if( aEnd.Count() > 1 ) -/*?*/ aEnd.Remove( aEnd.Count()-1, 1 ); -/*?*/ else -/*?*/ aEnd[ aEnd.Count()-1 ] = *pTmp->GetEnd(); -/*?*/ } -/*?*/ } -/*?*/ } -/*?*/ if( bOn && aEnd.Count() ) -/*?*/ rPos = aEnd[ aEnd.Count()-1 ]; -/*?*/ return pRet; -/*N*/ } -/*N*/ if( nRotate < nCount || ( pRotItem && pRotItem == pRotate && -/*N*/ rPos < GetTxt().Len() ) ) -/*N*/ { // The winner is a rotate-attribute, -/*?*/ // the end of the multiportion depends on the following attributes... -/*?*/ SwMultiCreator *pRet = new SwMultiCreator; -/*?*/ pRet->nId = SW_MC_ROTATE; -/*?*/ -/*?*/ // We note the endpositions of the 2-line attributes in aEnd as stack -/*?*/ SvXub_StrLens aEnd; -/*?*/ -/*?*/ // The bOn flag signs the state of the last 2-line attribute in the -/*?*/ // aEnd-stack, which could interrupts the winning rotation attribute. -/*?*/ sal_Bool bOn = pItem ? sal_True : sal_False; -/*?*/ aEnd.Insert( GetTxt().Len(), 0 ); -/*?*/ // n2Lines is the index of the last 2-line-attribute, which contains -/*?*/ // the actual position. -/*?*/ i = 0; -/*?*/ xub_StrLen n2Start = rPos; -/*?*/ while( i < nCount ) -/*?*/ { -/*?*/ const SwTxtAttr *pTmp = (*pHints)[i++]; -/*?*/ if( *pTmp->GetAnyEnd() <= n2Start ) -/*?*/ continue; -/*?*/ if( n2Start < *pTmp->GetStart() ) -/*?*/ { -/*?*/ if( bOn || aEnd[ aEnd.Count()-1 ] < *pTmp->GetStart() ) -/*?*/ break; -/*?*/ n2Start = *pTmp->GetStart(); -/*?*/ while( aEnd.Count() && aEnd[ aEnd.Count()-1 ] <= n2Start ) -/*?*/ { -/*?*/ bOn = !bOn; -/*?*/ aEnd.Remove( aEnd.Count()-1, 1 ); -/*?*/ } -/*?*/ if( !aEnd.Count() ) -/*?*/ { -/*?*/ aEnd.Insert( n2Start, 0 ); -/*?*/ bOn = sal_False; -/*?*/ } -/*?*/ } -/*?*/ // A ruby attribute stops immediately -/*?*/ if( RES_TXTATR_CJK_RUBY == pTmp->Which() ) -/*?*/ { -/*?*/ bOn = sal_True; -/*?*/ break; -/*?*/ } -/*?*/ p2Lines = NULL; -/*?*/ if( lcl_Has2Lines( *pTmp, p2Lines, bTwo ) ) -/*?*/ { -/*?*/ if( bTwo == bOn ) -/*?*/ { -/*?*/ if( aEnd[ aEnd.Count()-1 ] < *pTmp->GetEnd() ) -/*?*/ aEnd[ aEnd.Count()-1 ] = *pTmp->GetEnd(); -/*?*/ } -/*?*/ else -/*?*/ { -/*?*/ bOn = bTwo; -/*?*/ if( aEnd[ aEnd.Count()-1 ] > *pTmp->GetEnd() ) -/*?*/ aEnd.Insert( *pTmp->GetEnd(), aEnd.Count() ); -/*?*/ else if( aEnd.Count() > 1 ) -/*?*/ aEnd.Remove( aEnd.Count()-1, 1 ); -/*?*/ else -/*?*/ aEnd[ aEnd.Count()-1 ] = *pTmp->GetEnd(); -/*?*/ } -/*?*/ } -/*?*/ } -/*?*/ if( !bOn && aEnd.Count() ) -/*?*/ n2Start = aEnd[ aEnd.Count()-1 ]; -/*?*/ -/*?*/ if( aEnd.Count() ) -/*?*/ aEnd.Remove( 0, aEnd.Count() ); -/*?*/ -/*?*/ bOn = sal_True; -/*?*/ if( nRotate < nCount ) -/*?*/ { -/*?*/ pRet->pItem = NULL; -/*?*/ pRet->pAttr = (*pHints)[nRotate]; -/*?*/ aEnd.Insert( *pRet->pAttr->GetEnd(), 0 ); -/*?*/ if( pRotItem ) -/*?*/ { -/*?*/ aEnd[ 0 ] = GetTxt().Len(); -/*?*/ bOn = ((SvxCharRotateItem*)pRotItem)->GetValue() == -/*?*/ pRotate->GetValue(); -/*?*/ } -/*?*/ } -/*?*/ else -/*?*/ { -/*?*/ pRet->pItem = pRotItem; -/*?*/ pRet->pAttr = NULL; -/*?*/ aEnd.Insert( GetTxt().Len(), 0 ); -/*?*/ } -/*?*/ i = 0; -/*?*/ while( i < nCount ) -/*?*/ { -/*?*/ const SwTxtAttr *pTmp = (*pHints)[i++]; -/*?*/ if( *pTmp->GetAnyEnd() <= rPos ) -/*?*/ continue; -/*?*/ if( rPos < *pTmp->GetStart() ) -/*?*/ { -/*?*/ if( !bOn || aEnd[ aEnd.Count()-1 ] < *pTmp->GetStart() ) -/*?*/ break; -/*?*/ rPos = *pTmp->GetStart(); -/*?*/ while( aEnd.Count() && aEnd[ aEnd.Count()-1 ] <= rPos ) -/*?*/ { -/*?*/ bOn = !bOn; -/*?*/ aEnd.Remove( aEnd.Count()-1, 1 ); -/*?*/ } -/*?*/ if( !aEnd.Count() ) -/*?*/ { -/*?*/ aEnd.Insert( rPos, 0 ); -/*?*/ bOn = sal_True; -/*?*/ } -/*?*/ } -/*?*/ if( RES_TXTATR_CJK_RUBY == pTmp->Which() ) -/*?*/ { -/*?*/ bOn = sal_False; -/*?*/ break; -/*?*/ } -/*?*/ if( lcl_HasRotation( *pTmp, pRotate, bTwo ) ) -/*?*/ { -/*?*/ if( bTwo == bOn ) -/*?*/ { -/*?*/ if( aEnd[ aEnd.Count()-1 ] < *pTmp->GetEnd() ) -/*?*/ aEnd[ aEnd.Count()-1 ] = *pTmp->GetEnd(); -/*?*/ } -/*?*/ else -/*?*/ { -/*?*/ bOn = bTwo; -/*?*/ if( aEnd[ aEnd.Count()-1 ] > *pTmp->GetEnd() ) -/*?*/ aEnd.Insert( *pTmp->GetEnd(), aEnd.Count() ); -/*?*/ else if( aEnd.Count() > 1 ) -/*?*/ aEnd.Remove( aEnd.Count()-1, 1 ); -/*?*/ else -/*?*/ aEnd[ aEnd.Count()-1 ] = *pTmp->GetEnd(); -/*?*/ } -/*?*/ } -/*?*/ } -/*?*/ if( bOn && aEnd.Count() ) -/*?*/ rPos = aEnd[ aEnd.Count()-1 ]; -/*?*/ if( rPos > n2Start ) -/*?*/ rPos = n2Start; -/*?*/ return pRet; -/*N*/ } -/*N*/ return NULL; -/*N*/ } - /*-------------------------------------------------- * SwTxtFormatter::MakeRestPortion(..) * When a fieldportion at the end of line breaks and needs a following
_______________________________________________ Libreoffice-commits mailing list Libreoffice-commits@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits