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

Side by Side Diff: src/pathops/SkPathOpsCommon.cpp

Issue 2321773002: pathops tiger checkpoint (Closed)
Patch Set: checkpoint (all not-under-development tests work) Created 4 years, 3 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/pathops/SkOpSpan.cpp ('k') | src/pathops/SkPathOpsDebug.h » ('j') | 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 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 #include "SkAddIntersections.h" 7 #include "SkAddIntersections.h"
8 #include "SkOpCoincidence.h" 8 #include "SkOpCoincidence.h"
9 #include "SkOpEdgeBuilder.h" 9 #include "SkOpEdgeBuilder.h"
10 #include "SkPathOpsCommon.h" 10 #include "SkPathOpsCommon.h"
(...skipping 465 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 // add coincidence formed by pairing on curve points and endpoints 476 // add coincidence formed by pairing on curve points and endpoints
477 coincidence->correctEnds(); 477 coincidence->correctEnds();
478 if (!coincidence->addEndMovedSpans()) { 478 if (!coincidence->addEndMovedSpans()) {
479 return false; 479 return false;
480 } 480 }
481 DEBUG_COINCIDENCE_HEALTH(contourList, "addEndMovedSpans"); 481 DEBUG_COINCIDENCE_HEALTH(contourList, "addEndMovedSpans");
482 482
483 const int SAFETY_COUNT = 100; // FIXME: tune 483 const int SAFETY_COUNT = 100; // FIXME: tune
484 int safetyHatch = SAFETY_COUNT; 484 int safetyHatch = SAFETY_COUNT;
485 // look for coincidence present in A-B and A-C but missing in B-C 485 // look for coincidence present in A-B and A-C but missing in B-C
486 while (coincidence->addMissing()) { 486 do {
487 bool added;
488 if (!coincidence->addMissing(&added)) {
489 return false;
490 }
491 if (!added) {
492 break;
493 }
487 if (!--safetyHatch) { 494 if (!--safetyHatch) {
488 SkASSERT(globalState->debugSkipAssert()); 495 SkASSERT(globalState->debugSkipAssert());
489 return false; 496 return false;
490 } 497 }
491 DEBUG_COINCIDENCE_HEALTH(contourList, "addMissing"); 498 DEBUG_COINCIDENCE_HEALTH(contourList, "addMissing");
492 moveNearby(contourList); 499 moveNearby(contourList);
493 DEBUG_COINCIDENCE_HEALTH(contourList, "moveNearby"); 500 DEBUG_COINCIDENCE_HEALTH(contourList, "moveNearby");
494 } 501 } while (true);
495 DEBUG_COINCIDENCE_HEALTH(contourList, "addMissing2"); 502 DEBUG_COINCIDENCE_HEALTH(contourList, "addMissing2");
496 // FIXME: only call this if addMissing modified something when returning fal se 503 // FIXME: only call this if addMissing modified something when returning fal se
497 moveNearby(contourList); 504 moveNearby(contourList);
498 DEBUG_COINCIDENCE_HEALTH(contourList, "moveNearby2"); 505 DEBUG_COINCIDENCE_HEALTH(contourList, "moveNearby2");
499 // check to see if, loosely, coincident ranges may be expanded 506 // check to see if, loosely, coincident ranges may be expanded
500 if (coincidence->expand()) { 507 if (coincidence->expand()) {
501 DEBUG_COINCIDENCE_HEALTH(contourList, "expand1"); 508 DEBUG_COINCIDENCE_HEALTH(contourList, "expand1");
502 coincidence->addMissing(); 509 bool added;
510 if (!coincidence->addMissing(&added)) {
511 return false;
512 }
503 DEBUG_COINCIDENCE_HEALTH(contourList, "addMissing2"); 513 DEBUG_COINCIDENCE_HEALTH(contourList, "addMissing2");
504 if (!coincidence->addExpanded()) { 514 if (!coincidence->addExpanded()) {
505 return false; 515 return false;
506 } 516 }
507 DEBUG_COINCIDENCE_HEALTH(contourList, "addExpanded2"); 517 DEBUG_COINCIDENCE_HEALTH(contourList, "addExpanded2");
508 if (!moveMultiples(contourList)) { 518 if (!moveMultiples(contourList)) {
509 return false; 519 return false;
510 } 520 }
511 DEBUG_COINCIDENCE_HEALTH(contourList, "moveMultiples2"); 521 DEBUG_COINCIDENCE_HEALTH(contourList, "moveMultiples2");
512 moveNearby(contourList); 522 moveNearby(contourList);
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
582 } 592 }
583 #if DEBUG_COINCIDENCE_VERBOSE 593 #if DEBUG_COINCIDENCE_VERBOSE
584 coincidence->debugShowCoincidence(); 594 coincidence->debugShowCoincidence();
585 #endif 595 #endif
586 #if DEBUG_COINCIDENCE 596 #if DEBUG_COINCIDENCE
587 coincidence->debugValidate(); 597 coincidence->debugValidate();
588 #endif 598 #endif
589 SkPathOpsDebug::ShowActiveSpans(contourList); 599 SkPathOpsDebug::ShowActiveSpans(contourList);
590 return true; 600 return true;
591 } 601 }
OLDNEW
« no previous file with comments | « src/pathops/SkOpSpan.cpp ('k') | src/pathops/SkPathOpsDebug.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698