aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/core/SkScan_Path.cpp
diff options
context:
space:
mode:
authorGravatar Yuqian Li <liyuqian@google.com>2017-03-17 11:26:29 -0400
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-03-21 14:36:45 +0000
commita33b43d796f03e2f4b5abd8060272f4f775d7390 (patch)
treef0b6d4b4aea2ef06c24a045777184ade6bf48f85 /src/core/SkScan_Path.cpp
parent5f3b94074e4db4acd408b7e323ac981b3b55a0d1 (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.cpp38
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;
}