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

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

Issue 1313203003: Remove include of stdlib.h from SkTypes.h. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Clean up qsort conversion. Created 5 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/SkOpAngle.cpp ('k') | src/pathops/SkOpSpan.cpp » ('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 "SkOpCoincidence.h" 7 #include "SkOpCoincidence.h"
8 #include "SkOpContour.h" 8 #include "SkOpContour.h"
9 #include "SkOpSegment.h" 9 #include "SkOpSegment.h"
10 #include "SkPathWriter.h" 10 #include "SkPathWriter.h"
(...skipping 1461 matching lines...) Expand 10 before | Expand all | Expand 10 after
1472 SkPoint midPt = this->ptAtT(midT); 1472 SkPoint midPt = this->ptAtT(midT);
1473 double seDistSq = SkTMax(pt1.distanceToSqd(pt2) * 2, FLT_EPSILON * 2); 1473 double seDistSq = SkTMax(pt1.distanceToSqd(pt2) * 2, FLT_EPSILON * 2);
1474 return midPt.distanceToSqd(pt1) > seDistSq || midPt.distanceToSqd(pt2) > seD istSq; 1474 return midPt.distanceToSqd(pt1) > seDistSq || midPt.distanceToSqd(pt2) > seD istSq;
1475 } 1475 }
1476 1476
1477 void SkOpSegment::setUpWindings(SkOpSpanBase* start, SkOpSpanBase* end, int* sum MiWinding, 1477 void SkOpSegment::setUpWindings(SkOpSpanBase* start, SkOpSpanBase* end, int* sum MiWinding,
1478 int* maxWinding, int* sumWinding) { 1478 int* maxWinding, int* sumWinding) {
1479 int deltaSum = SpanSign(start, end); 1479 int deltaSum = SpanSign(start, end);
1480 *maxWinding = *sumMiWinding; 1480 *maxWinding = *sumMiWinding;
1481 *sumWinding = *sumMiWinding -= deltaSum; 1481 *sumWinding = *sumMiWinding -= deltaSum;
1482 SkASSERT(!DEBUG_LIMIT_WIND_SUM || abs(*sumWinding) <= DEBUG_LIMIT_WIND_SUM); 1482 SkASSERT(!DEBUG_LIMIT_WIND_SUM || SkTAbs(*sumWinding) <= DEBUG_LIMIT_WIND_SU M);
1483 } 1483 }
1484 1484
1485 void SkOpSegment::setUpWindings(SkOpSpanBase* start, SkOpSpanBase* end, int* sum MiWinding, 1485 void SkOpSegment::setUpWindings(SkOpSpanBase* start, SkOpSpanBase* end, int* sum MiWinding,
1486 int* sumSuWinding, int* maxWinding, int* sumWinding, int* oppMaxWinding, 1486 int* sumSuWinding, int* maxWinding, int* sumWinding, int* oppMaxWinding,
1487 int* oppSumWinding) { 1487 int* oppSumWinding) {
1488 int deltaSum = SpanSign(start, end); 1488 int deltaSum = SpanSign(start, end);
1489 int oppDeltaSum = OppSign(start, end); 1489 int oppDeltaSum = OppSign(start, end);
1490 if (operand()) { 1490 if (operand()) {
1491 *maxWinding = *sumSuWinding; 1491 *maxWinding = *sumSuWinding;
1492 *sumWinding = *sumSuWinding -= deltaSum; 1492 *sumWinding = *sumSuWinding -= deltaSum;
1493 *oppMaxWinding = *sumMiWinding; 1493 *oppMaxWinding = *sumMiWinding;
1494 *oppSumWinding = *sumMiWinding -= oppDeltaSum; 1494 *oppSumWinding = *sumMiWinding -= oppDeltaSum;
1495 } else { 1495 } else {
1496 *maxWinding = *sumMiWinding; 1496 *maxWinding = *sumMiWinding;
1497 *sumWinding = *sumMiWinding -= deltaSum; 1497 *sumWinding = *sumMiWinding -= deltaSum;
1498 *oppMaxWinding = *sumSuWinding; 1498 *oppMaxWinding = *sumSuWinding;
1499 *oppSumWinding = *sumSuWinding -= oppDeltaSum; 1499 *oppSumWinding = *sumSuWinding -= oppDeltaSum;
1500 } 1500 }
1501 SkASSERT(!DEBUG_LIMIT_WIND_SUM || abs(*sumWinding) <= DEBUG_LIMIT_WIND_SUM); 1501 SkASSERT(!DEBUG_LIMIT_WIND_SUM || SkTAbs(*sumWinding) <= DEBUG_LIMIT_WIND_SU M);
1502 SkASSERT(!DEBUG_LIMIT_WIND_SUM || abs(*oppSumWinding) <= DEBUG_LIMIT_WIND_SU M); 1502 SkASSERT(!DEBUG_LIMIT_WIND_SUM || SkTAbs(*oppSumWinding) <= DEBUG_LIMIT_WIND _SUM);
1503 } 1503 }
1504 1504
1505 void SkOpSegment::sortAngles() { 1505 void SkOpSegment::sortAngles() {
1506 SkOpSpanBase* span = &this->fHead; 1506 SkOpSpanBase* span = &this->fHead;
1507 do { 1507 do {
1508 SkOpAngle* fromAngle = span->fromAngle(); 1508 SkOpAngle* fromAngle = span->fromAngle();
1509 SkOpAngle* toAngle = span->final() ? NULL : span->upCast()->toAngle(); 1509 SkOpAngle* toAngle = span->final() ? NULL : span->upCast()->toAngle();
1510 if (!fromAngle && !toAngle) { 1510 if (!fromAngle && !toAngle) {
1511 continue; 1511 continue;
1512 } 1512 }
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
1767 SkOpSpanBase* endSpan = angle->end(); 1767 SkOpSpanBase* endSpan = angle->end();
1768 return updateWinding(startSpan, endSpan); 1768 return updateWinding(startSpan, endSpan);
1769 } 1769 }
1770 1770
1771 // OPTIMIZATION: does the following also work, and is it any faster? 1771 // OPTIMIZATION: does the following also work, and is it any faster?
1772 // return outerWinding * innerWinding > 0 1772 // return outerWinding * innerWinding > 0
1773 // || ((outerWinding + innerWinding < 0) ^ ((outerWinding - innerWinding) < 0))) 1773 // || ((outerWinding + innerWinding < 0) ^ ((outerWinding - innerWinding) < 0)))
1774 bool SkOpSegment::UseInnerWinding(int outerWinding, int innerWinding) { 1774 bool SkOpSegment::UseInnerWinding(int outerWinding, int innerWinding) {
1775 SkASSERT(outerWinding != SK_MaxS32); 1775 SkASSERT(outerWinding != SK_MaxS32);
1776 SkASSERT(innerWinding != SK_MaxS32); 1776 SkASSERT(innerWinding != SK_MaxS32);
1777 int absOut = abs(outerWinding); 1777 int absOut = SkTAbs(outerWinding);
1778 int absIn = abs(innerWinding); 1778 int absIn = SkTAbs(innerWinding);
1779 bool result = absOut == absIn ? outerWinding < 0 : absOut < absIn; 1779 bool result = absOut == absIn ? outerWinding < 0 : absOut < absIn;
1780 return result; 1780 return result;
1781 } 1781 }
1782 1782
1783 int SkOpSegment::windSum(const SkOpAngle* angle) const { 1783 int SkOpSegment::windSum(const SkOpAngle* angle) const {
1784 const SkOpSpan* minSpan = angle->start()->starter(angle->end()); 1784 const SkOpSpan* minSpan = angle->start()->starter(angle->end());
1785 return minSpan->windSum(); 1785 return minSpan->windSum();
1786 } 1786 }
OLDNEW
« no previous file with comments | « src/pathops/SkOpAngle.cpp ('k') | src/pathops/SkOpSpan.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698