[PATCH] Use OUString / sal_Int32 in vcl(outdev3.cxx,textlayout.cxx)

Christina Roßmanith (via_Code_Review) gerrit at gerrit.libreoffice.org
Wed Mar 27 14:26:50 PDT 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/3099

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/99/3099/1

Use OUString / sal_Int32 in vcl(outdev3.cxx,textlayout.cxx)

ImplGetTextLines(), GetCaretPositions(), ImplAddDevFontSubstitute(), AddFontSubstitute() ...

Change-Id: I781364da7a36afef65aac7a683c1b80fad61671e
---
M vcl/inc/textlayout.hxx
M vcl/inc/vcl/outdev.hxx
M vcl/source/gdi/outdev3.cxx
M vcl/source/gdi/textlayout.cxx
4 files changed, 65 insertions(+), 66 deletions(-)



diff --git a/vcl/inc/textlayout.hxx b/vcl/inc/textlayout.hxx
index 5e95eab..28f21eb 100644
--- a/vcl/inc/textlayout.hxx
+++ b/vcl/inc/textlayout.hxx
@@ -41,10 +41,10 @@
     {
     public:
         virtual long        GetTextWidth( const XubString& _rText, xub_StrLen _nStartIndex, xub_StrLen _nLength ) const = 0;
-        virtual void        DrawText( const Point& _rStartPoint, const XubString& _rText, xub_StrLen _nStartIndex, xub_StrLen _nLength,
+        virtual void        DrawText( const Point& _rStartPoint, const OUString& _rText, sal_Int32 _nStartIndex, sal_Int32 _nLength,
                                 MetricVector* _pVector, OUString* _pDisplayText ) = 0;
-        virtual bool        GetCaretPositions( const XubString& _rText, sal_Int32* _pCaretXArray, xub_StrLen _nStartIndex, xub_StrLen _nLength ) const = 0;
-        virtual xub_StrLen  GetTextBreak( const XubString& _rText, long _nMaxTextWidth, xub_StrLen _nStartIndex, xub_StrLen _nLength ) const = 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 bool        DecomposeTextRectAction() const = 0;
 
     protected:
@@ -74,23 +74,23 @@
                             ) const;
         virtual void        DrawText(
                                 const Point& _rStartPoint,
-                                const XubString& _rText,
-                                xub_StrLen _nStartIndex,
-                                xub_StrLen _nLength,
+                                const OUString& _rText,
+                                sal_Int32 _nStartIndex,
+                                sal_Int32 _nLength,
                                 MetricVector* _pVector,
                                 OUString* _pDisplayText
                             );
         virtual bool        GetCaretPositions(
-                                const XubString& _rText,
+                                const OUString& _rText,
                                 sal_Int32* _pCaretXArray,
-                                xub_StrLen _nStartIndex,
-                                xub_StrLen _nLength
+                                sal_Int32 _nStartIndex,
+                                sal_Int32 _nLength
                             ) const;
         virtual xub_StrLen  GetTextBreak(
-                                const XubString& _rText,
+                                const OUString& _rText,
                                 long _nMaxTextWidth,
-                                xub_StrLen _nStartIndex,
-                                xub_StrLen _nLength
+                                sal_Int32 _nStartIndex,
+                                sal_Int32 _nLength
                             ) const;
         virtual bool        DecomposeTextRectAction() const;
 
diff --git a/vcl/inc/vcl/outdev.hxx b/vcl/inc/vcl/outdev.hxx
index e0dbd6c..a1424f6 100644
--- a/vcl/inc/vcl/outdev.hxx
+++ b/vcl/inc/vcl/outdev.hxx
@@ -415,7 +415,7 @@
     SAL_DLLPRIVATE void         ImplGetEmphasisMark( PolyPolygon& rPolyPoly, sal_Bool& rPolyLine, Rectangle& rRect1, Rectangle& rRect2, long& rYOff, long& rWidth, FontEmphasisMark eEmphasis, long nHeight, short nOrient );
     SAL_DLLPRIVATE void         ImplDrawEmphasisMark( long nBaseX, long nX, long nY, const PolyPolygon& rPolyPoly, sal_Bool bPolyLine, const Rectangle& rRect1, const Rectangle& rRect2 );
     static
-    SAL_DLLPRIVATE long         ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo, long nWidth, const XubString& rStr, sal_uInt16 nStyle, const ::vcl::ITextLayout& _rLayout );
+    SAL_DLLPRIVATE long         ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo, long nWidth, const OUString& rStr, sal_uInt16 nStyle, const ::vcl::ITextLayout& _rLayout );
     SAL_DLLPRIVATE void         ImplInitFontList() const;
     SAL_DLLPRIVATE void         ImplUpdateFontData( bool bNewFontLists );
     SAL_DLLPRIVATE static void  ImplUpdateAllFontData( bool bNewFontLists );
