vcl/headless/CairoCommon.cxx                    |   37 ++++++++++++++++++++++++
 vcl/headless/SvpGraphicsBackend.cxx             |   30 ++-----------------
 vcl/inc/headless/CairoCommon.hxx                |    4 ++
 vcl/unx/generic/gdi/X11CairoSalGraphicsImpl.hxx |   18 +++++++++++
 4 files changed, 63 insertions(+), 26 deletions(-)

New commits:
commit 4a652c4b75c1cde920cd7d13d63b38c5c155be07
Author:     Caolán McNamara <caol...@redhat.com>
AuthorDate: Mon Jan 9 20:48:49 2023 +0000
Commit:     Caolán McNamara <caol...@redhat.com>
CommitDate: Tue Jan 10 19:56:21 2023 +0000

    reuse ROP and XOR solutions
    
    Change-Id: I52ba669921a4145f02c69ff90e0d8668c4698ad5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/145255
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caol...@redhat.com>

diff --git a/vcl/headless/CairoCommon.cxx b/vcl/headless/CairoCommon.cxx
index fb25d6a2c391..513d94fc4735 100644
--- a/vcl/headless/CairoCommon.cxx
+++ b/vcl/headless/CairoCommon.cxx
@@ -634,6 +634,43 @@ void CairoCommon::clipRegion(cairo_t* cr, const 
vcl::Region& rClipRegion)
 
 void CairoCommon::clipRegion(cairo_t* cr) { CairoCommon::clipRegion(cr, 
m_aClipRegion); }
 
