Index: src/gpu/GrTessellatingPathRenderer.cpp |
diff --git a/src/gpu/GrTessellatingPathRenderer.cpp b/src/gpu/GrTessellatingPathRenderer.cpp |
index 55af04480a0c98684354280891e7f432dba06d58..46fa280cfd86c6e67a429c547a1e987e1af6f135 100644 |
--- a/src/gpu/GrTessellatingPathRenderer.cpp |
+++ b/src/gpu/GrTessellatingPathRenderer.cpp |
@@ -125,7 +125,7 @@ void remove(T* t, T** head, T** tail) { |
} else if (tail) { |
*tail = t->*Prev; |
} |
- t->*Prev = t->*Next = NULL; |
+ t->*Prev = t->*Next = nullptr; |
} |
/** |
@@ -141,9 +141,9 @@ void remove(T* t, T** head, T** tail) { |
struct Vertex { |
Vertex(const SkPoint& point) |
- : fPoint(point), fPrev(NULL), fNext(NULL) |
- , fFirstEdgeAbove(NULL), fLastEdgeAbove(NULL) |
- , fFirstEdgeBelow(NULL), fLastEdgeBelow(NULL) |
+ : fPoint(point), fPrev(nullptr), fNext(nullptr) |
+ , fFirstEdgeAbove(nullptr), fLastEdgeAbove(nullptr) |
+ , fFirstEdgeBelow(nullptr), fLastEdgeBelow(nullptr) |
, fProcessed(false) |
#if LOGGING_ENABLED |
, fID (-1.0f) |
@@ -209,7 +209,7 @@ SkPoint* emit_triangle(Vertex* v0, Vertex* v1, Vertex* v2, SkPoint* data) { |
} |
struct EdgeList { |
- EdgeList() : fHead(NULL), fTail(NULL) {} |
+ EdgeList() : fHead(nullptr), fTail(nullptr) {} |
Edge* fHead; |
Edge* fTail; |
}; |
@@ -237,14 +237,14 @@ struct Edge { |
: fWinding(winding) |
, fTop(top) |
, fBottom(bottom) |
- , fLeft(NULL) |
- , fRight(NULL) |
- , fPrevEdgeAbove(NULL) |
- , fNextEdgeAbove(NULL) |
- , fPrevEdgeBelow(NULL) |
- , fNextEdgeBelow(NULL) |
- , fLeftPoly(NULL) |
- , fRightPoly(NULL) { |
+ , fLeft(nullptr) |
+ , fRight(nullptr) |
+ , fPrevEdgeAbove(nullptr) |
+ , fNextEdgeAbove(nullptr) |
+ , fPrevEdgeBelow(nullptr) |
+ , fNextEdgeBelow(nullptr) |
+ , fLeftPoly(nullptr) |
+ , fRightPoly(nullptr) { |
recompute(); |
} |
int fWinding; // 1 == edge goes downward; -1 = edge goes upward. |
@@ -313,11 +313,11 @@ struct Edge { |
struct Poly { |
Poly(int winding) |
: fWinding(winding) |
- , fHead(NULL) |
- , fTail(NULL) |
- , fActive(NULL) |
- , fNext(NULL) |
- , fPartner(NULL) |
+ , fHead(nullptr) |
+ , fTail(nullptr) |
+ , fActive(nullptr) |
+ , fNext(nullptr) |
+ , fPartner(nullptr) |
, fCount(0) |
{ |
#if LOGGING_ENABLED |
@@ -330,10 +330,10 @@ struct Poly { |
struct MonotonePoly { |
MonotonePoly() |
: fSide(kNeither_Side) |
- , fHead(NULL) |
- , fTail(NULL) |
- , fPrev(NULL) |
- , fNext(NULL) {} |
+ , fHead(nullptr) |
+ , fTail(nullptr) |
+ , fPrev(nullptr) |
+ , fNext(nullptr) {} |
Side fSide; |
Vertex* fHead; |
Vertex* fTail; |
@@ -347,7 +347,7 @@ struct Poly { |
} else { |
done = side != fSide; |
} |
- if (fHead == NULL) { |
+ if (fHead == nullptr) { |
fHead = fTail = newV; |
} else if (fSide == kRight_Side) { |
newV->fPrev = fTail; |
@@ -395,7 +395,7 @@ struct Poly { |
Poly* partner = fPartner; |
Poly* poly = this; |
if (partner) { |
- fPartner = partner->fPartner = NULL; |
+ fPartner = partner->fPartner = nullptr; |
} |
if (!fActive) { |
fActive = ALLOC_NEW(MonotonePoly, (), alloc); |
@@ -425,7 +425,7 @@ struct Poly { |
void end(Vertex* v, SkChunkAlloc& alloc) { |
LOG("end() %d at %g, %g\n", fID, v->fPoint.fX, v->fPoint.fY); |
if (fPartner) { |
- fPartner = fPartner->fPartner = NULL; |
+ fPartner = fPartner->fPartner = nullptr; |
} |
addVertex(v, fActive->fSide == kLeft_Side ? kRight_Side : kLeft_Side, alloc); |
} |
@@ -434,7 +434,7 @@ struct Poly { |
return data; |
} |
LOG("emit() %d, size %d\n", fID, fCount); |
- for (MonotonePoly* m = fHead; m != NULL; m = m->fNext) { |
+ for (MonotonePoly* m = fHead; m != nullptr; m = m->fNext) { |
data = m->emit(data); |
} |
return data; |
@@ -548,8 +548,8 @@ void path_to_contours(const SkPath& path, SkScalar tolerance, const SkRect& clip |
bool done = false; |
*isLinear = true; |
SkPath::Iter iter(path, false); |
- Vertex* prev = NULL; |
- Vertex* head = NULL; |
+ Vertex* prev = nullptr; |
+ Vertex* head = nullptr; |
if (path.isInverseFillType()) { |
SkPoint quad[4]; |
clipBounds.toQuad(quad); |
@@ -559,7 +559,7 @@ void path_to_contours(const SkPath& path, SkScalar tolerance, const SkRect& clip |
head->fPrev = prev; |
prev->fNext = head; |
*contours++ = head; |
- head = prev = NULL; |
+ head = prev = nullptr; |
} |
SkAutoConicToQuads converter; |
while (!done) { |
@@ -583,7 +583,7 @@ void path_to_contours(const SkPath& path, SkScalar tolerance, const SkRect& clip |
prev->fNext = head; |
*contours++ = head; |
} |
- head = prev = NULL; |
+ head = prev = nullptr; |
prev = append_point_to_contour(pts[0], prev, &head, alloc); |
break; |
case SkPath::kLine_Verb: { |
@@ -610,7 +610,7 @@ void path_to_contours(const SkPath& path, SkScalar tolerance, const SkRect& clip |
prev->fNext = head; |
*contours++ = head; |
} |
- head = prev = NULL; |
+ head = prev = nullptr; |
break; |
case SkPath::kDone_Verb: |
if (head) { |
@@ -666,9 +666,9 @@ void find_enclosing_edges(Vertex* v, EdgeList* edges, Edge** left, Edge** right) |
*right = v->fLastEdgeAbove->fRight; |
return; |
} |
- Edge* next = NULL; |
+ Edge* next = nullptr; |
Edge* prev; |
- for (prev = edges->fTail; prev != NULL; prev = prev->fLeft) { |
+ for (prev = edges->fTail; prev != nullptr; prev = prev->fLeft) { |
if (prev->isLeftOf(v)) { |
break; |
} |
@@ -680,9 +680,9 @@ void find_enclosing_edges(Vertex* v, EdgeList* edges, Edge** left, Edge** right) |
} |
void find_enclosing_edges(Edge* edge, EdgeList* edges, Comparator& c, Edge** left, Edge** right) { |
- Edge* prev = NULL; |
+ Edge* prev = nullptr; |
Edge* next; |
- for (next = edges->fHead; next != NULL; next = next->fRight) { |
+ for (next = edges->fHead; next != nullptr; next = next->fRight) { |
if ((c.sweep_gt(edge->fTop->fPoint, next->fTop->fPoint) && next->isRightOf(edge->fTop)) || |
(c.sweep_gt(next->fTop->fPoint, edge->fTop->fPoint) && edge->isLeftOf(next->fTop)) || |
(c.sweep_lt(edge->fBottom->fPoint, next->fBottom->fPoint) && |
@@ -717,7 +717,7 @@ void insert_edge_above(Edge* edge, Vertex* v, Comparator& c) { |
return; |
} |
LOG("insert edge (%g -> %g) above vertex %g\n", edge->fTop->fID, edge->fBottom->fID, v->fID); |
- Edge* prev = NULL; |
+ Edge* prev = nullptr; |
Edge* next; |
for (next = v->fFirstEdgeAbove; next; next = next->fNextEdgeAbove) { |
if (next->isRightOf(edge->fTop)) { |
@@ -735,7 +735,7 @@ void insert_edge_below(Edge* edge, Vertex* v, Comparator& c) { |
return; |
} |
LOG("insert edge (%g -> %g) below vertex %g\n", edge->fTop->fID, edge->fBottom->fID, v->fID); |
- Edge* prev = NULL; |
+ Edge* prev = nullptr; |
Edge* next; |
for (next = v->fFirstEdgeBelow; next; next = next->fNextEdgeBelow) { |
if (next->isRightOf(edge->fBottom)) { |
@@ -910,22 +910,22 @@ void merge_vertices(Vertex* src, Vertex* dst, Vertex** head, Comparator& c, SkCh |
src->fID, dst->fID); |
for (Edge* edge = src->fFirstEdgeAbove; edge;) { |
Edge* next = edge->fNextEdgeAbove; |
- set_bottom(edge, dst, NULL, c); |
+ set_bottom(edge, dst, nullptr, c); |
edge = next; |
} |
for (Edge* edge = src->fFirstEdgeBelow; edge;) { |
Edge* next = edge->fNextEdgeBelow; |
- set_top(edge, dst, NULL, c); |
+ set_top(edge, dst, nullptr, c); |
edge = next; |
} |
- remove<Vertex, &Vertex::fPrev, &Vertex::fNext>(src, head, NULL); |
+ remove<Vertex, &Vertex::fPrev, &Vertex::fNext>(src, head, nullptr); |
} |
Vertex* check_for_intersection(Edge* edge, Edge* other, EdgeList* activeEdges, Comparator& c, |
SkChunkAlloc& alloc) { |
SkPoint p; |
if (!edge || !other) { |
- return NULL; |
+ return nullptr; |
} |
if (edge->intersect(*other, &p)) { |
Vertex* v; |
@@ -973,7 +973,7 @@ Vertex* check_for_intersection(Edge* edge, Edge* other, EdgeList* activeEdges, C |
} |
return v; |
} |
- return NULL; |
+ return nullptr; |
} |
void sanitize_contours(Vertex** contours, int contourCnt) { |
@@ -983,7 +983,7 @@ void sanitize_contours(Vertex** contours, int contourCnt) { |
if (coincident(v->fPrev->fPoint, v->fPoint)) { |
LOG("vertex %g,%g coincident; removing\n", v->fPoint.fX, v->fPoint.fY); |
if (v->fPrev == v) { |
- contours[i] = NULL; |
+ contours[i] = nullptr; |
break; |
} |
v->fPrev->fNext = v->fNext; |
@@ -1001,7 +1001,7 @@ void sanitize_contours(Vertex** contours, int contourCnt) { |
} |
void merge_coincident_vertices(Vertex** vertices, Comparator& c, SkChunkAlloc& alloc) { |
- for (Vertex* v = (*vertices)->fNext; v != NULL; v = v->fNext) { |
+ for (Vertex* v = (*vertices)->fNext; v != nullptr; v = v->fNext) { |
if (c.sweep_lt(v->fPoint, v->fPrev->fPoint)) { |
v->fPoint = v->fPrev->fPoint; |
} |
@@ -1014,10 +1014,10 @@ void merge_coincident_vertices(Vertex** vertices, Comparator& c, SkChunkAlloc& a |
// Stage 2: convert the contours to a mesh of edges connecting the vertices. |
Vertex* build_edges(Vertex** contours, int contourCnt, Comparator& c, SkChunkAlloc& alloc) { |
- Vertex* vertices = NULL; |
- Vertex* prev = NULL; |
+ Vertex* vertices = nullptr; |
+ Vertex* prev = nullptr; |
for (int i = 0; i < contourCnt; ++i) { |
- for (Vertex* v = contours[i]; v != NULL;) { |
+ for (Vertex* v = contours[i]; v != nullptr;) { |
Vertex* vNext = v->fNext; |
Edge* edge = new_edge(v->fPrev, v, alloc, c); |
if (edge->fWinding > 0) { |
@@ -1027,7 +1027,7 @@ Vertex* build_edges(Vertex** contours, int contourCnt, Comparator& c, SkChunkAll |
insert_edge_below(edge, v, c); |
insert_edge_above(edge, v->fPrev, c); |
} |
- merge_collinear_edges(edge, NULL, c); |
+ merge_collinear_edges(edge, nullptr, c); |
if (prev) { |
prev->fNext = v; |
v->fPrev = prev; |
@@ -1040,7 +1040,7 @@ Vertex* build_edges(Vertex** contours, int contourCnt, Comparator& c, SkChunkAll |
} |
} |
if (prev) { |
- prev->fNext = vertices->fPrev = NULL; |
+ prev->fNext = vertices->fPrev = nullptr; |
} |
return vertices; |
} |
@@ -1054,14 +1054,14 @@ void front_back_split(Vertex* v, Vertex** pFront, Vertex** pBack) { |
Vertex* slow; |
if (!v || !v->fNext) { |
*pFront = v; |
- *pBack = NULL; |
+ *pBack = nullptr; |
} else { |
slow = v; |
fast = v->fNext; |
- while (fast != NULL) { |
+ while (fast != nullptr) { |
fast = fast->fNext; |
- if (fast != NULL) { |
+ if (fast != nullptr) { |
slow = slow->fNext; |
fast = fast->fNext; |
} |
@@ -1069,8 +1069,8 @@ void front_back_split(Vertex* v, Vertex** pFront, Vertex** pBack) { |
*pFront = v; |
*pBack = slow->fNext; |
- slow->fNext->fPrev = NULL; |
- slow->fNext = NULL; |
+ slow->fNext->fPrev = nullptr; |
+ slow->fNext = nullptr; |
} |
} |
@@ -1090,7 +1090,7 @@ void merge_sort(Vertex** head, Comparator& c) { |
} |
inline void append_vertex(Vertex* v, Vertex** head, Vertex** tail) { |
- insert<Vertex, &Vertex::fPrev, &Vertex::fNext>(v, *tail, NULL, head, tail); |
+ insert<Vertex, &Vertex::fPrev, &Vertex::fNext>(v, *tail, nullptr, head, tail); |
} |
inline void append_vertex_list(Vertex* v, Vertex** head, Vertex** tail) { |
@@ -1098,8 +1098,8 @@ inline void append_vertex_list(Vertex* v, Vertex** head, Vertex** tail) { |
} |
Vertex* sorted_merge(Vertex* a, Vertex* b, Comparator& c) { |
- Vertex* head = NULL; |
- Vertex* tail = NULL; |
+ Vertex* head = nullptr; |
+ Vertex* tail = nullptr; |
while (a && b) { |
if (c.sweep_lt(a->fPoint, b->fPoint)) { |
@@ -1126,21 +1126,21 @@ Vertex* sorted_merge(Vertex* a, Vertex* b, Comparator& c) { |
void simplify(Vertex* vertices, Comparator& c, SkChunkAlloc& alloc) { |
LOG("simplifying complex polygons\n"); |
EdgeList activeEdges; |
- for (Vertex* v = vertices; v != NULL; v = v->fNext) { |
+ for (Vertex* v = vertices; v != nullptr; v = v->fNext) { |
if (!v->fFirstEdgeAbove && !v->fFirstEdgeBelow) { |
continue; |
} |
#if LOGGING_ENABLED |
LOG("\nvertex %g: (%g,%g)\n", v->fID, v->fPoint.fX, v->fPoint.fY); |
#endif |
- Edge* leftEnclosingEdge = NULL; |
- Edge* rightEnclosingEdge = NULL; |
+ Edge* leftEnclosingEdge = nullptr; |
+ Edge* rightEnclosingEdge = nullptr; |
bool restartChecks; |
do { |
restartChecks = false; |
find_enclosing_edges(v, &activeEdges, &leftEnclosingEdge, &rightEnclosingEdge); |
if (v->fFirstEdgeBelow) { |
- for (Edge* edge = v->fFirstEdgeBelow; edge != NULL; edge = edge->fNextEdgeBelow) { |
+ for (Edge* edge = v->fFirstEdgeBelow; edge != nullptr; edge = edge->fNextEdgeBelow) { |
if (check_for_intersection(edge, leftEnclosingEdge, &activeEdges, c, alloc)) { |
restartChecks = true; |
break; |
@@ -1178,25 +1178,25 @@ void simplify(Vertex* vertices, Comparator& c, SkChunkAlloc& alloc) { |
Poly* tessellate(Vertex* vertices, SkChunkAlloc& alloc) { |
LOG("tessellating simple polygons\n"); |
EdgeList activeEdges; |
- Poly* polys = NULL; |
- for (Vertex* v = vertices; v != NULL; v = v->fNext) { |
+ Poly* polys = nullptr; |
+ for (Vertex* v = vertices; v != nullptr; v = v->fNext) { |
if (!v->fFirstEdgeAbove && !v->fFirstEdgeBelow) { |
continue; |
} |
#if LOGGING_ENABLED |
LOG("\nvertex %g: (%g,%g)\n", v->fID, v->fPoint.fX, v->fPoint.fY); |
#endif |
- Edge* leftEnclosingEdge = NULL; |
- Edge* rightEnclosingEdge = NULL; |
+ Edge* leftEnclosingEdge = nullptr; |
+ Edge* rightEnclosingEdge = nullptr; |
find_enclosing_edges(v, &activeEdges, &leftEnclosingEdge, &rightEnclosingEdge); |
- Poly* leftPoly = NULL; |
- Poly* rightPoly = NULL; |
+ Poly* leftPoly = nullptr; |
+ Poly* rightPoly = nullptr; |
if (v->fFirstEdgeAbove) { |
leftPoly = v->fFirstEdgeAbove->fLeftPoly; |
rightPoly = v->fLastEdgeAbove->fRightPoly; |
} else { |
- leftPoly = leftEnclosingEdge ? leftEnclosingEdge->fRightPoly : NULL; |
- rightPoly = rightEnclosingEdge ? rightEnclosingEdge->fLeftPoly : NULL; |
+ leftPoly = leftEnclosingEdge ? leftEnclosingEdge->fRightPoly : nullptr; |
+ rightPoly = rightEnclosingEdge ? rightEnclosingEdge->fLeftPoly : nullptr; |
} |
#if LOGGING_ENABLED |
LOG("edges above:\n"); |
@@ -1232,7 +1232,7 @@ Poly* tessellate(Vertex* vertices, SkChunkAlloc& alloc) { |
remove_edge(v->fLastEdgeAbove, &activeEdges); |
if (!v->fFirstEdgeBelow) { |
if (leftPoly && rightPoly && leftPoly != rightPoly) { |
- SkASSERT(leftPoly->fPartner == NULL && rightPoly->fPartner == NULL); |
+ SkASSERT(leftPoly->fPartner == nullptr && rightPoly->fPartner == nullptr); |
rightPoly->fPartner = leftPoly; |
leftPoly->fPartner = rightPoly; |
} |
@@ -1282,7 +1282,7 @@ Poly* tessellate(Vertex* vertices, SkChunkAlloc& alloc) { |
} |
#if LOGGING_ENABLED |
LOG("\nactive edges:\n"); |
- for (Edge* e = activeEdges.fHead; e != NULL; e = e->fRight) { |
+ for (Edge* e = activeEdges.fHead; e != nullptr; e = e->fRight) { |
LOG("%g -> %g, lpoly %d, rpoly %d\n", e->fTop->fID, e->fBottom->fID, |
e->fLeftPoly ? e->fLeftPoly->fID : -1, e->fRightPoly ? e->fRightPoly->fID : -1); |
} |
@@ -1307,14 +1307,14 @@ Poly* contours_to_polys(Vertex** contours, int contourCnt, Comparator& c, SkChun |
sanitize_contours(contours, contourCnt); |
Vertex* vertices = build_edges(contours, contourCnt, c, alloc); |
if (!vertices) { |
- return NULL; |
+ return nullptr; |
} |
// Sort vertices in Y (secondarily in X). |
merge_sort(&vertices, c); |
merge_coincident_vertices(&vertices, c, alloc); |
#if LOGGING_ENABLED |
- for (Vertex* v = vertices; v != NULL; v = v->fNext) { |
+ for (Vertex* v = vertices; v != nullptr; v = v->fNext) { |
static float gID = 0.0f; |
v->fID = gID++; |
} |
@@ -1379,7 +1379,7 @@ bool GrTessellatingPathRenderer::onCanDrawPath(const CanDrawPathArgs& args) cons |
// This path renderer can draw all fill styles, all stroke styles except hairlines, but does |
// not do antialiasing. It can do convex and concave paths, but we'll leave the convex ones to |
// simpler algorithms. |
- return !IsStrokeHairlineOrEquivalent(*args.fStroke, *args.fViewMatrix, NULL) && |
+ return !IsStrokeHairlineOrEquivalent(*args.fStroke, *args.fViewMatrix, nullptr) && |
!args.fAntiAlias && !args.fPath->isConvex(); |
} |
@@ -1619,7 +1619,7 @@ private: |
bool GrTessellatingPathRenderer::onDrawPath(const DrawPathArgs& args) { |
SkASSERT(!args.fAntiAlias); |
const GrRenderTarget* rt = args.fPipelineBuilder->getRenderTarget(); |
- if (NULL == rt) { |
+ if (nullptr == rt) { |
return false; |
} |