OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 "PathOpsTestCommon.h" | 7 #include "PathOpsTestCommon.h" |
8 #include "SkIntersections.h" | 8 #include "SkIntersections.h" |
9 #include "SkOpContour.h" | 9 #include "SkOpContour.h" |
10 #include "SkOpSegment.h" | 10 #include "SkOpSegment.h" |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
74 for (int index = 0; index < 100000; ++index) { | 74 for (int index = 0; index < 100000; ++index) { |
75 SkDLine line = {{{0, 0}, {ran.nextRangeF(0.0001f, 1000), ran.nextRangeF(
0.0001f, 1000)}}}; | 75 SkDLine line = {{{0, 0}, {ran.nextRangeF(0.0001f, 1000), ran.nextRangeF(
0.0001f, 1000)}}}; |
76 float t = ran.nextRangeF(0.0001f, 1); | 76 float t = ran.nextRangeF(0.0001f, 1); |
77 SkDPoint dPt = line.ptAtT(t); | 77 SkDPoint dPt = line.ptAtT(t); |
78 float t2 = ran.nextRangeF(0.0001f, 1); | 78 float t2 = ran.nextRangeF(0.0001f, 1); |
79 SkDPoint qPt = line.ptAtT(t2); | 79 SkDPoint qPt = line.ptAtT(t2); |
80 float t3 = ran.nextRangeF(0.0001f, 1); | 80 float t3 = ran.nextRangeF(0.0001f, 1); |
81 SkDPoint qPt2 = line.ptAtT(t3); | 81 SkDPoint qPt2 = line.ptAtT(t3); |
82 qPt.fX += qPt2.fY; | 82 qPt.fX += qPt2.fY; |
83 qPt.fY -= qPt2.fX; | 83 qPt.fY -= qPt2.fX; |
84 SkDQuad quad = {{line[0], dPt, qPt}}; | 84 QuadPts q = {{line[0], dPt, qPt}}; |
| 85 SkDQuad quad; |
| 86 quad.debugSet(q.fPts); |
85 // binary search for maximum movement of quad[1] towards test that still
has 1 intersection | 87 // binary search for maximum movement of quad[1] towards test that still
has 1 intersection |
86 double moveT = 0.5f; | 88 double moveT = 0.5f; |
87 double deltaT = moveT / 2; | 89 double deltaT = moveT / 2; |
88 SkDPoint last; | 90 SkDPoint last; |
89 do { | 91 do { |
90 last = quad[1]; | 92 last = quad[1]; |
91 quad[1].fX = dPt.fX - line[1].fY * moveT; | 93 quad[1].fX = dPt.fX - line[1].fY * moveT; |
92 quad[1].fY = dPt.fY + line[1].fX * moveT; | 94 quad[1].fY = dPt.fY + line[1].fX * moveT; |
93 SkIntersections i; | 95 SkIntersections i; |
94 i.intersect(quad, line); | 96 i.intersect(quad, line); |
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
216 }; | 218 }; |
217 | 219 |
218 class PathOpsSegmentTester { | 220 class PathOpsSegmentTester { |
219 public: | 221 public: |
220 static void DebugReset(SkOpSegment* segment) { | 222 static void DebugReset(SkOpSegment* segment) { |
221 segment->debugReset(); | 223 segment->debugReset(); |
222 } | 224 } |
223 }; | 225 }; |
224 | 226 |
225 struct CircleData { | 227 struct CircleData { |
226 const SkDCubic fPts; | 228 const CubicPts fPts; |
227 const int fPtCount; | 229 const int fPtCount; |
228 SkPoint fShortPts[4]; | 230 SkPoint fShortPts[4]; |
229 }; | 231 }; |
230 | 232 |
231 static CircleData circleDataSet[] = { | 233 static CircleData circleDataSet[] = { |
232 { {{{313.0155029296875, 207.90290832519531}, {320.05078125, 227.587432861328
12}}}, 2, {} }, | 234 { {{{313.0155029296875, 207.90290832519531}, {320.05078125, 227.587432861328
12}}}, 2, {} }, |
233 { {{{313.0155029296875, 207.90290832519531}, {313.98246891063195, 219.336152
03830394}, | 235 { {{{313.0155029296875, 207.90290832519531}, {313.98246891063195, 219.336152
03830394}, |
234 {320.05078125, 227.58743286132812}}}, 3, {} }, | 236 {320.05078125, 227.58743286132812}}}, 3, {} }, |
235 }; | 237 }; |
236 | 238 |
(...skipping 22 matching lines...) Expand all Loading... |
259 } | 261 } |
260 } | 262 } |
261 SkOpSegment* first = contour.first(); | 263 SkOpSegment* first = contour.first(); |
262 first->debugAddAngle(0, 1); | 264 first->debugAddAngle(0, 1); |
263 SkOpSegment* next = first->next(); | 265 SkOpSegment* next = first->next(); |
264 next->debugAddAngle(0, 1); | 266 next->debugAddAngle(0, 1); |
265 PathOpsAngleTester::Orderable(*first->debugLastAngle(), *next->debugLastAngl
e()); | 267 PathOpsAngleTester::Orderable(*first->debugLastAngle(), *next->debugLastAngl
e()); |
266 } | 268 } |
267 | 269 |
268 struct IntersectData { | 270 struct IntersectData { |
269 const SkDCubic fPts; | 271 const CubicPts fPts; |
270 const int fPtCount; | 272 const int fPtCount; |
271 double fTStart; | 273 double fTStart; |
272 double fTEnd; | 274 double fTEnd; |
273 SkPoint fShortPts[4]; | 275 SkPoint fShortPts[4]; |
274 }; | 276 }; |
275 | 277 |
276 static IntersectData intersectDataSet1[] = { | 278 static IntersectData intersectDataSet1[] = { |
277 { {{{322.935669,231.030273}, {312.832214,220.393295}, {312.832214,203.454178
}}}, 3, | 279 { {{{322.935669,231.030273}, {312.832214,220.393295}, {312.832214,203.454178
}}}, 3, |
278 0.865309956, 0.154740299, {} }, | 280 0.865309956, 0.154740299, {} }, |
279 { {{{322.12738,233.397751}, {295.718353,159.505829}}}, 2, | 281 { {{{322.12738,233.397751}, {295.718353,159.505829}}}, 2, |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
518 SkOpSegment* first = contour.first(); | 520 SkOpSegment* first = contour.first(); |
519 first->debugAddAngle(0, 1); | 521 first->debugAddAngle(0, 1); |
520 SkOpSegment* next = first->next(); | 522 SkOpSegment* next = first->next(); |
521 next->debugAddAngle(0, 1); | 523 next->debugAddAngle(0, 1); |
522 /* int result = */ | 524 /* int result = */ |
523 PathOpsAngleTester::AllOnOneSide(*first->debugLastAngle(), *next->de
bugLastAngle()); | 525 PathOpsAngleTester::AllOnOneSide(*first->debugLastAngle(), *next->de
bugLastAngle()); |
524 // SkDebugf("i=%d result=%d\n", i , result); | 526 // SkDebugf("i=%d result=%d\n", i , result); |
525 // SkDebugf(""); | 527 // SkDebugf(""); |
526 } | 528 } |
527 } | 529 } |
OLD | NEW |