summaryrefslogtreecommitdiff
path: root/basegfx/source/vector/b2dvector.cxx
diff options
context:
space:
mode:
authorArmin Weiss <aw@openoffice.org>2003-11-10 10:45:52 +0000
committerArmin Weiss <aw@openoffice.org>2003-11-10 10:45:52 +0000
commitff3c6dbe35436fa508356a45b7367d4055cd6387 (patch)
tree5325d2cd5ce67961f59260d70784e083c67bdad7 /basegfx/source/vector/b2dvector.cxx
parente7fb8a71b60f4c6e94b4cafbe9d0badf427316e3 (diff)
Some error corrections, some additions to polygon stuff, making PolyPolygonCutter work
Diffstat (limited to 'basegfx/source/vector/b2dvector.cxx')
-rw-r--r--basegfx/source/vector/b2dvector.cxx31
1 files changed, 27 insertions, 4 deletions
diff --git a/basegfx/source/vector/b2dvector.cxx b/basegfx/source/vector/b2dvector.cxx
index 92931c563125..1177396fefd1 100644
--- a/basegfx/source/vector/b2dvector.cxx
+++ b/basegfx/source/vector/b2dvector.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: b2dvector.cxx,v $
*
- * $Revision: 1.4 $
+ * $Revision: 1.5 $
*
- * last change: $Author: aw $ $Date: 2003-11-06 16:30:30 $
+ * last change: $Author: aw $ $Date: 2003-11-10 11:45:52 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -163,13 +163,13 @@ namespace basegfx
sal_Bool areParallel( const B2DVector& rVecA, const B2DVector& rVecB )
{
- double fVal(rVecA.getX() * rVecB.getY() - rVecA.getY() * rVecA.getX());
+ double fVal(rVecA.getX() * rVecB.getY() - rVecA.getY() * rVecB.getX());
return ::basegfx::numeric::fTools::equalZero(fVal);
}
B2DVectorOrientation getOrientation( const B2DVector& rVecA, const B2DVector& rVecB )
{
- double fVal(rVecA.getX() * rVecB.getY() - rVecA.getY() * rVecA.getX());
+ double fVal(rVecA.getX() * rVecB.getY() - rVecA.getY() * rVecB.getX());
if(fVal > 0.0)
{
@@ -195,6 +195,29 @@ namespace basegfx
B2DVector aRes( rVec );
return aRes*=rMat;
}
+
+ ::basegfx::vector::B2DVectorContinuity getContinuity(const B2DVector& rBackVector, const B2DVector& rForwardVector )
+ {
+ ::basegfx::vector::B2DVectorContinuity eRetval(::basegfx::vector::CONTINUITY_NONE);
+
+ if(!rBackVector.equalZero() && !rForwardVector.equalZero())
+ {
+ const B2DVector aInverseForwardVector(-rForwardVector.getX(), -rForwardVector.getY());
+
+ if(rBackVector.equal(aInverseForwardVector))
+ {
+ // same direction and same length -> C2
+ eRetval = ::basegfx::vector::CONTINUITY_C2;
+ }
+ else if(areParallel(rBackVector, aInverseForwardVector))
+ {
+ // same direction -> C1
+ eRetval = ::basegfx::vector::CONTINUITY_C1;
+ }
+ }
+
+ return eRetval;
+ }
} // end of namespace vector
} // end of namespace basegfx