diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2020-06-12 17:56:22 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2020-06-15 11:46:47 +0200 |
commit | 5d8f2c1eda5583dd89dcd1d03cbd38ddb68ad273 (patch) | |
tree | 184090e7a76faf681367e928d16a60eda2e76135 /canvas/source | |
parent | 05d914f01f6b908a2eb02bb9dbbdf662879e2cdd (diff) |
vcl canvas, don't draw bezier curves as straight lines (tdf#133905)
Change-Id: I8a5029ef7aa6e8f46b13f0713445da435b47dbed
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/96209
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'canvas/source')
-rw-r--r-- | canvas/source/vcl/canvashelper.cxx | 29 |
1 files changed, 8 insertions, 21 deletions
diff --git a/canvas/source/vcl/canvashelper.cxx b/canvas/source/vcl/canvashelper.cxx index 981a442a2e6c..78a0ae336b96 100644 --- a/canvas/source/vcl/canvashelper.cxx +++ b/canvas/source/vcl/canvashelper.cxx @@ -394,8 +394,6 @@ namespace vclcanvas // user coordinates. aStrokedPolyPoly.transform( aMatrix ); - const ::tools::PolyPolygon aVCLPolyPoly( aStrokedPolyPoly ); - // TODO(F2): When using alpha here, must handle that via // temporary surface or somesuch. @@ -403,28 +401,17 @@ namespace vclcanvas // self-intersections. Therefore, if we would render it // via OutDev::DrawPolyPolygon(), on/off fill would // generate off areas on those self-intersections. - sal_uInt16 nSize( aVCLPolyPoly.Count() ); - - for( sal_uInt16 i=0; i<nSize; ++i ) + for( sal_uInt32 i=0; i<aStrokedPolyPoly.count(); ++i ) { - if( aStrokedPolyPoly.getB2DPolygon( i ).isClosed() ) { - mpOutDevProvider->getOutDev().DrawPolygon( aVCLPolyPoly[i] ); + const basegfx::B2DPolygon& polygon = aStrokedPolyPoly.getB2DPolygon( i ); + if( polygon.isClosed()) { + mpOutDevProvider->getOutDev().DrawPolygon( polygon ); if( mp2ndOutDevProvider ) - mp2ndOutDevProvider->getOutDev().DrawPolygon( aVCLPolyPoly[i] ); + mp2ndOutDevProvider->getOutDev().DrawPolygon( polygon ); } else { - const sal_uInt16 nPolySize = aVCLPolyPoly[i].GetSize(); - if( nPolySize ) { - Point rPrevPoint = aVCLPolyPoly[i].GetPoint( 0 ); - Point rPoint; - - for( sal_uInt16 j=1; j<nPolySize; j++ ) { - rPoint = aVCLPolyPoly[i].GetPoint( j ); - mpOutDevProvider->getOutDev().DrawLine( rPrevPoint, rPoint ); - if( mp2ndOutDevProvider ) - mp2ndOutDevProvider->getOutDev().DrawLine( rPrevPoint, rPoint ); - rPrevPoint = rPoint; - } - } + mpOutDevProvider->getOutDev().DrawPolyLine( polygon ); + if( mp2ndOutDevProvider ) + mp2ndOutDevProvider->getOutDev().DrawPolyLine( polygon ); } } } |