diff options
author | reed <reed@google.com> | 2015-03-24 13:55:33 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-24 13:55:33 -0700 |
commit | 0dc4dd6dda9a7912f696b46d9c02155ec1d1ba5f (patch) | |
tree | 994c85a8e418986415175ddccc71adf924df3846 /src/pathops/SkPathOpsQuad.h | |
parent | 82dec0e16ae10026194ce45b67af931700510450 (diff) |
Revert of pathops version two (patchset #16 id:150001 of https://codereview.chromium.org/1002693002/)
Reason for revert:
ASAN investigation
Original issue's description:
> pathops version two
>
> R=reed@google.com
>
> marked 'no commit' to attempt to get trybots to run
>
> TBR=reed@google.com
>
> Committed: https://skia.googlesource.com/skia/+/ccec0f958ffc71a9986d236bc2eb335cb2111119
TBR=caryclark@google.com
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.chromium.org/1029993002
Diffstat (limited to 'src/pathops/SkPathOpsQuad.h')
-rw-r--r-- | src/pathops/SkPathOpsQuad.h | 35 |
1 files changed, 8 insertions, 27 deletions
diff --git a/src/pathops/SkPathOpsQuad.h b/src/pathops/SkPathOpsQuad.h index 81638cf0bc..932c5fbe75 100644 --- a/src/pathops/SkPathOpsQuad.h +++ b/src/pathops/SkPathOpsQuad.h @@ -17,61 +17,43 @@ struct SkDQuadPair { }; struct SkDQuad { - static const int kPointCount = 3; - static const int kPointLast = kPointCount - 1; - static const int kMaxIntersections = 4; - - SkDPoint fPts[kPointCount]; - - bool collapsed() const { - return fPts[0].approximatelyEqual(fPts[1]) && fPts[0].approximatelyEqual(fPts[2]); - } - - bool controlsInside() const { - SkDVector v01 = fPts[0] - fPts[1]; - SkDVector v02 = fPts[0] - fPts[2]; - SkDVector v12 = fPts[1] - fPts[2]; - return v02.dot(v01) > 0 && v02.dot(v12) > 0; - } + SkDPoint fPts[3]; SkDQuad flip() const { SkDQuad result = {{fPts[2], fPts[1], fPts[0]}}; return result; } - static bool IsCubic() { return false; } - - void set(const SkPoint pts[kPointCount]) { + void set(const SkPoint pts[3]) { fPts[0] = pts[0]; fPts[1] = pts[1]; fPts[2] = pts[2]; } - const SkDPoint& operator[](int n) const { SkASSERT(n >= 0 && n < kPointCount); return fPts[n]; } - SkDPoint& operator[](int n) { SkASSERT(n >= 0 && n < kPointCount); return fPts[n]; } + const SkDPoint& operator[](int n) const { SkASSERT(n >= 0 && n < 3); return fPts[n]; } + SkDPoint& operator[](int n) { SkASSERT(n >= 0 && n < 3); return fPts[n]; } static int AddValidTs(double s[], int realRoots, double* t); void align(int endIndex, SkDPoint* dstPt) const; SkDQuadPair chopAt(double t) const; SkDVector dxdyAtT(double t) const; static int FindExtrema(double a, double b, double c, double tValue[1]); - bool hullIntersects(const SkDQuad& , bool* isLinear) const; bool isLinear(int startIndex, int endIndex) const; bool monotonicInY() const; double nearestT(const SkDPoint&) const; - void otherPts(int oddMan, const SkDPoint* endPt[2]) const; + bool pointInHull(const SkDPoint&) const; SkDPoint ptAtT(double t) const; static int RootsReal(double A, double B, double C, double t[2]); static int RootsValidT(const double A, const double B, const double C, double s[2]); static void SetABC(const double* quad, double* a, double* b, double* c); SkDQuad subDivide(double t1, double t2) const; - static SkDQuad SubDivide(const SkPoint a[kPointCount], double t1, double t2) { + static SkDQuad SubDivide(const SkPoint a[3], double t1, double t2) { SkDQuad quad; quad.set(a); return quad.subDivide(t1, t2); } SkDPoint subDivide(const SkDPoint& a, const SkDPoint& c, double t1, double t2) const; - static SkDPoint SubDivide(const SkPoint pts[kPointCount], const SkDPoint& a, const SkDPoint& c, + static SkDPoint SubDivide(const SkPoint pts[3], const SkDPoint& a, const SkDPoint& c, double t1, double t2) { SkDQuad quad; quad.set(pts); @@ -82,8 +64,7 @@ struct SkDQuad { // utilities callable by the user from the debugger when the implementation code is linked in void dump() const; - void dumpID(int id) const; - void dumpInner() const; + void dumpComma(const char*) const; private: // static double Tangent(const double* quadratic, double t); // uncalled |