summaryrefslogtreecommitdiff
path: root/basegfx/inc
diff options
context:
space:
mode:
authorArmin Weiss <aw@openoffice.org>2003-11-06 15:30:30 +0000
committerArmin Weiss <aw@openoffice.org>2003-11-06 15:30:30 +0000
commitfef23aeb65bed8951a90ed71beb1552b62cfce71 (patch)
treed2ee4fe2d735d77de4f1618ea6664042269a67fa /basegfx/inc
parent8db4a5314c1b74eba07f4f4e383fafa24239e1f1 (diff)
Added tooling for PolyPolygon cutting and some more tooling at B2DPolygon and B2DPolyPolygon
Diffstat (limited to 'basegfx/inc')
-rw-r--r--basegfx/inc/basegfx/curve/b2dcubicbezier.hxx34
-rw-r--r--basegfx/inc/basegfx/curve/b2dquadraticbezier.hxx28
-rw-r--r--basegfx/inc/basegfx/point/b2dhompoint.hxx6
-rw-r--r--basegfx/inc/basegfx/point/b2dpoint.hxx14
-rw-r--r--basegfx/inc/basegfx/point/b3dhompoint.hxx6
-rw-r--r--basegfx/inc/basegfx/point/b3dpoint.hxx12
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolygon.hxx31
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolygontools.hxx62
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx12
-rw-r--r--basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx21
-rw-r--r--basegfx/inc/basegfx/range/b1drange.hxx9
-rw-r--r--basegfx/inc/basegfx/range/b2drange.hxx12
-rw-r--r--basegfx/inc/basegfx/range/b3drange.hxx13
-rw-r--r--basegfx/inc/basegfx/vector/b2dvector.hxx10
-rw-r--r--basegfx/inc/basegfx/vector/b3dvector.hxx12
15 files changed, 181 insertions, 101 deletions
diff --git a/basegfx/inc/basegfx/curve/b2dcubicbezier.hxx b/basegfx/inc/basegfx/curve/b2dcubicbezier.hxx
index 66f70223a14f..9761367bdd1b 100644
--- a/basegfx/inc/basegfx/curve/b2dcubicbezier.hxx
+++ b/basegfx/inc/basegfx/curve/b2dcubicbezier.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b2dcubicbezier.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:25:35 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:23 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -74,17 +74,17 @@ namespace basegfx
{
class B2DCubicBezier
{
- point::B2DPoint maStartPoint;
- point::B2DPoint maEndPoint;
- point::B2DPoint maControlPointA;
- point::B2DPoint maControlPointB;
+ ::basegfx::point::B2DPoint maStartPoint;
+ ::basegfx::point::B2DPoint maEndPoint;
+ ::basegfx::point::B2DPoint maControlPointA;
+ ::basegfx::point::B2DPoint maControlPointB;
public:
B2DCubicBezier();
B2DCubicBezier(const B2DCubicBezier& rBezier);
- B2DCubicBezier(const point::B2DPoint& rStart, const point::B2DPoint& rEnd);
- B2DCubicBezier(const point::B2DPoint& rStart, const point::B2DPoint& rControlPointA,
- const point::B2DPoint& rControlPointB, const point::B2DPoint& rEnd);
+ B2DCubicBezier(const ::basegfx::point::B2DPoint& rStart, const ::basegfx::point::B2DPoint& rEnd);
+ B2DCubicBezier(const ::basegfx::point::B2DPoint& rStart, const ::basegfx::point::B2DPoint& rControlPointA,
+ const ::basegfx::point::B2DPoint& rControlPointB, const ::basegfx::point::B2DPoint& rEnd);
~B2DCubicBezier();
// assignment operator
@@ -101,17 +101,17 @@ namespace basegfx
void testAndSolveTrivialBezier();
// data interface
- point::B2DPoint getStartPoint() const { return maStartPoint; }
- void setStartPoint(const point::B2DPoint& rValue) { maStartPoint = rValue; }
+ ::basegfx::point::B2DPoint getStartPoint() const { return maStartPoint; }
+ void setStartPoint(const ::basegfx::point::B2DPoint& rValue) { maStartPoint = rValue; }
- point::B2DPoint getEndPoint() const { return maEndPoint; }
- void setEndPoint(const point::B2DPoint& rValue) { maEndPoint = rValue; }
+ ::basegfx::point::B2DPoint getEndPoint() const { return maEndPoint; }
+ void setEndPoint(const ::basegfx::point::B2DPoint& rValue) { maEndPoint = rValue; }
- point::B2DPoint getControlPointA() const { return maControlPointA; }
- void setControlPointA(const point::B2DPoint& rValue) { maControlPointA = rValue; }
+ ::basegfx::point::B2DPoint getControlPointA() const { return maControlPointA; }
+ void setControlPointA(const ::basegfx::point::B2DPoint& rValue) { maControlPointA = rValue; }
- point::B2DPoint getControlPointB() const { return maControlPointB; }
- void setControlPointB(const point::B2DPoint& rValue) { maControlPointB = rValue; }
+ ::basegfx::point::B2DPoint getControlPointB() const { return maControlPointB; }
+ void setControlPointB(const ::basegfx::point::B2DPoint& rValue) { maControlPointB = rValue; }
};
} // end of namespace curve
} // end of namespace basegfx
diff --git a/basegfx/inc/basegfx/curve/b2dquadraticbezier.hxx b/basegfx/inc/basegfx/curve/b2dquadraticbezier.hxx
index 72c4df358c74..95f7eeda845a 100644
--- a/basegfx/inc/basegfx/curve/b2dquadraticbezier.hxx
+++ b/basegfx/inc/basegfx/curve/b2dquadraticbezier.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b2dquadraticbezier.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:25:35 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:23 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -74,16 +74,16 @@ namespace basegfx
{
class B2DQuadraticBezier
{
- point::B2DPoint maStartPoint;
- point::B2DPoint maEndPoint;
- point::B2DPoint maControlPoint;
+ ::basegfx::point::B2DPoint maStartPoint;
+ ::basegfx::point::B2DPoint maEndPoint;
+ ::basegfx::point::B2DPoint maControlPoint;
public:
B2DQuadraticBezier();
B2DQuadraticBezier(const B2DQuadraticBezier& rBezier);
- B2DQuadraticBezier(const point::B2DPoint& rStart, const point::B2DPoint& rEnd);
- B2DQuadraticBezier(const point::B2DPoint& rStart,
- const point::B2DPoint& rControlPoint, const point::B2DPoint& rEnd);
+ B2DQuadraticBezier(const ::basegfx::point::B2DPoint& rStart, const ::basegfx::point::B2DPoint& rEnd);
+ B2DQuadraticBezier(const ::basegfx::point::B2DPoint& rStart,
+ const ::basegfx::point::B2DPoint& rControlPoint, const ::basegfx::point::B2DPoint& rEnd);
~B2DQuadraticBezier();
// assignment operator
@@ -97,14 +97,14 @@ namespace basegfx
sal_Bool isBezier() const;
// data interface
- point::B2DPoint getStartPoint() const { return maStartPoint; }
- void setStartPoint(const point::B2DPoint& rValue) { maStartPoint = rValue; }
+ ::basegfx::point::B2DPoint getStartPoint() const { return maStartPoint; }
+ void setStartPoint(const ::basegfx::point::B2DPoint& rValue) { maStartPoint = rValue; }
- point::B2DPoint getEndPoint() const { return maEndPoint; }
- void setEndPoint(const point::B2DPoint& rValue) { maEndPoint = rValue; }
+ ::basegfx::point::B2DPoint getEndPoint() const { return maEndPoint; }
+ void setEndPoint(const ::basegfx::point::B2DPoint& rValue) { maEndPoint = rValue; }
- point::B2DPoint getControlPoint() const { return maControlPoint; }
- void setControlPoint(const point::B2DPoint& rValue) { maControlPoint = rValue; }
+ ::basegfx::point::B2DPoint getControlPoint() const { return maControlPoint; }
+ void setControlPoint(const ::basegfx::point::B2DPoint& rValue) { maControlPoint = rValue; }
};
} // end of namespace curve
} // end of namespace basegfx
diff --git a/basegfx/inc/basegfx/point/b2dhompoint.hxx b/basegfx/inc/basegfx/point/b2dhompoint.hxx
index 5407b2653029..3b145bf4e444 100644
--- a/basegfx/inc/basegfx/point/b2dhompoint.hxx
+++ b/basegfx/inc/basegfx/point/b2dhompoint.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b2dhompoint.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:25:38 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:23 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -87,7 +87,7 @@ namespace basegfx
{
protected:
/// This member contains the coordinate part of the point
- tuple::B2DTuple maTuple;
+ ::basegfx::tuple::B2DTuple maTuple;
/// This Member holds the homogenous part of the point
double mfW;
diff --git a/basegfx/inc/basegfx/point/b2dpoint.hxx b/basegfx/inc/basegfx/point/b2dpoint.hxx
index 723e734abce9..297bada3ba56 100644
--- a/basegfx/inc/basegfx/point/b2dpoint.hxx
+++ b/basegfx/inc/basegfx/point/b2dpoint.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b2dpoint.hxx,v $
*
- * $Revision: 1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: aw $ $Date: 2003-10-31 10:12:49 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:23 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -84,7 +84,7 @@ namespace basegfx
@see B2DTuple
*/
- class B2DPoint : public tuple::B2DTuple
+ class B2DPoint : public ::basegfx::tuple::B2DTuple
{
public:
/** Create a 2D Point
@@ -123,7 +123,7 @@ namespace basegfx
/** constructor with tuple to allow copy-constructing
from B2DTuple-based classes
*/
- B2DPoint(const B2DTuple& rTuple)
+ B2DPoint(const ::basegfx::tuple::B2DTuple& rTuple)
: B2DTuple(rTuple)
{}
@@ -133,18 +133,18 @@ namespace basegfx
/** assignment operator to allow assigning the results
of B2DTuple calculations
*/
- B2DPoint& operator=( const B2DTuple& rPoint );
+ B2DPoint& operator=( const ::basegfx::tuple::B2DTuple& rPoint );
/** Transform point by given transformation matrix.
The translational components of the matrix are, in
contrast to B2DVector, applied.
*/
- B2DPoint& operator*=( const matrix::B2DHomMatrix& rMat );
+ B2DPoint& operator*=( const ::basegfx::matrix::B2DHomMatrix& rMat );
static const B2DPoint& getEmptyPoint()
{
- return (const B2DPoint&) tuple::B2DTuple::getEmptyTuple();
+ return (const B2DPoint&) ::basegfx::tuple::B2DTuple::getEmptyTuple();
}
};
} // end of namespace point
diff --git a/basegfx/inc/basegfx/point/b3dhompoint.hxx b/basegfx/inc/basegfx/point/b3dhompoint.hxx
index dc470d1c7ebd..d661d2f500dc 100644
--- a/basegfx/inc/basegfx/point/b3dhompoint.hxx
+++ b/basegfx/inc/basegfx/point/b3dhompoint.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b3dhompoint.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:25:38 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:24 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -87,7 +87,7 @@ namespace basegfx
{
protected:
/// This member contains the coordinate part of the point
- tuple::B3DTuple maTuple;
+ ::basegfx::tuple::B3DTuple maTuple;
/// This Member holds the homogenous part of the point
double mfW;
diff --git a/basegfx/inc/basegfx/point/b3dpoint.hxx b/basegfx/inc/basegfx/point/b3dpoint.hxx
index d142b0bfe726..65047e6c26cf 100644
--- a/basegfx/inc/basegfx/point/b3dpoint.hxx
+++ b/basegfx/inc/basegfx/point/b3dpoint.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b3dpoint.hxx,v $
*
- * $Revision: 1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: aw $ $Date: 2003-10-31 10:12:50 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:24 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -78,7 +78,7 @@ namespace basegfx
@see B3DTuple
*/
- class B3DPoint : public tuple::B3DTuple
+ class B3DPoint : public ::basegfx::tuple::B3DTuple
{
public:
/** Create a 3D Point
@@ -121,7 +121,7 @@ namespace basegfx
/** constructor with tuple to allow copy-constructing
from B3DTuple-based classes
*/
- B3DPoint(const B3DTuple& rTuple)
+ B3DPoint(const ::basegfx::tuple::B3DTuple& rTuple)
: B3DTuple(rTuple)
{}
@@ -131,7 +131,7 @@ namespace basegfx
/** assignment operator to allow assigning the results
of B3DTuple calculations
*/
- B3DPoint& operator=( const B3DTuple& rVec )
+ B3DPoint& operator=( const ::basegfx::tuple::B3DTuple& rVec )
{
mfX = rVec.getX();
mfY = rVec.getY();
@@ -141,7 +141,7 @@ namespace basegfx
static const B3DPoint& getEmptyPoint()
{
- return (const B3DPoint&) tuple::B3DTuple::getEmptyTuple();
+ return (const B3DPoint&) ::basegfx::tuple::B3DTuple::getEmptyTuple();
}
};
} // end of namespace point
diff --git a/basegfx/inc/basegfx/polygon/b2dpolygon.hxx b/basegfx/inc/basegfx/polygon/b2dpolygon.hxx
index 60d1219d431a..40a45c800a4f 100644
--- a/basegfx/inc/basegfx/polygon/b2dpolygon.hxx
+++ b/basegfx/inc/basegfx/polygon/b2dpolygon.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b2dpolygon.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:25:39 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:24 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -81,6 +81,11 @@ namespace basegfx
{
class B2DPoint;
} // end of namespace point
+
+ namespace vector
+ {
+ class B2DVector;
+ } // end of namespace vector
} // end of namespace basegfx
//////////////////////////////////////////////////////////////////////////////
@@ -116,18 +121,18 @@ namespace basegfx
sal_uInt32 count() const;
// Coordinate interface
- point::B2DPoint getB2DPoint(sal_uInt32 nIndex) const;
- void setB2DPoint(sal_uInt32 nIndex, const point::B2DPoint& rValue);
+ ::basegfx::point::B2DPoint getB2DPoint(sal_uInt32 nIndex) const;
+ void setB2DPoint(sal_uInt32 nIndex, const ::basegfx::point::B2DPoint& rValue);
// Coordinate insert/append
- void insert(sal_uInt32 nIndex, const point::B2DPoint& rPoint, sal_uInt32 nCount = 1);
- void append(const point::B2DPoint& rPoint, sal_uInt32 nCount = 1);
-
- // ControlPoint interface
- point::B2DPoint getControlPointA(sal_uInt32 nIndex) const;
- void setControlPointA(sal_uInt32 nIndex, const point::B2DPoint& rValue);
- point::B2DPoint getControlPointB(sal_uInt32 nIndex) const;
- void setControlPointB(sal_uInt32 nIndex, const point::B2DPoint& rValue);
+ void insert(sal_uInt32 nIndex, const ::basegfx::point::B2DPoint& rPoint, sal_uInt32 nCount = 1);
+ void append(const ::basegfx::point::B2DPoint& rPoint, sal_uInt32 nCount = 1);
+
+ // ControlVector interface
+ ::basegfx::vector::B2DVector getControlVectorA(sal_uInt32 nIndex) const;
+ void setControlVectorA(sal_uInt32 nIndex, const ::basegfx::vector::B2DVector& rValue);
+ ::basegfx::vector::B2DVector getControlVectorB(sal_uInt32 nIndex) const;
+ void setControlVectorB(sal_uInt32 nIndex, const ::basegfx::vector::B2DVector& rValue);
sal_Bool areControlPointsUsed() const;
// insert/append other 2D polygons
@@ -154,7 +159,7 @@ namespace basegfx
void removeDoublePoints();
// isInside tests for B2dPoint and other B2dPolygon. On border is not inside.
- sal_Bool isInside(const point::B2DPoint& rPoint);
+ sal_Bool isInside(const ::basegfx::point::B2DPoint& rPoint);
sal_Bool isInside(const B2DPolygon& rPolygon);
};
} // end of namespace polygon
diff --git a/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx b/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx
index f3a7601f0f78..740d82060283 100644
--- a/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx
+++ b/basegfx/inc/basegfx/polygon/b2dpolygontools.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b2dpolygontools.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:25:40 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:24 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -105,17 +105,17 @@ namespace basegfx
void checkClosed(polygon::B2DPolygon& rCandidate);
// Get index of outmost point (e.g. biggest X and biggest Y)
- sal_uInt32 getIndexOfOutmostPoint(const polygon::B2DPolygon& rCandidate);
+ sal_uInt32 getIndexOfOutmostPoint(const ::basegfx::polygon::B2DPolygon& rCandidate);
// Get successor and predecessor indices. Returning the same index means there
// is none. Same for successor.
- sal_uInt32 getIndexOfPredecessor(sal_uInt32 nIndex, const polygon::B2DPolygon& rCandidate);
- sal_uInt32 getIndexOfSuccessor(sal_uInt32 nIndex, const polygon::B2DPolygon& rCandidate);
+ sal_uInt32 getIndexOfPredecessor(sal_uInt32 nIndex, const ::basegfx::polygon::B2DPolygon& rCandidate);
+ sal_uInt32 getIndexOfSuccessor(sal_uInt32 nIndex, const ::basegfx::polygon::B2DPolygon& rCandidate);
// Get index of first different predecessor. Returning the same index means there
// is none. Same for successor.
- sal_uInt32 getIndexOfDifferentPredecessor(sal_uInt32 nIndex, const polygon::B2DPolygon& rCandidate);
- sal_uInt32 getIndexOfDifferentSuccessor(sal_uInt32 nIndex, const polygon::B2DPolygon& rCandidate);
+ sal_uInt32 getIndexOfDifferentPredecessor(sal_uInt32 nIndex, const ::basegfx::polygon::B2DPolygon& rCandidate);
+ sal_uInt32 getIndexOfDifferentSuccessor(sal_uInt32 nIndex, const ::basegfx::polygon::B2DPolygon& rCandidate);
// Get orientation of Polygon
::basegfx::vector::B2DVectorOrientation getOrientation(const ::basegfx::polygon::B2DPolygon& rCandidate);
@@ -149,6 +149,54 @@ namespace basegfx
// get orientation at given polygon point
::basegfx::vector::B2DVectorOrientation getPointOrientation(const ::basegfx::polygon::B2DPolygon& rCandidate, sal_uInt32 nIndex);
+ // Definitions for the cut flags used from the findCut methods
+ typedef sal_uInt16 CutFlagValue;
+
+ #define CUTFLAG_NONE (0x0000)
+ #define CUTFLAG_LINE (0x0001)
+ #define CUTFLAG_START1 (0x0002)
+ #define CUTFLAG_START2 (0x0004)
+ #define CUTFLAG_END1 (0x0008)
+ #define CUTFLAG_END2 (0x0010)
+ #define CUTFLAG_ALL (CUTFLAG_LINE|CUTFLAG_START1|CUTFLAG_START2|CUTFLAG_END1|CUTFLAG_END2)
+ #define CUTFLAG_DEFAULT (CUTFLAG_LINE|CUTFLAG_START2|CUTFLAG_END2)
+
+ // Calculate cut between the points given by the two indices. pCut1
+ // and pCut2 will contain the cut coordinate on each edge in ]0.0, 1.0]
+ // (if given) and the return value will contain a cut description.
+ CutFlagValue findCut(
+ const ::basegfx::polygon::B2DPolygon& rCandidate,
+ sal_uInt32 nIndex1, sal_uInt32 nIndex2,
+ CutFlagValue aCutFlags = CUTFLAG_DEFAULT,
+ double* pCut1 = 0L, double* pCut2 = 0L);
+
+ // This version is working with two indexed edges from different
+ // polygons.
+ CutFlagValue findCut(
+ const ::basegfx::polygon::B2DPolygon& rCandidate1, sal_uInt32 nIndex1,
+ const ::basegfx::polygon::B2DPolygon& rCandidate2, sal_uInt32 nIndex2,
+ CutFlagValue aCutFlags = CUTFLAG_DEFAULT,
+ double* pCut1 = 0L, double* pCut2 = 0L);
+
+ // This version works with two points and vectors to define the
+ // edges for the cut test.
+ CutFlagValue findCut(
+ const ::basegfx::point::B2DPoint& rEdge1Start, const ::basegfx::vector::B2DVector& rEdge1Delta,
+ const ::basegfx::point::B2DPoint& rEdge2Start, const ::basegfx::vector::B2DVector& rEdge2Delta,
+ CutFlagValue aCutFlags = CUTFLAG_DEFAULT,
+ double* pCut1 = 0L, double* pCut2 = 0L);
+
+ // test if point is on the given edge in range ]0.0..1.0[ without
+ // the start/end points. If so, return sal_True and put the parameter
+ // value in pCut (if provided)
+ sal_Bool isPointOnEdge(
+ const ::basegfx::point::B2DPoint& rPoint,
+ const ::basegfx::point::B2DPoint& rEdgeStart,
+ const ::basegfx::vector::B2DVector& rEdgeDelta,
+ double* pCut = 0L);
+
+
+
/* Still missing:
void transform(const Matrix4D& rTfMatrix);
Polygon3D getExpandedPolygon(sal_uInt32 nNum);
diff --git a/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx b/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx
index b54d067ec78c..658f9b33d6b3 100644
--- a/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx
+++ b/basegfx/inc/basegfx/polygon/b2dpolypolygon.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b2dpolypolygon.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:25:41 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:25 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -75,11 +75,6 @@ namespace basegfx
{
class B2DPolygon;
} // end of namespace polygon
-
- namespace vector
- {
- enum B2DVectorOrientation;
- } // end of namespace vector
} // end of namespace basegfx
//////////////////////////////////////////////////////////////////////////////
@@ -133,9 +128,6 @@ namespace basegfx
sal_Bool isClosed() const;
void setClosed(sal_Bool bNew);
- // Check and evtl. correct orientations of contained Polygons
- ::basegfx::vector::B2DVectorOrientation checkOrientations();
-
// flip polygon direction
void flip();
diff --git a/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx b/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx
index e6c6793186a2..e640dbb9f295 100644
--- a/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx
+++ b/basegfx/inc/basegfx/polygon/b2dpolypolygontools.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b2dpolypolygontools.hxx,v $
*
- * $Revision: 1.1 $
+ * $Revision: 1.2 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:24:04 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:25 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -90,9 +90,22 @@ namespace basegfx
{
// B2DPolyPolygon tools
- // Check and evtl. correct orientations of contained Polygons
- ::basegfx::vector::B2DVectorOrientation checkOrientations(::basegfx::polygon::B2DPolyPolygon& rCandidate);
+ // Check and evtl. correct orientations of all contained Polygons so that
+ // the orientations of contained polygons will variate to express areas and
+ // holes
+ void correctOrientations(::basegfx::polygon::B2DPolyPolygon& rCandidate);
+ // Remove all intersections, the self intersections and the in-between
+ // polygon intersections. After this operation there are no more intersections
+ // in the given PolyPolygon. Only closed polygons are handled. The non-closed
+ // polygons or the ones with less than 3 points are preserved, but not
+ // computed.
+ // bForceOrientation: If sal_True, the orientations of all contained polygons
+ // is changed to ORIENTATION_POSITIVE before computing.
+ // bInvertRemove: if sal_True, created polygons which are inside others and
+ // have the same orientation are removed (cleanup).
+ void removeIntersections(::basegfx::polygon::B2DPolyPolygon& rCandidate,
+ sal_Bool bForceOrientation = sal_True, sal_Bool bInvertRemove = sal_False);
} // end of namespace tools
} // end of namespace polygon
diff --git a/basegfx/inc/basegfx/range/b1drange.hxx b/basegfx/inc/basegfx/range/b1drange.hxx
index eedb4bc5911b..3acab7da4a20 100644
--- a/basegfx/inc/basegfx/range/b1drange.hxx
+++ b/basegfx/inc/basegfx/range/b1drange.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b1drange.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:25:43 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:25 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -129,6 +129,11 @@ namespace basegfx
return maRange.isInside(rRange.maRange);
}
+ sal_Bool overlaps(const B1DRange& rRange) const
+ {
+ return maRange.overlaps(rRange.maRange);
+ }
+
void expand(double fValue)
{
maRange.expand(fValue);
diff --git a/basegfx/inc/basegfx/range/b2drange.hxx b/basegfx/inc/basegfx/range/b2drange.hxx
index f3a8ac8bbba2..85002f6c8956 100644
--- a/basegfx/inc/basegfx/range/b2drange.hxx
+++ b/basegfx/inc/basegfx/range/b2drange.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b2drange.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:25:43 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:26 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -156,6 +156,14 @@ namespace basegfx
);
}
+ sal_Bool overlaps(const B2DRange& rRange) const
+ {
+ return (
+ maRangeX.overlaps(rRange.maRangeX)
+ && maRangeY.overlaps(rRange.maRangeY)
+ );
+ }
+
void expand(const tuple::B2DTuple& rTuple)
{
maRangeX.expand(rTuple.getX());
diff --git a/basegfx/inc/basegfx/range/b3drange.hxx b/basegfx/inc/basegfx/range/b3drange.hxx
index a62f61208b5d..2da5e2c3e1af 100644
--- a/basegfx/inc/basegfx/range/b3drange.hxx
+++ b/basegfx/inc/basegfx/range/b3drange.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b3drange.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:25:43 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:26 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -167,6 +167,15 @@ namespace basegfx
);
}
+ sal_Bool overlaps(const B3DRange& rRange) const
+ {
+ return (
+ maRangeX.overlaps(rRange.maRangeX)
+ && maRangeY.overlaps(rRange.maRangeY)
+ && maRangeZ.overlaps(rRange.maRangeZ)
+ );
+ }
+
void expand(const tuple::B3DTuple& rTuple)
{
maRangeX.expand(rTuple.getX());
diff --git a/basegfx/inc/basegfx/vector/b2dvector.hxx b/basegfx/inc/basegfx/vector/b2dvector.hxx
index 1766a3d4ca0e..8a7127d42ab3 100644
--- a/basegfx/inc/basegfx/vector/b2dvector.hxx
+++ b/basegfx/inc/basegfx/vector/b2dvector.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b2dvector.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:25:46 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:26 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -98,7 +98,7 @@ namespace basegfx
@see B2DTuple
*/
- class B2DVector : public tuple::B2DTuple
+ class B2DVector : public ::basegfx::tuple::B2DTuple
{
public:
/** Create a 2D Vector
@@ -137,7 +137,7 @@ namespace basegfx
/** constructor with tuple to allow copy-constructing
from B2DTuple-based classes
*/
- B2DVector(const B2DTuple& rTuple)
+ B2DVector(const ::basegfx::tuple::B2DTuple& rTuple)
: B2DTuple(rTuple)
{}
@@ -147,7 +147,7 @@ namespace basegfx
/** assignment operator to allow assigning the results
of B2DTuple calculations
*/
- B2DVector& operator=( const B2DTuple& rVec );
+ B2DVector& operator=( const ::basegfx::tuple::B2DTuple& rVec );
/** Calculate the length of this 2D Vector
diff --git a/basegfx/inc/basegfx/vector/b3dvector.hxx b/basegfx/inc/basegfx/vector/b3dvector.hxx
index ec153104981e..bd118592ec96 100644
--- a/basegfx/inc/basegfx/vector/b3dvector.hxx
+++ b/basegfx/inc/basegfx/vector/b3dvector.hxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b3dvector.hxx,v $
*
- * $Revision: 1.2 $
+ * $Revision: 1.3 $
*
- * last change: $Author: aw $ $Date: 2003-11-05 12:25:47 $
+ * last change: $Author: aw $ $Date: 2003-11-06 16:30:26 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -78,7 +78,7 @@ namespace basegfx
@see B3DTuple
*/
- class B3DVector : public tuple::B3DTuple
+ class B3DVector : public ::basegfx::tuple::B3DTuple
{
public:
/** Create a 3D Vector
@@ -121,7 +121,7 @@ namespace basegfx
/** constructor with tuple to allow copy-constructing
from B3DTuple-based classes
*/
- B3DVector(const B3DTuple& rTuple)
+ B3DVector(const ::basegfx::tuple::B3DTuple& rTuple)
: B3DTuple(rTuple)
{}
@@ -131,7 +131,7 @@ namespace basegfx
/** assignment operator to allow assigning the results
of B3DTuple calculations
*/
- B3DVector& operator=( const B3DTuple& rVec )
+ B3DVector& operator=( const ::basegfx::tuple::B3DTuple& rVec )
{
mfX = rVec.getX();
mfY = rVec.getY();
@@ -277,7 +277,7 @@ namespace basegfx
static const B3DVector& getEmptyVector()
{
- return (const B3DVector&) B3DTuple::getEmptyTuple();
+ return (const B3DVector&) ::basegfx::tuple::B3DTuple::getEmptyTuple();
}
};