diff options
author | Chr. Rossmanith <ChrRossmanith@gmx.de> | 2013-03-24 16:30:20 +0100 |
---|---|---|
committer | Fridrich Strba <fridrich@documentfoundation.org> | 2013-03-26 12:45:36 +0000 |
commit | ffb837eed2c6f843f12f9368ed2183660a0036a1 (patch) | |
tree | fa809cbec969f0f94d593ce7ee46661b9cdd4f52 /vcl | |
parent | a89fda4b7f09856ba136f0a4df7929f7ee3f796b (diff) |
Use OUString and sal_Int32 in GetTextArray() and ImplLayout()
Change-Id: I2c1e5b7d53c0d78f2ccf9ac317a7ff40298cd68d
Reviewed-on: https://gerrit.libreoffice.org/2967
Reviewed-by: Eike Rathke <erack@redhat.com>
Reviewed-by: Fridrich Strba <fridrich@documentfoundation.org>
Tested-by: Fridrich Strba <fridrich@documentfoundation.org>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/inc/vcl/outdev.hxx | 12 | ||||
-rw-r--r-- | vcl/source/gdi/outdev3.cxx | 55 |
2 files changed, 26 insertions, 41 deletions
diff --git a/vcl/inc/vcl/outdev.hxx b/vcl/inc/vcl/outdev.hxx index 5f0075787a30..44a5979ff21f 100644 --- a/vcl/inc/vcl/outdev.hxx +++ b/vcl/inc/vcl/outdev.hxx @@ -378,10 +378,9 @@ public: SAL_DLLPRIVATE bool ImplSelectClipRegion( const Region&, SalGraphics* pGraphics = NULL ); SAL_DLLPRIVATE void ImplSetClipRegion( const Region* pRegion ); - SAL_DLLPRIVATE SalLayout* ImplLayout( const String&, xub_StrLen nIndex, - xub_StrLen nLen, const Point& rLogicPos = Point(0,0), - long nLogicWidth=0, const sal_Int32* pLogicDXArray=NULL, - bool bFilter = false ) const; + SAL_DLLPRIVATE SalLayout* ImplLayout( const OUString&, sal_Int32 nIndex, sal_Int32 nLen, + const Point& rLogicPos = Point(0,0), long nLogicWidth=0, + const sal_Int32* pLogicDXArray=NULL, bool bFilter = false ) const; SAL_DLLPRIVATE ImplLayoutArgs ImplPrepareLayoutArgs( OUString&, const sal_Int32 nIndex, const sal_Int32 nLen, long nPixelWidth, const sal_Int32* pPixelDXArray ) const; SAL_DLLPRIVATE SalLayout* ImplGlyphFallbackLayout( SalLayout*, ImplLayoutArgs& ) const; @@ -583,9 +582,8 @@ public: const sal_Int32* pDXAry = NULL, xub_StrLen nIndex = 0, xub_StrLen nLen = STRING_LEN ); - long GetTextArray( const XubString& rStr, sal_Int32* pDXAry = NULL, - xub_StrLen nIndex = 0, - xub_StrLen nLen = STRING_LEN ) const; + 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, sal_Int32* pDXAry = NULL, long nWidth = 0, diff --git a/vcl/source/gdi/outdev3.cxx b/vcl/source/gdi/outdev3.cxx index 1fedcbd3f621..56d1d4a8ef9a 100644 --- a/vcl/source/gdi/outdev3.cxx +++ b/vcl/source/gdi/outdev3.cxx @@ -5475,7 +5475,11 @@ long OutputDevice::GetTextWidth( const String& rStr, { DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice ); - long nWidth = GetTextArray( rStr, NULL, nIndex, nLen ); + sal_Int32 nLen2 = (nLen == STRING_LEN) ? -1 : nLen; // only needed until nLen is sal_Int32 + sal_Int32 nIndex2 = nIndex; // ditto + OUString aTmpStr(rStr); + long nWidth = GetTextArray( aTmpStr, NULL, nIndex2, nLen2 ); + return nWidth; } @@ -5532,15 +5536,17 @@ void OutputDevice::DrawTextArray( const Point& rStartPt, const String& rStr, mpAlphaVDev->DrawTextArray( rStartPt, rStr, pDXAry, nIndex, nLen ); } -long OutputDevice::GetTextArray( const String& rStr, sal_Int32* pDXAry, - xub_StrLen nIndex, xub_StrLen nLen ) const +long OutputDevice::GetTextArray( const OUString& rStr, sal_Int32* pDXAry, + sal_Int32 nIndex, sal_Int32 nLen ) const { + // MEM: default nLen = STRING_LENGTH DBG_CHKTHIS( OutputDevice, ImplDbgCheckOutputDevice ); - if( nIndex >= rStr.Len() ) + if( nIndex >= rStr.getLength() ) return 0; - if( (sal_uLong)nIndex+nLen >= rStr.Len() ) - nLen = rStr.Len() - nIndex; + + if( nLen < 0 || nIndex+nLen >= rStr.getLength() ) + nLen = rStr.getLength() - nIndex; // do layout SalLayout* pSalLayout = ImplLayout( rStr, nIndex, nLen ); @@ -5776,12 +5782,8 @@ ImplLayoutArgs OutputDevice::ImplPrepareLayoutArgs( OUString& rStr, return aLayoutArgs; } -SalLayout* OutputDevice::ImplLayout( const String& rOrigStr, - xub_StrLen nMinIndex, - xub_StrLen nLen, - const Point& rLogicalPos, - long nLogicalWidth, - const sal_Int32* pDXArray, +SalLayout* OutputDevice::ImplLayout( const OUString& rOrigStr, sal_Int32 nMinIndex, sal_Int32 nLen, + const Point& rLogicalPos, long nLogicalWidth, const sal_Int32* pDXArray, bool bFilter ) const { // we need a graphics @@ -5797,28 +5799,21 @@ SalLayout* OutputDevice::ImplLayout( const String& rOrigStr, ImplInitFont(); // check string index and length - if( (unsigned)nMinIndex + nLen > rOrigStr.Len() ) + if( nMinIndex + nLen > rOrigStr.getLength() ) { - const int nNewLen = (int)rOrigStr.Len() - nMinIndex; + const sal_Int32 nNewLen = rOrigStr.getLength() - nMinIndex; if( nNewLen <= 0 ) return NULL; - nLen = static_cast<xub_StrLen>(nNewLen); + nLen = nNewLen; } - String aStr = rOrigStr; + OUString aStr = rOrigStr; // filter out special markers if( bFilter ) { sal_Int32 nCutStart, nCutStop, nOrgLen = nLen; - OUString aTmpStr(aStr); - OUString aTmpOrigStr(rOrigStr); // only needed until rOrigStr is OUString - sal_Int32 nMinIndex2=nMinIndex; // ditto - sal_Int32 nLen2=nLen; // ditto - bool bFiltered = mpGraphics->filterText( aTmpOrigStr, aTmpStr, nMinIndex2, nLen2, nCutStart, nCutStop ); - nLen = nLen2; // ditto - nMinIndex = nMinIndex2; // ditto - aStr = aTmpStr; + bool bFiltered = mpGraphics->filterText( rOrigStr, aStr, nMinIndex, nLen, nCutStart, nCutStop ); if( !nLen ) return NULL; @@ -5843,9 +5838,7 @@ SalLayout* OutputDevice::ImplLayout( const String& rOrigStr, // convert from logical units to physical units // recode string if needed if( mpFontEntry->mpConversion ) { - OUString aTmpStr(aStr); // only needed until aStr is OUString as well - mpFontEntry->mpConversion->RecodeString( aTmpStr, 0, aTmpStr.getLength() ); - aStr = String(aTmpStr); + mpFontEntry->mpConversion->RecodeString( aStr, 0, aStr.getLength() ); } long nPixelWidth = nLogicalWidth; @@ -5863,13 +5856,7 @@ SalLayout* OutputDevice::ImplLayout( const String& rOrigStr, pDXArray = pTempDXAry; } - OUString aTmpStr(aStr); // only needed until aStr is OUString as well - sal_Int32 nMinIndex2=nMinIndex; // ditto - sal_Int32 nLen2=nLen; // ditto - ImplLayoutArgs aLayoutArgs = ImplPrepareLayoutArgs( aTmpStr, nMinIndex, nLen, nPixelWidth, pDXArray ); - aStr = String(aTmpStr); // ditto - nLen = nLen2; // ditto - nMinIndex = nMinIndex2; // ditto + ImplLayoutArgs aLayoutArgs = ImplPrepareLayoutArgs( aStr, nMinIndex, nLen, nPixelWidth, pDXArray ); // get matching layout object for base font SalLayout* pSalLayout = NULL; |