Blame SOURCES/0001-Resolves-tdf-95962-incorrect-scanline-stride.patch

f325b2
From beaba7e2e7a3248cbe87870c84b2c0df0a25503d Mon Sep 17 00:00:00 2001
f325b2
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
f325b2
Date: Wed, 25 Nov 2015 10:32:33 +0000
f325b2
Subject: [PATCH] Resolves: tdf#95962 incorrect scanline stride
f325b2
MIME-Version: 1.0
f325b2
Content-Type: text/plain; charset=UTF-8
f325b2
Content-Transfer-Encoding: 8bit
f325b2
f325b2
gtk3: it's the *Original* device we care about, not the temp clip hack devices
f325b2
f325b2
Change-Id: I2ac61cd2a99da25122165af692154fdbc2ac6d2e
f325b2
(cherry picked from commit 872c1b7654510daa4a6974150490623745d931bf)
f325b2
f325b2
we were reusing the stride of the surface we were cloning,
f325b2
but the new surface has a different underlying size.
f325b2
f325b2
remove the custom stride argument and just change our stride
f325b2
calculation to use the same scheme that cairo and GDI uses, which
f325b2
remove another platform/drawing-system variable
f325b2
f325b2
Reviewed-on: https://gerrit.libreoffice.org/20149
f325b2
Tested-by: Jenkins <ci@libreoffice.org>
f325b2
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
f325b2
Tested-by: Caolán McNamara <caolanm@redhat.com>
f325b2
(cherry picked from commit 9b52b8999be86e5c6e5f5901b2640b16f08a2323)
f325b2
f325b2
Change-Id: I257dac9757b121642e9ccfde7db0911edc9f3fb1
f325b2
---
f325b2
 basebmp/source/bitmapdevice.cxx          | 25 +++++++------------------
f325b2
 basebmp/test/basictest.cxx               | 30 +++++++++++++-----------------
f325b2
 basebmp/test/bmpmasktest.cxx             | 24 +++++++-----------------
f325b2
 basebmp/test/bmptest.cxx                 | 12 ++++--------
f325b2
 basebmp/test/cliptest.cxx                | 12 ++++--------
f325b2
 basebmp/test/filltest.cxx                |  6 ++----
f325b2
 basebmp/test/linetest.cxx                | 12 ++++--------
f325b2
 basebmp/test/masktest.cxx                |  9 +++------
f325b2
 basebmp/test/polytest.cxx                |  6 ++----
f325b2
 include/basebmp/bitmapdevice.hxx         |  9 +++------
f325b2
 sw/qa/extras/ooxmlimport/ooxmlimport.cxx |  2 +-
f325b2
 vcl/headless/svpbmp.cxx                  |  6 ++----
f325b2
 vcl/headless/svpframe.cxx                |  3 +--
f325b2
 vcl/headless/svpgdi.cxx                  | 31 ++++++++++++++++---------------
f325b2
 vcl/headless/svptextrender.cxx           |  2 +-
f325b2
 vcl/headless/svpvd.cxx                   |  7 +++----
f325b2
 vcl/qa/cppunit/BitmapTest.cxx            | 15 +++++----------
f325b2
 vcl/unx/gtk/window/gtksalframe.cxx       |  3 +--
f325b2
 18 files changed, 79 insertions(+), 135 deletions(-)
f325b2
f325b2
diff --git a/basebmp/source/bitmapdevice.cxx b/basebmp/source/bitmapdevice.cxx
f325b2
index 04d4892..1517f05 100644
f325b2
--- a/basebmp/source/bitmapdevice.cxx
f325b2
+++ b/basebmp/source/bitmapdevice.cxx
f325b2
@@ -1956,7 +1956,6 @@ namespace
f325b2
 BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector&                  rSize,
f325b2
                                                    bool                                       bTopDown,
f325b2
                                                    Format                                     nScanlineFormat,
f325b2
-                                                   sal_Int32                                  nScanlineStride,
f325b2
                                                    boost::shared_array< sal_uInt8 >           pMem,
f325b2
                                                    PaletteMemorySharedVector                  pPal,
f325b2
                                                    const basegfx::B2IBox*                     pSubset,
f325b2
@@ -1977,6 +1976,8 @@ BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector&
f325b2
         return BitmapDeviceSharedPtr();
f325b2
     }
f325b2
 
f325b2
+    sal_Int32 nScanlineStride = getBitmapDeviceStrideForWidth(nScanlineFormat, rSize.getX());
f325b2
+
f325b2
     // factor in bottom-up scanline order case
f325b2
     nScanlineStride *= bTopDown ? 1 : -1;
f325b2
 
