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