vcl/source/gdi/bitmapex.cxx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+)
New commits: commit f03352a1c98d150d7954b8684498f834dd67e036 Author: Thorsten Behrens <tbehr...@suse.com> Date: Wed Jan 23 11:42:55 2013 +0100 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 Reviewed-on: https://gerrit.libreoffice.org/1822 Reviewed-by: Radek DoulÃk <r...@novell.com> Tested-by: Radek DoulÃk <r...@novell.com> diff --git a/vcl/source/gdi/bitmapex.cxx b/vcl/source/gdi/bitmapex.cxx index d1d4262..133448c 100644 --- a/vcl/source/gdi/bitmapex.cxx +++ b/vcl/source/gdi/bitmapex.cxx @@ -904,6 +904,24 @@ SvStream& operator>>( SvStream& rIStm, BitmapEx& rBitmapEx ) 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() ) {
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits