summaryrefslogtreecommitdiff
path: root/basegfx
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2016-05-16 22:25:15 +0900
committerCaolán McNamara <caolanm@redhat.com>2016-05-25 15:35:41 +0000
commitee3bc82d071fc8a7d835399f33c07320f87992ec (patch)
tree25122cfd3d60b6e1bad5fce30cc59244155db47d /basegfx
parent28d2b668c0476bd8dc198656b46c01de6e8c9921 (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. Reviewed-on: https://gerrit.libreoffice.org/25033 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tomaž Vajngerl <quikee@gmail.com> (cherry picked from commit 37ed508022e0be8b793caa4748cfee634c1c8a9c) Change-Id: I95c009ccf3d54305df0d8eef177cab0df0a23bea Reviewed-on: https://gerrit.libreoffice.org/25381 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'basegfx')
-rw-r--r--basegfx/source/polygon/b2dlinegeometry.cxx29
-rw-r--r--basegfx/source/polygon/b2dpolygon.cxx2
2 files changed, 1 insertions, 30 deletions
diff --git a/basegfx/source/polygon/b2dlinegeometry.cxx b/basegfx/source/polygon/b2dlinegeometry.cxx
index a3095caa05f0..c259fef49504 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;