+void CairoCommon::SetXORMode(bool bSet, bool /*bInvertOnly*/)
+{
+    m_ePaintMode = bSet ? PaintMode::Xor : PaintMode::Over;
+}
+
+void CairoCommon::SetROPLineColor(SalROPColor nROPColor)
+{
+    switch (nROPColor)
+    {
+        case SalROPColor::N0:
+            m_oLineColor = Color(0, 0, 0);
+            break;
+        case SalROPColor::N1:
+            m_oLineColor = Color(0xff, 0xff, 0xff);
+            break;
+        case SalROPColor::Invert:
+            m_oLineColor = Color(0xff, 0xff, 0xff);
+            break;
+    }
+}
+
+void CairoCommon::SetROPFillColor(SalROPColor nROPColor)
+{
+    switch (nROPColor)
+    {
+        case SalROPColor::N0:
+            m_oFillColor = Color(0, 0, 0);
+            break;
+        case SalROPColor::N1:
+            m_oFillColor = Color(0xff, 0xff, 0xff);
+            break;
+        case SalROPColor::Invert:
+            m_oFillColor = Color(0xff, 0xff, 0xff);
+            break;
+    }
+}
+
 void CairoCommon::drawPixel(const std::optional<Color>& rLineColor, 
tools::Long nX, tools::Long nY,
                             bool bAntiAlias)
 {
diff --git a/vcl/headless/SvpGraphicsBackend.cxx 
b/vcl/headless/SvpGraphicsBackend.cxx
index 56fca50c8eef..6b63f2509eda 100644
--- a/vcl/headless/SvpGraphicsBackend.cxx
+++ b/vcl/headless/SvpGraphicsBackend.cxx
@@ -61,41 +61,19 @@ void SvpGraphicsBackend::SetFillColor() { 
m_rCairoCommon.m_oFillColor = std::nul
 
 void SvpGraphicsBackend::SetFillColor(Color nColor) { 
m_rCairoCommon.m_oFillColor = nColor; }
 
-void SvpGraphicsBackend::SetXORMode(bool bSet, bool /*bInvertOnly*/)
+void SvpGraphicsBackend::SetXORMode(bool bSet, bool bInvertOnly)
 {
-    m_rCairoCommon.m_ePaintMode = bSet ? PaintMode::Xor : PaintMode::Over;
+    m_rCairoCommon.SetXORMode(bSet, bInvertOnly);
 }
 
 void SvpGraphicsBackend::SetROPLineColor(SalROPColor nROPColor)
 {
-    switch (nROPColor)
-    {
-        case SalROPColor::N0:
-            m_rCairoCommon.m_oLineColor = Color(0, 0, 0);
-            break;
-        case SalROPColor::N1:
-            m_rCairoCommon.m_oLineColor = Color(0xff, 0xff, 0xff);
-            break;
-        case SalROPColor::Invert:
-            m_rCairoCommon.m_oLineColor = Color(0xff, 0xff, 0xff);
-            break;
-    }
+    m_rCairoCommon.SetROPLineColor(nROPColor);
 }
 
 void SvpGraphicsBackend::SetROPFillColor(SalROPColor nROPColor)
 {
-    switch (nROPColor)
-    {
-        case SalROPColor::N0:
-            m_rCairoCommon.m_oFillColor = Color(0, 0, 0);
-            break;
-        case SalROPColor::N1:
-            m_rCairoCommon.m_oFillColor = Color(0xff, 0xff, 0xff);
-            break;
-        case SalROPColor::Invert:
-            m_rCairoCommon.m_oFillColor = Color(0xff, 0xff, 0xff);
-            break;
-    }
+    m_rCairoCommon.SetROPFillColor(nROPColor);
 }
 
 void SvpGraphicsBackend::drawPixel(tools::Long nX, tools::Long nY)
diff --git a/vcl/inc/headless/CairoCommon.hxx b/vcl/inc/headless/CairoCommon.hxx
index b9ba49737e5b..df270b217f3a 100644
--- a/vcl/inc/headless/CairoCommon.hxx
+++ b/vcl/inc/headless/CairoCommon.hxx
@@ -153,6 +153,10 @@ struct VCL_DLLPUBLIC CairoCommon
     void clipRegion(cairo_t* cr);
     static void clipRegion(cairo_t* cr, const vcl::Region& rClipRegion);
 
+    void SetXORMode(bool bSet, bool bInvertOnly);
+    void SetROPLineColor(SalROPColor nROPColor);
+    void SetROPFillColor(SalROPColor nROPColor);
+
     void drawPixel(const std::optional<Color>& rLineColor, tools::Long nX, 
tools::Long nY,
                    bool bAntiAlias);
 
diff --git a/vcl/unx/generic/gdi/X11CairoSalGraphicsImpl.hxx 
b/vcl/unx/generic/gdi/X11CairoSalGraphicsImpl.hxx
index f7e3a13287f9..779e4d7eb796 100644
--- a/vcl/unx/generic/gdi/X11CairoSalGraphicsImpl.hxx
+++ b/vcl/unx/generic/gdi/X11CairoSalGraphicsImpl.hxx
@@ -68,6 +68,24 @@ public:
         X11SalGraphicsImpl::SetFillColor(nColor);
     }
 
+    void SetXORMode(bool bSet, bool bInvertOnly) override
+    {
+        mrCairoCommon.SetXORMode(bSet, bInvertOnly);
+        X11SalGraphicsImpl::SetXORMode(bSet, bInvertOnly);
+    }
+
+    void SetROPLineColor(SalROPColor nROPColor) override
+    {
+        mrCairoCommon.SetROPLineColor(nROPColor);
+        X11SalGraphicsImpl::SetROPLineColor(nROPColor);
+    }
+
+    void SetROPFillColor(SalROPColor nROPColor) override
+    {
+        mrCairoCommon.SetROPFillColor(nROPColor);
+        X11SalGraphicsImpl::SetROPFillColor(nROPColor);
+    }
+
     void clipRegion(cairo_t* cr) { CairoCommon::clipRegion(cr, 
mrCairoCommon.m_aClipRegion); }
 
     void drawPixel(tools::Long nX, tools::Long nY) override;

Reply via email to