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

pasqualm pasqual.milvaques at gmail.com
Tue May 3 09:32:45 UTC 2016


 vcl/source/outdev/bitmap.cxx |   19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

New commits:
commit 9a425218aae218356421df9e62bf9dd5d1d809bb
Author: pasqualm <pasqual.milvaques at gmail.com>
Date:   Mon Feb 29 00:09:02 2016 +0100

    tdf#90319: make image flipping work when aLinearContext(...) code path chosen
    
    Image flipping can be processed following different code paths in bitmap.cxx.
    Has been verified that it was broken in Linux Mint (with cinnamon) because
    there a buggy code path was chosen which was not fixed
    in commit 3119440a80282692640378fde5e37974ab63f096 in master.
    This commit solves the problem for this code path
    
    Change-Id: I22257e70761ca5469c0424b5f9925681cfd4e2e3
    Reviewed-on: https://gerrit.libreoffice.org/22753
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Jacobo Aragunde Pérez <jaragunde at igalia.com>
    (cherry picked from commit 1e3d634e413abf2b4c2a6c70a87586d8c598054c)
    Reviewed-on: https://gerrit.libreoffice.org/23852
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/vcl/source/outdev/bitmap.cxx b/vcl/source/outdev/bitmap.cxx
index 4c125c3..1f0a1c6 100644
--- a/vcl/source/outdev/bitmap.cxx
+++ b/vcl/source/outdev/bitmap.cxx
@@ -723,37 +723,28 @@ struct LinearScaleContext
         const long nSrcWidth = aBitmapRect.GetWidth();
         const long nSrcHeight = aBitmapRect.GetHeight();
 
-        const bool bHMirr = aOutSize.Width() < 0;
-        const bool bVMirr = aOutSize.Height() < 0;
-
         generateSimpleMap(
             nSrcWidth,  aDstRect.GetWidth(), aBitmapRect.Left(),
-            aOutSize.Width(),  nOffX, bHMirr, mpMapX.get(), mpMapXOffset.get());
+            aOutSize.Width(),  nOffX, mpMapX.get(), mpMapXOffset.get());
 
         generateSimpleMap(
             nSrcHeight, aDstRect.GetHeight(), aBitmapRect.Top(),
-            aOutSize.Height(), nOffY, bVMirr, mpMapY.get(), mpMapYOffset.get());
+            aOutSize.Height(), nOffY, mpMapY.get(), mpMapYOffset.get());
     }
 
 private:
 
     static void generateSimpleMap(long nSrcDimension, long nDstDimension, long nDstLocation,
-                                  long nOutDimention, long nOffset, bool bMirror, long* pMap, long* pMapOffset)
+                                  long nOutDimention, long nOffset, long* pMap, long* pMapOffset)
     {
-        long nMirrorOffset = 0;
 
-        if (bMirror)
-            nMirrorOffset = (nDstLocation << 1) + nSrcDimension - 1L;
-
-        const double fReverseScale = (nOutDimention > 1L) ? (nSrcDimension - 1L) / double(nOutDimention - 1L) : 0.0;
+        const double fReverseScale = (std::abs(nOutDimention) > 1L) ? (nSrcDimension - 1L) / double(std::abs(nOutDimention) - 1L) : 0.0;
 
         long nSampleRange = std::max(0L, nSrcDimension - 2L);
 
         for (long i = 0L; i < nDstDimension; i++)
         {
-            double fTemp = ((nOffset + i) * fReverseScale);
-            if (bMirror)
-                fTemp = nMirrorOffset - fTemp - 1L;
+            double fTemp = std::abs((nOffset + i) * fReverseScale);
 
             pMap[i] = MinMax(nDstLocation + long(fTemp), 0, nSampleRange);
             pMapOffset[i] = (long) ((fTemp - pMap[i]) * 128.0);


More information about the Libreoffice-commits mailing list