[Libreoffice-commits] core.git: 3 commits - include/vcl sw/source vcl/aqua vcl/coretext vcl/inc vcl/source vcl/win

Caolán McNamara caolanm at redhat.com
Tue Dec 3 08:10:02 PST 2013


 include/vcl/outdev.hxx                     |    6 +--
 sw/source/core/inc/swfont.hxx              |    2 -
 sw/source/core/txtnode/fntcache.cxx        |   47 +++++++++++--------------
 sw/source/core/txtnode/fntcap.cxx          |   33 ++++++-----------
 vcl/aqua/source/gdi/atsui/salatslayout.cxx |   16 ++++----
 vcl/coretext/ctlayout.cxx                  |    8 ++--
 vcl/inc/textlayout.hxx                     |    4 +-
 vcl/source/edit/texteng.cxx                |    4 +-
 vcl/source/gdi/outdev3.cxx                 |   54 +++++++++++++----------------
 vcl/source/gdi/sallayout.cxx               |   12 +++---
 vcl/source/gdi/textlayout.cxx              |    6 +--
 vcl/source/glyphs/graphite_layout.cxx      |   10 +++--
 vcl/win/source/gdi/winlayout.cxx           |   10 ++---
 13 files changed, 100 insertions(+), 112 deletions(-)

New commits:
commit d83328b233f51d4a70bfeaae90129a68dccf825b
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Dec 3 12:27:44 2013 +0000

    longparas: convert GetTextBreak to sal_Int32
    
    Change-Id: I693e4c9916e1968c33ebd922829662f6efc27bfb

diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index c922872..52b3cde 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -593,10 +593,10 @@ public:
     void                DrawStretchText( const Point& rStartPt, sal_uLong nWidth,
                                          const OUString& rStr,
                                          xub_StrLen nIndex = 0, xub_StrLen nLen = STRING_LEN );