f325b2
@@ -2139,14 +2140,13 @@ BitmapDeviceSharedPtr createBitmapDeviceImplInner( const basegfx::B2IVector&
f325b2
 BitmapDeviceSharedPtr createBitmapDeviceImpl( const basegfx::B2IVector&                  rSize,
f325b2
                                               bool                                       bTopDown,
f325b2
                                               Format                                     nScanlineFormat,
f325b2
-                                              sal_Int32                                  nScanlineStride,
f325b2
                                               boost::shared_array< sal_uInt8 >           pMem,
f325b2
                                               PaletteMemorySharedVector                  pPal,
f325b2
                                               const basegfx::B2IBox*                     pSubset,
f325b2
                                               const IBitmapDeviceDamageTrackerSharedPtr& rDamage,
f325b2
                                               bool bBlack = true)
f325b2
 {
f325b2
-    BitmapDeviceSharedPtr result( createBitmapDeviceImplInner( rSize, bTopDown, nScanlineFormat, nScanlineStride, pMem, pPal, pSubset, rDamage, bBlack ) );
f325b2
+    BitmapDeviceSharedPtr result( createBitmapDeviceImplInner( rSize, bTopDown, nScanlineFormat, pMem, pPal, pSubset, rDamage, bBlack ) );
f325b2
 
f325b2
 #ifdef SAL_LOG_INFO
f325b2
     std::ostringstream subset;
f325b2
@@ -2172,24 +2172,20 @@ sal_Int32 getBitmapDeviceStrideForWidth(Format nScanlineFormat, sal_Int32 nWidth
f325b2
     // round up to full 8 bit, divide by 8
f325b2
     sal_Int32 nScanlineStride = (nWidth*nBitsPerPixel + 7) >> 3;
f325b2
 
f325b2
-    // rounded up to next full power-of-two number of bytes
f325b2
-    const sal_uInt32 bytesPerPixel = nextPow2(
f325b2
-        (bitsPerPixel[nScanlineFormat] + 7) >> 3);
f325b2
+    // pixman (cairo) and GDI (windows) pad to multiples of 32bits
f325b2
+    // so do the same to be easily compatible
f325b2
+    nScanlineStride = (nScanlineStride + 3) & ~0x3;
f325b2
 
f325b2
-    // now make nScanlineStride a multiple of bytesPerPixel
f325b2
-    nScanlineStride = (nScanlineStride + bytesPerPixel - 1) / bytesPerPixel * bytesPerPixel;
f325b2
     return nScanlineStride;
f325b2
 }
f325b2
 
f325b2
 BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize,
f325b2
                                           bool                      bTopDown,
f325b2
-                                          Format                    nScanlineFormat,
f325b2
-                                          sal_Int32                 nScanlineStride )
f325b2
+                                          Format                    nScanlineFormat )
f325b2
 {
f325b2
     return createBitmapDeviceImpl( rSize,
f325b2
                                    bTopDown,
f325b2
                                    nScanlineFormat,
f325b2
-                                   nScanlineStride,
f325b2
                                    boost::shared_array< sal_uInt8 >(),
f325b2
                                    PaletteMemorySharedVector(),
f325b2
                                    NULL,
f325b2
@@ -2199,13 +2195,11 @@ BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector& rSize,
f325b2
 BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector&        rSize,
f325b2
                                           bool                             bTopDown,
f325b2
                                           Format                           nScanlineFormat,
f325b2
-                                          sal_Int32                        nScanlineStride,
f325b2
                                           const PaletteMemorySharedVector& rPalette )
f325b2
 {
f325b2
     return createBitmapDeviceImpl( rSize,
f325b2
                                    bTopDown,
f325b2
                                    nScanlineFormat,
f325b2
-                                   nScanlineStride,
f325b2
                                    boost::shared_array< sal_uInt8 >(),
f325b2
                                    rPalette,
f325b2
                                    NULL,
f325b2
@@ -2215,14 +2209,12 @@ BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector&        rSize
f325b2
 BitmapDeviceSharedPtr createBitmapDevice( const basegfx::B2IVector&        rSize,
f325b2
                                           bool                             bTopDown,
f325b2
                                           Format                           nScanlineFormat,
f325b2
-                                          sal_Int32                        nScanlineStride,
f325b2
                                           const RawMemorySharedArray&      rMem,
f325b2
                                           const PaletteMemorySharedVector& rPalette )
f325b2
 {
f325b2
     return createBitmapDeviceImpl( rSize,
f325b2
                                    bTopDown,
f325b2
                                    nScanlineFormat,
f325b2
-                                   nScanlineStride,
f325b2
                                    rMem,
f325b2
                                    rPalette,
f325b2
                                    NULL,
f325b2
@@ -2235,7 +2227,6 @@ BitmapDeviceSharedPtr createClipDevice( const basegfx::B2IVector&        rSize )
f325b2
              createBitmapDeviceImpl( rSize,
f325b2
                                      false, /* bTopDown */
f325b2
                                      basebmp::FORMAT_ONE_BIT_MSB_GREY,
f325b2
-                                     getBitmapDeviceStrideForWidth(basebmp::FORMAT_ONE_BIT_MSB_GREY, rSize.getX()),
f325b2
                                      boost::shared_array< sal_uInt8 >(),
f325b2
                                      PaletteMemorySharedVector(),
f325b2
                                      NULL,
f325b2
@@ -2251,7 +2242,6 @@ BitmapDeviceSharedPtr subsetBitmapDevice( const BitmapDeviceSharedPtr& rProto,
f325b2
     return createBitmapDeviceImpl( rProto->getSize(),
f325b2
                                    rProto->isTopDown(),
f325b2
                                    rProto->getScanlineFormat(),
f325b2
-                                   rProto->getScanlineStride(),
f325b2
                                    rProto->getBuffer(),
f325b2
                                    rProto->getPalette(),
f325b2
                                    &rSubset,
f325b2
@@ -2264,7 +2254,6 @@ BitmapDeviceSharedPtr cloneBitmapDevice( const basegfx::B2IVector&    rSize,
f325b2
     return createBitmapDeviceImpl( rSize,
f325b2
                                    rProto->isTopDown(),
f325b2
                                    rProto->getScanlineFormat(),
f325b2
-                                   rProto->getScanlineStride(),
f325b2
                                    boost::shared_array< sal_uInt8 >(),
f325b2
                                    rProto->getPalette(),
f325b2
                                    NULL,
f325b2
diff --git a/basebmp/test/basictest.cxx b/basebmp/test/basictest.cxx
f325b2
index 293fbe5..671320d 100644
f325b2
--- a/basebmp/test/basictest.cxx
f325b2
+++ b/basebmp/test/basictest.cxx
f325b2
@@ -83,16 +83,19 @@ public:
f325b2
         basegfx::B2ISize       aSize2(aSize);
f325b2
         BitmapDeviceSharedPtr pDevice( createBitmapDevice( aSize,
f325b2
                                                            true,
f325b2
-                                                           FORMAT_ONE_BIT_MSB_PAL,
f325b2
-                                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX())));
f325b2
+                                                           FORMAT_ONE_BIT_MSB_PAL
f325b2
+                                                           ) );
f325b2
         CPPUNIT_ASSERT_MESSAGE("right size",
f325b2
                                pDevice->getSize() == aSize2 );
f325b2
         CPPUNIT_ASSERT_MESSAGE("Top down format",
f325b2
                                pDevice->isTopDown() );
f325b2
         CPPUNIT_ASSERT_MESSAGE("Scanline format",
f325b2
                                pDevice->getScanlineFormat() == FORMAT_ONE_BIT_MSB_PAL );
f325b2
+        sal_Int32 nExpectedStride = (aSize2.getY() + 7)/8;
f325b2
+        sal_Int32 nAlign = sizeof(sal_uInt32);
f325b2
+        nExpectedStride = ((nExpectedStride + nAlign-1) / nAlign) * nAlign;
f325b2
         CPPUNIT_ASSERT_MESSAGE("Scanline len",
f325b2
-                               pDevice->getScanlineStride() == (aSize2.getY() + 7)/8 );
f325b2
+                               pDevice->getScanlineStride() == nExpectedStride );
f325b2
         CPPUNIT_ASSERT_MESSAGE("Palette existence",
f325b2
                                pDevice->getPalette() );
f325b2
         CPPUNIT_ASSERT_MESSAGE("Palette entry 0 is black",
f325b2
@@ -107,8 +110,7 @@ public:
f325b2
         basegfx::B2ISize       aSize2(3,3);
f325b2
         BitmapDeviceSharedPtr  pDevice( createBitmapDevice( aSize,
f325b2
                                                             true,
f325b2
-                                                            FORMAT_ONE_BIT_MSB_PAL,
f325b2
-                                                            basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX())));
f325b2
+                                                            FORMAT_ONE_BIT_MSB_PAL) );
f325b2
 
f325b2
         BitmapDeviceSharedPtr  pClone( cloneBitmapDevice(
f325b2
                                            aSize2,
f325b2
@@ -123,8 +125,7 @@ public:
f325b2
         const basegfx::B2ISize aSize(64,64);
f325b2
         BitmapDeviceSharedPtr pDevice( createBitmapDevice( aSize,
f325b2
                                                            true,
f325b2
-                                                           FORMAT_ONE_BIT_MSB_PAL,
f325b2
-                                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX())));
f325b2
+                                                           FORMAT_ONE_BIT_MSB_PAL) );
f325b2
 
f325b2
         const basegfx::B2IPoint aPt(3,3);
f325b2
         CPPUNIT_ASSERT_MESSAGE("getPixelData for virgin device",
f325b2
@@ -171,8 +172,7 @@ public:
f325b2
         {
f325b2
             pDevice = createBitmapDevice( aSize,
f325b2
                                           true,
f325b2
-                                          FORMAT_ONE_BIT_LSB_PAL,
f325b2
-                                          basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_LSB_PAL, aSize.getX()));
f325b2
+                                          FORMAT_ONE_BIT_LSB_PAL);
f325b2
 
f325b2
             pDevice->setPixel( aPt2, aCol, DrawMode_PAINT );
f325b2
             CPPUNIT_ASSERT_MESSAGE("get/setPixel roundtrip #4",
f325b2
@@ -197,8 +197,7 @@ public:
f325b2
         {
f325b2
             pDevice = createBitmapDevice( aSize,
f325b2
                                           true,
f325b2
-                                          FORMAT_EIGHT_BIT_GREY,
f325b2
-                                          basebmp::getBitmapDeviceStrideForWidth(FORMAT_EIGHT_BIT_GREY, aSize.getX()));
f325b2
+                                          FORMAT_EIGHT_BIT_GREY);
f325b2
 
f325b2
             const Color aCol4(0x010101);
f325b2
             pDevice->setPixel( aPt, aCol4, DrawMode_PAINT );
f325b2
@@ -220,8 +219,7 @@ public:
f325b2
         {
f325b2
             pDevice = createBitmapDevice( aSize,
f325b2
                                           true,
f325b2
-                                          FORMAT_SIXTEEN_BIT_LSB_TC_MASK,
f325b2
-                                          basebmp::getBitmapDeviceStrideForWidth(FORMAT_SIXTEEN_BIT_LSB_TC_MASK, aSize.getX()));
f325b2
+                                          FORMAT_SIXTEEN_BIT_LSB_TC_MASK);
f325b2
             const Color aCol7(0);
f325b2
             pDevice->clear( aCol7 );
f325b2
 
f325b2
@@ -245,8 +243,7 @@ public:
f325b2
         {
f325b2
             pDevice = createBitmapDevice( aSize,
f325b2
                                           true,
f325b2
-                                          FORMAT_TWENTYFOUR_BIT_TC_MASK,
f325b2
-                                          basebmp::getBitmapDeviceStrideForWidth(FORMAT_TWENTYFOUR_BIT_TC_MASK, aSize.getX()));
f325b2
+                                          FORMAT_TWENTYFOUR_BIT_TC_MASK);
f325b2
 
f325b2
             const Color aCol4(0x01010101);
f325b2
             pDevice->setPixel( aPt, aCol4, DrawMode_PAINT );
f325b2
@@ -273,8 +270,7 @@ public:
f325b2
         {
f325b2
             pDevice = createBitmapDevice( aSize,
f325b2
                                           true,
f325b2
-                                          FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
f325b2
-                                          basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()));
f325b2
+                                          FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA);
f325b2
 
f325b2
             const Color aCol4(0x01010101);
f325b2
             pDevice->setPixel( aPt, aCol4, DrawMode_PAINT );
f325b2
diff --git a/basebmp/test/bmpmasktest.cxx b/basebmp/test/bmpmasktest.cxx
f325b2
index 611e189..ded87f8 100644
f325b2
--- a/basebmp/test/bmpmasktest.cxx
f325b2
+++ b/basebmp/test/bmpmasktest.cxx
f325b2
@@ -91,26 +91,21 @@ public:
f325b2
         const basegfx::B2ISize aSize(10,10);
f325b2
         mpDevice1bpp = createBitmapDevice( aSize,
f325b2
                                            true,
f325b2
-                                           FORMAT_ONE_BIT_MSB_PAL,
f325b2
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()));
f325b2
+                                           FORMAT_ONE_BIT_MSB_PAL);
f325b2
         mpDevice32bpp = createBitmapDevice( aSize,
f325b2
                                             true,
f325b2
-                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
f325b2
-                                            basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()));
f325b2
+                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA);
f325b2
 
