Index: src/core/SkPathPriv.h |
diff --git a/src/core/SkPathPriv.h b/src/core/SkPathPriv.h |
index 51a1a8009479cd104680e7a80a85e075210ba0f6..7b007c87020a6f1ac4db2b1111749b257f62de37 100644 |
--- a/src/core/SkPathPriv.h |
+++ b/src/core/SkPathPriv.h |
@@ -55,9 +55,30 @@ public: |
return computedDir == dir; |
} |
- static bool LastVerbIsClose(const SkPath& path) { |
- int count = path.countVerbs(); |
- return count >= 1 && path.fPathRef->verbs()[~(count - 1)] == SkPath::Verb::kClose_Verb; |
+ static bool IsClosedSingleContour(const SkPath& path) { |
+ int verbCount = path.countVerbs(); |
+ if (verbCount == 0) |
+ return false; |
+ int moveCount = 0; |
+ auto verbs = path.fPathRef->verbs(); |
+ for (int i = 0; i < verbCount; i++) { |
reed1
2015/12/14 18:52:09
Is this loop traversing forwards or backwards thro
|
+ auto verb = verbs[~i]; |
+ switch (verb) { |
+ case SkPath::Verb::kMove_Verb: |
+ moveCount += 1; |
+ if (moveCount > 1) { |
+ return false; |
+ } |
+ break; |
+ case SkPath::Verb::kClose_Verb: |
+ if (i == verbCount - 1) { |
+ return true; |
+ } |
+ return false; |
+ default: break; |
+ } |
+ } |
+ return false; |
} |
static void AddGenIDChangeListener(const SkPath& path, SkPathRef::GenIDChangeListener* listener) { |