diff options
author | Noel Grandin <noel@peralex.com> | 2014-03-05 09:33:59 +0200 |
---|---|---|
committer | Noel Grandin <noel@peralex.com> | 2014-03-05 09:34:36 +0200 |
commit | 1f6cce7e52c5007457d1a39263efe54ee87e9fab (patch) | |
tree | 21b5cf13e0e08a7d6f81694f4c06896d2d5963c8 /basegfx/source/polygon | |
parent | 8c443f5c03d5202a7ef0c2738a21c74c36ef06a2 (diff) |
Revert "remove unused code in basegfx"
Some of this code is used by Windows.
This reverts commit b96724560f119b1b9ab8b5e1ee1759fd9b2db203.
Diffstat (limited to 'basegfx/source/polygon')
-rw-r--r-- | basegfx/source/polygon/b2dpolygontools.cxx | 43 | ||||
-rw-r--r-- | basegfx/source/polygon/b2dpolypolygontools.cxx | 18 | ||||
-rw-r--r-- | basegfx/source/polygon/b3dpolypolygontools.cxx | 7 |
3 files changed, 68 insertions, 0 deletions
diff --git a/basegfx/source/polygon/b2dpolygontools.cxx b/basegfx/source/polygon/b2dpolygontools.cxx index dc511b957122..5a3dfcd4c076 100644 --- a/basegfx/source/polygon/b2dpolygontools.cxx +++ b/basegfx/source/polygon/b2dpolygontools.cxx @@ -3134,6 +3134,49 @@ namespace basegfx } + // comparators with tolerance for 2D Polygons + + bool equal(const B2DPolygon& rCandidateA, const B2DPolygon& rCandidateB, const double& rfSmallValue) + { + const sal_uInt32 nPointCount(rCandidateA.count()); + + if(nPointCount != rCandidateB.count()) + return false; + + const bool bClosed(rCandidateA.isClosed()); + + if(bClosed != rCandidateB.isClosed()) + return false; + + const bool bAreControlPointsUsed(rCandidateA.areControlPointsUsed()); + + if(bAreControlPointsUsed != rCandidateB.areControlPointsUsed()) + return false; + + for(sal_uInt32 a(0); a < nPointCount; a++) + { + const B2DPoint aPoint(rCandidateA.getB2DPoint(a)); + + if(!aPoint.equal(rCandidateB.getB2DPoint(a), rfSmallValue)) + return false; + + if(bAreControlPointsUsed) + { + const basegfx::B2DPoint aPrev(rCandidateA.getPrevControlPoint(a)); + + if(!aPrev.equal(rCandidateB.getPrevControlPoint(a), rfSmallValue)) + return false; + + const basegfx::B2DPoint aNext(rCandidateA.getNextControlPoint(a)); + + if(!aNext.equal(rCandidateB.getNextControlPoint(a), rfSmallValue)) + return false; + } + } + + return true; + } + // snap points of horizontal or vertical edges to discrete values B2DPolygon snapPointsOfHorizontalOrVerticalEdges(const B2DPolygon& rCandidate) { diff --git a/basegfx/source/polygon/b2dpolypolygontools.cxx b/basegfx/source/polygon/b2dpolypolygontools.cxx index 91fb9bde477b..d7b2b5fb236d 100644 --- a/basegfx/source/polygon/b2dpolypolygontools.cxx +++ b/basegfx/source/polygon/b2dpolypolygontools.cxx @@ -497,6 +497,24 @@ namespace basegfx return aRetval; } + bool containsOnlyHorizontalAndVerticalEdges(const B2DPolyPolygon& rCandidate) + { + if(rCandidate.areControlPointsUsed()) + { + return false; + } + + for(sal_uInt32 a(0); a < rCandidate.count(); a++) + { + if(!containsOnlyHorizontalAndVerticalEdges(rCandidate.getB2DPolygon(a))) + { + return false; + } + } + + return true; + } + B2DPolyPolygon createSevenSegmentPolyPolygon(sal_Char nNumber, bool bLitSegments) { // config here diff --git a/basegfx/source/polygon/b3dpolypolygontools.cxx b/basegfx/source/polygon/b3dpolypolygontools.cxx index 45bcddc0c753..33c0c67f0768 100644 --- a/basegfx/source/polygon/b3dpolypolygontools.cxx +++ b/basegfx/source/polygon/b3dpolypolygontools.cxx @@ -505,6 +505,13 @@ namespace basegfx return true; } + bool equal(const B3DPolyPolygon& rCandidateA, const B3DPolyPolygon& rCandidateB) + { + const double fSmallValue(fTools::getSmallValue()); + + return equal(rCandidateA, rCandidateB, fSmallValue); + } + /// converters for com::sun::star::drawing::PolyPolygonShape3D B3DPolyPolygon UnoPolyPolygonShape3DToB3DPolyPolygon( const com::sun::star::drawing::PolyPolygonShape3D& rPolyPolygonShape3DSource, |