f325b2
         mpMaskBmp1bpp = createBitmapDevice( aSize,
f325b2
                                             true,
f325b2
-                                            FORMAT_ONE_BIT_MSB_GREY,
f325b2
-                                            basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_GREY, aSize.getX()));
f325b2
+                                            FORMAT_ONE_BIT_MSB_GREY);
f325b2
 
f325b2
         mpBmp1bpp = createBitmapDevice( aSize,
f325b2
                                         true,
f325b2
-                                        FORMAT_ONE_BIT_MSB_PAL,
f325b2
-                                        basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()));
f325b2
+                                        FORMAT_ONE_BIT_MSB_PAL);
f325b2
         mpBmp32bpp = createBitmapDevice( aSize,
f325b2
                                          true,
f325b2
-                                         FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
f325b2
-                                         basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()));
f325b2
+                                         FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA);
f325b2
 
f325b2
         OUString aSvg( "m 0 0h5v10h5v-5h-10z" );
f325b2
 
f325b2
@@ -169,7 +164,6 @@ public:
f325b2
 //            nFormat = Format::OneBitMsbGrey; // FIXME - un-comment me to crash hard.
f325b2
             xMask = createBitmapDevice( aSize, false /* bTopDown */,
f325b2
                                         nFormat,
f325b2
-                                         basebmp::getBitmapDeviceStrideForWidth( nFormat, aSize.getX()),
f325b2
                                          PaletteMemorySharedVector(
f325b2
                                                 new std::vector< basebmp::Color >(aDevPal) ) );
