SkPathOpsTCurve.h 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. #ifndef SkPathOpsTCurve_DEFINED
  8. #define SkPathOpsTCurve_DEFINED
  9. #include "src/pathops/SkPathOpsPoint.h"
  10. class SkArenaAlloc;
  11. class SkIntersections;
  12. class SkTCurve {
  13. public:
  14. virtual ~SkTCurve() {}
  15. virtual const SkDPoint& operator[](int n) const = 0;
  16. virtual SkDPoint& operator[](int n) = 0;
  17. virtual bool collapsed() const = 0;
  18. virtual bool controlsInside() const = 0;
  19. virtual void debugInit() = 0;
  20. #if DEBUG_T_SECT
  21. virtual void dumpID(int id) const = 0;
  22. #endif
  23. virtual SkDVector dxdyAtT(double t) const = 0;
  24. virtual bool hullIntersects(const SkDQuad& , bool* isLinear) const = 0;
  25. virtual bool hullIntersects(const SkDConic& , bool* isLinear) const = 0;
  26. virtual bool hullIntersects(const SkDCubic& , bool* isLinear) const = 0;
  27. virtual bool hullIntersects(const SkTCurve& , bool* isLinear) const = 0;
  28. virtual int intersectRay(SkIntersections* i, const SkDLine& line) const = 0;
  29. virtual bool IsConic() const = 0;
  30. virtual SkTCurve* make(SkArenaAlloc& ) const = 0;
  31. virtual int maxIntersections() const = 0;
  32. virtual void otherPts(int oddMan, const SkDPoint* endPt[2]) const = 0;
  33. virtual int pointCount() const = 0;
  34. virtual int pointLast() const = 0;
  35. virtual SkDPoint ptAtT(double t) const = 0;
  36. virtual void setBounds(SkDRect* ) const = 0;
  37. virtual void subDivide(double t1, double t2, SkTCurve* curve) const = 0;
  38. #ifdef SK_DEBUG
  39. virtual SkOpGlobalState* globalState() const = 0;
  40. #endif
  41. };
  42. #endif