[Libreoffice-commits] core.git: include/vcl vcl/source

Chris Sherlock chris.sherlock79 at gmail.com
Mon Mar 24 05:03:17 PDT 2014


 include/vcl/outdev.hxx     |    2 ++
 include/vcl/print.hxx      |    1 +
 vcl/source/gdi/outdev2.cxx |   28 +++++++++++++++++-----------
 3 files changed, 20 insertions(+), 11 deletions(-)

New commits:
commit ca949408b89c990edb6321d59db9eed6d29d21a7
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date:   Sun Mar 23 15:13:20 2014 +1100

    fdo#74702 ImplDrawBitmap functionality moved to protected function
    
    OutputDevice::ImplDrawBitmap() has functionality that cannot be used
    by printers. I have moved that into a protected function, ScaleBitmap()
    
    Change-Id: Ia1297e259283b8b2f4cf069e3a64a574592a1846
    Reviewed-on: https://gerrit.libreoffice.org/8720
    Tested-by: Norbert Thiebaud <nthiebaud at gmail.com>
    Reviewed-by: Norbert Thiebaud <nthiebaud at gmail.com>

diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index c1ac7f3..8873150 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -832,6 +832,8 @@ protected:
                                     basegfx::B2DRange &aVisibleRange,
                                     double &fMaximumArea);
 
+    virtual void                ScaleBitmap ( Bitmap &rBmp, SalTwoRect &rPosAry );
+
 private:
     typedef void ( OutputDevice::* FontUpdateHandler_t )( bool );
 
diff --git a/include/vcl/print.hxx b/include/vcl/print.hxx
index 93deb72..01e7290 100644
--- a/include/vcl/print.hxx
+++ b/include/vcl/print.hxx
@@ -274,6 +274,7 @@ public:
 
 protected:
     long                        ImplGetGradientStepCount( long nMinRect );
+    void                        ScaleBitmap ( Bitmap&, SalTwoRect& ) { };
 
 public:
     void                        DrawGradientEx( OutputDevice* pOut, const Rectangle& rRect, const Gradient& rGradient );
diff --git a/vcl/source/gdi/outdev2.cxx b/vcl/source/gdi/outdev2.cxx
index 06593b7..b088d6a 100644
--- a/vcl/source/gdi/outdev2.cxx
+++ b/vcl/source/gdi/outdev2.cxx
@@ -575,23 +575,29 @@ void OutputDevice::ImplDrawBitmap( const Point& rDestPt, const Size& rDestSize,
 
             if ( aPosAry.mnSrcWidth && aPosAry.mnSrcHeight && aPosAry.mnDestWidth && aPosAry.mnDestHeight )
             {
-                const double nScaleX = aPosAry.mnDestWidth  / static_cast<double>( aPosAry.mnSrcWidth );
-                const double nScaleY = aPosAry.mnDestHeight / static_cast<double>( aPosAry.mnSrcHeight );
-                // If subsampling, use Bitmap::Scale for subsampling for better quality.
-                if ( meOutDevType != OUTDEV_PRINTER &&
-                    nAction == META_BMPSCALE_ACTION &&
-                    (nScaleX < 1.0 || nScaleY < 1.0) )
-                {
-                    aBmp.Scale ( nScaleX, nScaleY );
-                    aPosAry.mnSrcWidth = aPosAry.mnDestWidth;
-                    aPosAry.mnSrcHeight = aPosAry.mnDestHeight;
-                }
+                if ( nAction == META_BMPSCALE_ACTION )
+                    ScaleBitmap (aBmp, aPosAry);
+
                 mpGraphics->DrawBitmap( aPosAry, *aBmp.ImplGetImpBitmap()->ImplGetSalBitmap(), this );
             }
         }
     }
 }
 
+void OutputDevice::ScaleBitmap (Bitmap &rBmp, SalTwoRect &rPosAry)
+{
+    const double nScaleX = rPosAry.mnDestWidth  / static_cast<double>( rPosAry.mnSrcWidth );
+    const double nScaleY = rPosAry.mnDestHeight / static_cast<double>( rPosAry.mnSrcHeight );
+
+    // If subsampling, use Bitmap::Scale for subsampling for better quality.
+    if ( nScaleX < 1.0 || nScaleY < 1.0 )
+    {
+        rBmp.Scale ( nScaleX, nScaleY );
+        rPosAry.mnSrcWidth = rPosAry.mnDestWidth;
+        rPosAry.mnSrcHeight = rPosAry.mnDestHeight;
+    }
+}
+
 void OutputDevice::DrawBitmapEx( const Point& rDestPt,
                                  const BitmapEx& rBitmapEx )
 {


More information about the Libreoffice-commits mailing list