basegfx/source/polygon/b2dlinegeometry.cxx | 29 ---------------------------- basegfx/source/polygon/b2dpolygon.cxx | 2 - include/basegfx/polygon/b2dlinegeometry.hxx | 5 ---- vcl/opengl/gdiimpl.cxx | 4 --- 4 files changed, 2 insertions(+), 38 deletions(-)
New commits: commit 37ed508022e0be8b793caa4748cfee634c1c8a9c Author: Tomaž Vajngerl <tomaz.vajng...@collabora.co.uk> Date: Mon May 16 22:25:15 2016 +0900 tdf#99130 use subdivision on B2DPolygon, angle based subdivision Remove the subdivider we used until now as there is a better way to subdivide a polygon with getDefaultAdaptiveSubdivision, which in additiona also caches the result. The subdivider used in getDefaultAdaptiveSubdivision was a limited count based subdivider so this exchanges that with an angle based one which gives much better results. Change-Id: I95c009ccf3d54305df0d8eef177cab0df0a23bea Reviewed-on: https://gerrit.libreoffice.org/25033 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/basegfx/source/polygon/b2dlinegeometry.cxx b/basegfx/source/polygon/b2dlinegeometry.cxx index 2177ff4..799604f 100644 --- a/basegfx/source/polygon/b2dlinegeometry.cxx +++ b/basegfx/source/polygon/b2dlinegeometry.cxx @@ -779,35 +779,6 @@ namespace basegfx namespace tools { - B2DPolygon polygonSubdivide(const B2DPolygon& rCandidate, double fMaxAllowedAngle, double fMaxPartOfEdge) - { - if(fMaxAllowedAngle > F_PI2) - { - fMaxAllowedAngle = F_PI2; - } - else if(fMaxAllowedAngle < 0.01 * F_PI2) - { - fMaxAllowedAngle = 0.01 * F_PI2; - } - - if(fMaxPartOfEdge > 1.0) - { - fMaxPartOfEdge = 1.0; - } - else if(fMaxPartOfEdge < 0.01) - { - fMaxPartOfEdge = 0.01; - } - - B2DPolygon aCandidate(rCandidate); - const double fMaxCos(cos(fMaxAllowedAngle)); - - aCandidate.removeDoublePoints(); - aCandidate = subdivideToSimple(aCandidate, fMaxCos * fMaxCos, fMaxPartOfEdge * fMaxPartOfEdge); - - return aCandidate; - } - B2DPolyPolygon createAreaGeometry( const B2DPolygon& rCandidate, double fHalfLineWidth, diff --git a/basegfx/source/polygon/b2dpolygon.cxx b/basegfx/source/polygon/b2dpolygon.cxx index f46c377..5ad06ea 100644 --- a/basegfx/source/polygon/b2dpolygon.cxx +++ b/basegfx/source/polygon/b2dpolygon.cxx @@ -483,7 +483,7 @@ public: { if(!mpDefaultSubdivision) { - const_cast< ImplBufferedData* >(this)->mpDefaultSubdivision.reset(new basegfx::B2DPolygon(basegfx::tools::adaptiveSubdivideByCount(rSource, 9))); + const_cast< ImplBufferedData* >(this)->mpDefaultSubdivision.reset(new basegfx::B2DPolygon(basegfx::tools::adaptiveSubdivideByAngle(rSource))); } return *mpDefaultSubdivision; diff --git a/include/basegfx/polygon/b2dlinegeometry.hxx b/include/basegfx/polygon/b2dlinegeometry.hxx index d336456..5aefafb 100644 --- a/include/basegfx/polygon/b2dlinegeometry.hxx +++ b/include/basegfx/polygon/b2dlinegeometry.hxx @@ -138,11 +138,6 @@ namespace basegfx double fMaxPartOfEdge = 0.4, double fMiterMinimumAngle = (15.0 * F_PI180)); - BASEGFX_DLLPUBLIC B2DPolygon polygonSubdivide( - const B2DPolygon& rCandidate, - double fMaxAllowedAngle = (12.5 * F_PI180), - double fMaxPartOfEdge = 0.4); - } // end of namespace tools } // end of namespace basegfx diff --git a/vcl/opengl/gdiimpl.cxx b/vcl/opengl/gdiimpl.cxx index 9048344..bba462f 100644 --- a/vcl/opengl/gdiimpl.cxx +++ b/vcl/opengl/gdiimpl.cxx @@ -2064,9 +2064,7 @@ bool OpenGLSalGraphicsImpl::drawPolyLine( basegfx::B2DPolygon aPolygon(rPolygon); if (aPolygon.areControlPointsUsed()) - aPolygon = basegfx::tools::polygonSubdivide(aPolygon, 5 * F_PI180); - else - aPolygon.removeDoublePoints(); + aPolygon = aPolygon.getDefaultAdaptiveSubdivision(); DrawPolyLine(aPolygon, fLineWidth, eLineJoin, eLineCap, fMiterMinimumAngle); }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits