xref: /aosp_15_r20/external/skia/src/pathops/SkPathOpsTCurve.h (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
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 struct SkDRect;
16 
17 class SkTCurve {
18 public:
~SkTCurve()19     virtual ~SkTCurve() {}
20     virtual const SkDPoint& operator[](int n) const = 0;
21     virtual SkDPoint& operator[](int n) = 0;
22 
23     virtual bool collapsed() const = 0;
24     virtual bool controlsInside() const = 0;
25     virtual void debugInit() = 0;
26 #if DEBUG_T_SECT
27     virtual void dumpID(int id) const = 0;
28 #endif
29     virtual SkDVector dxdyAtT(double t) const = 0;
30     virtual bool hullIntersects(const SkDQuad& , bool* isLinear) const = 0;
31     virtual bool hullIntersects(const SkDConic& , bool* isLinear) const = 0;
32     virtual bool hullIntersects(const SkDCubic& , bool* isLinear) const = 0;
33     virtual bool hullIntersects(const SkTCurve& , bool* isLinear) const = 0;
34     virtual int intersectRay(SkIntersections* i, const SkDLine& line) const = 0;
35     virtual bool IsConic() const = 0;
36     virtual SkTCurve* make(SkArenaAlloc& ) const = 0;
37     virtual int maxIntersections() const = 0;
38     virtual void otherPts(int oddMan, const SkDPoint* endPt[2]) const = 0;
39     virtual int pointCount() const = 0;
40     virtual int pointLast() const = 0;
41     virtual SkDPoint ptAtT(double t) const = 0;
42     virtual void setBounds(SkDRect* ) const = 0;
43     virtual void subDivide(double t1, double t2, SkTCurve* curve) const = 0;
44 #ifdef SK_DEBUG
45     virtual SkOpGlobalState* globalState() const = 0;
46 #endif
47 };
48 
49 #endif
50