f325b2
             // wipe to copy everything.
f325b2
@@ -183,17 +177,13 @@ public:
f325b2
                                     DrawMode::DrawMode_PAINT );
f325b2
 
f325b2
             xBitmap = createBitmapDevice( aSize, false,
f325b2
-                                          FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX,
f325b2
-                                          basebmp::getBitmapDeviceStrideForWidth(
f325b2
-                                                FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX, aSize.getX() ) );
f325b2
+                                          FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX );
f325b2
             xBitmap->clear(Color(0x80808080));
f325b2
         }
f325b2
         { // mpOutput & mpBitmap
f325b2
             const basegfx::B2ISize aSize(9, 9);
f325b2
             xOutput = createBitmapDevice( aSize, false,
f325b2
-                                          FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX,
f325b2
-                                          basebmp::getBitmapDeviceStrideForWidth(
f325b2
-                                                FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX, aSize.getX()) );
f325b2
+                                          FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX);
f325b2
             xOutput->clear(Color(0xffffffff));
f325b2
         }
f325b2
 
f325b2
diff --git a/basebmp/test/bmptest.cxx b/basebmp/test/bmptest.cxx
f325b2
index 30644fb..f6ea0b6 100644
f325b2
--- a/basebmp/test/bmptest.cxx
f325b2
+++ b/basebmp/test/bmptest.cxx
f325b2
@@ -148,23 +148,19 @@ public:
f325b2
     void setUp() SAL_OVERRIDE
f325b2
     {
f325b2
         const basegfx::B2ISize aSize(10,10);
f325b2
-        sal_Int32 nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX());
f325b2
         mpDevice1bpp = createBitmapDevice( aSize,
f325b2
                                            true,
f325b2
-                                           FORMAT_ONE_BIT_MSB_PAL, nStride );
f325b2
-        nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX());
f325b2
+                                           FORMAT_ONE_BIT_MSB_PAL );
f325b2
         mpDevice32bpp = createBitmapDevice( aSize,
f325b2
                                             true,
f325b2
-                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, nStride );
f325b2
+                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA);
f325b2
 
f325b2
-        nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX());
f325b2
         mpBmp1bpp = createBitmapDevice( aSize,
f325b2
                                         true,
f325b2
-                                        FORMAT_ONE_BIT_MSB_PAL, nStride );
f325b2
-        nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX());
f325b2
+                                        FORMAT_ONE_BIT_MSB_PAL);
f325b2
         mpBmp32bpp = createBitmapDevice( aSize,
f325b2
                                          true,
f325b2
-                                         FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, nStride );
f325b2
+                                         FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA );
f325b2
 
f325b2
         OUString aSvg( "m 0 0h5v10h5v-5h-10z" );
f325b2
 
f325b2
diff --git a/basebmp/test/cliptest.cxx b/basebmp/test/cliptest.cxx
f325b2
index 13ad48c..8526964 100644
f325b2
--- a/basebmp/test/cliptest.cxx
f325b2
+++ b/basebmp/test/cliptest.cxx
f325b2
@@ -154,10 +154,9 @@ private:
f325b2
 
f325b2
     void implTestMaskColorClip(const BitmapDeviceSharedPtr& rDevice)
f325b2
     {
f325b2
-        sal_Int32 nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_EIGHT_BIT_GREY, rDevice->getSize().getX());
f325b2
         BitmapDeviceSharedPtr pBmp( createBitmapDevice( rDevice->getSize(),
f325b2
                                                         true,
f325b2
-                                                        FORMAT_EIGHT_BIT_GREY, nStride ));
f325b2
+                                                        FORMAT_EIGHT_BIT_GREY ));
f325b2
 
f325b2
         OUString aSvg( "m 0 0h5v10h5v-5h-10z" );
f325b2
 
f325b2
@@ -189,18 +188,15 @@ public:
f325b2
     void setUp() SAL_OVERRIDE
f325b2
     {
f325b2
         const basegfx::B2ISize aSize(11,11);
f325b2
-        sal_Int32 nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_GREY, aSize.getX());
f325b2
         mpClipMask = createBitmapDevice( aSize,
f325b2
                                          true,
f325b2
-                                         FORMAT_ONE_BIT_MSB_GREY, nStride );
f325b2
-        nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX());
f325b2
+                                         FORMAT_ONE_BIT_MSB_GREY );
f325b2
         mpDevice1bpp = createBitmapDevice( aSize,
f325b2
                                            true,
f325b2
-                                           FORMAT_ONE_BIT_MSB_PAL, nStride );
f325b2
-        nStride = basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX());
f325b2
+                                           FORMAT_ONE_BIT_MSB_PAL );
f325b2
         mpDevice32bpp = createBitmapDevice( aSize,
f325b2
                                            true,
f325b2
-                                           FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, nStride );
f325b2
+                                           FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA );
f325b2
 
f325b2
         OUString aSvg( "m 0 0 h5 l5 5 v5 h-5 l-5-5 z" );
f325b2
         basegfx::B2DPolyPolygon aPoly;
f325b2
diff --git a/basebmp/test/filltest.cxx b/basebmp/test/filltest.cxx
f325b2
index 875a27d..067ec24 100644
f325b2
--- a/basebmp/test/filltest.cxx
f325b2
+++ b/basebmp/test/filltest.cxx
f325b2
@@ -211,12 +211,10 @@ public:
f325b2
         const basegfx::B2ISize aSize(11,11);
