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

Michael Meeks michael.meeks at suse.com
Tue May 14 07:53:59 PDT 2013


 vcl/qa/cppunit/graphicfilter/filters-test.cxx |   20 ++++++++++++++++++++
 vcl/source/gdi/bitmap3.cxx                    |   19 ++++++++++++++-----
 2 files changed, 34 insertions(+), 5 deletions(-)

New commits:
commit 1d4bbe7b305558faf86aa083cc50d71a7804ef7d
Author: Michael Meeks <michael.meeks at suse.com>
Date:   Mon May 13 22:32:32 2013 +0100

    vcl: attempt to fix high quality scaling to get aspect ratio right.
    
    Change-Id: Ic62c6a16c39dd4e4e19bf9a96503ecf6ac50f292

diff --git a/vcl/qa/cppunit/graphicfilter/filters-test.cxx b/vcl/qa/cppunit/graphicfilter/filters-test.cxx
index 23f2978..7d73e2c 100644
--- a/vcl/qa/cppunit/graphicfilter/filters-test.cxx
+++ b/vcl/qa/cppunit/graphicfilter/filters-test.cxx
@@ -38,8 +38,12 @@ public:
      */
     void testCVEs();
 
+    /// test scaling
+    void testScaling();
+
     CPPUNIT_TEST_SUITE(VclFiltersTest);
     CPPUNIT_TEST(testCVEs);
+    CPPUNIT_TEST(testScaling);
     CPPUNIT_TEST_SUITE_END();
 };
 
@@ -53,6 +57,22 @@ bool VclFiltersTest::load(const OUString &,
     return aGraphicFilter.ImportGraphic(aGraphic, rURL, aFileStream) == 0;
 }
 
+void VclFiltersTest::testScaling()
+{
+    for (unsigned int i = BMP_SCALE_FAST; i <= BMP_SCALE_BOX; i++)
+    {
+        Bitmap aBitmap( Size( 413, 409 ), 24 );
+        BitmapEx aBitmapEx( aBitmap );
+
+        fprintf( stderr, "scale with type %d\n", i );
+        CPPUNIT_ASSERT( aBitmapEx.Scale( 0.1937046, 0.193154, i ) );
+        Size aAfter( aBitmapEx.GetSizePixel() );
+        fprintf( stderr, "size %ld, %ld\n", (long)aAfter.Width(),
+                 aAfter.Height() );
+        CPPUNIT_ASSERT( labs (aAfter.Height() - aAfter.Width()) <= 1 );
+    }
+}
+
 void VclFiltersTest::testCVEs()
 {
 #ifndef DISABLE_CVE_TESTS
diff --git a/vcl/source/gdi/bitmap3.cxx b/vcl/source/gdi/bitmap3.cxx
index e639b36..5b56ae4 100644
--- a/vcl/source/gdi/bitmap3.cxx
+++ b/vcl/source/gdi/bitmap3.cxx
@@ -2368,7 +2368,7 @@ namespace
 }
 
 // #i121233# Added BMP_SCALE_LANCZOS, BMP_SCALE_BICUBIC, BMP_SCALE_BILINEAR and
-// BMP_SCALE_BOX derived from the original commit from Tomaž Vajngerl (see
+// BMP_SCALE_BOX derived from the original commit from Tomas Vajngerl (see
 // bugzilla task for deitails) Thanks!
 sal_Bool Bitmap::ImplScaleConvolution(
     const double& rScaleX,
@@ -2426,29 +2426,38 @@ sal_Bool Bitmap::ImplScaleConvolution(
         const sal_uInt32 nInBetweenSizeHorFirst(nHeight * nNewWidth);
         const sal_uInt32 nInBetweenSizeVerFirst(nNewHeight * nWidth);
 
+        Bitmap aInterm;
         if(nInBetweenSizeHorFirst < nInBetweenSizeVerFirst)
         {
             if(bScaleHor)
             {
-                bResult = ImplScaleConvolutionHor(*this, aResult, fScaleX, aKernel);
+                bResult = ImplScaleConvolutionHor(*this, aInterm, fScaleX, aKernel);
             }
+            else
+                aInterm = *this;
 
             if(bResult && bScaleVer)
             {
-                bResult = ImplScaleConvolutionVer(*this, aResult, fScaleY, aKernel);
+                bResult = ImplScaleConvolutionVer(aInterm, aResult, fScaleY, aKernel);
             }
+            else
+                aResult = aInterm;
         }
         else
         {
             if(bScaleVer)
             {
-                bResult = ImplScaleConvolutionVer(*this, aResult, fScaleY, aKernel);
+                bResult = ImplScaleConvolutionVer(*this, aInterm, fScaleY, aKernel);
             }
+            else
+                aInterm = *this;
 
             if(bResult && bScaleHor)
             {
-                bResult = ImplScaleConvolutionHor(*this, aResult, fScaleX, aKernel);
+                bResult = ImplScaleConvolutionHor(aInterm, aResult, fScaleX, aKernel);
             }
+            else
+                aResult = aInterm;
         }
     }
 


More information about the Libreoffice-commits mailing list