Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(945)

Side by Side Diff: tests/GrShapeTest.cpp

Issue 2087393003: Fix Rob's nits from https://codereview.chromium.org/2085913003 (Closed) Base URL: https://chromium.googlesource.com/skia.git@master
Patch Set: cleaner Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/gpu/GrShape.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2016 Google Inc. 2 * Copyright 2016 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include <initializer_list> 8 #include <initializer_list>
9 #include <functional> 9 #include <functional>
10 #include "Test.h" 10 #include "Test.h"
(...skipping 245 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 fAppliedPE.asPath(&b); 256 fAppliedPE.asPath(&b);
257 REPORTER_ASSERT(reporter, a == b); 257 REPORTER_ASSERT(reporter, a == b);
258 if (expectations.fStrokeApplies) { 258 if (expectations.fStrokeApplies) {
259 REPORTER_ASSERT(reporter, fBaseKey != fAppliedFullKey); 259 REPORTER_ASSERT(reporter, fBaseKey != fAppliedFullKey);
260 } else { 260 } else {
261 REPORTER_ASSERT(reporter, fBaseKey == fAppliedFullKey); 261 REPORTER_ASSERT(reporter, fBaseKey == fAppliedFullKey);
262 } 262 }
263 } 263 }
264 } 264 }
265 265
266 void check_equivalence(skiatest::Reporter* r, const GrShape& a, const GrShape& b , 266 static bool can_interchange_winding_and_even_odd_fill(const GrShape& shape) {
267 const Key& keyA, const Key& keyB) { 267 SkPath path;
268 shape.asPath(&path);
269 if (shape.style().hasNonDashPathEffect()) {
270 return false;
271 }
272 const SkStrokeRec::Style strokeRecStyle = shape.style().strokeRec().getStyle ();
273 return strokeRecStyle == SkStrokeRec::kStroke_Style ||
274 strokeRecStyle == SkStrokeRec::kHairline_Style ||
275 (shape.style().isSimpleFill() && path.isConvex());
276 }
277
278 static void check_equivalence(skiatest::Reporter* r, const GrShape& a, const GrS hape& b,
279 const Key& keyA, const Key& keyB) {
268 // GrShape only respects the input winding direction and start point for rre ct shapes 280 // GrShape only respects the input winding direction and start point for rre ct shapes
269 // when there is a path effect. Thus, if there are two GrShapes representing the same rrect 281 // when there is a path effect. Thus, if there are two GrShapes representing the same rrect
270 // but one has a path effect in its style and the other doesn't then asPath( ) and the unstyled 282 // but one has a path effect in its style and the other doesn't then asPath( ) and the unstyled
271 // key will differ. GrShape will have canonicalized the direction and start point for the shape 283 // key will differ. GrShape will have canonicalized the direction and start point for the shape
272 // without the path effect. If *both* have path effects then they should hav e both preserved 284 // without the path effect. If *both* have path effects then they should hav e both preserved
273 // the direction and starting point. 285 // the direction and starting point.
274 286
275 // The asRRect() output params are all initialized just to silence compiler warnings about 287 // The asRRect() output params are all initialized just to silence compiler warnings about
276 // uninitialized variables. 288 // uninitialized variables.
277 SkRRect rrectA = SkRRect::MakeEmpty(), rrectB = SkRRect::MakeEmpty(); 289 SkRRect rrectA = SkRRect::MakeEmpty(), rrectB = SkRRect::MakeEmpty();
(...skipping 17 matching lines...) Expand all
295 if (pathA.isInverseFillType() != pathB.isInverseFillType()) { 307 if (pathA.isInverseFillType() != pathB.isInverseFillType()) {
296 const GrShape* s1 = pathA.isInverseFillType() ? &a : &b; 308 const GrShape* s1 = pathA.isInverseFillType() ? &a : &b;
297 const GrShape* s2 = pathA.isInverseFillType() ? &b : &a; 309 const GrShape* s2 = pathA.isInverseFillType() ? &b : &a;
298 bool canDropInverse1 = s1->style().isDashed(); 310 bool canDropInverse1 = s1->style().isDashed();
299 bool canDropInverse2 = s2->style().isDashed(); 311 bool canDropInverse2 = s2->style().isDashed();
300 ignoreInversenessDifference = (canDropInverse1 != canDropInverse2); 312 ignoreInversenessDifference = (canDropInverse1 != canDropInverse2);
301 } 313 }
302 bool ignoreWindingVsEvenOdd = false; 314 bool ignoreWindingVsEvenOdd = false;
303 if (SkPath::ConvertToNonInverseFillType(pathA.getFillType()) != 315 if (SkPath::ConvertToNonInverseFillType(pathA.getFillType()) !=
304 SkPath::ConvertToNonInverseFillType(pathB.getFillType())) { 316 SkPath::ConvertToNonInverseFillType(pathB.getFillType())) {
305 const SkStrokeRec::Style strokeRecStyleA = a.style().strokeRec().getSty le(); 317 bool aCanChange = can_interchange_winding_and_even_odd_fill(a);
306 const SkStrokeRec::Style strokeRecStyleB = b.style().strokeRec().getSty le(); 318 bool bCanChange = can_interchange_winding_and_even_odd_fill(b);
307 bool aCanChange = !a.style().hasNonDashPathEffect() &&
308 (strokeRecStyleA == SkStrokeRec::kStroke_Style ||
309 strokeRecStyleA == SkStrokeRec::kHairline_Style ||
310 (a.style().isSimpleFill() && pathA.isConvex()));
311 bool bCanChange = !b.style().hasNonDashPathEffect() &&
312 (strokeRecStyleB == SkStrokeRec::kStroke_Style ||
313 strokeRecStyleB == SkStrokeRec::kHairline_Style ||
314 (b.style().isSimpleFill() && pathB.isConvex()));
315 if (aCanChange != bCanChange) { 319 if (aCanChange != bCanChange) {
316 ignoreWindingVsEvenOdd = true; 320 ignoreWindingVsEvenOdd = true;
317 } 321 }
318 } 322 }
319 if (allowSameRRectButDiffStartAndDir) { 323 if (allowSameRRectButDiffStartAndDir) {
320 REPORTER_ASSERT(r, rrectA == rrectB); 324 REPORTER_ASSERT(r, rrectA == rrectB);
321 REPORTER_ASSERT(r, paths_fill_same(pathA, pathB)); 325 REPORTER_ASSERT(r, paths_fill_same(pathA, pathB));
322 REPORTER_ASSERT(r, ignoreInversenessDifference || invertedA == invertedB ); 326 REPORTER_ASSERT(r, ignoreInversenessDifference || invertedA == invertedB );
323 } else { 327 } else {
324 SkPath pA = pathA; 328 SkPath pA = pathA;
(...skipping 1170 matching lines...) Expand 10 before | Expand all | Expand 10 after
1495 REPORTER_ASSERT(reporter, testPath.fIsLine == strokePathCase.baseShape() .asLine(nullptr)); 1499 REPORTER_ASSERT(reporter, testPath.fIsLine == strokePathCase.baseShape() .asLine(nullptr));
1496 } 1500 }
1497 1501
1498 // Test a volatile empty path. 1502 // Test a volatile empty path.
1499 test_volatile_path(reporter, SkPath(), true); 1503 test_volatile_path(reporter, SkPath(), true);
1500 1504
1501 test_empty_shape(reporter); 1505 test_empty_shape(reporter);
1502 } 1506 }
1503 1507
1504 #endif 1508 #endif
OLDNEW
« no previous file with comments | « src/gpu/GrShape.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698