f325b2
         mpDevice1bpp = createBitmapDevice( aSize,
f325b2
                                            true,
f325b2
-                                           FORMAT_ONE_BIT_MSB_PAL,
f325b2
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()));
f325b2
+                                           FORMAT_ONE_BIT_MSB_PAL );
f325b2
         mpDevice32bpp = createBitmapDevice( aSize,
f325b2
                                            true,
f325b2
-                                           FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
f325b2
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()));
f325b2
+                                           FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA );
f325b2
     }
f325b2
 
f325b2
     void testRectFill()
f325b2
diff --git a/basebmp/test/linetest.cxx b/basebmp/test/linetest.cxx
f325b2
index 731158e..f6a3909 100644
f325b2
--- a/basebmp/test/linetest.cxx
f325b2
+++ b/basebmp/test/linetest.cxx
f325b2
@@ -151,12 +151,10 @@ public:
f325b2
         const basegfx::B2ISize aSize(11,11);
f325b2
         mpDevice1bpp = createBitmapDevice( aSize,
f325b2
                                            true,
f325b2
-                                           FORMAT_ONE_BIT_MSB_PAL,
f325b2
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()) );
f325b2
+                                           FORMAT_ONE_BIT_MSB_PAL );
f325b2
         mpDevice32bpp = createBitmapDevice( aSize,
f325b2
                                            true,
f325b2
-                                           FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
f325b2
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()) );
f325b2
+                                           FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA );
f325b2
     }
f325b2
 
f325b2
     void testCornerCases()
f325b2
@@ -165,8 +163,7 @@ public:
f325b2
         BitmapDeviceSharedPtr pDevice = createBitmapDevice(
f325b2
             aSize,
f325b2
             true,
f325b2
-            FORMAT_ONE_BIT_MSB_PAL,
f325b2
-            basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()) );
f325b2
+            FORMAT_ONE_BIT_MSB_PAL );
f325b2
 
f325b2
         const basegfx::B2IPoint aPt1(0,0);
f325b2
         const basegfx::B2IPoint aPt2(10,10);
f325b2
@@ -182,8 +179,7 @@ public:
f325b2
         pDevice = createBitmapDevice(
f325b2
             aSize2,
f325b2
             true,
f325b2
-            FORMAT_ONE_BIT_MSB_PAL,
f325b2
-            basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()));
f325b2
+            FORMAT_ONE_BIT_MSB_PAL );
f325b2
 
f325b2
         CPPUNIT_ASSERT_MESSAGE("only pixel cleared",
f325b2
                                 pDevice->getPixelData(aPt1) == 0);
f325b2
diff --git a/basebmp/test/masktest.cxx b/basebmp/test/masktest.cxx
f325b2
index 7b4559c..d53ba72 100644
f325b2
--- a/basebmp/test/masktest.cxx
f325b2
+++ b/basebmp/test/masktest.cxx
f325b2
@@ -104,17 +104,14 @@ public:
f325b2
         const basegfx::B2ISize aSize(10,10);
f325b2
         mpDevice1bpp = createBitmapDevice( aSize,
f325b2
                                            true,
f325b2
-                                           FORMAT_ONE_BIT_MSB_PAL,
f325b2
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()) );
f325b2
+                                           FORMAT_ONE_BIT_MSB_PAL );
f325b2
         mpDevice32bpp = createBitmapDevice( aSize,
f325b2
                                             true,
f325b2
-                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
f325b2
-                                            basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()) );
f325b2
+                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA );
f325b2
 
f325b2
         mpMask = createBitmapDevice( aSize,
f325b2
                                      true,
f325b2
-                                     FORMAT_EIGHT_BIT_GREY,
f325b2
-                                     basebmp::getBitmapDeviceStrideForWidth(FORMAT_EIGHT_BIT_GREY, aSize.getX()) );
f325b2
+                                     FORMAT_EIGHT_BIT_GREY );
f325b2
 
f325b2
         OUString aSvg( "m 0 0h5v10h5v-5h-10z" );
f325b2
 
f325b2
diff --git a/basebmp/test/polytest.cxx b/basebmp/test/polytest.cxx
f325b2
index 60746d7..a0371eb 100644
f325b2
--- a/basebmp/test/polytest.cxx
f325b2
+++ b/basebmp/test/polytest.cxx
f325b2
@@ -296,12 +296,10 @@ public:
f325b2
         const basegfx::B2ISize aSize(10,10);
f325b2
         mpDevice1bpp = createBitmapDevice( aSize,
f325b2
                                            true,
f325b2
-                                           FORMAT_ONE_BIT_MSB_PAL,
f325b2
-                                           basebmp::getBitmapDeviceStrideForWidth(FORMAT_ONE_BIT_MSB_PAL, aSize.getX()));
f325b2
+                                           FORMAT_ONE_BIT_MSB_PAL );
f325b2
         mpDevice32bpp = createBitmapDevice( aSize,
f325b2
                                             true,
f325b2
-                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA,
f325b2
-                                            basebmp::getBitmapDeviceStrideForWidth(FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA, aSize.getX()));
f325b2
+                                            FORMAT_THIRTYTWO_BIT_TC_MASK_BGRA );
f325b2
     }
f325b2
 
f325b2
     void testEmpty()
f325b2
diff --git a/include/basebmp/bitmapdevice.hxx b/include/basebmp/bitmapdevice.hxx
f325b2
index 5953741..6071c79 100644
f325b2
--- a/include/basebmp/bitmapdevice.hxx
f325b2
+++ b/include/basebmp/bitmapdevice.hxx
f325b2
@@ -668,8 +668,7 @@ sal_Int32 BASEBMP_DLLPUBLIC getBitmapDeviceStrideForWidth(Format nScanlineFormat
f325b2
  */
f325b2
 BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC createBitmapDevice( const basegfx::B2IVector& rSize,
f325b2
                                                             bool                      bTopDown,
f325b2
-                                                            Format                    nScanlineFormat,
f325b2
-                                                            sal_Int32                 nScanlineStride );
f325b2
+                                                            Format                    nScanlineFormat );
f325b2
 
