[Libreoffice-commits] core.git: Branch 'libreoffice-4-1' - vcl/source

Thorsten Behrens tbehrens at suse.com
Wed Jun 26 15:07:55 PDT 2013


 vcl/source/gdi/bitmapex.cxx |   34 +++++-----------------------------
 1 file changed, 5 insertions(+), 29 deletions(-)

New commits:
commit 7156f76d186cf7bff95e2959c829e7623ef0ee62
Author: Thorsten Behrens <tbehrens at suse.com>
Date:   Fri Jun 14 13:26:43 2013 +0200

    Fixup alpha bitmap generation for Windows.
    
    This improves upon d6f58fd25eeca84a94528409a05b80aa5172b8b8 by
    using the BitmapEx ctor instead of manual initialisation. Several
    EMF+ files would otherwise show up horribly mangled on Windows.
    
    Change-Id: I1808cb45818f3f0118653164c83c49d6134b9324
    (cherry picked from commit fefab3bb38f55471d9fa9316d1249ad00adefc37)
    (cherry picked from commit 77b273ee3a2df87664262418c360d3a4a0ed48ea)
    Reviewed-on: https://gerrit.libreoffice.org/4473
    Reviewed-by: Fridrich Strba <fridrich at documentfoundation.org>
    Tested-by: Fridrich Strba <fridrich at documentfoundation.org>

diff --git a/vcl/source/gdi/bitmapex.cxx b/vcl/source/gdi/bitmapex.cxx
index 3e0d331..fb3cc39 100644
--- a/vcl/source/gdi/bitmapex.cxx
+++ b/vcl/source/gdi/bitmapex.cxx
@@ -885,9 +885,6 @@ bool BitmapEx::Create( const ::com::sun::star::uno::Reference<
                        ::com::sun::star::rendering::XBitmapCanvas > &xBitmapCanvas,
                        const Size &rSize )
 {
-    SetEmpty();
-    Size aSize( rSize );
-
     uno::Reference< beans::XFastPropertySet > xFastPropertySet( xBitmapCanvas, uno::UNO_QUERY );
     if( xFastPropertySet.get() )
     {
@@ -907,38 +904,17 @@ bool BitmapEx::Create( const ::com::sun::star::uno::Reference<
     pSalBmp = ImplGetSVData()->mpDefInst->CreateSalBitmap();
     pSalMask = ImplGetSVData()->mpDefInst->CreateSalBitmap();
 
-    if( pSalBmp->Create( xBitmapCanvas, aSize ) )
+    Size aLocalSize(rSize);
+    if( pSalBmp->Create( xBitmapCanvas, aLocalSize ) )
     {
-#ifdef CLAMP_BITDEPTH_PARANOIA
-        // did we get alpha mixed up in the bitmap itself
-        // eg. Cairo Canvas ... yes performance of this is awful.
-        if( pSalBmp->GetBitCount() > 24 )
-        {
-            // Format convert the pixels with generic code
-            Bitmap aSrcPixels( pSalBmp );
-            aBitmap = Bitmap( rSize, 24 );
-            BitmapReadAccess aSrcRead( aSrcPixels );
-            BitmapWriteAccess aDestWrite( aBitmap );
-            aDestWrite.CopyBuffer( aSrcRead );
-        }
-        else
-#endif
-            aBitmap = Bitmap( pSalBmp );
-
-        aBitmapSize = rSize;
-        if ( pSalMask->Create( xBitmapCanvas, aSize, true ) )
+        if ( pSalMask->Create( xBitmapCanvas, aLocalSize, true ) )
         {
-            aMask = Bitmap( pSalMask );
-            bAlpha = sal_True;
-            aBitmapSize = rSize;
-            eTransparent = !aMask ? TRANSPARENT_NONE : TRANSPARENT_BITMAP;
-
+            *this = BitmapEx(Bitmap(pSalBmp), Bitmap(pSalMask) );
             return true;
         }
         else
         {
-            bAlpha = sal_False;
-            eTransparent = TRANSPARENT_NONE;
+            *this = BitmapEx(Bitmap(pSalBmp));
             return true;
         }
     }


More information about the Libreoffice-commits mailing list