sfx2/source/control/templateabstractview.cxx |   29 ++++++++++++++++++++++++---
 1 file changed, 26 insertions(+), 3 deletions(-)

New commits:
commit e2a35977ca056d7bf1dae3a9c41ae135a85892fd
Author: Cédric Bosdonnat <cedric.bosdon...@free.fr>
Date:   Wed Dec 5 18:40:16 2012 +0100

    Template manager: keep thumbnails ratio when scaling down
    
    Change-Id: Ic597dd9fd12895c0d21f678cba44feba9f6fcd47

diff --git a/sfx2/source/control/templateabstractview.cxx 
b/sfx2/source/control/templateabstractview.cxx
index 8cbf60f..0baed64 100644
--- a/sfx2/source/control/templateabstractview.cxx
+++ b/sfx2/source/control/templateabstractview.cxx
@@ -137,10 +137,33 @@ BitmapEx TemplateAbstractView::scaleImg (const BitmapEx 
&rImg, long width, long
 {
     BitmapEx aImg = rImg;
 
-    int sWidth = std::min(aImg.GetSizePixel().getWidth(),width);
-    int sHeight = std::min(aImg.GetSizePixel().getHeight(),height);
+    if ( !rImg.IsEmpty() )
+    {
+
+        const Size& aImgSize = aImg.GetSizePixel();
+        double nRatio = double(aImgSize.getWidth()) / 
double(aImgSize.getHeight());
+
+        long nDestWidth = aImgSize.getWidth();
+        long nDestHeight = aImgSize.getHeight();
+
+        // Which one side is the overflowing most?
+        long nDistW = aImgSize.getWidth() - width;
+        long nDistH = aImgSize.getHeight() - height;
+
+        // Use the biggest overflow side to make it fit the destination
+        if ( nDistW >= nDistH && nDistW > 0 )
+        {
+            nDestWidth = width;
+            nDestHeight = width / nRatio;
+        }
+        else if ( nDistW < nDistH && nDistH > 0 )
+        {
+            nDestHeight = height;
+            nDestWidth = height * nRatio;
+        }
 
-    aImg.Scale(Size(sWidth,sHeight),BMP_SCALE_INTERPOLATE);
+        aImg.Scale(Size(nDestWidth,nDestHeight));
+    }
 
     return aImg;
 }
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to