include/vcl/outdev.hxx | 4 +++- vcl/source/outdev/bitmap.cxx | 6 ++---- vcl/source/outdev/transparent.cxx | 4 +--- 3 files changed, 6 insertions(+), 8 deletions(-)
New commits: commit f83d1b824c1abd07d24318adda6c876b9471ccec Author: Chris Sherlock <[email protected]> AuthorDate: Fri Sep 3 17:20:41 2021 +1000 Commit: Tomaž Vajngerl <[email protected]> CommitDate: Wed Sep 8 10:10:12 2021 +0200 vcl: make GetDownsampledBitmap() take destination size in units of twips This removes the need to use OutputDevice functions, which means we can later move this function to bitmaptools.cxx Change-Id: If547563808c2656d395d4669507f5f8dcfadcabe Reviewed-on: https://gerrit.libreoffice.org/c/core/+/121580 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <[email protected]> diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index 2995769bd060..fbebf0a1a3d8 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -1415,11 +1415,13 @@ protected: double &fMaximumArea); /** Retrieve downsampled and cropped bitmap + + Takes destination size in twips units. @attention This method ignores negative rDstSz values, thus mirroring must happen outside this method (e.g. in DrawBitmap) */ - Bitmap GetDownsampledBitmap( + static Bitmap GetDownsampledBitmap( const Size& rDstSz, const Point& rSrcPt, const Size& rSrcSz, diff --git a/vcl/source/outdev/bitmap.cxx b/vcl/source/outdev/bitmap.cxx index e86055d9df1e..5466340c2bfe 100644 --- a/vcl/source/outdev/bitmap.cxx +++ b/vcl/source/outdev/bitmap.cxx @@ -170,7 +170,7 @@ void OutputDevice::DrawBitmap( const Point& rDestPt, const Size& rDestSize, } } -Bitmap OutputDevice::GetDownsampledBitmap( const Size& rDstSz, +Bitmap OutputDevice::GetDownsampledBitmap( const Size& rDstSizeTwip, const Point& rSrcPt, const Size& rSrcSz, const Bitmap& rBmp, tools::Long nMaxBmpDPIX, tools::Long nMaxBmpDPIY ) { @@ -193,10 +193,8 @@ Bitmap OutputDevice::GetDownsampledBitmap( const Size& rDstSz, if( !aBmp.IsEmpty() ) { // do downsampling if necessary - Size aDstSizeTwip( PixelToLogic(LogicToPixel(rDstSz), MapMode(MapUnit::MapTwip)) ); - // #103209# Normalize size (mirroring has to happen outside of this method) - aDstSizeTwip = Size( std::abs(aDstSizeTwip.Width()), std::abs(aDstSizeTwip.Height()) ); + Size aDstSizeTwip(std::abs(rDstSizeTwip.Width()), std::abs(rDstSizeTwip.Height())); const Size aBmpSize( aBmp.GetSizePixel() ); const double fBmpPixelX = aBmpSize.Width(); diff --git a/vcl/source/outdev/transparent.cxx b/vcl/source/outdev/transparent.cxx index 6a7921b43814..8cb2cf51632f 100644 --- a/vcl/source/outdev/transparent.cxx +++ b/vcl/source/outdev/transparent.cxx @@ -1836,11 +1836,9 @@ bool OutputDevice::RemoveTransparenciesFromMetaFile( const GDIMetaFile& rInMtf, // scale down bitmap, if requested if( bDownsampleBitmaps ) - { - aBandBmp = GetDownsampledBitmap( aDstSzPix, + aBandBmp = GetDownsampledBitmap( PixelToLogic(LogicToPixel(aDstSzPix), MapMode(MapUnit::MapTwip)), Point(), aBandBmp.GetSizePixel(), aBandBmp, nMaxBmpDPIX, nMaxBmpDPIY ); - } rOutMtf.AddAction( new MetaCommentAction( "PRNSPOOL_TRANSPARENTBITMAP_BEGIN" ) ); rOutMtf.AddAction( new MetaBmpScaleAction( aDstPtPix, aDstSzPix, aBandBmp ) );
