vcl/headless/SvpGraphicsBackend.cxx |   45 ++++++++++++---
 vcl/headless/svpgdi.cxx             |  108 ++++++++----------------------------
 vcl/inc/headless/CairoCommon.hxx    |   12 ++++
 vcl/inc/headless/svpgdi.hxx         |   15 -----
 4 files changed, 74 insertions(+), 106 deletions(-)

New commits:
commit 96113a1d1df9b1f0e2bf75a90e6111a65250334d
Author:     Tomaž Vajngerl <[email protected]>
AuthorDate: Sun Nov 14 23:07:31 2021 +0100
Commit:     Tomaž Vajngerl <[email protected]>
CommitDate: Thu Dec 30 11:47:46 2021 +0100

    vcl: move lineColor, fillColor and paintMode to SvpGraphicBackend
    
    The member variables are moved to CairoCommon.
    
    Change-Id: Ia03f613c7ad02ec2e7d70705c7666ec25d63f003
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127706
    Tested-by: Jenkins
    Reviewed-by: Tomaž Vajngerl <[email protected]>

diff --git a/vcl/headless/SvpGraphicsBackend.cxx 
b/vcl/headless/SvpGraphicsBackend.cxx
index e41cc5449b88..8b318e2737fb 100644
--- a/vcl/headless/SvpGraphicsBackend.cxx
+++ b/vcl/headless/SvpGraphicsBackend.cxx
@@ -53,19 +53,50 @@ tools::Long SvpGraphicsBackend::GetGraphicsWidth() const
     return m_rCairoCommon.m_pSurface ? m_rCairoCommon.m_aFrameSize.getX() : 0;
 }
 
-void SvpGraphicsBackend::SetLineColor() {}
+void SvpGraphicsBackend::SetLineColor() { m_rCairoCommon.m_aLineColor = 
SALCOLOR_NONE; }
 
-void SvpGraphicsBackend::SetLineColor(Color /*nColor*/) {}
+void SvpGraphicsBackend::SetLineColor(Color nColor) { 
m_rCairoCommon.m_aLineColor = nColor; }
 
-void SvpGraphicsBackend::SetFillColor() {}
+void SvpGraphicsBackend::SetFillColor() { m_rCairoCommon.m_aFillColor = 
SALCOLOR_NONE; }
 
-void SvpGraphicsBackend::SetFillColor(Color /*nColor*/) {}
+void SvpGraphicsBackend::SetFillColor(Color nColor) { 
m_rCairoCommon.m_aFillColor = nColor; }
 
-void SvpGraphicsBackend::SetXORMode(bool /*bSet*/, bool /*bInvertOnly*/) {}
+void SvpGraphicsBackend::SetXORMode(bool bSet, bool /*bInvertOnly*/)
+{
+    m_rCairoCommon.m_ePaintMode = bSet ? PaintMode::Xor : PaintMode::Over;
+}
 
-void SvpGraphicsBackend::SetROPLineColor(SalROPColor /*nROPColor*/) {}
+void SvpGraphicsBackend::SetROPLineColor(SalROPColor nROPColor)
+{
+    switch (nROPColor)
+    {
+        case SalROPColor::N0:
+            m_rCairoCommon.m_aLineColor = Color(0, 0, 0);
+            break;
+        case SalROPColor::N1:
+            m_rCairoCommon.m_aLineColor = Color(0xff, 0xff, 0xff);
+            break;
+        case SalROPColor::Invert:
+            m_rCairoCommon.m_aLineColor = Color(0xff, 0xff, 0xff);
+            break;
+    }
+}
 
-void SvpGraphicsBackend::SetROPFillColor(SalROPColor /*nROPColor*/) {}
+void SvpGraphicsBackend::SetROPFillColor(SalROPColor nROPColor)
+{
+    switch (nROPColor)
+    {
+        case SalROPColor::N0:
+            m_rCairoCommon.m_aFillColor = Color(0, 0, 0);
+            break;
+        case SalROPColor::N1:
+            m_rCairoCommon.m_aFillColor = Color(0xff, 0xff, 0xff);
+            break;
+        case SalROPColor::Invert:
+            m_rCairoCommon.m_aFillColor = Color(0xff, 0xff, 0xff);
+            break;
+    }
+}
 
 void SvpGraphicsBackend::drawPixel(tools::Long /*nX*/, tools::Long /*nY*/) {}
 
diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx
index e8e4ec764ac0..af105897efae 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -859,8 +859,8 @@ void SvpSalGraphics::clipRegion(cairo_t* cr)
 
 bool SvpSalGraphics::drawAlphaRect(tools::Long nX, tools::Long nY, tools::Long 
nWidth, tools::Long nHeight, sal_uInt8 nTransparency)
 {
-    const bool bHasFill(m_aFillColor != SALCOLOR_NONE);
-    const bool bHasLine(m_aLineColor != SALCOLOR_NONE);
+    const bool bHasFill(m_aCairoCommon.m_aFillColor != SALCOLOR_NONE);
+    const bool bHasLine(m_aCairoCommon.m_aLineColor != SALCOLOR_NONE);
 
     if(!(bHasFill || bHasLine))
     {
@@ -879,7 +879,7 @@ bool SvpSalGraphics::drawAlphaRect(tools::Long nX, 
tools::Long nY, tools::Long n
     {
         cairo_rectangle(cr, nX, nY, nWidth, nHeight);
 
-        applyColor(cr, m_aFillColor, fTransparency);
+        applyColor(cr, m_aCairoCommon.m_aFillColor, fTransparency);
 
         // set FillDamage
         extents = getClippedFillDamage(cr);
@@ -897,7 +897,7 @@ bool SvpSalGraphics::drawAlphaRect(tools::Long nX, 
tools::Long nY, tools::Long n
 
         cairo_rectangle(cr, nX, nY, nWidth, nHeight);
 
-        applyColor(cr, m_aLineColor, fTransparency);
+        applyColor(cr, m_aCairoCommon.m_aLineColor, fTransparency);
 
         // expand with possible StrokeDamage
         basegfx::B2DRange stroke_extents = getClippedStrokeDamage(cr);
@@ -914,9 +914,6 @@ bool SvpSalGraphics::drawAlphaRect(tools::Long nX, 
tools::Long nY, tools::Long n
 
 SvpSalGraphics::SvpSalGraphics()
     : m_fScale(1.0)
-    , m_aLineColor(Color(0x00, 0x00, 0x00))
-    , m_aFillColor(Color(0xFF, 0xFF, 0XFF))
-    , m_ePaintMode(PaintMode::Over)
     , m_aTextRenderImpl(*this)
     , m_pBackend(new SvpGraphicsBackend(m_aCairoCommon))
 {
@@ -942,68 +939,11 @@ void SvpSalGraphics::GetResolution( sal_Int32& rDPIX, 
sal_Int32& rDPIY )
     rDPIX = rDPIY = 96;
 }
 
-void SvpSalGraphics::SetLineColor()
-{
-    m_aLineColor = SALCOLOR_NONE;
-}
-
-void SvpSalGraphics::SetLineColor( Color nColor )
-{
-    m_aLineColor = nColor;
-}
-
-void SvpSalGraphics::SetFillColor()
-{
-    m_aFillColor = SALCOLOR_NONE;
-}
-
-void SvpSalGraphics::SetFillColor( Color nColor )
-{
-    m_aFillColor = nColor;
-}
-
-void SvpSalGraphics::SetXORMode(bool bSet, bool )
-{
-    m_ePaintMode = bSet ? PaintMode::Xor : PaintMode::Over;
-}
-
-void SvpSalGraphics::SetROPLineColor( SalROPColor nROPColor )
-{
-    switch( nROPColor )
-    {
-        case SalROPColor::N0:
-            m_aLineColor = Color(0, 0, 0);
-            break;
-        case SalROPColor::N1:
-            m_aLineColor = Color(0xff, 0xff, 0xff);
-            break;
-        case SalROPColor::Invert:
-            m_aLineColor = Color(0xff, 0xff, 0xff);
-            break;
-    }
-}
-
-void SvpSalGraphics::SetROPFillColor( SalROPColor nROPColor )
-{
-    switch( nROPColor )
-    {
-        case SalROPColor::N0:
-            m_aFillColor = Color(0, 0, 0);
-            break;
-        case SalROPColor::N1:
-            m_aFillColor = Color(0xff, 0xff, 0xff);
-            break;
-        case SalROPColor::Invert:
-            m_aFillColor = Color(0xff, 0xff, 0xff);
-            break;
-    }
-}
-
 void SvpSalGraphics::drawPixel( tools::Long nX, tools::Long nY )
 {
-    if (m_aLineColor != SALCOLOR_NONE)
+    if (m_aCairoCommon.m_aLineColor != SALCOLOR_NONE)
     {
-        drawPixel(nX, nY, m_aLineColor);
+        drawPixel(nX, nY, m_aCairoCommon.m_aLineColor);
     }
 }
 
@@ -1023,40 +963,40 @@ void SvpSalGraphics::drawPixel( tools::Long nX, 
tools::Long nY, Color aColor )
 void SvpSalGraphics::drawRect( tools::Long nX, tools::Long nY, tools::Long 
nWidth, tools::Long nHeight )
 {
     // because of the -1 hack we have to do fill and draw separately
-    Color aOrigFillColor = m_aFillColor;
-    Color aOrigLineColor = m_aLineColor;
-    m_aFillColor = SALCOLOR_NONE;
-    m_aLineColor = SALCOLOR_NONE;
+    Color aOrigFillColor = m_aCairoCommon.m_aFillColor;
+    Color aOrigLineColor = m_aCairoCommon.m_aLineColor;
+    m_aCairoCommon.m_aFillColor = SALCOLOR_NONE;
+    m_aCairoCommon.m_aLineColor = SALCOLOR_NONE;
 
     if (aOrigFillColor != SALCOLOR_NONE)
     {
         basegfx::B2DPolygon aRect = 
basegfx::utils::createPolygonFromRect(basegfx::B2DRectangle(nX, nY, nX+nWidth, 
nY+nHeight));
-        m_aFillColor = aOrigFillColor;
+        m_aCairoCommon.m_aFillColor = aOrigFillColor;
 
         drawPolyPolygon(
             basegfx::B2DHomMatrix(),
             basegfx::B2DPolyPolygon(aRect),
             0.0);
 
-        m_aFillColor = SALCOLOR_NONE;
+        m_aCairoCommon.m_aFillColor = SALCOLOR_NONE;
     }
 
     if (aOrigLineColor != SALCOLOR_NONE)
     {
         // need same -1 hack as X11SalGraphicsImpl::drawRect
         basegfx::B2DPolygon aRect = 
basegfx::utils::createPolygonFromRect(basegfx::B2DRectangle( nX, nY, 
nX+nWidth-1, nY+nHeight-1));
-        m_aLineColor = aOrigLineColor;
+        m_aCairoCommon.m_aLineColor = aOrigLineColor;
 
         drawPolyPolygon(
             basegfx::B2DHomMatrix(),
             basegfx::B2DPolyPolygon(aRect),
             0.0);
 
-        m_aLineColor = SALCOLOR_NONE;
+        m_aCairoCommon.m_aLineColor = SALCOLOR_NONE;
     }
 
-    m_aFillColor = aOrigFillColor;
-    m_aLineColor = aOrigLineColor;
+    m_aCairoCommon.m_aFillColor = aOrigFillColor;
+    m_aCairoCommon.m_aLineColor = aOrigLineColor;
 }
 
 void SvpSalGraphics::drawPolyLine(sal_uInt32 nPoints, const Point* pPtAry)
@@ -1332,7 +1272,7 @@ void SvpSalGraphics::drawLine( tools::Long nX1, 
tools::Long nY1, tools::Long nX2
         !getAntiAlias(),
         false);
 
-    applyColor(cr, m_aLineColor);
+    applyColor(cr, m_aCairoCommon.m_aLineColor);
 
     basegfx::B2DRange extents = getClippedStrokeDamage(cr);
     extents.transform(basegfx::utils::createTranslateB2DHomMatrix(0.5, 0.5));
@@ -1461,7 +1401,7 @@ bool SvpSalGraphics::drawPolyLine(
         drawPolyLine(
             cr,
             &aExtents,
-            m_aLineColor,
+            m_aCairoCommon.m_aLineColor,
             getAntiAlias(),
             rObjectToDevice,
             rPolyLine,
@@ -1820,8 +1760,8 @@ bool SvpSalGraphics::drawPolyPolygon(
     const basegfx::B2DPolyPolygon& rPolyPolygon,
     double fTransparency)
 {
-    const bool bHasFill(m_aFillColor != SALCOLOR_NONE);
-    const bool bHasLine(m_aLineColor != SALCOLOR_NONE);
+    const bool bHasFill(m_aCairoCommon.m_aFillColor != SALCOLOR_NONE);
+    const bool bHasLine(m_aCairoCommon.m_aLineColor != SALCOLOR_NONE);
 
     if(0 == rPolyPolygon.count() || !(bHasFill || bHasLine) || fTransparency < 
0.0 || fTransparency >= 1.0)
     {
@@ -1854,7 +1794,7 @@ bool SvpSalGraphics::drawPolyPolygon(
     {
         add_polygon_path(cr, rPolyPolygon, rObjectToDevice, !getAntiAlias());
 
-        applyColor(cr, m_aFillColor, fTransparency);
+        applyColor(cr, m_aCairoCommon.m_aFillColor, fTransparency);
         // Get FillDamage (will be extended for LineDamage below)
         extents = getClippedFillDamage(cr);
 
@@ -1870,7 +1810,7 @@ bool SvpSalGraphics::drawPolyPolygon(
 
         add_polygon_path(cr, rPolyPolygon, rObjectToDevice, !getAntiAlias());
 
-        applyColor(cr, m_aLineColor, fTransparency);
+        applyColor(cr, m_aCairoCommon.m_aLineColor, fTransparency);
 
         // expand with possible StrokeDamage
         basegfx::B2DRange stroke_extents = getClippedStrokeDamage(cr);
@@ -2475,7 +2415,7 @@ cairo_t* 
SvpSalGraphics::createTmpCompatibleCairoContext() const
 cairo_t* SvpSalGraphics::getCairoContext(bool bXorModeAllowed) const
 {
     cairo_t* cr;
-    if (m_ePaintMode == PaintMode::Xor && bXorModeAllowed)
+    if (m_aCairoCommon.m_ePaintMode == PaintMode::Xor && bXorModeAllowed)
         cr = createTmpCompatibleCairoContext();
     else
         cr = cairo_create(m_aCairoCommon.m_pSurface);
@@ -2499,7 +2439,7 @@ cairo_user_data_key_t* SvpSalGraphics::getDamageKey()
 
 void SvpSalGraphics::releaseCairoContext(cairo_t* cr, bool bXorModeAllowed, 
const basegfx::B2DRange& rExtents) const
 {
-    const bool bXoring = (m_ePaintMode == PaintMode::Xor && bXorModeAllowed);
+    const bool bXoring = (m_aCairoCommon.m_ePaintMode == PaintMode::Xor && 
bXorModeAllowed);
 
     if (rExtents.isEmpty())
     {
diff --git a/vcl/inc/headless/CairoCommon.hxx b/vcl/inc/headless/CairoCommon.hxx
index ee924edb17e1..f0b929880d0c 100644
--- a/vcl/inc/headless/CairoCommon.hxx
+++ b/vcl/inc/headless/CairoCommon.hxx
@@ -60,14 +60,26 @@ typedef struct _cairo cairo_t;
 typedef struct _cairo_surface cairo_surface_t;
 typedef struct _cairo_user_data_key cairo_user_data_key_t;
 
+enum class PaintMode
+{
+    Over,
+    Xor
+};
+
 struct VCL_DLLPUBLIC CairoCommon
 {
     cairo_surface_t* m_pSurface;
     basegfx::B2IVector m_aFrameSize;
     vcl::Region m_aClipRegion;
+    Color m_aLineColor;
+    Color m_aFillColor;
+    PaintMode m_ePaintMode;
 
     CairoCommon()
         : m_pSurface(nullptr)
+        , m_aLineColor(Color(0x00, 0x00, 0x00))
+        , m_aFillColor(Color(0xFF, 0xFF, 0XFF))
+        , m_ePaintMode(PaintMode::Over)
     {
     }
 
diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx
index 5a6bcf9b3f91..7c4c2d8813a1 100644
--- a/vcl/inc/headless/svpgdi.hxx
+++ b/vcl/inc/headless/svpgdi.hxx
@@ -45,8 +45,6 @@ class FreetypeFont;
 VCL_DLLPUBLIC void dl_cairo_surface_set_device_scale(cairo_surface_t *surface, 
double x_scale, double y_scale);
 VCL_DLLPUBLIC void dl_cairo_surface_get_device_scale(cairo_surface_t *surface, 
double *x_scale, double *y_scale);
 
-enum class PaintMode { Over, Xor };
-
 typedef void (*damageHandler)(void* handle,
                               sal_Int32 nExtentsX, sal_Int32 nExtentsY,
                               sal_Int32 nExtentsWidth, sal_Int32 
nExtentsHeight);
@@ -61,9 +59,6 @@ class VCL_DLLPUBLIC SvpSalGraphics : public 
SalGraphicsAutoDelegateToImpl
 {
     CairoCommon m_aCairoCommon;
     double                         m_fScale;
-    Color                          m_aLineColor;
-    Color                          m_aFillColor;
-    PaintMode                      m_ePaintMode;
 
 public:
     void setSurface(cairo_surface_t* pSurface, const basegfx::B2IVector& 
rSize);
@@ -129,16 +124,6 @@ public:
 
     virtual void            GetResolution( sal_Int32& rDPIX, sal_Int32& rDPIY 
) override;
 
-    virtual void            SetLineColor() override;
-    virtual void            SetLineColor( Color nColor ) override;
-    virtual void            SetFillColor() override;
-    virtual void            SetFillColor( Color nColor ) override;
-
-    virtual void            SetXORMode( bool bSet, bool ) override;
-
-    virtual void            SetROPLineColor( SalROPColor nROPColor ) override;
-    virtual void            SetROPFillColor( SalROPColor nROPColor ) override;
-
     virtual void            SetTextColor( Color nColor ) override;
     virtual void            SetFont(LogicalFontInstance*, int nFallbackLevel) 
override;
     virtual void            GetFontMetric( ImplFontMetricDataRef&, int 
nFallbackLevel ) override;

Reply via email to