diff options
author | Caolán McNamara <caolanm@redhat.com> | 2022-10-13 10:53:52 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2022-10-13 14:52:32 +0200 |
commit | ee0d5e7bb8614c50e71dd074b8440f412eb62ff3 (patch) | |
tree | a6516c86ebe06df159419867a6889b1e04809b9b /drawinglayer | |
parent | 2b9f41880b409cafd62fb3d1cad82537f12d08b1 (diff) |
use OutputDevice clipping if its just a set of rectangles
Change-Id: I249866d1aef29d256439c0437835a173d8a4c633
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141286
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'drawinglayer')
-rw-r--r-- | drawinglayer/source/processor2d/vclprocessor2d.cxx | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drawinglayer/source/processor2d/vclprocessor2d.cxx b/drawinglayer/source/processor2d/vclprocessor2d.cxx index 38cb499163fa..cf1ea90aa228 100644 --- a/drawinglayer/source/processor2d/vclprocessor2d.cxx +++ b/drawinglayer/source/processor2d/vclprocessor2d.cxx @@ -785,6 +785,17 @@ void VclProcessor2D::RenderPolyPolygonGraphicPrimitive2D( } } +namespace +{ +bool isRectangles(const basegfx::B2DPolyPolygon& rPolyPoly) +{ + for (sal_uInt32 i = 0, nCount = rPolyPoly.count(); i < nCount; ++i) + if (!basegfx::utils::isRectangle(rPolyPoly.getB2DPolygon(i))) + return false; + return true; +} +} + // mask group void VclProcessor2D::RenderMaskPrimitive2DPixel(const primitive2d::MaskPrimitive2D& rMaskCandidate) { @@ -799,7 +810,7 @@ void VclProcessor2D::RenderMaskPrimitive2DPixel(const primitive2d::MaskPrimitive aMask.transform(maCurrentTransformation); // Unless smooth edges are needed, simply use clipping. - if (basegfx::utils::isRectangle(aMask) || !SvtOptionsDrawinglayer::IsAntiAliasing()) + if (isRectangles(aMask) || !SvtOptionsDrawinglayer::IsAntiAliasing()) { mpOutputDevice->Push(vcl::PushFlags::CLIPREGION); mpOutputDevice->IntersectClipRegion(vcl::Region(aMask)); |