Index: tests/GrShapeTest.cpp |
diff --git a/tests/GrShapeTest.cpp b/tests/GrShapeTest.cpp |
index 348676be302a080f030e833e917213757e735f52..7636e2a0d080dddcc8f271e764bc1f4aeb0abed9 100644 |
--- a/tests/GrShapeTest.cpp |
+++ b/tests/GrShapeTest.cpp |
@@ -263,8 +263,20 @@ void TestCase::testExpectations(skiatest::Reporter* reporter, SelfExpectations e |
} |
} |
-void check_equivalence(skiatest::Reporter* r, const GrShape& a, const GrShape& b, |
- const Key& keyA, const Key& keyB) { |
+static bool can_interchange_winding_and_even_odd_fill(const GrShape& shape) { |
+ SkPath path; |
+ shape.asPath(&path); |
+ if (shape.style().hasNonDashPathEffect()) { |
+ return false; |
+ } |
+ const SkStrokeRec::Style strokeRecStyle = shape.style().strokeRec().getStyle(); |
+ return strokeRecStyle == SkStrokeRec::kStroke_Style || |
+ strokeRecStyle == SkStrokeRec::kHairline_Style || |
+ (shape.style().isSimpleFill() && path.isConvex()); |
+} |
+ |
+static void check_equivalence(skiatest::Reporter* r, const GrShape& a, const GrShape& b, |
+ const Key& keyA, const Key& keyB) { |
// GrShape only respects the input winding direction and start point for rrect shapes |
// when there is a path effect. Thus, if there are two GrShapes representing the same rrect |
// but one has a path effect in its style and the other doesn't then asPath() and the unstyled |
@@ -302,16 +314,8 @@ void check_equivalence(skiatest::Reporter* r, const GrShape& a, const GrShape& b |
bool ignoreWindingVsEvenOdd = false; |
if (SkPath::ConvertToNonInverseFillType(pathA.getFillType()) != |
SkPath::ConvertToNonInverseFillType(pathB.getFillType())) { |
- const SkStrokeRec::Style strokeRecStyleA = a.style().strokeRec().getStyle(); |
- const SkStrokeRec::Style strokeRecStyleB = b.style().strokeRec().getStyle(); |
- bool aCanChange = !a.style().hasNonDashPathEffect() && |
- (strokeRecStyleA == SkStrokeRec::kStroke_Style || |
- strokeRecStyleA == SkStrokeRec::kHairline_Style || |
- (a.style().isSimpleFill() && pathA.isConvex())); |
- bool bCanChange = !b.style().hasNonDashPathEffect() && |
- (strokeRecStyleB == SkStrokeRec::kStroke_Style || |
- strokeRecStyleB == SkStrokeRec::kHairline_Style || |
- (b.style().isSimpleFill() && pathB.isConvex())); |
+ bool aCanChange = can_interchange_winding_and_even_odd_fill(a); |
+ bool bCanChange = can_interchange_winding_and_even_odd_fill(b); |
if (aCanChange != bCanChange) { |
ignoreWindingVsEvenOdd = true; |
} |