summaryrefslogtreecommitdiff
path: root/basebmp/source
diff options
context:
space:
mode:
authorTor Lillqvist <tml@iki.fi>2013-04-12 01:45:20 +0300
committerTor Lillqvist <tml@iki.fi>2013-04-12 02:24:12 +0300
commit3f9acb7f9c3b68da11f8263b9103d2700321913b (patch)
tree98df3364ecd7a51c8e4f12281cec842f3cd6436a /basebmp/source
parentb7bae354aafc3b2c1e579c72443ccfba4d42e4ac (diff)
Nah, I don't need a getOffset(), but I do need a getBufferSize()
To properly handle subsetted BitmapDevices in the iOS vcl backend I seem to need to know what the size of the full BitmapDevice is. I wasted at least one day on desperate hacking and debugging, trying to wrap my head around a misunderstanding of what a subsetted BitmapDevice is. I thought it involved coordinate offsetting... Change-Id: I83bf1a7d75ce192aaf21f1e408008e362fd6c6e6
Diffstat (limited to 'basebmp/source')
-rw-r--r--basebmp/source/bitmapdevice.cxx55
1 files changed, 34 insertions, 21 deletions
diff --git a/basebmp/source/bitmapdevice.cxx b/basebmp/source/bitmapdevice.cxx
index c090b456cabc..d1a19f938d07 100644
--- a/basebmp/source/bitmapdevice.cxx
+++ b/basebmp/source/bitmapdevice.cxx
@@ -283,6 +283,7 @@ namespace
// -------------------------------------------------------
BitmapRenderer( const basegfx::B2IBox& rBounds,
+ const basegfx::B2IVector& rBufferSize,
sal_Int32 nScanlineFormat,
sal_Int32 nScanlineStride,
sal_uInt8* pFirstScanline,
@@ -292,7 +293,7 @@ namespace
const RawMemorySharedArray& rMem,
const PaletteMemorySharedVector& rPalette,
const IBitmapDeviceDamageTrackerSharedPtr& rDamage ) :
- BitmapDevice( rBounds, nScanlineFormat,
+ BitmapDevice( rBounds, rBufferSize, nScanlineFormat,
nScanlineStride, pFirstScanline, rMem, rPalette ),
maBegin( begin ),
maColorLookup(),
@@ -1044,6 +1045,9 @@ struct ImplBitmapDevice
*/
basegfx::B2IBox maBounds;
+ //// Size of the actual frame buffer
+ basegfx::B2IVector maBufferSize;
+
/// Scanline format, as provided at the constructor
sal_Int32 mnScanlineFormat;
@@ -1072,6 +1076,7 @@ struct ImplBitmapDevice
BitmapDevice::BitmapDevice( const basegfx::B2IBox& rBounds,
+ const basegfx::B2IVector& rBufferSize,
sal_Int32 nScanlineFormat,
sal_Int32 nScanlineStride,
sal_uInt8* pFirstScanline,
@@ -1082,6 +1087,7 @@ BitmapDevice::BitmapDevice( const basegfx::B2IBox& rBounds,
mpImpl->mpMem = rMem;
mpImpl->mpPalette = rPalette;
mpImpl->maBounds = rBounds;
+ mpImpl->maBufferSize = rBufferSize;
mpImpl->mnScanlineFormat = nScanlineFormat;
mpImpl->mnScanlineStride = nScanlineStride;
mpImpl->mpFirstScanline = pFirstScanline;
@@ -1105,9 +1111,9 @@ bool BitmapDevice::isTopDown() const
return mpImpl->mnScanlineStride >= 0;
}
-basegfx::B2IVector BitmapDevice::getOffset() const
+basegfx::B2IVector BitmapDevice::getBufferSize() const
{
- return basegfx::B2IVector(mpImpl->maBounds.getMinX(), mpImpl->maBounds.getMinY());
+ return mpImpl->maBufferSize;
}
sal_Int32 BitmapDevice::getScanlineFormat() const
@@ -1679,6 +1685,7 @@ struct StdMasks
template< class FormatTraits, class MaskTraits >
BitmapDeviceSharedPtr createRenderer(
const basegfx::B2IBox& rBounds,
+ const basegfx::B2IVector& rBufferSize,
sal_Int32 nScanlineFormat,
sal_Int32 nScanlineStride,
sal_uInt8* pFirstScanline,
@@ -1693,6 +1700,7 @@ BitmapDeviceSharedPtr createRenderer(
template< class FormatTraits, class MaskTraits, class Accessor >
BitmapDeviceSharedPtr createRenderer(
const basegfx::B2IBox& rBounds,
+ const basegfx::B2IVector& rBufferSize,
sal_Int32 nScanlineFormat,
sal_Int32 nScanlineStride,
sal_uInt8* pFirstScanline,
@@ -1712,6 +1720,7 @@ BitmapDeviceSharedPtr createRenderer(
return BitmapDeviceSharedPtr(
new Renderer( rBounds,
+ rBufferSize,
nScanlineFormat,
nScanlineStride,
pFirstScanline,
@@ -1750,6 +1759,7 @@ PaletteMemorySharedVector createStandardPalette(
template< class FormatTraits, class MaskTraits >
BitmapDeviceSharedPtr createRenderer(
const basegfx::B2IBox& rBounds,
+ const basegfx::B2IVector& rBufferSize,
sal_Int32 nScanlineFormat,
sal_Int32 nScanlineStride,
sal_uInt8* pFirstScanline,
@@ -1759,6 +1769,7 @@ BitmapDeviceSharedPtr createRenderer(
{
return createRenderer<FormatTraits,
MaskTraits>(rBounds,
+ rBufferSize,
nScanlineFormat,
nScanlineStride,
pFirstScanline,
@@ -1774,6 +1785,7 @@ BitmapDeviceSharedPtr createRenderer(
template< class FormatTraits, class MaskTraits >
BitmapDeviceSharedPtr createRenderer(
const basegfx::B2IBox& rBounds,
+ const basegfx::B2IVector& rBufferSize,
sal_Int32 nScanlineFormat,
sal_Int32 nScanlineStride,
sal_uInt8* pFirstScanline,
@@ -1788,6 +1800,7 @@ BitmapDeviceSharedPtr createRenderer(
OSL_ASSERT(pPal);
return createRenderer<FormatTraits,
MaskTraits>(rBounds,
+ rBufferSize,
nScanlineFormat,
nScanlineStride,
pFirstScanline,
@@ -1917,23 +1930,23 @@ BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector&
case Format::ONE_BIT_MSB_GREY:
return createRenderer<PixelFormatTraits_GREY1_MSB,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal, rDamage );
case Format::ONE_BIT_LSB_GREY:
return createRenderer<PixelFormatTraits_GREY1_LSB,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal, rDamage );
case Format::ONE_BIT_MSB_PAL:
return createRenderer<PixelFormatTraits_PAL1_MSB,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal,
bitsPerPixel[nScanlineFormat], rDamage );
case Format::ONE_BIT_LSB_PAL:
return createRenderer<PixelFormatTraits_PAL1_LSB,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal,
bitsPerPixel[nScanlineFormat], rDamage );
@@ -1943,23 +1956,23 @@ BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector&
case Format::FOUR_BIT_MSB_GREY:
return createRenderer<PixelFormatTraits_GREY4_MSB,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal, rDamage );
case Format::FOUR_BIT_LSB_GREY:
return createRenderer<PixelFormatTraits_GREY4_LSB,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal, rDamage );
case Format::FOUR_BIT_MSB_PAL:
return createRenderer<PixelFormatTraits_PAL4_MSB,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal,
bitsPerPixel[nScanlineFormat], rDamage );
case Format::FOUR_BIT_LSB_PAL:
return createRenderer<PixelFormatTraits_PAL4_LSB,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal,
bitsPerPixel[nScanlineFormat], rDamage );
@@ -1969,12 +1982,12 @@ BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector&
case Format::EIGHT_BIT_GREY:
return createRenderer<PixelFormatTraits_GREY8,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal, rDamage );
case Format::EIGHT_BIT_PAL:
return createRenderer<PixelFormatTraits_PAL8,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal,
bitsPerPixel[nScanlineFormat], rDamage );
@@ -1984,12 +1997,12 @@ BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector&
case Format::SIXTEEN_BIT_LSB_TC_MASK:
return createRenderer<PixelFormatTraits_RGB16_565_LSB,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal, rDamage );
case Format::SIXTEEN_BIT_MSB_TC_MASK:
return createRenderer<PixelFormatTraits_RGB16_565_MSB,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal, rDamage );
@@ -1997,7 +2010,7 @@ BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector&
// twentyfour bit formats
case Format::TWENTYFOUR_BIT_TC_MASK:
return createRenderer<PixelFormatTraits_BGR24,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal, rDamage );
@@ -2006,22 +2019,22 @@ BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector&
case Format::THIRTYTWO_BIT_TC_MASK_BGRA:
return createRenderer<PixelFormatTraits_BGRX32_8888,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal, rDamage );
case Format::THIRTYTWO_BIT_TC_MASK_ARGB:
return createRenderer<PixelFormatTraits_XRGB32_8888,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal, rDamage );
case Format::THIRTYTWO_BIT_TC_MASK_ABGR:
return createRenderer<PixelFormatTraits_XBGR32_8888,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal, rDamage );
case Format::THIRTYTWO_BIT_TC_MASK_RGBA:
return createRenderer<PixelFormatTraits_RGBX32_8888,StdMasks>(
- aBounds, nScanlineFormat, nScanlineStride,
+ aBounds, rSize, nScanlineFormat, nScanlineStride,
pFirstScanline, pMem, pPal, rDamage );
}
@@ -2043,7 +2056,7 @@ BitmapDeviceSharedPtr createBitmapDeviceImpl( const basegfx::B2IVector&
std::ostringstream subset;
if (pSubset)
- subset << " subset: " << pSubset->getWidth() << "x" << pSubset->getHeight() << "@(" << pSubset->getMinX() << "," << pSubset->getMinY() << ")";
+ subset << " subset=" << pSubset->getWidth() << "x" << pSubset->getHeight() << "@(" << pSubset->getMinX() << "," << pSubset->getMinY() << ")";
SAL_INFO( "basebmp.bitmapdevice",
"createBitmapDevice: "