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

Side by Side Diff: tests/PathOpsExtendedTest.cpp

Issue 14407006: path ops -- handle non-finite numbers (Closed) Base URL: http://skia.googlecode.com/svn/trunk/
Patch Set: Created 7 years, 7 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 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 "PathOpsExtendedTest.h" 8 #include "PathOpsExtendedTest.h"
9 #include "PathOpsThreadedCommon.h" 9 #include "PathOpsThreadedCommon.h"
10 #include "SkBitmap.h" 10 #include "SkBitmap.h"
(...skipping 431 matching lines...) Expand 10 before | Expand all | Expand 10 after
442 outFile.flush(); 442 outFile.flush();
443 } 443 }
444 444
445 bool testSimplify(SkPath& path, bool useXor, SkPath& out, PathOpsThreadState& st ate, 445 bool testSimplify(SkPath& path, bool useXor, SkPath& out, PathOpsThreadState& st ate,
446 const char* pathStr) { 446 const char* pathStr) {
447 SkPath::FillType fillType = useXor ? SkPath::kEvenOdd_FillType : SkPath::kWi nding_FillType; 447 SkPath::FillType fillType = useXor ? SkPath::kEvenOdd_FillType : SkPath::kWi nding_FillType;
448 path.setFillType(fillType); 448 path.setFillType(fillType);
449 if (gShowPath) { 449 if (gShowPath) {
450 showPath(path); 450 showPath(path);
451 } 451 }
452 Simplify(path, &out); 452 if (!Simplify(path, &out)) {
453 SkDebugf("%s did not expect failure\n", __FUNCTION__);
454 REPORTER_ASSERT(state.fReporter, 0);
455 return false;
456 }
453 if (!gComparePaths) { 457 if (!gComparePaths) {
454 return true; 458 return true;
455 } 459 }
456 int result = comparePaths(state.fReporter, path, out, *state.fBitmap); 460 int result = comparePaths(state.fReporter, path, out, *state.fBitmap);
457 if (result && gPathStrAssert) { 461 if (result && gPathStrAssert) {
458 char temp[8192]; 462 char temp[8192];
459 sk_bzero(temp, sizeof(temp)); 463 sk_bzero(temp, sizeof(temp));
460 SkMemoryWStream stream(temp, sizeof(temp)); 464 SkMemoryWStream stream(temp, sizeof(temp));
461 const char* pathPrefix = NULL; 465 const char* pathPrefix = NULL;
462 const char* nameSuffix = NULL; 466 const char* nameSuffix = NULL;
463 if (fillType == SkPath::kEvenOdd_FillType) { 467 if (fillType == SkPath::kEvenOdd_FillType) {
464 pathPrefix = " path.setFillType(SkPath::kEvenOdd_FillType);\n"; 468 pathPrefix = " path.setFillType(SkPath::kEvenOdd_FillType);\n";
465 nameSuffix = "x"; 469 nameSuffix = "x";
466 } 470 }
467 const char testFunction[] = "testSimplifyx(path);"; 471 const char testFunction[] = "testSimplifyx(path);";
468 outputToStream(pathStr, pathPrefix, nameSuffix, testFunction, false, str eam); 472 outputToStream(pathStr, pathPrefix, nameSuffix, testFunction, false, str eam);
469 SkDebugf(temp); 473 SkDebugf(temp);
470 REPORTER_ASSERT(state.fReporter, 0); 474 REPORTER_ASSERT(state.fReporter, 0);
471 } 475 }
472 state.fReporter->bumpTestCount(); 476 state.fReporter->bumpTestCount();
473 return result == 0; 477 return result == 0;
474 } 478 }
475 479
476 bool testSimplify(skiatest::Reporter* reporter, const SkPath& path) { 480 bool testSimplify(skiatest::Reporter* reporter, const SkPath& path) {
477 #if FORCE_RELEASE == 0 481 #if FORCE_RELEASE == 0
478 showPathData(path); 482 showPathData(path);
479 #endif 483 #endif
480 SkPath out; 484 SkPath out;
481 Simplify(path, &out); 485 if (!Simplify(path, &out)) {
486 SkDebugf("%s did not expect failure\n", __FUNCTION__);
487 REPORTER_ASSERT(reporter, 0);
488 return false;
489 }
482 SkBitmap bitmap; 490 SkBitmap bitmap;
483 int result = comparePaths(reporter, path, out, bitmap); 491 int result = comparePaths(reporter, path, out, bitmap);
484 if (result && gPathStrAssert) { 492 if (result && gPathStrAssert) {
485 REPORTER_ASSERT(reporter, 0); 493 REPORTER_ASSERT(reporter, 0);
486 } 494 }
487 reporter->bumpTestCount(); 495 reporter->bumpTestCount();
488 return result == 0; 496 return result == 0;
489 } 497 }
490 498
491 bool testPathOp(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b, 499 bool testPathOp(skiatest::Reporter* reporter, const SkPath& a, const SkPath& b,
492 const SkPathOp shapeOp) { 500 const SkPathOp shapeOp) {
493 #if FORCE_RELEASE == 0 501 #if FORCE_RELEASE == 0
494 showPathData(a); 502 showPathData(a);
495 showOp(shapeOp); 503 showOp(shapeOp);
496 showPathData(b); 504 showPathData(b);
497 #endif 505 #endif
498 SkPath out; 506 SkPath out;
499 Op(a, b, shapeOp, &out); 507 if (!Op(a, b, shapeOp, &out) ) {
508 SkDebugf("%s did not expect failure\n", __FUNCTION__);
509 REPORTER_ASSERT(reporter, 0);
510 return false;
511 }
500 SkPath pathOut, scaledPathOut; 512 SkPath pathOut, scaledPathOut;
501 SkRegion rgnA, rgnB, openClip, rgnOut; 513 SkRegion rgnA, rgnB, openClip, rgnOut;
502 openClip.setRect(-16000, -16000, 16000, 16000); 514 openClip.setRect(-16000, -16000, 16000, 16000);
503 rgnA.setPath(a, openClip); 515 rgnA.setPath(a, openClip);
504 rgnB.setPath(b, openClip); 516 rgnB.setPath(b, openClip);
505 rgnOut.op(rgnA, rgnB, (SkRegion::Op) shapeOp); 517 rgnOut.op(rgnA, rgnB, (SkRegion::Op) shapeOp);
506 rgnOut.getBoundaryPath(&pathOut); 518 rgnOut.getBoundaryPath(&pathOut);
507 519
508 SkMatrix scale; 520 SkMatrix scale;
509 scaleMatrix(a, b, scale); 521 scaleMatrix(a, b, scale);
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 } 613 }
602 if (tests[index].fun == stopTest) { 614 if (tests[index].fun == stopTest) {
603 SkDebugf("lastTest\n"); 615 SkDebugf("lastTest\n");
604 } 616 }
605 if (index == last) { 617 if (index == last) {
606 break; 618 break;
607 } 619 }
608 index += reverse ? -1 : 1; 620 index += reverse ? -1 : 1;
609 } while (true); 621 } while (true);
610 } 622 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698