1 | /* |
2 | * Copyright 2018 Google Inc. |
3 | * |
4 | * Use of this source code is governed by a BSD-style license that can be |
5 | * found in the LICENSE file. |
6 | */ |
7 | |
8 | #ifndef SkPathOpsTCurve_DEFINED |
9 | #define SkPathOpsTCurve_DEFINED |
10 | |
11 | #include "src/pathops/SkPathOpsPoint.h" |
12 | |
13 | class SkArenaAlloc; |
14 | class SkIntersections; |
15 | |
16 | class SkTCurve { |
17 | public: |
18 | virtual ~SkTCurve() {} |
19 | virtual const SkDPoint& operator[](int n) const = 0; |
20 | virtual SkDPoint& operator[](int n) = 0; |
21 | |
22 | virtual bool collapsed() const = 0; |
23 | virtual bool controlsInside() const = 0; |
24 | virtual void debugInit() = 0; |
25 | #if DEBUG_T_SECT |
26 | virtual void dumpID(int id) const = 0; |
27 | #endif |
28 | virtual SkDVector dxdyAtT(double t) const = 0; |
29 | virtual bool hullIntersects(const SkDQuad& , bool* isLinear) const = 0; |
30 | virtual bool hullIntersects(const SkDConic& , bool* isLinear) const = 0; |
31 | virtual bool hullIntersects(const SkDCubic& , bool* isLinear) const = 0; |
32 | virtual bool hullIntersects(const SkTCurve& , bool* isLinear) const = 0; |
33 | virtual int intersectRay(SkIntersections* i, const SkDLine& line) const = 0; |
34 | virtual bool IsConic() const = 0; |
35 | virtual SkTCurve* make(SkArenaAlloc& ) const = 0; |
36 | virtual int maxIntersections() const = 0; |
37 | virtual void otherPts(int oddMan, const SkDPoint* endPt[2]) const = 0; |
38 | virtual int pointCount() const = 0; |
39 | virtual int pointLast() const = 0; |
40 | virtual SkDPoint ptAtT(double t) const = 0; |
41 | virtual void setBounds(SkDRect* ) const = 0; |
42 | virtual void subDivide(double t1, double t2, SkTCurve* curve) const = 0; |
43 | #ifdef SK_DEBUG |
44 | virtual SkOpGlobalState* globalState() const = 0; |
45 | #endif |
46 | }; |
47 | |
48 | #endif |
49 | |