@@ -505,8 +505,8 @@
 
     SAL_DLLPRIVATE sal_Bool         ImplIsRecordLayout() const;
 
-                   void         ImplAddDevFontSubstitute( const XubString& rFontName,
-                                                  const XubString& rReplaceFontName,
+                   void         ImplAddDevFontSubstitute( const OUString& rFontName,
+                                                  const OUString& rReplaceFontName,
                                                   sal_uInt16 nFlags = 0 );
 
     SAL_DLLPRIVATE static FontEmphasisMark ImplGetEmphasisMarkStyle( const Font& rFont );
@@ -583,8 +583,8 @@
                                        xub_StrLen nLen = STRING_LEN );
     long                GetTextArray( const OUString& rStr, sal_Int32* pDXAry = NULL,
                                       sal_Int32 nIndex = 0, sal_Int32 nLen = -1 ) const;
-    bool                GetCaretPositions( const XubString&, sal_Int32* pCaretXArray,
-                                      xub_StrLen nIndex, xub_StrLen nLen,
+    bool                GetCaretPositions( const OUString&, sal_Int32* pCaretXArray,
+                                      sal_Int32 nIndex, sal_Int32 nLen,
                                       sal_Int32* pDXAry = NULL, long nWidth = 0,
                                       sal_Bool bCellBreaking = sal_True ) const;
     void                DrawStretchText( const Point& rStartPt, sal_uLong nWidth,
@@ -1092,8 +1092,8 @@
 
     static void         BeginFontSubstitution();
     static void         EndFontSubstitution();
-    static void         AddFontSubstitute( const XubString& rFontName,
-                                           const XubString& rReplaceFontName,
+    static void         AddFontSubstitute( const OUString& rFontName,
+                                           const OUString& rReplaceFontName,
                                            sal_uInt16 nFlags = 0 );
     static void         RemoveFontSubstitute( sal_uInt16 n );
     static sal_uInt16       GetFontSubstituteCount();
diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx
index 49e5b33..55194f3 100644
--- a/vcl/source/gdi/outdev3.cxx
+++ b/vcl/source/gdi/outdev3.cxx
@@ -313,8 +313,8 @@
     }
 }
 
-void OutputDevice::AddFontSubstitute( const XubString& rFontName,
-                                      const XubString& rReplaceFontName,
+void OutputDevice::AddFontSubstitute( const OUString& rFontName,
+                                      const OUString& rReplaceFontName,
                                       sal_uInt16 nFlags )
 {
     ImplDirectFontSubstitution*& rpSubst = ImplGetSVData()->maGDIData.mpDirectFontSubst;
@@ -342,8 +342,8 @@
     GetEnglishSearchFontName( maSearchReplaceName );
 }
 
-void OutputDevice::ImplAddDevFontSubstitute( const XubString& rFontName,
-                                             const XubString& rReplaceFontName,
+void OutputDevice::ImplAddDevFontSubstitute( const OUString& rFontName,
+                                             const OUString& rReplaceFontName,
                                              sal_uInt16 nFlags )
 {
     ImplInitOutDevData();
@@ -4687,7 +4687,7 @@
 }
 
 long OutputDevice::ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo,
-                                     long nWidth, const XubString& rStr,
+                                     long nWidth, const OUString& rStr,
                                      sal_uInt16 nStyle, const ::vcl::ITextLayout& _rLayout )
 {
     DBG_ASSERTWARNING( nWidth >= 0, "ImplGetTextLines: nWidth <= 0!" );
@@ -4697,7 +4697,7 @@
 
     long nMaxLineWidth  = 0;
     rLineInfo.Clear();
-    if ( rStr.Len() && (nWidth > 0) )
+    if ( !rStr.isEmpty() && (nWidth > 0) )
     {
         ::rtl::OUString aText( rStr );
         uno::Reference < i18n::XBreakIterator > xBI;
@@ -4710,13 +4710,13 @@
         i18n::LineBreakHyphenationOptions aHyphOptions( xHyph, uno::Sequence <beans::PropertyValue>(), 1 );
         i18n::LineBreakUserOptions aUserOptions;
 
-        xub_StrLen nPos = 0;
-        xub_StrLen nLen = rStr.Len();
+        sal_Int32 nPos = 0;
+        sal_Int32 nLen = rStr.getLength();
         while ( nPos < nLen )
         {
-            xub_StrLen nBreakPos = nPos;
+            sal_Int32 nBreakPos = nPos;
 
-            while ( ( nBreakPos < nLen ) && ( rStr.GetChar( nBreakPos ) != _CR ) && ( rStr.GetChar( nBreakPos ) != _LF ) )
+            while ( ( nBreakPos < nLen ) && ( rStr[ nBreakPos ] != _CR ) && ( rStr[ nBreakPos ] != _LF ) )
                 nBreakPos++;
 
             long nLineWidth = _rLayout.GetTextWidth( rStr, nPos, nBreakPos-nPos );
@@ -4749,11 +4749,11 @@
                             i18n::Boundary aBoundary = xBI->getWordBoundary( aText, nBreakPos, rDefLocale, ::com::sun::star::i18n::WordType::DICTIONARY_WORD, sal_True );
                 //          sal_uInt16 nWordStart = nBreakPos;
                 //          sal_uInt16 nBreakPos_OLD = nBreakPos;
-                            sal_uInt16 nWordStart = nPos;
-                            sal_uInt16 nWordEnd = (sal_uInt16) aBoundary.endPos;
+                            sal_Int32 nWordStart = nPos;
+                            sal_Int32 nWordEnd = (sal_Int32) aBoundary.endPos;
                             DBG_ASSERT( nWordEnd > nWordStart, "ImpBreakLine: Start >= End?" );
 
-                            sal_uInt16 nWordLen = nWordEnd - nWordStart;
+                            sal_Int32 nWordLen = nWordEnd - nWordStart;
                             if ( ( nWordEnd >= nSoftBreak ) && ( nWordLen > 3 ) )
                             {
                                 // #104415# May happen, because getLineBreak may differ from getWordBoudary with DICTIONARY_WORD
@@ -4834,12 +4834,12 @@
                 else
                 {
                     // fallback to something really simple
-                    sal_uInt16 nSpacePos = STRING_LEN;
+                    sal_Int32 nSpacePos = -1;
                     long nW = 0;
                     do
                     {
-                        nSpacePos = rStr.SearchBackward( sal_Unicode(' '), nSpacePos );
-                        if( nSpacePos != STRING_NOTFOUND )
+                        nSpacePos = rStr.lastIndexOf( sal_Unicode(' '), nSpacePos );
+                        if( nSpacePos != -1 )
                         {
                             if( nSpacePos > nPos )
                                 nSpacePos--;
@@ -4847,11 +4847,11 @@
                         }
                     } while( nW > nWidth );
 
-                    if( nSpacePos != STRING_NOTFOUND )
+                    if( nSpacePos != -1 )
                     {
                         nBreakPos = nSpacePos;
                         nLineWidth = _rLayout.GetTextWidth( rStr, nPos, nBreakPos-nPos );
-                        if( nBreakPos < rStr.Len()-1 )
+                        if( nBreakPos < rStr.getLength()-1 )
                             nBreakPos++;
                     }
                 }
@@ -4866,11 +4866,11 @@
                 nBreakPos++;
             nPos = nBreakPos;
 
-            if ( ( rStr.GetChar( nPos ) == _CR ) || ( rStr.GetChar( nPos ) == _LF ) )
+            if ( ( rStr[ nPos ] == _CR ) || ( rStr[ nPos ] == _LF ) )
             {
                 nPos++;
                 // CR/LF?
-                if ( ( nPos < nLen ) && ( rStr.GetChar( nPos ) == _LF ) && ( rStr.GetChar( nPos-1 ) == _CR ) )
+                if ( ( nPos < nLen ) && ( rStr[ nPos ] == _LF ) && ( rStr[ nPos-1 ] == _CR ) )
                     nPos++;
             }
         }
@@ -5578,17 +5578,17 @@
     return nWidth;
 }
 
-bool OutputDevice::GetCaretPositions( const XubString& rStr, sal_Int32* pCaretXArray,
-    xub_StrLen nIndex, xub_StrLen nLen,
+bool OutputDevice::GetCaretPositions( const OUString& rStr, sal_Int32* pCaretXArray,
+    sal_Int32 nIndex, sal_Int32 nLen,
     sal_Int32* pDXAry, long nLayoutWidth,
     sal_Bool bCellBreaking ) const
 {
     DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
 
-    if( nIndex >= rStr.Len() )
+    if( nIndex >= rStr.getLength() )
         return false;
-    if( (sal_uLong)nIndex+nLen >= rStr.Len() )
-        nLen = rStr.Len() - nIndex;
+    if( nIndex+nLen >= rStr.getLength() )
+        nLen = rStr.getLength() - nIndex;
 
     // layout complex text
     SalLayout* pSalLayout = ImplLayout( rStr, nIndex, nLen,
@@ -6156,7 +6156,7 @@
         if( nExtraPixelWidth > 0 )
             nTextPixelWidth -= nExtraPixelWidth;
 
-        rHyphenatorPos = sal::static_int_cast<xub_StrLen>(pSalLayout->GetTextBreak( nTextPixelWidth, nExtraPixelWidth, nSubPixelFactor ));
+        rHyphenatorPos = sal::static_int_cast<sal_Int32>(pSalLayout->GetTextBreak( nTextPixelWidth, nExtraPixelWidth, nSubPixelFactor ));
 
         if( rHyphenatorPos > nRetVal )
             rHyphenatorPos = nRetVal;
diff --git a/vcl/source/gdi/textlayout.cxx b/vcl/source/gdi/textlayout.cxx
index d03ea25..5e70329 100644
--- a/vcl/source/gdi/textlayout.cxx
+++ b/vcl/source/gdi/textlayout.cxx
@@ -56,21 +56,21 @@
     }
 
     //--------------------------------------------------------------------
-    void DefaultTextLayout::DrawText( const Point& _rStartPoint, const XubString& _rText, xub_StrLen _nStartIndex,
-        xub_StrLen _nLength, MetricVector* _pVector, OUString* _pDisplayText )
+    void DefaultTextLayout::DrawText( const Point& _rStartPoint, const OUString& _rText, sal_Int32 _nStartIndex,
+        sal_Int32 _nLength, MetricVector* _pVector, OUString* _pDisplayText )
     {
         m_rTargetDevice.DrawText( _rStartPoint, _rText, _nStartIndex, _nLength, _pVector, _pDisplayText );
     }
 
     //--------------------------------------------------------------------
-    bool DefaultTextLayout::GetCaretPositions( const XubString& _rText, sal_Int32* _pCaretXArray,
-        xub_StrLen _nStartIndex, xub_StrLen _nLength ) const
+    bool DefaultTextLayout::GetCaretPositions( const OUString& _rText, sal_Int32* _pCaretXArray,
+        sal_Int32 _nStartIndex, sal_Int32 _nLength ) const
     {
         return m_rTargetDevice.GetCaretPositions( _rText, _pCaretXArray, _nStartIndex, _nLength );
     }
 
     //--------------------------------------------------------------------
-    xub_StrLen DefaultTextLayout::GetTextBreak( const XubString& _rText, long _nMaxTextWidth, xub_StrLen _nStartIndex, xub_StrLen _nLength ) const
+    xub_StrLen DefaultTextLayout::GetTextBreak( const OUString& _rText, long _nMaxTextWidth, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const
     {
         return m_rTargetDevice.GetTextBreak( _rText, _nMaxTextWidth, _nStartIndex, _nLength );
     }
@@ -92,15 +92,15 @@
 
         // ITextLayout
         virtual long        GetTextWidth( const XubString& rStr, xub_StrLen nIndex, xub_StrLen nLen ) const;
-        virtual void        DrawText( const Point& _rStartPoint, const XubString& _rText, xub_StrLen _nStartIndex, xub_StrLen _nLength, MetricVector* _pVector, OUString* _pDisplayText );
-        virtual bool        GetCaretPositions( const XubString& _rText, sal_Int32* _pCaretXArray, xub_StrLen _nStartIndex, xub_StrLen _nLength ) const;
-        virtual xub_StrLen  GetTextBreak( const XubString& _rText, long _nMaxTextWidth, xub_StrLen _nStartIndex, xub_StrLen _nLength ) 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 bool        DecomposeTextRectAction() const;
 
     public:
         // equivalents to the respective OutputDevice methods, which take the reference device into account
-        long        GetTextArray( const XubString& _rText, sal_Int32* _pDXAry, xub_StrLen _nStartIndex, xub_StrLen _nLength ) const;
-        Rectangle   DrawText( const Rectangle& _rRect, const XubString& _rText, sal_uInt16 _nStyle, MetricVector* _pVector, OUString* _pDisplayText );
+        long        GetTextArray( const OUString& _rText, sal_Int32* _pDXAry, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const;
+        Rectangle   DrawText( const Rectangle& _rRect, const OUString& _rText, sal_uInt16 _nStyle, MetricVector* _pVector, OUString* _pDisplayText );
 
     protected:
         void onBeginDrawText()
@@ -181,9 +181,9 @@
     namespace
     {
         //................................................................
-        bool lcl_normalizeLength( const XubString& _rText, const xub_StrLen _nStartIndex, xub_StrLen& _io_nLength )
+        bool lcl_normalizeLength( const OUString& _rText, const sal_Int32 _nStartIndex, sal_Int32& _io_nLength )
         {
-            xub_StrLen nTextLength = _rText.Len();
+            sal_Int32 nTextLength = _rText.getLength();
             if ( _nStartIndex > nTextLength )
                 return false;
             if ( _nStartIndex + _io_nLength > nTextLength )
@@ -193,8 +193,7 @@
     }
 
     //--------------------------------------------------------------------
-    long ReferenceDeviceTextLayout::GetTextArray( const XubString& _rText, sal_Int32* _pDXAry, xub_StrLen _nStartIndex,
-        xub_StrLen _nLength ) const
+    long ReferenceDeviceTextLayout::GetTextArray( const OUString& _rText, sal_Int32* _pDXAry, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const
     {
         if ( !lcl_normalizeLength( _rText, _nStartIndex, _nLength ) )
             return 0;
@@ -230,7 +229,7 @@
     }
 
     //--------------------------------------------------------------------
-    void ReferenceDeviceTextLayout::DrawText( const Point& _rStartPoint, const XubString& _rText, xub_StrLen _nStartIndex, xub_StrLen _nLength, MetricVector* _pVector, OUString* _pDisplayText )
+    void ReferenceDeviceTextLayout::DrawText( const Point& _rStartPoint, const OUString& _rText, sal_Int32 _nStartIndex, sal_Int32 _nLength, MetricVector* _pVector, OUString* _pDisplayText )
     {
         if ( !lcl_normalizeLength( _rText, _nStartIndex, _nLength ) )
             return;
@@ -242,7 +241,7 @@
             ::std::copy(
                 aGlyphBounds.begin(), aGlyphBounds.end(),
                 ::std::insert_iterator< MetricVector > ( *_pVector, _pVector->end() ) );
-            *_pDisplayText += _rText.Copy( _nStartIndex, _nLength );
+            *_pDisplayText += _rText.copy( _nStartIndex, _nLength );
             return;
         }
 
@@ -255,8 +254,8 @@
     }
 
     //--------------------------------------------------------------------
-    bool ReferenceDeviceTextLayout::GetCaretPositions( const XubString& _rText, sal_Int32* _pCaretXArray,
-        xub_StrLen _nStartIndex, xub_StrLen _nLength ) const
+    bool ReferenceDeviceTextLayout::GetCaretPositions( const OUString& _rText, sal_Int32* _pCaretXArray,
+        sal_Int32 _nStartIndex, sal_Int32 _nLength ) const
     {
         if ( !lcl_normalizeLength( _rText, _nStartIndex, _nLength ) )
             return false;
@@ -269,7 +268,7 @@
     }
 
     //--------------------------------------------------------------------
-    xub_StrLen ReferenceDeviceTextLayout::GetTextBreak( const XubString& _rText, long _nMaxTextWidth, xub_StrLen _nStartIndex, xub_StrLen _nLength ) const
+    xub_StrLen ReferenceDeviceTextLayout::GetTextBreak( const OUString& _rText, long _nMaxTextWidth, sal_Int32 _nStartIndex, sal_Int32 _nLength ) const
     {
         if ( !lcl_normalizeLength( _rText, _nStartIndex, _nLength ) )
             return 0;
@@ -284,9 +283,9 @@
     }
 
     //--------------------------------------------------------------------
-    Rectangle ReferenceDeviceTextLayout::DrawText( const Rectangle& _rRect, const XubString& _rText, sal_uInt16 _nStyle, MetricVector* _pVector, OUString* _pDisplayText )
+    Rectangle ReferenceDeviceTextLayout::DrawText( const Rectangle& _rRect, const OUString& _rText, sal_uInt16 _nStyle, MetricVector* _pVector, OUString* _pDisplayText )
     {
-        if ( !_rText.Len() )
+        if ( _rText.isEmpty() )
             return Rectangle();
 
         // determine text layout mode from the RTL-ness of the control whose text we render

-- 
To view, visit https://gerrit.libreoffice.org/3099
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I781364da7a36afef65aac7a683c1b80fad61671e
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: master
Gerrit-Owner: Christina Roßmanith <ChrRossmanith at web.de>



More information about the LibreOffice mailing list