8#ifndef PathTessellator_DEFINED
9#define PathTessellator_DEFINED
45 std::tuple<const SkMatrix&, const SkPath&, const SkPMColor4f&>
operator*()
const {
62 int totalCombinedPathVerbCnt) = 0;
70 if (!infinitySupport) {
71 fAttribs |= PatchAttribs::kExplicitCurveType;
104 const PathDrawList& pathDrawList,
105 int totalCombinedPathVerbCnt);
110 int totalCombinedPathVerbCnt)
final {
115 totalCombinedPathVerbCnt);
133 bool infinitySupport,
140 fAttribs |= PatchAttribs::kFanPoint;
145 const PathDrawList& pathDrawList,
146 int totalCombinedPathVerbCnt)
final;
static float next(float f)
auto make(Ctor &&ctor) -> decltype(ctor(nullptr))
static PathCurveTessellator * Make(SkArenaAlloc *arena, bool infinitySupport, PatchAttribs attribs=PatchAttribs::kNone)
PathCurveTessellator(bool infinitySupport, PatchAttribs attribs=PatchAttribs::kNone)
void prepare(GrMeshDrawTarget *target, const SkMatrix &shaderMatrix, const PathDrawList &pathDrawList, int totalCombinedPathVerbCnt) final
void drawHullInstances(GrOpFlushState *, sk_sp< const GrGpuBuffer > vertexBufferIfNeeded) const
void prepareWithTriangles(GrMeshDrawTarget *target, const SkMatrix &shaderMatrix, GrInnerFanTriangulator::BreadcrumbTriangleList *extraTriangles, const PathDrawList &pathDrawList, int totalCombinedPathVerbCnt)
void draw(GrOpFlushState *) const final
GrVertexChunkArray fVertexChunkArray
virtual void prepare(GrMeshDrawTarget *target, const SkMatrix &shaderMatrix, const PathDrawList &pathDrawList, int totalCombinedPathVerbCnt)=0
sk_sp< const GrGpuBuffer > fFixedIndexBuffer
virtual void draw(GrOpFlushState *flushState) const =0
sk_sp< const GrGpuBuffer > fFixedVertexBuffer
PatchAttribs patchAttribs() const
PathTessellator(bool infinitySupport, PatchAttribs attribs)
virtual ~PathTessellator()
void prepare(GrMeshDrawTarget *target, const SkMatrix &shaderMatrix, const PathDrawList &pathDrawList, int totalCombinedPathVerbCnt) final
PathWedgeTessellator(bool infinitySupport, PatchAttribs attribs=PatchAttribs::kNone)
void draw(GrOpFlushState *) const final
static PathWedgeTessellator * Make(SkArenaAlloc *arena, bool infinitySupport, PatchAttribs attribs=PatchAttribs::kNone)
const PathDrawList * fHead
std::tuple< const SkMatrix &, const SkPath &, const SkPMColor4f & > operator*() const
bool operator!=(const Iter &b) const
PathDrawList(const SkMatrix &pathMatrix, const SkPath &path, const SkPMColor4f &color, PathDrawList *next=nullptr)