f325b2
 /** Function to create a BitmapDevice for given scanline format
f325b2
     with the given palette
f325b2
@@ -681,7 +680,6 @@ BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC createBitmapDevice( const basegfx::B2IVe
f325b2
 BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC createBitmapDevice( const basegfx::B2IVector&        rSize,
f325b2
                                                             bool                             bTopDown,
f325b2
                                                             Format                           nScanlineFormat,
f325b2
-                                                            sal_Int32                        nScanlineStride,
f325b2
                                                             const PaletteMemorySharedVector& rPalette );
f325b2
 
f325b2
 /** Function to create a BitmapDevice for given scanline format
f325b2
@@ -693,7 +691,6 @@ BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC createBitmapDevice( const basegfx::B2IVe
f325b2
 BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC createBitmapDevice( const basegfx::B2IVector&        rSize,
f325b2
                                                             bool                             bTopDown,
f325b2
                                                             Format                           nScanlineFormat,
f325b2
-                                                            sal_Int32                        nScanlineStride,
f325b2
                                                             const RawMemorySharedArray&      rMem,
f325b2
                                                             const PaletteMemorySharedVector& rPalette );
f325b2
 
f325b2
@@ -725,8 +722,8 @@ BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC subsetBitmapDevice( const BitmapDeviceSh
f325b2
     copied, only the size can be varied. Note that the prototype's
f325b2
     bitmap content is not copied, only a palette (if any).
f325b2
  */
f325b2
-BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC cloneBitmapDevice( const basegfx::B2IVector&    rSize,
f325b2
-                                                           const BitmapDeviceSharedPtr& rProto );
f325b2
+BitmapDeviceSharedPtr BASEBMP_DLLPUBLIC cloneBitmapDevice(const basegfx::B2IVector& rSize,
f325b2
+                                                          const BitmapDeviceSharedPtr& rProto);
f325b2
 
f325b2
 }
f325b2
 
f325b2
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
f325b2
index 87435f5..b535187 100644
f325b2
--- a/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
f325b2
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport.cxx
f325b2
@@ -771,7 +771,7 @@ DECLARE_OOXMLIMPORT_TEST(testN777345, "n777345.docx")
f325b2
     Graphic aGraphic(xGraphic);
f325b2
     // If this changes later, feel free to update it, but make sure it's not
f325b2
     // the checksum of a white/transparent placeholder rectangle.
f325b2
-    CPPUNIT_ASSERT_EQUAL(BitmapChecksum(3652741777587093783), aGraphic.GetChecksum());
f325b2
+    CPPUNIT_ASSERT_EQUAL(BitmapChecksum(SAL_CONST_UINT64(12149824012634930130)), aGraphic.GetChecksum());
f325b2
 #endif
f325b2
 }
f325b2
 
