Chromium Code Reviews| 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) { |