[PATCH] Use OUString and sal_Int32 in GetNonMnemonicString() and Get...

Christina Roßmanith (via_Code_Review) gerrit at gerrit.libreoffice.org
Mon Apr 1 13:15:56 PDT 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/3160

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/60/3160/1

Use OUString and sal_Int32 in GetNonMnemonicString() and GetCtrlTextWidth()

Change-Id: I599d03686a020841dc3c18ca75ffcc96889a95a6
---
M vcl/inc/vcl/outdev.hxx
M vcl/source/gdi/outdev3.cxx
M vcl/source/gdi/pdfwriter_impl.cxx
M vcl/source/window/menu.cxx
4 files changed, 30 insertions(+), 32 deletions(-)



diff --git a/vcl/inc/vcl/outdev.hxx b/vcl/inc/vcl/outdev.hxx
index df433ff..f63c7ec 100644
--- a/vcl/inc/vcl/outdev.hxx
+++ b/vcl/inc/vcl/outdev.hxx
@@ -622,12 +622,12 @@
     void                DrawCtrlText( const Point& rPos, const XubString& rStr,
                                       xub_StrLen nIndex = 0, xub_StrLen nLen = STRING_LEN,
                                       sal_uInt16 nStyle = TEXT_DRAW_MNEMONIC, MetricVector* pVector = NULL, OUString* pDisplayText = NULL );
