| Index: src/pathops/SkOpBuilder.cpp
|
| diff --git a/src/pathops/SkOpBuilder.cpp b/src/pathops/SkOpBuilder.cpp
|
| index 011d6a6aba0fb0f344e14d9e5b2e3539a8c0dbc2..075520d2c1a42b195a4689ee7d614abb8bdc7d88 100644
|
| --- a/src/pathops/SkOpBuilder.cpp
|
| +++ b/src/pathops/SkOpBuilder.cpp
|
| @@ -25,7 +25,17 @@ static bool one_contour(const SkPath& path) {
|
| return true;
|
| }
|
|
|
| -bool FixWinding(SkPath* path) {
|
| +void SkOpBuilder::ReversePath(SkPath* path) {
|
| + SkPath temp;
|
| + SkPoint lastPt;
|
| + SkAssertResult(path->getLastPt(&lastPt));
|
| + temp.moveTo(lastPt);
|
| + temp.reversePathTo(*path);
|
| + temp.close();
|
| + *path = temp;
|
| +}
|
| +
|
| +bool SkOpBuilder::FixWinding(SkPath* path) {
|
| SkPath::FillType fillType = path->getFillType();
|
| if (fillType == SkPath::kInverseEvenOdd_FillType) {
|
| fillType = SkPath::kInverseWinding_FillType;
|
| @@ -35,9 +45,7 @@ bool FixWinding(SkPath* path) {
|
| SkPathPriv::FirstDirection dir;
|
| if (one_contour(*path) && SkPathPriv::CheapComputeFirstDirection(*path, &dir)) {
|
| if (dir != SkPathPriv::kCCW_FirstDirection) {
|
| - SkPath temp;
|
| - temp.reverseAddPath(*path);
|
| - *path = temp;
|
| + ReversePath(path);
|
| }
|
| path->setFillType(fillType);
|
| return true;
|
| @@ -133,9 +141,7 @@ bool SkOpBuilder::resolve(SkPath* result) {
|
| if (firstDir == SkPathPriv::kUnknown_FirstDirection) {
|
| firstDir = dir;
|
| } else if (firstDir != dir) {
|
| - SkPath temp;
|
| - temp.reverseAddPath(*test);
|
| - *test = temp;
|
| + ReversePath(test);
|
| }
|
| continue;
|
| }
|
|
|