[Libreoffice-commits] core.git: unotools/inc unotools/source vcl/source

Chr. Rossmanith ChrRossmanith at gmx.de
Tue Mar 26 05:43:43 PDT 2013


 unotools/inc/unotools/fontdefs.hxx |    4 +++-
 unotools/source/misc/fontcvt.cxx   |   15 +++++++++------
 vcl/source/gdi/outdev3.cxx         |    7 +++++--
 3 files changed, 17 insertions(+), 9 deletions(-)

New commits:
commit 4e907bc366d8691a33ec0be389f211e22c6e87d3
Author: Chr. Rossmanith <ChrRossmanith at gmx.de>
Date:   Fri Mar 22 18:06:02 2013 +0100

    Replace String with OUString in RecodeString
    
    Change-Id: I987f738d1cd7d640a253f3cd31864290b6d763bf
    Reviewed-on: https://gerrit.libreoffice.org/2919
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Reviewed-by: Fridrich Strba <fridrich at documentfoundation.org>
    Tested-by: Fridrich Strba <fridrich at documentfoundation.org>

diff --git a/unotools/inc/unotools/fontdefs.hxx b/unotools/inc/unotools/fontdefs.hxx
index f923464..60c37d4 100644
--- a/unotools/inc/unotools/fontdefs.hxx
+++ b/unotools/inc/unotools/fontdefs.hxx
@@ -22,6 +22,8 @@
 #include <unotools/unotoolsdllapi.h>
 #include <sal/types.h>
 #include <tools/string.hxx>
+#include <rtl/ustring.hxx>
+#include <rtl/ustrbuf.hxx>
 
 namespace utl {
   class FontSubstConfiguration;
@@ -54,7 +56,7 @@ public:
     const char*         mpSubsFontName;
     sal_Unicode         (*mpCvtFunc)( sal_Unicode );
     sal_Unicode         RecodeChar( sal_Unicode c ) const;
-    void                RecodeString( String& rStra, xub_StrLen nIndex, xub_StrLen nLen ) const;
+    void                RecodeString( OUString& rStra, sal_Int32 nIndex, sal_Int32 nLen ) const;
     static const ConvertChar* GetRecodeData( const String& rOrgFontName, const String& rMapFontName );
 };
 
diff --git a/unotools/source/misc/fontcvt.cxx b/unotools/source/misc/fontcvt.cxx
index fe870ed..99e07ee 100644
--- a/unotools/source/misc/fontcvt.cxx
+++ b/unotools/source/misc/fontcvt.cxx
@@ -1372,15 +1372,17 @@ sal_Unicode ConvertChar::RecodeChar( sal_Unicode cChar ) const
 
 // recode the string assuming the character codes are symbol codes
 // from an traditional symbol font (i.e. U+F020..U+F0FF)
-void ConvertChar::RecodeString( String& rStr, xub_StrLen nIndex, xub_StrLen nLen ) const
+void ConvertChar::RecodeString( OUString& rStr, sal_Int32 nIndex, sal_Int32 nLen ) const
 {
-    sal_uLong nLastIndex = (sal_uLong)nIndex + nLen;
-    if( nLastIndex > rStr.Len() )
-        nLastIndex = rStr.Len();
+    sal_Int32 nLastIndex = nIndex + nLen;
+    OUStringBuffer    aTmpStr(rStr);
+
+    if( nLastIndex > aTmpStr.getLength() )
+        nLastIndex = aTmpStr.getLength();
 
     for(; nIndex < nLastIndex; ++nIndex )
     {
-        sal_Unicode cOrig = rStr.GetChar( nIndex );
+        sal_Unicode cOrig = rStr[ nIndex ];
         // only recode symbols and their U+00xx aliases
         if( ((cOrig < 0x0020) || (cOrig > 0x00FF))
         &&  ((cOrig < 0xF020) || (cOrig > 0xF0FF)) )
@@ -1389,8 +1391,9 @@ void ConvertChar::RecodeString( String& rStr, xub_StrLen nIndex, xub_StrLen nLen
         // recode a symbol
         sal_Unicode cNew = RecodeChar( cOrig );
         if( cOrig != cNew )
-            rStr.SetChar( nIndex, cNew );
+            aTmpStr[ nIndex ] = cNew;
     }
+    rStr = aTmpStr.makeStringAndClear();
 }
 
 //=======================================================================
diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx
index df1016c..565fcae 100644
--- a/vcl/source/gdi/outdev3.cxx
+++ b/vcl/source/gdi/outdev3.cxx
@@ -5836,8 +5836,11 @@ SalLayout* OutputDevice::ImplLayout( const String& rOrigStr,
 
     // convert from logical units to physical units
     // recode string if needed
-    if( mpFontEntry->mpConversion )
-        mpFontEntry->mpConversion->RecodeString( aStr, 0, aStr.Len() );
+    if( mpFontEntry->mpConversion ) {
+        OUString aTmpStr(aStr); // only needed until aStr is OUString as well
+        mpFontEntry->mpConversion->RecodeString( aTmpStr, 0, aTmpStr.getLength() );
+        aStr = String(aTmpStr);
+    }
 
     long nPixelWidth = nLogicalWidth;
     if( nLogicalWidth && mbMap )


More information about the Libreoffice-commits mailing list