-    long                GetCtrlTextWidth( const XubString& rStr, xub_StrLen nIndex = 0,
-                                          xub_StrLen nLen = STRING_LEN,
+    long                GetCtrlTextWidth( const OUString& rStr, sal_Int32 nIndex = 0,
+                                          sal_Int32 nLen = -1,
                                           sal_uInt16 nStyle = TEXT_DRAW_MNEMONIC ) const;
-    static XubString    GetNonMnemonicString( const XubString& rStr, xub_StrLen& rMnemonicPos );
-    static XubString    GetNonMnemonicString( const XubString& rStr )
-                            { xub_StrLen nDummy; return GetNonMnemonicString( rStr, nDummy ); }
+    static OUString    GetNonMnemonicString( const OUString& rStr, sal_Int32& rMnemonicPos );
+    static OUString    GetNonMnemonicString( const OUString& rStr )
+                            { sal_Int32 nDummy; return GetNonMnemonicString( rStr, nDummy ); }
 
     sal_Bool                GetTextBoundRect( Rectangle& rRect,
                             const String& rStr, xub_StrLen nBase = 0, xub_StrLen nIndex = 0, xub_StrLen nLen = STRING_LEN,
diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx
index ec06af0..f966cc0 100644
--- a/vcl/source/gdi/outdev3.cxx
+++ b/vcl/source/gdi/outdev3.cxx
@@ -6228,7 +6228,7 @@
 
     long        nTextHeight     = rTargetDevice.GetTextHeight();
     TextAlign   eAlign          = rTargetDevice.GetTextAlign();
-    xub_StrLen  nMnemonicPos    = STRING_NOTFOUND;
+    sal_Int32   nMnemonicPos    = -1;
 
     String aStr = rOrigStr;
     if ( nStyle & TEXT_DRAW_MNEMONIC )
@@ -6239,7 +6239,6 @@
     // Mehrzeiligen Text behandeln wir anders
     if ( nStyle & TEXT_DRAW_MULTILINE )
     {
-
         XubString               aLastLine;
         ImplMultiTextLineInfo   aMultiLineInfo;
         ImplTextLineInfo*       pLineInfo;
@@ -6392,7 +6391,7 @@
         long        nMnemonicX = 0;
         long        nMnemonicY = 0;
         long        nMnemonicWidth = 0;
-        if ( nMnemonicPos != STRING_NOTFOUND )
+        if ( nMnemonicPos != -1 )
         {
             sal_Int32* pCaretXArray = (sal_Int32*) alloca( 2 * sizeof(sal_Int32) * aStr.Len() );
             /*sal_Bool bRet =*/ _rLayout.GetCaretPositions( aStr, pCaretXArray, 0, aStr.Len() );
@@ -6412,7 +6411,7 @@
             _rLayout.DrawText( aPos, aStr, 0, STRING_LEN, pVector, pDisplayText );
             if ( bDrawMnemonics )
             {
-                if ( nMnemonicPos != STRING_NOTFOUND )
+                if ( nMnemonicPos != -1 )
                     rTargetDevice.ImplDrawMnemonicLine( nMnemonicX, nMnemonicY, nMnemonicWidth );
             }
             rTargetDevice.Pop();
@@ -6422,7 +6421,7 @@
             _rLayout.DrawText( aPos, aStr, 0, STRING_LEN, pVector, pDisplayText );
             if ( bDrawMnemonics )
             {
-                if ( nMnemonicPos != STRING_NOTFOUND )
+                if ( nMnemonicPos != -1 )
                     rTargetDevice.ImplDrawMnemonicLine( nMnemonicX, nMnemonicY, nMnemonicWidth );
             }
         }
@@ -6817,7 +6816,7 @@
         nLen = rStr.Len() - nIndex;
 
     XubString   aStr = rStr;
-    xub_StrLen  nMnemonicPos = STRING_NOTFOUND;
+    sal_Int32   nMnemonicPos = -1;
 
     long        nMnemonicX = 0;
     long        nMnemonicY = 0;
@@ -6825,7 +6824,7 @@
     if ( (nStyle & TEXT_DRAW_MNEMONIC) && nLen > 1 )
     {
         aStr = GetNonMnemonicString( aStr, nMnemonicPos );
-        if ( nMnemonicPos != STRING_NOTFOUND )
+        if ( nMnemonicPos != -1 )
         {
             if( nMnemonicPos < nIndex )
                 --nIndex;
@@ -6923,21 +6922,21 @@
         mpAlphaVDev->DrawCtrlText( rPos, rStr, nIndex, nLen, nStyle, pVector, pDisplayText );
 }
 
-long OutputDevice::GetCtrlTextWidth( const String& rStr,
-                                     xub_StrLen nIndex, xub_StrLen nLen,
+long OutputDevice::GetCtrlTextWidth( const OUString& rStr,
+                                     sal_Int32 nIndex, sal_Int32 nLen,
                                      sal_uInt16 nStyle ) const
 {
     DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice );
 
     if ( nStyle & TEXT_DRAW_MNEMONIC )
     {
-        xub_StrLen  nMnemonicPos;
-        XubString   aStr = GetNonMnemonicString( rStr, nMnemonicPos );
-        if ( nMnemonicPos != STRING_NOTFOUND )
+        sal_Int32  nMnemonicPos;
+        OUString   aStr = GetNonMnemonicString( rStr, nMnemonicPos );
+        if ( nMnemonicPos != -1 )
         {
             if ( nMnemonicPos < nIndex )
                 nIndex--;
-            else if ( (nLen < STRING_LEN) &&
+            else if ( (nLen < -1) &&
                       (nMnemonicPos >= nIndex) && (nMnemonicPos < (sal_uLong)(nIndex+nLen)) )
                 nLen--;
         }
@@ -6947,27 +6946,27 @@
         return GetTextWidth( rStr, nIndex, nLen );
 }
 
-String OutputDevice::GetNonMnemonicString( const String& rStr, xub_StrLen& rMnemonicPos )
+OUString OutputDevice::GetNonMnemonicString( const OUString& rStr, sal_Int32& rMnemonicPos )
 {
-    String   aStr    = rStr;
-    xub_StrLen  nLen    = aStr.Len();
-    xub_StrLen  i       = 0;
+    OUString    aStr    = rStr;
+    sal_Int32   nLen    = aStr.getLength();
+    sal_Int32   i       = 0;
 
-    rMnemonicPos = STRING_NOTFOUND;
+    rMnemonicPos = -1;
     while ( i < nLen )
     {
-        if ( aStr.GetChar( i ) == '~' )
+        if ( aStr[ i ] == '~' )
         {
-            if ( aStr.GetChar( i+1 ) != '~' )
+            if ( aStr[ i+1 ] != '~' )
             {
-                if ( rMnemonicPos == STRING_NOTFOUND )
+                if ( rMnemonicPos == -1 )
                     rMnemonicPos = i;
-                aStr.Erase( i, 1 );
+                aStr = aStr.replaceAt( i, 1, "" );
                 nLen--;
             }
             else
             {
-                aStr.Erase( i, 1 );
+                aStr = aStr.replaceAt( i, 1, "" );
                 nLen--;
                 i++;
             }
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx
index 1307193..5e6126e 100644
--- a/vcl/source/gdi/pdfwriter_impl.cxx
+++ b/vcl/source/gdi/pdfwriter_impl.cxx
@@ -8107,11 +8107,10 @@
     Point       aPos            = rRect.TopLeft();
 
     long        nTextHeight     = m_pReferenceDevice->GetTextHeight();
-    xub_StrLen  nMnemonicPos    = STRING_NOTFOUND;
 
     String aStr = rOrigStr;
     if ( nStyle & TEXT_DRAW_MNEMONIC )
-        aStr = m_pReferenceDevice->GetNonMnemonicString( aStr, nMnemonicPos );
+        aStr = m_pReferenceDevice->GetNonMnemonicString( aStr );
 
     // multiline text
     if ( nStyle & TEXT_DRAW_MULTILINE )
diff --git a/vcl/source/window/menu.cxx b/vcl/source/window/menu.cxx
index c8e02ad..9f2ab0c 100644
--- a/vcl/source/window/menu.cxx
+++ b/vcl/source/window/menu.cxx
@@ -2595,11 +2595,11 @@
 
 static String getShortenedString( const String& i_rLong, Window* i_pWin, long i_nMaxWidth )
 {
-    xub_StrLen nPos = STRING_NOTFOUND;
+    sal_Int32 nPos = -1;
     String aNonMnem( OutputDevice::GetNonMnemonicString( i_rLong, nPos ) );
     aNonMnem = i_pWin->GetEllipsisString( aNonMnem, i_nMaxWidth, TEXT_DRAW_CENTERELLIPSIS );
     // re-insert mnemonic
-    if( nPos != STRING_NOTFOUND )
+    if( nPos != -1 )
     {
         if( nPos < aNonMnem.Len() && i_rLong.GetChar(nPos+1) == aNonMnem.GetChar(nPos) )
         {

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I599d03686a020841dc3c18ca75ffcc96889a95a6
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