diff options
author | 2012-02-03 22:07:47 +0000 | |
---|---|---|
committer | 2012-02-03 22:07:47 +0000 | |
commit | c682590538a27d73489bc91c098e000fdfb07ccf (patch) | |
tree | 90b03195e3a74cf47f4fa3a385e99575c46da37b /experimental/Intersection/CurveIntersection.h | |
parent | 2c23708e4478a83dcded2e9d5672bc57ee016919 (diff) |
save work in progress
git-svn-id: http://skia.googlecode.com/svn/trunk@3141 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'experimental/Intersection/CurveIntersection.h')
-rw-r--r-- | experimental/Intersection/CurveIntersection.h | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/experimental/Intersection/CurveIntersection.h b/experimental/Intersection/CurveIntersection.h new file mode 100644 index 0000000000..d6ca837881 --- /dev/null +++ b/experimental/Intersection/CurveIntersection.h @@ -0,0 +1,34 @@ +#include "DataTypes.h" + +class Intersections; + +// unit-testable utilities +bool bezier_clip(const Cubic& cubic1, const Cubic& cubic2, double& minT, double& maxT); +bool bezier_clip(const Quadratic& q1, const Quadratic& q2, double& minT, double& maxT); +void chop_at(const Cubic& src, CubicPair& dst, double t); +void chop_at(const Quadratic& src, QuadraticPair& dst, double t); +int convex_hull(const Cubic& cubic, char order[4]); +bool convex_x_hull(const Cubic& cubic, char connectTo0[2], char connectTo3[2]); +bool implicit_matches(const Cubic& cubic1, const Cubic& cubic2); +bool implicit_matches(const _Line& line1, const _Line& line2); +bool implicit_matches(const Quadratic& quad1, const Quadratic& quad2); +void sub_divide(const Cubic& src, double t1, double t2, Cubic& dst); +void sub_divide(const _Line& src, double t1, double t2, Cubic& dst); +void sub_divide(const Quadratic& src, double t1, double t2, Quadratic& dst); +void tangent(const Cubic& cubic, double t, _Point& result); +void tangent(const _Line& line, _Point& result); +void tangent(const Quadratic& quad, double t, _Point& result); + +// main functions +enum ReduceOrder_Flags { + kReduceOrder_NoQuadraticsAllowed, + kReduceOrder_QuadraticsAllowed +}; +int reduceOrder(const Cubic& cubic, Cubic& reduction, ReduceOrder_Flags ); +int reduceOrder(const _Line& line, _Line& reduction); +int reduceOrder(const Quadratic& quad, Quadratic& reduction); +int horizontalIntersect(const Cubic& cubic, double y, double tRange[3]); +bool intersect(const Cubic& cubic1, const Cubic& cubic2, Intersections& ); +int intersect(const Cubic& cubic, const _Line& line, double cRange[3], double lRange[3]); +bool intersect(const Quadratic& q1, const Quadratic& q2, Intersections& ); +bool intersect(const Quadratic& quad, const _Line& line, Intersections& ); |