| Index: src/pathops/SkPathOpsQuad.h
|
| ===================================================================
|
| --- src/pathops/SkPathOpsQuad.h (revision 0)
|
| +++ src/pathops/SkPathOpsQuad.h (revision 0)
|
| @@ -0,0 +1,62 @@
|
| +/*
|
| + * Copyright 2012 Google Inc.
|
| + *
|
| + * Use of this source code is governed by a BSD-style license that can be
|
| + * found in the LICENSE file.
|
| + */
|
| +
|
| +#ifndef SkPathOpsQuad_DEFINED
|
| +#define SkPathOpsQuad_DEFINED
|
| +
|
| +#include "SkPathOpsPoint.h"
|
| +
|
| +struct SkDQuadPair {
|
| + const SkDQuad& first() const { return (const SkDQuad&) pts[0]; }
|
| + const SkDQuad& second() const { return (const SkDQuad&) pts[2]; }
|
| + SkDPoint pts[5];
|
| +};
|
| +
|
| +struct SkDQuad {
|
| + SkDPoint fPts[3];
|
| +
|
| + void set(const SkPoint pts[3]) {
|
| + fPts[0] = pts[0];
|
| + fPts[1] = pts[1];
|
| + fPts[2] = pts[2];
|
| + }
|
| +
|
| + const SkDPoint& operator[](int n) const { return fPts[n]; }
|
| + SkDPoint& operator[](int n) { return fPts[n]; }
|
| +
|
| + static int AddValidTs(double s[], int realRoots, double* t);
|
| + SkDQuadPair chopAt(double t) const;
|
| + SkDVector dxdyAtT(double t) const;
|
| + static int FindExtrema(double a, double b, double c, double tValue[1]);
|
| + bool isLinear(int startIndex, int endIndex) const;
|
| + double nearestT(const SkDPoint&) const;
|
| + bool pointInHull(const SkDPoint&) 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[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[3], const SkDPoint& a, const SkDPoint& c,
|
| + double t1, double t2) {
|
| + SkDQuad quad;
|
| + quad.set(pts);
|
| + return quad.subDivide(a, c, t1, t2);
|
| + }
|
| +// SkDPoint tangent(double t) const; // uncalled
|
| + SkDCubic toCubic() const;
|
| + SkDPoint top(double startT, double endT) const;
|
| + SkDPoint xyAtT(double t) const;
|
| +private:
|
| +// static double Tangent(const double* quadratic, double t); // uncalled
|
| +};
|
| +
|
| +#endif
|
|
|