-    xub_StrLen          GetTextBreak( const OUString& rStr, long nTextWidth,
+    sal_Int32           GetTextBreak( const OUString& rStr, long nTextWidth,
                                       sal_Int32 nIndex = 0, sal_Int32 nLen = -1,
                                       long nCharExtra = 0 ) const;
-    xub_StrLen          GetTextBreak( const OUString& rStr, long nTextWidth,
+    sal_Int32           GetTextBreak( const OUString& rStr, long nTextWidth,
                                       sal_Unicode nExtraChar, sal_Int32& rExtraCharPos,
                                       sal_Int32 nIndex, sal_Int32 nLen,
                                       long nCharExtra = 0 ) const;
diff --git a/sw/source/core/inc/swfont.hxx b/sw/source/core/inc/swfont.hxx
index fb3849d..6f17a43 100644
--- a/sw/source/core/inc/swfont.hxx
+++ b/sw/source/core/inc/swfont.hxx
@@ -338,7 +338,7 @@ public:
     Size GetCapitalSize( SwDrawTextInfo& rInf )
         { return aSub[nActual].GetCapitalSize( rInf ); }
 
-    xub_StrLen GetCapitalBreak( SwViewShell* pSh,  const OutputDevice* pOut,
+    sal_Int32 GetCapitalBreak( SwViewShell* pSh,  const OutputDevice* pOut,
         const SwScriptInfo* pScript, const OUString& rTxt,
         long nTextWidth, const xub_StrLen nIdx,
         const xub_StrLen nLen );
diff --git a/sw/source/core/txtnode/fntcache.cxx b/sw/source/core/txtnode/fntcache.cxx
index 781023f..3ea5be7 100644
--- a/sw/source/core/txtnode/fntcache.cxx
+++ b/sw/source/core/txtnode/fntcache.cxx
@@ -2357,7 +2357,7 @@ xub_StrLen SwFont::GetTxtBreak( SwDrawTextInfo& rInf, long nTextWidth )
     OSL_ENSURE( !bCompress || ( rInf.GetScriptInfo() && rInf.GetScriptInfo()->
             CountCompChg()), "Compression without info" );
 
-    xub_StrLen nTxtBreak = 0;
+    sal_Int32 nTxtBreak = 0;
     long nKern = 0;
 
     sal_uInt16 nLn = ( rInf.GetLen() == STRING_LEN ? rInf.GetText().getLength()
@@ -2477,24 +2477,19 @@ xub_StrLen SwFont::GetTxtBreak( SwDrawTextInfo& rInf, long nTextWidth )
             bTextReplaced = true;
         }
 
-        OUString sTmpText(*pTmpText); // only needed until *pTmpText is OUString
-        sal_Int32 nTmpIdx2 = nTmpIdx;  // ditto
-        sal_Int32 nTmpLen2 = nTmpLen;  // ditto
         if( rInf.GetHyphPos() ) {
             sal_Int32 nHyphPos = *rInf.GetHyphPos();
-            nTxtBreak = rInf.GetOut().GetTextBreak( sTmpText, nTextWidth,
+            nTxtBreak = rInf.GetOut().GetTextBreak( *pTmpText, nTextWidth,
                              static_cast<sal_Unicode>('-'), nHyphPos,
-                             nTmpIdx2, nTmpLen2, nKern );
+                             nTmpIdx, nTmpLen, nKern );
             *rInf.GetHyphPos() = (nHyphPos == -1)
                 ? STRING_LEN : static_cast<xub_StrLen>(nHyphPos);
         }
         else
-            nTxtBreak = rInf.GetOut().GetTextBreak( sTmpText, nTextWidth,
-                                                    nTmpIdx2, nTmpLen2, nKern );
+            nTxtBreak = rInf.GetOut().GetTextBreak( *pTmpText, nTextWidth,
+                                                    nTmpIdx, nTmpLen, nKern );
 
-        nTmpIdx = nTmpIdx2;     // ditto
-        nTmpLen = nTmpLen2;     // ditto
-        if ( bTextReplaced && STRING_LEN != nTxtBreak )
+        if ( bTextReplaced && nTxtBreak != -1 )
         {
             if ( nTmpLen != nLn )
                 nTxtBreak = sw_CalcCaseMap( *this, rInf.GetText(),
@@ -2504,17 +2499,19 @@ xub_StrLen SwFont::GetTxtBreak( SwDrawTextInfo& rInf, long nTextWidth )
         }
     }
 
+    xub_StrLen nTxtBreak2 = nTxtBreak == -1 ? STRING_LEN : nTxtBreak;
+
     if ( ! bCompress )
-        return nTxtBreak;
+        return nTxtBreak2;
 
-    nTxtBreak = nTxtBreak - rInf.GetIdx();
+    nTxtBreak2 = nTxtBreak2 - rInf.GetIdx();
 
-    if( nTxtBreak < nLn )
+    if( nTxtBreak2 < nLn )
     {
-        if( !nTxtBreak && nLn )
+        if( !nTxtBreak2 && nLn )
             nLn = 1;
-        else if( nLn > 2 * nTxtBreak )
-            nLn = 2 * nTxtBreak;
+        else if( nLn > 2 * nTxtBreak2 )
+            nLn = 2 * nTxtBreak2;
         sal_Int32 *pKernArray = new sal_Int32[ nLn ];
         rInf.GetOut().GetTextArray( rInf.GetText(), pKernArray,
                                     rInf.GetIdx(), nLn );
@@ -2522,22 +2519,22 @@ xub_StrLen SwFont::GetTxtBreak( SwDrawTextInfo& rInf, long nTextWidth )
                             rInf.GetKanaComp(), (sal_uInt16)GetHeight( nActual ) ) )
         {
             long nKernAdd = nKern;
-            xub_StrLen nTmpBreak = nTxtBreak;
-            if( nKern && nTxtBreak )
-                nKern *= nTxtBreak - 1;
-            while( nTxtBreak<nLn && nTextWidth >= pKernArray[nTxtBreak] +nKern )
+            xub_StrLen nTmpBreak = nTxtBreak2;
+            if( nKern && nTxtBreak2 )
+                nKern *= nTxtBreak2 - 1;
+            while( nTxtBreak2<nLn && nTextWidth >= pKernArray[nTxtBreak2] +nKern )
             {
                 nKern += nKernAdd;
-                ++nTxtBreak;
+                ++nTxtBreak2;
             }
             if( rInf.GetHyphPos() )
-                *rInf.GetHyphPos() += nTxtBreak - nTmpBreak; // It's not perfect
+                *rInf.GetHyphPos() += nTxtBreak2 - nTmpBreak; // It's not perfect
         }
         delete[] pKernArray;
     }
-    nTxtBreak = nTxtBreak + rInf.GetIdx();
+    nTxtBreak2 = nTxtBreak2 + rInf.GetIdx();
 
-    return nTxtBreak;
+    return nTxtBreak2;
 }
 
 extern Color aGlobalRetoucheColor;
diff --git a/sw/source/core/txtnode/fntcap.cxx b/sw/source/core/txtnode/fntcap.cxx
index 2ae345b..70dae9e 100644
--- a/sw/source/core/txtnode/fntcap.cxx
+++ b/sw/source/core/txtnode/fntcap.cxx
@@ -182,17 +182,17 @@ class SwDoGetCapitalBreak : public SwDoCapitals
 {
 protected:
     long nTxtWidth;
-    xub_StrLen nBreak;
+    sal_Int32 m_nBreak;
 public:
     SwDoGetCapitalBreak( SwDrawTextInfo &rInfo, long const nWidth)
         :   SwDoCapitals ( rInfo )
         ,   nTxtWidth( nWidth )
-        ,   nBreak( STRING_LEN )
+        ,   m_nBreak( -1 )
         { }
     virtual ~SwDoGetCapitalBreak() {}
     virtual void Init( SwFntObj *pUpperFont, SwFntObj *pLowerFont );
     virtual void Do();
-    xub_StrLen GetBreak() const { return nBreak; }
+    sal_Int32 getBreak() const { return m_nBreak; }
 };
 
 void SwDoGetCapitalBreak::Init( SwFntObj *, SwFntObj * )
