[Libreoffice-commits] core.git: vcl/headless vcl/inc vcl/unx

Caolán McNamara caolanm at redhat.com
Sat Jun 2 16:02:58 UTC 2018


 vcl/headless/svpgdi.cxx        |   11 ++++++++---
 vcl/inc/headless/svpgdi.hxx    |    1 +
 vcl/unx/generic/gdi/salgdi.cxx |   15 +--------------
 3 files changed, 10 insertions(+), 17 deletions(-)

New commits:
commit f9de5f7ea0130a9bad889f9702ac311d6be3deb6
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Fri Jun 1 13:06:44 2018 +0100

    share the cairo clipping code
    
    Change-Id: I2dc8f55fd2612b5fc4440b46ee3184341fd56859
    Reviewed-on: https://gerrit.libreoffice.org/55180
    Tested-by: Jenkins <ci at libreoffice.org>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index 8bc15fb861dc..4b5050420e7a 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -489,12 +489,12 @@ bool SvpSalGraphics::drawTransformedBitmap(
     return true;
 }
 
-void SvpSalGraphics::clipRegion(cairo_t* cr)
+void SvpSalGraphics::clipRegion(cairo_t* cr, const vcl::Region& rClipRegion)
 {
     RectangleVector aRectangles;
-    if (!m_aClipRegion.IsEmpty())
+    if (!rClipRegion.IsEmpty())
     {
-        m_aClipRegion.GetRegionRectangles(aRectangles);
+        rClipRegion.GetRegionRectangles(aRectangles);
     }
     if (!aRectangles.empty())
     {
@@ -506,6 +506,11 @@ void SvpSalGraphics::clipRegion(cairo_t* cr)
     }
 }
 
+void SvpSalGraphics::clipRegion(cairo_t* cr)
+{
+    SvpSalGraphics::clipRegion(cr, m_aClipRegion);
+}
+
 bool SvpSalGraphics::drawAlphaRect(long nX, long nY, long nWidth, long nHeight, sal_uInt8 nTransparency)
 {
     cairo_t* cr = getCairoContext(false);
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index 37ae2822bf53..c5a0639498ca 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -96,6 +96,7 @@ public:
     cairo_surface_t* getSurface() const { return m_pSurface; }
     static cairo_user_data_key_t* getDamageKey();
 
+    static void clipRegion(cairo_t* cr, const vcl::Region& rClipRegion);
     static basegfx::B2DRange drawPolyLine(
         cairo_t* cr,
         const Color& rLineColor,
diff --git a/vcl/unx/generic/gdi/salgdi.cxx b/vcl/unx/generic/gdi/salgdi.cxx
index dd09e8d3c62b..e09766c1e598 100644
--- a/vcl/unx/generic/gdi/salgdi.cxx
+++ b/vcl/unx/generic/gdi/salgdi.cxx
@@ -690,20 +690,7 @@ bool X11SalGraphics::drawPolyPolygon( const basegfx::B2DPolyPolygon& rOrigPolyPo
 #if ENABLE_CAIRO_CANVAS
 void X11SalGraphics::clipRegion(cairo_t* cr)
 {
-    if(!maClipRegion.IsEmpty())
-    {
-        RectangleVector aRectangles;
-        maClipRegion.GetRegionRectangles(aRectangles);
-
-        if (!aRectangles.empty())
-        {
-            for (auto const& rectangle : aRectangles)
-            {
-                cairo_rectangle(cr, rectangle.Left(), rectangle.Top(), rectangle.GetWidth(), rectangle.GetHeight());
-            }
-            cairo_clip(cr);
-        }
-    }
+    SvpSalGraphics::clipRegion(cr, maClipRegion);
 }
 #endif // ENABLE_CAIRO_CANVAS
 


More information about the Libreoffice-commits mailing list