canvas/source/vcl/canvashelper.cxx | 44 ++++++++++++++----------------------- 1 file changed, 17 insertions(+), 27 deletions(-)
New commits: commit 748723883a626b499f605d7a5bad92e25b69a0e4 Author: Luboš Luňák <[email protected]> AuthorDate: Thu Sep 24 13:34:51 2020 +0200 Commit: Luboš Luňák <[email protected]> CommitDate: Tue Sep 29 09:55:14 2020 +0200 Revert "don't split polypolygon in canvas if not needed" (tdf#136933) With the doc from tdf#136933 basegfx::utils::createNonzeroConform() gets called with huge polygons, which is very expensive. Revert this, I'll fix the Skia problem by directly trying to draw the stroked polygon with VCL. This reverts commit b0788ff11481568b413ff6e4c3ea4871984af974. Change-Id: I19b3435811b6ea38d83bea08056802aac76bf45c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103312 Tested-by: Jenkins Reviewed-by: Luboš Luňák <[email protected]> diff --git a/canvas/source/vcl/canvashelper.cxx b/canvas/source/vcl/canvashelper.cxx index 2e8476649e3d..a9c9e1eda6d3 100644 --- a/canvas/source/vcl/canvashelper.cxx +++ b/canvas/source/vcl/canvashelper.cxx @@ -25,7 +25,6 @@ #include <basegfx/polygon/b2dlinegeometry.hxx> #include <basegfx/polygon/b2dpolygon.hxx> #include <basegfx/polygon/b2dpolygontools.hxx> -#include <basegfx/polygon/b2dpolypolygoncutter.hxx> #include <basegfx/polygon/b2dpolypolygontools.hxx> #include <basegfx/range/b2drectangle.hxx> #include <basegfx/utils/canvastools.hxx> @@ -395,33 +394,24 @@ namespace vclcanvas // user coordinates. aStrokedPolyPoly.transform( aMatrix ); - if(aStrokedPolyPoly.isClosed()) - { - // Note: the generated stroke poly-polygon is NOT free of - // self-intersections. Therefore, if we would render it - // directly via OutDev::DrawPolyPolygon(), on/off fill would - // generate off areas on those self-intersections. - aStrokedPolyPoly = basegfx::utils::createNonzeroConform( aStrokedPolyPoly ); - mpOutDevProvider->getOutDev().DrawPolyPolygon( aStrokedPolyPoly ); - if( mp2ndOutDevProvider ) - mp2ndOutDevProvider->getOutDev().DrawPolyPolygon( aStrokedPolyPoly ); - } - else + // TODO(F2): When using alpha here, must handle that via + // temporary surface or somesuch. + + // Note: the generated stroke poly-polygon is NOT free of + // self-intersections. Therefore, if we would render it + // via OutDev::DrawPolyPolygon(), on/off fill would + // generate off areas on those self-intersections. + for( sal_uInt32 i=0; i<aStrokedPolyPoly.count(); ++i ) { - // TODO(F2): When using alpha here, must handle that via - // temporary surface or somesuch. - for( sal_uInt32 i=0; i<aStrokedPolyPoly.count(); ++i ) - { - const basegfx::B2DPolygon& polygon = aStrokedPolyPoly.getB2DPolygon( i ); - if( polygon.isClosed()) { - mpOutDevProvider->getOutDev().DrawPolygon( polygon ); - if( mp2ndOutDevProvider ) - mp2ndOutDevProvider->getOutDev().DrawPolygon( polygon ); - } else { - mpOutDevProvider->getOutDev().DrawPolyLine( polygon ); - if( mp2ndOutDevProvider ) - mp2ndOutDevProvider->getOutDev().DrawPolyLine( polygon ); - } + const basegfx::B2DPolygon& polygon = aStrokedPolyPoly.getB2DPolygon( i ); + if( polygon.isClosed()) { + mpOutDevProvider->getOutDev().DrawPolygon( polygon ); + if( mp2ndOutDevProvider ) + mp2ndOutDevProvider->getOutDev().DrawPolygon( polygon ); + } else { + mpOutDevProvider->getOutDev().DrawPolyLine( polygon ); + if( mp2ndOutDevProvider ) + mp2ndOutDevProvider->getOutDev().DrawPolyLine( polygon ); } } } _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
