diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2016-05-16 22:25:15 +0900 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2016-05-17 11:31:43 +0000 |
commit | 37ed508022e0be8b793caa4748cfee634c1c8a9c (patch) | |
tree | c5ecb5752b528df4a6dc7af69d55313cdb1a2ffe /basegfx | |
parent | f935bf47d1928f3b4df9cde600ce365cd63e485d (diff) |
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 <ci@libreoffice.org>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'basegfx')
-rw-r--r-- | basegfx/source/polygon/b2dlinegeometry.cxx | 29 | ||||
-rw-r--r-- | basegfx/source/polygon/b2dpolygon.cxx | 2 |
2 files changed, 1 insertions, 30 deletions
diff --git a/basegfx/source/polygon/b2dlinegeometry.cxx b/basegfx/source/polygon/b2dlinegeometry.cxx index 2177ff45fb5f..799604f37014 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 f46c37729939..5ad06eaedb57 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; |