summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Thiebaud <nthiebaud@gmail.com>2014-09-06 16:13:09 +0200
committerNorbert Thiebaud <nthiebaud@gmail.com>2014-09-12 01:45:27 +0200
commit1b42acdaeae134f94580d6e1eba89da16741d596 (patch)
tree882710be2c142cdef62823c9600925ee22f8dab7
parent43638d8428abb8358a703247651fbfc72e47ff72 (diff)
vcl: use DeviceCoordinate for GetCaretPositions in sallayout
Change-Id: I5a959e1c3806da713e106c1b0fc8690a6578987b
-rw-r--r--include/vcl/outdev.hxx2
-rw-r--r--vcl/README8
-rw-r--r--vcl/inc/graphite_layout.hxx2
-rw-r--r--vcl/inc/graphite_serverfont.hxx2
-rw-r--r--vcl/inc/sallayout.hxx6
-rw-r--r--vcl/quartz/ctlayout.cxx10
-rw-r--r--vcl/source/gdi/sallayout.cxx12
-rw-r--r--vcl/source/glyphs/graphite_layout.cxx4
-rw-r--r--vcl/source/outdev/map.cxx25
-rw-r--r--vcl/source/outdev/text.cxx117
-rw-r--r--vcl/win/source/gdi/winlayout.cxx22
11 files changed, 162 insertions, 48 deletions
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index df0cd270ed89..b05edab89343 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -1722,6 +1722,8 @@ public:
SAL_DLLPRIVATE DeviceCoordinate LogicWidthToDeviceCoordinate( long nWidth ) const;
SAL_DLLPRIVATE DeviceCoordinate LogicHeightToDeviceCoordinate( long nHeight ) const;
+ SAL_DLLPRIVATE long DeviceCoordinateToLogicWidth(DeviceCoordinate width) const;
+ SAL_DLLPRIVATE long DeviceCoordinateToLogicHeight(DeviceCoordinate height) const;
private:
diff --git a/vcl/README b/vcl/README
index 65113a62dd5d..c00a3e152488 100644
--- a/vcl/README
+++ b/vcl/README
@@ -188,3 +188,11 @@ other programs, use the "pdfunzip" tool:
LD_LIBRARY_PATH=$PWD/instdir/ure/lib workdir/LinkTarget/Executable/pdfunzip input.pdf output.pdf
+=== DeviceCoordinate ===
+
+The type DeviceCoordinate is meant to represent coordinate in the native Device space
+The implementation is platform dependant. it is a scalar type, but can by int/long/float/double...
+Originally such coordinate was represented with int or long... DeviceCoordinate
+was introduced to allow for sub-point coordiante (iow float/double), which is
+quite important when dealing with HiDPI devices.
+
diff --git a/vcl/inc/graphite_layout.hxx b/vcl/inc/graphite_layout.hxx
index 32954680d054..11a9f6bc2369 100644
--- a/vcl/inc/graphite_layout.hxx
+++ b/vcl/inc/graphite_layout.hxx
@@ -127,7 +127,7 @@ public:
virtual DeviceCoordinate FillDXArray( DeviceCoordinate* pDXArray ) const SAL_OVERRIDE;
virtual void ApplyDXArray(ImplLayoutArgs &rArgs, std::vector<int> & rDeltaWidth);
- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const SAL_OVERRIDE;
+ virtual void GetCaretPositions( int nArraySize, DeviceCoordinate* pCaretXArray ) const SAL_OVERRIDE;
// methods using glyph indexing
virtual int GetNextGlyphs(int nLen, sal_GlyphId* pGlyphIdxAry, ::Point & rPos, int&,
diff --git a/vcl/inc/graphite_serverfont.hxx b/vcl/inc/graphite_serverfont.hxx
index 0d533e00b7c2..00ebfb2da1f7 100644
--- a/vcl/inc/graphite_serverfont.hxx
+++ b/vcl/inc/graphite_serverfont.hxx
@@ -80,7 +80,7 @@ public:
{
return maImpl.GetTextBreak(max_width, extra, factor);
}
- virtual void GetCaretPositions( int as, long* cxa ) const SAL_OVERRIDE
+ virtual void GetCaretPositions( int as, DeviceCoordinate* cxa ) const SAL_OVERRIDE
{
maImpl.GetCaretPositions(as, cxa);
}
diff --git a/vcl/inc/sallayout.hxx b/vcl/inc/sallayout.hxx
index 3a2061b6391c..0138f8a0912d 100644
--- a/vcl/inc/sallayout.hxx
+++ b/vcl/inc/sallayout.hxx
@@ -174,7 +174,7 @@ public:
virtual sal_Int32 GetTextBreak(DeviceCoordinate nMaxWidth, DeviceCoordinate nCharExtra=0, int nFactor=1) const = 0;
virtual DeviceCoordinate FillDXArray( DeviceCoordinate* pDXArray ) const = 0;
virtual DeviceCoordinate GetTextWidth() const { return FillDXArray( NULL ); }
- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const = 0;
+ virtual void GetCaretPositions( int nArraySize, DeviceCoordinate* pCaretXArray ) const = 0;
virtual bool IsKashidaPosValid ( int /*nCharPos*/ ) const { return true; } // i60594
// methods using glyph indexing
@@ -231,7 +231,7 @@ public:
virtual void DrawText( SalGraphics& ) const SAL_OVERRIDE;
virtual sal_Int32 GetTextBreak(DeviceCoordinate nMaxWidth, DeviceCoordinate nCharExtra, int nFactor) const SAL_OVERRIDE;
virtual DeviceCoordinate FillDXArray( DeviceCoordinate* pDXArray ) const SAL_OVERRIDE;
- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const SAL_OVERRIDE;
+ virtual void GetCaretPositions( int nArraySize, DeviceCoordinate* pCaretXArray ) const SAL_OVERRIDE;
virtual int GetNextGlyphs( int nLen, sal_GlyphId* pGlyphIdxAry, Point& rPos,
int&, DeviceCoordinate* pGlyphAdvAry, int* pCharPosAry,
const PhysicalFontFace** pFallbackFonts ) const SAL_OVERRIDE;
@@ -332,7 +332,7 @@ public:
virtual DeviceCoordinate GetTextWidth() const SAL_OVERRIDE;
virtual DeviceCoordinate FillDXArray( DeviceCoordinate* pDXArray ) const SAL_OVERRIDE;
virtual sal_Int32 GetTextBreak(DeviceCoordinate nMaxWidth, DeviceCoordinate nCharExtra, int nFactor) const SAL_OVERRIDE;
- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const SAL_OVERRIDE;
+ virtual void GetCaretPositions( int nArraySize, DeviceCoordinate* pCaretXArray ) const SAL_OVERRIDE;
// used by display layers
virtual int GetNextGlyphs( int nLen, sal_GlyphId* pGlyphIdxAry, Point& rPos, int&,
diff --git a/vcl/quartz/ctlayout.cxx b/vcl/quartz/ctlayout.cxx
index cd9771a072e5..fb73b78b1b5d 100644
--- a/vcl/quartz/ctlayout.cxx
+++ b/vcl/quartz/ctlayout.cxx
@@ -45,7 +45,7 @@ public:
virtual DeviceCoordinate GetTextWidth() const SAL_OVERRIDE;
virtual DeviceCoordinate FillDXArray( DeviceCoordinate* pDXArray ) const SAL_OVERRIDE;
virtual sal_Int32 GetTextBreak(DeviceCoordinate nMaxWidth, DeviceCoordinate nCharExtra, int nFactor) const SAL_OVERRIDE;
- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const SAL_OVERRIDE;
+ virtual void GetCaretPositions( int nArraySize, DeviceCoordinate* pCaretXArray ) const SAL_OVERRIDE;
virtual bool GetBoundRect( SalGraphics&, Rectangle& ) const SAL_OVERRIDE;
virtual void InitFont( void) const SAL_OVERRIDE;
@@ -840,7 +840,7 @@ sal_Int32 CTLayout::GetTextBreak( DeviceCoordinate nMaxWidth, DeviceCoordinate n
return nIndex;
}
-void CTLayout::GetCaretPositions( int nMaxIndex, long* pCaretXArray ) const
+void CTLayout::GetCaretPositions( int nMaxIndex, DeviceCoordinate* pCaretXArray ) const
{
DBG_ASSERT( ((nMaxIndex>0)&&!(nMaxIndex&1)),
"CTLayout::GetCaretPositions() : invalid number of caret pairs requested");
@@ -848,7 +848,7 @@ void CTLayout::GetCaretPositions( int nMaxIndex, long* pCaretXArray ) const
// initialize the caret positions
for( int i = 0; i < nMaxIndex; ++i )
{
- pCaretXArray[ i ] = -1;
+ pCaretXArray[ i ] = (DeviceCoordinate)-1;
}
for( int n = 0; n <= mnCharCount; ++n )
{
@@ -859,12 +859,12 @@ void CTLayout::GetCaretPositions( int nMaxIndex, long* pCaretXArray ) const
// update previous trailing position
if( n > 0 )
- pCaretXArray[ 2*n-1 ] = lrint( fPos1 );
+ pCaretXArray[ 2*n-1 ] = (DeviceCoordinate) fPos1;
// update current leading position
if( 2*n >= nMaxIndex )
break;
- pCaretXArray[ 2*n+0 ] = lrint( fPos1 );
+ pCaretXArray[ 2*n+0 ] = (DeviceCoordinate) fPos1;
}
}
diff --git a/vcl/source/gdi/sallayout.cxx b/vcl/source/gdi/sallayout.cxx
index c30a99af01fb..a3124c443e37 100644
--- a/vcl/source/gdi/sallayout.cxx
+++ b/vcl/source/gdi/sallayout.cxx
@@ -1247,7 +1247,7 @@ void GenericSalLayout::KashidaJustify( long nKashidaIndex, int nKashidaWidth )
}
}
-void GenericSalLayout::GetCaretPositions( int nMaxIndex, long* pCaretXArray ) const
+void GenericSalLayout::GetCaretPositions( int nMaxIndex, DeviceCoordinate* pCaretXArray ) const
{
// initialize result array
long nXPos = -1;
@@ -1990,26 +1990,28 @@ DeviceCoordinate MultiSalLayout::FillDXArray( DeviceCoordinate* pCharWidths ) co
return nMaxWidth;
}
-void MultiSalLayout::GetCaretPositions( int nMaxIndex, long* pCaretXArray ) const
+void MultiSalLayout::GetCaretPositions( int nMaxIndex, DeviceCoordinate* pCaretXArray ) const
{
SalLayout& rLayout = *mpLayouts[ 0 ];
rLayout.GetCaretPositions( nMaxIndex, pCaretXArray );
if( mnLevel > 1 )
{
- long* pTempPos = (long*)alloca( nMaxIndex * sizeof(long) );
+ DeviceCoordinate* pTempPos = (DeviceCoordinate*)alloca( nMaxIndex * sizeof(DeviceCoordinate) );
for( int n = 1; n < mnLevel; ++n )
{
mpLayouts[ n ]->GetCaretPositions( nMaxIndex, pTempPos );
double fUnitMul = mnUnitsPerPixel;
fUnitMul /= mpLayouts[n]->GetUnitsPerPixel();
for( int i = 0; i < nMaxIndex; ++i )
+ {
if( pTempPos[i] >= 0 )
{
- long w = pTempPos[i];
- w = static_cast<long>(w*fUnitMul + 0.5);
+ DeviceCoordinate w = pTempPos[i];
+ w = (DeviceCoordinate)(w * fUnitMul + 0.5);
pCaretXArray[i] = w;
}
+ }
}
}
}
diff --git a/vcl/source/glyphs/graphite_layout.cxx b/vcl/source/glyphs/graphite_layout.cxx
index 6f7cbb252ab0..508a0db1d733 100644
--- a/vcl/source/glyphs/graphite_layout.cxx
+++ b/vcl/source/glyphs/graphite_layout.cxx
@@ -1090,14 +1090,14 @@ void GraphiteLayout::kashidaJustify(std::vector<int>& rDeltaWidths, sal_GlyphId
}
-void GraphiteLayout::GetCaretPositions( int nArraySize, long* pCaretXArray ) const
+void GraphiteLayout::GetCaretPositions( int nArraySize, DeviceCoordinate* pCaretXArray ) const
{
// For each character except the last discover the caret positions
// immediately before and after that character.
// This is used for underlines in the GUI amongst other things.
// It may be used from MultiSalLayout, in which case it must take into account
// glyphs that have been moved.
- std::fill(pCaretXArray, pCaretXArray + nArraySize, -1);
+ std::fill(pCaretXArray, pCaretXArray + nArraySize, (DeviceCoordinate)-1);
// the layout method doesn't modify the layout even though it isn't
// const in the interface
bool bRtl = (mnLayoutFlags & SAL_LAYOUT_BIDI_RTL);//const_cast<GraphiteLayout*>(this)->maLayout.rightToLeft();
diff --git a/vcl/source/outdev/map.cxx b/vcl/source/outdev/map.cxx
index 396a2c471014..2cea0d3886fa 100644
--- a/vcl/source/outdev/map.cxx
+++ b/vcl/source/outdev/map.cxx
@@ -2142,6 +2142,31 @@ long Window::ImplLogicUnitToPixelY( long nY, MapUnit eUnit )
return nY;
}
+long OutputDevice::DeviceCoordinateToLogicWidth(DeviceCoordinate width) const
+{
+ if ( !mbMap )
+ {
+ return (long)width;
+ }
+#if VCL_FLOAT_DEVICE_PIXEL
+ return (long)(width / (maMapRes.mfScaleX * mnDPIX));
+#else
+ return ImplDevicePixelToLogicWidth(width);
+#endif
+}
+
+long OutputDevice::DeviceCoordinateToLogicHeight(DeviceCoordinate height) const
+{
+ if ( !mbMap )
+ {
+ return (long)height;
+ }
+#if VCL_FLOAT_DEVICE_PIXEL
+ return (long)(height / (maMapRes.mfScaleY * mnDPIY));
+#else
+ return ImplDevicePixelToLogicHeight(height);
+#endif
+}
DeviceCoordinate OutputDevice::LogicWidthToDeviceCoordinate( long nWidth ) const
{
diff --git a/vcl/source/outdev/text.cxx b/vcl/source/outdev/text.cxx
index 51117fe1c172..1dff2db44141 100644
--- a/vcl/source/outdev/text.cxx
+++ b/vcl/source/outdev/text.cxx
@@ -1014,6 +1014,7 @@ long OutputDevice::GetTextArray( const OUString& rStr, long* pDXAry,
{
pDXPixelArray = (DeviceCoordinate*)alloca(nLen * sizeof(DeviceCoordinate));
}
+ long nWidthRes;
DeviceCoordinate nWidth = pSalLayout->FillDXArray( pDXPixelArray );
int nWidthFactor = pSalLayout->GetUnitsPerPixel();
pSalLayout->Release();
@@ -1026,36 +1027,41 @@ long OutputDevice::GetTextArray( const OUString& rStr, long* pDXAry,
pDXPixelArray[ i ] += pDXPixelArray[ i-1 ];
}
}
- if( mbMap )
+ if( nWidthFactor > 1 )
{
if( pDXPixelArray )
{
for( int i = 0; i < nLen; ++i )
{
- pDXPixelArray[i] = ImplDevicePixelToLogicWidth( pDXPixelArray[i] );
+ pDXPixelArray[i] /= nWidthFactor;
}
}
- nWidth = ImplDevicePixelToLogicWidth( nWidth );
+ nWidth /= nWidthFactor;
}
- if( nWidthFactor > 1 )
+ if( mbMap )
{
if( pDXPixelArray )
{
for( int i = 0; i < nLen; ++i )
{
- pDXPixelArray[i] /= nWidthFactor;
+ pDXAry[i] = DeviceCoordinateToLogicWidth( pDXPixelArray[i] );
}
}
- nWidth /= nWidthFactor;
+ nWidthRes = DeviceCoordinateToLogicWidth( nWidth );
}
- if(pDXAry)
+ else
{
- for( int i = 0; i < nLen; ++i )
+ if( pDXPixelArray )
{
- pDXAry[i] = basegfx::fround(pDXPixelArray[i]);
+ for( int i = 0; i < nLen; ++i )
+ {
+ pDXAry[i] = (long)pDXPixelArray[i];
+ }
}
+ nWidthRes = (long) nWidth;
}
- return basegfx::fround(nWidth);
+
+ return nWidth;
#else /* ! VCL_FLOAT_DEVICE_PIXEL */
@@ -1091,7 +1097,7 @@ long OutputDevice::GetTextArray( const OUString& rStr, long* pDXAry,
bool OutputDevice::GetCaretPositions( const OUString& rStr, long* pCaretXArray,
sal_Int32 nIndex, sal_Int32 nLen,
long* pDXAry, long nLayoutWidth,
- bool bCellBreaking ) const
+ bool /* bCellBreaking */ ) const
{
if( nIndex >= rStr.getLength() )
@@ -1105,50 +1111,121 @@ bool OutputDevice::GetCaretPositions( const OUString& rStr, long* pCaretXArray,
if( !pSalLayout )
return false;
+#if VCL_FLOAT_DEVICE_PIXEL
+ int nWidthFactor = pSalLayout->GetUnitsPerPixel();
+ DeviceCoordinate* pDevCaretXArray = (DeviceCoordinate*)alloca(2 * nLen * sizeof(DeviceCoordinate));
+
+ pSalLayout->GetCaretPositions( 2*nLen, pDevCaretXArray );
+ DeviceCoordinate nWidth = pSalLayout->GetTextWidth();
+ pSalLayout->Release();
+
+ // fixup unknown caret positions
+ int i;
+ for( i = 0; i < 2 * nLen; ++i )
+ {
+ if( pDevCaretXArray[ i ] >= 0 )
+ {
+ break;
+ }
+ }
+ DeviceCoordinate nXPos = pCaretXArray[ i ];
+ for( i = 0; i < 2 * nLen; ++i )
+ {
+ if( pCaretXArray[ i ] >= 0 )
+ {
+ nXPos = pCaretXArray[ i ];
+ }
+ else
+ {
+ pCaretXArray[ i ] = nXPos;
+ }
+ }
+ if( nWidthFactor != 1 )
+ {
+ for( i = 0; i < 2*nLen; ++i )
+ {
+ pDevCaretXArray[i] /= nWidthFactor;
+ }
+ }
+
+ // handle window mirroring
+ if( IsRTLEnabled() )
+ {
+ for( i = 0; i < 2 * nLen; ++i )
+ {
+ pDevCaretXArray[i] = nWidth - pDevCaretXArray[i] - 1;
+ }
+ }
+
+ // convert from font units to logical units
+ if( mbMap )
+ {
+ for( i = 0; i < 2*nLen; ++i )
+ {
+ pCaretXArray[i] = DeviceCoordinateToLogicWidth( pDevCaretXArray[i] );
+ }
+ }
+ else
+ {
+ for( i = 0; i < 2*nLen; ++i )
+ {
+ pCaretXArray[i] = (long)pDevCaretXArray[i];
+ }
+ }
+#else
int nWidthFactor = pSalLayout->GetUnitsPerPixel();
+
pSalLayout->GetCaretPositions( 2*nLen, pCaretXArray );
- long nWidth = pSalLayout->GetTextWidth();
+ DeviceCoordinate nWidth = pSalLayout->GetTextWidth();
pSalLayout->Release();
// fixup unknown caret positions
int i;
for( i = 0; i < 2 * nLen; ++i )
+ {
if( pCaretXArray[ i ] >= 0 )
+ {
break;
- long nXPos = pCaretXArray[ i ];
+ }
+ }
+ DeviceCoordinate nXPos = pCaretXArray[ i ];
for( i = 0; i < 2 * nLen; ++i )
{
if( pCaretXArray[ i ] >= 0 )
+ {
nXPos = pCaretXArray[ i ];
+ }
else
+ {
pCaretXArray[ i ] = nXPos;
+ }
}
// handle window mirroring
if( IsRTLEnabled() )
{
for( i = 0; i < 2 * nLen; ++i )
+ {
pCaretXArray[i] = nWidth - pCaretXArray[i] - 1;
+ }
}
// convert from font units to logical units
if( mbMap )
{
for( i = 0; i < 2*nLen; ++i )
+ {
pCaretXArray[i] = ImplDevicePixelToLogicWidth( pCaretXArray[i] );
+ }
}
-
if( nWidthFactor != 1 )
{
for( i = 0; i < 2*nLen; ++i )
+ {
pCaretXArray[i] /= nWidthFactor;
+ }
}
-
- // if requested move caret position to cell limits
- if( bCellBreaking )
- {
- ; // FIXME
- }
+#endif
return true;
}
diff --git a/vcl/win/source/gdi/winlayout.cxx b/vcl/win/source/gdi/winlayout.cxx
index eff3f9c0856a..a232bd717cfb 100644
--- a/vcl/win/source/gdi/winlayout.cxx
+++ b/vcl/win/source/gdi/winlayout.cxx
@@ -147,7 +147,7 @@ public:
virtual DeviceCoordinate FillDXArray( DeviceCoordinate* pDXArray ) const;
virtual sal_Int32 GetTextBreak(DeviceCoordinate nMaxWidth, DeviceCoordinate nCharExtra, int nFactor) const SAL_OVERRIDE;
- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const;
+ virtual void GetCaretPositions( int nArraySize, DeviceCoordinate* pCaretXArray ) const;
// for glyph+font+script fallback
virtual void MoveGlyph( int nStart, long nNewXPos );
@@ -667,9 +667,9 @@ sal_Int32 SimpleWinLayout::GetTextBreak( DeviceCoordinate nMaxWidth, DeviceCoord
return -1;
}
-void SimpleWinLayout::GetCaretPositions( int nMaxIdx, long* pCaretXArray ) const
+void SimpleWinLayout::GetCaretPositions( int nMaxIdx, DeviceCoordinat* pCaretXArray ) const
{
- long nXPos = mnBaseAdv;
+ DeviceCoordinate nXPos = mnBaseAdv;
if( !mpGlyphs2Chars )
{
@@ -684,13 +684,13 @@ void SimpleWinLayout::GetCaretPositions( int nMaxIdx, long* pCaretXArray ) const
{
int i;
for( i = 0; i < nMaxIdx; ++i )
- pCaretXArray[ i ] = -1;
+ pCaretXArray[ i ] = (DeviceCoordinate)-1;
// assign glyph positions to character positions
for( i = 0; i < mnGlyphCount; ++i )
{
int nCurrIdx = mpGlyphs2Chars[ i ] - mnMinCharPos;
- long nXRight = nXPos + mpCharWidths[ nCurrIdx ];
+ DeviceCoordinate nXRight = nXPos + mpCharWidths[ nCurrIdx ];
nCurrIdx *= 2;
if( !(mpGlyphRTLFlags && mpGlyphRTLFlags[i]) )
{
@@ -968,7 +968,7 @@ public:
virtual DeviceCoordinate FillDXArray( DeviceCoordinate* pDXArray ) const;
virtual sal_Int32 GetTextBreak(DeviceCoordinate nMaxWidth, DeviceCoordinate nCharExtra, int nFactor) const SAL_OVERRIDE;
- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const;
+ virtual void GetCaretPositions( int nArraySize, DeviceCoordinate* pCaretXArray ) const;
virtual bool IsKashidaPosValid ( int nCharPos ) const;
// for glyph+font+script fallback
@@ -2158,16 +2158,16 @@ sal_Int32 UniscribeLayout::GetTextBreak( DeviceCoordinate nMaxWidth, DeviceCoord
return -1;
}
-void UniscribeLayout::GetCaretPositions( int nMaxIdx, long* pCaretXArray ) const
+void UniscribeLayout::GetCaretPositions( int nMaxIdx, DeviceCoordinate* pCaretXArray ) const
{
int i;
for( i = 0; i < nMaxIdx; ++i )
pCaretXArray[ i ] = -1;
- long* const pGlyphPos = (long*)alloca( (mnGlyphCount+1) * sizeof(long) );
+ DeviceCoordinate* const pGlyphPos = (DeviceCoordinate*)alloca( (mnGlyphCount+1) * sizeof(DeviceCoordinate) );
for( i = 0; i <= mnGlyphCount; ++i )
pGlyphPos[ i ] = -1;
- long nXPos = 0;
+ DeviceCoordinate nXPos = 0;
for( int nItem = 0; nItem < mnItemCount; ++nItem )
{
const VisualItem& rVisualItem = mpVisualItems[ nItem ];
@@ -2643,7 +2643,7 @@ public:
virtual sal_Int32 GetTextBreak(DeviceCoordinate nMaxWidth, DeviceCoordinate nCharExtra=0, int nFactor=1) const SAL_OVERRIDE;
virtual DeviceCoordinate FillDXArray( DeviceCoordinate* pDXArray ) const;
- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const;
+ virtual void GetCaretPositions( int nArraySize, DeviceCoordinate* pCaretXArray ) const;
// methods using glyph indexing
virtual int GetNextGlyphs(int nLen, sal_GlyphId* pGlyphIdxAry, ::Point & rPos, int&,
@@ -2787,7 +2787,7 @@ DeviceCoordinate GraphiteWinLayout::FillDXArray( DeviceCoordinate* pDXArray ) co
return maImpl.FillDXArray(pDXArray);
}
-void GraphiteWinLayout::GetCaretPositions( int nArraySize, long* pCaretXArray ) const
+void GraphiteWinLayout::GetCaretPositions( int nArraySize, DeviceCoordinate* pCaretXArray ) const
{
maImpl.GetCaretPositions(nArraySize, pCaretXArray);
}