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

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

Issue 23542056: path ops work in progress (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: verbose + mutex around file number access Created 7 years, 2 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
« no previous file with comments | « src/pathops/SkPathOpsPoint.h ('k') | src/pathops/SkPathOpsTypes.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 "SkIntersections.h" 7 #include "SkIntersections.h"
8 #include "SkLineParameters.h" 8 #include "SkLineParameters.h"
9 #include "SkPathOpsCubic.h" 9 #include "SkPathOpsCubic.h"
10 #include "SkPathOpsQuad.h" 10 #include "SkPathOpsQuad.h"
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
115 if (approximately_zero(A) && (approximately_zero_inverse(p) || approximately _zero_inverse(q))) { 115 if (approximately_zero(A) && (approximately_zero_inverse(p) || approximately _zero_inverse(q))) {
116 if (approximately_zero(B)) { 116 if (approximately_zero(B)) {
117 s[0] = 0; 117 s[0] = 0;
118 return C == 0; 118 return C == 0;
119 } 119 }
120 s[0] = -C / B; 120 s[0] = -C / B;
121 return 1; 121 return 1;
122 } 122 }
123 /* normal form: x^2 + px + q = 0 */ 123 /* normal form: x^2 + px + q = 0 */
124 const double p2 = p * p; 124 const double p2 = p * p;
125 if (!AlmostEqualUlps(p2, q) && p2 < q) { 125 if (!AlmostDequalUlps(p2, q) && p2 < q) {
126 return 0; 126 return 0;
127 } 127 }
128 double sqrt_D = 0; 128 double sqrt_D = 0;
129 if (p2 > q) { 129 if (p2 > q) {
130 sqrt_D = sqrt(p2 - q); 130 sqrt_D = sqrt(p2 - q);
131 } 131 }
132 s[0] = sqrt_D - p; 132 s[0] = sqrt_D - p;
133 s[1] = -sqrt_D - p; 133 s[1] = -sqrt_D - p;
134 return 1 + !AlmostEqualUlps(s[0], s[1]); 134 return 1 + !AlmostDequalUlps(s[0], s[1]);
135 } 135 }
136 136
137 bool SkDQuad::isLinear(int startIndex, int endIndex) const { 137 bool SkDQuad::isLinear(int startIndex, int endIndex) const {
138 SkLineParameters lineParameters; 138 SkLineParameters lineParameters;
139 lineParameters.quadEndPoints(*this, startIndex, endIndex); 139 lineParameters.quadEndPoints(*this, startIndex, endIndex);
140 // FIXME: maybe it's possible to avoid this and compare non-normalized 140 // FIXME: maybe it's possible to avoid this and compare non-normalized
141 lineParameters.normalize(); 141 lineParameters.normalize();
142 double distance = lineParameters.controlPtDistance(*this); 142 double distance = lineParameters.controlPtDistance(*this);
143 return approximately_zero(distance); 143 return approximately_zero(distance);
144 } 144 }
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
346 SkDebugf("{{"); 346 SkDebugf("{{");
347 int index = 0; 347 int index = 0;
348 do { 348 do {
349 fPts[index].dump(); 349 fPts[index].dump();
350 SkDebugf(", "); 350 SkDebugf(", ");
351 } while (++index < 2); 351 } while (++index < 2);
352 fPts[index].dump(); 352 fPts[index].dump();
353 SkDebugf("}}\n"); 353 SkDebugf("}}\n");
354 } 354 }
355 #endif 355 #endif
OLDNEW
« no previous file with comments | « src/pathops/SkPathOpsPoint.h ('k') | src/pathops/SkPathOpsTypes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698