[PATCH] Change in core[libreoffice-4-0]: Fix fdo#59616 - ensure BitmapEx has same-sized subbitmaps

Thorsten Behrens (via Code Review) gerrit at gerrit.libreoffice.org
Wed Jan 23 02:50:12 PST 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/1821

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/21/1821/1

Fix fdo#59616 - ensure BitmapEx has same-sized subbitmaps

Lots of code relies on the fact that the two bitmaps inside a
BitmapEx actually have the same size. Enforce that convention during
import.

Change-Id: I436ccc33b06c627cd6347747d22c24bfaf7ca932
---
M vcl/source/gdi/bitmapex.cxx
1 file changed, 18 insertions(+), 0 deletions(-)



diff --git a/vcl/source/gdi/bitmapex.cxx b/vcl/source/gdi/bitmapex.cxx
index e717d0b..f699432 100644
--- a/vcl/source/gdi/bitmapex.cxx
+++ b/vcl/source/gdi/bitmapex.cxx
@@ -806,6 +806,24 @@
 
                 if( !!aMask)
                 {
+                    // fdo#59616 enforce same size for both mask and content
+                    if( aMask.GetSizePixel() != aBmp.GetSizePixel() )
+                    {
+                        Bitmap aNewMask;
+                        const Size aNominalSize=aBmp.GetSizePixel();
+                        BitmapReadAccess aAcc(aMask);
+                        if( aAcc.HasPalette() )
+                            aNewMask = Bitmap(aNominalSize,
+                                              aMask.GetBitCount(),
+                                              &aAcc.GetPalette());
+                        else
+                            aNewMask = Bitmap(aNominalSize,
+                                              aMask.GetBitCount());
+                        const Rectangle aCopyArea(Point(0,0), aNominalSize);
+                        aNewMask.CopyPixel(aCopyArea, aCopyArea, &aMask);
+                        aMask = aNewMask;
+                    }
+
                     // do we have an alpha mask?
                     if( ( 8 == aMask.GetBitCount() ) && aMask.HasGreyPalette() )
                     {

-- 
To view, visit https://gerrit.libreoffice.org/1821
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I436ccc33b06c627cd6347747d22c24bfaf7ca932
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: libreoffice-4-0
Gerrit-Owner: Thorsten Behrens <tbehrens at suse.com>



More information about the LibreOffice mailing list