@@ -208,30 +208,23 @@ void SwDoGetCapitalBreak::Do()
         else
         {
             xub_StrLen nEnd = rInf.GetEnd();
-            OUString sText(rInf.GetText()); // only needed until rInf.GetText() returns OUString
-            sal_Int32 nIdx2 = rInf.GetIdx(); // ditto
-            sal_Int32 nLen2 = rInf.GetLen(); // ditto
-            nBreak = GetOut().GetTextBreak( sText, nTxtWidth,
-                               nIdx2, nLen2, rInf.GetKern() );
+            m_nBreak = GetOut().GetTextBreak( rInf.GetText(), nTxtWidth,
+                               rInf.GetIdx(), rInf.GetLen(), rInf.GetKern() );
 
-            rInf.SetText(sText); // ditto
-            rInf.SetIdx(nIdx2);  // ditto
-            rInf.SetLen(nLen2);  // ditto
+            if (m_nBreak > nEnd || m_nBreak < 0)
+                m_nBreak = nEnd;
 
-            if( nBreak > nEnd )
-                nBreak = nEnd;
-
-            // nBreak may be relative to the display string. It has to be
+            // m_nBreak may be relative to the display string. It has to be
             // calculated relative to the original string:
             if ( GetCapInf()  )
             {
                 if ( GetCapInf()->nLen != rInf.GetLen() )
-                    nBreak = sw_CalcCaseMap( *rInf.GetFont(),
+                    m_nBreak = sw_CalcCaseMap( *rInf.GetFont(),
                                               GetCapInf()->rString,
                                               GetCapInf()->nIdx,
-                                              GetCapInf()->nLen, nBreak );
+                                              GetCapInf()->nLen, m_nBreak );
                 else
-                    nBreak = nBreak + GetCapInf()->nIdx;
+                    m_nBreak = m_nBreak + GetCapInf()->nIdx;
             }
 
             nTxtWidth = 0;
@@ -243,7 +236,7 @@ void SwDoGetCapitalBreak::Do()
  *                    SwFont::GetCapitalBreak()
  *************************************************************************/
 
-xub_StrLen SwFont::GetCapitalBreak( SwViewShell* pSh, const OutputDevice* pOut,
+sal_Int32 SwFont::GetCapitalBreak( SwViewShell* pSh, const OutputDevice* pOut,
     const SwScriptInfo* pScript, const OUString& rTxt, long const nTextWidth,
     const xub_StrLen nIdx, const xub_StrLen nLen )
 {
@@ -263,7 +256,7 @@ xub_StrLen SwFont::GetCapitalBreak( SwViewShell* pSh, const OutputDevice* pOut,
 
     SwDoGetCapitalBreak aDo(aInfo, nTextWidth);
     DoOnCapitals( aDo );
-    return aDo.GetBreak();
+    return aDo.getBreak();
 }
 
 /*************************************************************************
diff --git a/vcl/aqua/source/gdi/atsui/salatslayout.cxx b/vcl/aqua/source/gdi/atsui/salatslayout.cxx
index 250831c..801af6a 100644
--- a/vcl/aqua/source/gdi/atsui/salatslayout.cxx
+++ b/vcl/aqua/source/gdi/atsui/salatslayout.cxx
@@ -748,13 +748,13 @@ long ATSLayout::FillDXArray( sal_Int32* pDXArray ) const
  *
  * @return : string index corresponding to the suggested line break
 **/
-int ATSLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const
+sal_Int32 ATSLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const
 {
     SAL_INFO("vcl.atsui.layout", "GetTextBreak(" << this << ",nMaxWidth=" << nMaxWidth << ",nCharExtra=" << nCharExtra << ",nFactor=" << nFactor << ")" );
 
     if( !maATSULayout ) {
-        SAL_INFO( "vcl.atsui.layout", "GetTextBreak(): no maATSULayout, returning STRING_LEN" );
-        return STRING_LEN;
+        SAL_INFO( "vcl.atsui.layout", "GetTextBreak(): no maATSULayout, returning -1" );
+        return -1;
     }
 
     // the semantics of the legacy use case (nCharExtra!=0) cannot be mapped to ATSUBreakLine()
@@ -762,7 +762,7 @@ int ATSLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) cons
     {
         // prepare the measurement by layouting and measuring the un-expanded/un-condensed text
         if( !InitGIA() )
-            return STRING_LEN;
+            return -1;
 
         // TODO: use a better way than by testing each the char position
         ATSUTextMeasurement nATSUSumWidth = 0;
@@ -779,7 +779,7 @@ int ATSLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) cons
                     return (mnMinCharPos + i);
         }
 
-        return STRING_LEN;
+        return -1;
     }
 
     // get a quick overview on what could fit
@@ -806,15 +806,15 @@ int ATSLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) cons
     OSStatus eStatus = ATSUBreakLine( maATSULayout, mnMinCharPos,
         nATSUMaxWidth, false, &nBreakPos );
     if( (eStatus != noErr) && (eStatus != kATSULineBreakInWord) )
-        return STRING_LEN;
+        return -1;
 
     // the result from ATSUBreakLine() doesn't match the semantics expected by its
     // application layer callers from SW+SVX+I18N. Adjust the results to the expectations:
 
     // ATSU reports that everything fits even when trailing spaces would break the line
-    // #i89789# OOo's application layers expect STRING_LEN if everything fits
+    // #i89789# OOo's application layers expect -1 if everything fits
     if( nBreakPos >= static_cast<UniCharArrayOffset>(mnEndCharPos) )
-        return STRING_LEN;
+        return -1;
 
     // GetTextBreak()'s callers expect it to return the "stupid visual line break".
     // Returning anything else result.s in subtle problems in the application layers.
