blob: 4981dea1d08ae28b05993e06301387370fadd750 [file] [log] [blame]
Cary Clark0a671982018-10-11 12:16:49 -04001/*
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 "SkPathOpsPoint.h"
12
13class SkArenaAlloc;
14class SkIntersections;
15
16class SkTCurve {
17public:
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 virtual SkDVector dxdyAtT(double t) const = 0;
26 virtual bool hullIntersects(const SkDQuad& , bool* isLinear) const = 0;
27 virtual bool hullIntersects(const SkDConic& , bool* isLinear) const = 0;
28 virtual bool hullIntersects(const SkDCubic& , bool* isLinear) const = 0;
29 virtual bool hullIntersects(const SkTCurve& , bool* isLinear) const = 0;
30 virtual int intersectRay(SkIntersections* i, const SkDLine& line) const = 0;
31 virtual bool IsConic() const = 0;
32 virtual SkTCurve* make(SkArenaAlloc& ) const = 0;
33 virtual int maxIntersections() const = 0;
34 virtual void otherPts(int oddMan, const SkDPoint* endPt[2]) const = 0;
35 virtual int pointCount() const = 0;
36 virtual int pointLast() const = 0;
37 virtual SkDPoint ptAtT(double t) const = 0;
38 virtual void setBounds(SkDRect* ) const = 0;
39 virtual void subDivide(double t1, double t2, SkTCurve* curve) const = 0;
40#ifdef SK_DEBUG
41 virtual SkOpGlobalState* globalState() const = 0;
42#endif
43};
44
45#endif