Flutter Engine
The Flutter Engine
|
#include <GrTriangulator.h>
Classes | |
class | BreadcrumbTriangleList |
struct | Comparator |
struct | Edge |
struct | EdgeList |
struct | Line |
struct | MonotonePoly |
struct | Poly |
struct | Vertex |
struct | VertexList |
Public Types | |
enum | Side { kLeft_Side , kRight_Side } |
enum class | EdgeType { kInner , kOuter , kConnector } |
Static Public Member Functions | |
static int | PathToTriangles (const SkPath &path, SkScalar tolerance, const SkRect &clipBounds, GrEagerVertexAllocator *vertexAllocator, bool *isLinear) |
Static Public Attributes | |
static constexpr int | kArenaDefaultChunkSize = 16 * 1024 |
Protected Types | |
enum class | SimplifyResult { kFailed , kAlreadySimple , kFoundSelfIntersection } |
enum class | BoolFail { kFalse , kTrue , kFail } |
Protected Member Functions | |
GrTriangulator (const SkPath &path, SkArenaAlloc *alloc) | |
virtual | ~GrTriangulator () |
void | pathToContours (float tolerance, const SkRect &clipBounds, VertexList *contours, bool *isLinear) const |
void | contoursToMesh (VertexList *contours, int contourCnt, VertexList *mesh, const Comparator &) |
SimplifyResult | simplify (VertexList *mesh, const Comparator &) |
virtual std::tuple< Poly *, bool > | tessellate (const VertexList &vertices, const Comparator &) |
skgpu::VertexWriter | polysToTriangles (Poly *polys, SkPathFillType overrideFillType, skgpu::VertexWriter data) const |
skgpu::VertexWriter | emitMonotonePoly (const MonotonePoly *, skgpu::VertexWriter data) const |
skgpu::VertexWriter | emitTriangle (Vertex *prev, Vertex *curr, Vertex *next, int winding, skgpu::VertexWriter data) const |
skgpu::VertexWriter | emitPoly (const Poly *, skgpu::VertexWriter data) const |
Poly * | makePoly (Poly **head, Vertex *v, int winding) const |
void | appendPointToContour (const SkPoint &p, VertexList *contour) const |
void | appendQuadraticToContour (const SkPoint[3], SkScalar toleranceSqd, VertexList *contour) const |
void | generateCubicPoints (const SkPoint &, const SkPoint &, const SkPoint &, const SkPoint &, SkScalar tolSqd, VertexList *contour, int pointsLeft) const |
bool | applyFillType (int winding) const |
MonotonePoly * | allocateMonotonePoly (Edge *edge, Side side, int winding) |
Edge * | allocateEdge (Vertex *top, Vertex *bottom, int winding, EdgeType type) |
Edge * | makeEdge (Vertex *prev, Vertex *next, EdgeType type, const Comparator &) |
bool | setTop (Edge *edge, Vertex *v, EdgeList *activeEdges, Vertex **current, const Comparator &) const |
bool | setBottom (Edge *edge, Vertex *v, EdgeList *activeEdges, Vertex **current, const Comparator &) const |
bool | mergeEdgesAbove (Edge *edge, Edge *other, EdgeList *activeEdges, Vertex **current, const Comparator &) const |
bool | mergeEdgesBelow (Edge *edge, Edge *other, EdgeList *activeEdges, Vertex **current, const Comparator &) const |
Edge * | makeConnectingEdge (Vertex *prev, Vertex *next, EdgeType, const Comparator &, int windingScale=1) |
void | mergeVertices (Vertex *src, Vertex *dst, VertexList *mesh, const Comparator &) const |
bool | mergeCollinearEdges (Edge *edge, EdgeList *activeEdges, Vertex **current, const Comparator &) const |
BoolFail | splitEdge (Edge *edge, Vertex *v, EdgeList *activeEdges, Vertex **current, const Comparator &) |
BoolFail | intersectEdgePair (Edge *left, Edge *right, EdgeList *activeEdges, Vertex **current, const Comparator &) |
Vertex * | makeSortedVertex (const SkPoint &, uint8_t alpha, VertexList *mesh, Vertex *reference, const Comparator &) const |
void | computeBisector (Edge *edge1, Edge *edge2, Vertex *) const |
BoolFail | checkForIntersection (Edge *left, Edge *right, EdgeList *activeEdges, Vertex **current, VertexList *mesh, const Comparator &) |
void | sanitizeContours (VertexList *contours, int contourCnt) const |
bool | mergeCoincidentVertices (VertexList *mesh, const Comparator &) const |
void | buildEdges (VertexList *contours, int contourCnt, VertexList *mesh, const Comparator &) |
std::tuple< Poly *, bool > | contoursToPolys (VertexList *contours, int contourCnt) |
std::tuple< Poly *, bool > | pathToPolys (float tolerance, const SkRect &clipBounds, bool *isLinear) |
int | polysToTriangles (Poly *, GrEagerVertexAllocator *) const |
Static Protected Member Functions | |
static void | SortedMerge (VertexList *front, VertexList *back, VertexList *result, const Comparator &) |
static void | SortMesh (VertexList *vertices, const Comparator &) |
static void | FindEnclosingEdges (const Vertex &v, const EdgeList &edges, Edge **left, Edge **right) |
static int64_t | CountPoints (Poly *polys, SkPathFillType overrideFillType) |
Protected Attributes | |
const SkPath | fPath |
SkArenaAlloc *const | fAlloc |
int | fNumMonotonePolys = 0 |
int | fNumEdges = 0 |
bool | fRoundVerticesToQuarterPixel = false |
bool | fEmitCoverage = false |
bool | fPreserveCollinearVertices = false |
bool | fCollectBreadcrumbTriangles = false |
BreadcrumbTriangleList | fBreadcrumbList |
Provides utility functions for converting paths to a collection of triangles.
Definition at line 35 of file GrTriangulator.h.
|
strongprotected |
Enumerator | |
---|---|
kFalse | |
kTrue | |
kFail |
Definition at line 94 of file GrTriangulator.h.
|
strong |
Enumerator | |
---|---|
kInner | |
kOuter | |
kConnector |
Definition at line 56 of file GrTriangulator.h.
enum GrTriangulator::Side |
|
strongprotected |
Enumerator | |
---|---|
kFailed | |
kAlreadySimple | |
kFoundSelfIntersection |
Definition at line 88 of file GrTriangulator.h.
|
inlineprotected |
Definition at line 69 of file GrTriangulator.h.
|
inlineprotectedvirtual |
Definition at line 70 of file GrTriangulator.h.
|
protected |
Definition at line 643 of file GrTriangulator.cpp.
|
protected |
Definition at line 638 of file GrTriangulator.cpp.
|
protected |
Definition at line 475 of file GrTriangulator.cpp.
|
protected |
Definition at line 495 of file GrTriangulator.cpp.
|
protected |
Definition at line 630 of file GrTriangulator.cpp.
|
protected |
Definition at line 1303 of file GrTriangulator.cpp.
|
protected |
Definition at line 1187 of file GrTriangulator.cpp.
Definition at line 1167 of file GrTriangulator.cpp.
|
protected |
Definition at line 1638 of file GrTriangulator.cpp.
|
protected |
Definition at line 1673 of file GrTriangulator.cpp.
|
staticprotected |
Definition at line 1758 of file GrTriangulator.cpp.
|
protected |
Definition at line 332 of file GrTriangulator.cpp.
|
protected |
Definition at line 453 of file GrTriangulator.cpp.
|
protected |
Definition at line 380 of file GrTriangulator.cpp.
|
staticprotected |
Definition at line 668 of file GrTriangulator.cpp.
|
protected |
Definition at line 518 of file GrTriangulator.cpp.
|
protected |
Definition at line 1036 of file GrTriangulator.cpp.
|
protected |
Definition at line 1086 of file GrTriangulator.cpp.
|
protected |
Definition at line 648 of file GrTriangulator.cpp.
Definition at line 468 of file GrTriangulator.cpp.
|
protected |
Definition at line 1117 of file GrTriangulator.cpp.
|
protected |
Definition at line 1282 of file GrTriangulator.cpp.
|
protected |
Definition at line 957 of file GrTriangulator.cpp.
|
protected |
Definition at line 871 of file GrTriangulator.cpp.
|
protected |
Definition at line 906 of file GrTriangulator.cpp.
|
protected |
Definition at line 1099 of file GrTriangulator.cpp.
|
protected |
Definition at line 544 of file GrTriangulator.cpp.
|
protected |
Definition at line 1742 of file GrTriangulator.cpp.
|
inlinestatic |
Definition at line 39 of file GrTriangulator.h.
|
protected |
Definition at line 1770 of file GrTriangulator.cpp.
|
protected |
Definition at line 1697 of file GrTriangulator.cpp.
|
protected |
Definition at line 1247 of file GrTriangulator.cpp.
|
protected |
Definition at line 855 of file GrTriangulator.cpp.
|
protected |
Definition at line 839 of file GrTriangulator.cpp.
|
protected |
Definition at line 1438 of file GrTriangulator.cpp.
|
staticprotected |
Definition at line 1336 of file GrTriangulator.cpp.
|
staticprotected |
Definition at line 1654 of file GrTriangulator.cpp.
|
protected |
Definition at line 987 of file GrTriangulator.cpp.
|
protectedvirtual |
Reimplemented in GrAATriangulator.
Definition at line 1523 of file GrTriangulator.cpp.
|
protected |
Definition at line 205 of file GrTriangulator.h.
|
mutableprotected |
Definition at line 280 of file GrTriangulator.h.
|
protected |
Definition at line 213 of file GrTriangulator.h.
|
protected |
Definition at line 211 of file GrTriangulator.h.
|
protected |
Definition at line 207 of file GrTriangulator.h.
|
protected |
Definition at line 206 of file GrTriangulator.h.
|
protected |
Definition at line 204 of file GrTriangulator.h.
|
protected |
Definition at line 212 of file GrTriangulator.h.
|
protected |
Definition at line 210 of file GrTriangulator.h.
|
staticconstexpr |
Definition at line 37 of file GrTriangulator.h.