blob: c7a64d837670d6bba2438ed0123603c78e79d6c3 [file] [log] [blame]
caryclark@google.com32546db2012-08-31 20:55:07 +00001<!-- path visualizer -->
caryclark@google.com752b60e2012-03-22 21:11:17 +00002<html>
3<head>
4<div style="height:0">
caryclark@google.comfa0588f2012-04-26 21:01:06 +00005
6<div id="testSimplifyQuadratic1">
7 SkPath path, out;
8 path.moveTo(0, 0);
9 path.quadTo(1, 0, 1, 1);
10 path.close();
11 path.moveTo(1, 0);
12 path.quadTo(0, 0, 0, 1);
13 path.close();
14 testSimplify(path, true, out, bitmap);
15}
caryclark@google.com752b60e2012-03-22 21:11:17 +000016</div>
caryclark@google.comfa0588f2012-04-26 21:01:06 +000017
18<div id="testSimplifyQuadratic2">
19 SkPath path, out;
20 path.moveTo(0, 0);
21 path.quadTo(20, 0, 20, 20);
22 path.close();
23 path.moveTo(20, 0);
24 path.quadTo(0, 0, 0, 20);
25 path.close();
26 testSimplify(path, true, out, bitmap);
27}
caryclark@google.comd88e0892012-03-27 13:23:51 +000028</div>
caryclark@google.comfa0588f2012-04-26 21:01:06 +000029
30<div id="testSimplifyQuadratic3">
31 SkPath path, out;
32 path.moveTo(0, 0);
33 path.quadTo(20, 0, 20, 20);
34 path.close();
35 path.moveTo(0, 20);
36 path.quadTo(0, 0, 20, 0);
37 path.close();
38 testSimplify(path, true, out, bitmap);
39}
caryclark@google.comd88e0892012-03-27 13:23:51 +000040</div>
caryclark@google.comfa0588f2012-04-26 21:01:06 +000041
42<div id="testSimplifyQuadratic4">
43 SkPath path, out;
44 path.moveTo(0, 20);
45 path.quadTo(20, 0, 40, 20);
46 path.close();
47 path.moveTo(40, 10);
48 path.quadTo(20, 30, 0, 10);
49 path.close();
50 testSimplify(path, true, out, bitmap);
51 drawAsciiPaths(path, out, true);
52}
caryclark@google.comd88e0892012-03-27 13:23:51 +000053</div>
caryclark@google.comfa0588f2012-04-26 21:01:06 +000054
55<div id="testSimplifyQuadratic5">
56 SkPath path, out;
57 path.moveTo(0, 0);
58 path.quadTo(0, 0, 0, 0);
59 path.lineTo(0, 0);
60 path.close();
61 path.moveTo(0, 0);
62 path.lineTo(0, 0);
63 path.quadTo(0, 0, 0, 1);
64 path.close();
65 testSimplify(path, true, out, bitmap);
66 drawAsciiPaths(path, out, true);
67}
caryclark@google.comfb173422012-04-10 18:28:55 +000068</div>
caryclark@google.comfa0588f2012-04-26 21:01:06 +000069
70<div id="testSimplifyQuadratic6">
71 SkPath path, out;
72 path.moveTo(0, 0);
73 path.quadTo(0, 0, 0, 0);
74 path.lineTo(1, 0);
75 path.close();
76 path.moveTo(0, 0);
77 path.lineTo(0, 0);
78 path.quadTo(1, 0, 0, 1);
79 path.close();
80 testSimplify(path, true, out, bitmap);
81 drawAsciiPaths(path, out, true);
82}
caryclark@google.comfb173422012-04-10 18:28:55 +000083</div>
caryclark@google.comfa0588f2012-04-26 21:01:06 +000084
85<div id="testSimplifyQuadratic7">
86 SkPath path, out;
87 path.moveTo(0, 0);
88 path.quadTo(0, 0, 0, 0);
89 path.lineTo(0, 1);
90 path.close();
91 path.moveTo(0, 0);
92 path.lineTo(0, 0);
93 path.quadTo(1, 0, 0, 2);
94 path.close();
95 testSimplify(path, true, out, bitmap);
96 drawAsciiPaths(path, out, true);
97}
98</div>
99
100<div id="testSimplifyQuadratic8">
101 SkPath path, out;
102 path.moveTo(0, 0);
103 path.quadTo(0, 0, 0, 0);
104 path.lineTo(0, 0);
105 path.close();
106 path.moveTo(0, 0);
107 path.lineTo(0, 0);
108 path.quadTo(1, 0, 0, 2);
109 path.close();
110 testSimplify(path, true, out, bitmap);
111 drawAsciiPaths(path, out, true);
112}
113</div>
114
115<div id="testSimplifyQuadratic9">
116 SkPath path, out;
117 path.moveTo(0, 0);
118 path.quadTo(0, 0, 0, 0);
119 path.lineTo(1, 1);
120 path.close();
121 path.moveTo(0, 0);
122 path.lineTo(0, 0);
123 path.quadTo(1, 0, 2, 2);
124 path.close();
125 testSimplify(path, true, out, bitmap);
126 drawAsciiPaths(path, out, true);
127}
128</div>
129
130<div id="testSimplifyQuadratic10">
131 SkPath path, out;
caryclark@google.com78e17132012-04-17 11:40:34 +0000132 path.moveTo(0, 0);
133 path.quadTo(0, 0, 0, 0);
134 path.lineTo(0, 0);
135 path.close();
136 path.moveTo(0, 0);
137 path.lineTo(0, 1);
138 path.quadTo(1, 1, 1, 2);
caryclark@google.com78e17132012-04-17 11:40:34 +0000139 path.close();
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000140 testSimplify(path, true, out, bitmap);
141 drawAsciiPaths(path, out, true);
142}
caryclark@google.com78e17132012-04-17 11:40:34 +0000143</div>
144
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000145<div id="testSimplifyQuadratic11">
146 SkPath path, out;
caryclark@google.com78e17132012-04-17 11:40:34 +0000147 path.moveTo(0, 0);
148 path.quadTo(0, 0, 0, 0);
149 path.lineTo(0, 2);
caryclark@google.com78e17132012-04-17 11:40:34 +0000150 path.close();
151 path.moveTo(0, 0);
152 path.lineTo(2, 1);
153 path.quadTo(2, 2, 3, 3);
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000154 path.close();
155 testSimplify(path, true, out, bitmap);
156 drawAsciiPaths(path, out, true);
157}
158</div>
159
160<div id="testSimplifyQuadratic12">
161 SkPath path, out;
162 path.moveTo(0, 0);
163 path.lineTo(0, 2);
caryclark@google.com78e17132012-04-17 11:40:34 +0000164 path.lineTo(0, 0);
165 path.close();
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000166 path.moveTo(3, 0);
167 path.quadTo(1, 1, 0, 2);
168 path.lineTo(3, 0);
169 path.close();
170 testSimplify(path, true, out, bitmap);
171 drawAsciiPaths(path, out, true);
172}
caryclark@google.com78e17132012-04-17 11:40:34 +0000173</div>
174
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000175<div id="testSimplifyQuadratic13">
176 SkPath path, out;
caryclark@google.com78e17132012-04-17 11:40:34 +0000177path.moveTo(0, 0);
178path.quadTo(0, 0, 1, 0);
179path.lineTo(1, 1);
180path.lineTo(0, 0);
181path.close();
182path.moveTo(0, 0);
183path.quadTo(3, 0, 1, 1);
184path.lineTo(0, 0);
185path.close();
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000186 testSimplify(path, true, out, bitmap);
187 drawAsciiPaths(path, out, true);
188}
caryclark@google.com78e17132012-04-17 11:40:34 +0000189</div>
190
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000191<div id="testSimplifyQuadratic14">
192 SkPath path, out;
caryclark@google.com78e17132012-04-17 11:40:34 +0000193 path.moveTo(0, 0);
194 path.quadTo(0, 0, 0, 0);
195 path.lineTo(1, 1);
caryclark@google.com78e17132012-04-17 11:40:34 +0000196 path.close();
197 path.moveTo(0, 0);
198 path.lineTo(0, 0);
199 path.quadTo(0, 1, 2, 1);
caryclark@google.com78e17132012-04-17 11:40:34 +0000200 path.close();
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000201 testSimplify(path, true, out, bitmap);
202 drawAsciiPaths(path, out, true);
203}
caryclark@google.com78e17132012-04-17 11:40:34 +0000204</div>
205
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000206<div id="testSimplifyQuadratic15">
207 SkPath path, out;
208 path.moveTo(0, 0);
209 path.quadTo(0, 0, 1, 3);
210 path.lineTo(3, 3);
211 path.close();
212 path.moveTo(0, 1);
213 path.lineTo(1, 1);
214 path.quadTo(0, 3, 3, 3);
215 path.close();
216 testSimplify(path, true, out, bitmap);
217 drawAsciiPaths(path, out, true);
218}
219</div>
220
221<div id="testSimplifyQuadratic16">
222 SkPath path, out;
223 path.moveTo(0, 0);
224 path.quadTo(0, 0, 0, 0);
225 path.lineTo(0, 1);
226 path.close();
227 path.moveTo(0, 0);
228 path.lineTo(0, 0);
229 path.quadTo(1, 0, 0, 1);
230 path.close();
231 testSimplify(path, true, out, bitmap);
232 drawAsciiPaths(path, out, true);
233}
234</div>
235
236<div id="testSimplifyQuadratic17">
237 SkPath path, out;
caryclark@google.comb45a1b42012-05-18 20:50:33 +0000238 path.moveTo(8, 8);
239 path.quadTo(10, 10, 8, -10);
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000240 path.close();
caryclark@google.comb45a1b42012-05-18 20:50:33 +0000241 path.moveTo(8, 8);
242 path.quadTo(12, 12, 14, 4);
243 path.close();
244 path.moveTo(8, 8);
245 path.quadTo(9, 9, 10, 8);
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000246 path.close();
247 testSimplify(path, true, out, bitmap);
248 drawAsciiPaths(path, out, true);
249}
caryclark@google.com78e17132012-04-17 11:40:34 +0000250</div>
caryclark@google.comfb173422012-04-10 18:28:55 +0000251
caryclark@google.comb45a1b42012-05-18 20:50:33 +0000252<div id="testSimplifyQuadratic18">
253 SkPath path, out;
254 path.moveTo(8.0000000000000071, 8.0000000000000071);
255 path.quadTo(8.7289570079366854, 8.7289570079366889, 9.3914917259458743, 9.0593802763083691);
256 path.close();
257 path.moveTo(8.0000000000000142, 8.0000000000000142);
258 path.quadTo(8.1250000000000107, 8.1250000000000071, 8.2500000000000071, 8.2187500000000053);
259 path.close();
260 testSimplify(path, true, out, bitmap);
261 drawAsciiPaths(path, out, true);
262</div>
caryclark@google.com8dcf1142012-07-02 20:27:02 +0000263
264<div id="testSimplifyQuadratic19">
265 SkPath path, simple;
266 path.moveTo(0,4);
267 path.lineTo(6,4);
268 path.lineTo(3,1);
269 path.close();
270 path.moveTo(2,3);
271 path.lineTo(3,2);
272 path.lineTo(4,3);
273 path.close();
274 testSimplifyx(path);
275</div>
276
277<div id="testSimplifyQuadratic20">
278 SkPath path, simple;
279 path.moveTo(0,4);
280 path.lineTo(6,4);
281 path.lineTo(3,1);
282 path.close();
283 path.moveTo(2,3);
284 path.lineTo(4,3);
285 path.lineTo(3,2);
286 path.close();
287 testSimplifyx(path);
288</div>
289
290<div id="testSimplifyQuadratic21">
291 SkPath path, simple;
292 path.moveTo(0,4);
293 path.lineTo(8,4);
294 path.lineTo(4,0);
295 path.close();
296 path.moveTo(2,2);
297 path.lineTo(3,3);
298 path.lineTo(4,2);
299 path.close();
300 testSimplifyx(path);
301</div>
302
caryclark@google.com45a8fc62013-02-14 15:29:11 +0000303<div id="testLine5">
304 path.moveTo(3,0);
305 path.lineTo(6,2);
306 path.lineTo(0,2);
307 path.close();
308 path.moveTo(3,0);
309 path.lineTo(6,2);
310 path.lineTo(0,2);
311 path.close();
312</div>
313
caryclark@google.com8dcf1142012-07-02 20:27:02 +0000314<div id="testLine6">
315 SkPath path, simple;
316 path.moveTo(0,0);
317 path.lineTo(4,0);
318 path.lineTo(2,2);
319 path.close();
320 path.moveTo(2,0);
321 path.lineTo(6,0);
322 path.lineTo(4,2);
323 path.close();
324 testSimplifyx(path);
325</div>
326
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000327<div id="testLine7">
328 SkPath path, simple;
329 path.moveTo(0,0);
330 path.lineTo(4,0);
331 path.lineTo(2,2);
332 path.close();
333 path.moveTo(6,0);
334 path.lineTo(2,0);
335 path.lineTo(4,2);
336 path.close();
337 testSimplifyx(path);
338</div>
339
caryclark@google.comcc905052012-07-25 20:59:42 +0000340<div id="testLine7b">
341 path.moveTo(0,0);
342 path.lineTo(4,0);
343 path.close();
344 path.moveTo(6,0);
345 path.lineTo(2,0);
346 path.lineTo(4,2);
347 path.close();
348</div>
349
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000350<div id="testLine9">
351 SkPath path, simple;
352 path.moveTo(0,4);
353 path.lineTo(4,4);
354 path.lineTo(2,2);
355 path.close();
356 path.moveTo(6,4);
357 path.lineTo(2,4);
358 path.lineTo(4,2);
359 path.close();
360 testSimplifyx(path);
361</div>
362
caryclark@google.come21cb182012-07-23 21:26:31 +0000363<div id="testLine12">
364 path.moveTo(0,4);
365 path.lineTo(6,4);
366 path.lineTo(3,1);
367 path.close();
368 path.moveTo(2,3);
369 path.lineTo(3,2);
370 path.lineTo(4,3);
371 path.close();
372</div>
373
374<div id="testLine13">
375 path.moveTo(6,4);
376 path.lineTo(0,4);
377 path.lineTo(3,1);
378 path.close();
379 path.moveTo(3,2);
380 path.lineTo(2,3);
381 path.lineTo(4,3);
382 path.close();
383</div>
384
caryclark@google.comebf95ba2013-04-08 11:53:42 +0000385<div id="testLine16">
386 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
387 path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
388</div>
389
caryclark@google.com8dcf1142012-07-02 20:27:02 +0000390<div id="testLine17">
391 SkPath path, simple;
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000392 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
393 path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
caryclark@google.com8dcf1142012-07-02 20:27:02 +0000394 testSimplifyx(path);
395</div>
396
caryclark@google.com47580692012-07-23 12:14:49 +0000397<div id="testLine19">
398 SkPath path, simple;
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000399 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
400 path.addRect(12, 16, 21, 21, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000401 testSimplifyx(path);
402</div>
403
caryclark@google.comcc905052012-07-25 20:59:42 +0000404<div id="testLine22">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000405 path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
406 path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
caryclark@google.comcc905052012-07-25 20:59:42 +0000407</div>
408
caryclark@google.com47580692012-07-23 12:14:49 +0000409<div id="testLine24">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000410 path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
411 path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000412</div>
413
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000414<div id="testLine28">
415 SkPath path, simple;
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000416 path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
417 path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000418 testSimplifyx(path);
419</div>
420
421<div id="testLine29">
422 SkPath path, simple;
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000423 path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
424 path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000425 testSimplifyx(path);
426</div>
427
428<div id="testLine30">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000429 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
430 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
431 path.addRect(4, 4, 13, 13, SkPath::kCW_Direction);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000432</div>
433
434<div id="testLine31">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000435 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
436 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
437 path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000438</div>
439
440<div id="testLine32">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000441 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
442 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
443 path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000444</div>
445
caryclark@google.com9764cc62012-07-12 19:29:45 +0000446<div id="testLine33">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000447 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
448 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
449 path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
caryclark@google.com9764cc62012-07-12 19:29:45 +0000450</div>
451
caryclark@google.com210acaf2012-07-12 21:05:13 +0000452<div id="testLine34">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000453 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
454 path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
455 path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
caryclark@google.com210acaf2012-07-12 21:05:13 +0000456</div>
457
458<div id="testLine35">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000459 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
460 path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
461 path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
caryclark@google.com210acaf2012-07-12 21:05:13 +0000462</div>
463
caryclark@google.com0e08a192012-07-13 21:07:52 +0000464<div id="testLine36">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000465 path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
466 path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
467 path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
caryclark@google.com0e08a192012-07-13 21:07:52 +0000468</div>
469
caryclark@google.com47580692012-07-23 12:14:49 +0000470<div id="testLine37">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000471 path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
472 path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
473 path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000474</div>
475
476<div id="testLine38">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000477 path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
478 path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
479 path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000480</div>
481
482<div id="testLine39">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000483 path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
484 path.addRect(12, 6, 24, 24, SkPath::kCW_Direction);
485 path.addRect(12, 4, 21, 21, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000486</div>
487
488<div id="testLine40">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000489 path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
490 path.addRect(12, 18, 24, 24, SkPath::kCW_Direction);
491 path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000492</div>
493
494<div id="testLine41">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000495 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
496 path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
497 path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000498</div>
499
500<div id="testLine42">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000501 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
502 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
503 path.addRect(8, 16, 17, 17, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000504</div>
505
506<div id="testLine43">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000507 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
508 path.addRect(6, 24, 18, 18, SkPath::kCW_Direction);
509 path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000510</div>
511
512<div id="testLine44">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000513 path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
514 path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
515 path.addRect(18, 32, 27, 36, SkPath::kCCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000516</div>
517
518<div id="testLine45">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000519 path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
520 path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
521 path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000522</div>
523
524<div id="testLine46">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000525 path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
526 path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
527 path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000528</div>
529
530<div id="testLine47">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000531 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
532 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
533 path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000534</div>
535
536<div id="testLine48">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000537 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
538 path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
539 path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000540</div>
541
542<div id="testLine49">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000543 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
544 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
545 path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000546</div>
547
548<div id="testLine50">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000549 path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
550 path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000551</div>
552
553<div id="testLine51">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000554 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
555 path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
556 path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000557</div>
558
caryclark@google.come21cb182012-07-23 21:26:31 +0000559<div id="testLine52">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000560 path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
561 path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
562 path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
caryclark@google.come21cb182012-07-23 21:26:31 +0000563</div>
564
565<div id="testLine53">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000566 path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
567 path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
568 path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
caryclark@google.come21cb182012-07-23 21:26:31 +0000569</div>
570
571<div id="testLine54">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000572 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
573 path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
574 path.addRect(8, 4, 17, 17, SkPath::kCCW_Direction);
caryclark@google.come21cb182012-07-23 21:26:31 +0000575</div>
576
577<div id="testLine55">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000578 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
579 path.addRect(6, 6, 18, 18, SkPath::kCW_Direction);
580 path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
caryclark@google.come21cb182012-07-23 21:26:31 +0000581</div>
582
caryclark@google.com18063442012-07-25 12:05:18 +0000583<div id="testLine56">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000584 path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
585 path.addRect(18, 20, 30, 30, SkPath::kCW_Direction);
586 path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
caryclark@google.com18063442012-07-25 12:05:18 +0000587</div>
588
589<div id="testLine57">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000590 path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
591 path.addRect(20, 0, 30, 40, SkPath::kCW_Direction);
592 path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
caryclark@google.com18063442012-07-25 12:05:18 +0000593</div>
594
caryclark@google.comcc905052012-07-25 20:59:42 +0000595<div id="testLine58">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000596 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
597 path.addRect(0, 0, 12, 12, SkPath::kCCW_Direction);
598 path.addRect(0, 12, 9, 9, SkPath::kCCW_Direction);
caryclark@google.comcc905052012-07-25 20:59:42 +0000599</div>
600
601<div id="testLine59">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000602 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
603 path.addRect(6, 6, 18, 18, SkPath::kCCW_Direction);
604 path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
caryclark@google.comcc905052012-07-25 20:59:42 +0000605</div>
606
caryclark@google.com27c449a2012-07-27 18:26:38 +0000607<div id="testLine60">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000608 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
609 path.addRect(6, 12, 18, 18, SkPath::kCCW_Direction);
610 path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000611</div>
612
613<div id="testLine61">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000614 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
615 path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
616 path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000617</div>
618
619<div id="testLine62">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000620 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
621 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
622 path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
623 path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000624</div>
625
626<div id="testLine63">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000627 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
628 path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
629 path.addRect(0, 6, 12, 12, SkPath::kCCW_Direction);
630 path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000631</div>
632
633<div id="testLine64">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000634 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
635 path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
636 path.addRect(18, 6, 30, 30, SkPath::kCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000637</div>
638
639<div id="testLine65">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000640 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
641 path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
642 path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
643 path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000644</div>
645
646<div id="testLine66">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000647 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
648 path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
649 path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000650</div>
651
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000652<div id="testLine67">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000653 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
654 path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
655 path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
656 path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000657</div>
658
659<div id="testLine68a">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000660 path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
661 path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
662 path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000663</div>
664
665<div id="testLine68b">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000666 path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
667 path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
668 path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000669</div>
670
671<div id="testLine68c">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000672 path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
673 path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
674 path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000675</div>
676
677<div id="testLine68d">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000678 path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
679 path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
680 path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000681</div>
682
683<div id="testLine68e">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000684 path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
685 path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
686 path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
687 path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000688</div>
689
690<div id="testLine68f">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000691 path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
692 path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
693 path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
694 path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000695</div>
696
697<div id="testLine69">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000698 path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
699 path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
700 path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000701</div>
702
703<div id="testLine70">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000704 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
705 path.addRect(0, 24, 12, 12, SkPath::kCW_Direction);
706 path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000707</div>
708
709<div id="testLine71">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000710 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
711 path.addRect(12, 0, 24, 24, SkPath::kCW_Direction);
712 path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000713</div>
714
caryclark@google.com200c2112012-08-03 15:05:04 +0000715<div id="testLine72">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000716 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
717 path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
718 path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
caryclark@google.com200c2112012-08-03 15:05:04 +0000719</div>
720
721<div id="testLine73">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000722 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
723 path.addRect(0, 40, 20, 20, SkPath::kCW_Direction);
724 path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
725 path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
caryclark@google.com200c2112012-08-03 15:05:04 +0000726</div>
727
caryclark@google.com0c803d02012-08-06 11:15:47 +0000728<div id="testLine74">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000729 path.addRect(20, 30, 40, 40, SkPath::kCW_Direction);
730 path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
731 path.addRect(32, 24, 36, 41, SkPath::kCCW_Direction);
caryclark@google.com0c803d02012-08-06 11:15:47 +0000732</div>
733
caryclark@google.com2ddff932012-08-07 21:25:27 +0000734<div id="testLine75">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000735 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
736 path.addRect(10, 0, 30, 30, SkPath::kCCW_Direction);
737 path.addRect(18, 0, 30, 30, SkPath::kCCW_Direction);
738 path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
caryclark@google.com2ddff932012-08-07 21:25:27 +0000739</div>
740
741<div id="testLine76">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000742 path.addRect(36, 0, 66, 60, SkPath::kCW_Direction);
743 path.addRect(10, 20, 40, 30, SkPath::kCW_Direction);
744 path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
745 path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
caryclark@google.com2ddff932012-08-07 21:25:27 +0000746</div>
747
748<div id="testLine77">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000749 path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
750 path.addRect(24, 6, 36, 36, SkPath::kCCW_Direction);
751 path.addRect(24, 32, 33, 36, SkPath::kCCW_Direction);
caryclark@google.com2ddff932012-08-07 21:25:27 +0000752</div>
753
754<div id="testLine78">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000755 path.addRect(0, 0, 30, 60, SkPath::kCW_Direction);
756 path.addRect(10, 20, 30, 30, SkPath::kCCW_Direction);
757 path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
758 path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
caryclark@google.com2ddff932012-08-07 21:25:27 +0000759</div>
760
761<div id="testLine79">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000762 path.addRect(0, 36, 60, 30, SkPath::kCW_Direction);
763 path.addRect(10, 30, 40, 30, SkPath::kCW_Direction);
764 path.addRect(0, 20, 12, 30, SkPath::kCCW_Direction);
765 path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
766</div>
767
768<div id="testLine81">
769 path.addRect(-1, -1, 3, 3, SkPath::kCW_Direction);
770 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
771 path.addRect(1, 1, 2, 2, SkPath::kCCW_Direction);
caryclark@google.com2ddff932012-08-07 21:25:27 +0000772</div>
773
caryclark@google.com59823f72012-08-09 18:17:47 +0000774<div id="testDegenerate1">
775 path.moveTo(0, 0);
776 path.lineTo(0, 0);
777 path.lineTo(2, 0);
778 path.close();
779 path.moveTo(0, 0);
780 path.lineTo(1, 0);
781 path.lineTo(2, 0);
782 path.close();
783</div>
784
785<div id="testDegenerate2">
786 path.moveTo(0, 0);
787 path.lineTo(0, 0);
788 path.lineTo(0, 0);
789 path.close();
790 path.moveTo(0, 0);
791 path.lineTo(1, 0);
792 path.lineTo(0, 1);
793 path.close();
794</div>
795
796<div id="testDegenerate3">
797 path.moveTo(0, 0);
798 path.lineTo(2, 0);
799 path.lineTo(1, 0);
800 path.close();
801 path.moveTo(0, 0);
802 path.lineTo(0, 0);
803 path.lineTo(3, 0);
804 path.close();
805</div>
806
807<div id="testDegenerate4">
808 path.moveTo(0, 0);
809 path.lineTo(1, 0);
810 path.lineTo(1, 3);
811 path.close();
812 path.moveTo(1, 0);
813 path.lineTo(1, 1);
814 path.lineTo(1, 2);
815 path.close();
816</div>
817
818<div id="testNondegenerate1">
819 path.moveTo(0, 0);
820 path.lineTo(3, 0);
821 path.lineTo(1, 3);
822 path.close();
823 path.moveTo(1, 1);
824 path.lineTo(2, 1);
825 path.lineTo(1, 2);
826 path.close();
827</div>
828
829<div id="testNondegenerate2">
830 path.moveTo(1, 0);
831 path.lineTo(0, 1);
832 path.lineTo(1, 1);
833 path.close();
834 path.moveTo(0, 2);
835 path.lineTo(0, 3);
836 path.lineTo(1, 2);
837 path.close();
838</div>
839
840<div id="testNondegenerate3">
841 path.moveTo(0, 0);
842 path.lineTo(1, 0);
843 path.lineTo(2, 1);
844 path.close();
845 path.moveTo(0, 1);
846 path.lineTo(1, 1);
847 path.lineTo(0, 2);
848 path.close();
849</div>
850
851<div id="testNondegenerate4">
852 path.moveTo(1, 0);
853 path.lineTo(0, 1);
854 path.lineTo(1, 2);
855 path.close();
856 path.moveTo(0, 2);
857 path.lineTo(0, 3);
858 path.lineTo(1, 3);
859 path.close();
860</div>
861
862<div id="testQuadralateral5">
863 path.moveTo(0, 0);
864 path.lineTo(0, 0);
865 path.lineTo(1, 0);
866 path.lineTo(1, 1);
867 path.close();
868 path.moveTo(0, 0);
869 path.lineTo(2, 2);
870 path.lineTo(3, 2);
871 path.lineTo(3, 3);
872 path.close();
873</div>
874
875<div id="testQuadralateral6">
876 path.moveTo(0, 0);
877 path.lineTo(0, 0);
878 path.lineTo(1, 0);
879 path.lineTo(1, 1);
880 path.close();
881 path.moveTo(1, 0);
882 path.lineTo(2, 0);
883 path.lineTo(0, 2);
884 path.lineTo(2, 2);
885 path.close();
886</div>
887
caryclark@google.com24bec792012-08-20 12:43:57 +0000888<div id="testFauxQuadralateral6">
889 path.moveTo(0, 0);
890 path.lineTo(1, 0);
891 path.lineTo(1, 1);
892 path.close();
893 path.moveTo(1, 0);
894 path.lineTo(2, 0);
895 path.lineTo(1.333, 0.667);
896 path.close();
897 path.moveTo(1.333, 0.667);
898 path.lineTo(0, 2);
899 path.lineTo(2, 2);
900 path.close();
901</div>
902
903<div id="testFauxQuadralateral6a">
904 path.moveTo(0, 0);
905 path.lineTo(3, 0);
906 path.lineTo(3, 3);
907 path.close();
908 path.moveTo(3, 0);
909 path.lineTo(6, 0);
910 path.lineTo(4, 2);
911 path.close();
912 path.moveTo(4, 2);
913 path.lineTo(0, 6);
914 path.lineTo(6, 6);
915 path.close();
916</div>
917
918<div id="testFauxQuadralateral6b">
919 path.moveTo(0, 0);
920 path.lineTo(3, 0);
921 path.lineTo(3, 3);
922 path.close();
923 path.moveTo(3, 0);
924 path.lineTo(6, 0);
925 path.lineTo(4, 2);
926 path.close();
927 path.moveTo(4, 2);
928 path.lineTo(6, 6);
929 path.lineTo(0, 6);
930 path.close();
931</div>
932
933<div id="testFauxQuadralateral6c">
934 path.moveTo(0, 0);
935 path.lineTo(3, 3);
936 path.lineTo(3, 0);
937 path.close();
938 path.moveTo(3, 0);
939 path.lineTo(6, 0);
940 path.lineTo(4, 2);
941 path.close();
942 path.moveTo(4, 2);
943 path.lineTo(0, 6);
944 path.lineTo(6, 6);
945 path.close();
946</div>
947
948<div id="testFauxQuadralateral6d">
949 path.moveTo(0, 0);
950 path.lineTo(3, 3);
951 path.lineTo(3, 0);
952 path.close();
953 path.moveTo(3, 0);
954 path.lineTo(6, 0);
955 path.lineTo(4, 2);
956 path.close();
957 path.moveTo(4, 2);
958 path.lineTo(6, 6);
959 path.lineTo(0, 6);
960</div>
961
962<div id="testQuadralateral6a">
963 path.moveTo(0, 0);
964 path.lineTo(0, 0);
965 path.lineTo(3, 0);
966 path.lineTo(3, 3);
967 path.close();
968 path.moveTo(3, 0);
969 path.lineTo(6, 0);
970 path.lineTo(0, 6);
971 path.lineTo(6, 6);
972</div>
973
974<div id="testQuadralateral7">
975 path.moveTo(0, 0);
976 path.lineTo(0, 0);
977 path.lineTo(1, 0);
978 path.lineTo(2, 1);
979 path.close();
980 path.moveTo(1, 0);
981 path.lineTo(1, 1);
982 path.lineTo(2, 2);
983 path.lineTo(1, 3);
984 path.close();
985</div>
986
987<div id="testQuadralateral8">
988 path.moveTo(0, 0);
989 path.lineTo(3, 1);
990 path.lineTo(1, 3);
991 path.lineTo(3, 3);
992 path.close();
993 path.moveTo(2, 1);
994 path.lineTo(0, 2);
995 path.lineTo(3, 2);
996 path.lineTo(2, 3);
997 path.close();
998</div>
999
1000<div id="testQuadralateral9">
1001 path.moveTo(0, 0);
1002 path.lineTo(1, 0);
1003 path.lineTo(1, 2);
1004 path.lineTo(2, 2);
1005 path.close();
1006 path.moveTo(1, 1);
1007 path.lineTo(2, 1);
1008 path.lineTo(1, 3);
1009 path.lineTo(2, 3);
1010 path.close();
1011</div>
1012
1013<div id="testLine1x">
1014 path.setFillType(SkPath::kEvenOdd_FillType);
caryclark@google.com7fce0de2012-11-29 14:31:50 +00001015 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
1016 path.addRect(4, 0, 13, 13, SkPath::kCW_Direction);
caryclark@google.com24bec792012-08-20 12:43:57 +00001017</div>
1018
1019<div id="testLine2x">
1020 path.setFillType(SkPath::kEvenOdd_FillType);
caryclark@google.com7fce0de2012-11-29 14:31:50 +00001021 path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
1022 path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
1023 path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
caryclark@google.com24bec792012-08-20 12:43:57 +00001024</div>
1025
1026<div id="testLine3x">
1027 path.setFillType(SkPath::kEvenOdd_FillType);
caryclark@google.com7fce0de2012-11-29 14:31:50 +00001028 path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
1029 path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
1030 path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
caryclark@google.com24bec792012-08-20 12:43:57 +00001031</div>
1032
1033<div id="testLine4x">
1034 path.setFillType(SkPath::kEvenOdd_FillType);
caryclark@google.com7fce0de2012-11-29 14:31:50 +00001035 path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
1036 path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
1037 path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
caryclark@google.com24bec792012-08-20 12:43:57 +00001038</div>
1039
1040<div id="testQuadratic1">
1041 path.moveTo(0, 0);
1042 path.quadTo(0, 0, 0, 0);
1043 path.lineTo(1, 0);
1044 path.close();
1045 path.moveTo(0, 0);
1046 path.lineTo(0, 0);
1047 path.quadTo(0, 0, 0, 0);
1048 path.close();
1049</div>
1050
1051<div id="testQuadratic2">
1052 path.moveTo(0, 0);
1053 path.quadTo(0, 0, 0, 0);
1054 path.lineTo(3, 0);
1055 path.close();
1056 path.moveTo(0, 0);
1057 path.lineTo(0, 0);
1058 path.quadTo(1, 0, 0, 1);
1059 path.close();
1060</div>
1061
caryclark@google.com03f97062012-08-21 13:13:52 +00001062<div id="testQuadratic3">
1063 path.moveTo(0, 0);
1064 path.quadTo(0, 0, 1, 0);
1065 path.lineTo(0, 2);
1066 path.close();
1067 path.moveTo(0, 0);
1068 path.lineTo(0, 0);
1069 path.quadTo(1, 0, 0, 1);
1070 path.close();
1071</div>
1072
caryclark@google.comc899ad92012-08-23 15:24:42 +00001073<div id="testQuadratic4x">
1074 path.setFillType(SkPath::kEvenOdd_FillType);
1075 path.moveTo(0, 0);
1076 path.quadTo(0, 0, 1, 0);
1077 path.lineTo(0, 2);
1078 path.close();
1079 path.moveTo(0, 0);
1080 path.lineTo(0, 0);
1081 path.quadTo(1, 0, 0, 2);
1082 path.close();
1083</div>
1084
1085<div id="testQuadratic5">
1086 path.moveTo(0, 0);
1087 path.quadTo(0, 0, 0, 0);
1088 path.lineTo(0, 1);
1089 path.close();
1090 path.moveTo(0, 0);
1091 path.lineTo(1, 0);
1092 path.quadTo(0, 1, 0, 2);
1093 path.close();
1094</div>
1095
1096<div id="testQuadratic6">
1097 path.moveTo(0, 0);
1098 path.quadTo(0, 0, 1, 0);
1099 path.lineTo(2, 1);
1100 path.close();
1101 path.moveTo(0, 0);
1102 path.lineTo(0, 0);
1103 path.quadTo(2, 0, 0, 1);
1104 path.close();
1105</div>
1106
1107<div id="testQuadratic7">
1108 path.moveTo(0, 0);
1109 path.quadTo(0, 0, 1, 0);
1110 path.lineTo(3, 1);
1111 path.close();
1112 path.moveTo(0, 0);
1113 path.lineTo(0, 0);
1114 path.quadTo(3, 0, 1, 2);
1115 path.close();
1116</div>
1117
1118<div id="testQuadratic8">
1119 path.moveTo(0, 0);
1120 path.quadTo(0, 0, 1, 0);
1121 path.lineTo(0, 2);
1122 path.close();
1123 path.moveTo(0, 0);
1124 path.lineTo(1, 0);
1125 path.quadTo(0, 1, 1, 2);
1126 path.close();
1127</div>
1128
1129<div id="testQuadratic9">
1130 path.moveTo(0, 0);
1131 path.quadTo(0, 0, 1, 0);
1132 path.lineTo(3, 1);
1133 path.close();
1134 path.moveTo(0, 0);
1135 path.lineTo(1, 0);
1136 path.quadTo(1, 2, 3, 2);
1137 path.close();
1138</div>
1139
1140<div id="testQuadratic9a">
1141 path.moveTo(1.08000004, 0.720000029);
1142 path.lineTo(0, 0);
1143 path.lineTo(1, 0);
1144 path.lineTo(3, 1);
1145 path.lineTo(1.01568651, 0.338562161);
1146 path.quadTo(1.03542483, 0.541699469, 1.08000004, 0.720000029);
1147 path.close();
1148 path.moveTo(1.08000004, 0.720000029);
1149 path.lineTo(3, 2);
1150 path.quadTo(1.39999998, 2, 1.08000004, 0.720000029);
1151 path.close();
1152
1153</div>
1154
1155<div id="testQuadratic10a">
1156path.moveTo(15.5, 15.5);
1157path.lineTo(46.5, 15.5);
1158path.quadTo(0, 31, 0, 46.5);
1159path.lineTo(15.5, 15.5);
1160path.close();
1161</div>
1162
1163<div id="testQuadratic10b">
1164path.moveTo(5.16666698, 36.1666641);
1165path.lineTo(15.5, 15.5);
1166path.lineTo(46.5, 15.5);
1167path.quadTo(15.5, 25.8333321, 5.16666698, 36.1666641);
1168path.close();
1169path.moveTo(5.16666698, 36.1666641);
1170path.lineTo(0, 46.5);
1171path.quadTo(0, 41.3333359, 5.16666698, 36.1666641);
1172path.close();
1173</div>
1174
1175<div id="testQuadratic11a">
1176path.moveTo(0, 0);
1177path.lineTo(15.5, 31);
1178path.lineTo(0, 0);
1179path.close();
1180path.moveTo(0, 15.5);
1181path.lineTo(15.5, 15.5);
1182path.quadTo(15.5, 15.5, 46.5, 31);
1183path.lineTo(0, 15.5);
1184path.close();
1185</div>
1186
1187<div id="testQuadratic11b">
1188path.moveTo(9.30000019, 18.6000004);
1189path.lineTo(0, 15.5);
1190path.lineTo(7.75, 15.5);
1191path.lineTo(15.5, 15.5);
1192path.lineTo(46.5, 31);
1193path.lineTo(9.30000019, 18.6000004);
1194path.close();
1195</div>
1196
1197<div id="testQuadratic12">
1198 path.moveTo(0, 0);
1199 path.quadTo(0, 0, 0, 0);
1200 path.lineTo(1, 3);
1201 path.close();
1202 path.moveTo(1, 0);
1203 path.lineTo(0, 1);
1204 path.quadTo(1, 1, 0, 3);
1205 path.close();
1206</div>
1207
1208<div id="testQuadratic13a">
1209path.moveTo(0, 0);
1210path.quadTo(0, 0, 15.5, 0);
1211path.lineTo(15.5, 31);
1212path.lineTo(0, 0);
1213path.close();
1214path.moveTo(0, 0);
1215path.quadTo(15.5, 46.5, 46.5, 46.5);
1216path.lineTo(0, 0);
1217path.close();
1218</div>
1219
1220<div id="testQuadratic13b">
1221path.moveTo(14.8800001, 29.7600002);
1222path.quadTo(6.20000029, 18.6000004, 0, 0);
1223path.lineTo(14.8800001, 29.7600002);
1224path.close();
1225path.moveTo(15.5, 30.5437222);
1226path.lineTo(15.5, 31);
1227path.lineTo(14.8800001, 29.7600002);
1228path.quadTo(15.1884346, 30.156559, 15.5, 30.5437222);
1229path.close();
1230path.moveTo(15.5, 15.5);
1231path.lineTo(0, 0);
1232path.lineTo(15.5, 0);
1233path.lineTo(15.5, 15.5);
1234path.close();
1235path.moveTo(15.5, 30.5437222);
1236path.lineTo(15.5, 15.5);
1237path.lineTo(46.5, 46.5);
1238path.quadTo(28.34062, 46.5, 15.5, 30.5437222);
1239path.close();
1240</div>
1241
1242<div id="testQuadratic14">
1243 path.moveTo(0, 0);
1244 path.quadTo(0, 0, 1, 0);
1245 path.lineTo(3, 2);
1246 path.close();
1247 path.moveTo(0, 0);
1248 path.lineTo(1, 0);
1249 path.quadTo(3, 2, 3, 3);
1250 path.close();
1251</div>
1252
caryclark@google.com3350c3c2012-08-24 15:24:36 +00001253<div id="testQuadratic15">
1254 path.moveTo(0, 0);
1255 path.quadTo(0, 0, 1, 0);
1256 path.lineTo(1, 3);
1257 path.close();
1258 path.moveTo(1, 0);
1259 path.lineTo(0, 1);
1260 path.quadTo(1, 1, 0, 3);
1261 path.close();
1262</div>
1263
1264<div id="testQuadratic16a">
1265path.moveTo(0, 0);
1266path.quadTo(0, 0, 31, 0);
1267path.lineTo(46.5, 31);
1268path.lineTo(0, 0);
1269path.close();
1270path.moveTo(46.5, 15.5);
1271path.lineTo(0, 31);
1272path.quadTo(0, 31, 15.5, 31);
1273path.lineTo(46.5, 15.5);
1274path.close();
1275</div>
1276
1277<div id="testQuadratic16b">
1278path.moveTo(31, 20.6666679);
1279path.lineTo(0, 0);
1280path.lineTo(31, 0);
1281path.lineTo(39.8571434, 17.7142868);
1282path.lineTo(31, 20.6666679);
1283path.close();
1284path.moveTo(33.214283, 22.1428585);
1285path.lineTo(15.5, 31);
1286path.lineTo(0, 31);
1287path.lineTo(31, 20.6666679);
1288path.lineTo(33.214283, 22.1428585);
1289path.close();
1290path.moveTo(40.2999992, 18.6000004);
1291path.lineTo(46.5, 31);
1292path.lineTo(33.214283, 22.1428585);
1293path.lineTo(40.2999992, 18.6000004);
1294path.close();
1295path.moveTo(39.8571434, 17.7142868);
1296path.lineTo(46.5, 15.5);
1297path.lineTo(40.2999992, 18.6000004);
1298path.lineTo(39.8571434, 17.7142868);
1299path.close();
1300</div>
1301
1302<div id="testQuadratic17x">
1303 path.setFillType(SkPath::kEvenOdd_FillType);
1304 path.moveTo(0, 0);
1305 path.quadTo(0, 0, 3, 1);
1306 path.lineTo(0, 2);
1307 path.close();
1308 path.moveTo(0, 0);
1309 path.lineTo(1, 0);
1310 path.quadTo(3, 1, 0, 2);
1311 path.close();
1312</div>
1313
1314<div id="testQuadratic18">
1315 path.moveTo(0, 0);
1316 path.quadTo(1, 0, 0, 1);
1317 path.lineTo(0, 1);
1318 path.close();
1319 path.moveTo(0, 0);
1320 path.lineTo(0, 0);
1321 path.quadTo(1, 0, 1, 1);
1322 path.close();
1323</div>
1324
caryclark@google.coma7e483d2012-08-28 20:44:43 +00001325<div id="testQuadratic19">
1326 path.moveTo(0, 0);
1327 path.quadTo(1, 0, 0, 1);
1328 path.lineTo(0, 1);
1329 path.close();
1330 path.moveTo(0, 0);
1331 path.lineTo(0, 0);
1332 path.quadTo(2, 0, 0, 1);
1333 path.close();
1334</div>
1335
caryclark@google.com32546db2012-08-31 20:55:07 +00001336<div id="testQuadratic20">
1337 path.moveTo(0, 0);
1338 path.quadTo(1, 0, 0, 1);
1339 path.lineTo(0, 1);
1340 path.close();
1341 path.moveTo(0, 0);
1342 path.lineTo(0, 0);
1343 path.quadTo(1, 0, 0, 1);
1344 path.close();
1345</div>
1346
caryclark@google.com235f56a2012-09-14 14:19:30 +00001347<div id="testQuadratic21">
1348 path.moveTo(0, 0);
1349 path.quadTo(1, 0, 0, 1);
1350 path.lineTo(0, 1);
1351 path.close();
1352 path.moveTo(0, 0);
1353 path.lineTo(0, 0);
1354 path.quadTo(1, 0, 0, 2);
1355 path.close();
1356</div>
1357
1358<div id="testQuadratic22">
1359 path.moveTo(0, 0);
1360 path.quadTo(1, 0, 0, 1);
1361 path.lineTo(0, 1);
1362 path.close();
1363 path.moveTo(0, 0);
1364 path.lineTo(0, 0);
1365 path.quadTo(0, 1, 2, 1);
1366 path.close();
1367</div>
1368
1369<div id="testQuadratic23">
1370 path.moveTo(0, 0);
1371 path.quadTo(1, 0, 0, 1);
1372 path.lineTo(0, 1);
1373 path.close();
1374 path.moveTo(0, 0);
1375 path.lineTo(0, 0);
1376 path.quadTo(0, 2, 1, 2);
1377 path.close();
1378</div>
1379
1380<div id="testQuadratic24">
1381 path.moveTo(0, 0);
1382 path.quadTo(1, 0, 0, 1);
1383 path.lineTo(0, 1);
1384 path.close();
1385 path.moveTo(0, 0);
1386 path.lineTo(1, 0);
1387 path.quadTo(2, 0, 0, 1);
1388 path.close();
1389</div>
1390
1391<div id="testQuadratic25">
1392 path.moveTo(0, 0);
1393 path.quadTo(1, 0, 1, 1);
1394 path.lineTo(1, 1);
1395 path.close();
1396 path.moveTo(0, 0);
1397 path.lineTo(0, 0);
1398 path.quadTo(2, 1, 0, 2);
1399 path.close();
1400</div>
1401
1402<div id="testQuadratic26">
1403 path.moveTo(0, 0);
1404 path.quadTo(1, 0, 1, 1);
1405 path.lineTo(0, 2);
1406 path.close();
1407 path.moveTo(0, 0);
1408 path.lineTo(0, 0);
1409 path.quadTo(1, 0, 0, 1);
1410 path.close();
1411</div>
1412
1413<div id="testQuadratic27">
1414 path.moveTo(0, 0);
1415 path.quadTo(1, 0, 1, 1);
1416 path.lineTo(2, 1);
1417 path.close();
1418 path.moveTo(0, 0);
1419 path.lineTo(0, 0);
1420 path.quadTo(2, 1, 0, 2);
1421 path.close();
1422</div>
1423
1424<div id="testQuadratic28">
1425 path.moveTo(0, 0);
1426 path.quadTo(1, 0, 0, 1);
1427 path.lineTo(0, 1);
1428 path.close();
1429 path.moveTo(0, 0);
1430 path.lineTo(0, 2);
1431 path.quadTo(1, 2, 0, 3);
1432 path.close();
1433</div>
1434
caryclark@google.comd1688742012-09-18 20:08:37 +00001435<div id="testQuadratic29">
1436 path.moveTo(0, 0);
1437 path.quadTo(1, 0, 2, 1);
1438 path.lineTo(0, 2);
1439 path.close();
1440 path.moveTo(0, 0);
1441 path.lineTo(0, 0);
1442 path.quadTo(1, 0, 0, 1);
1443 path.close();
1444</div>
1445
1446<div id="testQuadratic30">
1447 path.moveTo(0, 0);
1448 path.quadTo(1, 0, 1, 2);
1449 path.lineTo(1, 2);
1450 path.close();
1451 path.moveTo(0, 0);
1452 path.lineTo(1, 0);
1453 path.quadTo(0, 1, 1, 2);
1454 path.close();
1455</div>
1456
1457<div id="testQuadratic31">
1458 path.moveTo(0, 0);
1459 path.quadTo(1, 0, 1, 2);
1460 path.lineTo(1, 2);
1461 path.close();
1462 path.moveTo(0, 0);
1463 path.lineTo(1, 0);
1464 path.quadTo(0, 1, 1, 3);
1465 path.close();
1466</div>
1467
1468<div id="testQuadratic32">
1469 path.moveTo(0, 0);
1470 path.quadTo(1, 0, 2, 3);
1471 path.lineTo(2, 3);
1472 path.close();
1473 path.moveTo(0, 0);
1474 path.lineTo(0, 0);
1475 path.quadTo(3, 1, 0, 2);
1476 path.close();
1477</div>
1478
1479<div id="testQuadratic33">
1480 path.moveTo(0, 0);
1481 path.quadTo(2, 0, 0, 1);
1482 path.lineTo(0, 1);
1483 path.close();
1484 path.moveTo(0, 0);
1485 path.lineTo(1, 1);
1486 path.quadTo(2, 1, 2, 2);
1487 path.close();
1488</div>
1489
1490<div id="testQuadratic34">
1491 path.moveTo(0, 0);
1492 path.quadTo(2, 0, 0, 1);
1493 path.lineTo(0, 1);
1494 path.close();
1495 path.moveTo(1, 0);
1496 path.lineTo(1, 1);
1497 path.quadTo(2, 1, 1, 2);
1498 path.close();
1499</div>
1500
1501<div id="testQuadratic35">
1502 path.moveTo(0, 0);
1503 path.quadTo(0, 1, 1, 1);
1504 path.lineTo(1, 3);
1505 path.close();
1506 path.moveTo(2, 0);
1507 path.lineTo(3, 0);
1508 path.quadTo(0, 1, 1, 1);
1509 path.close();
1510</div>
1511
1512<div id="testQuadratic36">
1513 path.moveTo(0, 0);
1514 path.quadTo(2, 1, 2, 3);
1515 path.lineTo(2, 3);
1516 path.close();
1517 path.moveTo(3, 1);
1518 path.lineTo(1, 2);
1519 path.quadTo(3, 2, 1, 3);
1520 path.close();
1521</div>
1522
1523<div id="testQuadratic37">
1524 path.moveTo(0, 0);
1525 path.quadTo(0, 2, 1, 2);
1526 path.lineTo(1, 2);
1527 path.close();
1528 path.moveTo(0, 0);
1529 path.lineTo(3, 1);
1530 path.quadTo(0, 2, 1, 2);
1531 path.close();
1532</div>
1533
1534<div id="testQuadratic38">
1535 path.moveTo(1, 0);
1536 path.quadTo(0, 1, 1, 1);
1537 path.lineTo(1, 1);
1538 path.close();
1539 path.moveTo(1, 0);
1540 path.lineTo(1, 2);
1541 path.quadTo(2, 2, 1, 3);
1542 path.close();
1543</div>
1544
1545<div id="testQuadratic39">
1546path.moveTo(15.5, 0);
1547path.quadTo(46.5, 15.5, 46.5, 31);
1548path.lineTo(15.5, 0);
1549path.close();
1550path.moveTo(46.5, 15.5);
1551path.lineTo(0, 31);
1552path.quadTo(0, 31, 15.5, 31);
1553path.lineTo(46.5, 15.5);
1554 path.close();
1555</div>
1556
1557<div id="testQuadratic39a">
1558path.moveTo(34.875, 19.375);
1559path.lineTo(15.5, 0);
1560path.quadTo(32.9687576, 8.73437881, 40.5937271, 17.4687576);
1561path.lineTo(34.875, 19.375);
1562path.close();
1563path.moveTo(36.1666641, 20.6666679);
1564path.lineTo(15.5, 31);
1565path.lineTo(0, 31);
1566path.lineTo(34.875, 19.375);
1567path.lineTo(36.1666641, 20.6666679);
1568path.close();
1569path.moveTo(41.1812401, 18.15938);
1570path.quadTo(46.5, 24.5796909, 46.5, 31);
1571path.lineTo(36.1666641, 20.6666679);
1572path.lineTo(41.1812401, 18.15938);
1573path.close();
1574path.moveTo(40.5937271, 17.4687576);
1575path.lineTo(46.5, 15.5);
1576path.lineTo(41.1812401, 18.15938);
1577path.quadTo(40.8951759, 17.8140678, 40.5937271, 17.4687576);
1578 path.close();
1579</div>
1580
caryclark@google.com6aea33f2012-10-09 14:11:58 +00001581<div id="testQuadratic40x">
1582 path.setFillType(SkPath::kEvenOdd_FillType);
1583 path.moveTo(2, 0);
1584 path.quadTo(3, 0, 2, 2);
1585 path.lineTo(3, 2);
1586 path.close();
1587 path.moveTo(3, 1);
1588 path.lineTo(0, 2);
1589 path.quadTo(0, 2, 1, 2);
1590 path.close();
1591</div>
1592
1593<div id="testQuadratic40xa">
1594path.moveTo(31, 0);
1595path.quadTo(41.3333359, 0, 37.8888893, 13.7777777);
1596path.lineTo(31, 0);
1597path.close();
1598path.moveTo(37.8888893, 13.7777777);
1599path.quadTo(37.2993202, 16.1360455, 36.3061028, 18.8979664);
1600path.lineTo(0, 31);
1601path.lineTo(15.5, 31);
1602path.lineTo(35.5182915, 20.9908543);
1603path.quadTo(33.7454262, 25.5091457, 31, 31);
1604path.lineTo(46.5, 31);
1605path.lineTo(40.2999992, 18.6000004);
1606path.lineTo(46.5, 15.5);
1607path.lineTo(39.8571434, 17.7142868);
1608path.lineTo(37.8888893, 13.7777777);
1609path.close();
1610path.moveTo(36.3061028, 18.8979664);
1611path.quadTo(35.9396667, 19.9169388, 35.5182915, 20.9908543);
1612path.lineTo(40.2999992, 18.6000004);
1613path.lineTo(39.8571434, 17.7142868);
1614path.lineTo(36.3061028, 18.8979664);
1615</div>
1616
1617<div id="testQuadratic40xb">
1618path.moveTo(31, 0);
1619path.quadTo(46.5, 0, 31, 31);
1620path.lineTo(46.5, 31);
1621path.lineTo(31, 0);
1622path.close();
1623path.moveTo(46.5, 15.5);
1624path.lineTo(0, 31);
1625path.quadTo(0, 31, 15.5, 31);
1626path.lineTo(46.5, 15.5);
1627path.close();
1628</div>
1629
1630<div id="testQuadratic41o">
1631path.moveTo(419.33905, 236.377808);
1632path.quadTo(398.847778, 242.58728, 384.255524, 242.58728);
1633path.quadTo(359.417633, 242.58728, 343.738708, 226.080429);
1634path.quadTo(328.059784, 209.573578, 328.059784, 183.286819);
1635path.quadTo(328.059784, 157.724487, 341.875854, 141.372879);
1636path.quadTo(355.691956, 125.021263, 377.218109, 125.021263);
1637path.quadTo(397.605896, 125.021263, 408.731201, 139.51004);
1638path.quadTo(419.856506, 153.99881, 419.856506, 180.699539);
1639path.lineTo(419.752991, 187.012497);
1640path.lineTo(348.861511, 187.012497);
1641path.quadTo(353.311646, 227.063599, 388.084686, 227.063599);
1642path.quadTo(400.814117, 227.063599, 419.33905, 220.233185);
1643path.lineTo(419.33905, 236.377808);
1644path.close();
1645path.moveTo(349.792938, 171.695801);
1646path.lineTo(399.365234, 171.695801);
1647path.quadTo(399.365234, 140.337967, 375.976227, 140.337967);
1648path.quadTo(352.483704, 140.337967, 349.792938, 171.695801);
1649path.close();
1650path.moveTo(378.682587, 277.360321);
1651path.lineTo(381.062897, 259.66333);
1652path.quadTo(398.759888, 268.046112, 415.939423, 268.046112);
1653path.quadTo(450.402008, 268.046112, 450.402008, 231.513718);
1654path.lineTo(450.402008, 213.816727);
1655path.quadTo(439.12146, 237.41272, 413.352142, 237.41272);
1656path.quadTo(393.171356, 237.41272, 381.269867, 222.716965);
1657path.quadTo(369.368378, 208.02121, 369.368378, 183.079834);
1658path.quadTo(369.368378, 157.414017, 382.92572, 141.269379);
1659path.quadTo(396.483093, 125.124756, 418.009247, 125.124756);
1660path.quadTo(436.844666, 125.124756, 450.402008, 140.441467);
1661path.lineTo(450.402008, 127.608543);
1662path.lineTo(470.89325, 127.608543);
1663path.lineTo(470.89325, 209.366608);
1664path.quadTo(470.89325, 235.756866, 468.150757, 248.43454);
1665path.quadTo(465.408234, 261.112213, 457.853363, 269.184509);
1666path.quadTo(444.502991, 283.362823, 416.353394, 283.362823);
1667path.quadTo(396.690063, 283.362823, 378.682587, 277.360321);
1668path.close();
1669path.moveTo(450.402008, 201.087311);
1670path.lineTo(450.402008, 154.412781);
1671path.quadTo(436.948151, 140.441467, 421.113983, 140.441467);
1672path.quadTo(407.039185, 140.441467, 399.070374, 151.722);
1673path.quadTo(391.101532, 163.002533, 391.101532, 182.665863);
1674path.quadTo(391.101532, 219.612228, 417.07782, 219.612228);
1675path.quadTo(434.774841, 219.612228, 450.402008, 201.087311);
1676path.close();
1677path.moveTo(482.9328, 236.377808);
1678path.quadTo(462.441528, 242.58728, 447.849274, 242.58728);
1679path.quadTo(423.011383, 242.58728, 407.332458, 226.080429);
1680path.quadTo(391.653534, 209.573578, 391.653534, 183.286819);
1681path.quadTo(391.653534, 157.724487, 405.469604, 141.372879);
1682path.quadTo(419.285706, 125.021263, 440.811859, 125.021263);
1683path.quadTo(461.199646, 125.021263, 472.324951, 139.51004);
1684path.quadTo(483.450256, 153.99881, 483.450256, 180.699539);
1685path.lineTo(483.346741, 187.012497);
1686path.lineTo(412.455261, 187.012497);
1687path.quadTo(416.905396, 227.063599, 451.678436, 227.063599);
1688path.quadTo(464.407867, 227.063599, 482.9328, 220.233185);
1689path.lineTo(482.9328, 236.377808);
1690path.close();
1691path.moveTo(413.386688, 171.695801);
1692path.lineTo(462.958984, 171.695801);
1693path.quadTo(462.958984, 140.337967, 439.569977, 140.337967);
1694path.quadTo(416.077454, 140.337967, 413.386688, 171.695801);
1695path.close();
1696</div>
1697
1698<div id="testQuadratic41s">
1699path.moveTo(341.875854, 141.372879);
1700path.quadTo(355.691956,125.021263, 377.218109,125.021263);
1701path.quadTo(388.787811,125.021263, 397.374664,129.687164);
1702path.quadTo(406.565979,125.124756, 418.009247,125.124756);
1703path.quadTo(423.583374,125.124756, 428.695251,126.466187);
1704path.quadTo(434.412903,125.021263, 440.811859,125.021263);
1705path.quadTo(449.427277,125.021263, 456.388672,127.608543);
1706path.lineTo(470.89325,127.608543);
1707path.lineTo(470.89325,137.749908);
1708path.quadTo(471.627319,138.601486, 472.324951,139.51004);
1709path.quadTo(483.450256,153.99881, 483.450256,180.699539);
1710path.lineTo(483.346741,187.012497);
1711path.lineTo(470.89325,187.012497);
1712path.lineTo(470.89325,209.366608);
1713path.quadTo(470.89325,217.414856, 470.638184,224.187729);
1714path.quadTo(476.428223,222.631516, 482.9328,220.233185);
1715path.lineTo(482.9328,236.377808);
1716path.quadTo(475.87207,238.517426, 469.511749,239.919785);
1717path.quadTo(468.946777,244.754791, 468.150757,248.43454);
1718path.quadTo(465.408234,261.112213, 457.853363,269.184509);
1719path.quadTo(444.502991,283.362823, 416.353394,283.362823);
1720path.quadTo(396.690063,283.362823, 378.682587,277.360321);
1721path.lineTo(381.062897,259.66333);
1722path.quadTo(398.759888,268.046112, 415.939423,268.046112);
1723path.quadTo(444.719147,268.046112, 449.464905,242.568665);
1724path.quadTo(448.648254,242.58728, 447.849274,242.58728);
1725path.quadTo(433.084625,242.58728, 421.556366,236.754425);
1726path.quadTo(418.89566,237.203537, 416.046783,237.346252);
1727path.quadTo(397.661652,242.58728, 384.255524,242.58728);
1728path.quadTo(359.417633,242.58728, 343.738708,226.080429);
1729path.quadTo(328.059784,209.573578, 328.059784,183.286819);
1730path.quadTo(328.059784,157.724487, 341.875854,141.372879);
1731path.close();
1732path.moveTo(442.014923, 226.179474);
1733path.quadTo(445.951935,226.953491, 450.402008,227.049881);
1734path.lineTo(450.402008,213.816727);
1735path.quadTo(446.904755,221.132065, 442.014923,226.179474);
1736path.close();
1737path.moveTo(395.347717, 206.501785);
1738path.quadTo(392.200165,197.593536, 391.734406,187.012497);
1739path.lineTo(391.197113,187.012497);
1740path.quadTo(391.738647,198.938644, 395.347717,206.501785);
1741path.close();
1742path.moveTo(391.808533, 171.695801);
1743path.lineTo(392.428436,171.695801);
1744path.quadTo(393.693451,162.656265, 397.02359,154.9935);
1745path.quadTo(397.023804,154.992996, 397.024048,154.992493);
1746path.quadTo(393.175995,143.845093, 383.003235,141.177292);
1747path.quadTo(382.964447,141.223267, 382.92572,141.269379);
1748</div>
1749
1750<div id="testQuadratic42o">
1751path.moveTo(421.962158, 236.285355);
1752path.quadTo(400.947845, 242.65332, 385.983124, 242.65332);
1753path.quadTo(360.511261, 242.65332, 344.432129, 225.725143);
1754path.quadTo(328.352997, 208.796951, 328.352997, 181.839218);
1755path.quadTo(328.352997, 155.62442, 342.521729, 138.855438);
1756path.quadTo(356.69046, 122.086449, 378.766083, 122.086449);
1757path.quadTo(399.674255, 122.086449, 411.083527, 136.945038);
1758path.quadTo(422.492798, 151.803635, 422.492798, 179.185898);
1759path.lineTo(422.386688, 185.660004);
1760path.lineTo(349.685699, 185.660004);
1761path.quadTo(354.24942, 226.733398, 389.910034, 226.733398);
1762path.quadTo(402.964386, 226.733398, 421.962158, 219.728638);
1763path.lineTo(421.962158, 236.285355);
1764path.close();
1765path.moveTo(350.6409, 169.952347);
1766path.lineTo(401.478516, 169.952347);
1767path.quadTo(401.478516, 137.794098, 377.492493, 137.794098);
1768path.quadTo(353.40036, 137.794098, 350.6409, 169.952347);
1769path.close();
1770path.moveTo(379.213562, 278.313934);
1771path.lineTo(381.654602, 260.165222);
1772path.quadTo(399.803314, 268.761993, 417.421356, 268.761993);
1773path.quadTo(452.763611, 268.761993, 452.763611, 231.297104);
1774path.lineTo(452.763611, 213.148392);
1775path.quadTo(441.195129, 237.34668, 414.768036, 237.34668);
1776path.quadTo(394.072144, 237.34668, 381.866882, 222.275818);
1777path.quadTo(369.661591, 207.204956, 369.661591, 181.626953);
1778path.quadTo(369.661591, 155.306015, 383.565002, 138.749298);
1779path.quadTo(397.468384, 122.192581, 419.544037, 122.192581);
1780path.quadTo(438.860199, 122.192581, 452.763611, 137.900238);
1781path.lineTo(452.763611, 124.739769);
1782path.lineTo(473.777893, 124.739769);
1783path.lineTo(473.777893, 208.584686);
1784path.quadTo(473.777893, 235.64856, 470.965363, 248.649826);
1785path.quadTo(468.152863, 261.651093, 460.405151, 269.929443);
1786path.quadTo(446.71402, 284.469666, 417.845886, 284.469666);
1787path.quadTo(397.680664, 284.469666, 379.213562, 278.313934);
1788path.close();
1789path.moveTo(452.763611, 200.094055);
1790path.lineTo(452.763611, 152.228165);
1791path.quadTo(438.966339, 137.900238, 422.727997, 137.900238);
1792path.quadTo(408.293945, 137.900238, 400.121704, 149.468719);
1793path.quadTo(391.949493, 161.037186, 391.949493, 181.202423);
1794path.quadTo(391.949493, 219.091827, 418.588837, 219.091827);
1795path.quadTo(436.737549, 219.091827, 452.763611, 200.094055);
1796path.close();
1797path.moveTo(485.555908, 236.285355);
1798path.quadTo(464.541595, 242.65332, 449.576874, 242.65332);
1799path.quadTo(424.105011, 242.65332, 408.025879, 225.725143);
1800path.quadTo(391.946747, 208.796951, 391.946747, 181.839218);
1801path.quadTo(391.946747, 155.62442, 406.115479, 138.855438);
1802path.quadTo(420.28421, 122.086449, 442.359833, 122.086449);
1803path.quadTo(463.268005, 122.086449, 474.677277, 136.945038);
1804path.quadTo(486.086548, 151.803635, 486.086548, 179.185898);
1805path.lineTo(485.980438, 185.660004);
1806path.lineTo(413.279449, 185.660004);
1807path.quadTo(417.84317, 226.733398, 453.503784, 226.733398);
1808path.quadTo(466.558136, 226.733398, 485.555908, 219.728638);
1809path.lineTo(485.555908, 236.285355);
1810path.close();
1811path.moveTo(414.23465, 169.952347);
1812path.lineTo(465.072266, 169.952347);
1813path.quadTo(465.072266, 137.794098, 441.086243, 137.794098);
1814path.quadTo(416.99411, 137.794098, 414.23465, 169.952347);
1815path.close();
1816</div>
1817
1818<div id="testQuadratic42s">
1819path.moveTo(342.521729, 138.855438);
1820path.quadTo(356.69046,122.086449, 378.766083,122.086449);
1821path.quadTo(390.293488,122.086449, 398.933502,126.603004);
1822path.quadTo(408.150299,122.192581, 419.544037,122.192581);
1823path.quadTo(425.108429,122.192581, 430.223633,123.496056);
1824path.quadTo(435.959412,122.086449, 442.359833,122.086449);
1825path.quadTo(451.19516,122.086449, 458.334229,124.739769);
1826path.lineTo(473.777893,124.739769);
1827path.lineTo(473.777893,135.814713);
1828path.quadTo(474.234741,136.368698, 474.677277,136.945038);
1829path.quadTo(486.086548,151.803635, 486.086548,179.185898);
1830path.lineTo(485.980438,185.660004);
1831path.lineTo(473.777893,185.660004);
1832path.lineTo(473.777893,208.584686);
1833path.quadTo(473.777893,216.745773, 473.522156,223.628113);
1834path.quadTo(479.207153,222.069519, 485.555908,219.728638);
1835path.lineTo(485.555908,236.285355);
1836path.quadTo(478.638306,238.381592, 472.376221,239.787796);
1837path.quadTo(471.792389,244.826782, 470.965363,248.649826);
1838path.quadTo(468.152863,261.651093, 460.405151,269.929443);
1839path.quadTo(446.71402,284.469666, 417.845886,284.469666);
1840path.quadTo(397.680664,284.469666, 379.213562,278.313934);
1841path.lineTo(381.654602,260.165222);
1842path.quadTo(399.803314,268.761993, 417.421356,268.761993);
1843path.quadTo(446.944275,268.761993, 451.80542,242.619034);
1844path.quadTo(450.674866,242.65332, 449.576874,242.65332);
1845path.quadTo(434.524628,242.65332, 422.75238,236.741913);
1846path.quadTo(420.864227,237.041901, 418.884674,237.193085);
1847path.quadTo(399.840271,242.65332, 385.983124,242.65332);
1848path.quadTo(360.511261,242.65332, 344.432129,225.725143);
1849path.quadTo(328.352997,208.796951, 328.352997,181.839218);
1850path.quadTo(328.352997,155.62442, 342.521729,138.855438);
1851path.close();
1852path.moveTo(383.823944, 138.443222);
1853path.quadTo(380.900299,137.794098, 377.492493,137.794098);
1854path.quadTo(353.40036,137.794098, 350.6409,169.952347);
1855path.lineTo(370.408203,169.952347);
1856path.quadTo(372.883484,151.469254, 383.565002,138.749298);
1857path.quadTo(383.694122,138.595551, 383.823944,138.443222);
1858path.close();
1859path.moveTo(369.740021, 185.660004);
1860path.lineTo(349.685699,185.660004);
1861path.quadTo(353.983734,224.342361, 385.863525,226.594208);
1862path.quadTo(383.762756,224.616837, 381.866882,222.275818);
1863path.quadTo(370.639954,208.41301, 369.740021,185.660004);
1864path.close();
1865path.moveTo(413.279449, 185.660004);
1866path.quadTo(415.737305,207.780716, 427.214905,217.987976);
1867path.quadTo(440.600586,214.512451, 452.763611,200.094055);
1868path.lineTo(452.763611,185.660004);
1869</div>
1870
1871<div id="testQuadratic43o">
1872path.moveTo(288.755981, 240);
1873path.lineTo(288.755981, 102.232819);
1874path.lineTo(315.843994, 102.232819);
1875path.lineTo(354.009216, 208.816208);
1876path.lineTo(393.291473, 102.232819);
1877path.lineTo(417.493835, 102.232819);
1878path.lineTo(417.493835, 240);
1879path.lineTo(399.248962, 240);
1880path.lineTo(399.248962, 127.92453);
1881path.lineTo(361.269928, 230.784485);
1882path.lineTo(342.373474, 230.784485);
1883path.lineTo(305.511444, 127.645271);
1884path.lineTo(305.511444, 240);
1885path.lineTo(288.755981, 240);
1886path.close();
1887path.moveTo(397.864014, 236.741989);
1888path.quadTo(379.433014, 242.327148, 366.307892, 242.327148);
1889path.quadTo(343.967255, 242.327148, 329.864746, 227.479935);
1890path.quadTo(315.762238, 212.632736, 315.762238, 188.988907);
1891path.quadTo(315.762238, 165.996674, 328.189209, 151.289093);
1892path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
1893path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
1894path.quadTo(398.329468, 162.645584, 398.329468, 186.661758);
1895path.lineTo(398.236359, 192.339996);
1896path.lineTo(334.472504, 192.339996);
1897path.quadTo(338.475189, 228.364258, 369.752075, 228.364258);
1898path.quadTo(381.20163, 228.364258, 397.864014, 222.220581);
1899path.lineTo(397.864014, 236.741989);
1900path.close();
1901path.moveTo(335.310272, 178.563278);
1902path.lineTo(379.898438, 178.563278);
1903path.quadTo(379.898438, 150.358246, 358.861023, 150.358246);
1904path.quadTo(337.730499, 150.358246, 335.310272, 178.563278);
1905path.close();
1906path.moveTo(346.052765, 240);
1907path.lineTo(346.052765, 138.908661);
1908path.lineTo(364.390686, 138.908661);
1909path.lineTo(364.390686, 157.898193);
1910path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
1911path.quadTo(398.832489, 136.674606, 401.904327, 137.140045);
1912path.lineTo(401.904327, 154.267853);
1913path.quadTo(397.156952, 152.685394, 393.526611, 152.685394);
1914path.quadTo(376.119537, 152.685394, 364.390686, 173.350464);
1915path.lineTo(364.390686, 240);
1916path.lineTo(346.052765, 240);
1917path.close();
1918path.moveTo(362.792297, 273.604034);
1919path.lineTo(364.933289, 257.68634);
1920path.quadTo(380.850983, 265.226288, 396.303253, 265.226288);
1921path.quadTo(427.300842, 265.226288, 427.300842, 232.366959);
1922path.lineTo(427.300842, 216.449265);
1923path.quadTo(417.15448, 237.672852, 393.976105, 237.672852);
1924path.quadTo(375.824341, 237.672852, 365.119446, 224.454651);
1925path.quadTo(354.414581, 211.23645, 354.414581, 188.802734);
1926path.quadTo(354.414581, 165.717422, 366.608826, 151.196014);
1927path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
1928path.quadTo(415.106598, 136.674606, 427.300842, 150.451324);
1929path.lineTo(427.300842, 138.908661);
1930path.lineTo(445.731873, 138.908661);
1931path.lineTo(445.731873, 212.446564);
1932path.quadTo(445.731873, 236.183472, 443.265106, 247.586502);
1933path.quadTo(440.798309, 258.989532, 434.003052, 266.250244);
1934path.quadTo(421.994965, 279.002991, 396.675598, 279.002991);
1935path.quadTo(378.989258, 279.002991, 362.792297, 273.604034);
1936path.close();
1937path.moveTo(427.300842, 204.999695);
1938path.lineTo(427.300842, 163.017929);
1939path.quadTo(415.199677, 150.451324, 400.95755, 150.451324);
1940path.quadTo(388.297852, 150.451324, 381.130249, 160.597687);
1941path.quadTo(373.962616, 170.744064, 373.962616, 188.430389);
1942path.quadTo(373.962616, 221.662079, 397.327179, 221.662079);
1943path.quadTo(413.244873, 221.662079, 427.300842, 204.999695);
1944path.close();
1945path.moveTo(461.457764, 236.741989);
1946path.quadTo(443.026764, 242.327148, 429.901642, 242.327148);
1947path.quadTo(407.561005, 242.327148, 393.458496, 227.479935);
1948path.quadTo(379.355988, 212.632736, 379.355988, 188.988907);
1949path.quadTo(379.355988, 165.996674, 391.782959, 151.289093);
1950path.quadTo(404.20993, 136.581512, 423.571808, 136.581512);
1951path.quadTo(441.909729, 136.581512, 451.916473, 149.613556);
1952path.quadTo(461.923218, 162.645584, 461.923218, 186.661758);
1953path.lineTo(461.830109, 192.339996);
1954path.lineTo(398.066254, 192.339996);
1955path.quadTo(402.068939, 228.364258, 433.345825, 228.364258);
1956path.quadTo(444.79538, 228.364258, 461.457764, 222.220581);
1957path.lineTo(461.457764, 236.741989);
1958path.close();
1959path.moveTo(398.904022, 178.563278);
1960path.lineTo(443.492188, 178.563278);
1961path.quadTo(443.492188, 150.358246, 422.454773, 150.358246);
1962path.quadTo(401.324249, 150.358246, 398.904022, 178.563278);
1963path.close();
1964</div>
1965
1966<div id="testQuadratic43s">
1967path.moveTo(288.755981, 240);
1968path.lineTo(288.755981,102.232819);
1969path.lineTo(315.843994,102.232819);
1970path.lineTo(331.979736,147.294876);
1971path.quadTo(343.453125,136.581512, 359.978058,136.581512);
1972path.quadTo(370.869446,136.581512, 378.822021,141.178574);
1973path.quadTo(378.893585,141.140915, 378.965302,141.103577);
1974path.lineTo(393.291473,102.232819);
1975path.lineTo(417.493835,102.232819);
1976path.lineTo(417.493835,136.965759);
1977path.quadTo(420.44223,136.581512, 423.571808,136.581512);
1978path.quadTo(431.320984,136.581512, 437.582458,138.908661);
1979path.lineTo(445.731873,138.908661);
1980path.lineTo(445.731873,143.392502);
1981path.quadTo(449.143951,146.002823, 451.916473,149.613556);
1982path.quadTo(461.923218,162.645584, 461.923218,186.661758);
1983path.lineTo(461.830109,192.339996);
1984path.lineTo(445.731873,192.339996);
1985path.lineTo(445.731873,212.446564);
1986path.quadTo(445.731873,220.39856, 445.455017,226.966339);
1987path.quadTo(452.7435,225.43367, 461.457764,222.220581);
1988path.lineTo(461.457764,236.741989);
1989path.quadTo(452.250824,239.531982, 444.367889,240.928268);
1990path.quadTo(443.897583,244.662796, 443.265106,247.586502);
1991path.quadTo(440.798309,258.989532, 434.003052,266.250244);
1992path.quadTo(421.994965,279.002991, 396.675598,279.002991);
1993path.quadTo(378.989258,279.002991, 362.792297,273.604034);
1994path.lineTo(364.933289,257.68634);
1995path.quadTo(380.850983,265.226288, 396.303253,265.226288);
1996path.quadTo(422.230743,265.226288, 426.471558,242.237076);
1997path.quadTo(419.570892,241.869324, 413.503387,240);
1998path.lineTo(399.248962,240);
1999path.lineTo(399.248962,237.37915);
2000path.quadTo(397.047638,237.633072, 394.711517,237.667465);
2001path.quadTo(378.296356,242.327148, 366.307892,242.327148);
2002path.quadTo(357.463165,242.327148, 349.909637,240);
2003path.lineTo(346.052765,240);
2004path.lineTo(346.052765,238.625916);
2005path.quadTo(336.926056,234.914124, 329.864746,227.479935);
2006path.quadTo(315.762238,212.632736, 315.762238,188.988907);
2007path.quadTo(315.762238,176.540054, 319.405273,166.519882);
2008path.lineTo(305.511444,127.645271);
2009path.lineTo(305.511444,240);
2010path.lineTo(288.755981,240);
2011path.close();
2012path.moveTo(375.464813, 192.339996);
2013path.lineTo(374.267029,195.583939);
2014path.quadTo(375.987579,214.575378, 387.432068,219.736267);
2015path.quadTo(380.122528,208.101486, 379.428741,192.339996);
2016path.lineTo(375.464813,192.339996);
2017path.close();
2018path.moveTo(427.300842, 178.563278);
2019path.lineTo(427.300842,163.017929);
2020path.quadTo(422.561523,158.096329, 417.493835,155.102234);
2021path.lineTo(417.493835,178.563278);
2022path.lineTo(427.300842,178.563278);
2023path.close();
2024path.moveTo(427.300842, 192.339996);
2025path.lineTo(417.493835,192.339996);
2026path.lineTo(417.493835,214.429169);
2027path.quadTo(422.505676,210.684036, 427.300842,204.999695);
2028path.lineTo(427.300842,192.339996);
2029path.close();
2030path.moveTo(420.700134, 226.556015);
2031path.quadTo(423.794342,227.54834, 427.300842,227.996094);
2032path.lineTo(427.300842,216.449265);
2033path.quadTo(424.497772,222.312531, 420.700134,226.556015);
2034path.close();
2035path.moveTo(368.744965, 228.354782);
2036path.quadTo(366.836426,226.574738, 365.119446,224.454651);
2037path.quadTo(364.748657,223.996796, 364.390686,223.527878);
2038path.lineTo(364.390686,228.077774);
2039path.quadTo(366.495239,228.312164, 368.744965,228.354782);
2040path.close();
2041path.moveTo(399.248962, 199.701065);
2042path.lineTo(399.248962,192.339996);
2043path.lineTo(398.236359,192.339996);
2044path.lineTo(398.066254,192.339996);
2045path.quadTo(398.498535,196.230621, 399.248962,199.701065);
2046path.close();
2047path.moveTo(399.248962, 178.563278);
2048path.lineTo(399.248962,175.376892);
2049path.quadTo(399.04483,176.922348, 398.904022,178.563278);
2050path.lineTo(399.248962,178.563278);
2051path.close();
2052path.moveTo(399.248962, 136.688828);
2053path.lineTo(399.248962,127.92453);
2054path.lineTo(396.018158,136.674606);
2055path.quadTo(396.029053,136.674606, 396.039917,136.674606);
2056path.quadTo(396.513672,136.674606, 396.995453,136.688004);
2057path.quadTo(397.576904,136.674606, 398.164948,136.674606);
2058path.quadTo(398.709412,136.674606, 399.248962,136.688828);
2059path.close();
2060path.moveTo(346.052765, 178.563278);
2061path.lineTo(346.052765,154.02713);
2062path.quadTo(340.97113,157.621338, 338.22525,164.736588);
2063path.lineTo(343.1763,178.563278);
2064path.lineTo(346.052765,178.563278);
2065path.close();
2066path.moveTo(364.390686, 150.922379);
2067path.lineTo(364.390686,154.048065);
2068path.quadTo(365.340851,152.726639, 366.38147,151.468765);
2069path.quadTo(365.420258,151.14975, 364.390686,150.922379);
2070path.close();
2071path.moveTo(367.863586, 152.032623);
2072path.quadTo(367.144043,151.721848, 366.38147,151.468765);
2073</div>
2074
2075<div id="testQuadratic44o">
2076path.moveTo(354.009216, 208.816208);
2077path.lineTo(393.291473, 102.232819);
2078path.lineTo(399.248962, 127.92453);
2079path.lineTo(361.269928, 230.784485);
2080path.lineTo(354.009216, 208.816208);
2081path.close();
2082path.moveTo(328.189209, 151.289093);
2083path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
2084path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2085path.lineTo(328.189209, 151.289093);
2086path.close();
2087path.moveTo(346.052765, 138.908661);
2088path.lineTo(364.390686, 138.908661);
2089path.lineTo(364.390686, 157.898193);
2090path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2091path.lineTo(346.052765, 138.908661);
2092path.close();
2093</div>
2094
2095<div id="testQuadratic44s">
2096path.moveTo(380.33902, 137.376312);
2097path.lineTo(393.291473,102.232819);
2098path.lineTo(399.248962,127.92453);
2099path.lineTo(396.018158,136.674606);
2100path.quadTo(396.029053,136.674606, 396.039917,136.674606);
2101path.lineTo(396.017792,136.675598);
2102path.lineTo(361.269928,230.784485);
2103path.lineTo(354.009216,208.816208);
2104path.lineTo(375.699249,149.965286);
2105path.lineTo(369.22699,150.14563);
2106path.quadTo(373.524384,144.511566, 378.917297,141.233871);
2107path.lineTo(380.33902,137.376312);
2108path.close();
caryclark@google.coma461ff02012-10-11 12:54:23 +00002109path.moveTo(380.33902, 137.376312);
2110path.lineTo(378.917297,141.233856);
2111path.quadTo(375.048248,138.978912, 370.480499,137.816925);
2112path.lineTo(380.33902,137.376312);
2113path.close();
caryclark@google.com6aea33f2012-10-09 14:11:58 +00002114path.moveTo(392.55661, 136.830276);
caryclark@google.coma461ff02012-10-11 12:54:23 +00002115path.lineTo(380.33902,137.376312);
2116</div>
2117
2118<div id="testQuadratic45o">
2119path.moveTo(315.843994, 102.232819);
2120path.lineTo(354.009216, 208.816208);
2121path.lineTo(393.291473, 102.232819);
2122path.lineTo(399.248962, 127.92453);
2123path.lineTo(361.269928, 230.784485);
2124path.lineTo(342.373474, 230.784485);
2125path.lineTo(305.511444, 127.645271);
2126path.lineTo(315.843994, 102.232819);
2127path.close();
2128path.moveTo(366.307892, 242.327148);
2129path.quadTo(343.967255, 242.327148, 329.864746, 227.479935);
2130path.quadTo(315.762238, 212.632736, 315.762238, 188.988907);
2131path.quadTo(315.762238, 165.996674, 328.189209, 151.289093);
2132path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
2133path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2134path.quadTo(398.329468, 162.645584, 398.329468, 186.661758);
2135path.lineTo(398.236359, 192.339996);
2136path.lineTo(334.472504, 192.339996);
2137path.quadTo(338.475189, 228.364258, 369.752075, 228.364258);
2138path.quadTo(381.20163, 228.364258, 397.864014, 222.220581);
2139path.lineTo(366.307892, 242.327148);
2140path.close();
2141path.moveTo(335.310272, 178.563278);
2142path.lineTo(379.898438, 178.563278);
2143path.quadTo(379.898438, 150.358246, 358.861023, 150.358246);
2144path.quadTo(337.730499, 150.358246, 335.310272, 178.563278);
2145path.close();
2146path.moveTo(346.052765, 240);
2147path.lineTo(346.052765, 138.908661);
2148path.lineTo(364.390686, 138.908661);
2149path.lineTo(364.390686, 157.898193);
2150path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2151path.lineTo(401.904327, 154.267853);
2152path.quadTo(397.156952, 152.685394, 393.526611, 152.685394);
2153path.quadTo(376.119537, 152.685394, 364.390686, 173.350464);
2154path.lineTo(364.390686, 240);
2155path.lineTo(346.052765, 240);
2156path.close();
2157path.moveTo(396.303253, 265.226288);
2158path.quadTo(427.300842, 265.226288, 427.300842, 232.366959);
2159path.lineTo(427.300842, 216.449265);
2160path.quadTo(417.15448, 237.672852, 393.976105, 237.672852);
2161path.quadTo(375.824341, 237.672852, 365.119446, 224.454651);
2162path.quadTo(354.414581, 211.23645, 354.414581, 188.802734);
2163path.quadTo(354.414581, 165.717422, 366.608826, 151.196014);
2164path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
2165path.lineTo(396.303253, 265.226288);
2166path.close();
2167path.moveTo(400.95755, 150.451324);
2168path.quadTo(388.297852, 150.451324, 381.130249, 160.597687);
2169path.quadTo(373.962616, 170.744064, 373.962616, 188.430389);
2170path.quadTo(373.962616, 221.662079, 397.327179, 221.662079);
2171path.lineTo(400.95755, 150.451324);
2172path.close();
2173path.moveTo(429.901642, 242.327148);
2174path.quadTo(407.561005, 242.327148, 393.458496, 227.479935);
2175path.quadTo(379.355988, 212.632736, 379.355988, 188.988907);
2176path.quadTo(379.355988, 165.996674, 391.782959, 151.289093);
2177path.quadTo(404.20993, 136.581512, 423.571808, 136.581512);
2178path.lineTo(429.901642, 242.327148);
2179path.close();
2180</div>
2181
2182<div id="testQuadratic45s">
2183path.moveTo(305.511444, 127.645271);
2184path.lineTo(315.843994,102.232819);
2185path.lineTo(331.979736,147.294876);
2186path.quadTo(343.453125,136.581512, 359.978058,136.581512);
2187path.quadTo(370.869446,136.581512, 378.822021,141.178574);
2188path.quadTo(378.893585,141.140915, 378.965302,141.103577);
2189path.lineTo(393.291473,102.232819);
2190path.lineTo(399.248962,127.92453);
2191path.lineTo(396.018158,136.674606);
2192path.quadTo(396.029053,136.674606, 396.039917,136.674606);
2193path.lineTo(396.054596,136.718628);
2194path.quadTo(397.098907,136.674606, 398.164948,136.674606);
2195path.lineTo(398.076477,142.784256);
2196path.lineTo(398.697632,144.647751);
2197path.quadTo(409.233032,136.581512, 423.571808,136.581512);
2198path.lineTo(429.901642,242.327148);
2199path.quadTo(428.161621,242.327148, 426.471558,242.237076);
2200path.quadTo(427.300842,237.741562, 427.300842,232.366959);
2201path.lineTo(427.300842,216.449265);
2202path.quadTo(419.710114,232.327133, 404.8255,236.326401);
2203path.quadTo(400.557983,233.971252, 396.803375,230.691772);
2204path.lineTo(396.7034,237.596863);
2205path.quadTo(395.363068,237.672852, 393.976105,237.672852);
2206path.quadTo(385.309937,237.672852, 378.341187,234.659912);
2207path.lineTo(366.307892,242.327148);
2208path.quadTo(357.463165,242.327148, 349.909637,240);
2209path.lineTo(346.052765,240);
2210path.lineTo(346.052765,238.625916);
2211path.quadTo(336.926056,234.914124, 329.864746,227.479935);
2212path.quadTo(315.762238,212.632736, 315.762238,188.988907);
2213path.quadTo(315.762238,176.540054, 319.405273,166.519882);
2214path.lineTo(305.511444,127.645271);
2215path.close();
2216path.moveTo(375.464813, 192.339996);
2217path.lineTo(374.267029,195.583939);
2218path.quadTo(375.987579,214.575378, 387.432068,219.736267);
2219path.quadTo(380.122528,208.101486, 379.428741,192.339996);
2220path.lineTo(375.464813,192.339996);
2221path.close();
2222path.moveTo(397.925934, 153.178131);
2223path.lineTo(397.615479,174.615356);
2224path.quadTo(398.329468,180.246704, 398.329468,186.661758);
2225path.lineTo(398.236359,192.339996);
2226path.lineTo(397.358795,192.339996);
2227path.lineTo(396.934174,221.659714);
2228path.quadTo(397.129852,221.662079, 397.327179,221.662079);
2229path.lineTo(400.781189,153.910889);
2230path.quadTo(399.295654,153.462463, 397.925934,153.178131);
2231path.close();
2232path.moveTo(400.914398, 151.298019);
2233path.lineTo(400.632721,150.453003);
2234path.quadTo(400.794678,150.451324, 400.95755,150.451324);
2235path.lineTo(400.914398,151.298019);
2236path.close();
2237path.moveTo(368.744965, 228.354782);
2238path.quadTo(366.836426,226.574738, 365.119446,224.454651);
2239path.quadTo(364.748657,223.996796, 364.390686,223.527878);
2240path.lineTo(364.390686,228.077774);
2241path.quadTo(366.495239,228.312164, 368.744965,228.354782);
2242path.close();
2243path.moveTo(346.052765, 178.563278);
2244path.lineTo(346.052765,154.02713);
2245path.quadTo(340.97113,157.621338, 338.22525,164.736588);
2246path.lineTo(343.1763,178.563278);
2247path.lineTo(346.052765,178.563278);
2248path.close();
2249path.moveTo(364.390686, 150.922379);
2250path.lineTo(364.390686,154.048065);
2251path.quadTo(365.340851,152.726639, 366.38147,151.468765);
2252path.quadTo(365.420258,151.14975, 364.390686,150.922379);
2253path.close();
2254path.moveTo(367.863586, 152.032623);
2255path.quadTo(367.144043,151.721848, 366.38147,151.468765);
2256</div>
2257
2258<div id="testQuadratic46o">
2259path.moveTo(366.608826, 151.196014);
2260path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
2261path.lineTo(354.009216, 208.816208);
2262path.lineTo(393.291473, 102.232819);
2263path.lineTo(359.978058, 136.581512);
2264path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2265path.lineTo(364.390686, 157.898193);
2266path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2267path.lineTo(350, 120);
2268path.lineTo(366.608826, 151.196014);
2269path.close();
2270</div>
2271
2272<div id="testQuadratic46s">
2273path.moveTo(369.285553, 126.984779);
2274path.lineTo(393.291473,102.232819);
2275path.lineTo(382.416199,131.740402);
2276path.lineTo(396.039917,136.674606);
2277path.quadTo(387.290802,136.674606, 380.294495,140.44487);
2278path.quadTo(379.623352,140.760971, 378.965302,141.103577);
2279path.lineTo(378.917297,141.233856);
2280path.quadTo(378.86972,141.206131, 378.822021,141.178574);
2281path.quadTo(372.011871,144.761871, 366.608826,151.196014);
2282path.lineTo(350,120);
2283path.lineTo(369.285553,126.984779);
2284path.close();
2285path.moveTo(374.00174, 154.571106);
2286path.lineTo(378.917297,141.233871);
2287path.quadTo(378.917297,141.233871, 378.917297,141.233856);
2288path.quadTo(384.294891,144.368011, 388.322723,149.613556);
2289path.lineTo(374.00174,154.571106);
2290path.close();
2291path.moveTo(378.917297, 141.233871);
2292path.quadTo(370.233887,146.511475, 364.390686,157.898193);
2293path.lineTo(374.00174,154.571106);
2294path.lineTo(354.009216,208.816208);
2295path.lineTo(398.164948,136.674606);
2296path.quadTo(388.299255,136.674606, 380.294495,140.44487);
caryclark@google.com6aea33f2012-10-09 14:11:58 +00002297</div>
2298
caryclark@google.comc91dfe42012-10-16 12:06:27 +00002299<div id="testQuadratic47o">
2300path.moveTo(343.939362, 212.598053);
2301path.lineTo(378.457642, 118.940636);
2302path.lineTo(383.692657, 141.516571);
2303path.lineTo(350.319519, 231.902115);
2304path.lineTo(343.939362, 212.598053);
2305path.close();
2306path.moveTo(325.429016, 162.047577);
2307path.quadTo(336.348907, 149.123688, 353.36264, 149.123688);
2308path.quadTo(369.476624, 149.123688, 378.269806, 160.575241);
2309path.lineTo(325.429016, 162.047577);
2310path.close();
2311path.moveTo(370.867188, 186.014069);
2312path.quadTo(370.867188, 161.229614, 352.381104, 161.229614);
2313path.quadTo(333.813202, 161.229614, 331.686493, 186.014069);
2314path.lineTo(370.867188, 186.014069);
2315path.close();
2316path.moveTo(353.161499, 195.011719);
2317path.quadTo(353.161499, 174.726105, 363.876862, 161.96579);
2318path.lineTo(353.161499, 195.011719);
2319path.close();
2320</div>
2321
2322<div id="testQuadratic47s">
2323path.moveTo(366.466309, 151.476364);
2324path.lineTo(378.457642,118.940636);
2325path.lineTo(383.692657,141.516571);
2326path.lineTo(377.159943,159.209305);
2327path.quadTo(377.728729,159.87059, 378.269806,160.575241);
2328path.lineTo(376.638824,160.620682);
2329path.lineTo(370.26593,177.8806);
2330path.quadTo(368.708496,168.390671, 363.116943,164.309357);
2331path.lineTo(356.079041,186.014069);
2332path.lineTo(367.262817,186.014069);
2333path.lineTo(350.319519,231.902115);
2334path.lineTo(343.939362,212.598053);
2335path.lineTo(353.736816,186.014923);
2336path.lineTo(353.737122,186.014069);
2337path.lineTo(353.736938,186.014069);
2338path.quadTo(353.736877,186.014496, 353.736816,186.014923);
2339path.quadTo(353.161499,190.31131, 353.161499,195.011719);
2340</div>
2341
caryclark@google.comfb51afb2012-10-19 15:54:16 +00002342<div id="testQuadratic48o">
2343path.moveTo(366.608826, 151.196014);
2344path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
2345path.lineTo(354.009216, 208.816208);
2346path.lineTo(393.291473, 102.232819);
2347path.lineTo(359.978058, 136.581512);
2348path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2349path.lineTo(364.390686, 157.898193);
2350path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2351path.lineTo(350, 120);
2352path.lineTo(366.608826, 151.196014);
2353path.close();
2354</div>
2355
2356<div id="testQuadratic48s">
2357path.moveTo(369.285553, 126.984779);
2358path.lineTo(393.291473,102.232819);
2359path.lineTo(382.416199,131.740402);
2360path.lineTo(396.039917,136.674606);
2361path.quadTo(387.290802,136.674606, 380.294495,140.44487);
2362path.quadTo(379.623352,140.760971, 378.965302,141.103577);
2363path.lineTo(378.917297,141.233856);
2364path.quadTo(378.86972,141.206131, 378.822021,141.178574);
2365path.quadTo(372.011871,144.761871, 366.608826,151.196014);
2366path.lineTo(350,120);
2367path.lineTo(369.285553,126.984779);
2368path.close();
2369</div>
2370
2371<div id="testQuadratic49s">
2372path.moveTo(366.400513, 204.162521);
2373path.lineTo(411.545044, 81.6732483);
2374path.lineTo(366.400513, 204.162521);
2375path.close();
2376path.moveTo(331.585693, 138.050415);
2377path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
2378path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
2379path.lineTo(331.585693, 138.050415);
2380path.close();
2381path.moveTo(369.863983, 145.645813);
2382path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2383path.lineTo(369.863983, 145.645813);
2384path.close();
2385path.moveTo(369.970581, 137.94342);
2386path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2387path.lineTo(369.970581, 137.94342);
2388path.close();
2389</div>
2390
2391<div id="testQuadratic50o">
2392path.moveTo(366.400513, 204.162521);
2393path.lineTo(411.545044, 81.6732483);
2394path.lineTo(366.400513, 204.162521);
2395path.close();
2396path.moveTo(331.585693, 138.050415);
2397path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
2398path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
2399path.lineTo(331.585693, 138.050415);
2400path.close();
2401path.moveTo(369.863983, 145.645813);
2402path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2403path.lineTo(369.863983, 145.645813);
2404path.close();
2405path.moveTo(369.970581, 137.94342);
2406path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2407path.lineTo(369.970581, 137.94342);
2408path.close();
2409</div>
2410
2411<div id="testQuadratic50s">
2412path.moveTo(331.585693, 138.050415);
2413path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2414path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2415path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2416path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2417path.lineTo(395.061676,126.397095);
2418path.lineTo(391.979187,127.81559);
2419path.quadTo(393.010406,128.517273, 393.994415,129.292801);
2420path.quadTo(394.053131,129.339066, 394.111664,129.385605);
2421path.lineTo(393.910492,129.520508);
2422path.lineTo(383.340973,136.608322);
2423path.lineTo(375.350006,136.830978);
2424path.quadTo(376.20224,135.708145, 377.092102,134.66626);
2425path.lineTo(372.197113,136.918823);
2426</div>
2427
2428<div id="testQuadratic51">
2429path.moveTo(369.863983, 145.645813);
2430path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2431path.lineTo(369.863983, 145.645813);
2432path.close();
2433path.moveTo(369.970581, 137.94342);
2434path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2435path.lineTo(369.970581, 137.94342);
2436path.close();
2437</div>
2438
caryclark@google.com185c7c42012-10-19 18:26:24 +00002439<div id="testQuadratic52o">
2440path.moveTo(366.400513, 204.162521);
2441path.lineTo(411.545044, 81.6732483);
2442path.lineTo(366.400513, 204.162521);
2443path.close();
2444path.moveTo(331.585693, 138.050415);
2445path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
2446path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
2447path.lineTo(331.585693, 138.050415);
2448path.close();
2449path.moveTo(369.863983, 145.645813);
2450path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2451path.lineTo(369.863983, 145.645813);
2452path.close();
2453path.moveTo(369.970581, 137.94342);
2454path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2455path.lineTo(369.970581, 137.94342);
2456path.close();
2457</div>
2458
2459<div id="testQuadratic52s">
2460path.moveTo(331.585693, 138.050415);
2461path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2462path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2463path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2464path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2465path.close();
2466path.moveTo(383.340973, 136.608322);
2467path.lineTo(369.863983,145.645813);
2468path.quadTo(372.378204,140.746292, 375.350006,136.830978);
2469path.lineTo(372.197113,136.918823);
2470path.lineTo(369.970581,137.94342);
2471path.quadTo(370.390961,137.442825, 370.818756,136.95723);
2472path.lineTo(331.585693,138.050415);
2473path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2474path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2475path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2476path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2477path.close();
2478path.moveTo(383.340973, 136.608322);
2479path.lineTo(391.380798,136.384293);
2480path.lineTo(400.693176,136.124817);
2481path.quadTo(397.721985,132.255341, 394.111664,129.385605);
2482path.lineTo(406.236359,121.254936);
2483path.quadTo(406.236176,121.254936, 406.235992,121.254936);
2484path.lineTo(406.235992,121.254936);
2485path.quadTo(401.232697,121.254936, 396.645874,122.098694);
2486path.quadTo(391.577667,123.030998, 387.017914,124.993469);
2487path.quadTo(378.797424,121.147957, 368.11853,121.147957);
2488path.quadTo(345.867188,121.147957, 331.585693,138.050415);
2489path.lineTo(370.818756,136.95723);
2490path.quadTo(370.390961,137.442825, 369.970581,137.94342);
2491path.lineTo(372.197113,136.918823);
2492path.lineTo(375.350006,136.830978);
2493path.quadTo(372.378204,140.746292, 369.863983,145.645813);
2494path.lineTo(383.340973,136.608322);
2495path.close();
2496</div>
2497
caryclark@google.comf839c032012-10-26 21:03:50 +00002498<div id="testQuadratic52sa">
2499path.moveTo(331.585693, 138.050415);
2500path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2501path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2502path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2503path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2504path.close();
2505</div>
2506
2507<div id="testQuadratic52sb">
2508path.moveTo(383.340973, 136.608322);
2509path.lineTo(369.863983,145.645813);
2510path.quadTo(372.378204,140.746292, 375.350006,136.830978);
2511path.lineTo(372.197113,136.918823);
2512path.lineTo(369.970581,137.94342);
2513path.quadTo(370.390961,137.442825, 370.818756,136.95723);
2514path.lineTo(331.585693,138.050415);
2515path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2516path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2517path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2518path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2519path.close();
2520</div>
2521
2522<div id="testQuadratic52sc">
2523path.moveTo(383.340973, 136.608322);
2524path.lineTo(391.380798,136.384293);
2525path.lineTo(400.693176,136.124817);
2526path.quadTo(397.721985,132.255341, 394.111664,129.385605);
2527path.lineTo(406.236359,121.254936);
2528path.quadTo(406.236176,121.254936, 406.235992,121.254936);
2529path.lineTo(406.235992,121.254936);
2530path.quadTo(401.232697,121.254936, 396.645874,122.098694);
2531path.quadTo(391.577667,123.030998, 387.017914,124.993469);
2532path.quadTo(378.797424,121.147957, 368.11853,121.147957);
2533path.quadTo(345.867188,121.147957, 331.585693,138.050415);
2534path.lineTo(370.818756,136.95723);
2535path.quadTo(370.390961,137.442825, 369.970581,137.94342);
2536path.lineTo(372.197113,136.918823);
2537path.lineTo(375.350006,136.830978);
2538path.quadTo(372.378204,140.746292, 369.863983,145.645813);
2539path.lineTo(383.340973,136.608322);
2540path.close();
2541</div>
2542
2543<div id="testQuadratic53o">
2544path.moveTo(303.12088, 141.299606);
2545path.lineTo(330.463562, 217.659027);
2546path.lineTo(303.12088, 141.299606);
2547path.close();
2548path.moveTo(371.919067, 205.854996);
2549path.lineTo(326.236786, 205.854996);
2550path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2551path.lineTo(371.919067, 205.854996);
2552path.close();
2553</div>
2554
2555<div id="testQuadratic53s">
2556path.moveTo(326.236786,205.854996);
2557path.lineTo(326.236786,205.854996);
2558path.close();
2559path.moveTo(371.919067,205.854996);
2560path.lineTo(326.236786,205.854996);
2561</div>
2562
2563<div id="testQuadratic54">
2564path.moveTo(303.12088, 141.299606);
2565path.lineTo(330.463562, 217.659027);
2566path.lineTo(358.606506, 141.299606);
2567path.lineTo(303.12088, 141.299606);
2568path.close();
2569path.moveTo(371.919067, 205.854996);
2570path.lineTo(326.236786, 205.854996);
2571path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2572path.lineTo(371.919067, 205.854996);
2573path.close();
2574</div>
2575
2576<div id="testQuadratic55o">
2577path.moveTo(303.12088, 141.299606);
2578path.lineTo(330.463562, 217.659027);
2579path.lineTo(358.606506, 141.299606);
2580path.lineTo(303.12088, 141.299606);
2581path.close();
2582path.moveTo(326.236786, 205.854996);
2583path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2584path.lineTo(326.236786, 205.854996);
2585path.close();
2586</div>
2587
2588<div id="testQuadratic55s">
2589path.moveTo(326.236786,205.854996);
2590path.lineTo(303.12088,141.299606);
2591path.lineTo(358.606506,141.299606);
2592path.lineTo(332.468719,212.218475);
2593path.lineTo(351.512085,231.663818);
2594path.quadTo(329.104431,231.663818, 326.236786,205.854996);
2595path.close();
2596</div>
2597
2598<div id="testQuadratic56o">
2599path.moveTo(366.608826, 151.196014);
2600path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
2601path.lineTo(354.009216, 208.816208);
2602path.lineTo(393.291473, 102.232819);
2603path.lineTo(359.978058, 136.581512);
2604path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2605path.lineTo(364.390686, 157.898193);
2606path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2607path.lineTo(350, 120);
2608path.lineTo(366.608826, 151.196014);
2609path.close();
2610</div>
2611
2612<div id="testQuadratic56s">
2613path.moveTo(369.285553,126.984779);
2614path.lineTo(393.291473,102.232819);
2615path.lineTo(382.416199,131.740402);
2616path.lineTo(396.039917,136.674606);
2617path.quadTo(387.290802,136.674606, 380.294495,140.44487);
2618path.quadTo(379.623352,140.760971, 378.965302,141.103577);
2619path.lineTo(378.917297,141.233856);
2620path.quadTo(378.86972,141.206131, 378.822021,141.178574);
2621path.quadTo(372.011871,144.761871, 366.608826,151.196014);
2622path.lineTo(350,120);
2623path.lineTo(369.285553,126.984779);
2624path.close();
2625path.moveTo(378.917297,141.233871);
2626path.lineTo(378.917297,141.233856);
2627path.quadTo(378.86972,141.206131, 378.822021,141.178574);
2628path.quadTo(372.011871,144.761871, 366.608826,151.196014);
2629</div>
2630
2631<div id="testQuadratic57o">
2632path.moveTo(303.12088, 141.299606);
2633path.lineTo(330.463562, 217.659027);
2634path.lineTo(358.606506, 141.299606);
2635path.lineTo(362.874634, 159.705902);
2636path.lineTo(335.665344, 233.397751);
2637path.lineTo(322.12738, 233.397751);
2638path.lineTo(295.718353, 159.505829);
2639path.lineTo(295.718353, 240);
2640path.lineTo(303.12088, 141.299606);
2641path.close();
2642path.moveTo(322.935669, 231.030273);
2643path.quadTo(312.832214, 220.393295, 312.832214, 203.454178);
2644path.quadTo(312.832214, 186.981888, 321.73526, 176.444946);
2645path.quadTo(330.638306, 165.90802, 344.509705, 165.90802);
2646path.lineTo(371.919067, 205.854996);
2647path.lineTo(326.236786, 205.854996);
2648path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2649path.lineTo(322.935669, 231.030273);
2650path.close();
2651path.moveTo(326.837006, 195.984955);
2652path.lineTo(358.78125, 195.984955);
2653path.lineTo(343.709442, 175.778046);
2654path.quadTo(328.570923, 175.778046, 326.837006, 195.984955);
2655path.close();
2656</div>
2657
2658<div id="testQuadratic57s">
2659path.moveTo(300.708282,173.46756);
2660path.lineTo(303.12088,141.299606);
2661path.lineTo(317.770294,182.210785);
2662path.quadTo(319.462738,179.134506, 321.73526,176.444946);
2663path.quadTo(330.638306,165.90802, 344.509705,165.90802);
2664path.lineTo(347.780151,170.674438);
2665path.lineTo(358.606506,141.299606);
2666path.lineTo(362.874634,159.705902);
2667path.lineTo(354.960693,181.139511);
2668path.lineTo(371.919067,205.854996);
2669path.lineTo(345.834961,205.854996);
2670path.lineTo(337.609253,228.13298);
2671path.quadTo(342.649323,231.302383, 349.843323,231.626816);
2672path.lineTo(336.429047,231.329422);
2673path.lineTo(335.665344,233.397751);
2674path.lineTo(322.12738,233.397751);
2675path.lineTo(320.050781,227.587433);
2676path.quadTo(313.982483,219.336182, 313.015503,207.902908);
2677path.lineTo(300.708282,173.46756);
2678path.close();
2679path.moveTo(300.708282,173.46756);
2680path.lineTo(295.718353,240);
2681path.lineTo(295.718353,159.505829);
2682path.lineTo(300.708282,173.46756);
2683path.close();
2684path.moveTo(349.843323,231.626816);
2685path.lineTo(351.512085,231.663818);
2686path.quadTo(350.663696,231.663818, 349.843323,231.626816);
2687path.close();
2688path.moveTo(326.236786,205.854996);
2689path.lineTo(330.463562,217.659027);
2690path.lineTo(334.814056,205.854996);
2691path.lineTo(326.236786,205.854996);
2692path.close();
2693path.moveTo(334.814056,205.854996);
2694path.lineTo(338.451721,195.984955);
2695path.lineTo(349.479309,195.984955);
2696path.lineTo(352.559326,187.643173);
2697path.lineTo(358.78125,195.984955);
2698</div>
2699
2700<div id="testQuadratic58o">
2701path.moveTo(283.714233, 240);
2702path.lineTo(283.714233, 141.299606);
2703path.lineTo(303.12088, 141.299606);
2704path.lineTo(330.463562, 217.659027);
2705path.lineTo(358.606506, 141.299606);
2706path.lineTo(362.874634, 159.705902);
2707path.lineTo(335.665344, 233.397751);
2708path.lineTo(322.12738, 233.397751);
2709path.lineTo(295.718353, 159.505829);
2710path.lineTo(295.718353, 240);
2711path.lineTo(283.714233, 240);
2712path.close();
2713path.moveTo(322.935669, 231.030273);
2714path.quadTo(312.832214, 220.393295, 312.832214, 203.454178);
2715path.quadTo(312.832214, 186.981888, 321.73526, 176.444946);
2716path.quadTo(330.638306, 165.90802, 344.509705, 165.90802);
2717path.quadTo(357.647522, 165.90802, 364.81665, 175.244537);
2718path.lineTo(371.919067, 205.854996);
2719path.lineTo(326.236786, 205.854996);
2720path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2721path.lineTo(322.935669, 231.030273);
2722path.close();
2723path.moveTo(326.837006, 195.984955);
2724path.lineTo(358.78125, 195.984955);
2725path.quadTo(358.78125, 175.778046, 343.709442, 175.778046);
2726path.quadTo(328.570923, 175.778046, 326.837006, 195.984955);
2727path.close();
2728</div>
2729
2730<div id="testQuadratic58s">
2731path.moveTo(283.714233,240);
2732path.lineTo(283.714233,141.299606);
2733path.lineTo(303.12088,141.299606);
2734path.lineTo(317.770294,182.210785);
2735path.quadTo(319.462738,179.134506, 321.73526,176.444946);
2736path.quadTo(330.638306,165.90802, 344.509705,165.90802);
2737path.quadTo(347.07132,165.90802, 349.406036,166.26297);
2738path.lineTo(358.606506,141.299606);
2739path.lineTo(362.874634,159.705902);
2740path.lineTo(359.116211,169.884979);
2741path.quadTo(362.326477,172.001541, 364.81665,175.244537);
2742path.lineTo(371.919067,205.854996);
2743path.lineTo(345.834961,205.854996);
2744path.lineTo(337.609253,228.13298);
2745path.quadTo(342.649323,231.302383, 349.843323,231.626816);
2746path.lineTo(336.429047,231.329422);
2747path.lineTo(335.665344,233.397751);
2748path.lineTo(322.12738,233.397751);
2749path.lineTo(320.050781,227.587433);
2750path.quadTo(313.982483,219.336182, 313.015503,207.902908);
2751path.lineTo(295.718353,159.505829);
2752path.lineTo(295.718353,240);
2753path.lineTo(283.714233,240);
2754path.close();
2755path.moveTo(349.843323,231.626816);
2756path.lineTo(351.512085,231.663818);
2757path.quadTo(350.663696,231.663818, 349.843323,231.626816);
2758path.close();
2759path.moveTo(326.236786,205.854996);
2760path.lineTo(330.463562,217.659027);
2761path.lineTo(334.814056,205.854996);
2762path.lineTo(326.236786,205.854996);
2763path.close();
2764path.moveTo(334.814056,205.854996);
2765path.lineTo(338.451721,195.984955);
2766path.lineTo(349.479309,195.984955);
2767path.lineTo(355.054535,180.885361);
2768path.quadTo(358.78125,185.936935, 358.78125,195.984955);
2769</div>
2770
2771<div id="testQuadratic58a">
2772path.moveTo(283.714233,240);
2773path.lineTo(283.714233,141.299606);
2774path.lineTo(303.12088,141.299606);
2775path.lineTo(317.770294,182.210785);
2776path.quadTo(319.462738,179.134506, 321.73526,176.444946);
2777path.quadTo(330.638306,165.90802, 344.509705,165.90802);
2778path.quadTo(347.07132,165.90802, 349.406036,166.26297);
2779path.lineTo(358.606506,141.299606);
2780path.lineTo(362.874634,159.705902);
2781path.lineTo(359.116211,169.884979);
2782path.quadTo(362.326477,172.001541, 364.81665,175.244537);
2783path.lineTo(371.919067,205.854996);
2784path.lineTo(345.834961,205.854996);
2785path.lineTo(337.609253,228.13298);
2786path.quadTo(342.649323,231.302383, 349.843323,231.626816);
2787path.lineTo(336.429047,231.329422);
2788path.lineTo(335.665344,233.397751);
2789path.lineTo(322.12738,233.397751);
2790path.lineTo(320.050781,227.587433);
2791path.quadTo(313.982483,219.336182, 313.015503,207.902908);
2792path.lineTo(295.718353,159.505829);
2793path.lineTo(295.718353,240);
2794path.lineTo(283.714233,240);
2795path.close();
2796path.moveTo(349.843323,231.626816);
2797path.lineTo(351.512085,231.663818);
2798path.quadTo(350.663696,231.663818, 349.843323,231.626816);
2799path.close();
2800path.moveTo(349.479309,195.984955);
2801path.lineTo(358.78125,195.984955);
2802path.quadTo(358.78125,185.936935, 355.054535,180.885361);
2803path.lineTo(349.479309,195.984955);
2804path.close();
2805path.moveTo(345.858368,175.888794);
2806path.lineTo(338.451721,195.984955);
2807path.lineTo(326.837006,195.984955);
2808path.quadTo(328.570923,175.778046, 343.709442,175.778046);
2809path.quadTo(344.825195,175.778046, 345.858368,175.888794);
2810path.close();
2811</div>
2812
caryclark@google.comdb0b3e02012-12-21 21:34:36 +00002813<div id="testQuadratic59">
2814 path.moveTo(0, 0);
2815 path.quadTo(0, 0, 0, 0);
2816 path.lineTo(2, 2);
2817 path.close();
2818 path.moveTo(0, 0);
2819 path.lineTo(2, 0);
2820 path.quadTo(3, 1, 1, 2);
2821</div>
2822
caryclark@google.com0b7da432012-10-31 19:00:20 +00002823<div id="testQuadratic59o">
2824path.moveTo(369.863983, 145.645813);
2825path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2826path.quadTo(409.445679, 121.254936, 412.975952, 121.789818);
2827path.lineTo(369.863983, 145.645813);
2828path.close();
2829path.moveTo(369.970581, 137.94342);
2830path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2831path.quadTo(425.705902, 121.254936, 439.71994, 137.087616);
2832path.lineTo(369.970581, 137.94342);
2833path.close();
2834</div>
2835
2836<div id="testQuadratic59s">
2837path.moveTo(369.970581,137.94342);
2838path.quadTo(383.98465,121.254936, 406.235992,121.254936);
2839path.quadTo(406.237854,121.254936, 406.239746,121.254936);
2840path.lineTo(406.239532,121.254936);
2841path.quadTo(409.447418,121.255203, 412.975952,121.789818);
2842</div>
2843
2844<div id="testQuadratic60">
2845path.moveTo(360.416077, 166.795715);
2846path.quadTo(370.126831, 147.872162, 388.635406, 147.872162);
2847path.lineTo(360.416077, 166.795715);
2848path.close();
2849path.moveTo(353.2948, 194.351074);
2850path.quadTo(353.2948, 173.767563, 364.167572, 160.819855);
2851path.quadTo(375.040314, 147.872162, 392.303894, 147.872162);
2852path.lineTo(353.2948, 194.351074);
2853path.close();
2854</div>
2855
2856<div id="testQuadratic61">
2857path.moveTo(348.781738, 123.864815);
2858path.lineTo(369.848602, 123.864815);
2859path.lineTo(369.848602, 145.680267);
2860path.quadTo(382.360413, 121.298294, 406.207703, 121.298294);
2861path.lineTo(348.781738, 123.864815);
2862path.close();
2863path.moveTo(369.961151, 137.980698);
2864path.quadTo(383.970093, 121.298294, 406.213287, 121.298294);
2865path.lineTo(369.961151, 137.980698);
2866path.close();
2867</div>
2868
caryclark@google.come7bd5f42012-12-13 19:47:53 +00002869<div id="testQuadratic62x">
2870 path.setFillType(SkPath::kEvenOdd_FillType);
2871 path.moveTo(0, 0);
2872 path.quadTo(0, 0, 0, 0);
2873 path.lineTo(2, 2);
2874 path.close();
2875 path.moveTo(0, 0);
2876 path.lineTo(2, 0);
2877 path.quadTo(3, 1, 1, 2);
2878 path.close();
2879</div>
2880
2881<div id="testLine1a">
2882 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
2883 path.addRect(4, 0, 13, 13, SkPath::kCCW_Direction);
2884 path.close();
2885</div>
2886
2887<div id="testQuadratic63">
2888 path.moveTo(0, 0);
2889 path.quadTo(0, 0, 0, 0);
2890 path.lineTo(3, 2);
2891 path.close();
2892 path.moveTo(1, 0);
2893 path.lineTo(2, 1);
2894 path.quadTo(2, 1, 2, 2);
2895 path.close();
2896</div>
2897
2898<div id="testQuadratic64">
2899 path.moveTo(0, 0);
2900 path.quadTo(0, 0, 0, 0);
2901 path.lineTo(2, 3);
2902 path.close();
2903 path.moveTo(1, 2);
2904 path.lineTo(2, 2);
2905 path.quadTo(0, 3, 3, 3);
2906 path.close();
2907</div>
2908
2909<div id="testQuadratic65">
2910 path.moveTo(0, 0);
2911 path.quadTo(0, 0, 0, 0);
2912 path.lineTo(3, 2);
2913 path.close();
2914 path.moveTo(2, 1);
2915 path.lineTo(2, 2);
2916 path.quadTo(0, 3, 1, 3);
2917 path.close();
2918</div>
2919
2920<div id="testQuadratic66">
2921 path.moveTo(0, 0);
2922 path.quadTo(0, 0, 0, 1);
2923 path.lineTo(3, 2);
2924 path.close();
2925 path.moveTo(2, 0);
2926 path.lineTo(1, 1);
2927 path.quadTo(3, 2, 2, 3);
2928 path.close();
2929</div>
2930
2931<div id="testQuadratic67x">
2932 path.setFillType(SkPath::kEvenOdd_FillType);
2933 path.moveTo(0, 0);
2934 path.quadTo(0, 0, 2, 1);
2935 path.lineTo(2, 2);
2936 path.close();
2937 path.moveTo(0, 0);
2938 path.lineTo(2, 0);
2939 path.quadTo(1, 1, 3, 2);
2940 path.close();
2941</div>
2942
2943<div id="testQuadratic68">
2944 path.moveTo(0, 0);
2945 path.quadTo(1, 0, 0, 1);
2946 path.lineTo(1, 2);
2947 path.close();
2948 path.moveTo(0, 0);
2949 path.lineTo(0, 0);
2950 path.quadTo(0, 1, 2, 1);
2951 path.close();
2952</div>
2953
2954<div id="testQuadratic69">
2955 path.moveTo(0, 0);
2956 path.quadTo(0, 0, 0, 1);
2957 path.lineTo(3, 2);
2958 path.close();
2959 path.moveTo(2, 0);
2960 path.lineTo(1, 1);
2961 path.quadTo(3, 2, 2, 3);
2962 path.close();
2963</div>
2964
2965<div id="testQuadratic70x">
2966 path.setFillType(SkPath::kEvenOdd_FillType);
2967 path.moveTo(0, 0);
2968 path.quadTo(1, 0, 0, 1);
2969 path.lineTo(1, 2);
2970 path.close();
2971 path.moveTo(0, 0);
2972 path.lineTo(0, 0);
2973 path.quadTo(0, 1, 2, 1);
2974 path.close();
2975</div>
2976
2977<div id="testQuadratic71">
2978 path.moveTo(0, 0);
2979 path.quadTo(1, 0, 1, 1);
2980 path.lineTo(3, 2);
2981 path.close();
2982 path.moveTo(0, 0);
2983 path.lineTo(0, 0);
2984 path.quadTo(1, 1, 3, 1);
2985 path.close();
2986</div>
2987
2988<div id="testQuadratic72">
2989 path.moveTo(0, 0);
2990 path.quadTo(1, 0, 1, 2);
2991 path.lineTo(1, 2);
2992 path.close();
2993 path.moveTo(0, 0);
2994 path.lineTo(1, 0);
2995 path.quadTo(0, 1, 3, 2);
2996 path.close();
2997</div>
2998
2999<div id="testQuadratic73">
3000 path.moveTo(0, 0);
3001 path.quadTo(1, 0, 0, 3);
3002 path.lineTo(0, 3);
3003 path.close();
3004 path.moveTo(0, 0);
3005 path.lineTo(1, 0);
3006 path.quadTo(0, 1, 1, 1);
3007 path.close();
3008</div>
3009
3010<div id="testQuadratic74">
3011 path.moveTo(0, 0);
3012 path.quadTo(1, 0, 1, 3);
3013 path.lineTo(1, 3);
3014 path.close();
3015 path.moveTo(0, 0);
3016 path.lineTo(0, 1);
3017 path.quadTo(3, 2, 2, 3);
3018 path.close();
3019</div>
3020
3021<div id="testQuadratic75">
3022 path.moveTo(0, 0);
3023 path.quadTo(1, 0, 1, 3);
3024 path.lineTo(2, 3);
3025 path.close();
3026 path.moveTo(0, 0);
3027 path.lineTo(0, 1);
3028 path.quadTo(3, 2, 2, 3);
3029 path.close();
3030</div>
3031
caryclark@google.comdb0b3e02012-12-21 21:34:36 +00003032<div id="testQuadratic76">
3033 path.moveTo(0, 0);
3034 path.quadTo(0, 0, 0, 0);
3035 path.lineTo(2, 3);
3036 path.close();
3037 path.moveTo(1, 0);
3038 path.lineTo(1, 2);
3039 path.quadTo(1, 2, 2, 2);
3040 path.close();
3041</div>
3042
3043<div id="testQuadratic77">
3044 path.moveTo(0, 0);
3045 path.quadTo(1, 0, 1, 1);
3046 path.lineTo(3, 1);
3047 path.close();
3048 path.moveTo(0, 0);
3049 path.lineTo(1, 0);
3050 path.quadTo(0, 1, 3, 2);
3051 path.close();
3052</div>
3053
3054<div id="testQuadratic78">
3055 path.moveTo(0, 0);
3056 path.quadTo(1, 0, 1, 2);
3057 path.lineTo(3, 2);
3058 path.close();
3059 path.moveTo(0, 0);
3060 path.lineTo(0, 0);
3061 path.quadTo(2, 1, 0, 2);
3062 path.close();
3063</div>
3064
3065<div id="testQuadratic79">
3066 path.moveTo(0, 0);
3067 path.quadTo(1, 0, 1, 2);
3068 path.lineTo(3, 2);
3069 path.close();
3070 path.moveTo(0, 0);
3071 path.lineTo(1, 0);
3072 path.quadTo(0, 1, 3, 2);
3073 path.close();
3074</div>
3075
3076<div id="testQuadratic80">
3077 path.moveTo(0, 0);
3078 path.quadTo(1, 0, 2, 3);
3079 path.lineTo(2, 3);
3080 path.close();
3081 path.moveTo(1, 0);
3082 path.lineTo(3, 0);
3083 path.quadTo(0, 1, 1, 1);
3084 path.close();
3085</div>
3086
3087<div id="testQuadratic81">
3088 path.moveTo(0, 0);
3089 path.quadTo(2, 0, 1, 1);
3090 path.lineTo(1, 1);
3091 path.close();
3092 path.moveTo(0, 0);
3093 path.lineTo(0, 0);
3094 path.quadTo(2, 1, 0, 2);
3095 path.close();
3096</div>
3097
3098<div id="testQuadratic82">
3099 path.moveTo(0, 0);
3100 path.quadTo(2, 0, 1, 1);
3101 path.lineTo(0, 3);
3102 path.close();
3103 path.moveTo(0, 0);
3104 path.lineTo(0, 0);
3105 path.quadTo(2, 1, 0, 2);
3106 path.close();
3107</div>
3108
caryclark@google.com3586ece2012-12-27 18:46:58 +00003109<div id="testQuadratic83">
3110 path.moveTo(0, 0);
3111 path.quadTo(0, 0, 2, 0);
3112 path.lineTo(2, 2);
3113 path.close();
3114 path.moveTo(0, 1);
3115 path.lineTo(0, 2);
3116 path.quadTo(2, 2, 1, 3);
3117 path.close();
3118</div>
3119
caryclark@google.com10227bf2012-12-28 22:10:41 +00003120<div id="testQuadratic84">
3121 path.moveTo(0, 0);
3122 path.quadTo(2, 0, 1, 1);
3123 path.lineTo(2, 1);
3124 path.close();
3125 path.moveTo(1, 0);
3126 path.lineTo(2, 0);
3127 path.quadTo(0, 1, 2, 2);
3128 path.close();
3129</div>
3130
3131<div id="testQuadratic85">
3132 path.moveTo(0, 0);
3133 path.quadTo(3, 0, 1, 1);
3134 path.lineTo(1, 1);
3135 path.close();
3136 path.moveTo(1, 0);
3137 path.lineTo(3, 0);
3138 path.quadTo(0, 1, 1, 2);
3139 path.close();
3140</div>
3141
3142<div id="testQuadratic86">
3143 path.moveTo(0, 0);
3144 path.quadTo(0, 1, 1, 1);
3145 path.lineTo(2, 3);
3146 path.close();
3147 path.moveTo(0, 0);
3148 path.lineTo(0, 0);
3149 path.quadTo(1, 1, 1, 3);
3150 path.close();
3151</div>
3152
3153<div id="testQuadratic87">
3154 path.moveTo(0, 0);
3155 path.quadTo(2, 1, 0, 2);
3156 path.lineTo(2, 3);
3157 path.close();
3158 path.moveTo(0, 0);
3159 path.lineTo(1, 1);
3160 path.quadTo(0, 2, 3, 2);
3161 path.close();
3162</div>
3163
3164<div id="testQuadratic88">
3165 path.moveTo(0, 0);
3166 path.quadTo(2, 1, 0, 2);
3167 path.lineTo(2, 2);
3168 path.close();
3169 path.moveTo(1, 0);
3170 path.lineTo(1, 1);
3171 path.quadTo(0, 2, 2, 2);
3172 path.close();
3173</div>
3174
caryclark@google.com8f9f4682013-01-03 21:18:16 +00003175<div id="testQuadratic89x">
3176 path.setFillType(SkPath::kEvenOdd_FillType);
3177 path.moveTo(0, 0);
3178 path.quadTo(3, 1, 2, 2);
3179 path.lineTo(0, 3);
3180 path.close();
3181 path.moveTo(0, 0);
3182 path.lineTo(2, 1);
3183 path.quadTo(3, 1, 3, 3);
3184 path.close();
3185</div>
3186
3187<div id="testQuadratic90x">
3188 path.setFillType(SkPath::kEvenOdd_FillType);
3189 path.moveTo(0, 0);
3190 path.quadTo(3, 0, 2, 2);
3191 path.lineTo(1, 3);
3192 path.close();
3193 path.moveTo(0, 0);
3194 path.lineTo(0, 1);
3195 path.quadTo(3, 2, 2, 3);
3196 path.close();
3197</div>
3198
3199<div id="testQuadratic91">
3200 path.moveTo(0, 0);
3201 path.quadTo(3, 2, 2, 3);
3202 path.lineTo(2, 3);
3203 path.close();
3204 path.moveTo(0, 0);
3205 path.lineTo(1, 1);
3206 path.quadTo(2, 1, 2, 3);
3207 path.close();
3208</div>
3209
3210<div id="testQuadratic92x">
3211 path.setFillType(SkPath::kEvenOdd_FillType);
3212 path.moveTo(1, 0);
3213 path.quadTo(3, 0, 2, 2);
3214 path.lineTo(2, 2);
3215 path.close();
3216 path.moveTo(2, 0);
3217 path.lineTo(0, 1);
3218 path.quadTo(3, 2, 2, 3);
3219 path.close();
3220</div>
3221
3222<div id="testLine82">
3223 path.addRect(20, 0, 40, 40, SkPath::kCCWDirection);
3224 path.addRect(24, 20, 36, 30, SkPath::kCCWDirection);
3225 path.addRect(24, 32, 33, 36, SkPath::kCCWDirection);
3226</div>
3227
3228<div id="testLine82a">
3229 SkPath path;
3230 path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
3231 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
3232 path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
3233 testSimplifyx(path);
3234</div>
3235
3236<div id="testLine82b">
3237 SkPath path;
3238 path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
3239 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
3240 path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
3241 testSimplifyx(path);
3242</div>
3243
3244<div id="testLine82c">
3245 SkPath path;
3246 path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
3247 path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
3248 path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
3249 testSimplifyx(path);
3250</div>
3251
3252
3253<div id="testLine82d">
3254 SkPath path;
3255 path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
3256 path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
3257 path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
3258 testSimplifyx(path);
3259</div>
3260
3261<div id="testLine82e">
3262 SkPath path;
3263 path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
3264 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
3265 path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
3266 testSimplifyx(path);
3267</div>
3268
3269<div id="testLine82f">
3270 SkPath path;
3271 path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
3272 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
3273 path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
3274 testSimplifyx(path);
3275</div>
3276
3277<div id="testLine82g">
3278 SkPath path;
3279 path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
3280 path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
3281 path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
3282 testSimplifyx(path);
3283</div>
3284
3285<div id="testLine82h">
3286 SkPath path;
3287 path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
3288 path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
3289 path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
3290 testSimplifyx(path);
3291</div>
3292
3293<div id="testLine83">
3294path.addRect(10, 30, 30, 40, SkPath::kCCW_Direction);
3295path.addRect(0, 12, 12, 18, SkPath::kCCW_Direction);
3296path.addRect(4, 13, 13, 16, SkPath::kCCW_Direction);
3297</div>
3298
3299<div id="testLine84x">
3300 path.setFillType(SkPath::kEvenOdd_FillType);
3301 path.addRect(0, 12, 60, 30, SkPath::kCCW_Direction);
3302 path.addRect(10, 20, 40, 30, SkPath::kCCW_Direction);
3303 path.addRect(0, 12, 12, 12, SkPath::kCCW_Direction);
3304 path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
3305</div>
3306
3307<div id="testLine85">
3308 path.addRect(36, 0, 66, 60, SkPath::kCCW_Direction);
3309 path.addRect(20, 0, 40, 40, SkPath::kCCW_Direction);
3310 path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
3311 path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
3312</div>
3313
caryclark@google.com73ca6242013-01-17 21:02:47 +00003314<div id="testQuadralateral1">
3315 path.moveTo(0, 0);
3316 path.lineTo(0, 0);
3317 path.lineTo(0, 0);
3318 path.lineTo(3, 2);
3319 path.close();
3320 path.moveTo(0, 0);
3321 path.lineTo(2, 1);
3322 path.lineTo(2, 2);
3323 path.lineTo(2, 3);
3324 path.close();
3325</div>
3326
3327<div id="testCubic1">
3328 path.moveTo(0, 0);
3329 path.cubicTo(0, 1, 1, 1, 1, 0);
3330 path.close();
3331 path.moveTo(1, 0);
3332 path.cubicTo(0, 0, 0, 1, 1, 1);
3333 path.close();
3334</div>
3335
caryclark@google.com85ec74c2013-01-28 19:25:51 +00003336<div id="testQuadratic93">
3337 path.moveTo(3, 0);
3338 path.quadTo(0, 1, 3, 2);
3339 path.lineTo(0, 3);
3340 path.close();
3341 path.moveTo(1, 0);
3342 path.lineTo(2, 0);
3343 path.quadTo(1, 1, 2, 2);
3344 path.close();
3345</div>
3346
caryclark@google.comaa358312013-01-29 20:28:49 +00003347<div id="cubicOp1d">
3348 path.setFillType(SkPath::kWinding_FillType);
3349 path.moveTo(0,1);
3350 path.cubicTo(0,2, 1,0, 1,0);
3351 path.close();
3352 pathB.setFillType(SkPath::kWinding_FillType);
3353 pathB.moveTo(0,1);
3354 pathB.cubicTo(0,1, 1,0, 2,0);
3355 pathB.close();
3356</div>
3357
caryclark@google.combeda3892013-02-07 13:13:41 +00003358<div id="cubicOp2d">
3359 path.setFillType(SkPath::kWinding_FillType);
3360 path.moveTo(0,2);
3361 path.cubicTo(0,1, 1,0, 1,0);
3362 path.close();
3363 pathB.setFillType(SkPath::kWinding_FillType);
3364 pathB.moveTo(0,1);
3365 pathB.cubicTo(0,1, 2,0, 1,0);
3366 pathB.close();
3367</div>
3368
3369<div id="cubicOp3d">
3370 path.setFillType(SkPath::kWinding_FillType);
3371 path.moveTo(0,1);
3372 path.cubicTo(2,3, 1,0, 1,0);
3373 path.close();
3374 pathB.setFillType(SkPath::kWinding_FillType);
3375 pathB.moveTo(0,1);
3376 pathB.cubicTo(0,1, 1,0, 3,2);
3377 pathB.close();
3378</div>
3379
3380<div id="cubicOp4d">
3381 path.setFillType(SkPath::kWinding_FillType);
3382 path.moveTo(0,1);
3383 path.cubicTo(0,2, 1,0, 2,0);
3384 path.close();
3385 pathB.setFillType(SkPath::kWinding_FillType);
3386 pathB.moveTo(0,1);
3387 pathB.cubicTo(0,2, 1,0, 2,0);
3388 pathB.close();
3389</div>
3390
3391<div id="cubicOp5d">
3392 path.setFillType(SkPath::kWinding_FillType);
3393 path.moveTo(0,1);
3394 path.cubicTo(0,2, 1,0, 2,0);
3395 path.close();
3396 pathB.setFillType(SkPath::kWinding_FillType);
3397 pathB.moveTo(0,1);
3398 pathB.cubicTo(0,2, 1,0, 2,0);
3399 pathB.close();
3400</div>
3401
3402<div id="cubicOp6d">
3403 path.setFillType(SkPath::kWinding_FillType);
3404 path.moveTo(0,1);
3405 path.cubicTo(0,6, 1,0, 3,0);
3406 path.close();
3407 pathB.setFillType(SkPath::kWinding_FillType);
3408 pathB.moveTo(0,1);
3409 pathB.cubicTo(0,3, 1,0, 6,0);
3410 pathB.close();
3411</div>
3412
3413<div id="cubicOp7d">
3414 path.setFillType(SkPath::kWinding_FillType);
3415 path.moveTo(0,1);
3416 path.cubicTo(3,4, 1,0, 3,0);
3417 path.close();
3418 pathB.setFillType(SkPath::kWinding_FillType);
3419 pathB.moveTo(0,1);
3420 pathB.cubicTo(0,3, 1,0, 4,3);
3421 pathB.close();
3422</div>
3423
caryclark@google.com45a8fc62013-02-14 15:29:11 +00003424<div id="cubicOp8d">
3425 path.setFillType(SkPath::kWinding_FillType);
3426 path.moveTo(0,1);
3427 path.cubicTo(0,5, 1,0, 4,0);
3428 path.close();
3429 pathB.setFillType(SkPath::kWinding_FillType);
3430 pathB.moveTo(0,1);
3431 pathB.cubicTo(0,4, 1,0, 5,0);
3432 pathB.close();
3433</div>
3434
3435<div id="cubicOp9d">
3436 path.setFillType(SkPath::kWinding_FillType);
3437 path.moveTo(0,1);
3438 path.cubicTo(1,6, 1,0, 2,1);
3439 path.close();
3440 pathB.setFillType(SkPath::kWinding_FillType);
3441 pathB.moveTo(0,1);
3442 pathB.cubicTo(1,2, 1,0, 6,1);
3443 pathB.close();
3444</div>
3445
3446<div id="quadOp9d">
3447 path.setFillType(SkPath::kWinding_FillType);
3448 path.moveTo(0,1);
3449 path.quadTo(1,6, 1.5f,1);
3450 path.quadTo(1.5f,0.8f, 2,1);
3451 path.close();
3452 pathB.setFillType(SkPath::kWinding_FillType);
3453 pathB.moveTo(0,1);
3454 pathB.quadTo(1,2, 1.4f,1);
3455 pathB.quadTo(3,0.4f, 6,1);
3456 pathB.close();
3457</div>
3458
3459<div id="lineOp9d">
3460 path.setFillType(SkPath::kWinding_FillType);
3461 path.moveTo(0,1);
3462 path.lineTo(1,6);
3463 path.lineTo(1.5f,1);
3464 path.lineTo(1.8f,0.8f);
3465 path.lineTo(2,1);
3466 path.close();
3467 pathB.setFillType(SkPath::kWinding_FillType);
3468 pathB.moveTo(0,1);
3469 pathB.lineTo(1,2);
3470 pathB.lineTo(1.4f,1);
3471 pathB.lineTo(3,0.4f);
3472 pathB.lineTo(6,1);
3473 pathB.close();
3474</div>
3475
3476<div id="cubicOp1i">
3477 path.setFillType(SkPath::kWinding_FillType);
3478 path.moveTo(0,1);
3479 path.cubicTo(1,2, 1,0, 2,1);
3480 path.close();
3481 pathB.setFillType(SkPath::kWinding_FillType);
3482 pathB.moveTo(0,1);
3483 pathB.cubicTo(1,2, 1,0, 2,1);
3484 pathB.close();
3485</div>
3486
3487<div id="cubicOp10d">
3488 path.setFillType(SkPath::kWinding_FillType);
3489 path.moveTo(0,1);
3490 path.cubicTo(1,3, 1,0, 4,1);
3491 path.close();
3492 pathB.setFillType(SkPath::kWinding_FillType);
3493 pathB.moveTo(0,1);
3494 pathB.cubicTo(1,4, 1,0, 3,1);
3495 pathB.close();
3496</div>
3497
3498<div id="cubicOp11d">
3499 path.setFillType(SkPath::kWinding_FillType);
3500 path.moveTo(0,1);
3501 path.cubicTo(3,4, 1,0, 5,1);
3502 path.close();
3503 pathB.setFillType(SkPath::kWinding_FillType);
3504 pathB.moveTo(0,1);
3505 pathB.cubicTo(1,5, 1,0, 4,3);
3506 pathB.close();
3507</div>
3508
3509<div id="cubicOp12d">
3510 path.setFillType(SkPath::kWinding_FillType);
3511 path.moveTo(0,1);
3512 path.cubicTo(1,6, 1,0, 1,0);
3513 path.close();
3514 pathB.setFillType(SkPath::kWinding_FillType);
3515 pathB.moveTo(0,1);
3516 pathB.cubicTo(0,1, 1,0, 6,1);
3517 pathB.close();
3518</div>
3519
3520<div id="cubicOp13d">
3521 path.setFillType(SkPath::kWinding_FillType);
3522 path.moveTo(0,1);
3523 path.cubicTo(4,5, 1,0, 5,3);
3524 path.close();
3525 pathB.setFillType(SkPath::kWinding_FillType);
3526 pathB.moveTo(0,1);
3527 pathB.cubicTo(3,5, 1,0, 5,4);
3528 pathB.close();
3529</div>
3530
3531<div id="cubicOp14d">
3532 path.setFillType(SkPath::kWinding_FillType);
3533 path.moveTo(0,1);
3534 path.cubicTo(0,2, 2,0, 2,1);
3535 path.close();
3536 pathB.setFillType(SkPath::kWinding_FillType);
3537 pathB.moveTo(0,2);
3538 pathB.cubicTo(1,2, 1,0, 2,0);
3539 pathB.close();
3540</div>
3541
caryclark@google.com47d73da2013-02-17 01:41:25 +00003542<div id="cubicOp15d">
3543 path.setFillType(SkPath::kWinding_FillType);
3544 path.moveTo(0,1);
3545 path.cubicTo(3,6, 2,0, 2,1);
3546 path.close();
3547 pathB.setFillType(SkPath::kWinding_FillType);
3548 pathB.moveTo(0,2);
3549 pathB.cubicTo(1,2, 1,0, 6,3);
3550 pathB.close();
3551</div>
3552
3553<div id="cubicOp16d">
3554 path.setFillType(SkPath::kWinding_FillType);
3555 path.moveTo(0,2);
3556 path.cubicTo(0,1, 3,0, 1,0);
3557 path.close();
3558 pathB.setFillType(SkPath::kWinding_FillType);
3559 pathB.moveTo(0,3);
3560 pathB.cubicTo(0,1, 2,0, 1,0);
3561 pathB.close();
3562</div>
3563
3564<div id="cubicOp17d">
3565 path.setFillType(SkPath::kWinding_FillType);
3566 path.moveTo(0,2);
3567 path.cubicTo(0,2, 4,0, 2,1);
3568 path.close();
3569 pathB.setFillType(SkPath::kWinding_FillType);
3570 pathB.moveTo(0,4);
3571 pathB.cubicTo(1,2, 2,0, 2,0);
3572 pathB.close();
3573</div>
3574
3575<div id="cubicOp18d">
3576 path.setFillType(SkPath::kWinding_FillType);
3577 path.moveTo(0,1);
3578 path.cubicTo(3,5, 2,0, 2,1);
3579 path.close();
3580 pathB.setFillType(SkPath::kWinding_FillType);
3581 pathB.moveTo(0,2);
3582 pathB.cubicTo(1,2, 1,0, 5,3);
3583 pathB.close();
3584</div>
3585
3586<div id="cubicOp19i">
3587 path.setFillType(SkPath::kWinding_FillType);
3588 path.moveTo(0,2);
3589 path.cubicTo(0,1, 2,1, 6,2);
3590 path.close();
3591 pathB.setFillType(SkPath::kWinding_FillType);
3592 pathB.moveTo(1,2);
3593 pathB.cubicTo(2,6, 2,0, 1,0);
3594 pathB.close();
3595</div>
3596
caryclark@google.comd0a19eb2013-02-19 12:49:33 +00003597<div id="cubicOp20d">
3598 path.setFillType(SkPath::kWinding_FillType);
3599 path.moveTo(0,1);
3600 path.cubicTo(0,1, 6,0, 2,1);
3601 path.close();
3602 pathB.setFillType(SkPath::kWinding_FillType);
3603 pathB.moveTo(0,6);
3604 pathB.cubicTo(1,2, 1,0, 1,0);
3605 pathB.close();
3606</div>
3607
caryclark@google.com5e0500f2013-02-20 12:51:37 +00003608<div id="cubicOp21d">
3609 path.setFillType(SkPath::kWinding_FillType);
3610 path.moveTo(0,1);
3611 path.cubicTo(0,1, 2,1, 6,5);
3612 path.close();
3613 pathB.setFillType(SkPath::kWinding_FillType);
3614 pathB.moveTo(1,2);
3615 pathB.cubicTo(5,6, 1,0, 1,0);
3616 pathB.close();
3617</div>
3618
3619<div id="cubicOp22d">
3620 path.setFillType(SkPath::kWinding_FillType);
3621 path.moveTo(0,1);
3622 path.cubicTo(2,3, 3,0, 2,1);
3623 path.close();
3624 pathB.setFillType(SkPath::kWinding_FillType);
3625 pathB.moveTo(0,3);
3626 pathB.cubicTo(1,2, 1,0, 3,2);
3627 pathB.close();
3628</div>
3629
3630<div id="cubicOp23d">
3631 path.setFillType(SkPath::kWinding_FillType);
3632 path.moveTo(0,1);
3633 path.cubicTo(1,2, 4,0, 2,1);
3634 path.close();
3635 pathB.setFillType(SkPath::kWinding_FillType);
3636 pathB.moveTo(0,4);
3637 pathB.cubicTo(1,2, 1,0, 2,1);
3638 pathB.close();
3639</div>
3640
3641<div id="cubicOp24d">
3642 path.setFillType(SkPath::kWinding_FillType);
3643 path.moveTo(0,1);
3644 path.cubicTo(1,2, 2,0, 3,2);
3645 path.close();
3646 pathB.setFillType(SkPath::kWinding_FillType);
3647 pathB.moveTo(0,2);
3648 pathB.cubicTo(2,3, 1,0, 2,1);
3649 pathB.close();
3650</div>
3651
caryclark@google.comc83c70e2013-02-22 21:50:07 +00003652<div id="cubicOp25i">
3653 path.setFillType(SkPath::kWinding_FillType);
3654 path.moveTo(0,1);
3655 path.cubicTo(2,4, 5,0, 3,2);
3656 path.close();
3657 pathB.setFillType(SkPath::kWinding_FillType);
3658 pathB.moveTo(0,5);
3659 pathB.cubicTo(2,3, 1,0, 4,2);
3660 pathB.close();
3661</div>
3662
3663<div id="cubicOp26d">
3664 path.setFillType(SkPath::kWinding_FillType);
3665 path.moveTo(0,1);
3666 path.cubicTo(3,4, 4,0, 3,2);
3667 path.close();
3668 pathB.setFillType(SkPath::kWinding_FillType);
3669 pathB.moveTo(0,4);
3670 pathB.cubicTo(2,3, 1,0, 4,3);
3671 pathB.close();
3672</div>
3673
3674<div id="cubicOp27d">
3675 path.setFillType(SkPath::kWinding_FillType);
3676 path.moveTo(0,1);
3677 path.cubicTo(3,6, 1,0, 5,2);
3678 path.close();
3679 pathB.setFillType(SkPath::kWinding_FillType);
3680 pathB.moveTo(0,1);
3681 pathB.cubicTo(2,5, 1,0, 6,3);
3682 pathB.close();
3683</div>
3684
3685<div id="cubicOp28u">
3686 path.setFillType(SkPath::kWinding_FillType);
3687 path.moveTo(0,1);
3688 path.cubicTo(1,4, 6,0, 3,2);
3689 path.close();
3690 pathB.setFillType(SkPath::kWinding_FillType);
3691 pathB.moveTo(0,6);
3692 pathB.cubicTo(2,3, 1,0, 4,1);
3693 pathB.close();
3694</div>
3695
3696<div id="cubicOp29d">
3697 path.setFillType(SkPath::kWinding_FillType);
3698 path.moveTo(0,1);
3699 path.cubicTo(2,5, 6,0, 4,2);
3700 path.close();
3701 pathB.setFillType(SkPath::kWinding_FillType);
3702 pathB.moveTo(0,6);
3703 pathB.cubicTo(2,4, 1,0, 5,2);
3704 pathB.close();
3705</div>
3706
3707<div id="cubicOp30d">
3708 path.setFillType(SkPath::kWinding_FillType);
3709 path.moveTo(0,1);
3710 path.cubicTo(2,5, 6,0, 5,3);
3711 path.close();
3712 pathB.setFillType(SkPath::kWinding_FillType);
3713 pathB.moveTo(0,6);
3714 pathB.cubicTo(3,5, 1,0, 5,2);
3715 pathB.close();
3716</div>
3717
caryclark@google.com7ff5c842013-02-26 15:56:05 +00003718<div id="cubicOp31d">
3719 path.setFillType(SkPath::kWinding_FillType);
3720 path.moveTo(0,2);
3721 path.cubicTo(0,3, 2,1, 4,0);
3722 path.close();
3723 pathB.setFillType(SkPath::kWinding_FillType);
3724 pathB.moveTo(1,2);
3725 pathB.cubicTo(0,4, 2,0, 3,0);
3726 pathB.close();
3727</div>
3728
caryclark@google.com4aaaaea2013-02-28 16:12:39 +00003729<div id="cubicOp32d">
3730 path.setFillType(SkPath::kWinding_FillType);
3731 path.moveTo(0,1);
3732 path.cubicTo(1,2, 6,0, 3,1);
3733 path.close();
3734 pathB.setFillType(SkPath::kWinding_FillType);
3735 pathB.moveTo(0,6);
3736 pathB.cubicTo(1,3, 1,0, 2,1);
3737 pathB.close();
3738</div>
3739
3740<div id="cubicOp33i">
3741 path.setFillType(SkPath::kWinding_FillType);
3742 path.moveTo(0,1);
3743 path.cubicTo(1,2, 6,0, 3,1);
3744 path.close();
3745 pathB.setFillType(SkPath::kWinding_FillType);
3746 pathB.moveTo(0,6);
3747 pathB.cubicTo(1,3, 1,0, 2,1);
3748 pathB.close();
3749</div>
3750
3751<div id="cubicOp34d">
3752 path.setFillType(SkPath::kWinding_FillType);
3753 path.moveTo(0,1);
3754 path.cubicTo(3,5, 2,1, 3,1);
3755 path.close();
3756 pathB.setFillType(SkPath::kWinding_FillType);
3757 pathB.moveTo(1,2);
3758 pathB.cubicTo(1,3, 1,0, 5,3);
3759 pathB.close();
3760</div>
3761
3762<div id="cubicOp35d">
3763 path.setFillType(SkPath::kWinding_FillType);
3764 path.moveTo(0,1);
3765 path.cubicTo(1,5, 2,1, 4,0);
3766 path.close();
3767 pathB.setFillType(SkPath::kWinding_FillType);
3768 pathB.moveTo(1,2);
3769 pathB.cubicTo(0,4, 1,0, 5,1);
3770 pathB.close();
3771</div>
3772
caryclark@google.comd4c8e1e2013-03-05 14:13:13 +00003773<div id="cubicOp36u">
3774 path.setFillType(SkPath::kWinding_FillType);
3775 path.moveTo(0,1);
3776 path.cubicTo(1,6, 2,0, 5,1);
3777 path.close();
3778 pathB.setFillType(SkPath::kWinding_FillType);
3779 pathB.moveTo(0,2);
3780 pathB.cubicTo(1,5, 1,0, 6,1);
3781 pathB.close();
3782</div>
3783
caryclark@google.com1304bb22013-03-13 20:29:41 +00003784<div id="cubicOp37d">
3785 path.setFillType(SkPath::kWinding_FillType);
3786 path.moveTo(0,1);
3787 path.cubicTo(2,6, 6,1, 4,3);
3788 path.close();
3789 pathB.setFillType(SkPath::kWinding_FillType);
3790 pathB.moveTo(1,6);
3791 pathB.cubicTo(3,4, 1,0, 6,2);
3792 pathB.close();
3793</div>
3794
3795<div id="cubicOp38d">
3796 path.setFillType(SkPath::kWinding_FillType);
3797 path.moveTo(0,1);
3798 path.cubicTo(0,6, 3,2, 4,1);
3799 path.close();
3800 pathB.setFillType(SkPath::kWinding_FillType);
3801 pathB.moveTo(2,3);
3802 pathB.cubicTo(1,4, 1,0, 6,0);
3803 pathB.close();
3804</div>
3805
3806<div id="cubicOp39d">
3807 path.setFillType(SkPath::kWinding_FillType);
3808 path.moveTo(0,1);
3809 path.cubicTo(2,3, 5,1, 4,3);
3810 path.close();
3811 pathB.setFillType(SkPath::kWinding_FillType);
3812 pathB.moveTo(1,5);
3813 pathB.cubicTo(3,4, 1,0, 3,2);
3814 pathB.close();
3815</div>
3816
3817<div id="cubicOp40d">
3818 path.setFillType(SkPath::kWinding_FillType);
3819 path.moveTo(0,1);
3820 path.cubicTo(1,5, 3,2, 4,2);
3821 path.close();
3822 pathB.setFillType(SkPath::kWinding_FillType);
3823 pathB.moveTo(2,3);
3824 pathB.cubicTo(2,4, 1,0, 5,1);
3825 pathB.close();
3826</div>
3827
3828<div id="cubicOp41i">
3829 path.setFillType(SkPath::kWinding_FillType);
3830 path.moveTo(0,1);
3831 path.cubicTo(2,6, 4,3, 6,4);
3832 path.close();
3833 pathB.setFillType(SkPath::kWinding_FillType);
3834 pathB.moveTo(3,4);
3835 pathB.cubicTo(4,6, 1,0, 6,2);
3836 pathB.close();
3837</div>
3838
3839<div id="cubicOp42d">
3840 path.setFillType(SkPath::kWinding_FillType);
3841 path.moveTo(0,1);
3842 path.cubicTo(1,2, 6,5, 5,4);
3843 path.close();
3844 pathB.setFillType(SkPath::kWinding_FillType);
3845 pathB.moveTo(5,6);
3846 pathB.cubicTo(4,5, 1,0, 2,1);
3847 pathB.close();
3848</div>
3849
3850<div id="cubicOp43d">
3851 path.setFillType(SkPath::kWinding_FillType);
3852 path.moveTo(0,2);
3853 path.cubicTo(1,2, 4,0, 3,1);
3854 path.close();
3855 pathB.setFillType(SkPath::kWinding_FillType);
3856 pathB.moveTo(0,4);
3857 pathB.cubicTo(1,3, 2,0, 2,1);
3858 pathB.close();
3859</div>
3860
3861<div id="cubicOp44d">
3862 path.setFillType(SkPath::kWinding_FillType);
3863 path.moveTo(0,2);
3864 path.cubicTo(3,6, 4,0, 3,2);
3865 path.close();
3866 pathB.setFillType(SkPath::kWinding_FillType);
3867 pathB.moveTo(0,4);
3868 pathB.cubicTo(2,3, 2,0, 6,3);
3869 pathB.close();
3870</div>
3871
3872<div id="cubicOp45d">
3873 path.setFillType(SkPath::kWinding_FillType);
3874 path.moveTo(0,2);
3875 path.cubicTo(2,4, 4,0, 3,2);
3876 path.close();
3877 pathB.setFillType(SkPath::kWinding_FillType);
3878 pathB.moveTo(0,4);
3879 pathB.cubicTo(2,3, 2,0, 4,2);
3880 pathB.close();
3881</div>
3882
3883<div id="cubicOp46d">
3884 path.setFillType(SkPath::kWinding_FillType);
3885 path.moveTo(0,2);
3886 path.cubicTo(3,5, 5,0, 4,2);
3887 path.close();
3888 pathB.setFillType(SkPath::kWinding_FillType);
3889 pathB.moveTo(0,5);
3890 pathB.cubicTo(2,4, 2,0, 5,3);
3891 pathB.close();
3892</div>
3893
3894<div id="cubicOp47d">
3895 path.setFillType(SkPath::kWinding_FillType);
3896 path.moveTo(0,1);
3897 path.cubicTo(1,6, 6,2, 5,4);
3898 path.close();
3899 pathB.setFillType(SkPath::kWinding_FillType);
3900 pathB.moveTo(2,6);
3901 pathB.cubicTo(4,5, 1,0, 6,1);
3902 pathB.close();
3903</div>
3904
3905<div id="cubicOp48d">
3906 path.setFillType(SkPath::kWinding_FillType);
3907 path.moveTo(0,2);
3908 path.cubicTo(2,3, 5,1, 3,2);
3909 path.close();
3910 pathB.setFillType(SkPath::kWinding_FillType);
3911 pathB.moveTo(1,5);
3912 pathB.cubicTo(2,3, 2,0, 3,2);
3913 pathB.close();
3914</div>
3915
3916<div id="cubicOp49d">
3917 path.setFillType(SkPath::kWinding_FillType);
3918 path.moveTo(0,2);
3919 path.cubicTo(1,5, 3,2, 4,1);
3920 path.close();
3921 pathB.setFillType(SkPath::kWinding_FillType);
3922 pathB.moveTo(2,3);
3923 pathB.cubicTo(1,4, 2,0, 5,1);
3924 pathB.close();
3925</div>
3926
3927<div id="cubicOp50d">
3928 path.setFillType(SkPath::kWinding_FillType);
3929 path.moveTo(0,3);
3930 path.cubicTo(1,6, 5,0, 5,1);
3931 path.close();
3932 pathB.setFillType(SkPath::kWinding_FillType);
3933 pathB.moveTo(0,5);
3934 pathB.cubicTo(1,5, 3,0, 6,1);
3935 pathB.close();
3936</div>
3937
3938<div id="cubicOp51d">
3939 path.setFillType(SkPath::kWinding_FillType);
3940 path.moveTo(0,3);
3941 path.cubicTo(1,2, 4,1, 6,0);
3942 path.close();
3943 pathB.setFillType(SkPath::kWinding_FillType);
3944 pathB.moveTo(1,4);
3945 pathB.cubicTo(0,6, 3,0, 2,1);
3946 pathB.close();
3947</div>
3948
3949<div id="cubicOp52d">
3950 path.setFillType(SkPath::kWinding_FillType);
3951 path.moveTo(0,2);
3952 path.cubicTo(1,2, 5,4, 4,3);
3953 path.close();
3954 pathB.setFillType(SkPath::kWinding_FillType);
3955 pathB.moveTo(4,5);
3956 pathB.cubicTo(3,4, 2,0, 2,1);
3957 pathB.close();
3958</div>
3959
3960<div id="cubicOp53d">
3961 path.setFillType(SkPath::kWinding_FillType);
3962 path.moveTo(0,3);
3963 path.cubicTo(1,2, 5,3, 2,1);
3964 path.close();
3965 pathB.setFillType(SkPath::kWinding_FillType);
3966 pathB.moveTo(3,5);
3967 pathB.cubicTo(1,2, 3,0, 2,1);
3968 pathB.close();
3969</div>
3970
3971<div id="cubicOp54d">
3972 path.setFillType(SkPath::kWinding_FillType);
3973 path.moveTo(0,4);
3974 path.cubicTo(1,3, 5,4, 4,2);
3975 path.close();
3976 pathB.setFillType(SkPath::kWinding_FillType);
3977 pathB.moveTo(4,5);
3978 pathB.cubicTo(2,4, 4,0, 3,1);
3979 pathB.close();
3980</div>
3981
3982<div id="cubicOp55d">
3983 path.setFillType(SkPath::kWinding_FillType);
3984 path.moveTo(0,5);
3985 path.cubicTo(1,3, 3,2, 5,0);
3986 path.close();
3987 pathB.setFillType(SkPath::kWinding_FillType);
3988 pathB.moveTo(2,3);
3989 pathB.cubicTo(0,5, 5,0, 3,1);
3990 pathB.close();
3991</div>
3992
3993<div id="cubicOp56d">
3994 path.setFillType(SkPath::kWinding_FillType);
3995 path.moveTo(0,1);
3996 path.cubicTo(2,6, 5,0, 2,1);
3997 path.close();
3998 pathB.setFillType(SkPath::kWinding_FillType);
3999 pathB.moveTo(0,5);
4000 pathB.cubicTo(1,2, 1,0, 6,2);
4001 pathB.close();
4002</div>
4003
4004<div id="cubicOp57d">
4005 path.setFillType(SkPath::kWinding_FillType);
4006 path.moveTo(0,5);
4007 path.cubicTo(0,5, 5,4, 6,4);
4008 path.close();
4009 pathB.setFillType(SkPath::kWinding_FillType);
4010 pathB.moveTo(4,5);
4011 pathB.cubicTo(4,6, 5,0, 5,0);
4012 pathB.close();
4013</div>
4014
4015<div id="cubicOp58d">
4016 path.setFillType(SkPath::kWinding_FillType);
4017 path.moveTo(0,5);
4018 path.cubicTo(3,4, 6,5, 5,3);
4019 path.close();
4020 pathB.setFillType(SkPath::kWinding_FillType);
4021 pathB.moveTo(5,6);
4022 pathB.cubicTo(3,5, 5,0, 4,3);
4023 pathB.close();
4024</div>
4025
4026<div id="cubicOp59d">
4027 path.setFillType(SkPath::kWinding_FillType);
4028 path.moveTo(0,1);
4029 path.cubicTo(5,6, 4,0, 4,1);
4030 path.close();
4031 pathB.setFillType(SkPath::kWinding_FillType);
4032 pathB.moveTo(0,4);
4033 pathB.cubicTo(1,4, 1,0, 6,5);
4034 pathB.close();
4035</div>
4036
4037<div id="cubicOp60d">
4038 path.setFillType(SkPath::kWinding_FillType);
4039 path.moveTo(0,2);
4040 path.cubicTo(4,6, 6,0, 5,2);
4041 path.close();
4042 pathB.setFillType(SkPath::kWinding_FillType);
4043 pathB.moveTo(0,6);
4044 pathB.cubicTo(2,5, 2,0, 6,4);
4045 pathB.close();
4046</div>
4047
4048<div id="cubicOp61d">
4049 path.setFillType(SkPath::kWinding_FillType);
4050 path.moveTo(1,2);
4051 path.cubicTo(0,5, 3,2, 6,1);
4052 path.close();
4053 pathB.setFillType(SkPath::kWinding_FillType);
4054 pathB.moveTo(2,3);
4055 pathB.cubicTo(1,6, 2,1, 5,0);
4056 pathB.close();
4057</div>
4058
caryclark@google.com996d78b2013-03-14 16:24:30 +00004059<div id="cubicOp62d">
4060 path.setFillType(SkPath::kWinding_FillType);
4061 path.moveTo(1,3);
4062 path.cubicTo(5,6, 5,3, 5,4);
4063 path.close();
4064 pathB.setFillType(SkPath::kWinding_FillType);
4065 pathB.moveTo(3,5);
4066 pathB.cubicTo(4,5, 3,1, 6,5);
4067 pathB.close();
4068</div>
4069
4070<div id="cubicOp63d">
4071 path.setFillType(SkPath::kWinding_FillType);
4072 path.moveTo(2,3);
4073 path.cubicTo(0,4, 3,2, 5,3);
4074 path.close();
4075 pathB.setFillType(SkPath::kWinding_FillType);
4076 pathB.moveTo(2,3);
4077 pathB.cubicTo(3,5, 3,2, 4,0);
4078 pathB.close();
4079</div>
4080
caryclark@google.comad65a3e2013-04-15 19:13:59 +00004081<div id="testQuadratic94">
4082 SkPath path;
4083 path.moveTo(0, 0);
4084 path.lineTo(8, 8);
4085 path.quadTo(8, 4, 4, 4);
4086 path.quadTo(4, 0, 0, 0);
4087 path.close();
4088 testSimplify(reporter, path);
4089</div>
4090
4091<div id="testQuadratic95">
4092 SkPath path;
4093 path.moveTo(8, 8);
4094 path.lineTo(0, 0);
4095 path.quadTo(4, 0, 4, 4);
4096 path.quadTo(8, 4, 8, 8);
4097 path.close();
4098 testSimplify(reporter, path);
4099</div>
4100
4101<div id="testQuadratic96">
4102 SkPath path;
4103 path.moveTo(8, 0);
4104 path.lineTo(0, 8);
4105 path.quadTo(0, 4, 4, 4);
4106 path.quadTo(4, 0, 8, 0);
4107 path.close();
4108 testSimplify(reporter, path);
4109</div>
4110
4111<div id="testQuadratic97">
4112 SkPath path;
4113 path.moveTo(0, 8);
4114 path.lineTo(8, 0);
4115 path.quadTo(4, 0, 4, 4);
4116 path.quadTo(0, 4, 0, 8);
4117 path.close();
4118 testSimplify(reporter, path);
4119</div>
4120
caryclark@google.com752b60e2012-03-22 21:11:17 +00004121</div>
4122
4123<script type="text/javascript">
4124
4125var testDivs = [
caryclark@google.comad65a3e2013-04-15 19:13:59 +00004126 testQuadratic97,
4127 testQuadratic96,
4128 testQuadratic95,
4129 testQuadratic94,
caryclark@google.comebf95ba2013-04-08 11:53:42 +00004130 testLine16,
caryclark@google.com996d78b2013-03-14 16:24:30 +00004131 cubicOp63d,
4132 cubicOp62d,
caryclark@google.com1304bb22013-03-13 20:29:41 +00004133 cubicOp61d,
4134 cubicOp60d,
4135 cubicOp59d,
4136 cubicOp58d,
4137 cubicOp57d,
4138 cubicOp56d,
4139 cubicOp55d,
4140 cubicOp54d,
4141 cubicOp53d,
4142 cubicOp52d,
4143 cubicOp51d,
4144 cubicOp50d,
4145 cubicOp49d,
4146 cubicOp48d,
4147 cubicOp47d,
4148 cubicOp46d,
4149 cubicOp45d,
4150 cubicOp44d,
4151 cubicOp43d,
4152 cubicOp42d,
4153 cubicOp41i,
4154 cubicOp40d,
4155 cubicOp39d,
4156 cubicOp38d,
4157 cubicOp37d,
caryclark@google.comd4c8e1e2013-03-05 14:13:13 +00004158 cubicOp36u,
caryclark@google.com4aaaaea2013-02-28 16:12:39 +00004159 cubicOp35d,
4160 cubicOp34d,
4161 cubicOp33i,
4162 cubicOp32d,
caryclark@google.com7ff5c842013-02-26 15:56:05 +00004163 cubicOp31d,
caryclark@google.comc83c70e2013-02-22 21:50:07 +00004164 cubicOp30d,
4165 cubicOp29d,
4166 cubicOp28u,
4167 cubicOp27d,
4168 cubicOp26d,
4169 cubicOp25i,
caryclark@google.com5e0500f2013-02-20 12:51:37 +00004170 cubicOp24d,
4171 cubicOp23d,
caryclark@google.com47d73da2013-02-17 01:41:25 +00004172 cubicOp18d,
caryclark@google.com47d73da2013-02-17 01:41:25 +00004173 cubicOp15d,
caryclark@google.com45a8fc62013-02-14 15:29:11 +00004174 cubicOp14d,
4175 cubicOp13d,
caryclark@google.com45a8fc62013-02-14 15:29:11 +00004176 cubicOp11d,
caryclark@google.com45a8fc62013-02-14 15:29:11 +00004177 cubicOp9d,
4178 cubicOp8d,
caryclark@google.combeda3892013-02-07 13:13:41 +00004179 cubicOp7d,
4180 cubicOp6d,
4181 cubicOp5d,
caryclark@google.comc83c70e2013-02-22 21:50:07 +00004182 cubicOp10d,
4183 cubicOp22d,
4184 cubicOp21d,
4185 cubicOp20d,
4186 cubicOp19i,
4187 cubicOp17d,
4188 cubicOp16d,
4189 cubicOp12d,
4190 cubicOp1i,
4191 lineOp9d,
4192 quadOp9d,
caryclark@google.combeda3892013-02-07 13:13:41 +00004193 cubicOp4d,
4194 cubicOp3d,
4195 cubicOp2d,
caryclark@google.comaa358312013-01-29 20:28:49 +00004196 cubicOp1d,
caryclark@google.com85ec74c2013-01-28 19:25:51 +00004197 testQuadratic93,
caryclark@google.com73ca6242013-01-17 21:02:47 +00004198 testCubic1,
4199 testQuadralateral1,
caryclark@google.com8f9f4682013-01-03 21:18:16 +00004200 testLine85,
4201 testLine84x,
4202 testLine83,
4203 testLine82h,
4204 testLine82g,
4205 testLine82f,
4206 testLine82e,
4207 testLine82d,
4208 testLine82c,
4209 testLine82b,
4210 testLine82a,
4211 testLine82,
4212 testQuadratic92x,
4213 testQuadratic91,
4214 testQuadratic90x,
4215 testQuadratic89x,
caryclark@google.com10227bf2012-12-28 22:10:41 +00004216 testQuadratic88,
4217 testQuadratic87,
4218 testQuadratic86,
4219 testQuadratic85,
4220 testQuadratic84,
caryclark@google.com3586ece2012-12-27 18:46:58 +00004221 testQuadratic83,
caryclark@google.comdb0b3e02012-12-21 21:34:36 +00004222 testQuadratic82,
4223 testQuadratic81,
4224 testQuadratic80,
4225 testQuadratic79,
4226 testQuadratic78,
4227 testQuadratic77,
4228 testQuadratic76,
caryclark@google.come7bd5f42012-12-13 19:47:53 +00004229 testQuadratic75,
4230 testQuadratic74,
4231 testQuadratic73,
4232 testQuadratic72,
4233 testQuadratic71,
4234 testQuadratic70x,
4235 testQuadratic69,
4236 testQuadratic68,
4237 testQuadratic67x,
4238 testQuadratic66,
4239 testQuadratic65,
4240 testQuadratic64,
4241 testQuadratic63,
4242 testLine1a,
4243 testQuadratic62x,
caryclark@google.com7fce0de2012-11-29 14:31:50 +00004244 testLine81,
caryclark@google.com0b7da432012-10-31 19:00:20 +00004245 testQuadratic61,
4246 testQuadratic60,
caryclark@google.comdb0b3e02012-12-21 21:34:36 +00004247 testQuadratic59,
caryclark@google.com0b7da432012-10-31 19:00:20 +00004248 testQuadratic59o,
4249 testQuadratic59s,
caryclark@google.comf839c032012-10-26 21:03:50 +00004250 testQuadratic58o,
4251 testQuadratic58a,
4252 testQuadratic58s,
4253 testQuadratic57o,
4254 testQuadratic57s,
4255 testQuadratic56o,
4256 testQuadratic56s,
4257 testQuadratic55o,
4258 testQuadratic55s,
4259 testQuadratic54,
4260 testQuadratic53o,
4261 testQuadratic53s,
4262 testQuadratic52sa,
4263 testQuadratic52sb,
4264 testQuadratic52sc,
caryclark@google.com185c7c42012-10-19 18:26:24 +00004265 testQuadratic52o,
4266 testQuadratic52s,
caryclark@google.comfb51afb2012-10-19 15:54:16 +00004267 testQuadratic51,
4268 testQuadratic50o,
4269 testQuadratic50s,
4270 testQuadratic49s,
4271 testQuadratic48o,
4272 testQuadratic48s,
caryclark@google.comc91dfe42012-10-16 12:06:27 +00004273 testQuadratic47o,
4274 testQuadratic47s,
caryclark@google.coma461ff02012-10-11 12:54:23 +00004275 testQuadratic46o,
4276 testQuadratic46s,
4277 testQuadratic45o,
4278 testQuadratic45s,
caryclark@google.com6aea33f2012-10-09 14:11:58 +00004279 testQuadratic44o,
4280 testQuadratic44s,
4281 testQuadratic43o,
4282 testQuadratic43s,
4283 testQuadratic42o,
4284 testQuadratic42s,
4285 testQuadratic41o,
4286 testQuadratic41s,
4287 testQuadratic40xb,
4288 testQuadratic40xa,
4289 testQuadratic40x,
caryclark@google.comd1688742012-09-18 20:08:37 +00004290 testQuadratic39,
4291 testQuadratic39a,
4292 testQuadratic38,
4293 testQuadratic37,
4294 testQuadratic36,
4295 testQuadratic35,
4296 testQuadratic34,
4297 testQuadratic33,
4298 testQuadratic32,
4299 testQuadratic31,
4300 testQuadratic30,
4301 testQuadratic29,
caryclark@google.com235f56a2012-09-14 14:19:30 +00004302 testQuadratic28,
4303 testQuadratic27,
4304 testQuadratic26,
4305 testQuadratic25,
4306 testQuadratic24,
4307 testQuadratic23,
4308 testQuadratic22,
4309 testQuadratic21,
caryclark@google.com32546db2012-08-31 20:55:07 +00004310 testQuadratic20,
caryclark@google.coma7e483d2012-08-28 20:44:43 +00004311 testQuadratic19,
caryclark@google.com3350c3c2012-08-24 15:24:36 +00004312 testQuadratic18,
4313 testQuadratic17x,
4314 testQuadratic16b,
4315 testQuadratic16a,
4316 testQuadratic15,
caryclark@google.comc899ad92012-08-23 15:24:42 +00004317 testQuadratic14,
4318 testQuadratic13b,
4319 testQuadratic13a,
4320 testQuadratic12,
4321 testQuadratic11b,
4322 testQuadratic11a,
4323 testQuadratic10b,
4324 testQuadratic10a,
4325 testQuadratic9a,
4326 testQuadratic9,
4327 testQuadratic8,
4328 testQuadratic7,
4329 testQuadratic6,
4330 testQuadratic5,
4331 testQuadratic4x,
caryclark@google.com03f97062012-08-21 13:13:52 +00004332 testQuadratic3,
caryclark@google.com24bec792012-08-20 12:43:57 +00004333 testQuadratic2,
4334 testQuadratic1,
4335 testLine4x,
4336 testLine3x,
4337 testLine2x,
4338 testLine1x,
4339 testQuadralateral9,
4340 testQuadralateral8,
4341 testQuadralateral7,
4342 testFauxQuadralateral6d,
4343 testFauxQuadralateral6c,
4344 testFauxQuadralateral6b,
4345 testFauxQuadralateral6a,
4346 testFauxQuadralateral6,
4347 testQuadralateral6a,
caryclark@google.com59823f72012-08-09 18:17:47 +00004348 testQuadralateral6,
4349 testQuadralateral5,
4350 testNondegenerate4,
4351 testNondegenerate3,
4352 testNondegenerate2,
4353 testNondegenerate1,
4354 testDegenerate4,
4355 testDegenerate3,
4356 testDegenerate2,
4357 testDegenerate1,
caryclark@google.com2ddff932012-08-07 21:25:27 +00004358 testLine79,
4359 testLine78,
4360 testLine77,
4361 testLine76,
4362 testLine75,
caryclark@google.com0c803d02012-08-06 11:15:47 +00004363 testLine74,
caryclark@google.com200c2112012-08-03 15:05:04 +00004364 testLine73,
4365 testLine72,
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004366 testLine71,
4367 testLine70,
4368 testLine69,
4369 testLine68f,
4370 testLine68e,
4371 testLine68d,
4372 testLine68c,
4373 testLine68b,
4374 testLine68a,
4375 testLine67,
caryclark@google.com27c449a2012-07-27 18:26:38 +00004376 testLine66,
4377 testLine65,
4378 testLine64,
4379 testLine63,
4380 testLine62,
4381 testLine61,
4382 testLine60,
caryclark@google.comcc905052012-07-25 20:59:42 +00004383 testLine59,
4384 testLine58,
caryclark@google.com18063442012-07-25 12:05:18 +00004385 testLine57,
4386 testLine56,
caryclark@google.come21cb182012-07-23 21:26:31 +00004387 testLine55,
4388 testLine54,
4389 testLine53,
4390 testLine52,
caryclark@google.com47580692012-07-23 12:14:49 +00004391 testLine51,
4392 testLine50,
4393 testLine49,
4394 testLine48,
4395 testLine47,
4396 testLine46,
4397 testLine45,
4398 testLine44,
4399 testLine43,
4400 testLine42,
4401 testLine41,
4402 testLine40,
4403 testLine39,
4404 testLine38,
4405 testLine37,
caryclark@google.com0e08a192012-07-13 21:07:52 +00004406 testLine36,
caryclark@google.com210acaf2012-07-12 21:05:13 +00004407 testLine35,
4408 testLine34,
caryclark@google.com9764cc62012-07-12 19:29:45 +00004409 testLine33,
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004410 testLine32,
4411 testLine31,
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004412 testLine30,
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004413 testLine29,
4414 testLine28,
caryclark@google.com47580692012-07-23 12:14:49 +00004415 testLine24,
caryclark@google.comcc905052012-07-25 20:59:42 +00004416 testLine22,
caryclark@google.com47580692012-07-23 12:14:49 +00004417 testLine19,
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004418 testLine17,
caryclark@google.comebf95ba2013-04-08 11:53:42 +00004419 testLine16,
caryclark@google.come21cb182012-07-23 21:26:31 +00004420 testLine13,
4421 testLine12,
caryclark@google.com47580692012-07-23 12:14:49 +00004422 testLine9,
caryclark@google.comcc905052012-07-25 20:59:42 +00004423 testLine7b,
caryclark@google.com47580692012-07-23 12:14:49 +00004424 testLine7,
caryclark@google.com45a8fc62013-02-14 15:29:11 +00004425 testLine6,
4426 testLine5,
caryclark@google.com8dcf1142012-07-02 20:27:02 +00004427 testSimplifyQuadratic21,
4428 testSimplifyQuadratic20,
4429 testSimplifyQuadratic19,
caryclark@google.comb45a1b42012-05-18 20:50:33 +00004430 testSimplifyQuadratic18,
caryclark@google.comfa0588f2012-04-26 21:01:06 +00004431 testSimplifyQuadratic17,
4432 testSimplifyQuadratic16,
4433 testSimplifyQuadratic15,
4434 testSimplifyQuadratic14,
4435 testSimplifyQuadratic13,
4436 testSimplifyQuadratic12,
4437 testSimplifyQuadratic11,
4438 testSimplifyQuadratic10,
4439 testSimplifyQuadratic9,
4440 testSimplifyQuadratic8,
4441 testSimplifyQuadratic7,
4442 testSimplifyQuadratic6,
4443 testSimplifyQuadratic5,
4444 testSimplifyQuadratic4,
4445 testSimplifyQuadratic3,
4446 testSimplifyQuadratic2,
4447 testSimplifyQuadratic1,
caryclark@google.com752b60e2012-03-22 21:11:17 +00004448];
4449
4450var scale, columns, rows, xStart, yStart;
4451
4452var ticks = 0.1;
4453var at_x = 13 + 0.5;
4454var at_y = 13 + 0.5;
caryclark@google.com2ddff932012-08-07 21:25:27 +00004455var decimal_places = 0; // make this 3 to show more precision
caryclark@google.com752b60e2012-03-22 21:11:17 +00004456
4457var tests = [];
caryclark@google.com0e08a192012-07-13 21:07:52 +00004458var testTitles = [];
caryclark@google.com752b60e2012-03-22 21:11:17 +00004459var testIndex = 0;
caryclark@google.com24bec792012-08-20 12:43:57 +00004460var hasXor = false;
caryclark@google.com6aea33f2012-10-09 14:11:58 +00004461var draw_labels = true;
caryclark@google.com752b60e2012-03-22 21:11:17 +00004462
4463var ctx;
4464
caryclark@google.com0e08a192012-07-13 21:07:52 +00004465function parse(test, title) {
caryclark@google.com752b60e2012-03-22 21:11:17 +00004466 var contours = [];
4467 var contourStrs = test.split("path.close();");
caryclark@google.comd88e0892012-03-27 13:23:51 +00004468 var pattern = /-?\d+\.*\d*/g;
caryclark@google.com24bec792012-08-20 12:43:57 +00004469 hasXor = test.split("kEvenOdd_FillType").length > 1;
caryclark@google.com752b60e2012-03-22 21:11:17 +00004470 for (var c in contourStrs) {
caryclark@google.comfb173422012-04-10 18:28:55 +00004471 var contour = contourStrs[c];
4472 var verbStrs = contour.split("path");
4473 var verbs = [];
4474 for (var v in verbStrs) {
4475 var verbStr = verbStrs[v];
4476 var points = verbStr.match(pattern);
4477 var pts = [];
4478 for (var wd in points) {
4479 var num = parseFloat(points[wd]);
4480 if (isNaN(num)) continue;
4481 pts.push(num);
4482 }
4483 if (pts.length > 0)
4484 verbs.push(pts);
caryclark@google.com752b60e2012-03-22 21:11:17 +00004485 }
caryclark@google.comfa0588f2012-04-26 21:01:06 +00004486 if (verbs.length > 0) {
4487 var lastIndex = verbs.length - 1;
4488 var lastVerb = verbs[lastIndex];
4489 var lastLen = lastVerb.length;
4490 if (verbs[0][0] != lastVerb[lastLen - 2] && verbs[0][1] != lastVerb[lastLen - 1]) {
4491 var lastPts = [];
4492 lastPts.push(verbs[0][0]);
4493 lastPts.push(verbs[0][1]);
4494 verbs.push(lastPts);
4495 }
caryclark@google.comfb173422012-04-10 18:28:55 +00004496 contours.push(verbs);
caryclark@google.comfa0588f2012-04-26 21:01:06 +00004497 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004498 }
caryclark@google.com0e08a192012-07-13 21:07:52 +00004499 if (contours.length > 0) {
caryclark@google.comfb173422012-04-10 18:28:55 +00004500 tests.push(contours);
caryclark@google.com0e08a192012-07-13 21:07:52 +00004501 testTitles.push(title);
4502 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004503}
4504
caryclark@google.com0e08a192012-07-13 21:07:52 +00004505function parseRect(test, title) {
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004506 var contours = [];
4507 var rectStrs = test.split("path.addRect");
4508 var pattern = /-?\d+\.*\d*/g;
caryclark@google.com24bec792012-08-20 12:43:57 +00004509 hasXor = test.split("kEvenOdd_FillType").length > 1;
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004510 for (var r in rectStrs) {
4511 var rect = rectStrs[r];
4512 var sideStrs = rect.match(pattern);
caryclark@google.com7fce0de2012-11-29 14:31:50 +00004513 var ccw = rect.split("kCCW_Direction").length > 1;
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004514 var sides = [];
4515 for (var wd in sideStrs) {
4516 var num = parseFloat(sideStrs[wd]);
4517 if (isNaN(num)) continue;
4518 sides.push(num);
4519 }
4520 if (sides.length == 0)
4521 continue;
4522 var verbs = [];
4523 var topLeft = [];
4524 topLeft.push(sides[0]); topLeft.push(sides[1]);
4525 var topRight = [];
4526 topRight.push(sides[2]); topRight.push(sides[1]);
4527 var botLeft = [];
4528 botLeft.push(sides[0]); botLeft.push(sides[3]);
4529 var botRight = [];
4530 botRight.push(sides[2]); botRight.push(sides[3]);
4531 verbs.push(topLeft);
caryclark@google.com7fce0de2012-11-29 14:31:50 +00004532 if (!ccw) {
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004533 verbs.push(topRight);
4534 verbs.push(botRight);
4535 verbs.push(botLeft);
4536 } else {
4537 verbs.push(botLeft);
4538 verbs.push(botRight);
4539 verbs.push(topRight);
4540 }
4541 verbs.push(topLeft);
4542 contours.push(verbs);
4543 }
caryclark@google.com0e08a192012-07-13 21:07:52 +00004544 if (contours.length > 0) {
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004545 tests.push(contours);
caryclark@google.com0e08a192012-07-13 21:07:52 +00004546 testTitles.push(title);
4547 }
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004548}
4549
caryclark@google.com752b60e2012-03-22 21:11:17 +00004550function init(test) {
4551 var canvas = document.getElementById('canvas');
4552 if (!canvas.getContext) return;
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004553 canvas.width = window.innerWidth - at_x;
4554 canvas.height = window.innerHeight - at_y;
caryclark@google.com752b60e2012-03-22 21:11:17 +00004555 ctx = canvas.getContext('2d');
4556 var xmin = Infinity;
4557 var xmax = -Infinity;
4558 var ymin = Infinity;
4559 var ymax = -Infinity;
caryclark@google.comfb173422012-04-10 18:28:55 +00004560 for (var contours in test) {
4561 var contour = test[contours];
4562 for (var verbs in contour) {
4563 var verb = contour[verbs];
4564 var last = verb.length;
caryclark@google.comb45a1b42012-05-18 20:50:33 +00004565 for (var idx = 0; idx < last; idx += 2) {
4566 xmin = Math.min(xmin, verb[idx]);
4567 xmax = Math.max(xmax, verb[idx]);
4568 ymin = Math.min(ymin, verb[idx + 1]);
4569 ymax = Math.max(ymax, verb[idx + 1]);
4570 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004571 }
4572 }
4573 var subscale = 1;
4574 while ((xmax - xmin) * subscale < 0.1 && (ymax - ymin) * subscale < 0.1) {
4575 subscale *= 10;
4576 }
4577 columns = Math.ceil(xmax) - Math.floor(xmin) + 1;
4578 rows = Math.ceil(ymax) - Math.floor(ymin) + 1;
4579 xStart = Math.floor(xmin);
4580 yStart = Math.floor(ymin);
4581 var hscale = ctx.canvas.width / columns / ticks;
4582 var vscale = ctx.canvas.height / rows / ticks;
4583 scale = Math.floor(Math.min(hscale, vscale)) * subscale;
4584}
4585
4586function drawPoint(px, py, xoffset, yoffset, unit) {
caryclark@google.com2ddff932012-08-07 21:25:27 +00004587 var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
caryclark@google.com752b60e2012-03-22 21:11:17 +00004588 var _px = px * unit + xoffset;
4589 var _py = py * unit + yoffset;
4590 ctx.beginPath();
4591 ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
4592 ctx.closePath();
4593 ctx.fill();
4594 ctx.fillText(label, _px + 5, _py);
4595}
4596
caryclark@google.com0e08a192012-07-13 21:07:52 +00004597function draw(test, title, _at_x, _at_y, scale) {
4598 ctx.fillStyle = "rgba(0,0,0, 0.1)";
4599 ctx.font = "normal 50px Arial";
4600 ctx.fillText(title, 50, 50);
4601 ctx.font = "normal 10px Arial";
4602
caryclark@google.com752b60e2012-03-22 21:11:17 +00004603 var unit = scale * ticks;
4604 ctx.lineWidth = 1;
4605 var i;
4606 for (i = 0; i <= rows * ticks; ++i) {
4607 ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
4608 ctx.beginPath();
4609 ctx.moveTo(_at_x + 0, _at_y + i * scale);
4610 ctx.lineTo(_at_x + unit * columns, _at_y + i * scale);
4611 ctx.stroke();
4612 }
4613 for (i = 0; i <= columns * ticks; ++i) {
4614 ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
4615 ctx.beginPath();
4616 ctx.moveTo(_at_x + i * scale, _at_y + 0);
4617 ctx.lineTo(_at_x + i * scale, _at_y + unit * rows);
4618 ctx.stroke();
4619 }
4620
4621 var xoffset = xStart * -unit + _at_x;
4622 var yoffset = yStart * -unit + _at_y;
4623
4624 ctx.fillStyle = "rgb(40,80,60)"
4625 for (i = 0; i <= columns; i += (1 / ticks))
4626 {
4627 num = (xoffset - _at_x) / -unit + i;
4628 ctx.fillText(num.toFixed(0), i * unit + _at_y - 5, 10);
4629 }
4630 for (i = 0; i <= rows; i += (1 / ticks))
4631 {
4632 num = (yoffset - _at_x) / -unit + i;
4633 ctx.fillText(num.toFixed(0), 0, i * unit + _at_y + 0);
4634 }
caryclark@google.com32546db2012-08-31 20:55:07 +00004635
caryclark@google.com752b60e2012-03-22 21:11:17 +00004636 ctx.strokeStyle = "red";
caryclark@google.comfb173422012-04-10 18:28:55 +00004637 var contours, verbs, pts;
caryclark@google.com8dcf1142012-07-02 20:27:02 +00004638 ctx.beginPath();
caryclark@google.comfb173422012-04-10 18:28:55 +00004639 for (contours in test) {
4640 var contour = test[contours];
4641 if (contours == 2) ctx.strokeStyle = "blue";
caryclark@google.comfb173422012-04-10 18:28:55 +00004642 var first = true;
4643 for (verbs in contour) {
4644 var verb = contour[verbs];
4645 switch (verb.length) {
4646 case 2:
4647 if (first) {
4648 ctx.moveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit);
4649 first = false;
4650 } else
4651 ctx.lineTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit);
4652 break;
4653 case 4:
4654 ctx.quadraticCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit,
4655 xoffset + verb[2] * unit, yoffset + verb[3] * unit);
4656 break;
4657 case 6:
4658 ctx.bezierCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit,
4659 xoffset + verb[2] * unit, yoffset + verb[3] * unit,
4660 xoffset + verb[4] * unit, yoffset + verb[5] * unit);
4661 break;
4662 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004663 }
caryclark@google.com8dcf1142012-07-02 20:27:02 +00004664 ctx.closePath();
caryclark@google.com752b60e2012-03-22 21:11:17 +00004665 }
caryclark@google.com73ca6242013-01-17 21:02:47 +00004666 // uncomment if ever part of the standard
4667 // ctx.fillRule=hasXor ? evenodd : nonzero;
caryclark@google.com8dcf1142012-07-02 20:27:02 +00004668 ctx.stroke();
4669 ctx.fillStyle="rgba(192,192,255, 0.3)";
4670 ctx.fill();
caryclark@google.com752b60e2012-03-22 21:11:17 +00004671
caryclark@google.com6aea33f2012-10-09 14:11:58 +00004672 if (!draw_labels) {
4673 return;
4674 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004675 ctx.fillStyle="blue";
caryclark@google.comfb173422012-04-10 18:28:55 +00004676 for (contours in test) {
4677 var contour = test[contours];
4678 for (verbs in contour) {
4679 var verb = contour[verbs];
4680 for (i = 0; i < verb.length; i += 2) {
4681 x = verb[i];
4682 y = verb[i + 1];
4683 drawPoint(x, y, xoffset, yoffset, unit);
4684 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004685 }
4686 }
4687}
4688
4689var mouseX = Infinity, mouseY;
4690
4691function calcXY() {
4692 var e = window.event;
4693 var tgt = e.target || e.srcElement;
4694 var left = tgt.offsetLeft;
4695 var top = tgt.offsetTop;
4696 var unit = scale * ticks;
4697 mouseX = (e.clientX - left - Math.ceil(at_x) + 1) / unit + xStart;
4698 mouseY = (e.clientY - top - Math.ceil(at_y)) / unit + yStart;
4699}
4700
4701function handleMouseOver() {
4702 calcXY();
4703 var num = mouseX.toFixed(3) + ", " + mouseY.toFixed(3);
4704 ctx.beginPath();
caryclark@google.com4aaaaea2013-02-28 16:12:39 +00004705 ctx.rect(300,0,72,9);
caryclark@google.com752b60e2012-03-22 21:11:17 +00004706 ctx.fillStyle="white";
4707 ctx.fill();
4708 ctx.fillStyle="black";
caryclark@google.com4aaaaea2013-02-28 16:12:39 +00004709 ctx.fillText(num, 300, 7);
caryclark@google.com752b60e2012-03-22 21:11:17 +00004710}
4711
4712function handleMouseClick() {
4713 calcXY();
4714// drawInset();
4715}
4716
4717function drawTop() {
4718 init(tests[testIndex]);
4719 redraw();
4720}
4721
4722function redraw() {
4723 ctx.beginPath();
4724 ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
4725 ctx.fillStyle="white";
4726 ctx.fill();
caryclark@google.com0e08a192012-07-13 21:07:52 +00004727 draw(tests[testIndex], testTitles[testIndex], at_x, at_y, scale);
caryclark@google.com752b60e2012-03-22 21:11:17 +00004728// if (insetScale != scale && mouseX != Infinity)
4729// drawInset();
4730}
4731
4732function doKeyPress(evt) {
4733 var char = String.fromCharCode(evt.charCode);
4734 switch (char) {
4735 case 'N':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004736 testIndex += 9;
caryclark@google.com752b60e2012-03-22 21:11:17 +00004737 case 'n':
4738 if (++testIndex >= tests.length)
4739 testIndex = 0;
caryclark@google.comfa0588f2012-04-26 21:01:06 +00004740 mouseX = Infinity;
4741 drawTop();
4742 break;
4743 case 'P':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004744 testIndex -= 9;
caryclark@google.comfa0588f2012-04-26 21:01:06 +00004745 case 'p':
4746 if (--testIndex < 0)
4747 testIndex = tests.length - 1;
caryclark@google.com752b60e2012-03-22 21:11:17 +00004748 mouseX = Infinity;
4749 drawTop();
4750 break;
4751 case 'T':
4752 case 't':
caryclark@google.com752b60e2012-03-22 21:11:17 +00004753 break;
4754 case '-':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004755 drawTop();
caryclark@google.com752b60e2012-03-22 21:11:17 +00004756 break;
4757 case '=':
4758 case '+':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004759 drawTop();
caryclark@google.com752b60e2012-03-22 21:11:17 +00004760 break;
caryclark@google.com6aea33f2012-10-09 14:11:58 +00004761 case 'x':
4762 draw_labels ^= true;
4763 drawTop();
4764 break;
caryclark@google.com752b60e2012-03-22 21:11:17 +00004765 }
4766}
4767
4768function start() {
4769 for (i = 0; i < testDivs.length; ++i) {
caryclark@google.com0e08a192012-07-13 21:07:52 +00004770 var title = testDivs[i].id.toString();
caryclark@google.com752b60e2012-03-22 21:11:17 +00004771 var str = testDivs[i].firstChild.data;
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004772 if (str.split("addRect").length > 1) {
caryclark@google.com0e08a192012-07-13 21:07:52 +00004773 parseRect(str, title);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004774 } else {
caryclark@google.com0e08a192012-07-13 21:07:52 +00004775 parse(str, title);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004776 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004777 }
4778 drawTop();
4779 window.addEventListener('keypress', doKeyPress, true);
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004780 window.onresize = function() {
4781 drawTop();
4782 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004783}
4784
4785</script>
4786</head>
4787
4788<body onLoad="start();">
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004789<canvas id="canvas" width="750" height="500"
caryclark@google.com752b60e2012-03-22 21:11:17 +00004790 onmousemove="handleMouseOver()"
4791 onclick="handleMouseClick()"
4792 ></canvas >
4793</body>
4794</html>