diff --git a/vcl/coretext/ctlayout.cxx b/vcl/coretext/ctlayout.cxx
index 435c7b1..b6d2c16 100644
--- a/vcl/coretext/ctlayout.cxx
+++ b/vcl/coretext/ctlayout.cxx
@@ -397,19 +397,19 @@ long CTLayout::FillDXArray( sal_Int32* pDXArray ) const
     return nPixWidth;
 }
 
-int CTLayout::GetTextBreak( long nMaxWidth, long /*nCharExtra*/, int nFactor ) const
+sal_Int32 CTLayout::GetTextBreak( long nMaxWidth, long /*nCharExtra*/, int nFactor ) const
 {
     if( !mpCTLine )
-        return STRING_LEN;
+        return -1;
 
     CTTypesetterRef aCTTypeSetter = CTTypesetterCreateWithAttributedString( mpAttrString );
     const double fCTMaxWidth = (double)nMaxWidth / nFactor;
     CFIndex nIndex = CTTypesetterSuggestClusterBreak( aCTTypeSetter, 0, fCTMaxWidth );
     if( nIndex >= mnCharCount )
-        return STRING_LEN;
+        return -1;
 
     nIndex += mnMinCharPos;
-    return (int)nIndex;
+    return nIndex;
 }
 
 void CTLayout::GetCaretPositions( int nMaxIndex, sal_Int32* pCaretXArray ) const
