vcl/unx/generic/gdi/X11CairoSalGraphicsImpl.cxx |  106 +++++++++++-------------
 1 file changed, 49 insertions(+), 57 deletions(-)

New commits:
commit 5cc0b3adf6c1550105b2137dd182168a9231bd7a
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Mon Jan 2 20:43:36 2023 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Wed Jan 4 17:10:56 2023 +0000

    enable SAL_ENABLE_USE_CAIRO_FOR_POLYGONS path
    
    Change-Id: Id2c8f94986aea0dd7e50b7b3aeaae7770b3e5bbd
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/144970
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/unx/generic/gdi/X11CairoSalGraphicsImpl.cxx 
b/vcl/unx/generic/gdi/X11CairoSalGraphicsImpl.cxx
index 9f2fcb988697..0a1e8fe02200 100644
--- a/vcl/unx/generic/gdi/X11CairoSalGraphicsImpl.cxx
+++ b/vcl/unx/generic/gdi/X11CairoSalGraphicsImpl.cxx
@@ -55,84 +55,76 @@ bool X11CairoSalGraphicsImpl::drawPolyPolygon(const 
basegfx::B2DHomMatrix& rObje
         return true;
     }
 
-    // enable by setting to something
-    static const char* 
pUseCairoForPolygons(getenv("SAL_ENABLE_USE_CAIRO_FOR_POLYGONS"));
+    // snap to raster if requested
+    const bool bSnapPoints(!getAntiAlias());
 
-    if (nullptr != pUseCairoForPolygons && mrX11Common.SupportsCairo())
+    if (bSnapPoints)
     {
-        // snap to raster if requested
-        const bool bSnapPoints(!getAntiAlias());
+        aPolyPolygon = 
basegfx::utils::snapPointsOfHorizontalOrVerticalEdges(aPolyPolygon);
+    }
 
-        if (bSnapPoints)
-        {
-            aPolyPolygon = 
basegfx::utils::snapPointsOfHorizontalOrVerticalEdges(aPolyPolygon);
-        }
+    cairo_t* cr = mrX11Common.getCairoContext();
+    clipRegion(cr);
 
-        cairo_t* cr = mrX11Common.getCairoContext();
-        clipRegion(cr);
+    for (auto const& rPolygon : std::as_const(aPolyPolygon))
+    {
+        const sal_uInt32 nPointCount(rPolygon.count());
 
-        for (auto const& rPolygon : std::as_const(aPolyPolygon))
+        if (nPointCount)
         {
-            const sal_uInt32 nPointCount(rPolygon.count());
+            const sal_uInt32 nEdgeCount(rPolygon.isClosed() ? nPointCount : 
nPointCount - 1);
 
-            if (nPointCount)
+            if (nEdgeCount)
             {
-                const sal_uInt32 nEdgeCount(rPolygon.isClosed() ? nPointCount 
: nPointCount - 1);
+                basegfx::B2DCubicBezier aEdge;
 
-                if (nEdgeCount)
+                for (sal_uInt32 b = 0; b < nEdgeCount; ++b)
                 {
-                    basegfx::B2DCubicBezier aEdge;
+                    rPolygon.getBezierSegment(b, aEdge);
 
-                    for (sal_uInt32 b = 0; b < nEdgeCount; ++b)
+                    if (!b)
                     {
-                        rPolygon.getBezierSegment(b, aEdge);
-
-                        if (!b)
-                        {
-                            const basegfx::B2DPoint 
aStart(aEdge.getStartPoint());
-                            cairo_move_to(cr, aStart.getX(), aStart.getY());
-                        }
-
-                        const basegfx::B2DPoint aEnd(aEdge.getEndPoint());
-
-                        if (aEdge.isBezier())
-                        {
-                            const basegfx::B2DPoint 
aCP1(aEdge.getControlPointA());
-                            const basegfx::B2DPoint 
aCP2(aEdge.getControlPointB());
-                            cairo_curve_to(cr, aCP1.getX(), aCP1.getY(), 
aCP2.getX(), aCP2.getY(),
-                                           aEnd.getX(), aEnd.getY());
-                        }
-                        else
-                        {
-                            cairo_line_to(cr, aEnd.getX(), aEnd.getY());
-                        }
+                        const basegfx::B2DPoint aStart(aEdge.getStartPoint());
+                        cairo_move_to(cr, aStart.getX(), aStart.getY());
                     }
 
-                    cairo_close_path(cr);
+                    const basegfx::B2DPoint aEnd(aEdge.getEndPoint());
+
+                    if (aEdge.isBezier())
+                    {
+                        const basegfx::B2DPoint aCP1(aEdge.getControlPointA());
+                        const basegfx::B2DPoint aCP2(aEdge.getControlPointB());
+                        cairo_curve_to(cr, aCP1.getX(), aCP1.getY(), 
aCP2.getX(), aCP2.getY(),
+                                       aEnd.getX(), aEnd.getY());
+                    }
+                    else
+                    {
+                        cairo_line_to(cr, aEnd.getX(), aEnd.getY());
+                    }
                 }
-            }
-        }
 
-        if (SALCOLOR_NONE != mnFillColor)
-        {
-            cairo_set_source_rgba(cr, mnFillColor.GetRed() / 255.0, 
mnFillColor.GetGreen() / 255.0,
-                                  mnFillColor.GetBlue() / 255.0, 1.0 - 
fTransparency);
-            cairo_set_fill_rule(cr, CAIRO_FILL_RULE_EVEN_ODD);
-            cairo_fill_preserve(cr);
+                cairo_close_path(cr);
+            }
         }
+    }
 
-        if (SALCOLOR_NONE != mnPenColor)
-        {
-            cairo_set_source_rgba(cr, mnPenColor.GetRed() / 255.0, 
mnPenColor.GetGreen() / 255.0,
-                                  mnPenColor.GetBlue() / 255.0, 1.0 - 
fTransparency);
-            cairo_stroke_preserve(cr);
-        }
+    if (SALCOLOR_NONE != mnFillColor)
+    {
+        cairo_set_source_rgba(cr, mnFillColor.GetRed() / 255.0, 
mnFillColor.GetGreen() / 255.0,
+                              mnFillColor.GetBlue() / 255.0, 1.0 - 
fTransparency);
+        cairo_set_fill_rule(cr, CAIRO_FILL_RULE_EVEN_ODD);
+        cairo_fill_preserve(cr);
+    }
 
-        X11Common::releaseCairoContext(cr);
-        return true;
+    if (SALCOLOR_NONE != mnPenColor)
+    {
+        cairo_set_source_rgba(cr, mnPenColor.GetRed() / 255.0, 
mnPenColor.GetGreen() / 255.0,
+                              mnPenColor.GetBlue() / 255.0, 1.0 - 
fTransparency);
+        cairo_stroke_preserve(cr);
     }
 
-    return X11SalGraphicsImpl::drawPolyPolygon(rObjectToDevice, rPolyPolygon, 
fTransparency);
+    X11Common::releaseCairoContext(cr);
+    return true;
 }
 
 bool X11CairoSalGraphicsImpl::drawPolyLine(const basegfx::B2DHomMatrix& 
rObjectToDevice,

Reply via email to