[Libreoffice-commits] core.git: vcl/headless
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Wed Jul 24 07:16:38 UTC 2019
vcl/headless/svpgdi.cxx | 72 ++++++++++++++++++++++++++----------------------
1 file changed, 40 insertions(+), 32 deletions(-)
New commits:
commit d33a73a2f8a17d7e399ddab0da96e83aab009e55
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Tue Jul 23 17:31:28 2019 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Wed Jul 24 09:15:12 2019 +0200
Related: tdf#126227 factor out setting the polygon path
this change should have no visual effect
Change-Id: Id93519e6b74e2c9bc4ddf20e7ab903689d7d8ee3
Reviewed-on: https://gerrit.libreoffice.org/76197
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 b0e4c40cc5fa..18b9c88cc905 100644
--- a/vcl/headless/svpgdi.cxx
+++ b/vcl/headless/svpgdi.cxx
@@ -1377,6 +1377,45 @@ bool SvpSalGraphics::drawPolyPolygonBezier( sal_uInt32,
return false;
}
+namespace
+{
+ void add_polygon_path(cairo_t* cr, const basegfx::B2DPolyPolygon& rPolyPolygon, const basegfx::B2DHomMatrix& rObjectToDevice, bool bPixelSnap)
+ {
+ // try to access buffered data
+ std::shared_ptr<SystemDependentData_CairoPath> pSystemDependentData_CairoPath(
+ rPolyPolygon.getSystemDependentData<SystemDependentData_CairoPath>());
+
+ if(pSystemDependentData_CairoPath)
+ {
+ // re-use data
+ cairo_append_path(cr, pSystemDependentData_CairoPath->getCairoPath());
+ }
+ else
+ {
+ // create data
+ for (const auto & rPoly : rPolyPolygon)
+ {
+ // PixelOffset used: Was dependent of 'm_aLineColor != SALCOLOR_NONE'
+ // Adapt setupPolyPolygon-users to set a linear transformation to achieve PixelOffset
+ AddPolygonToPath(
+ cr,
+ rPoly,
+ rObjectToDevice,
+ bPixelSnap,
+ false);
+ }
+
+ // copy and add to buffering mechanism
+ // for decisions how/what to buffer, see Note in WinSalGraphicsImpl::drawPolyPolygon
+ pSystemDependentData_CairoPath = rPolyPolygon.addOrReplaceSystemDependentData<SystemDependentData_CairoPath>(
+ ImplGetSystemDependentDataManager(),
+ cairo_copy_path(cr),
+ false,
+ false);
+ }
+ }
+}
+
bool SvpSalGraphics::drawPolyPolygon(
const basegfx::B2DHomMatrix& rObjectToDevice,
const basegfx::B2DPolyPolygon& rPolyPolygon,
@@ -1409,38 +1448,7 @@ bool SvpSalGraphics::drawPolyPolygon(
cairo_set_matrix(cr, &aMatrix);
}
- // try to access buffered data
- std::shared_ptr<SystemDependentData_CairoPath> pSystemDependentData_CairoPath(
- rPolyPolygon.getSystemDependentData<SystemDependentData_CairoPath>());
-
- if(pSystemDependentData_CairoPath)
- {
- // re-use data
- cairo_append_path(cr, pSystemDependentData_CairoPath->getCairoPath());
- }
- else
- {
- // create data
- for (const auto & rPoly : rPolyPolygon)
- {
- // PixelOffset used: Was dependent of 'm_aLineColor != SALCOLOR_NONE'
- // Adapt setupPolyPolygon-users to set a linear transformation to achieve PixelOffset
- AddPolygonToPath(
- cr,
- rPoly,
- rObjectToDevice,
- !getAntiAliasB2DDraw(),
- false);
- }
-
- // copy and add to buffering mechanism
- // for decisions how/what to buffer, see Note in WinSalGraphicsImpl::drawPolyPolygon
- pSystemDependentData_CairoPath = rPolyPolygon.addOrReplaceSystemDependentData<SystemDependentData_CairoPath>(
- ImplGetSystemDependentDataManager(),
- cairo_copy_path(cr),
- false,
- false);
- }
+ add_polygon_path(cr, rPolyPolygon, rObjectToDevice, !getAntiAliasB2DDraw());
// To make releaseCairoContext work, use empty extents
basegfx::B2DRange extents;
More information about the Libreoffice-commits
mailing list