diff --git a/vcl/inc/textlayout.hxx b/vcl/inc/textlayout.hxx
index 541fcf4..d16d249 100644
--- a/vcl/inc/textlayout.hxx
+++ b/vcl/inc/textlayout.hxx
@@ -42,7 +42,7 @@ namespace vcl
         virtual void        DrawText( const Point& _rStartPoint, const OUString& _rText, sal_Int32 _nStartIndex, sal_Int32 _nLength,
                                 MetricVector* _pVector, OUString* _pDisplayText ) = 0;
         virtual bool        GetCaretPositions( const OUString& _rText, sal_Int32* _pCaretXArray, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const = 0;
-        virtual xub_StrLen  GetTextBreak( const OUString& _rText, long _nMaxTextWidth, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const = 0;
+        virtual sal_Int32   GetTextBreak( const OUString& _rText, long _nMaxTextWidth, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const = 0;
         virtual bool        DecomposeTextRectAction() const = 0;
 
     protected:
@@ -84,7 +84,7 @@ namespace vcl
                                 sal_Int32 _nStartIndex,
                                 sal_Int32 _nLength
                             ) const;
-        virtual xub_StrLen  GetTextBreak(
+        virtual sal_Int32   GetTextBreak(
                                 const OUString& _rText,
                                 long _nMaxTextWidth,
                                 sal_Int32 _nStartIndex,
diff --git a/vcl/source/edit/texteng.cxx b/vcl/source/edit/texteng.cxx
index 3710fbf..2a4a9fc 100644
--- a/vcl/source/edit/texteng.cxx
+++ b/vcl/source/edit/texteng.cxx
@@ -1145,7 +1145,7 @@ sal_uInt16 TextEngine::GetCharPos( sal_uLong nPortion, sal_uInt16 nLine, long nX
                 if ( IsRightToLeft() != pTextPortion->IsRightToLeft() )
                     nPosInPortion = pTextPortion->GetWidth() - nPosInPortion;
                 nCurIndex = mpRefDev->GetTextBreak( pPortion->GetNode()->GetText(), nPosInPortion, nCurIndex );
-                // MT: GetTextBreak should assure that we are not withing a CTL cell...
+                // MT: GetTextBreak should assure that we are not within a CTL cell...
             }
             return nCurIndex;
         }
@@ -1688,7 +1688,7 @@ void TextEngine::ImpBreakLine( sal_uLong nPara, TextLine* pLine, TETextPortion*,
 
     DBG_ASSERT( nMaxBreakPos < pNode->GetText().getLength(), "ImpBreakLine: Break?!" );
 
-    if ( nMaxBreakPos == STRING_LEN )   // GetTextBreak() != GetTextSize()
+    if ( nMaxBreakPos == -1 )   // GetTextBreak() != GetTextSize()
         nMaxBreakPos = pNode->GetText().getLength() - 1;
 
     uno::Reference < i18n::XBreakIterator > xBI = GetBreakIterator();
diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx
index 0ad69cf..dc39598 100644
--- a/vcl/source/gdi/outdev3.cxx
+++ b/vcl/source/gdi/outdev3.cxx
@@ -4705,12 +4705,12 @@ long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
                 if ( xBI.is() )
                 {
                     const com::sun::star::lang::Locale& rDefLocale(Application::GetSettings().GetUILanguageTag().getLocale());
-                    xub_StrLen nSoftBreak = _rLayout.GetTextBreak( rStr, nWidth, nPos, nBreakPos - nPos );
+                    sal_Int32 nSoftBreak = _rLayout.GetTextBreak( rStr, nWidth, nPos, nBreakPos - nPos );
                     DBG_ASSERT( nSoftBreak < nBreakPos, "Break?!" );
                     i18n::LineBreakHyphenationOptions aHyphOptions( xHyph, uno::Sequence <beans::PropertyValue>(), 1 );
                     i18n::LineBreakUserOptions aUserOptions;
                     i18n::LineBreakResults aLBR = xBI->getLineBreak( rStr, nSoftBreak, rDefLocale, nPos, aHyphOptions, aUserOptions );
-                    nBreakPos = (xub_StrLen)aLBR.breakIndex;
+                    nBreakPos = aLBR.breakIndex;
                     if ( nBreakPos <= nPos )
                         nBreakPos = nSoftBreak;
                     if ( bHyphenate )
@@ -4728,7 +4728,7 @@ long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
                             sal_Unicode cAlternateReplChar = 0;
                             i18n::Boundary aBoundary = xBI->getWordBoundary( rStr, nBreakPos, rDefLocale, ::com::sun::star::i18n::WordType::DICTIONARY_WORD, sal_True );
                             sal_Int32 nWordStart = nPos;
-                            sal_Int32 nWordEnd = (sal_Int32) aBoundary.endPos;
+                            sal_Int32 nWordEnd = aBoundary.endPos;
                             DBG_ASSERT( nWordEnd > nWordStart, "ImpBreakLine: Start >= End?" );
 
                             sal_Int32 nWordLen = nWordEnd - nWordStart;
@@ -4737,14 +4737,14 @@ long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
                                 // #104415# May happen, because getLineBreak may differ from getWordBoudary with DICTIONARY_WORD
                                 // DBG_ASSERT( nWordEnd >= nMaxBreakPos, "Hyph: Break?" );
                                 OUString aWord = rStr.copy( nWordStart, nWordLen );
-                                sal_uInt16 nMinTrail = static_cast<sal_uInt16>(nWordEnd-nSoftBreak+1);  //+1: Before the "broken off" char
+                                sal_Int32 nMinTrail = nWordEnd-nSoftBreak+1;  //+1: Before the "broken off" char
                                 uno::Reference< linguistic2::XHyphenatedWord > xHyphWord;
                                 if (xHyph.is())
                                     xHyphWord = xHyph->hyphenate( aWord, rDefLocale, aWord.getLength() - nMinTrail, uno::Sequence< beans::PropertyValue >() );
                                 if (xHyphWord.is())
                                 {
                                     sal_Bool bAlternate = xHyphWord->isAlternativeSpelling();
-                                    sal_uInt16 _nWordLen = 1 + xHyphWord->getHyphenPos();
+                                    sal_Int32 _nWordLen = 1 + xHyphWord->getHyphenPos();
 
                                     if ( ( _nWordLen >= 2 ) && ( (nWordStart+_nWordLen) >= ( 2 ) ) )
                                     {
@@ -4770,10 +4770,10 @@ long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
                                             // index.
                                             // TODO: The whole junk will be made easier by a function in
                                             // the Hyphenator, as soon as AMA adds it.
-                                            sal_uInt16 nAltStart = _nWordLen - 1;
-                                            sal_uInt16 nTxtStart = nAltStart - (aAlt.getLength() - aWord.getLength());
-                                            sal_uInt16 nTxtEnd = nTxtStart;
-                                            sal_uInt16 nAltEnd = nAltStart;
+                                            sal_Int32 nAltStart = _nWordLen - 1;
+                                            sal_Int32 nTxtStart = nAltStart - (aAlt.getLength() - aWord.getLength());
+                                            sal_Int32 nTxtEnd = nTxtStart;
+                                            sal_Int32 nAltEnd = nAltStart;
 
                                             // The area between nStart and nEnd is the difference
                                             // between AlternativString and OriginalString
@@ -5993,14 +5993,14 @@ sal_Bool OutputDevice::GetTextIsRTL( const OUString& rString, sal_Int32 nIndex,
     return (nCharPos != nIndex) ? sal_True : sal_False;
 }
 
-xub_StrLen OutputDevice::GetTextBreak( const OUString& rStr, long nTextWidth,
+sal_Int32 OutputDevice::GetTextBreak( const OUString& rStr, long nTextWidth,
                                        sal_Int32 nIndex, sal_Int32 nLen,
                                        long nCharExtra ) const
 {
     DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
 
     SalLayout* pSalLayout = ImplLayout( rStr, nIndex, nLen );
-    xub_StrLen nRetVal = STRING_LEN;
+    sal_Int32 nRetVal = -1;
     if( pSalLayout )
     {
         // convert logical widths into layout units
@@ -6017,7 +6017,7 @@ xub_StrLen OutputDevice::GetTextBreak( const OUString& rStr, long nTextWidth,
             nCharExtra *= nWidthFactor * nSubPixelFactor;
             nExtraPixelWidth = ImplLogicWidthToDevicePixel( nCharExtra );
         }
-        nRetVal = sal::static_int_cast<xub_StrLen>(pSalLayout->GetTextBreak( nTextPixelWidth, nExtraPixelWidth, nSubPixelFactor ));
+        nRetVal = pSalLayout->GetTextBreak( nTextPixelWidth, nExtraPixelWidth, nSubPixelFactor );
 
         pSalLayout->Release();
     }
@@ -6025,18 +6025,18 @@ xub_StrLen OutputDevice::GetTextBreak( const OUString& rStr, long nTextWidth,
     return nRetVal;
 }
 
-xub_StrLen OutputDevice::GetTextBreak( const OUString& rStr, long nTextWidth,
+sal_Int32 OutputDevice::GetTextBreak( const OUString& rStr, long nTextWidth,
                                        sal_Unicode nHyphenatorChar, sal_Int32& rHyphenatorPos,
                                        sal_Int32 nIndex, sal_Int32 nLen,
                                        long nCharExtra ) const
 {
     DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
 
-    rHyphenatorPos = STRING_LEN;
+    rHyphenatorPos = -1;
 
     SalLayout* pSalLayout = ImplLayout( rStr, nIndex, nLen );
     if( !pSalLayout )
-        return STRING_LEN;
+        return -1;
 
     // convert logical widths into layout units
     // NOTE: be very careful to avoid rounding errors for nCharExtra case
@@ -6055,7 +6055,7 @@ xub_StrLen OutputDevice::GetTextBreak( const OUString& rStr, long nTextWidth,
     }
 
     // calculate un-hyphenated break position
-    xub_StrLen nRetVal = sal::static_int_cast<xub_StrLen>(pSalLayout->GetTextBreak( nTextPixelWidth, nExtraPixelWidth, nSubPixelFactor ));
+    sal_Int32 nRetVal = pSalLayout->GetTextBreak( nTextPixelWidth, nExtraPixelWidth, nSubPixelFactor );
 
     // calculate hyphenated break position
     OUString aHyphenatorStr(nHyphenatorChar);
@@ -6072,14 +6072,11 @@ xub_StrLen OutputDevice::GetTextBreak( const OUString& rStr, long nTextWidth,
         if( nExtraPixelWidth > 0 )
             nTextPixelWidth -= nExtraPixelWidth;
 
-        // why does this return "int" and use STRING_LEN for errors???
-        xub_StrLen nTmp = sal::static_int_cast<xub_StrLen>(
-            pSalLayout->GetTextBreak(nTextPixelWidth, nExtraPixelWidth, nSubPixelFactor));
-
-        nTmp = std::min(nTmp, nRetVal);
+        rHyphenatorPos =
+            pSalLayout->GetTextBreak(nTextPixelWidth, nExtraPixelWidth, nSubPixelFactor);
 
-        // TODO: remove nTmp when GetTextBreak sal_Int32
-        rHyphenatorPos = (nTmp == STRING_LEN) ? -1 : nTmp;
+        if( rHyphenatorPos > nRetVal )
+            rHyphenatorPos = nRetVal;
     }
 
     pSalLayout->Release();
@@ -6574,7 +6571,7 @@ OUString OutputDevice::ImplGetEllipsisString( const OutputDevice& rTargetDevice,
     OUString aStr = rOrigStr;
     sal_Int32 nIndex = _rLayout.GetTextBreak( aStr, nMaxWidth, 0, aStr.getLength() );
 
-    if ( nIndex != STRING_LEN )
+    if ( nIndex != -1 )
     {
         if( (nStyle & TEXT_DRAW_CENTERELLIPSIS) == TEXT_DRAW_CENTERELLIPSIS )
         {
diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx
index 450ec232..5bd27fa 100644
--- a/vcl/source/gdi/sallayout.cxx
+++ b/vcl/source/gdi/sallayout.cxx
@@ -1351,12 +1351,12 @@ void GenericSalLayout::GetCaretPositions( int nMaxIndex, sal_Int32* pCaretXArray
 
 // -----------------------------------------------------------------------
 
-int GenericSalLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const
+sal_Int32 GenericSalLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const
 {
     int nCharCapacity = mnEndCharPos - mnMinCharPos;
     sal_Int32* pCharWidths = (sal_Int32*)alloca( nCharCapacity * sizeof(sal_Int32) );
     if( !GetCharWidths( pCharWidths ) )
-        return STRING_LEN;
+        return -1;
 
     long nWidth = 0;
     for( int i = mnMinCharPos; i < mnEndCharPos; ++i )
@@ -1367,7 +1367,7 @@ int GenericSalLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor
         nWidth += nCharExtra;
     }
 
-    return STRING_LEN;
+    return -1;
 }
 
 // -----------------------------------------------------------------------
@@ -2003,10 +2003,10 @@ void MultiSalLayout::DrawText( SalGraphics& rGraphics ) const
 
  // -----------------------------------------------------------------------
 
-int MultiSalLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const
+sal_Int32 MultiSalLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const
 {
     if( mnLevel <= 0 )
-        return STRING_LEN;
+        return -1;
     if( mnLevel == 1 )
         return mpLayouts[0]->GetTextBreak( nMaxWidth, nCharExtra, nFactor );
 
@@ -2037,7 +2037,7 @@ int MultiSalLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor )
         nWidth += nCharExtra;
     }
 
-    return STRING_LEN;
+    return -1;
 }
 
 // -----------------------------------------------------------------------
diff --git a/vcl/source/gdi/textlayout.cxx b/vcl/source/gdi/textlayout.cxx
index ba2cfb5..5e75299 100644
--- a/vcl/source/gdi/textlayout.cxx
+++ b/vcl/source/gdi/textlayout.cxx
@@ -60,7 +60,7 @@ namespace vcl
         return m_rTargetDevice.GetCaretPositions( _rText, _pCaretXArray, _nStartIndex, _nLength );
     }
 
-    xub_StrLen DefaultTextLayout::GetTextBreak( const OUString& _rText, long _nMaxTextWidth, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const
+    sal_Int32 DefaultTextLayout::GetTextBreak( const OUString& _rText, long _nMaxTextWidth, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const
     {
         return m_rTargetDevice.GetTextBreak( _rText, _nMaxTextWidth, _nStartIndex, _nLength );
     }
@@ -80,7 +80,7 @@ namespace vcl
         virtual long        GetTextWidth( const OUString& rStr, sal_Int32 nIndex, sal_Int32 nLen ) const;
         virtual void        DrawText( const Point& _rStartPoint, const OUString& _rText, sal_Int32 _nStartIndex, sal_Int32 _nLength, MetricVector* _pVector, OUString* _pDisplayText );
         virtual bool        GetCaretPositions( const OUString& _rText, sal_Int32* _pCaretXArray, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const;
-        virtual xub_StrLen  GetTextBreak( const OUString& _rText, long _nMaxTextWidth, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const;
+        virtual sal_Int32   GetTextBreak( const OUString& _rText, long _nMaxTextWidth, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const;
         virtual bool        DecomposeTextRectAction() const;
 
     public:
@@ -243,7 +243,7 @@ namespace vcl
         return true;
     }
 
-    xub_StrLen ReferenceDeviceTextLayout::GetTextBreak( const OUString& _rText, long _nMaxTextWidth, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const
+    sal_Int32 ReferenceDeviceTextLayout::GetTextBreak( const OUString& _rText, long _nMaxTextWidth, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const
     {
         if ( !lcl_normalizeLength( _rText, _nStartIndex, _nLength ) )
             return 0;
diff --git a/vcl/source/glyphs/graphite_layout.cxx b/vcl/source/glyphs/graphite_layout.cxx
index 348c4e3..b4498cf 100644
--- a/vcl/source/glyphs/graphite_layout.cxx
+++ b/vcl/source/glyphs/graphite_layout.cxx
@@ -680,7 +680,7 @@ bool GraphiteLayout::LayoutGlyphs(ImplLayoutArgs& rArgs, gr_segment * pSegment)
     return true;
 }
 
-int GraphiteLayout::GetTextBreak(long maxmnWidth, long char_extra, int factor) const
+sal_Int32 GraphiteLayout::GetTextBreak(long maxmnWidth, long char_extra, int factor) const
 {
 #ifdef GRLAYOUT_DEBUG
     fprintf(grLog(),"Gr::GetTextBreak c[%d-%d) maxWidth %ld char extra %ld factor %d\n",
@@ -689,7 +689,7 @@ int GraphiteLayout::GetTextBreak(long maxmnWidth, long char_extra, int factor) c
 
     // return quickly if this segment is narrower than the target width
     if (maxmnWidth > mnWidth * factor + char_extra * (mnEndCharPos - mnMinCharPos - 1))
-        return STRING_LEN;
+        return -1;
 
     long nWidth = mvCharDxs[0] * factor;
     long wLastBreak = 0;
@@ -724,8 +724,10 @@ int GraphiteLayout::GetTextBreak(long maxmnWidth, long char_extra, int factor) c
     fprintf(grLog(), "Gr::GetTextBreak break after %d, weights(%d, %d)\n", nBreak - mnMinCharPos, mvCharBreaks[nBreak - mnMinCharPos], mvCharBreaks[nBreak - mnMinCharPos - 1]);
 #endif
 
-    if (nBreak > mnEndCharPos) nBreak = STRING_LEN;
-    else if (nBreak < mnMinCharPos) nBreak = mnMinCharPos;
+    if (nBreak > mnEndCharPos)
+        nBreak = -1;
+    else if (nBreak < mnMinCharPos)
+        nBreak = mnMinCharPos;
     return nBreak;
 }
 
diff --git a/vcl/win/source/gdi/winlayout.cxx b/vcl/win/source/gdi/winlayout.cxx
index f240f17..a0f1ec4 100644
--- a/vcl/win/source/gdi/winlayout.cxx
+++ b/vcl/win/source/gdi/winlayout.cxx
@@ -669,12 +669,12 @@ long SimpleWinLayout::FillDXArray( long* pDXArray ) const
 
 // -----------------------------------------------------------------------
 
-int SimpleWinLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const
+sal_Int32 SimpleWinLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const
 // NOTE: the nFactor is used to prevent rounding errors for small nCharExtra values
 {
     if( mnWidth )
         if( (mnWidth * nFactor + mnCharCount * nCharExtra) <= nMaxWidth )
-            return STRING_LEN;
+            return -1;
 
     long nExtraWidth = mnBaseAdv * nFactor;
     for( int n = 0; n < mnCharCount; ++n )
@@ -689,7 +689,7 @@ int SimpleWinLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor
         nExtraWidth += nCharExtra;
     }
 
-    return STRING_LEN;
+    return -1;
 }
 
 // -----------------------------------------------------------------------
@@ -2182,7 +2182,7 @@ long UniscribeLayout::FillDXArray( long* pDXArray ) const
 
 // -----------------------------------------------------------------------
 
-int UniscribeLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const
+sal_Int32 UniscribeLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const
 {
     long nWidth = 0;
     for( int i = mnMinCharPos; i < mnEndCharPos; ++i )
@@ -2222,7 +2222,7 @@ int UniscribeLayout::GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor
     }
 
     // the whole layout did fit inside the nMaxWidth
-    return STRING_LEN;
+    return -1;
 }
 
 // -----------------------------------------------------------------------
commit f1bd4db85538e4979dea6e0d6d306ac89210ea32
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Dec 3 12:07:50 2013 +0000

    drop unused argument
    
    Change-Id: Ifc262144b7a4c027529ad2927996a4ebf766a5c2

diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index 047a79d..c922872 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -595,7 +595,7 @@ public:
                                          xub_StrLen nIndex = 0, xub_StrLen nLen = STRING_LEN );
     xub_StrLen          GetTextBreak( const OUString& rStr, long nTextWidth,
                                       sal_Int32 nIndex = 0, sal_Int32 nLen = -1,
-                                      long nCharExtra = 0, sal_Bool bCellBreaking = sal_True ) const;
+                                      long nCharExtra = 0 ) const;
     xub_StrLen          GetTextBreak( const OUString& rStr, long nTextWidth,
                                       sal_Unicode nExtraChar, sal_Int32& rExtraCharPos,
                                       sal_Int32 nIndex, sal_Int32 nLen,
diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx
index f7b927f..0ad69cf 100644
--- a/vcl/source/gdi/outdev3.cxx
+++ b/vcl/source/gdi/outdev3.cxx
@@ -5995,7 +5995,7 @@ sal_Bool OutputDevice::GetTextIsRTL( const OUString& rString, sal_Int32 nIndex,
 
 xub_StrLen OutputDevice::GetTextBreak( const OUString& rStr, long nTextWidth,
                                        sal_Int32 nIndex, sal_Int32 nLen,
-                                       long nCharExtra, sal_Bool /*TODO: bCellBreaking*/ ) const
+                                       long nCharExtra ) const
 {
     DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
 
commit 434bcc93d9d49917dfccd19ab68f9de17e964ff7
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Dec 3 12:04:26 2013 +0000

    we don't need to copy this string anymore
    
    Change-Id: Ie705cb2c949ef9212a69c9d875e3c3217a3146bb

diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx
index 0543eb5..f7b927f 100644
--- a/vcl/source/gdi/outdev3.cxx
+++ b/vcl/source/gdi/outdev3.cxx
@@ -4674,7 +4674,6 @@ long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
     rLineInfo.Clear();
     if ( !rStr.isEmpty() && (nWidth > 0) )
     {
-        OUString aText( rStr );
         uno::Reference < i18n::XBreakIterator > xBI;
         // get service provider
         uno::Reference< uno::XComponentContext > xContext( comphelper::getProcessComponentContext() );
@@ -4710,7 +4709,7 @@ long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
                     DBG_ASSERT( nSoftBreak < nBreakPos, "Break?!" );
                     i18n::LineBreakHyphenationOptions aHyphOptions( xHyph, uno::Sequence <beans::PropertyValue>(), 1 );
                     i18n::LineBreakUserOptions aUserOptions;
-                    i18n::LineBreakResults aLBR = xBI->getLineBreak( aText, nSoftBreak, rDefLocale, nPos, aHyphOptions, aUserOptions );
+                    i18n::LineBreakResults aLBR = xBI->getLineBreak( rStr, nSoftBreak, rDefLocale, nPos, aHyphOptions, aUserOptions );
                     nBreakPos = (xub_StrLen)aLBR.breakIndex;
                     if ( nBreakPos <= nPos )
                         nBreakPos = nSoftBreak;
@@ -4727,7 +4726,7 @@ long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
                         if ( xHyph.is() )
                         {
                             sal_Unicode cAlternateReplChar = 0;
-                            i18n::Boundary aBoundary = xBI->getWordBoundary( aText, nBreakPos, rDefLocale, ::com::sun::star::i18n::WordType::DICTIONARY_WORD, sal_True );
+                            i18n::Boundary aBoundary = xBI->getWordBoundary( rStr, nBreakPos, rDefLocale, ::com::sun::star::i18n::WordType::DICTIONARY_WORD, sal_True );
                             sal_Int32 nWordStart = nPos;
                             sal_Int32 nWordEnd = (sal_Int32) aBoundary.endPos;
                             DBG_ASSERT( nWordEnd > nWordStart, "ImpBreakLine: Start >= End?" );
@@ -4737,7 +4736,7 @@ long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
                             {
                                 // #104415# May happen, because getLineBreak may differ from getWordBoudary with DICTIONARY_WORD
                                 // DBG_ASSERT( nWordEnd >= nMaxBreakPos, "Hyph: Break?" );
-                                OUString aWord = aText.copy( nWordStart, nWordLen );
+                                OUString aWord = rStr.copy( nWordStart, nWordLen );
                                 sal_uInt16 nMinTrail = static_cast<sal_uInt16>(nWordEnd-nSoftBreak+1);  //+1: Before the "broken off" char
                                 uno::Reference< linguistic2::XHyphenatedWord > xHyphWord;
                                 if (xHyph.is())


More information about the Libreoffice-commits mailing list