| Index: include/core/SkPath.h
|
| diff --git a/include/core/SkPath.h b/include/core/SkPath.h
|
| index 99f8242ff7de59167a0e69a1004c8fe8e3120c4b..fe89766558c4ab5be1710f10f17d6ddc7f8b843b 100644
|
| --- a/include/core/SkPath.h
|
| +++ b/include/core/SkPath.h
|
| @@ -206,8 +206,8 @@ public:
|
|
|
| @return true if the line is of zero length; otherwise false.
|
| */
|
| - static bool IsLineDegenerate(const SkPoint& p1, const SkPoint& p2) {
|
| - return p1.equalsWithinTolerance(p2);
|
| + static bool IsLineDegenerate(const SkPoint& p1, const SkPoint& p2, bool exact) {
|
| + return exact ? p1 == p2 : p1.equalsWithinTolerance(p2);
|
| }
|
|
|
| /** Test a quad for zero length
|
| @@ -215,8 +215,8 @@ public:
|
| @return true if the quad is of zero length; otherwise false.
|
| */
|
| static bool IsQuadDegenerate(const SkPoint& p1, const SkPoint& p2,
|
| - const SkPoint& p3) {
|
| - return p1.equalsWithinTolerance(p2) &&
|
| + const SkPoint& p3, bool exact) {
|
| + return exact ? p1 == p2 && p2 == p3 : p1.equalsWithinTolerance(p2) &&
|
| p2.equalsWithinTolerance(p3);
|
| }
|
|
|
| @@ -225,8 +225,8 @@ public:
|
| @return true if the cubic is of zero length; otherwise false.
|
| */
|
| static bool IsCubicDegenerate(const SkPoint& p1, const SkPoint& p2,
|
| - const SkPoint& p3, const SkPoint& p4) {
|
| - return p1.equalsWithinTolerance(p2) &&
|
| + const SkPoint& p3, const SkPoint& p4, bool exact) {
|
| + return exact ? p1 == p2 && p2 == p3 && p3 == p4 : p1.equalsWithinTolerance(p2) &&
|
| p2.equalsWithinTolerance(p3) &&
|
| p3.equalsWithinTolerance(p4);
|
| }
|
| @@ -800,11 +800,15 @@ public:
|
| @param pts The points representing the current verb and/or segment
|
| @param doConsumeDegerates If true, first scan for segments that are
|
| deemed degenerate (too short) and skip those.
|
| + @param exact if doConsumeDegenerates is true and exact is true, skip only
|
| + degenerate elements with lengths exactly equal to zero. If exact
|
| + is false, skip degenerate elements with lengths close to zero. If
|
| + doConsumeDegenerates is false, exact has no effect.
|
| @return The verb for the current segment
|
| */
|
| - Verb next(SkPoint pts[4], bool doConsumeDegerates = true) {
|
| + Verb next(SkPoint pts[4], bool doConsumeDegerates = true, bool exact = false) {
|
| if (doConsumeDegerates) {
|
| - this->consumeDegenerateSegments();
|
| + this->consumeDegenerateSegments(exact);
|
| }
|
| return this->doNext(pts);
|
| }
|
| @@ -844,7 +848,7 @@ public:
|
|
|
| inline const SkPoint& cons_moveTo();
|
| Verb autoClose(SkPoint pts[2]);
|
| - void consumeDegenerateSegments();
|
| + void consumeDegenerateSegments(bool exact);
|
| Verb doNext(SkPoint pts[4]);
|
| };
|
|
|
|
|