f325b2
diff --git a/vcl/headless/svpbmp.cxx b/vcl/headless/svpbmp.cxx
f325b2
index 901526e..92c2835 100644
f325b2
--- a/vcl/headless/svpbmp.cxx
f325b2
+++ b/vcl/headless/svpbmp.cxx
f325b2
@@ -52,9 +52,8 @@ bool SvpSalBitmap::Create( const Size& rSize,
f325b2
         aSize.setX( 1 );
f325b2
     if( aSize.getY() == 0 )
f325b2
         aSize.setY( 1 );
f325b2
-    sal_Int32 nStride = getBitmapDeviceStrideForWidth(nFormat, aSize.getX());
f325b2
     if( nBitCount > 8 )
f325b2
-        m_aBitmap = createBitmapDevice( aSize, false, nFormat, nStride );
f325b2
+        m_aBitmap = createBitmapDevice( aSize, false, nFormat );
f325b2
     else
f325b2
     {
f325b2
         // prepare palette
f325b2
@@ -67,7 +66,7 @@ bool SvpSalBitmap::Create( const Size& rSize,
f325b2
             const BitmapColor& rCol = rPalette[i];
f325b2
             (*pPalette)[i] = basebmp::Color( rCol.GetRed(), rCol.GetGreen(), rCol.GetBlue() );
f325b2
         }
f325b2
-        m_aBitmap = createBitmapDevice( aSize, false, nFormat, nStride,
f325b2
+        m_aBitmap = createBitmapDevice( aSize, false, nFormat,
f325b2
                                         basebmp::RawMemorySharedArray(),
f325b2
                                         basebmp::PaletteMemorySharedVector( pPalette )
f325b2
                                         );
f325b2
@@ -336,7 +335,6 @@ void SvpSalBitmap::ReleaseBuffer( BitmapBuffer* pBuffer, BitmapAccessMode nMode
f325b2
             m_aBitmap = basebmp::createBitmapDevice( m_aBitmap->getSize(),
f325b2
                                                      m_aBitmap->isTopDown(),
f325b2
                                                      m_aBitmap->getScanlineFormat(),
f325b2
-                                                     m_aBitmap->getScanlineStride(),
f325b2
                                                      m_aBitmap->getBuffer(),
f325b2
                                                      pPal );
f325b2
         }
f325b2
diff --git a/vcl/headless/svpframe.cxx b/vcl/headless/svpframe.cxx
f325b2
index e1218d7..22ffaef 100644
f325b2
--- a/vcl/headless/svpframe.cxx
f325b2
+++ b/vcl/headless/svpframe.cxx
f325b2
@@ -292,8 +292,7 @@ void SvpSalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, sal_u
f325b2
             aFrameSize.setX( 1 );
f325b2
         if( aFrameSize.getY() == 0 )
f325b2
             aFrameSize.setY( 1 );
f325b2
-        sal_Int32 nStride = basebmp::getBitmapDeviceStrideForWidth(m_nScanlineFormat, aFrameSize.getX());
f325b2
-        m_aFrame = createBitmapDevice( aFrameSize, m_bTopDown, m_nScanlineFormat, nStride );
f325b2
+        m_aFrame = createBitmapDevice( aFrameSize, m_bTopDown, m_nScanlineFormat );
f325b2
         if (m_bDamageTracking)
f325b2
             m_aFrame->setDamageTracker(
f325b2
                 basebmp::IBitmapDeviceDamageTrackerSharedPtr( new DamageTracker ) );
f325b2
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
f325b2
index 0afce7e..cbe3dc1 100644
f325b2
--- a/vcl/headless/svpgdi.cxx
f325b2
+++ b/vcl/headless/svpgdi.cxx
f325b2
@@ -173,14 +173,14 @@ bool SvpSalGraphics::drawAlphaRect(long nX, long nY, long nWidth, long nHeight,
f325b2
         return false;
f325b2
     }
f325b2
 
f325b2
-    cairo_t* cr = createCairoContext(m_aDevice);
f325b2
+    cairo_t* cr = createCairoContext(m_aOrigDevice);
f325b2
     if (!cr)
f325b2
         return bRet;
f325b2
 
f325b2
-    if (!m_aDevice->isTopDown())
f325b2
+    if (!m_aOrigDevice->isTopDown())
f325b2
     {
f325b2
         cairo_scale(cr, 1, -1.0);
f325b2
-        cairo_translate(cr, 0.0, -m_aDevice->getSize().getY());
f325b2
+        cairo_translate(cr, 0.0, -m_aOrigDevice->getSize().getY());
f325b2
     }
f325b2
 
f325b2
     clipRegion(cr);
f325b2
@@ -193,7 +193,7 @@ bool SvpSalGraphics::drawAlphaRect(long nX, long nY, long nWidth, long nHeight,
f325b2
     cairo_rectangle(cr, nX, nY, nWidth, nHeight);
f325b2
 
f325b2
     cairo_rectangle_int_t extents;
f325b2
-    basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aDevice->getDamageTracker());
f325b2
+    basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aOrigDevice->getDamageTracker());
f325b2
     if (xDamageTracker)
f325b2
         extents = getFillDamage(cr);
f325b2
 
f325b2
@@ -731,14 +731,14 @@ bool SvpSalGraphics::drawPolyPolygon(const basegfx::B2DPolyPolygon& rPolyPoly, d
f325b2
         return false;
f325b2
     }
f325b2
 
f325b2
-    cairo_t* cr = createCairoContext(m_aDevice);
f325b2
+    cairo_t* cr = createCairoContext(m_aOrigDevice);
f325b2
     if (!cr)
f325b2
         return false;
f325b2
 
f325b2
-    if (!m_aDevice->isTopDown())
f325b2
+    if (!m_aOrigDevice->isTopDown())
f325b2
     {
f325b2
         cairo_scale(cr, 1, -1.0);
f325b2
-        cairo_translate(cr, 0.0, -m_aDevice->getSize().getY());
f325b2
+        cairo_translate(cr, 0.0, -m_aOrigDevice->getSize().getY());
f325b2
     }
f325b2
 
f325b2
     clipRegion(cr);
f325b2
@@ -752,7 +752,7 @@ bool SvpSalGraphics::drawPolyPolygon(const basegfx::B2DPolyPolygon& rPolyPoly, d
f325b2
         AddPolygonToPath(cr, *pPoly, true);
f325b2
 
f325b2
     cairo_rectangle_int_t extents;
f325b2
-    basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aDevice->getDamageTracker());
f325b2
+    basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aOrigDevice->getDamageTracker());
f325b2
     if (xDamageTracker)
f325b2
         extents = getFillDamage(cr);
f325b2
 
f325b2
@@ -891,11 +891,12 @@ SalBitmap* SvpSalGraphics::getBitmap( long nX, long nY, long nWidth, long nHeigh
f325b2
 {
f325b2
     SvpSalBitmap* pBitmap = new SvpSalBitmap();
f325b2
 
f325b2
-    if (m_aDevice)
f325b2
+    if (m_aOrigDevice)
f325b2
     {
f325b2
         basebmp::BitmapDeviceSharedPtr aCopy;
f325b2
         aCopy = cloneBitmapDevice(basegfx::B2IVector(nWidth, nHeight),
f325b2
-                                   m_aDevice);
f325b2
+                                   m_aOrigDevice);
f325b2
+        basegfx::B2IVector size = aCopy->getSize();
f325b2
         basegfx::B2IBox aSrcRect( nX, nY, nX+nWidth, nY+nHeight );
f325b2
         basegfx::B2IBox aDestRect( 0, 0, nWidth, nHeight );
f325b2
 
f325b2
@@ -941,12 +942,12 @@ void SvpSalGraphics::invert( long nX, long nY, long nWidth, long nHeight, SalInv
f325b2
     }
f325b2
     else if ( nFlags & SAL_INVERT_50 )
f325b2
     {
f325b2
-        if (cairo_t* cr = createCairoContext(m_aDevice))
f325b2
+        if (cairo_t* cr = createCairoContext(m_aOrigDevice))
f325b2
         {
f325b2
-            if (!m_aDevice->isTopDown())
f325b2
+            if (!m_aOrigDevice->isTopDown())
f325b2
             {
f325b2
                 cairo_scale(cr, 1, -1.0);
f325b2
-                cairo_translate(cr, 0.0, -m_aDevice->getSize().getY());
f325b2
+                cairo_translate(cr, 0.0, -m_aOrigDevice->getSize().getY());
f325b2
             }
f325b2
 
f325b2
             clipRegion(cr);
f325b2
@@ -954,7 +955,7 @@ void SvpSalGraphics::invert( long nX, long nY, long nWidth, long nHeight, SalInv
f325b2
             cairo_pattern_t *pattern = create_stipple();
f325b2
 
f325b2
             cairo_rectangle_int_t extents;
f325b2
-            basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aDevice->getDamageTracker());
f325b2
+            basebmp::IBitmapDeviceDamageTrackerSharedPtr xDamageTracker(m_aOrigDevice->getDamageTracker());
f325b2
 
f325b2
             cairo_rectangle(cr, nX, nY, nWidth, nHeight);
f325b2
 
f325b2
@@ -1075,7 +1076,7 @@ bool SvpSalGraphics::supportsOperation(OutDevSupportType eType) const
f325b2
 #if ENABLE_CAIRO_CANVAS
f325b2
     if (m_aDrawMode == basebmp::DrawMode_XOR)
f325b2
         return false;
f325b2
-    if (!isCairoCompatible(m_aDevice))
f325b2
+    if (!isCairoCompatible(m_aOrigDevice))
f325b2
         return false;
f325b2
     switch (eType)
f325b2
     {
f325b2
diff --git a/vcl/headless/svptextrender.cxx b/vcl/headless/svptextrender.cxx
f325b2
index f143da1..2cd51ef 100644
f325b2
--- a/vcl/headless/svptextrender.cxx
f325b2
+++ b/vcl/headless/svptextrender.cxx
f325b2
@@ -152,7 +152,7 @@ BitmapDeviceSharedPtr SvpGlyphPeer::GetGlyphBmp( ServerFont& rServerFont,
f325b2
                 pGcpHelper->maRawBitmap.mnScanlineSize,
f325b2
                 pGcpHelper->maRawBitmap.mnHeight );
f325b2
             static PaletteMemorySharedVector aDummyPAL;
f325b2
-            pGcpHelper->maBitmapDev = createBitmapDevice( aSize, true, nBmpFormat, aSize.getX(), pGcpHelper->maRawBitmap.mpBits, aDummyPAL );
f325b2
+            pGcpHelper->maBitmapDev = createBitmapDevice( aSize, true, nBmpFormat, pGcpHelper->maRawBitmap.mpBits, aDummyPAL );
f325b2
         }
f325b2
 
f325b2
         rGlyphData.ExtDataRef().meInfo = nBmpFormat;
f325b2
diff --git a/vcl/headless/svpvd.cxx b/vcl/headless/svpvd.cxx
f325b2
index 1e4050a..1c4237b 100644
f325b2
--- a/vcl/headless/svpvd.cxx
f325b2
+++ b/vcl/headless/svpvd.cxx
f325b2
@@ -71,21 +71,20 @@ bool SvpSalVirtualDevice::SetSizeUsingBuffer( long nNewDX, long nNewDY,
f325b2
         SvpSalInstance* pInst = SvpSalInstance::s_pDefaultInstance;
f325b2
         assert( pInst );
f325b2
         basebmp::Format nFormat = pInst->getFormatForBitCount( m_nBitCount );
f325b2
-        sal_Int32 nStride = basebmp::getBitmapDeviceStrideForWidth(nFormat, aDevSize.getX());
f325b2
 
f325b2
         if ( m_nBitCount == 1 )
f325b2
         {
f325b2
             std::vector< basebmp::Color > aDevPal(2);
f325b2
             aDevPal[0] = basebmp::Color( 0, 0, 0 );
f325b2
             aDevPal[1] = basebmp::Color( 0xff, 0xff, 0xff );
f325b2
-            m_aDevice = createBitmapDevice( aDevSize, bTopDown, nFormat, nStride,
f325b2
+            m_aDevice = createBitmapDevice( aDevSize, bTopDown, nFormat,
f325b2
                                             PaletteMemorySharedVector( new std::vector< basebmp::Color >(aDevPal) ) );
f325b2
         }
f325b2
         else
f325b2
         {
f325b2
             m_aDevice = pBuffer ?
f325b2
-                          createBitmapDevice( aDevSize, bTopDown, nFormat, nStride, pBuffer, PaletteMemorySharedVector() )
f325b2
-                        : createBitmapDevice( aDevSize, bTopDown, nFormat, nStride );
f325b2
+                          createBitmapDevice( aDevSize, bTopDown, nFormat, pBuffer, PaletteMemorySharedVector() )
f325b2
+                        : createBitmapDevice( aDevSize, bTopDown, nFormat );
f325b2
         }
f325b2
 
f325b2
         // update device in existing graphics
f325b2
diff --git a/vcl/qa/cppunit/BitmapTest.cxx b/vcl/qa/cppunit/BitmapTest.cxx
f325b2
index a5437c1..384afc7 100644
f325b2
--- a/vcl/qa/cppunit/BitmapTest.cxx
f325b2
+++ b/vcl/qa/cppunit/BitmapTest.cxx
f325b2
@@ -51,17 +51,12 @@ void BitmapTest::testConvert()
f325b2
     {
f325b2
         Bitmap::ScopedReadAccess pReadAccess(aBitmap);
f325b2
         CPPUNIT_ASSERT_EQUAL(static_cast<sal_uInt16>(8), pReadAccess->GetBitCount());
f325b2
-#if defined WNT
f325b2
-        if (!OpenGLHelper::isVCLOpenGLEnabled())
f325b2
-        {
f325b2
-            // GDI Scanlines padded to DWORD multiples, it seems
f325b2
-            CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(12), pReadAccess->GetScanlineSize());
f325b2
-        }
f325b2
-        else
f325b2
+#if defined MACOSX || defined IOS
f325b2
+        //it would be nice to find and change the stride for quartz to be the same as everyone else
f325b2
+        CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(10), pReadAccess->GetScanlineSize());
f325b2
+#else
f325b2
+        CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(12), pReadAccess->GetScanlineSize());
f325b2
 #endif
f325b2
-        {
f325b2
-            CPPUNIT_ASSERT_EQUAL(static_cast<sal_uLong>(10), pReadAccess->GetScanlineSize());
f325b2
-        }
f325b2
         CPPUNIT_ASSERT(pReadAccess->HasPalette());
f325b2
         const BitmapColor& rColor = pReadAccess->GetPaletteColor(pReadAccess->GetPixelIndex(1, 1));
f325b2
         CPPUNIT_ASSERT_EQUAL(sal_Int32(204), sal_Int32(rColor.GetRed()));
f325b2
diff --git a/vcl/unx/gtk/window/gtksalframe.cxx b/vcl/unx/gtk/window/gtksalframe.cxx
f325b2
index a28c144..eef48cd 100644
f325b2
--- a/vcl/unx/gtk/window/gtksalframe.cxx
f325b2
+++ b/vcl/unx/gtk/window/gtksalframe.cxx
f325b2
@@ -2063,9 +2063,8 @@ void GtkSalFrame::AllocateFrame()
f325b2
             aFrameSize.setX( 1 );
f325b2
         if( aFrameSize.getY() == 0 )
f325b2
             aFrameSize.setY( 1 );
f325b2
-        int cairo_stride = cairo_format_stride_for_width(CAIRO_FORMAT_RGB24, aFrameSize.getX());
f325b2
         m_aFrame = basebmp::createBitmapDevice(aFrameSize, true,
f325b2
-                                               basebmp::FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX, cairo_stride);
f325b2
+                                               basebmp::FORMAT_THIRTYTWO_BIT_TC_MASK_BGRX);
f325b2
         m_aFrame->setDamageTracker(
f325b2
             basebmp::IBitmapDeviceDamageTrackerSharedPtr(new DamageTracker(*this)) );
f325b2
         SAL_INFO("vcl.gtk3", "allocated m_aFrame size of " << maGeometry.nWidth << " x " << maGeometry.nHeight);
f325b2
-- 
f325b2
2.5.0
f325b2