summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/2geom/src/cython/_cy_curves.pxd
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/2geom/src/cython/_cy_curves.pxd')
-rw-r--r--src/3rdparty/2geom/src/cython/_cy_curves.pxd421
1 files changed, 421 insertions, 0 deletions
diff --git a/src/3rdparty/2geom/src/cython/_cy_curves.pxd b/src/3rdparty/2geom/src/cython/_cy_curves.pxd
new file mode 100644
index 0000000..dd13c06
--- /dev/null
+++ b/src/3rdparty/2geom/src/cython/_cy_curves.pxd
@@ -0,0 +1,421 @@
+from _common_decl cimport *
+
+from libcpp.vector cimport vector
+from libcpp.pair cimport pair
+
+from _cy_rectangle cimport Interval, OptInterval, Rect, OptRect
+from _cy_affine cimport Affine
+from _cy_primitives cimport Point, cy_Point, wrap_Point, wrap_vector_point, make_vector_point
+from _cy_primitives cimport Angle, cy_Angle, wrap_Angle
+from _cy_primitives cimport AngleInterval
+
+
+cdef extern from "2geom/d2.h" namespace "Geom":
+ cdef cppclass D2[T]:
+ D2()
+ D2(T &, T &)
+ T& operator[](unsigned i)
+
+cdef extern from "2geom/curve.h" namespace "Geom":
+ cdef cppclass Curve:
+ Curve()
+ Point initialPoint()
+ Point finalPoint()
+ bint isDegenerate()
+ Point pointAt(Coord)
+ Coord valueAt(Coord, Dim2)
+ Point operator()(Coord)
+ vector[Point] pointAndDerivatives(Coord, unsigned int)
+ void setInitial(Point &)
+ void setFinal(Point &)
+ Rect boundsFast()
+ Rect boundsExact()
+ OptRect boundsLocal(OptInterval &, unsigned int)
+ OptRect boundsLocal(OptInterval &)
+ Curve * duplicate()
+ Curve * transformed(Affine &)
+ Curve * portion(Coord, Coord)
+ Curve * portion(Interval &)
+ Curve * reverse()
+ Curve * derivative()
+ Coord nearestTime(Point &, Coord, Coord)
+ Coord nearestTime(Point &, Interval &)
+ vector[double] allNearestTimes(Point &, Coord, Coord)
+ vector[double] allNearestTimes(Point &, Interval &)
+ Coord length(Coord)
+ vector[double] roots(Coord, Dim2)
+ int winding(Point &)
+ Point unitTangentAt(Coord, unsigned int)
+ D2[SBasis] toSBasis()
+ int degreesOfFreedom()
+ bint operator==(Curve &)
+
+cdef class cy_Curve:
+ cdef Curve* thisptr
+
+#~ cdef cy_Curve wrap_Curve(Curve & p)
+cdef cy_Curve wrap_Curve_p(Curve * p)
+
+
+cdef extern from "2geom/linear.h" namespace "Geom":
+ cdef cppclass Linear:
+#~ Linear(Linear &)
+ Linear()
+ Linear(double, double)
+ Linear(double)
+ double operator[](int const)
+ bint isZero(double)
+ bint isConstant(double)
+ bint isFinite()
+ double at0()
+ double at1()
+ double valueAt(double)
+ double operator()(double)
+ SBasis toSBasis()
+ OptInterval bounds_exact()
+ OptInterval bounds_fast()
+ OptInterval bounds_local(double, double)
+ double tri()
+ double hat()
+
+ bint operator==(Linear &, Linear &)
+ bint operator!=(Linear &, Linear &)
+ Linear operator*(Linear &, double)
+ Linear operator+(Linear &, double)
+ Linear operator+(Linear &, Linear &)
+ #cython has trouble resolving these
+ Linear L_neg "operator-" (Linear &)
+ Linear L_sub_Ld "operator-"(Linear &, double)
+ Linear L_sub_LL "operator-"(Linear &, Linear &)
+ Linear operator/(Linear &, double)
+
+ double lerp(double, double, double)
+ Linear reverse(Linear &)
+
+
+cdef extern from "2geom/sbasis.h" namespace "Geom":
+ cdef cppclass SBasis:
+
+ SBasis()
+ SBasis(double)
+ SBasis(double, double)
+ SBasis(SBasis &)
+ SBasis(vector[Linear] &)
+ SBasis(Linear &)
+
+ size_t size()
+ Linear operator[](unsigned int)
+ bint empty()
+ Linear & back()
+ void pop_back()
+ void resize(unsigned int)
+ void resize(unsigned int, Linear &)
+ void reserve(unsigned int)
+ void clear()
+#~ void insert(::__gnu_cxx::__normal_iterator<Geom::Linear*, std::vector<Geom::Linear, std::allocator<Geom::Linear> > >, ::__gnu_cxx::__normal_iterator<Geom::Linear const*, std::vector<Geom::Linear, std::allocator<Geom::Linear> > >, ::__gnu_cxx::__normal_iterator<Geom::Linear const*, std::vector<Geom::Linear, std::allocator<Geom::Linear> > >)
+ Linear & at(unsigned int)
+ bint operator==(SBasis &)
+ bint operator!=(SBasis &)
+
+ bint isZero(double)
+ bint isConstant(double)
+ bint isFinite()
+ double at0()
+ double at1()
+ int degreesOfFreedom()
+ double valueAt(double)
+ double operator()(double)
+ vector[double] valueAndDerivatives(double, unsigned int)
+ SBasis toSBasis()
+ double tailError(unsigned int)
+ SBasis operator()(SBasis &)
+ void normalize()
+ void truncate(unsigned int)
+
+ SBasis operator*(SBasis &, SBasis &)
+ SBasis operator*(double, SBasis &)
+ SBasis operator*(SBasis &, double)
+ SBasis operator+(SBasis &, double)
+ SBasis operator+(SBasis &, SBasis &)
+ SBasis SB_sub_Sd "operator-" (SBasis &, double)
+ SBasis SB_sub_SS "operator-" (SBasis &, SBasis &)
+ SBasis SB_neg "operator-" (SBasis &)
+ SBasis operator/(SBasis &, double)
+
+ SBasis sin(Linear, int)
+ SBasis cos(Linear, int)
+ SBasis sqrt(SBasis &, int)
+ SBasis reciprocal(Linear &, int)
+ SBasis shift(Linear &, int)
+ SBasis shift(SBasis &, int)
+ SBasis inverse(SBasis, int)
+
+ SBasis portion(SBasis &, Interval)
+ SBasis portion(SBasis &, double, double)
+ SBasis compose(SBasis &, SBasis &, unsigned int)
+ SBasis compose(SBasis &, SBasis &)
+ SBasis truncate(SBasis &, unsigned int)
+
+ unsigned int valuation(SBasis &, double)
+
+ vector[ vector[double] ] multi_roots(SBasis &, vector[double] &, double, double, double, double) #TODO
+ vector[Interval] level_set(SBasis &, Interval &, double, double, double)
+ vector[Interval] level_set(SBasis &, double, double, double, double, double)
+ vector[double] roots(SBasis &, Interval const)
+ vector[double] roots(SBasis &)
+ vector[ vector[Interval] ] level_sets(SBasis &, vector[Interval] &, double, double, double) #TODO
+ vector[ vector[Interval] ] level_sets(SBasis &, vector[double] &, double, double, double, double) #TODO
+
+ SBasis reverse(SBasis &)
+ SBasis derivative(SBasis &)
+ SBasis integral(SBasis &)
+ SBasis divide(SBasis &, SBasis &, int)
+ SBasis compose_inverse(SBasis &, SBasis &, unsigned int, double)
+ SBasis multiply(SBasis &, SBasis &)
+ SBasis multiply_add(SBasis &, SBasis &, SBasis)
+
+ OptInterval bounds_exact(SBasis &)
+ OptInterval bounds_local(SBasis &, OptInterval &, int)
+ OptInterval bounds_fast(SBasis &, int)
+
+cdef class cy_SBasis:
+ cdef SBasis* thisptr
+
+cdef extern from "2geom/sbasis-curve.h" namespace "Geom":
+ cdef cppclass SBasisCurve:
+ SBasisCurve(D2[SBasis] &)
+ SBasisCurve(Curve &)
+ Curve * duplicate()
+ Point initialPoint()
+ Point finalPoint()
+ bint isDegenerate()
+ Point pointAt(Coord)
+ Point operator()(double)
+ vector[Point] pointAndDerivatives(Coord, unsigned int)
+ Coord valueAt(Coord, Dim2)
+ void setInitial(Point &)
+ void setFinal(Point &)
+ Rect boundsFast()
+ Rect boundsExact()
+ OptRect boundsLocal(OptInterval &, unsigned int)
+ vector[double] roots(Coord, Dim2)
+ Coord nearestTime(Point &, Coord, Coord)
+ vector[double] allNearestTimes(Point &, Coord, Coord)
+ Coord length(Coord)
+ Curve * portion(Coord, Coord)
+ Curve * transformed(Affine &)
+ Curve * derivative()
+ D2[SBasis] toSBasis()
+ int degreesOfFreedom()
+
+
+cdef extern from "2geom/bezier.h" namespace "Geom":
+ cdef cppclass Bezier:
+#~ struct Order
+#~ pass
+ unsigned int order()
+ unsigned int size()
+ Bezier()
+#~ Bezier(Bezier.Order)
+ Bezier(Coord)
+ Bezier(Coord, Coord)
+ Bezier(Coord, Coord, Coord)
+ Bezier(Coord, Coord, Coord, Coord)
+ void resize(unsigned int, Coord)
+ void clear()
+ unsigned int degree()
+ bint isZero(double)
+ bint isConstant(double)
+ bint isFinite()
+ Coord at0()
+ Coord at1()
+ Coord valueAt(double)
+ Coord operator()(double)
+ SBasis toSBasis()
+ Coord & operator[](unsigned int)
+ void setPoint(unsigned int, double)
+ vector[double] valueAndDerivatives(Coord, unsigned int)
+ pair[Bezier, Bezier] subdivide(Coord)
+ vector[double] roots()
+ vector[double] roots(Interval const)
+ Bezier forward_difference(unsigned int)
+ Bezier elevate_degree()
+ Bezier reduce_degree()
+ Bezier elevate_to_degree(unsigned int)
+ Bezier deflate()
+ Bezier(Coord *, unsigned int)
+
+ Bezier operator*(Bezier &, double)
+ Bezier operator+(Bezier &, double)
+ Bezier operator-(Bezier &, double)
+ Bezier operator/(Bezier &, double)
+
+ Bezier portion(Bezier &, double, double)
+ OptInterval bounds_local(Bezier &, OptInterval)
+ Coord casteljau_subidivision(Coord, Coord *, Coord *, Coord *, unsigned int)
+ void bezier_to_sbasis(SBasis &, Bezier &)
+ Bezier integral(Bezier &)
+ Bezier derivative(Bezier &)
+ OptInterval bounds_exact(Bezier &)
+ double bernsteinValueAt(double, double *, unsigned int)
+ vector[Point] bezier_points(D2[Bezier] &)
+ OptInterval bounds_fast(Bezier &)
+ Bezier multiply(Bezier &, Bezier &)
+ Bezier reverse(Bezier &)
+
+#This is ugly workaround around cython's lack of support for integer template parameters
+cdef extern from *:
+ ctypedef int n_0 "0"
+ ctypedef int n_1 "1"
+
+cdef extern from "2geom/bezier-curve.h" namespace "Geom":
+ cdef cppclass BezierCurve:
+ unsigned int order()
+ vector[Point] controlPoints()
+ void setPoint(unsigned int, Point)
+ void setPoints(vector[Point] &)
+ Point operator[](unsigned int)
+ Point initialPoint()
+ Point finalPoint()
+ bint isDegenerate()
+ void setInitial(Point &)
+ void setFinal(Point &)
+ Rect boundsFast()
+ Rect boundsExact()
+ OptRect boundsLocal(OptInterval &, unsigned int)
+ Curve * duplicate()
+ Curve * portion(Coord, Coord)
+ Curve * reverse()
+ Curve * transformed(Affine &)
+ Curve * derivative()
+ int degreesOfFreedom()
+ vector[double] roots(Coord, Dim2)
+ Coord length(Coord)
+ Point pointAt(Coord)
+ vector[Point] pointAndDerivatives(Coord, unsigned int)
+ Coord valueAt(Coord, Dim2)
+ D2[SBasis] toSBasis()
+ #protected:
+#~ BezierCurve()
+#~ BezierCurve(D2[Bezier] &)
+#~ BezierCurve(Bezier &, Bezier &)
+#~ BezierCurve(vector[Point] &)
+ #~ Point middle_point(LineSegment &)
+ #~ Coord length(LineSegment &)
+ Coord bezier_length(Point, Point, Point, Point, Coord)
+ Coord bezier_length(Point, Point, Point, Coord)
+ Coord bezier_length(vector[Point] &, Coord)
+
+ cdef cppclass LineSegment:
+ LineSegment()
+ LineSegment(D2[Bezier] &)
+ LineSegment(Bezier, Bezier)
+ LineSegment(vector[Point] &)
+ LineSegment(Point, Point)
+ pair[LineSegment, LineSegment] subdivide(Coord)
+
+ Curve * duplicate()
+ Curve * reverse()
+ Curve * transformed(Affine &)
+ Curve * derivative()
+
+ cdef cppclass QuadraticBezier:
+ QuadraticBezier()
+ QuadraticBezier(D2[Bezier] &)
+ QuadraticBezier(Bezier, Bezier)
+ QuadraticBezier(vector[Point] &)
+ QuadraticBezier(Point, Point, Point)
+ pair[QuadraticBezier, QuadraticBezier] subdivide(Coord)
+
+ Curve * duplicate()
+ Curve * reverse()
+ Curve * transformed(Affine &)
+ Curve * derivative()
+
+
+ cdef cppclass CubicBezier:
+ CubicBezier()
+ CubicBezier(D2[Bezier] &)
+ CubicBezier(Bezier, Bezier)
+ CubicBezier(vector[Point] &)
+ CubicBezier(Point, Point, Point, Point)
+ pair[CubicBezier, CubicBezier] subdivide(Coord)
+
+ Curve * duplicate()
+ Curve * reverse()
+ Curve * transformed(Affine &)
+ Curve * derivative()
+
+#~ cdef cppclass BezierCurveN[n_1]:
+#~ BezierCurveN ()
+#~ BezierCurveN(Bezier &, Bezier &)
+#~ #BezierCurveN(Point &, Point &)
+#~ BezierCurveN(vector[Point] &)
+#~ pair[BezierCurveN, BezierCurveN] subdivide(Coord)
+#~
+#~ Curve * duplicate()
+#~ Curve * reverse()
+#~ Curve * transformed(Affine &)
+#~ Curve * derivative()
+
+cdef class cy_BezierCurve:
+ cdef BezierCurve* thisptr
+
+cdef class cy_LineSegment(cy_BezierCurve):
+ pass
+
+cdef cy_LineSegment wrap_LineSegment(LineSegment p)
+
+cdef extern from "2geom/bezier-curve.h" namespace "Geom::BezierCurve":
+ BezierCurve * create(vector[Point] &)
+
+cdef extern from "2geom/elliptical-arc.h" namespace "Geom":
+ cdef cppclass EllipticalArc:
+ EllipticalArc(EllipticalArc &)
+ EllipticalArc()
+ EllipticalArc(Point, Coord, Coord, Coord, bint, bint, Point)
+ Interval angleInterval()
+ Angle rotationAngle()
+ Coord ray(Dim2)
+ Point rays()
+ bint largeArc()
+ bint sweep()
+ LineSegment chord()
+ void set(Point &, double, double, double, bint, bint, Point &)
+ void setExtremes(Point &, Point &)
+ Coord center(Dim2)
+ Point center()
+ Coord sweepAngle()
+ bint containsAngle(Coord)
+ Point pointAtAngle(Coord)
+ Coord valueAtAngle(Coord, Dim2)
+ Affine unitCircleTransform()
+ bint isSVGCompliant()
+ pair[EllipticalArc, EllipticalArc] subdivide(Coord)
+ Point initialPoint()
+ Point finalPoint()
+ Curve * duplicate()
+ void setInitial(Point &)
+ void setFinal(Point &)
+ bint isDegenerate()
+ Rect boundsFast()
+ Rect boundsExact()
+ OptRect boundsLocal(OptInterval &, unsigned int)
+ vector[double] roots(double, Dim2)
+ double nearestTime(Point &, double, double)
+ int degreesOfFreedom()
+ Curve * derivative()
+ Curve * transformed(Affine &)
+ vector[Point] pointAndDerivatives(Coord, unsigned int)
+ D2[SBasis] toSBasis()
+ double valueAt(Coord, Dim2)
+ Point pointAt(Coord)
+ Curve * portion(double, double)
+ Curve * reverse()
+
+cdef class cy_EllipticalArc:
+ cdef EllipticalArc* thisptr
+cdef cy_EllipticalArc wrap_EllipticalArc(EllipticalArc p)
+
+cdef Curve * get_Curve_p(object c)
+cdef bint is_Curve(object c)