summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorChr. Rossmanith <ChrRossmanith@gmx.de>2013-03-24 16:30:20 +0100
committerFridrich Strba <fridrich@documentfoundation.org>2013-03-26 12:45:36 +0000
commitffb837eed2c6f843f12f9368ed2183660a0036a1 (patch)
treefa809cbec969f0f94d593ce7ee46661b9cdd4f52 /vcl
parenta89fda4b7f09856ba136f0a4df7929f7ee3f796b (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.hxx12
-rw-r--r--vcl/source/gdi/outdev3.cxx55
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;