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;