[Libreoffice-commits] core.git: 2 commits - drawinglayer/source vcl/source
Mike Kaganski (via logerrit)
logerrit at kemper.freedesktop.org
Fri May 29 04:23:50 UTC 2020
drawinglayer/source/processor2d/vclpixelprocessor2d.cxx | 21 +++++++++-------
vcl/source/outdev/outdev.cxx | 12 +++++++--
2 files changed, 23 insertions(+), 10 deletions(-)
New commits:
commit 541e5a9e84c42fbf20158b01a4feaa0f226e9ed0
Author: Mike Kaganski <mike.kaganski at collabora.com>
AuthorDate: Thu May 14 14:42:24 2020 +0300
Commit: Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Fri May 29 06:23:26 2020 +0200
tdf#49247, tdf#101181: Fix effect bounds
This will avoid cutting rightmost and bottommost pixels from the effects,
caused by casting of range dimensions to integers.
Change-Id: Icad9c06c33bafae9531bc45559acecd3581fad89
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95020
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
diff --git a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
index 131e51f34913..32afe33e6147 100644
--- a/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
+++ b/drawinglayer/source/processor2d/vclpixelprocessor2d.cxx
@@ -993,8 +993,11 @@ void VclPixelProcessor2D::processGlowPrimitive2D(const primitive2d::GlowPrimitiv
// glow primitive.
mpOutputDevice->Erase();
process(rCandidate);
- Bitmap bitmap = mpOutputDevice->GetBitmap(Point(aRange.getMinX(), aRange.getMinY()),
- Size(aRange.getWidth(), aRange.getHeight()));
+ const tools::Rectangle aRect(static_cast<long>(std::floor(aRange.getMinX())),
+ static_cast<long>(std::floor(aRange.getMinY())),
+ static_cast<long>(std::ceil(aRange.getMaxX())),
+ static_cast<long>(std::ceil(aRange.getMaxY())));
+ Bitmap bitmap = mpOutputDevice->GetBitmap(aRect.TopLeft(), aRect.GetSize());
AlphaMask mask = ProcessAndBlurAlphaMask(bitmap, fBlurRadius, fBlurRadius, nTransparency);
@@ -1007,7 +1010,7 @@ void VclPixelProcessor2D::processGlowPrimitive2D(const primitive2d::GlowPrimitiv
// back to old OutDev
mpOutputDevice = pLastOutputDevice;
- mpOutputDevice->DrawBitmapEx(Point(aRange.getMinX(), aRange.getMinY()), result);
+ mpOutputDevice->DrawBitmapEx(aRect.TopLeft(), result);
}
else
SAL_WARN("drawinglayer", "Temporary buffered virtual device is not visible");
@@ -1036,8 +1039,11 @@ void VclPixelProcessor2D::processSoftEdgePrimitive2D(
rCandidate.setMaskGeneration();
process(rCandidate);
rCandidate.setMaskGeneration(false);
- Bitmap bitmap = mpOutputDevice->GetBitmap(Point(aRange.getMinX(), aRange.getMinY()),
- Size(aRange.getWidth(), aRange.getHeight()));
+ const tools::Rectangle aRect(static_cast<long>(std::floor(aRange.getMinX())),
+ static_cast<long>(std::floor(aRange.getMinY())),
+ static_cast<long>(std::ceil(aRange.getMaxX())),
+ static_cast<long>(std::ceil(aRange.getMaxY())));
+ Bitmap bitmap = mpOutputDevice->GetBitmap(aRect.TopLeft(), aRect.GetSize());
AlphaMask mask = ProcessAndBlurAlphaMask(bitmap, -fBlurRadius, fBlurRadius, 0);
@@ -1045,15 +1051,14 @@ void VclPixelProcessor2D::processSoftEdgePrimitive2D(
mpOutputDevice->Erase();
process(rCandidate);
- bitmap = mpOutputDevice->GetBitmap(Point(aRange.getMinX(), aRange.getMinY()),
- Size(aRange.getWidth(), aRange.getHeight()));
+ bitmap = mpOutputDevice->GetBitmap(aRect.TopLeft(), aRect.GetSize());
// alpha mask will be scaled up automatically to match bitmap
BitmapEx result(bitmap, mask);
// back to old OutDev
mpOutputDevice = pLastOutputDevice;
- mpOutputDevice->DrawBitmapEx(Point(aRange.getMinX(), aRange.getMinY()), result);
+ mpOutputDevice->DrawBitmapEx(aRect.TopLeft(), result);
}
else
SAL_WARN("drawinglayer", "Temporary buffered virtual device is not visible");
commit 946b01e2d4a41b06415f6371b7b52dca090e7b86
Author: Mike Kaganski <mike.kaganski at collabora.com>
AuthorDate: Thu May 14 14:42:24 2020 +0300
Commit: Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Fri May 29 06:23:16 2020 +0200
Consider mpAlphaVDev when processing metafile in OutputDevice::DrawOutDev
Change-Id: Ia9709bba6eb2a64781297ca260341693b0e39107
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/95019
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
diff --git a/vcl/source/outdev/outdev.cxx b/vcl/source/outdev/outdev.cxx
index 18f273b8185a..020a57a6a40c 100644
--- a/vcl/source/outdev/outdev.cxx
+++ b/vcl/source/outdev/outdev.cxx
@@ -415,8 +415,16 @@ void OutputDevice::DrawOutDev( const Point& rDestPt, const Size& rDestSize,
if ( mpMetaFile )
{
- const Bitmap aBmp( rOutDev.GetBitmap( rSrcPt, rSrcSize ) );
- mpMetaFile->AddAction( new MetaBmpScaleAction( rDestPt, rDestSize, aBmp ) );
+ if (rOutDev.mpAlphaVDev)
+ {
+ const BitmapEx aBmpEx(rOutDev.GetBitmapEx(rSrcPt, rSrcSize));
+ mpMetaFile->AddAction(new MetaBmpExScaleAction(rDestPt, rDestSize, aBmpEx));
+ }
+ else
+ {
+ const Bitmap aBmp(rOutDev.GetBitmap(rSrcPt, rSrcSize));
+ mpMetaFile->AddAction(new MetaBmpScaleAction(rDestPt, rDestSize, aBmp));
+ }
}
if ( !IsDeviceOutputNecessary() )
More information about the Libreoffice-commits
mailing list