| Index: src/pathops/SkPathOpsCurve.h
|
| diff --git a/src/pathops/SkPathOpsCurve.h b/src/pathops/SkPathOpsCurve.h
|
| index 69af91cf34622e2025b655a86429659cf3b5cbfc..bfbc515719e9e77d4dfdfd3fb989c79acd8ae7ab 100644
|
| --- a/src/pathops/SkPathOpsCurve.h
|
| +++ b/src/pathops/SkPathOpsCurve.h
|
| @@ -16,6 +16,8 @@
|
| #include "SkPath.h"
|
| #endif
|
|
|
| +struct SkPathOpsBounds;
|
| +
|
| struct SkOpCurve {
|
| SkPoint fPts[4];
|
| SkScalar fWeight;
|
| @@ -43,6 +45,7 @@ struct SkOpCurve {
|
| SkDEBUGCODE(fWeight = 1);
|
| SkDEBUGCODE(fVerb = SkPath::kCubic_Verb);
|
| }
|
| +
|
| };
|
|
|
| struct SkDCurve {
|
| @@ -64,9 +67,29 @@ struct SkDCurve {
|
| return fCubic[n];
|
| }
|
|
|
| + SkDPoint conicTop(const SkPoint curve[3], SkScalar curveWeight,
|
| + double s, double e, double* topT);
|
| + SkDPoint cubicTop(const SkPoint curve[4], SkScalar , double s, double e, double* topT);
|
| void dumpID(int ) const;
|
| + SkDPoint lineTop(const SkPoint[2], SkScalar , double , double , double* topT);
|
| + SkDPoint quadTop(const SkPoint curve[3], SkScalar , double s, double e, double* topT);
|
| +
|
| + void setConicBounds(const SkPoint curve[3], SkScalar curveWeight,
|
| + double s, double e, SkPathOpsBounds* );
|
| + void setCubicBounds(const SkPoint curve[4], SkScalar ,
|
| + double s, double e, SkPathOpsBounds* );
|
| + void setLineBounds(const SkPoint[2], SkScalar , double , double , SkPathOpsBounds* );
|
| + void setQuadBounds(const SkPoint curve[3], SkScalar ,
|
| + double s, double e, SkPathOpsBounds*);
|
| };
|
|
|
| +
|
| +extern void (SkDCurve::* const SetBounds[])(const SkPoint curve[], SkScalar cWeight,
|
| + double tStart, double tEnd, SkPathOpsBounds* );
|
| +
|
| +extern SkDPoint (SkDCurve::* const Top[])(const SkPoint curve[], SkScalar cWeight,
|
| + double tStart, double tEnd, double* topT);
|
| +
|
| static SkDPoint dline_xy_at_t(const SkPoint a[2], SkScalar , double t) {
|
| SkDLine line;
|
| line.set(a);
|
| @@ -179,36 +202,6 @@ static SkVector (* const CurveSlopeAtT[])(const SkPoint[], SkScalar , double ) =
|
| fcubic_dxdy_at_t
|
| };
|
|
|
| -static SkPoint quad_top(const SkPoint a[3], SkScalar , double startT, double endT, double* topT) {
|
| - SkDQuad quad;
|
| - quad.set(a);
|
| - SkDPoint topPt = quad.top(startT, endT, topT);
|
| - return topPt.asSkPoint();
|
| -}
|
| -
|
| -static SkPoint conic_top(const SkPoint a[3], SkScalar weight, double startT, double endT,
|
| - double* topT) {
|
| - SkDConic conic;
|
| - conic.set(a, weight);
|
| - SkDPoint topPt = conic.top(startT, endT, topT);
|
| - return topPt.asSkPoint();
|
| -}
|
| -
|
| -static SkPoint cubic_top(const SkPoint a[4], SkScalar , double startT, double endT, double* topT) {
|
| - SkDCubic cubic;
|
| - cubic.set(a);
|
| - SkDPoint topPt = cubic.top(startT, endT, topT);
|
| - return topPt.asSkPoint();
|
| -}
|
| -
|
| -static SkPoint (* const CurveTop[])(const SkPoint[], SkScalar , double , double , double* ) = {
|
| - NULL,
|
| - NULL,
|
| - quad_top,
|
| - conic_top,
|
| - cubic_top
|
| -};
|
| -
|
| static bool line_is_vertical(const SkPoint a[2], SkScalar , double startT, double endT) {
|
| SkDLine line;
|
| line.set(a);
|
|
|