summaryrefslogtreecommitdiff
path: root/drawinglayer
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2022-10-13 10:53:52 +0100
committerCaolán McNamara <caolanm@redhat.com>2022-10-13 14:52:32 +0200
commitee0d5e7bb8614c50e71dd074b8440f412eb62ff3 (patch)
treea6516c86ebe06df159419867a6889b1e04809b9b /drawinglayer
parent2b9f41880b409cafd62fb3d1cad82537f12d08b1 (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.cxx13
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));