diff options
author | Yuqian Li <liyuqian@google.com> | 2017-03-17 11:26:29 -0400 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-03-21 14:36:45 +0000 |
commit | a33b43d796f03e2f4b5abd8060272f4f775d7390 (patch) | |
tree | f0b6d4b4aea2ef06c24a045777184ade6bf48f85 /src/core/SkScan_Path.cpp | |
parent | 5f3b94074e4db4acd408b7e323ac981b3b55a0d1 (diff) |
Combine some duplicate code in AA using template
BUG=skia:
Change-Id: Id048425e8199167feba0268f89f526bbf5b7242b
Reviewed-on: https://skia-review.googlesource.com/9832
Reviewed-by: Cary Clark <caryclark@google.com>
Commit-Queue: Yuqian Li <liyuqian@google.com>
Diffstat (limited to 'src/core/SkScan_Path.cpp')
-rw-r--r-- | src/core/SkScan_Path.cpp | 38 |
1 files changed, 1 insertions, 37 deletions
diff --git a/src/core/SkScan_Path.cpp b/src/core/SkScan_Path.cpp index 9f81eac1d5..11f9c403c8 100644 --- a/src/core/SkScan_Path.cpp +++ b/src/core/SkScan_Path.cpp @@ -36,42 +36,6 @@ #define validate_sort(edge) #endif -static inline void remove_edge(SkEdge* edge) { - edge->fPrev->fNext = edge->fNext; - edge->fNext->fPrev = edge->fPrev; -} - -static inline void insert_edge_after(SkEdge* edge, SkEdge* afterMe) { - edge->fPrev = afterMe; - edge->fNext = afterMe->fNext; - afterMe->fNext->fPrev = edge; - afterMe->fNext = edge; -} - -static void backward_insert_edge_based_on_x(SkEdge* edge SkDECLAREPARAM(int, curr_y)) { - SkFixed x = edge->fX; - - SkEdge* prev = edge->fPrev; - while (prev->fX > x) { - prev = prev->fPrev; - } - if (prev->fNext != edge) { - remove_edge(edge); - insert_edge_after(edge, prev); - } -} - -// Start from the right side, searching backwards for the point to begin the new edge list -// insertion, marching forwards from here. The implementation could have started from the left -// of the prior insertion, and search to the right, or with some additional caching, binary -// search the starting point. More work could be done to determine optimal new edge insertion. -static SkEdge* backward_insert_start(SkEdge* prev, SkFixed x) { - while (prev->fX > x) { - prev = prev->fPrev; - } - return prev; -} - static void insert_new_edges(SkEdge* newEdge, int curr_y) { if (newEdge->fFirstY != curr_y) { return; @@ -191,7 +155,7 @@ static void walk_edges(SkEdge* prevHead, SkPath::FillType fillType, currE->fX = newX; NEXT_X: if (newX < prevX) { // ripple currE backwards until it is x-sorted - backward_insert_edge_based_on_x(currE SkPARAM(curr_y)); + backward_insert_edge_based_on_x(currE); } else { prevX = newX; } |