blob: 9059e1fc0c30f0962d781f0c5c5b0c3a1a2f2a96 [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.com8dcf1142012-07-02 20:27:02 +0000385<div id="testLine17">
386 SkPath path, simple;
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000387 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
388 path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
caryclark@google.com8dcf1142012-07-02 20:27:02 +0000389 testSimplifyx(path);
390</div>
391
caryclark@google.com47580692012-07-23 12:14:49 +0000392<div id="testLine19">
393 SkPath path, simple;
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000394 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
395 path.addRect(12, 16, 21, 21, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000396 testSimplifyx(path);
397</div>
398
caryclark@google.comcc905052012-07-25 20:59:42 +0000399<div id="testLine22">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000400 path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
401 path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
caryclark@google.comcc905052012-07-25 20:59:42 +0000402</div>
403
caryclark@google.com47580692012-07-23 12:14:49 +0000404<div id="testLine24">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000405 path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
406 path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000407</div>
408
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000409<div id="testLine28">
410 SkPath path, simple;
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000411 path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
412 path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000413 testSimplifyx(path);
414</div>
415
416<div id="testLine29">
417 SkPath path, simple;
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000418 path.addRect(0, 18, 12, 12, SkPath::kCW_Direction);
419 path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000420 testSimplifyx(path);
421</div>
422
423<div id="testLine30">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000424 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
425 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
426 path.addRect(4, 4, 13, 13, SkPath::kCW_Direction);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000427</div>
428
429<div id="testLine31">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000430 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
431 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
432 path.addRect(0, 4, 9, 9, SkPath::kCW_Direction);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000433</div>
434
435<div id="testLine32">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000436 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
437 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
438 path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000439</div>
440
caryclark@google.com9764cc62012-07-12 19:29:45 +0000441<div id="testLine33">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000442 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
443 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
444 path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
caryclark@google.com9764cc62012-07-12 19:29:45 +0000445</div>
446
caryclark@google.com210acaf2012-07-12 21:05:13 +0000447<div id="testLine34">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000448 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
449 path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
450 path.addRect(4, 12, 13, 13, SkPath::kCW_Direction);
caryclark@google.com210acaf2012-07-12 21:05:13 +0000451</div>
452
453<div id="testLine35">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000454 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
455 path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
456 path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
caryclark@google.com210acaf2012-07-12 21:05:13 +0000457</div>
458
caryclark@google.com0e08a192012-07-13 21:07:52 +0000459<div id="testLine36">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000460 path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
461 path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
462 path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
caryclark@google.com0e08a192012-07-13 21:07:52 +0000463</div>
464
caryclark@google.com47580692012-07-23 12:14:49 +0000465<div id="testLine37">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000466 path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
467 path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
468 path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000469</div>
470
471<div id="testLine38">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000472 path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
473 path.addRect(6, 12, 18, 18, SkPath::kCW_Direction);
474 path.addRect(12, 12, 21, 21, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000475</div>
476
477<div id="testLine39">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000478 path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
479 path.addRect(12, 6, 24, 24, SkPath::kCW_Direction);
480 path.addRect(12, 4, 21, 21, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000481</div>
482
483<div id="testLine40">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000484 path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
485 path.addRect(12, 18, 24, 24, SkPath::kCW_Direction);
486 path.addRect(4, 16, 13, 13, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000487</div>
488
489<div id="testLine41">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000490 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
491 path.addRect(18, 24, 30, 30, SkPath::kCW_Direction);
492 path.addRect(12, 0, 21, 21, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000493</div>
494
495<div id="testLine42">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000496 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
497 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
498 path.addRect(8, 16, 17, 17, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000499</div>
500
501<div id="testLine43">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000502 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
503 path.addRect(6, 24, 18, 18, SkPath::kCW_Direction);
504 path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000505</div>
506
507<div id="testLine44">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000508 path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
509 path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
510 path.addRect(18, 32, 27, 36, SkPath::kCCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000511</div>
512
513<div id="testLine45">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000514 path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
515 path.addRect(18, 0, 30, 30, SkPath::kCW_Direction);
516 path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000517</div>
518
519<div id="testLine46">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000520 path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
521 path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
522 path.addRect(24, 32, 33, 36, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000523</div>
524
525<div id="testLine47">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000526 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
527 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
528 path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000529</div>
530
531<div id="testLine48">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000532 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
533 path.addRect(0, 6, 12, 12, SkPath::kCW_Direction);
534 path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000535</div>
536
537<div id="testLine49">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000538 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
539 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
540 path.addRect(0, 0, 9, 9, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000541</div>
542
543<div id="testLine50">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000544 path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
545 path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000546</div>
547
548<div id="testLine51">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000549 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
550 path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
551 path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
caryclark@google.com47580692012-07-23 12:14:49 +0000552</div>
553
caryclark@google.come21cb182012-07-23 21:26:31 +0000554<div id="testLine52">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000555 path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
556 path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
557 path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
caryclark@google.come21cb182012-07-23 21:26:31 +0000558</div>
559
560<div id="testLine53">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000561 path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
562 path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
563 path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
caryclark@google.come21cb182012-07-23 21:26:31 +0000564</div>
565
566<div id="testLine54">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000567 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
568 path.addRect(6, 0, 18, 18, SkPath::kCW_Direction);
569 path.addRect(8, 4, 17, 17, SkPath::kCCW_Direction);
caryclark@google.come21cb182012-07-23 21:26:31 +0000570</div>
571
572<div id="testLine55">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000573 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
574 path.addRect(6, 6, 18, 18, SkPath::kCW_Direction);
575 path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
caryclark@google.come21cb182012-07-23 21:26:31 +0000576</div>
577
caryclark@google.com18063442012-07-25 12:05:18 +0000578<div id="testLine56">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000579 path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
580 path.addRect(18, 20, 30, 30, SkPath::kCW_Direction);
581 path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
caryclark@google.com18063442012-07-25 12:05:18 +0000582</div>
583
584<div id="testLine57">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000585 path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
586 path.addRect(20, 0, 30, 40, SkPath::kCW_Direction);
587 path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
caryclark@google.com18063442012-07-25 12:05:18 +0000588</div>
589
caryclark@google.comcc905052012-07-25 20:59:42 +0000590<div id="testLine58">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000591 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
592 path.addRect(0, 0, 12, 12, SkPath::kCCW_Direction);
593 path.addRect(0, 12, 9, 9, SkPath::kCCW_Direction);
caryclark@google.comcc905052012-07-25 20:59:42 +0000594</div>
595
596<div id="testLine59">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000597 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
598 path.addRect(6, 6, 18, 18, SkPath::kCCW_Direction);
599 path.addRect(4, 4, 13, 13, SkPath::kCCW_Direction);
caryclark@google.comcc905052012-07-25 20:59:42 +0000600</div>
601
caryclark@google.com27c449a2012-07-27 18:26:38 +0000602<div id="testLine60">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000603 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
604 path.addRect(6, 12, 18, 18, SkPath::kCCW_Direction);
605 path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000606</div>
607
608<div id="testLine61">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000609 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
610 path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
611 path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000612</div>
613
614<div id="testLine62">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000615 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
616 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
617 path.addRect(0, 12, 12, 12, SkPath::kCW_Direction);
618 path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000619</div>
620
621<div id="testLine63">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000622 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
623 path.addRect(0, 10, 20, 20, SkPath::kCW_Direction);
624 path.addRect(0, 6, 12, 12, SkPath::kCCW_Direction);
625 path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000626</div>
627
628<div id="testLine64">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000629 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
630 path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
631 path.addRect(18, 6, 30, 30, SkPath::kCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000632</div>
633
634<div id="testLine65">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000635 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
636 path.addRect(10, 0, 30, 30, SkPath::kCW_Direction);
637 path.addRect(24, 0, 36, 36, SkPath::kCW_Direction);
638 path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000639</div>
640
641<div id="testLine66">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000642 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
643 path.addRect(0, 30, 20, 20, SkPath::kCW_Direction);
644 path.addRect(12, 20, 24, 30, SkPath::kCW_Direction);
caryclark@google.com27c449a2012-07-27 18:26:38 +0000645</div>
646
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000647<div id="testLine67">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000648 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
649 path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
650 path.addRect(24, 20, 36, 30, SkPath::kCW_Direction);
651 path.addRect(32, 0, 36, 41, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000652</div>
653
654<div id="testLine68a">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000655 path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
656 path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
657 path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000658</div>
659
660<div id="testLine68b">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000661 path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
662 path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
663 path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000664</div>
665
666<div id="testLine68c">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000667 path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
668 path.addRect(2, 2, 6, 6, SkPath::kCW_Direction);
669 path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000670</div>
671
672<div id="testLine68d">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000673 path.addRect(0, 0, 8, 8, SkPath::kCCW_Direction);
674 path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
675 path.addRect(1, 2, 4, 2, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000676</div>
677
678<div id="testLine68e">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000679 path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
680 path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
681 path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
682 path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000683</div>
684
685<div id="testLine68f">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000686 path.addRect(0, 0, 8, 8, SkPath::kCW_Direction);
687 path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
688 path.addRect(2, 2, 6, 6, SkPath::kCCW_Direction);
689 path.addRect(1, 2, 2, 2, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000690</div>
691
692<div id="testLine69">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000693 path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
694 path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
695 path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000696</div>
697
698<div id="testLine70">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000699 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
700 path.addRect(0, 24, 12, 12, SkPath::kCW_Direction);
701 path.addRect(12, 32, 21, 36, SkPath::kCCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000702</div>
703
704<div id="testLine71">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000705 path.addRect(0, 0, 20, 20, SkPath::kCW_Direction);
706 path.addRect(12, 0, 24, 24, SkPath::kCW_Direction);
707 path.addRect(12, 32, 21, 36, SkPath::kCW_Direction);
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000708</div>
709
caryclark@google.com200c2112012-08-03 15:05:04 +0000710<div id="testLine72">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000711 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
712 path.addRect(10, 40, 30, 30, SkPath::kCW_Direction);
713 path.addRect(6, 20, 18, 30, SkPath::kCW_Direction);
caryclark@google.com200c2112012-08-03 15:05:04 +0000714</div>
715
716<div id="testLine73">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000717 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
718 path.addRect(0, 40, 20, 20, SkPath::kCW_Direction);
719 path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
720 path.addRect(0, 0, 9, 9, SkPath::kCCW_Direction);
caryclark@google.com200c2112012-08-03 15:05:04 +0000721</div>
722
caryclark@google.com0c803d02012-08-06 11:15:47 +0000723<div id="testLine74">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000724 path.addRect(20, 30, 40, 40, SkPath::kCW_Direction);
725 path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
726 path.addRect(32, 24, 36, 41, SkPath::kCCW_Direction);
caryclark@google.com0c803d02012-08-06 11:15:47 +0000727</div>
728
caryclark@google.com2ddff932012-08-07 21:25:27 +0000729<div id="testLine75">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000730 path.addRect(0, 0, 60, 60, SkPath::kCW_Direction);
731 path.addRect(10, 0, 30, 30, SkPath::kCCW_Direction);
732 path.addRect(18, 0, 30, 30, SkPath::kCCW_Direction);
733 path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
caryclark@google.com2ddff932012-08-07 21:25:27 +0000734</div>
735
736<div id="testLine76">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000737 path.addRect(36, 0, 66, 60, SkPath::kCW_Direction);
738 path.addRect(10, 20, 40, 30, SkPath::kCW_Direction);
739 path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
740 path.addRect(32, 6, 36, 41, SkPath::kCCW_Direction);
caryclark@google.com2ddff932012-08-07 21:25:27 +0000741</div>
742
743<div id="testLine77">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000744 path.addRect(20, 0, 40, 40, SkPath::kCW_Direction);
745 path.addRect(24, 6, 36, 36, SkPath::kCCW_Direction);
746 path.addRect(24, 32, 33, 36, SkPath::kCCW_Direction);
caryclark@google.com2ddff932012-08-07 21:25:27 +0000747</div>
748
749<div id="testLine78">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000750 path.addRect(0, 0, 30, 60, SkPath::kCW_Direction);
751 path.addRect(10, 20, 30, 30, SkPath::kCCW_Direction);
752 path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
753 path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
caryclark@google.com2ddff932012-08-07 21:25:27 +0000754</div>
755
756<div id="testLine79">
caryclark@google.com7fce0de2012-11-29 14:31:50 +0000757 path.addRect(0, 36, 60, 30, SkPath::kCW_Direction);
758 path.addRect(10, 30, 40, 30, SkPath::kCW_Direction);
759 path.addRect(0, 20, 12, 30, SkPath::kCCW_Direction);
760 path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
761</div>
762
763<div id="testLine81">
764 path.addRect(-1, -1, 3, 3, SkPath::kCW_Direction);
765 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
766 path.addRect(1, 1, 2, 2, SkPath::kCCW_Direction);
caryclark@google.com2ddff932012-08-07 21:25:27 +0000767</div>
768
caryclark@google.com59823f72012-08-09 18:17:47 +0000769<div id="testDegenerate1">
770 path.moveTo(0, 0);
771 path.lineTo(0, 0);
772 path.lineTo(2, 0);
773 path.close();
774 path.moveTo(0, 0);
775 path.lineTo(1, 0);
776 path.lineTo(2, 0);
777 path.close();
778</div>
779
780<div id="testDegenerate2">
781 path.moveTo(0, 0);
782 path.lineTo(0, 0);
783 path.lineTo(0, 0);
784 path.close();
785 path.moveTo(0, 0);
786 path.lineTo(1, 0);
787 path.lineTo(0, 1);
788 path.close();
789</div>
790
791<div id="testDegenerate3">
792 path.moveTo(0, 0);
793 path.lineTo(2, 0);
794 path.lineTo(1, 0);
795 path.close();
796 path.moveTo(0, 0);
797 path.lineTo(0, 0);
798 path.lineTo(3, 0);
799 path.close();
800</div>
801
802<div id="testDegenerate4">
803 path.moveTo(0, 0);
804 path.lineTo(1, 0);
805 path.lineTo(1, 3);
806 path.close();
807 path.moveTo(1, 0);
808 path.lineTo(1, 1);
809 path.lineTo(1, 2);
810 path.close();
811</div>
812
813<div id="testNondegenerate1">
814 path.moveTo(0, 0);
815 path.lineTo(3, 0);
816 path.lineTo(1, 3);
817 path.close();
818 path.moveTo(1, 1);
819 path.lineTo(2, 1);
820 path.lineTo(1, 2);
821 path.close();
822</div>
823
824<div id="testNondegenerate2">
825 path.moveTo(1, 0);
826 path.lineTo(0, 1);
827 path.lineTo(1, 1);
828 path.close();
829 path.moveTo(0, 2);
830 path.lineTo(0, 3);
831 path.lineTo(1, 2);
832 path.close();
833</div>
834
835<div id="testNondegenerate3">
836 path.moveTo(0, 0);
837 path.lineTo(1, 0);
838 path.lineTo(2, 1);
839 path.close();
840 path.moveTo(0, 1);
841 path.lineTo(1, 1);
842 path.lineTo(0, 2);
843 path.close();
844</div>
845
846<div id="testNondegenerate4">
847 path.moveTo(1, 0);
848 path.lineTo(0, 1);
849 path.lineTo(1, 2);
850 path.close();
851 path.moveTo(0, 2);
852 path.lineTo(0, 3);
853 path.lineTo(1, 3);
854 path.close();
855</div>
856
857<div id="testQuadralateral5">
858 path.moveTo(0, 0);
859 path.lineTo(0, 0);
860 path.lineTo(1, 0);
861 path.lineTo(1, 1);
862 path.close();
863 path.moveTo(0, 0);
864 path.lineTo(2, 2);
865 path.lineTo(3, 2);
866 path.lineTo(3, 3);
867 path.close();
868</div>
869
870<div id="testQuadralateral6">
871 path.moveTo(0, 0);
872 path.lineTo(0, 0);
873 path.lineTo(1, 0);
874 path.lineTo(1, 1);
875 path.close();
876 path.moveTo(1, 0);
877 path.lineTo(2, 0);
878 path.lineTo(0, 2);
879 path.lineTo(2, 2);
880 path.close();
881</div>
882
caryclark@google.com24bec792012-08-20 12:43:57 +0000883<div id="testFauxQuadralateral6">
884 path.moveTo(0, 0);
885 path.lineTo(1, 0);
886 path.lineTo(1, 1);
887 path.close();
888 path.moveTo(1, 0);
889 path.lineTo(2, 0);
890 path.lineTo(1.333, 0.667);
891 path.close();
892 path.moveTo(1.333, 0.667);
893 path.lineTo(0, 2);
894 path.lineTo(2, 2);
895 path.close();
896</div>
897
898<div id="testFauxQuadralateral6a">
899 path.moveTo(0, 0);
900 path.lineTo(3, 0);
901 path.lineTo(3, 3);
902 path.close();
903 path.moveTo(3, 0);
904 path.lineTo(6, 0);
905 path.lineTo(4, 2);
906 path.close();
907 path.moveTo(4, 2);
908 path.lineTo(0, 6);
909 path.lineTo(6, 6);
910 path.close();
911</div>
912
913<div id="testFauxQuadralateral6b">
914 path.moveTo(0, 0);
915 path.lineTo(3, 0);
916 path.lineTo(3, 3);
917 path.close();
918 path.moveTo(3, 0);
919 path.lineTo(6, 0);
920 path.lineTo(4, 2);
921 path.close();
922 path.moveTo(4, 2);
923 path.lineTo(6, 6);
924 path.lineTo(0, 6);
925 path.close();
926</div>
927
928<div id="testFauxQuadralateral6c">
929 path.moveTo(0, 0);
930 path.lineTo(3, 3);
931 path.lineTo(3, 0);
932 path.close();
933 path.moveTo(3, 0);
934 path.lineTo(6, 0);
935 path.lineTo(4, 2);
936 path.close();
937 path.moveTo(4, 2);
938 path.lineTo(0, 6);
939 path.lineTo(6, 6);
940 path.close();
941</div>
942
943<div id="testFauxQuadralateral6d">
944 path.moveTo(0, 0);
945 path.lineTo(3, 3);
946 path.lineTo(3, 0);
947 path.close();
948 path.moveTo(3, 0);
949 path.lineTo(6, 0);
950 path.lineTo(4, 2);
951 path.close();
952 path.moveTo(4, 2);
953 path.lineTo(6, 6);
954 path.lineTo(0, 6);
955</div>
956
957<div id="testQuadralateral6a">
958 path.moveTo(0, 0);
959 path.lineTo(0, 0);
960 path.lineTo(3, 0);
961 path.lineTo(3, 3);
962 path.close();
963 path.moveTo(3, 0);
964 path.lineTo(6, 0);
965 path.lineTo(0, 6);
966 path.lineTo(6, 6);
967</div>
968
969<div id="testQuadralateral7">
970 path.moveTo(0, 0);
971 path.lineTo(0, 0);
972 path.lineTo(1, 0);
973 path.lineTo(2, 1);
974 path.close();
975 path.moveTo(1, 0);
976 path.lineTo(1, 1);
977 path.lineTo(2, 2);
978 path.lineTo(1, 3);
979 path.close();
980</div>
981
982<div id="testQuadralateral8">
983 path.moveTo(0, 0);
984 path.lineTo(3, 1);
985 path.lineTo(1, 3);
986 path.lineTo(3, 3);
987 path.close();
988 path.moveTo(2, 1);
989 path.lineTo(0, 2);
990 path.lineTo(3, 2);
991 path.lineTo(2, 3);
992 path.close();
993</div>
994
995<div id="testQuadralateral9">
996 path.moveTo(0, 0);
997 path.lineTo(1, 0);
998 path.lineTo(1, 2);
999 path.lineTo(2, 2);
1000 path.close();
1001 path.moveTo(1, 1);
1002 path.lineTo(2, 1);
1003 path.lineTo(1, 3);
1004 path.lineTo(2, 3);
1005 path.close();
1006</div>
1007
1008<div id="testLine1x">
1009 path.setFillType(SkPath::kEvenOdd_FillType);
caryclark@google.com7fce0de2012-11-29 14:31:50 +00001010 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
1011 path.addRect(4, 0, 13, 13, SkPath::kCW_Direction);
caryclark@google.com24bec792012-08-20 12:43:57 +00001012</div>
1013
1014<div id="testLine2x">
1015 path.setFillType(SkPath::kEvenOdd_FillType);
caryclark@google.com7fce0de2012-11-29 14:31:50 +00001016 path.addRect(0, 20, 20, 20, SkPath::kCW_Direction);
1017 path.addRect(0, 20, 12, 30, SkPath::kCW_Direction);
1018 path.addRect(12, 0, 21, 21, SkPath::kCCW_Direction);
caryclark@google.com24bec792012-08-20 12:43:57 +00001019</div>
1020
1021<div id="testLine3x">
1022 path.setFillType(SkPath::kEvenOdd_FillType);
caryclark@google.com7fce0de2012-11-29 14:31:50 +00001023 path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
1024 path.addRect(18, 20, 30, 30, SkPath::kCCW_Direction);
1025 path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
caryclark@google.com24bec792012-08-20 12:43:57 +00001026</div>
1027
1028<div id="testLine4x">
1029 path.setFillType(SkPath::kEvenOdd_FillType);
caryclark@google.com7fce0de2012-11-29 14:31:50 +00001030 path.addRect(10, 30, 30, 30, SkPath::kCW_Direction);
1031 path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
1032 path.addRect(0, 32, 9, 36, SkPath::kCCW_Direction);
caryclark@google.com24bec792012-08-20 12:43:57 +00001033</div>
1034
1035<div id="testQuadratic1">
1036 path.moveTo(0, 0);
1037 path.quadTo(0, 0, 0, 0);
1038 path.lineTo(1, 0);
1039 path.close();
1040 path.moveTo(0, 0);
1041 path.lineTo(0, 0);
1042 path.quadTo(0, 0, 0, 0);
1043 path.close();
1044</div>
1045
1046<div id="testQuadratic2">
1047 path.moveTo(0, 0);
1048 path.quadTo(0, 0, 0, 0);
1049 path.lineTo(3, 0);
1050 path.close();
1051 path.moveTo(0, 0);
1052 path.lineTo(0, 0);
1053 path.quadTo(1, 0, 0, 1);
1054 path.close();
1055</div>
1056
caryclark@google.com03f97062012-08-21 13:13:52 +00001057<div id="testQuadratic3">
1058 path.moveTo(0, 0);
1059 path.quadTo(0, 0, 1, 0);
1060 path.lineTo(0, 2);
1061 path.close();
1062 path.moveTo(0, 0);
1063 path.lineTo(0, 0);
1064 path.quadTo(1, 0, 0, 1);
1065 path.close();
1066</div>
1067
caryclark@google.comc899ad92012-08-23 15:24:42 +00001068<div id="testQuadratic4x">
1069 path.setFillType(SkPath::kEvenOdd_FillType);
1070 path.moveTo(0, 0);
1071 path.quadTo(0, 0, 1, 0);
1072 path.lineTo(0, 2);
1073 path.close();
1074 path.moveTo(0, 0);
1075 path.lineTo(0, 0);
1076 path.quadTo(1, 0, 0, 2);
1077 path.close();
1078</div>
1079
1080<div id="testQuadratic5">
1081 path.moveTo(0, 0);
1082 path.quadTo(0, 0, 0, 0);
1083 path.lineTo(0, 1);
1084 path.close();
1085 path.moveTo(0, 0);
1086 path.lineTo(1, 0);
1087 path.quadTo(0, 1, 0, 2);
1088 path.close();
1089</div>
1090
1091<div id="testQuadratic6">
1092 path.moveTo(0, 0);
1093 path.quadTo(0, 0, 1, 0);
1094 path.lineTo(2, 1);
1095 path.close();
1096 path.moveTo(0, 0);
1097 path.lineTo(0, 0);
1098 path.quadTo(2, 0, 0, 1);
1099 path.close();
1100</div>
1101
1102<div id="testQuadratic7">
1103 path.moveTo(0, 0);
1104 path.quadTo(0, 0, 1, 0);
1105 path.lineTo(3, 1);
1106 path.close();
1107 path.moveTo(0, 0);
1108 path.lineTo(0, 0);
1109 path.quadTo(3, 0, 1, 2);
1110 path.close();
1111</div>
1112
1113<div id="testQuadratic8">
1114 path.moveTo(0, 0);
1115 path.quadTo(0, 0, 1, 0);
1116 path.lineTo(0, 2);
1117 path.close();
1118 path.moveTo(0, 0);
1119 path.lineTo(1, 0);
1120 path.quadTo(0, 1, 1, 2);
1121 path.close();
1122</div>
1123
1124<div id="testQuadratic9">
1125 path.moveTo(0, 0);
1126 path.quadTo(0, 0, 1, 0);
1127 path.lineTo(3, 1);
1128 path.close();
1129 path.moveTo(0, 0);
1130 path.lineTo(1, 0);
1131 path.quadTo(1, 2, 3, 2);
1132 path.close();
1133</div>
1134
1135<div id="testQuadratic9a">
1136 path.moveTo(1.08000004, 0.720000029);
1137 path.lineTo(0, 0);
1138 path.lineTo(1, 0);
1139 path.lineTo(3, 1);
1140 path.lineTo(1.01568651, 0.338562161);
1141 path.quadTo(1.03542483, 0.541699469, 1.08000004, 0.720000029);
1142 path.close();
1143 path.moveTo(1.08000004, 0.720000029);
1144 path.lineTo(3, 2);
1145 path.quadTo(1.39999998, 2, 1.08000004, 0.720000029);
1146 path.close();
1147
1148</div>
1149
1150<div id="testQuadratic10a">
1151path.moveTo(15.5, 15.5);
1152path.lineTo(46.5, 15.5);
1153path.quadTo(0, 31, 0, 46.5);
1154path.lineTo(15.5, 15.5);
1155path.close();
1156</div>
1157
1158<div id="testQuadratic10b">
1159path.moveTo(5.16666698, 36.1666641);
1160path.lineTo(15.5, 15.5);
1161path.lineTo(46.5, 15.5);
1162path.quadTo(15.5, 25.8333321, 5.16666698, 36.1666641);
1163path.close();
1164path.moveTo(5.16666698, 36.1666641);
1165path.lineTo(0, 46.5);
1166path.quadTo(0, 41.3333359, 5.16666698, 36.1666641);
1167path.close();
1168</div>
1169
1170<div id="testQuadratic11a">
1171path.moveTo(0, 0);
1172path.lineTo(15.5, 31);
1173path.lineTo(0, 0);
1174path.close();
1175path.moveTo(0, 15.5);
1176path.lineTo(15.5, 15.5);
1177path.quadTo(15.5, 15.5, 46.5, 31);
1178path.lineTo(0, 15.5);
1179path.close();
1180</div>
1181
1182<div id="testQuadratic11b">
1183path.moveTo(9.30000019, 18.6000004);
1184path.lineTo(0, 15.5);
1185path.lineTo(7.75, 15.5);
1186path.lineTo(15.5, 15.5);
1187path.lineTo(46.5, 31);
1188path.lineTo(9.30000019, 18.6000004);
1189path.close();
1190</div>
1191
1192<div id="testQuadratic12">
1193 path.moveTo(0, 0);
1194 path.quadTo(0, 0, 0, 0);
1195 path.lineTo(1, 3);
1196 path.close();
1197 path.moveTo(1, 0);
1198 path.lineTo(0, 1);
1199 path.quadTo(1, 1, 0, 3);
1200 path.close();
1201</div>
1202
1203<div id="testQuadratic13a">
1204path.moveTo(0, 0);
1205path.quadTo(0, 0, 15.5, 0);
1206path.lineTo(15.5, 31);
1207path.lineTo(0, 0);
1208path.close();
1209path.moveTo(0, 0);
1210path.quadTo(15.5, 46.5, 46.5, 46.5);
1211path.lineTo(0, 0);
1212path.close();
1213</div>
1214
1215<div id="testQuadratic13b">
1216path.moveTo(14.8800001, 29.7600002);
1217path.quadTo(6.20000029, 18.6000004, 0, 0);
1218path.lineTo(14.8800001, 29.7600002);
1219path.close();
1220path.moveTo(15.5, 30.5437222);
1221path.lineTo(15.5, 31);
1222path.lineTo(14.8800001, 29.7600002);
1223path.quadTo(15.1884346, 30.156559, 15.5, 30.5437222);
1224path.close();
1225path.moveTo(15.5, 15.5);
1226path.lineTo(0, 0);
1227path.lineTo(15.5, 0);
1228path.lineTo(15.5, 15.5);
1229path.close();
1230path.moveTo(15.5, 30.5437222);
1231path.lineTo(15.5, 15.5);
1232path.lineTo(46.5, 46.5);
1233path.quadTo(28.34062, 46.5, 15.5, 30.5437222);
1234path.close();
1235</div>
1236
1237<div id="testQuadratic14">
1238 path.moveTo(0, 0);
1239 path.quadTo(0, 0, 1, 0);
1240 path.lineTo(3, 2);
1241 path.close();
1242 path.moveTo(0, 0);
1243 path.lineTo(1, 0);
1244 path.quadTo(3, 2, 3, 3);
1245 path.close();
1246</div>
1247
caryclark@google.com3350c3c2012-08-24 15:24:36 +00001248<div id="testQuadratic15">
1249 path.moveTo(0, 0);
1250 path.quadTo(0, 0, 1, 0);
1251 path.lineTo(1, 3);
1252 path.close();
1253 path.moveTo(1, 0);
1254 path.lineTo(0, 1);
1255 path.quadTo(1, 1, 0, 3);
1256 path.close();
1257</div>
1258
1259<div id="testQuadratic16a">
1260path.moveTo(0, 0);
1261path.quadTo(0, 0, 31, 0);
1262path.lineTo(46.5, 31);
1263path.lineTo(0, 0);
1264path.close();
1265path.moveTo(46.5, 15.5);
1266path.lineTo(0, 31);
1267path.quadTo(0, 31, 15.5, 31);
1268path.lineTo(46.5, 15.5);
1269path.close();
1270</div>
1271
1272<div id="testQuadratic16b">
1273path.moveTo(31, 20.6666679);
1274path.lineTo(0, 0);
1275path.lineTo(31, 0);
1276path.lineTo(39.8571434, 17.7142868);
1277path.lineTo(31, 20.6666679);
1278path.close();
1279path.moveTo(33.214283, 22.1428585);
1280path.lineTo(15.5, 31);
1281path.lineTo(0, 31);
1282path.lineTo(31, 20.6666679);
1283path.lineTo(33.214283, 22.1428585);
1284path.close();
1285path.moveTo(40.2999992, 18.6000004);
1286path.lineTo(46.5, 31);
1287path.lineTo(33.214283, 22.1428585);
1288path.lineTo(40.2999992, 18.6000004);
1289path.close();
1290path.moveTo(39.8571434, 17.7142868);
1291path.lineTo(46.5, 15.5);
1292path.lineTo(40.2999992, 18.6000004);
1293path.lineTo(39.8571434, 17.7142868);
1294path.close();
1295</div>
1296
1297<div id="testQuadratic17x">
1298 path.setFillType(SkPath::kEvenOdd_FillType);
1299 path.moveTo(0, 0);
1300 path.quadTo(0, 0, 3, 1);
1301 path.lineTo(0, 2);
1302 path.close();
1303 path.moveTo(0, 0);
1304 path.lineTo(1, 0);
1305 path.quadTo(3, 1, 0, 2);
1306 path.close();
1307</div>
1308
1309<div id="testQuadratic18">
1310 path.moveTo(0, 0);
1311 path.quadTo(1, 0, 0, 1);
1312 path.lineTo(0, 1);
1313 path.close();
1314 path.moveTo(0, 0);
1315 path.lineTo(0, 0);
1316 path.quadTo(1, 0, 1, 1);
1317 path.close();
1318</div>
1319
caryclark@google.coma7e483d2012-08-28 20:44:43 +00001320<div id="testQuadratic19">
1321 path.moveTo(0, 0);
1322 path.quadTo(1, 0, 0, 1);
1323 path.lineTo(0, 1);
1324 path.close();
1325 path.moveTo(0, 0);
1326 path.lineTo(0, 0);
1327 path.quadTo(2, 0, 0, 1);
1328 path.close();
1329</div>
1330
caryclark@google.com32546db2012-08-31 20:55:07 +00001331<div id="testQuadratic20">
1332 path.moveTo(0, 0);
1333 path.quadTo(1, 0, 0, 1);
1334 path.lineTo(0, 1);
1335 path.close();
1336 path.moveTo(0, 0);
1337 path.lineTo(0, 0);
1338 path.quadTo(1, 0, 0, 1);
1339 path.close();
1340</div>
1341
caryclark@google.com235f56a2012-09-14 14:19:30 +00001342<div id="testQuadratic21">
1343 path.moveTo(0, 0);
1344 path.quadTo(1, 0, 0, 1);
1345 path.lineTo(0, 1);
1346 path.close();
1347 path.moveTo(0, 0);
1348 path.lineTo(0, 0);
1349 path.quadTo(1, 0, 0, 2);
1350 path.close();
1351</div>
1352
1353<div id="testQuadratic22">
1354 path.moveTo(0, 0);
1355 path.quadTo(1, 0, 0, 1);
1356 path.lineTo(0, 1);
1357 path.close();
1358 path.moveTo(0, 0);
1359 path.lineTo(0, 0);
1360 path.quadTo(0, 1, 2, 1);
1361 path.close();
1362</div>
1363
1364<div id="testQuadratic23">
1365 path.moveTo(0, 0);
1366 path.quadTo(1, 0, 0, 1);
1367 path.lineTo(0, 1);
1368 path.close();
1369 path.moveTo(0, 0);
1370 path.lineTo(0, 0);
1371 path.quadTo(0, 2, 1, 2);
1372 path.close();
1373</div>
1374
1375<div id="testQuadratic24">
1376 path.moveTo(0, 0);
1377 path.quadTo(1, 0, 0, 1);
1378 path.lineTo(0, 1);
1379 path.close();
1380 path.moveTo(0, 0);
1381 path.lineTo(1, 0);
1382 path.quadTo(2, 0, 0, 1);
1383 path.close();
1384</div>
1385
1386<div id="testQuadratic25">
1387 path.moveTo(0, 0);
1388 path.quadTo(1, 0, 1, 1);
1389 path.lineTo(1, 1);
1390 path.close();
1391 path.moveTo(0, 0);
1392 path.lineTo(0, 0);
1393 path.quadTo(2, 1, 0, 2);
1394 path.close();
1395</div>
1396
1397<div id="testQuadratic26">
1398 path.moveTo(0, 0);
1399 path.quadTo(1, 0, 1, 1);
1400 path.lineTo(0, 2);
1401 path.close();
1402 path.moveTo(0, 0);
1403 path.lineTo(0, 0);
1404 path.quadTo(1, 0, 0, 1);
1405 path.close();
1406</div>
1407
1408<div id="testQuadratic27">
1409 path.moveTo(0, 0);
1410 path.quadTo(1, 0, 1, 1);
1411 path.lineTo(2, 1);
1412 path.close();
1413 path.moveTo(0, 0);
1414 path.lineTo(0, 0);
1415 path.quadTo(2, 1, 0, 2);
1416 path.close();
1417</div>
1418
1419<div id="testQuadratic28">
1420 path.moveTo(0, 0);
1421 path.quadTo(1, 0, 0, 1);
1422 path.lineTo(0, 1);
1423 path.close();
1424 path.moveTo(0, 0);
1425 path.lineTo(0, 2);
1426 path.quadTo(1, 2, 0, 3);
1427 path.close();
1428</div>
1429
caryclark@google.comd1688742012-09-18 20:08:37 +00001430<div id="testQuadratic29">
1431 path.moveTo(0, 0);
1432 path.quadTo(1, 0, 2, 1);
1433 path.lineTo(0, 2);
1434 path.close();
1435 path.moveTo(0, 0);
1436 path.lineTo(0, 0);
1437 path.quadTo(1, 0, 0, 1);
1438 path.close();
1439</div>
1440
1441<div id="testQuadratic30">
1442 path.moveTo(0, 0);
1443 path.quadTo(1, 0, 1, 2);
1444 path.lineTo(1, 2);
1445 path.close();
1446 path.moveTo(0, 0);
1447 path.lineTo(1, 0);
1448 path.quadTo(0, 1, 1, 2);
1449 path.close();
1450</div>
1451
1452<div id="testQuadratic31">
1453 path.moveTo(0, 0);
1454 path.quadTo(1, 0, 1, 2);
1455 path.lineTo(1, 2);
1456 path.close();
1457 path.moveTo(0, 0);
1458 path.lineTo(1, 0);
1459 path.quadTo(0, 1, 1, 3);
1460 path.close();
1461</div>
1462
1463<div id="testQuadratic32">
1464 path.moveTo(0, 0);
1465 path.quadTo(1, 0, 2, 3);
1466 path.lineTo(2, 3);
1467 path.close();
1468 path.moveTo(0, 0);
1469 path.lineTo(0, 0);
1470 path.quadTo(3, 1, 0, 2);
1471 path.close();
1472</div>
1473
1474<div id="testQuadratic33">
1475 path.moveTo(0, 0);
1476 path.quadTo(2, 0, 0, 1);
1477 path.lineTo(0, 1);
1478 path.close();
1479 path.moveTo(0, 0);
1480 path.lineTo(1, 1);
1481 path.quadTo(2, 1, 2, 2);
1482 path.close();
1483</div>
1484
1485<div id="testQuadratic34">
1486 path.moveTo(0, 0);
1487 path.quadTo(2, 0, 0, 1);
1488 path.lineTo(0, 1);
1489 path.close();
1490 path.moveTo(1, 0);
1491 path.lineTo(1, 1);
1492 path.quadTo(2, 1, 1, 2);
1493 path.close();
1494</div>
1495
1496<div id="testQuadratic35">
1497 path.moveTo(0, 0);
1498 path.quadTo(0, 1, 1, 1);
1499 path.lineTo(1, 3);
1500 path.close();
1501 path.moveTo(2, 0);
1502 path.lineTo(3, 0);
1503 path.quadTo(0, 1, 1, 1);
1504 path.close();
1505</div>
1506
1507<div id="testQuadratic36">
1508 path.moveTo(0, 0);
1509 path.quadTo(2, 1, 2, 3);
1510 path.lineTo(2, 3);
1511 path.close();
1512 path.moveTo(3, 1);
1513 path.lineTo(1, 2);
1514 path.quadTo(3, 2, 1, 3);
1515 path.close();
1516</div>
1517
1518<div id="testQuadratic37">
1519 path.moveTo(0, 0);
1520 path.quadTo(0, 2, 1, 2);
1521 path.lineTo(1, 2);
1522 path.close();
1523 path.moveTo(0, 0);
1524 path.lineTo(3, 1);
1525 path.quadTo(0, 2, 1, 2);
1526 path.close();
1527</div>
1528
1529<div id="testQuadratic38">
1530 path.moveTo(1, 0);
1531 path.quadTo(0, 1, 1, 1);
1532 path.lineTo(1, 1);
1533 path.close();
1534 path.moveTo(1, 0);
1535 path.lineTo(1, 2);
1536 path.quadTo(2, 2, 1, 3);
1537 path.close();
1538</div>
1539
1540<div id="testQuadratic39">
1541path.moveTo(15.5, 0);
1542path.quadTo(46.5, 15.5, 46.5, 31);
1543path.lineTo(15.5, 0);
1544path.close();
1545path.moveTo(46.5, 15.5);
1546path.lineTo(0, 31);
1547path.quadTo(0, 31, 15.5, 31);
1548path.lineTo(46.5, 15.5);
1549 path.close();
1550</div>
1551
1552<div id="testQuadratic39a">
1553path.moveTo(34.875, 19.375);
1554path.lineTo(15.5, 0);
1555path.quadTo(32.9687576, 8.73437881, 40.5937271, 17.4687576);
1556path.lineTo(34.875, 19.375);
1557path.close();
1558path.moveTo(36.1666641, 20.6666679);
1559path.lineTo(15.5, 31);
1560path.lineTo(0, 31);
1561path.lineTo(34.875, 19.375);
1562path.lineTo(36.1666641, 20.6666679);
1563path.close();
1564path.moveTo(41.1812401, 18.15938);
1565path.quadTo(46.5, 24.5796909, 46.5, 31);
1566path.lineTo(36.1666641, 20.6666679);
1567path.lineTo(41.1812401, 18.15938);
1568path.close();
1569path.moveTo(40.5937271, 17.4687576);
1570path.lineTo(46.5, 15.5);
1571path.lineTo(41.1812401, 18.15938);
1572path.quadTo(40.8951759, 17.8140678, 40.5937271, 17.4687576);
1573 path.close();
1574</div>
1575
caryclark@google.com6aea33f2012-10-09 14:11:58 +00001576<div id="testQuadratic40x">
1577 path.setFillType(SkPath::kEvenOdd_FillType);
1578 path.moveTo(2, 0);
1579 path.quadTo(3, 0, 2, 2);
1580 path.lineTo(3, 2);
1581 path.close();
1582 path.moveTo(3, 1);
1583 path.lineTo(0, 2);
1584 path.quadTo(0, 2, 1, 2);
1585 path.close();
1586</div>
1587
1588<div id="testQuadratic40xa">
1589path.moveTo(31, 0);
1590path.quadTo(41.3333359, 0, 37.8888893, 13.7777777);
1591path.lineTo(31, 0);
1592path.close();
1593path.moveTo(37.8888893, 13.7777777);
1594path.quadTo(37.2993202, 16.1360455, 36.3061028, 18.8979664);
1595path.lineTo(0, 31);
1596path.lineTo(15.5, 31);
1597path.lineTo(35.5182915, 20.9908543);
1598path.quadTo(33.7454262, 25.5091457, 31, 31);
1599path.lineTo(46.5, 31);
1600path.lineTo(40.2999992, 18.6000004);
1601path.lineTo(46.5, 15.5);
1602path.lineTo(39.8571434, 17.7142868);
1603path.lineTo(37.8888893, 13.7777777);
1604path.close();
1605path.moveTo(36.3061028, 18.8979664);
1606path.quadTo(35.9396667, 19.9169388, 35.5182915, 20.9908543);
1607path.lineTo(40.2999992, 18.6000004);
1608path.lineTo(39.8571434, 17.7142868);
1609path.lineTo(36.3061028, 18.8979664);
1610</div>
1611
1612<div id="testQuadratic40xb">
1613path.moveTo(31, 0);
1614path.quadTo(46.5, 0, 31, 31);
1615path.lineTo(46.5, 31);
1616path.lineTo(31, 0);
1617path.close();
1618path.moveTo(46.5, 15.5);
1619path.lineTo(0, 31);
1620path.quadTo(0, 31, 15.5, 31);
1621path.lineTo(46.5, 15.5);
1622path.close();
1623</div>
1624
1625<div id="testQuadratic41o">
1626path.moveTo(419.33905, 236.377808);
1627path.quadTo(398.847778, 242.58728, 384.255524, 242.58728);
1628path.quadTo(359.417633, 242.58728, 343.738708, 226.080429);
1629path.quadTo(328.059784, 209.573578, 328.059784, 183.286819);
1630path.quadTo(328.059784, 157.724487, 341.875854, 141.372879);
1631path.quadTo(355.691956, 125.021263, 377.218109, 125.021263);
1632path.quadTo(397.605896, 125.021263, 408.731201, 139.51004);
1633path.quadTo(419.856506, 153.99881, 419.856506, 180.699539);
1634path.lineTo(419.752991, 187.012497);
1635path.lineTo(348.861511, 187.012497);
1636path.quadTo(353.311646, 227.063599, 388.084686, 227.063599);
1637path.quadTo(400.814117, 227.063599, 419.33905, 220.233185);
1638path.lineTo(419.33905, 236.377808);
1639path.close();
1640path.moveTo(349.792938, 171.695801);
1641path.lineTo(399.365234, 171.695801);
1642path.quadTo(399.365234, 140.337967, 375.976227, 140.337967);
1643path.quadTo(352.483704, 140.337967, 349.792938, 171.695801);
1644path.close();
1645path.moveTo(378.682587, 277.360321);
1646path.lineTo(381.062897, 259.66333);
1647path.quadTo(398.759888, 268.046112, 415.939423, 268.046112);
1648path.quadTo(450.402008, 268.046112, 450.402008, 231.513718);
1649path.lineTo(450.402008, 213.816727);
1650path.quadTo(439.12146, 237.41272, 413.352142, 237.41272);
1651path.quadTo(393.171356, 237.41272, 381.269867, 222.716965);
1652path.quadTo(369.368378, 208.02121, 369.368378, 183.079834);
1653path.quadTo(369.368378, 157.414017, 382.92572, 141.269379);
1654path.quadTo(396.483093, 125.124756, 418.009247, 125.124756);
1655path.quadTo(436.844666, 125.124756, 450.402008, 140.441467);
1656path.lineTo(450.402008, 127.608543);
1657path.lineTo(470.89325, 127.608543);
1658path.lineTo(470.89325, 209.366608);
1659path.quadTo(470.89325, 235.756866, 468.150757, 248.43454);
1660path.quadTo(465.408234, 261.112213, 457.853363, 269.184509);
1661path.quadTo(444.502991, 283.362823, 416.353394, 283.362823);
1662path.quadTo(396.690063, 283.362823, 378.682587, 277.360321);
1663path.close();
1664path.moveTo(450.402008, 201.087311);
1665path.lineTo(450.402008, 154.412781);
1666path.quadTo(436.948151, 140.441467, 421.113983, 140.441467);
1667path.quadTo(407.039185, 140.441467, 399.070374, 151.722);
1668path.quadTo(391.101532, 163.002533, 391.101532, 182.665863);
1669path.quadTo(391.101532, 219.612228, 417.07782, 219.612228);
1670path.quadTo(434.774841, 219.612228, 450.402008, 201.087311);
1671path.close();
1672path.moveTo(482.9328, 236.377808);
1673path.quadTo(462.441528, 242.58728, 447.849274, 242.58728);
1674path.quadTo(423.011383, 242.58728, 407.332458, 226.080429);
1675path.quadTo(391.653534, 209.573578, 391.653534, 183.286819);
1676path.quadTo(391.653534, 157.724487, 405.469604, 141.372879);
1677path.quadTo(419.285706, 125.021263, 440.811859, 125.021263);
1678path.quadTo(461.199646, 125.021263, 472.324951, 139.51004);
1679path.quadTo(483.450256, 153.99881, 483.450256, 180.699539);
1680path.lineTo(483.346741, 187.012497);
1681path.lineTo(412.455261, 187.012497);
1682path.quadTo(416.905396, 227.063599, 451.678436, 227.063599);
1683path.quadTo(464.407867, 227.063599, 482.9328, 220.233185);
1684path.lineTo(482.9328, 236.377808);
1685path.close();
1686path.moveTo(413.386688, 171.695801);
1687path.lineTo(462.958984, 171.695801);
1688path.quadTo(462.958984, 140.337967, 439.569977, 140.337967);
1689path.quadTo(416.077454, 140.337967, 413.386688, 171.695801);
1690path.close();
1691</div>
1692
1693<div id="testQuadratic41s">
1694path.moveTo(341.875854, 141.372879);
1695path.quadTo(355.691956,125.021263, 377.218109,125.021263);
1696path.quadTo(388.787811,125.021263, 397.374664,129.687164);
1697path.quadTo(406.565979,125.124756, 418.009247,125.124756);
1698path.quadTo(423.583374,125.124756, 428.695251,126.466187);
1699path.quadTo(434.412903,125.021263, 440.811859,125.021263);
1700path.quadTo(449.427277,125.021263, 456.388672,127.608543);
1701path.lineTo(470.89325,127.608543);
1702path.lineTo(470.89325,137.749908);
1703path.quadTo(471.627319,138.601486, 472.324951,139.51004);
1704path.quadTo(483.450256,153.99881, 483.450256,180.699539);
1705path.lineTo(483.346741,187.012497);
1706path.lineTo(470.89325,187.012497);
1707path.lineTo(470.89325,209.366608);
1708path.quadTo(470.89325,217.414856, 470.638184,224.187729);
1709path.quadTo(476.428223,222.631516, 482.9328,220.233185);
1710path.lineTo(482.9328,236.377808);
1711path.quadTo(475.87207,238.517426, 469.511749,239.919785);
1712path.quadTo(468.946777,244.754791, 468.150757,248.43454);
1713path.quadTo(465.408234,261.112213, 457.853363,269.184509);
1714path.quadTo(444.502991,283.362823, 416.353394,283.362823);
1715path.quadTo(396.690063,283.362823, 378.682587,277.360321);
1716path.lineTo(381.062897,259.66333);
1717path.quadTo(398.759888,268.046112, 415.939423,268.046112);
1718path.quadTo(444.719147,268.046112, 449.464905,242.568665);
1719path.quadTo(448.648254,242.58728, 447.849274,242.58728);
1720path.quadTo(433.084625,242.58728, 421.556366,236.754425);
1721path.quadTo(418.89566,237.203537, 416.046783,237.346252);
1722path.quadTo(397.661652,242.58728, 384.255524,242.58728);
1723path.quadTo(359.417633,242.58728, 343.738708,226.080429);
1724path.quadTo(328.059784,209.573578, 328.059784,183.286819);
1725path.quadTo(328.059784,157.724487, 341.875854,141.372879);
1726path.close();
1727path.moveTo(442.014923, 226.179474);
1728path.quadTo(445.951935,226.953491, 450.402008,227.049881);
1729path.lineTo(450.402008,213.816727);
1730path.quadTo(446.904755,221.132065, 442.014923,226.179474);
1731path.close();
1732path.moveTo(395.347717, 206.501785);
1733path.quadTo(392.200165,197.593536, 391.734406,187.012497);
1734path.lineTo(391.197113,187.012497);
1735path.quadTo(391.738647,198.938644, 395.347717,206.501785);
1736path.close();
1737path.moveTo(391.808533, 171.695801);
1738path.lineTo(392.428436,171.695801);
1739path.quadTo(393.693451,162.656265, 397.02359,154.9935);
1740path.quadTo(397.023804,154.992996, 397.024048,154.992493);
1741path.quadTo(393.175995,143.845093, 383.003235,141.177292);
1742path.quadTo(382.964447,141.223267, 382.92572,141.269379);
1743</div>
1744
1745<div id="testQuadratic42o">
1746path.moveTo(421.962158, 236.285355);
1747path.quadTo(400.947845, 242.65332, 385.983124, 242.65332);
1748path.quadTo(360.511261, 242.65332, 344.432129, 225.725143);
1749path.quadTo(328.352997, 208.796951, 328.352997, 181.839218);
1750path.quadTo(328.352997, 155.62442, 342.521729, 138.855438);
1751path.quadTo(356.69046, 122.086449, 378.766083, 122.086449);
1752path.quadTo(399.674255, 122.086449, 411.083527, 136.945038);
1753path.quadTo(422.492798, 151.803635, 422.492798, 179.185898);
1754path.lineTo(422.386688, 185.660004);
1755path.lineTo(349.685699, 185.660004);
1756path.quadTo(354.24942, 226.733398, 389.910034, 226.733398);
1757path.quadTo(402.964386, 226.733398, 421.962158, 219.728638);
1758path.lineTo(421.962158, 236.285355);
1759path.close();
1760path.moveTo(350.6409, 169.952347);
1761path.lineTo(401.478516, 169.952347);
1762path.quadTo(401.478516, 137.794098, 377.492493, 137.794098);
1763path.quadTo(353.40036, 137.794098, 350.6409, 169.952347);
1764path.close();
1765path.moveTo(379.213562, 278.313934);
1766path.lineTo(381.654602, 260.165222);
1767path.quadTo(399.803314, 268.761993, 417.421356, 268.761993);
1768path.quadTo(452.763611, 268.761993, 452.763611, 231.297104);
1769path.lineTo(452.763611, 213.148392);
1770path.quadTo(441.195129, 237.34668, 414.768036, 237.34668);
1771path.quadTo(394.072144, 237.34668, 381.866882, 222.275818);
1772path.quadTo(369.661591, 207.204956, 369.661591, 181.626953);
1773path.quadTo(369.661591, 155.306015, 383.565002, 138.749298);
1774path.quadTo(397.468384, 122.192581, 419.544037, 122.192581);
1775path.quadTo(438.860199, 122.192581, 452.763611, 137.900238);
1776path.lineTo(452.763611, 124.739769);
1777path.lineTo(473.777893, 124.739769);
1778path.lineTo(473.777893, 208.584686);
1779path.quadTo(473.777893, 235.64856, 470.965363, 248.649826);
1780path.quadTo(468.152863, 261.651093, 460.405151, 269.929443);
1781path.quadTo(446.71402, 284.469666, 417.845886, 284.469666);
1782path.quadTo(397.680664, 284.469666, 379.213562, 278.313934);
1783path.close();
1784path.moveTo(452.763611, 200.094055);
1785path.lineTo(452.763611, 152.228165);
1786path.quadTo(438.966339, 137.900238, 422.727997, 137.900238);
1787path.quadTo(408.293945, 137.900238, 400.121704, 149.468719);
1788path.quadTo(391.949493, 161.037186, 391.949493, 181.202423);
1789path.quadTo(391.949493, 219.091827, 418.588837, 219.091827);
1790path.quadTo(436.737549, 219.091827, 452.763611, 200.094055);
1791path.close();
1792path.moveTo(485.555908, 236.285355);
1793path.quadTo(464.541595, 242.65332, 449.576874, 242.65332);
1794path.quadTo(424.105011, 242.65332, 408.025879, 225.725143);
1795path.quadTo(391.946747, 208.796951, 391.946747, 181.839218);
1796path.quadTo(391.946747, 155.62442, 406.115479, 138.855438);
1797path.quadTo(420.28421, 122.086449, 442.359833, 122.086449);
1798path.quadTo(463.268005, 122.086449, 474.677277, 136.945038);
1799path.quadTo(486.086548, 151.803635, 486.086548, 179.185898);
1800path.lineTo(485.980438, 185.660004);
1801path.lineTo(413.279449, 185.660004);
1802path.quadTo(417.84317, 226.733398, 453.503784, 226.733398);
1803path.quadTo(466.558136, 226.733398, 485.555908, 219.728638);
1804path.lineTo(485.555908, 236.285355);
1805path.close();
1806path.moveTo(414.23465, 169.952347);
1807path.lineTo(465.072266, 169.952347);
1808path.quadTo(465.072266, 137.794098, 441.086243, 137.794098);
1809path.quadTo(416.99411, 137.794098, 414.23465, 169.952347);
1810path.close();
1811</div>
1812
1813<div id="testQuadratic42s">
1814path.moveTo(342.521729, 138.855438);
1815path.quadTo(356.69046,122.086449, 378.766083,122.086449);
1816path.quadTo(390.293488,122.086449, 398.933502,126.603004);
1817path.quadTo(408.150299,122.192581, 419.544037,122.192581);
1818path.quadTo(425.108429,122.192581, 430.223633,123.496056);
1819path.quadTo(435.959412,122.086449, 442.359833,122.086449);
1820path.quadTo(451.19516,122.086449, 458.334229,124.739769);
1821path.lineTo(473.777893,124.739769);
1822path.lineTo(473.777893,135.814713);
1823path.quadTo(474.234741,136.368698, 474.677277,136.945038);
1824path.quadTo(486.086548,151.803635, 486.086548,179.185898);
1825path.lineTo(485.980438,185.660004);
1826path.lineTo(473.777893,185.660004);
1827path.lineTo(473.777893,208.584686);
1828path.quadTo(473.777893,216.745773, 473.522156,223.628113);
1829path.quadTo(479.207153,222.069519, 485.555908,219.728638);
1830path.lineTo(485.555908,236.285355);
1831path.quadTo(478.638306,238.381592, 472.376221,239.787796);
1832path.quadTo(471.792389,244.826782, 470.965363,248.649826);
1833path.quadTo(468.152863,261.651093, 460.405151,269.929443);
1834path.quadTo(446.71402,284.469666, 417.845886,284.469666);
1835path.quadTo(397.680664,284.469666, 379.213562,278.313934);
1836path.lineTo(381.654602,260.165222);
1837path.quadTo(399.803314,268.761993, 417.421356,268.761993);
1838path.quadTo(446.944275,268.761993, 451.80542,242.619034);
1839path.quadTo(450.674866,242.65332, 449.576874,242.65332);
1840path.quadTo(434.524628,242.65332, 422.75238,236.741913);
1841path.quadTo(420.864227,237.041901, 418.884674,237.193085);
1842path.quadTo(399.840271,242.65332, 385.983124,242.65332);
1843path.quadTo(360.511261,242.65332, 344.432129,225.725143);
1844path.quadTo(328.352997,208.796951, 328.352997,181.839218);
1845path.quadTo(328.352997,155.62442, 342.521729,138.855438);
1846path.close();
1847path.moveTo(383.823944, 138.443222);
1848path.quadTo(380.900299,137.794098, 377.492493,137.794098);
1849path.quadTo(353.40036,137.794098, 350.6409,169.952347);
1850path.lineTo(370.408203,169.952347);
1851path.quadTo(372.883484,151.469254, 383.565002,138.749298);
1852path.quadTo(383.694122,138.595551, 383.823944,138.443222);
1853path.close();
1854path.moveTo(369.740021, 185.660004);
1855path.lineTo(349.685699,185.660004);
1856path.quadTo(353.983734,224.342361, 385.863525,226.594208);
1857path.quadTo(383.762756,224.616837, 381.866882,222.275818);
1858path.quadTo(370.639954,208.41301, 369.740021,185.660004);
1859path.close();
1860path.moveTo(413.279449, 185.660004);
1861path.quadTo(415.737305,207.780716, 427.214905,217.987976);
1862path.quadTo(440.600586,214.512451, 452.763611,200.094055);
1863path.lineTo(452.763611,185.660004);
1864</div>
1865
1866<div id="testQuadratic43o">
1867path.moveTo(288.755981, 240);
1868path.lineTo(288.755981, 102.232819);
1869path.lineTo(315.843994, 102.232819);
1870path.lineTo(354.009216, 208.816208);
1871path.lineTo(393.291473, 102.232819);
1872path.lineTo(417.493835, 102.232819);
1873path.lineTo(417.493835, 240);
1874path.lineTo(399.248962, 240);
1875path.lineTo(399.248962, 127.92453);
1876path.lineTo(361.269928, 230.784485);
1877path.lineTo(342.373474, 230.784485);
1878path.lineTo(305.511444, 127.645271);
1879path.lineTo(305.511444, 240);
1880path.lineTo(288.755981, 240);
1881path.close();
1882path.moveTo(397.864014, 236.741989);
1883path.quadTo(379.433014, 242.327148, 366.307892, 242.327148);
1884path.quadTo(343.967255, 242.327148, 329.864746, 227.479935);
1885path.quadTo(315.762238, 212.632736, 315.762238, 188.988907);
1886path.quadTo(315.762238, 165.996674, 328.189209, 151.289093);
1887path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
1888path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
1889path.quadTo(398.329468, 162.645584, 398.329468, 186.661758);
1890path.lineTo(398.236359, 192.339996);
1891path.lineTo(334.472504, 192.339996);
1892path.quadTo(338.475189, 228.364258, 369.752075, 228.364258);
1893path.quadTo(381.20163, 228.364258, 397.864014, 222.220581);
1894path.lineTo(397.864014, 236.741989);
1895path.close();
1896path.moveTo(335.310272, 178.563278);
1897path.lineTo(379.898438, 178.563278);
1898path.quadTo(379.898438, 150.358246, 358.861023, 150.358246);
1899path.quadTo(337.730499, 150.358246, 335.310272, 178.563278);
1900path.close();
1901path.moveTo(346.052765, 240);
1902path.lineTo(346.052765, 138.908661);
1903path.lineTo(364.390686, 138.908661);
1904path.lineTo(364.390686, 157.898193);
1905path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
1906path.quadTo(398.832489, 136.674606, 401.904327, 137.140045);
1907path.lineTo(401.904327, 154.267853);
1908path.quadTo(397.156952, 152.685394, 393.526611, 152.685394);
1909path.quadTo(376.119537, 152.685394, 364.390686, 173.350464);
1910path.lineTo(364.390686, 240);
1911path.lineTo(346.052765, 240);
1912path.close();
1913path.moveTo(362.792297, 273.604034);
1914path.lineTo(364.933289, 257.68634);
1915path.quadTo(380.850983, 265.226288, 396.303253, 265.226288);
1916path.quadTo(427.300842, 265.226288, 427.300842, 232.366959);
1917path.lineTo(427.300842, 216.449265);
1918path.quadTo(417.15448, 237.672852, 393.976105, 237.672852);
1919path.quadTo(375.824341, 237.672852, 365.119446, 224.454651);
1920path.quadTo(354.414581, 211.23645, 354.414581, 188.802734);
1921path.quadTo(354.414581, 165.717422, 366.608826, 151.196014);
1922path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
1923path.quadTo(415.106598, 136.674606, 427.300842, 150.451324);
1924path.lineTo(427.300842, 138.908661);
1925path.lineTo(445.731873, 138.908661);
1926path.lineTo(445.731873, 212.446564);
1927path.quadTo(445.731873, 236.183472, 443.265106, 247.586502);
1928path.quadTo(440.798309, 258.989532, 434.003052, 266.250244);
1929path.quadTo(421.994965, 279.002991, 396.675598, 279.002991);
1930path.quadTo(378.989258, 279.002991, 362.792297, 273.604034);
1931path.close();
1932path.moveTo(427.300842, 204.999695);
1933path.lineTo(427.300842, 163.017929);
1934path.quadTo(415.199677, 150.451324, 400.95755, 150.451324);
1935path.quadTo(388.297852, 150.451324, 381.130249, 160.597687);
1936path.quadTo(373.962616, 170.744064, 373.962616, 188.430389);
1937path.quadTo(373.962616, 221.662079, 397.327179, 221.662079);
1938path.quadTo(413.244873, 221.662079, 427.300842, 204.999695);
1939path.close();
1940path.moveTo(461.457764, 236.741989);
1941path.quadTo(443.026764, 242.327148, 429.901642, 242.327148);
1942path.quadTo(407.561005, 242.327148, 393.458496, 227.479935);
1943path.quadTo(379.355988, 212.632736, 379.355988, 188.988907);
1944path.quadTo(379.355988, 165.996674, 391.782959, 151.289093);
1945path.quadTo(404.20993, 136.581512, 423.571808, 136.581512);
1946path.quadTo(441.909729, 136.581512, 451.916473, 149.613556);
1947path.quadTo(461.923218, 162.645584, 461.923218, 186.661758);
1948path.lineTo(461.830109, 192.339996);
1949path.lineTo(398.066254, 192.339996);
1950path.quadTo(402.068939, 228.364258, 433.345825, 228.364258);
1951path.quadTo(444.79538, 228.364258, 461.457764, 222.220581);
1952path.lineTo(461.457764, 236.741989);
1953path.close();
1954path.moveTo(398.904022, 178.563278);
1955path.lineTo(443.492188, 178.563278);
1956path.quadTo(443.492188, 150.358246, 422.454773, 150.358246);
1957path.quadTo(401.324249, 150.358246, 398.904022, 178.563278);
1958path.close();
1959</div>
1960
1961<div id="testQuadratic43s">
1962path.moveTo(288.755981, 240);
1963path.lineTo(288.755981,102.232819);
1964path.lineTo(315.843994,102.232819);
1965path.lineTo(331.979736,147.294876);
1966path.quadTo(343.453125,136.581512, 359.978058,136.581512);
1967path.quadTo(370.869446,136.581512, 378.822021,141.178574);
1968path.quadTo(378.893585,141.140915, 378.965302,141.103577);
1969path.lineTo(393.291473,102.232819);
1970path.lineTo(417.493835,102.232819);
1971path.lineTo(417.493835,136.965759);
1972path.quadTo(420.44223,136.581512, 423.571808,136.581512);
1973path.quadTo(431.320984,136.581512, 437.582458,138.908661);
1974path.lineTo(445.731873,138.908661);
1975path.lineTo(445.731873,143.392502);
1976path.quadTo(449.143951,146.002823, 451.916473,149.613556);
1977path.quadTo(461.923218,162.645584, 461.923218,186.661758);
1978path.lineTo(461.830109,192.339996);
1979path.lineTo(445.731873,192.339996);
1980path.lineTo(445.731873,212.446564);
1981path.quadTo(445.731873,220.39856, 445.455017,226.966339);
1982path.quadTo(452.7435,225.43367, 461.457764,222.220581);
1983path.lineTo(461.457764,236.741989);
1984path.quadTo(452.250824,239.531982, 444.367889,240.928268);
1985path.quadTo(443.897583,244.662796, 443.265106,247.586502);
1986path.quadTo(440.798309,258.989532, 434.003052,266.250244);
1987path.quadTo(421.994965,279.002991, 396.675598,279.002991);
1988path.quadTo(378.989258,279.002991, 362.792297,273.604034);
1989path.lineTo(364.933289,257.68634);
1990path.quadTo(380.850983,265.226288, 396.303253,265.226288);
1991path.quadTo(422.230743,265.226288, 426.471558,242.237076);
1992path.quadTo(419.570892,241.869324, 413.503387,240);
1993path.lineTo(399.248962,240);
1994path.lineTo(399.248962,237.37915);
1995path.quadTo(397.047638,237.633072, 394.711517,237.667465);
1996path.quadTo(378.296356,242.327148, 366.307892,242.327148);
1997path.quadTo(357.463165,242.327148, 349.909637,240);
1998path.lineTo(346.052765,240);
1999path.lineTo(346.052765,238.625916);
2000path.quadTo(336.926056,234.914124, 329.864746,227.479935);
2001path.quadTo(315.762238,212.632736, 315.762238,188.988907);
2002path.quadTo(315.762238,176.540054, 319.405273,166.519882);
2003path.lineTo(305.511444,127.645271);
2004path.lineTo(305.511444,240);
2005path.lineTo(288.755981,240);
2006path.close();
2007path.moveTo(375.464813, 192.339996);
2008path.lineTo(374.267029,195.583939);
2009path.quadTo(375.987579,214.575378, 387.432068,219.736267);
2010path.quadTo(380.122528,208.101486, 379.428741,192.339996);
2011path.lineTo(375.464813,192.339996);
2012path.close();
2013path.moveTo(427.300842, 178.563278);
2014path.lineTo(427.300842,163.017929);
2015path.quadTo(422.561523,158.096329, 417.493835,155.102234);
2016path.lineTo(417.493835,178.563278);
2017path.lineTo(427.300842,178.563278);
2018path.close();
2019path.moveTo(427.300842, 192.339996);
2020path.lineTo(417.493835,192.339996);
2021path.lineTo(417.493835,214.429169);
2022path.quadTo(422.505676,210.684036, 427.300842,204.999695);
2023path.lineTo(427.300842,192.339996);
2024path.close();
2025path.moveTo(420.700134, 226.556015);
2026path.quadTo(423.794342,227.54834, 427.300842,227.996094);
2027path.lineTo(427.300842,216.449265);
2028path.quadTo(424.497772,222.312531, 420.700134,226.556015);
2029path.close();
2030path.moveTo(368.744965, 228.354782);
2031path.quadTo(366.836426,226.574738, 365.119446,224.454651);
2032path.quadTo(364.748657,223.996796, 364.390686,223.527878);
2033path.lineTo(364.390686,228.077774);
2034path.quadTo(366.495239,228.312164, 368.744965,228.354782);
2035path.close();
2036path.moveTo(399.248962, 199.701065);
2037path.lineTo(399.248962,192.339996);
2038path.lineTo(398.236359,192.339996);
2039path.lineTo(398.066254,192.339996);
2040path.quadTo(398.498535,196.230621, 399.248962,199.701065);
2041path.close();
2042path.moveTo(399.248962, 178.563278);
2043path.lineTo(399.248962,175.376892);
2044path.quadTo(399.04483,176.922348, 398.904022,178.563278);
2045path.lineTo(399.248962,178.563278);
2046path.close();
2047path.moveTo(399.248962, 136.688828);
2048path.lineTo(399.248962,127.92453);
2049path.lineTo(396.018158,136.674606);
2050path.quadTo(396.029053,136.674606, 396.039917,136.674606);
2051path.quadTo(396.513672,136.674606, 396.995453,136.688004);
2052path.quadTo(397.576904,136.674606, 398.164948,136.674606);
2053path.quadTo(398.709412,136.674606, 399.248962,136.688828);
2054path.close();
2055path.moveTo(346.052765, 178.563278);
2056path.lineTo(346.052765,154.02713);
2057path.quadTo(340.97113,157.621338, 338.22525,164.736588);
2058path.lineTo(343.1763,178.563278);
2059path.lineTo(346.052765,178.563278);
2060path.close();
2061path.moveTo(364.390686, 150.922379);
2062path.lineTo(364.390686,154.048065);
2063path.quadTo(365.340851,152.726639, 366.38147,151.468765);
2064path.quadTo(365.420258,151.14975, 364.390686,150.922379);
2065path.close();
2066path.moveTo(367.863586, 152.032623);
2067path.quadTo(367.144043,151.721848, 366.38147,151.468765);
2068</div>
2069
2070<div id="testQuadratic44o">
2071path.moveTo(354.009216, 208.816208);
2072path.lineTo(393.291473, 102.232819);
2073path.lineTo(399.248962, 127.92453);
2074path.lineTo(361.269928, 230.784485);
2075path.lineTo(354.009216, 208.816208);
2076path.close();
2077path.moveTo(328.189209, 151.289093);
2078path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
2079path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2080path.lineTo(328.189209, 151.289093);
2081path.close();
2082path.moveTo(346.052765, 138.908661);
2083path.lineTo(364.390686, 138.908661);
2084path.lineTo(364.390686, 157.898193);
2085path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2086path.lineTo(346.052765, 138.908661);
2087path.close();
2088</div>
2089
2090<div id="testQuadratic44s">
2091path.moveTo(380.33902, 137.376312);
2092path.lineTo(393.291473,102.232819);
2093path.lineTo(399.248962,127.92453);
2094path.lineTo(396.018158,136.674606);
2095path.quadTo(396.029053,136.674606, 396.039917,136.674606);
2096path.lineTo(396.017792,136.675598);
2097path.lineTo(361.269928,230.784485);
2098path.lineTo(354.009216,208.816208);
2099path.lineTo(375.699249,149.965286);
2100path.lineTo(369.22699,150.14563);
2101path.quadTo(373.524384,144.511566, 378.917297,141.233871);
2102path.lineTo(380.33902,137.376312);
2103path.close();
caryclark@google.coma461ff02012-10-11 12:54:23 +00002104path.moveTo(380.33902, 137.376312);
2105path.lineTo(378.917297,141.233856);
2106path.quadTo(375.048248,138.978912, 370.480499,137.816925);
2107path.lineTo(380.33902,137.376312);
2108path.close();
caryclark@google.com6aea33f2012-10-09 14:11:58 +00002109path.moveTo(392.55661, 136.830276);
caryclark@google.coma461ff02012-10-11 12:54:23 +00002110path.lineTo(380.33902,137.376312);
2111</div>
2112
2113<div id="testQuadratic45o">
2114path.moveTo(315.843994, 102.232819);
2115path.lineTo(354.009216, 208.816208);
2116path.lineTo(393.291473, 102.232819);
2117path.lineTo(399.248962, 127.92453);
2118path.lineTo(361.269928, 230.784485);
2119path.lineTo(342.373474, 230.784485);
2120path.lineTo(305.511444, 127.645271);
2121path.lineTo(315.843994, 102.232819);
2122path.close();
2123path.moveTo(366.307892, 242.327148);
2124path.quadTo(343.967255, 242.327148, 329.864746, 227.479935);
2125path.quadTo(315.762238, 212.632736, 315.762238, 188.988907);
2126path.quadTo(315.762238, 165.996674, 328.189209, 151.289093);
2127path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
2128path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2129path.quadTo(398.329468, 162.645584, 398.329468, 186.661758);
2130path.lineTo(398.236359, 192.339996);
2131path.lineTo(334.472504, 192.339996);
2132path.quadTo(338.475189, 228.364258, 369.752075, 228.364258);
2133path.quadTo(381.20163, 228.364258, 397.864014, 222.220581);
2134path.lineTo(366.307892, 242.327148);
2135path.close();
2136path.moveTo(335.310272, 178.563278);
2137path.lineTo(379.898438, 178.563278);
2138path.quadTo(379.898438, 150.358246, 358.861023, 150.358246);
2139path.quadTo(337.730499, 150.358246, 335.310272, 178.563278);
2140path.close();
2141path.moveTo(346.052765, 240);
2142path.lineTo(346.052765, 138.908661);
2143path.lineTo(364.390686, 138.908661);
2144path.lineTo(364.390686, 157.898193);
2145path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2146path.lineTo(401.904327, 154.267853);
2147path.quadTo(397.156952, 152.685394, 393.526611, 152.685394);
2148path.quadTo(376.119537, 152.685394, 364.390686, 173.350464);
2149path.lineTo(364.390686, 240);
2150path.lineTo(346.052765, 240);
2151path.close();
2152path.moveTo(396.303253, 265.226288);
2153path.quadTo(427.300842, 265.226288, 427.300842, 232.366959);
2154path.lineTo(427.300842, 216.449265);
2155path.quadTo(417.15448, 237.672852, 393.976105, 237.672852);
2156path.quadTo(375.824341, 237.672852, 365.119446, 224.454651);
2157path.quadTo(354.414581, 211.23645, 354.414581, 188.802734);
2158path.quadTo(354.414581, 165.717422, 366.608826, 151.196014);
2159path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
2160path.lineTo(396.303253, 265.226288);
2161path.close();
2162path.moveTo(400.95755, 150.451324);
2163path.quadTo(388.297852, 150.451324, 381.130249, 160.597687);
2164path.quadTo(373.962616, 170.744064, 373.962616, 188.430389);
2165path.quadTo(373.962616, 221.662079, 397.327179, 221.662079);
2166path.lineTo(400.95755, 150.451324);
2167path.close();
2168path.moveTo(429.901642, 242.327148);
2169path.quadTo(407.561005, 242.327148, 393.458496, 227.479935);
2170path.quadTo(379.355988, 212.632736, 379.355988, 188.988907);
2171path.quadTo(379.355988, 165.996674, 391.782959, 151.289093);
2172path.quadTo(404.20993, 136.581512, 423.571808, 136.581512);
2173path.lineTo(429.901642, 242.327148);
2174path.close();
2175</div>
2176
2177<div id="testQuadratic45s">
2178path.moveTo(305.511444, 127.645271);
2179path.lineTo(315.843994,102.232819);
2180path.lineTo(331.979736,147.294876);
2181path.quadTo(343.453125,136.581512, 359.978058,136.581512);
2182path.quadTo(370.869446,136.581512, 378.822021,141.178574);
2183path.quadTo(378.893585,141.140915, 378.965302,141.103577);
2184path.lineTo(393.291473,102.232819);
2185path.lineTo(399.248962,127.92453);
2186path.lineTo(396.018158,136.674606);
2187path.quadTo(396.029053,136.674606, 396.039917,136.674606);
2188path.lineTo(396.054596,136.718628);
2189path.quadTo(397.098907,136.674606, 398.164948,136.674606);
2190path.lineTo(398.076477,142.784256);
2191path.lineTo(398.697632,144.647751);
2192path.quadTo(409.233032,136.581512, 423.571808,136.581512);
2193path.lineTo(429.901642,242.327148);
2194path.quadTo(428.161621,242.327148, 426.471558,242.237076);
2195path.quadTo(427.300842,237.741562, 427.300842,232.366959);
2196path.lineTo(427.300842,216.449265);
2197path.quadTo(419.710114,232.327133, 404.8255,236.326401);
2198path.quadTo(400.557983,233.971252, 396.803375,230.691772);
2199path.lineTo(396.7034,237.596863);
2200path.quadTo(395.363068,237.672852, 393.976105,237.672852);
2201path.quadTo(385.309937,237.672852, 378.341187,234.659912);
2202path.lineTo(366.307892,242.327148);
2203path.quadTo(357.463165,242.327148, 349.909637,240);
2204path.lineTo(346.052765,240);
2205path.lineTo(346.052765,238.625916);
2206path.quadTo(336.926056,234.914124, 329.864746,227.479935);
2207path.quadTo(315.762238,212.632736, 315.762238,188.988907);
2208path.quadTo(315.762238,176.540054, 319.405273,166.519882);
2209path.lineTo(305.511444,127.645271);
2210path.close();
2211path.moveTo(375.464813, 192.339996);
2212path.lineTo(374.267029,195.583939);
2213path.quadTo(375.987579,214.575378, 387.432068,219.736267);
2214path.quadTo(380.122528,208.101486, 379.428741,192.339996);
2215path.lineTo(375.464813,192.339996);
2216path.close();
2217path.moveTo(397.925934, 153.178131);
2218path.lineTo(397.615479,174.615356);
2219path.quadTo(398.329468,180.246704, 398.329468,186.661758);
2220path.lineTo(398.236359,192.339996);
2221path.lineTo(397.358795,192.339996);
2222path.lineTo(396.934174,221.659714);
2223path.quadTo(397.129852,221.662079, 397.327179,221.662079);
2224path.lineTo(400.781189,153.910889);
2225path.quadTo(399.295654,153.462463, 397.925934,153.178131);
2226path.close();
2227path.moveTo(400.914398, 151.298019);
2228path.lineTo(400.632721,150.453003);
2229path.quadTo(400.794678,150.451324, 400.95755,150.451324);
2230path.lineTo(400.914398,151.298019);
2231path.close();
2232path.moveTo(368.744965, 228.354782);
2233path.quadTo(366.836426,226.574738, 365.119446,224.454651);
2234path.quadTo(364.748657,223.996796, 364.390686,223.527878);
2235path.lineTo(364.390686,228.077774);
2236path.quadTo(366.495239,228.312164, 368.744965,228.354782);
2237path.close();
2238path.moveTo(346.052765, 178.563278);
2239path.lineTo(346.052765,154.02713);
2240path.quadTo(340.97113,157.621338, 338.22525,164.736588);
2241path.lineTo(343.1763,178.563278);
2242path.lineTo(346.052765,178.563278);
2243path.close();
2244path.moveTo(364.390686, 150.922379);
2245path.lineTo(364.390686,154.048065);
2246path.quadTo(365.340851,152.726639, 366.38147,151.468765);
2247path.quadTo(365.420258,151.14975, 364.390686,150.922379);
2248path.close();
2249path.moveTo(367.863586, 152.032623);
2250path.quadTo(367.144043,151.721848, 366.38147,151.468765);
2251</div>
2252
2253<div id="testQuadratic46o">
2254path.moveTo(366.608826, 151.196014);
2255path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
2256path.lineTo(354.009216, 208.816208);
2257path.lineTo(393.291473, 102.232819);
2258path.lineTo(359.978058, 136.581512);
2259path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2260path.lineTo(364.390686, 157.898193);
2261path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2262path.lineTo(350, 120);
2263path.lineTo(366.608826, 151.196014);
2264path.close();
2265</div>
2266
2267<div id="testQuadratic46s">
2268path.moveTo(369.285553, 126.984779);
2269path.lineTo(393.291473,102.232819);
2270path.lineTo(382.416199,131.740402);
2271path.lineTo(396.039917,136.674606);
2272path.quadTo(387.290802,136.674606, 380.294495,140.44487);
2273path.quadTo(379.623352,140.760971, 378.965302,141.103577);
2274path.lineTo(378.917297,141.233856);
2275path.quadTo(378.86972,141.206131, 378.822021,141.178574);
2276path.quadTo(372.011871,144.761871, 366.608826,151.196014);
2277path.lineTo(350,120);
2278path.lineTo(369.285553,126.984779);
2279path.close();
2280path.moveTo(374.00174, 154.571106);
2281path.lineTo(378.917297,141.233871);
2282path.quadTo(378.917297,141.233871, 378.917297,141.233856);
2283path.quadTo(384.294891,144.368011, 388.322723,149.613556);
2284path.lineTo(374.00174,154.571106);
2285path.close();
2286path.moveTo(378.917297, 141.233871);
2287path.quadTo(370.233887,146.511475, 364.390686,157.898193);
2288path.lineTo(374.00174,154.571106);
2289path.lineTo(354.009216,208.816208);
2290path.lineTo(398.164948,136.674606);
2291path.quadTo(388.299255,136.674606, 380.294495,140.44487);
caryclark@google.com6aea33f2012-10-09 14:11:58 +00002292</div>
2293
caryclark@google.comc91dfe42012-10-16 12:06:27 +00002294<div id="testQuadratic47o">
2295path.moveTo(343.939362, 212.598053);
2296path.lineTo(378.457642, 118.940636);
2297path.lineTo(383.692657, 141.516571);
2298path.lineTo(350.319519, 231.902115);
2299path.lineTo(343.939362, 212.598053);
2300path.close();
2301path.moveTo(325.429016, 162.047577);
2302path.quadTo(336.348907, 149.123688, 353.36264, 149.123688);
2303path.quadTo(369.476624, 149.123688, 378.269806, 160.575241);
2304path.lineTo(325.429016, 162.047577);
2305path.close();
2306path.moveTo(370.867188, 186.014069);
2307path.quadTo(370.867188, 161.229614, 352.381104, 161.229614);
2308path.quadTo(333.813202, 161.229614, 331.686493, 186.014069);
2309path.lineTo(370.867188, 186.014069);
2310path.close();
2311path.moveTo(353.161499, 195.011719);
2312path.quadTo(353.161499, 174.726105, 363.876862, 161.96579);
2313path.lineTo(353.161499, 195.011719);
2314path.close();
2315</div>
2316
2317<div id="testQuadratic47s">
2318path.moveTo(366.466309, 151.476364);
2319path.lineTo(378.457642,118.940636);
2320path.lineTo(383.692657,141.516571);
2321path.lineTo(377.159943,159.209305);
2322path.quadTo(377.728729,159.87059, 378.269806,160.575241);
2323path.lineTo(376.638824,160.620682);
2324path.lineTo(370.26593,177.8806);
2325path.quadTo(368.708496,168.390671, 363.116943,164.309357);
2326path.lineTo(356.079041,186.014069);
2327path.lineTo(367.262817,186.014069);
2328path.lineTo(350.319519,231.902115);
2329path.lineTo(343.939362,212.598053);
2330path.lineTo(353.736816,186.014923);
2331path.lineTo(353.737122,186.014069);
2332path.lineTo(353.736938,186.014069);
2333path.quadTo(353.736877,186.014496, 353.736816,186.014923);
2334path.quadTo(353.161499,190.31131, 353.161499,195.011719);
2335</div>
2336
caryclark@google.comfb51afb2012-10-19 15:54:16 +00002337<div id="testQuadratic48o">
2338path.moveTo(366.608826, 151.196014);
2339path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
2340path.lineTo(354.009216, 208.816208);
2341path.lineTo(393.291473, 102.232819);
2342path.lineTo(359.978058, 136.581512);
2343path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2344path.lineTo(364.390686, 157.898193);
2345path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2346path.lineTo(350, 120);
2347path.lineTo(366.608826, 151.196014);
2348path.close();
2349</div>
2350
2351<div id="testQuadratic48s">
2352path.moveTo(369.285553, 126.984779);
2353path.lineTo(393.291473,102.232819);
2354path.lineTo(382.416199,131.740402);
2355path.lineTo(396.039917,136.674606);
2356path.quadTo(387.290802,136.674606, 380.294495,140.44487);
2357path.quadTo(379.623352,140.760971, 378.965302,141.103577);
2358path.lineTo(378.917297,141.233856);
2359path.quadTo(378.86972,141.206131, 378.822021,141.178574);
2360path.quadTo(372.011871,144.761871, 366.608826,151.196014);
2361path.lineTo(350,120);
2362path.lineTo(369.285553,126.984779);
2363path.close();
2364</div>
2365
2366<div id="testQuadratic49s">
2367path.moveTo(366.400513, 204.162521);
2368path.lineTo(411.545044, 81.6732483);
2369path.lineTo(366.400513, 204.162521);
2370path.close();
2371path.moveTo(331.585693, 138.050415);
2372path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
2373path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
2374path.lineTo(331.585693, 138.050415);
2375path.close();
2376path.moveTo(369.863983, 145.645813);
2377path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2378path.lineTo(369.863983, 145.645813);
2379path.close();
2380path.moveTo(369.970581, 137.94342);
2381path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2382path.lineTo(369.970581, 137.94342);
2383path.close();
2384</div>
2385
2386<div id="testQuadratic50o">
2387path.moveTo(366.400513, 204.162521);
2388path.lineTo(411.545044, 81.6732483);
2389path.lineTo(366.400513, 204.162521);
2390path.close();
2391path.moveTo(331.585693, 138.050415);
2392path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
2393path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
2394path.lineTo(331.585693, 138.050415);
2395path.close();
2396path.moveTo(369.863983, 145.645813);
2397path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2398path.lineTo(369.863983, 145.645813);
2399path.close();
2400path.moveTo(369.970581, 137.94342);
2401path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2402path.lineTo(369.970581, 137.94342);
2403path.close();
2404</div>
2405
2406<div id="testQuadratic50s">
2407path.moveTo(331.585693, 138.050415);
2408path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2409path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2410path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2411path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2412path.lineTo(395.061676,126.397095);
2413path.lineTo(391.979187,127.81559);
2414path.quadTo(393.010406,128.517273, 393.994415,129.292801);
2415path.quadTo(394.053131,129.339066, 394.111664,129.385605);
2416path.lineTo(393.910492,129.520508);
2417path.lineTo(383.340973,136.608322);
2418path.lineTo(375.350006,136.830978);
2419path.quadTo(376.20224,135.708145, 377.092102,134.66626);
2420path.lineTo(372.197113,136.918823);
2421</div>
2422
2423<div id="testQuadratic51">
2424path.moveTo(369.863983, 145.645813);
2425path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2426path.lineTo(369.863983, 145.645813);
2427path.close();
2428path.moveTo(369.970581, 137.94342);
2429path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2430path.lineTo(369.970581, 137.94342);
2431path.close();
2432</div>
2433
caryclark@google.com185c7c42012-10-19 18:26:24 +00002434<div id="testQuadratic52o">
2435path.moveTo(366.400513, 204.162521);
2436path.lineTo(411.545044, 81.6732483);
2437path.lineTo(366.400513, 204.162521);
2438path.close();
2439path.moveTo(331.585693, 138.050415);
2440path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
2441path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
2442path.lineTo(331.585693, 138.050415);
2443path.close();
2444path.moveTo(369.863983, 145.645813);
2445path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2446path.lineTo(369.863983, 145.645813);
2447path.close();
2448path.moveTo(369.970581, 137.94342);
2449path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2450path.lineTo(369.970581, 137.94342);
2451path.close();
2452</div>
2453
2454<div id="testQuadratic52s">
2455path.moveTo(331.585693, 138.050415);
2456path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2457path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2458path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2459path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2460path.close();
2461path.moveTo(383.340973, 136.608322);
2462path.lineTo(369.863983,145.645813);
2463path.quadTo(372.378204,140.746292, 375.350006,136.830978);
2464path.lineTo(372.197113,136.918823);
2465path.lineTo(369.970581,137.94342);
2466path.quadTo(370.390961,137.442825, 370.818756,136.95723);
2467path.lineTo(331.585693,138.050415);
2468path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2469path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2470path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2471path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2472path.close();
2473path.moveTo(383.340973, 136.608322);
2474path.lineTo(391.380798,136.384293);
2475path.lineTo(400.693176,136.124817);
2476path.quadTo(397.721985,132.255341, 394.111664,129.385605);
2477path.lineTo(406.236359,121.254936);
2478path.quadTo(406.236176,121.254936, 406.235992,121.254936);
2479path.lineTo(406.235992,121.254936);
2480path.quadTo(401.232697,121.254936, 396.645874,122.098694);
2481path.quadTo(391.577667,123.030998, 387.017914,124.993469);
2482path.quadTo(378.797424,121.147957, 368.11853,121.147957);
2483path.quadTo(345.867188,121.147957, 331.585693,138.050415);
2484path.lineTo(370.818756,136.95723);
2485path.quadTo(370.390961,137.442825, 369.970581,137.94342);
2486path.lineTo(372.197113,136.918823);
2487path.lineTo(375.350006,136.830978);
2488path.quadTo(372.378204,140.746292, 369.863983,145.645813);
2489path.lineTo(383.340973,136.608322);
2490path.close();
2491</div>
2492
caryclark@google.comf839c032012-10-26 21:03:50 +00002493<div id="testQuadratic52sa">
2494path.moveTo(331.585693, 138.050415);
2495path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2496path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2497path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2498path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2499path.close();
2500</div>
2501
2502<div id="testQuadratic52sb">
2503path.moveTo(383.340973, 136.608322);
2504path.lineTo(369.863983,145.645813);
2505path.quadTo(372.378204,140.746292, 375.350006,136.830978);
2506path.lineTo(372.197113,136.918823);
2507path.lineTo(369.970581,137.94342);
2508path.quadTo(370.390961,137.442825, 370.818756,136.95723);
2509path.lineTo(331.585693,138.050415);
2510path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2511path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2512path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2513path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2514path.close();
2515</div>
2516
2517<div id="testQuadratic52sc">
2518path.moveTo(383.340973, 136.608322);
2519path.lineTo(391.380798,136.384293);
2520path.lineTo(400.693176,136.124817);
2521path.quadTo(397.721985,132.255341, 394.111664,129.385605);
2522path.lineTo(406.236359,121.254936);
2523path.quadTo(406.236176,121.254936, 406.235992,121.254936);
2524path.lineTo(406.235992,121.254936);
2525path.quadTo(401.232697,121.254936, 396.645874,122.098694);
2526path.quadTo(391.577667,123.030998, 387.017914,124.993469);
2527path.quadTo(378.797424,121.147957, 368.11853,121.147957);
2528path.quadTo(345.867188,121.147957, 331.585693,138.050415);
2529path.lineTo(370.818756,136.95723);
2530path.quadTo(370.390961,137.442825, 369.970581,137.94342);
2531path.lineTo(372.197113,136.918823);
2532path.lineTo(375.350006,136.830978);
2533path.quadTo(372.378204,140.746292, 369.863983,145.645813);
2534path.lineTo(383.340973,136.608322);
2535path.close();
2536</div>
2537
2538<div id="testQuadratic53o">
2539path.moveTo(303.12088, 141.299606);
2540path.lineTo(330.463562, 217.659027);
2541path.lineTo(303.12088, 141.299606);
2542path.close();
2543path.moveTo(371.919067, 205.854996);
2544path.lineTo(326.236786, 205.854996);
2545path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2546path.lineTo(371.919067, 205.854996);
2547path.close();
2548</div>
2549
2550<div id="testQuadratic53s">
2551path.moveTo(326.236786,205.854996);
2552path.lineTo(326.236786,205.854996);
2553path.close();
2554path.moveTo(371.919067,205.854996);
2555path.lineTo(326.236786,205.854996);
2556</div>
2557
2558<div id="testQuadratic54">
2559path.moveTo(303.12088, 141.299606);
2560path.lineTo(330.463562, 217.659027);
2561path.lineTo(358.606506, 141.299606);
2562path.lineTo(303.12088, 141.299606);
2563path.close();
2564path.moveTo(371.919067, 205.854996);
2565path.lineTo(326.236786, 205.854996);
2566path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2567path.lineTo(371.919067, 205.854996);
2568path.close();
2569</div>
2570
2571<div id="testQuadratic55o">
2572path.moveTo(303.12088, 141.299606);
2573path.lineTo(330.463562, 217.659027);
2574path.lineTo(358.606506, 141.299606);
2575path.lineTo(303.12088, 141.299606);
2576path.close();
2577path.moveTo(326.236786, 205.854996);
2578path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2579path.lineTo(326.236786, 205.854996);
2580path.close();
2581</div>
2582
2583<div id="testQuadratic55s">
2584path.moveTo(326.236786,205.854996);
2585path.lineTo(303.12088,141.299606);
2586path.lineTo(358.606506,141.299606);
2587path.lineTo(332.468719,212.218475);
2588path.lineTo(351.512085,231.663818);
2589path.quadTo(329.104431,231.663818, 326.236786,205.854996);
2590path.close();
2591</div>
2592
2593<div id="testQuadratic56o">
2594path.moveTo(366.608826, 151.196014);
2595path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
2596path.lineTo(354.009216, 208.816208);
2597path.lineTo(393.291473, 102.232819);
2598path.lineTo(359.978058, 136.581512);
2599path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2600path.lineTo(364.390686, 157.898193);
2601path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2602path.lineTo(350, 120);
2603path.lineTo(366.608826, 151.196014);
2604path.close();
2605</div>
2606
2607<div id="testQuadratic56s">
2608path.moveTo(369.285553,126.984779);
2609path.lineTo(393.291473,102.232819);
2610path.lineTo(382.416199,131.740402);
2611path.lineTo(396.039917,136.674606);
2612path.quadTo(387.290802,136.674606, 380.294495,140.44487);
2613path.quadTo(379.623352,140.760971, 378.965302,141.103577);
2614path.lineTo(378.917297,141.233856);
2615path.quadTo(378.86972,141.206131, 378.822021,141.178574);
2616path.quadTo(372.011871,144.761871, 366.608826,151.196014);
2617path.lineTo(350,120);
2618path.lineTo(369.285553,126.984779);
2619path.close();
2620path.moveTo(378.917297,141.233871);
2621path.lineTo(378.917297,141.233856);
2622path.quadTo(378.86972,141.206131, 378.822021,141.178574);
2623path.quadTo(372.011871,144.761871, 366.608826,151.196014);
2624</div>
2625
2626<div id="testQuadratic57o">
2627path.moveTo(303.12088, 141.299606);
2628path.lineTo(330.463562, 217.659027);
2629path.lineTo(358.606506, 141.299606);
2630path.lineTo(362.874634, 159.705902);
2631path.lineTo(335.665344, 233.397751);
2632path.lineTo(322.12738, 233.397751);
2633path.lineTo(295.718353, 159.505829);
2634path.lineTo(295.718353, 240);
2635path.lineTo(303.12088, 141.299606);
2636path.close();
2637path.moveTo(322.935669, 231.030273);
2638path.quadTo(312.832214, 220.393295, 312.832214, 203.454178);
2639path.quadTo(312.832214, 186.981888, 321.73526, 176.444946);
2640path.quadTo(330.638306, 165.90802, 344.509705, 165.90802);
2641path.lineTo(371.919067, 205.854996);
2642path.lineTo(326.236786, 205.854996);
2643path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2644path.lineTo(322.935669, 231.030273);
2645path.close();
2646path.moveTo(326.837006, 195.984955);
2647path.lineTo(358.78125, 195.984955);
2648path.lineTo(343.709442, 175.778046);
2649path.quadTo(328.570923, 175.778046, 326.837006, 195.984955);
2650path.close();
2651</div>
2652
2653<div id="testQuadratic57s">
2654path.moveTo(300.708282,173.46756);
2655path.lineTo(303.12088,141.299606);
2656path.lineTo(317.770294,182.210785);
2657path.quadTo(319.462738,179.134506, 321.73526,176.444946);
2658path.quadTo(330.638306,165.90802, 344.509705,165.90802);
2659path.lineTo(347.780151,170.674438);
2660path.lineTo(358.606506,141.299606);
2661path.lineTo(362.874634,159.705902);
2662path.lineTo(354.960693,181.139511);
2663path.lineTo(371.919067,205.854996);
2664path.lineTo(345.834961,205.854996);
2665path.lineTo(337.609253,228.13298);
2666path.quadTo(342.649323,231.302383, 349.843323,231.626816);
2667path.lineTo(336.429047,231.329422);
2668path.lineTo(335.665344,233.397751);
2669path.lineTo(322.12738,233.397751);
2670path.lineTo(320.050781,227.587433);
2671path.quadTo(313.982483,219.336182, 313.015503,207.902908);
2672path.lineTo(300.708282,173.46756);
2673path.close();
2674path.moveTo(300.708282,173.46756);
2675path.lineTo(295.718353,240);
2676path.lineTo(295.718353,159.505829);
2677path.lineTo(300.708282,173.46756);
2678path.close();
2679path.moveTo(349.843323,231.626816);
2680path.lineTo(351.512085,231.663818);
2681path.quadTo(350.663696,231.663818, 349.843323,231.626816);
2682path.close();
2683path.moveTo(326.236786,205.854996);
2684path.lineTo(330.463562,217.659027);
2685path.lineTo(334.814056,205.854996);
2686path.lineTo(326.236786,205.854996);
2687path.close();
2688path.moveTo(334.814056,205.854996);
2689path.lineTo(338.451721,195.984955);
2690path.lineTo(349.479309,195.984955);
2691path.lineTo(352.559326,187.643173);
2692path.lineTo(358.78125,195.984955);
2693</div>
2694
2695<div id="testQuadratic58o">
2696path.moveTo(283.714233, 240);
2697path.lineTo(283.714233, 141.299606);
2698path.lineTo(303.12088, 141.299606);
2699path.lineTo(330.463562, 217.659027);
2700path.lineTo(358.606506, 141.299606);
2701path.lineTo(362.874634, 159.705902);
2702path.lineTo(335.665344, 233.397751);
2703path.lineTo(322.12738, 233.397751);
2704path.lineTo(295.718353, 159.505829);
2705path.lineTo(295.718353, 240);
2706path.lineTo(283.714233, 240);
2707path.close();
2708path.moveTo(322.935669, 231.030273);
2709path.quadTo(312.832214, 220.393295, 312.832214, 203.454178);
2710path.quadTo(312.832214, 186.981888, 321.73526, 176.444946);
2711path.quadTo(330.638306, 165.90802, 344.509705, 165.90802);
2712path.quadTo(357.647522, 165.90802, 364.81665, 175.244537);
2713path.lineTo(371.919067, 205.854996);
2714path.lineTo(326.236786, 205.854996);
2715path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2716path.lineTo(322.935669, 231.030273);
2717path.close();
2718path.moveTo(326.837006, 195.984955);
2719path.lineTo(358.78125, 195.984955);
2720path.quadTo(358.78125, 175.778046, 343.709442, 175.778046);
2721path.quadTo(328.570923, 175.778046, 326.837006, 195.984955);
2722path.close();
2723</div>
2724
2725<div id="testQuadratic58s">
2726path.moveTo(283.714233,240);
2727path.lineTo(283.714233,141.299606);
2728path.lineTo(303.12088,141.299606);
2729path.lineTo(317.770294,182.210785);
2730path.quadTo(319.462738,179.134506, 321.73526,176.444946);
2731path.quadTo(330.638306,165.90802, 344.509705,165.90802);
2732path.quadTo(347.07132,165.90802, 349.406036,166.26297);
2733path.lineTo(358.606506,141.299606);
2734path.lineTo(362.874634,159.705902);
2735path.lineTo(359.116211,169.884979);
2736path.quadTo(362.326477,172.001541, 364.81665,175.244537);
2737path.lineTo(371.919067,205.854996);
2738path.lineTo(345.834961,205.854996);
2739path.lineTo(337.609253,228.13298);
2740path.quadTo(342.649323,231.302383, 349.843323,231.626816);
2741path.lineTo(336.429047,231.329422);
2742path.lineTo(335.665344,233.397751);
2743path.lineTo(322.12738,233.397751);
2744path.lineTo(320.050781,227.587433);
2745path.quadTo(313.982483,219.336182, 313.015503,207.902908);
2746path.lineTo(295.718353,159.505829);
2747path.lineTo(295.718353,240);
2748path.lineTo(283.714233,240);
2749path.close();
2750path.moveTo(349.843323,231.626816);
2751path.lineTo(351.512085,231.663818);
2752path.quadTo(350.663696,231.663818, 349.843323,231.626816);
2753path.close();
2754path.moveTo(326.236786,205.854996);
2755path.lineTo(330.463562,217.659027);
2756path.lineTo(334.814056,205.854996);
2757path.lineTo(326.236786,205.854996);
2758path.close();
2759path.moveTo(334.814056,205.854996);
2760path.lineTo(338.451721,195.984955);
2761path.lineTo(349.479309,195.984955);
2762path.lineTo(355.054535,180.885361);
2763path.quadTo(358.78125,185.936935, 358.78125,195.984955);
2764</div>
2765
2766<div id="testQuadratic58a">
2767path.moveTo(283.714233,240);
2768path.lineTo(283.714233,141.299606);
2769path.lineTo(303.12088,141.299606);
2770path.lineTo(317.770294,182.210785);
2771path.quadTo(319.462738,179.134506, 321.73526,176.444946);
2772path.quadTo(330.638306,165.90802, 344.509705,165.90802);
2773path.quadTo(347.07132,165.90802, 349.406036,166.26297);
2774path.lineTo(358.606506,141.299606);
2775path.lineTo(362.874634,159.705902);
2776path.lineTo(359.116211,169.884979);
2777path.quadTo(362.326477,172.001541, 364.81665,175.244537);
2778path.lineTo(371.919067,205.854996);
2779path.lineTo(345.834961,205.854996);
2780path.lineTo(337.609253,228.13298);
2781path.quadTo(342.649323,231.302383, 349.843323,231.626816);
2782path.lineTo(336.429047,231.329422);
2783path.lineTo(335.665344,233.397751);
2784path.lineTo(322.12738,233.397751);
2785path.lineTo(320.050781,227.587433);
2786path.quadTo(313.982483,219.336182, 313.015503,207.902908);
2787path.lineTo(295.718353,159.505829);
2788path.lineTo(295.718353,240);
2789path.lineTo(283.714233,240);
2790path.close();
2791path.moveTo(349.843323,231.626816);
2792path.lineTo(351.512085,231.663818);
2793path.quadTo(350.663696,231.663818, 349.843323,231.626816);
2794path.close();
2795path.moveTo(349.479309,195.984955);
2796path.lineTo(358.78125,195.984955);
2797path.quadTo(358.78125,185.936935, 355.054535,180.885361);
2798path.lineTo(349.479309,195.984955);
2799path.close();
2800path.moveTo(345.858368,175.888794);
2801path.lineTo(338.451721,195.984955);
2802path.lineTo(326.837006,195.984955);
2803path.quadTo(328.570923,175.778046, 343.709442,175.778046);
2804path.quadTo(344.825195,175.778046, 345.858368,175.888794);
2805path.close();
2806</div>
2807
caryclark@google.comdb0b3e02012-12-21 21:34:36 +00002808<div id="testQuadratic59">
2809 path.moveTo(0, 0);
2810 path.quadTo(0, 0, 0, 0);
2811 path.lineTo(2, 2);
2812 path.close();
2813 path.moveTo(0, 0);
2814 path.lineTo(2, 0);
2815 path.quadTo(3, 1, 1, 2);
2816</div>
2817
caryclark@google.com0b7da432012-10-31 19:00:20 +00002818<div id="testQuadratic59o">
2819path.moveTo(369.863983, 145.645813);
2820path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2821path.quadTo(409.445679, 121.254936, 412.975952, 121.789818);
2822path.lineTo(369.863983, 145.645813);
2823path.close();
2824path.moveTo(369.970581, 137.94342);
2825path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2826path.quadTo(425.705902, 121.254936, 439.71994, 137.087616);
2827path.lineTo(369.970581, 137.94342);
2828path.close();
2829</div>
2830
2831<div id="testQuadratic59s">
2832path.moveTo(369.970581,137.94342);
2833path.quadTo(383.98465,121.254936, 406.235992,121.254936);
2834path.quadTo(406.237854,121.254936, 406.239746,121.254936);
2835path.lineTo(406.239532,121.254936);
2836path.quadTo(409.447418,121.255203, 412.975952,121.789818);
2837</div>
2838
2839<div id="testQuadratic60">
2840path.moveTo(360.416077, 166.795715);
2841path.quadTo(370.126831, 147.872162, 388.635406, 147.872162);
2842path.lineTo(360.416077, 166.795715);
2843path.close();
2844path.moveTo(353.2948, 194.351074);
2845path.quadTo(353.2948, 173.767563, 364.167572, 160.819855);
2846path.quadTo(375.040314, 147.872162, 392.303894, 147.872162);
2847path.lineTo(353.2948, 194.351074);
2848path.close();
2849</div>
2850
2851<div id="testQuadratic61">
2852path.moveTo(348.781738, 123.864815);
2853path.lineTo(369.848602, 123.864815);
2854path.lineTo(369.848602, 145.680267);
2855path.quadTo(382.360413, 121.298294, 406.207703, 121.298294);
2856path.lineTo(348.781738, 123.864815);
2857path.close();
2858path.moveTo(369.961151, 137.980698);
2859path.quadTo(383.970093, 121.298294, 406.213287, 121.298294);
2860path.lineTo(369.961151, 137.980698);
2861path.close();
2862</div>
2863
caryclark@google.come7bd5f42012-12-13 19:47:53 +00002864<div id="testQuadratic62x">
2865 path.setFillType(SkPath::kEvenOdd_FillType);
2866 path.moveTo(0, 0);
2867 path.quadTo(0, 0, 0, 0);
2868 path.lineTo(2, 2);
2869 path.close();
2870 path.moveTo(0, 0);
2871 path.lineTo(2, 0);
2872 path.quadTo(3, 1, 1, 2);
2873 path.close();
2874</div>
2875
2876<div id="testLine1a">
2877 path.addRect(0, 0, 12, 12, SkPath::kCW_Direction);
2878 path.addRect(4, 0, 13, 13, SkPath::kCCW_Direction);
2879 path.close();
2880</div>
2881
2882<div id="testQuadratic63">
2883 path.moveTo(0, 0);
2884 path.quadTo(0, 0, 0, 0);
2885 path.lineTo(3, 2);
2886 path.close();
2887 path.moveTo(1, 0);
2888 path.lineTo(2, 1);
2889 path.quadTo(2, 1, 2, 2);
2890 path.close();
2891</div>
2892
2893<div id="testQuadratic64">
2894 path.moveTo(0, 0);
2895 path.quadTo(0, 0, 0, 0);
2896 path.lineTo(2, 3);
2897 path.close();
2898 path.moveTo(1, 2);
2899 path.lineTo(2, 2);
2900 path.quadTo(0, 3, 3, 3);
2901 path.close();
2902</div>
2903
2904<div id="testQuadratic65">
2905 path.moveTo(0, 0);
2906 path.quadTo(0, 0, 0, 0);
2907 path.lineTo(3, 2);
2908 path.close();
2909 path.moveTo(2, 1);
2910 path.lineTo(2, 2);
2911 path.quadTo(0, 3, 1, 3);
2912 path.close();
2913</div>
2914
2915<div id="testQuadratic66">
2916 path.moveTo(0, 0);
2917 path.quadTo(0, 0, 0, 1);
2918 path.lineTo(3, 2);
2919 path.close();
2920 path.moveTo(2, 0);
2921 path.lineTo(1, 1);
2922 path.quadTo(3, 2, 2, 3);
2923 path.close();
2924</div>
2925
2926<div id="testQuadratic67x">
2927 path.setFillType(SkPath::kEvenOdd_FillType);
2928 path.moveTo(0, 0);
2929 path.quadTo(0, 0, 2, 1);
2930 path.lineTo(2, 2);
2931 path.close();
2932 path.moveTo(0, 0);
2933 path.lineTo(2, 0);
2934 path.quadTo(1, 1, 3, 2);
2935 path.close();
2936</div>
2937
2938<div id="testQuadratic68">
2939 path.moveTo(0, 0);
2940 path.quadTo(1, 0, 0, 1);
2941 path.lineTo(1, 2);
2942 path.close();
2943 path.moveTo(0, 0);
2944 path.lineTo(0, 0);
2945 path.quadTo(0, 1, 2, 1);
2946 path.close();
2947</div>
2948
2949<div id="testQuadratic69">
2950 path.moveTo(0, 0);
2951 path.quadTo(0, 0, 0, 1);
2952 path.lineTo(3, 2);
2953 path.close();
2954 path.moveTo(2, 0);
2955 path.lineTo(1, 1);
2956 path.quadTo(3, 2, 2, 3);
2957 path.close();
2958</div>
2959
2960<div id="testQuadratic70x">
2961 path.setFillType(SkPath::kEvenOdd_FillType);
2962 path.moveTo(0, 0);
2963 path.quadTo(1, 0, 0, 1);
2964 path.lineTo(1, 2);
2965 path.close();
2966 path.moveTo(0, 0);
2967 path.lineTo(0, 0);
2968 path.quadTo(0, 1, 2, 1);
2969 path.close();
2970</div>
2971
2972<div id="testQuadratic71">
2973 path.moveTo(0, 0);
2974 path.quadTo(1, 0, 1, 1);
2975 path.lineTo(3, 2);
2976 path.close();
2977 path.moveTo(0, 0);
2978 path.lineTo(0, 0);
2979 path.quadTo(1, 1, 3, 1);
2980 path.close();
2981</div>
2982
2983<div id="testQuadratic72">
2984 path.moveTo(0, 0);
2985 path.quadTo(1, 0, 1, 2);
2986 path.lineTo(1, 2);
2987 path.close();
2988 path.moveTo(0, 0);
2989 path.lineTo(1, 0);
2990 path.quadTo(0, 1, 3, 2);
2991 path.close();
2992</div>
2993
2994<div id="testQuadratic73">
2995 path.moveTo(0, 0);
2996 path.quadTo(1, 0, 0, 3);
2997 path.lineTo(0, 3);
2998 path.close();
2999 path.moveTo(0, 0);
3000 path.lineTo(1, 0);
3001 path.quadTo(0, 1, 1, 1);
3002 path.close();
3003</div>
3004
3005<div id="testQuadratic74">
3006 path.moveTo(0, 0);
3007 path.quadTo(1, 0, 1, 3);
3008 path.lineTo(1, 3);
3009 path.close();
3010 path.moveTo(0, 0);
3011 path.lineTo(0, 1);
3012 path.quadTo(3, 2, 2, 3);
3013 path.close();
3014</div>
3015
3016<div id="testQuadratic75">
3017 path.moveTo(0, 0);
3018 path.quadTo(1, 0, 1, 3);
3019 path.lineTo(2, 3);
3020 path.close();
3021 path.moveTo(0, 0);
3022 path.lineTo(0, 1);
3023 path.quadTo(3, 2, 2, 3);
3024 path.close();
3025</div>
3026
caryclark@google.comdb0b3e02012-12-21 21:34:36 +00003027<div id="testQuadratic76">
3028 path.moveTo(0, 0);
3029 path.quadTo(0, 0, 0, 0);
3030 path.lineTo(2, 3);
3031 path.close();
3032 path.moveTo(1, 0);
3033 path.lineTo(1, 2);
3034 path.quadTo(1, 2, 2, 2);
3035 path.close();
3036</div>
3037
3038<div id="testQuadratic77">
3039 path.moveTo(0, 0);
3040 path.quadTo(1, 0, 1, 1);
3041 path.lineTo(3, 1);
3042 path.close();
3043 path.moveTo(0, 0);
3044 path.lineTo(1, 0);
3045 path.quadTo(0, 1, 3, 2);
3046 path.close();
3047</div>
3048
3049<div id="testQuadratic78">
3050 path.moveTo(0, 0);
3051 path.quadTo(1, 0, 1, 2);
3052 path.lineTo(3, 2);
3053 path.close();
3054 path.moveTo(0, 0);
3055 path.lineTo(0, 0);
3056 path.quadTo(2, 1, 0, 2);
3057 path.close();
3058</div>
3059
3060<div id="testQuadratic79">
3061 path.moveTo(0, 0);
3062 path.quadTo(1, 0, 1, 2);
3063 path.lineTo(3, 2);
3064 path.close();
3065 path.moveTo(0, 0);
3066 path.lineTo(1, 0);
3067 path.quadTo(0, 1, 3, 2);
3068 path.close();
3069</div>
3070
3071<div id="testQuadratic80">
3072 path.moveTo(0, 0);
3073 path.quadTo(1, 0, 2, 3);
3074 path.lineTo(2, 3);
3075 path.close();
3076 path.moveTo(1, 0);
3077 path.lineTo(3, 0);
3078 path.quadTo(0, 1, 1, 1);
3079 path.close();
3080</div>
3081
3082<div id="testQuadratic81">
3083 path.moveTo(0, 0);
3084 path.quadTo(2, 0, 1, 1);
3085 path.lineTo(1, 1);
3086 path.close();
3087 path.moveTo(0, 0);
3088 path.lineTo(0, 0);
3089 path.quadTo(2, 1, 0, 2);
3090 path.close();
3091</div>
3092
3093<div id="testQuadratic82">
3094 path.moveTo(0, 0);
3095 path.quadTo(2, 0, 1, 1);
3096 path.lineTo(0, 3);
3097 path.close();
3098 path.moveTo(0, 0);
3099 path.lineTo(0, 0);
3100 path.quadTo(2, 1, 0, 2);
3101 path.close();
3102</div>
3103
caryclark@google.com3586ece2012-12-27 18:46:58 +00003104<div id="testQuadratic83">
3105 path.moveTo(0, 0);
3106 path.quadTo(0, 0, 2, 0);
3107 path.lineTo(2, 2);
3108 path.close();
3109 path.moveTo(0, 1);
3110 path.lineTo(0, 2);
3111 path.quadTo(2, 2, 1, 3);
3112 path.close();
3113</div>
3114
caryclark@google.com10227bf2012-12-28 22:10:41 +00003115<div id="testQuadratic84">
3116 path.moveTo(0, 0);
3117 path.quadTo(2, 0, 1, 1);
3118 path.lineTo(2, 1);
3119 path.close();
3120 path.moveTo(1, 0);
3121 path.lineTo(2, 0);
3122 path.quadTo(0, 1, 2, 2);
3123 path.close();
3124</div>
3125
3126<div id="testQuadratic85">
3127 path.moveTo(0, 0);
3128 path.quadTo(3, 0, 1, 1);
3129 path.lineTo(1, 1);
3130 path.close();
3131 path.moveTo(1, 0);
3132 path.lineTo(3, 0);
3133 path.quadTo(0, 1, 1, 2);
3134 path.close();
3135</div>
3136
3137<div id="testQuadratic86">
3138 path.moveTo(0, 0);
3139 path.quadTo(0, 1, 1, 1);
3140 path.lineTo(2, 3);
3141 path.close();
3142 path.moveTo(0, 0);
3143 path.lineTo(0, 0);
3144 path.quadTo(1, 1, 1, 3);
3145 path.close();
3146</div>
3147
3148<div id="testQuadratic87">
3149 path.moveTo(0, 0);
3150 path.quadTo(2, 1, 0, 2);
3151 path.lineTo(2, 3);
3152 path.close();
3153 path.moveTo(0, 0);
3154 path.lineTo(1, 1);
3155 path.quadTo(0, 2, 3, 2);
3156 path.close();
3157</div>
3158
3159<div id="testQuadratic88">
3160 path.moveTo(0, 0);
3161 path.quadTo(2, 1, 0, 2);
3162 path.lineTo(2, 2);
3163 path.close();
3164 path.moveTo(1, 0);
3165 path.lineTo(1, 1);
3166 path.quadTo(0, 2, 2, 2);
3167 path.close();
3168</div>
3169
caryclark@google.com8f9f4682013-01-03 21:18:16 +00003170<div id="testQuadratic89x">
3171 path.setFillType(SkPath::kEvenOdd_FillType);
3172 path.moveTo(0, 0);
3173 path.quadTo(3, 1, 2, 2);
3174 path.lineTo(0, 3);
3175 path.close();
3176 path.moveTo(0, 0);
3177 path.lineTo(2, 1);
3178 path.quadTo(3, 1, 3, 3);
3179 path.close();
3180</div>
3181
3182<div id="testQuadratic90x">
3183 path.setFillType(SkPath::kEvenOdd_FillType);
3184 path.moveTo(0, 0);
3185 path.quadTo(3, 0, 2, 2);
3186 path.lineTo(1, 3);
3187 path.close();
3188 path.moveTo(0, 0);
3189 path.lineTo(0, 1);
3190 path.quadTo(3, 2, 2, 3);
3191 path.close();
3192</div>
3193
3194<div id="testQuadratic91">
3195 path.moveTo(0, 0);
3196 path.quadTo(3, 2, 2, 3);
3197 path.lineTo(2, 3);
3198 path.close();
3199 path.moveTo(0, 0);
3200 path.lineTo(1, 1);
3201 path.quadTo(2, 1, 2, 3);
3202 path.close();
3203</div>
3204
3205<div id="testQuadratic92x">
3206 path.setFillType(SkPath::kEvenOdd_FillType);
3207 path.moveTo(1, 0);
3208 path.quadTo(3, 0, 2, 2);
3209 path.lineTo(2, 2);
3210 path.close();
3211 path.moveTo(2, 0);
3212 path.lineTo(0, 1);
3213 path.quadTo(3, 2, 2, 3);
3214 path.close();
3215</div>
3216
3217<div id="testLine82">
3218 path.addRect(20, 0, 40, 40, SkPath::kCCWDirection);
3219 path.addRect(24, 20, 36, 30, SkPath::kCCWDirection);
3220 path.addRect(24, 32, 33, 36, SkPath::kCCWDirection);
3221</div>
3222
3223<div id="testLine82a">
3224 SkPath path;
3225 path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
3226 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
3227 path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
3228 testSimplifyx(path);
3229</div>
3230
3231<div id="testLine82b">
3232 SkPath path;
3233 path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
3234 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
3235 path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
3236 testSimplifyx(path);
3237</div>
3238
3239<div id="testLine82c">
3240 SkPath path;
3241 path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
3242 path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
3243 path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
3244 testSimplifyx(path);
3245</div>
3246
3247
3248<div id="testLine82d">
3249 SkPath path;
3250 path.addRect(0, 0, 6, 10, SkPath::kCW_Direction);
3251 path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
3252 path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
3253 testSimplifyx(path);
3254</div>
3255
3256<div id="testLine82e">
3257 SkPath path;
3258 path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
3259 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
3260 path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
3261 testSimplifyx(path);
3262</div>
3263
3264<div id="testLine82f">
3265 SkPath path;
3266 path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
3267 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
3268 path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
3269 testSimplifyx(path);
3270</div>
3271
3272<div id="testLine82g">
3273 SkPath path;
3274 path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
3275 path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
3276 path.addRect(2, 6, 4, 8, SkPath::kCW_Direction);
3277 testSimplifyx(path);
3278</div>
3279
3280<div id="testLine82h">
3281 SkPath path;
3282 path.addRect(0, 0, 6, 10, SkPath::kCCW_Direction);
3283 path.addRect(2, 2, 4, 4, SkPath::kCCW_Direction);
3284 path.addRect(2, 6, 4, 8, SkPath::kCCW_Direction);
3285 testSimplifyx(path);
3286</div>
3287
3288<div id="testLine83">
3289path.addRect(10, 30, 30, 40, SkPath::kCCW_Direction);
3290path.addRect(0, 12, 12, 18, SkPath::kCCW_Direction);
3291path.addRect(4, 13, 13, 16, SkPath::kCCW_Direction);
3292</div>
3293
3294<div id="testLine84x">
3295 path.setFillType(SkPath::kEvenOdd_FillType);
3296 path.addRect(0, 12, 60, 30, SkPath::kCCW_Direction);
3297 path.addRect(10, 20, 40, 30, SkPath::kCCW_Direction);
3298 path.addRect(0, 12, 12, 12, SkPath::kCCW_Direction);
3299 path.addRect(4, 12, 13, 13, SkPath::kCCW_Direction);
3300</div>
3301
3302<div id="testLine85">
3303 path.addRect(36, 0, 66, 60, SkPath::kCCW_Direction);
3304 path.addRect(20, 0, 40, 40, SkPath::kCCW_Direction);
3305 path.addRect(12, 0, 24, 24, SkPath::kCCW_Direction);
3306 path.addRect(32, 0, 36, 41, SkPath::kCCW_Direction);
3307</div>
3308
caryclark@google.com73ca6242013-01-17 21:02:47 +00003309<div id="testQuadralateral1">
3310 path.moveTo(0, 0);
3311 path.lineTo(0, 0);
3312 path.lineTo(0, 0);
3313 path.lineTo(3, 2);
3314 path.close();
3315 path.moveTo(0, 0);
3316 path.lineTo(2, 1);
3317 path.lineTo(2, 2);
3318 path.lineTo(2, 3);
3319 path.close();
3320</div>
3321
3322<div id="testCubic1">
3323 path.moveTo(0, 0);
3324 path.cubicTo(0, 1, 1, 1, 1, 0);
3325 path.close();
3326 path.moveTo(1, 0);
3327 path.cubicTo(0, 0, 0, 1, 1, 1);
3328 path.close();
3329</div>
3330
caryclark@google.com85ec74c2013-01-28 19:25:51 +00003331<div id="testQuadratic93">
3332 path.moveTo(3, 0);
3333 path.quadTo(0, 1, 3, 2);
3334 path.lineTo(0, 3);
3335 path.close();
3336 path.moveTo(1, 0);
3337 path.lineTo(2, 0);
3338 path.quadTo(1, 1, 2, 2);
3339 path.close();
3340</div>
3341
caryclark@google.comaa358312013-01-29 20:28:49 +00003342<div id="cubicOp1d">
3343 path.setFillType(SkPath::kWinding_FillType);
3344 path.moveTo(0,1);
3345 path.cubicTo(0,2, 1,0, 1,0);
3346 path.close();
3347 pathB.setFillType(SkPath::kWinding_FillType);
3348 pathB.moveTo(0,1);
3349 pathB.cubicTo(0,1, 1,0, 2,0);
3350 pathB.close();
3351</div>
3352
caryclark@google.combeda3892013-02-07 13:13:41 +00003353<div id="cubicOp2d">
3354 path.setFillType(SkPath::kWinding_FillType);
3355 path.moveTo(0,2);
3356 path.cubicTo(0,1, 1,0, 1,0);
3357 path.close();
3358 pathB.setFillType(SkPath::kWinding_FillType);
3359 pathB.moveTo(0,1);
3360 pathB.cubicTo(0,1, 2,0, 1,0);
3361 pathB.close();
3362</div>
3363
3364<div id="cubicOp3d">
3365 path.setFillType(SkPath::kWinding_FillType);
3366 path.moveTo(0,1);
3367 path.cubicTo(2,3, 1,0, 1,0);
3368 path.close();
3369 pathB.setFillType(SkPath::kWinding_FillType);
3370 pathB.moveTo(0,1);
3371 pathB.cubicTo(0,1, 1,0, 3,2);
3372 pathB.close();
3373</div>
3374
3375<div id="cubicOp4d">
3376 path.setFillType(SkPath::kWinding_FillType);
3377 path.moveTo(0,1);
3378 path.cubicTo(0,2, 1,0, 2,0);
3379 path.close();
3380 pathB.setFillType(SkPath::kWinding_FillType);
3381 pathB.moveTo(0,1);
3382 pathB.cubicTo(0,2, 1,0, 2,0);
3383 pathB.close();
3384</div>
3385
3386<div id="cubicOp5d">
3387 path.setFillType(SkPath::kWinding_FillType);
3388 path.moveTo(0,1);
3389 path.cubicTo(0,2, 1,0, 2,0);
3390 path.close();
3391 pathB.setFillType(SkPath::kWinding_FillType);
3392 pathB.moveTo(0,1);
3393 pathB.cubicTo(0,2, 1,0, 2,0);
3394 pathB.close();
3395</div>
3396
3397<div id="cubicOp6d">
3398 path.setFillType(SkPath::kWinding_FillType);
3399 path.moveTo(0,1);
3400 path.cubicTo(0,6, 1,0, 3,0);
3401 path.close();
3402 pathB.setFillType(SkPath::kWinding_FillType);
3403 pathB.moveTo(0,1);
3404 pathB.cubicTo(0,3, 1,0, 6,0);
3405 pathB.close();
3406</div>
3407
3408<div id="cubicOp7d">
3409 path.setFillType(SkPath::kWinding_FillType);
3410 path.moveTo(0,1);
3411 path.cubicTo(3,4, 1,0, 3,0);
3412 path.close();
3413 pathB.setFillType(SkPath::kWinding_FillType);
3414 pathB.moveTo(0,1);
3415 pathB.cubicTo(0,3, 1,0, 4,3);
3416 pathB.close();
3417</div>
3418
caryclark@google.com45a8fc62013-02-14 15:29:11 +00003419<div id="cubicOp8d">
3420 path.setFillType(SkPath::kWinding_FillType);
3421 path.moveTo(0,1);
3422 path.cubicTo(0,5, 1,0, 4,0);
3423 path.close();
3424 pathB.setFillType(SkPath::kWinding_FillType);
3425 pathB.moveTo(0,1);
3426 pathB.cubicTo(0,4, 1,0, 5,0);
3427 pathB.close();
3428</div>
3429
3430<div id="cubicOp9d">
3431 path.setFillType(SkPath::kWinding_FillType);
3432 path.moveTo(0,1);
3433 path.cubicTo(1,6, 1,0, 2,1);
3434 path.close();
3435 pathB.setFillType(SkPath::kWinding_FillType);
3436 pathB.moveTo(0,1);
3437 pathB.cubicTo(1,2, 1,0, 6,1);
3438 pathB.close();
3439</div>
3440
3441<div id="quadOp9d">
3442 path.setFillType(SkPath::kWinding_FillType);
3443 path.moveTo(0,1);
3444 path.quadTo(1,6, 1.5f,1);
3445 path.quadTo(1.5f,0.8f, 2,1);
3446 path.close();
3447 pathB.setFillType(SkPath::kWinding_FillType);
3448 pathB.moveTo(0,1);
3449 pathB.quadTo(1,2, 1.4f,1);
3450 pathB.quadTo(3,0.4f, 6,1);
3451 pathB.close();
3452</div>
3453
3454<div id="lineOp9d">
3455 path.setFillType(SkPath::kWinding_FillType);
3456 path.moveTo(0,1);
3457 path.lineTo(1,6);
3458 path.lineTo(1.5f,1);
3459 path.lineTo(1.8f,0.8f);
3460 path.lineTo(2,1);
3461 path.close();
3462 pathB.setFillType(SkPath::kWinding_FillType);
3463 pathB.moveTo(0,1);
3464 pathB.lineTo(1,2);
3465 pathB.lineTo(1.4f,1);
3466 pathB.lineTo(3,0.4f);
3467 pathB.lineTo(6,1);
3468 pathB.close();
3469</div>
3470
3471<div id="cubicOp1i">
3472 path.setFillType(SkPath::kWinding_FillType);
3473 path.moveTo(0,1);
3474 path.cubicTo(1,2, 1,0, 2,1);
3475 path.close();
3476 pathB.setFillType(SkPath::kWinding_FillType);
3477 pathB.moveTo(0,1);
3478 pathB.cubicTo(1,2, 1,0, 2,1);
3479 pathB.close();
3480</div>
3481
3482<div id="cubicOp10d">
3483 path.setFillType(SkPath::kWinding_FillType);
3484 path.moveTo(0,1);
3485 path.cubicTo(1,3, 1,0, 4,1);
3486 path.close();
3487 pathB.setFillType(SkPath::kWinding_FillType);
3488 pathB.moveTo(0,1);
3489 pathB.cubicTo(1,4, 1,0, 3,1);
3490 pathB.close();
3491</div>
3492
3493<div id="cubicOp11d">
3494 path.setFillType(SkPath::kWinding_FillType);
3495 path.moveTo(0,1);
3496 path.cubicTo(3,4, 1,0, 5,1);
3497 path.close();
3498 pathB.setFillType(SkPath::kWinding_FillType);
3499 pathB.moveTo(0,1);
3500 pathB.cubicTo(1,5, 1,0, 4,3);
3501 pathB.close();
3502</div>
3503
3504<div id="cubicOp12d">
3505 path.setFillType(SkPath::kWinding_FillType);
3506 path.moveTo(0,1);
3507 path.cubicTo(1,6, 1,0, 1,0);
3508 path.close();
3509 pathB.setFillType(SkPath::kWinding_FillType);
3510 pathB.moveTo(0,1);
3511 pathB.cubicTo(0,1, 1,0, 6,1);
3512 pathB.close();
3513</div>
3514
3515<div id="cubicOp13d">
3516 path.setFillType(SkPath::kWinding_FillType);
3517 path.moveTo(0,1);
3518 path.cubicTo(4,5, 1,0, 5,3);
3519 path.close();
3520 pathB.setFillType(SkPath::kWinding_FillType);
3521 pathB.moveTo(0,1);
3522 pathB.cubicTo(3,5, 1,0, 5,4);
3523 pathB.close();
3524</div>
3525
3526<div id="cubicOp14d">
3527 path.setFillType(SkPath::kWinding_FillType);
3528 path.moveTo(0,1);
3529 path.cubicTo(0,2, 2,0, 2,1);
3530 path.close();
3531 pathB.setFillType(SkPath::kWinding_FillType);
3532 pathB.moveTo(0,2);
3533 pathB.cubicTo(1,2, 1,0, 2,0);
3534 pathB.close();
3535</div>
3536
caryclark@google.com47d73da2013-02-17 01:41:25 +00003537<div id="cubicOp15d">
3538 path.setFillType(SkPath::kWinding_FillType);
3539 path.moveTo(0,1);
3540 path.cubicTo(3,6, 2,0, 2,1);
3541 path.close();
3542 pathB.setFillType(SkPath::kWinding_FillType);
3543 pathB.moveTo(0,2);
3544 pathB.cubicTo(1,2, 1,0, 6,3);
3545 pathB.close();
3546</div>
3547
3548<div id="cubicOp16d">
3549 path.setFillType(SkPath::kWinding_FillType);
3550 path.moveTo(0,2);
3551 path.cubicTo(0,1, 3,0, 1,0);
3552 path.close();
3553 pathB.setFillType(SkPath::kWinding_FillType);
3554 pathB.moveTo(0,3);
3555 pathB.cubicTo(0,1, 2,0, 1,0);
3556 pathB.close();
3557</div>
3558
3559<div id="cubicOp17d">
3560 path.setFillType(SkPath::kWinding_FillType);
3561 path.moveTo(0,2);
3562 path.cubicTo(0,2, 4,0, 2,1);
3563 path.close();
3564 pathB.setFillType(SkPath::kWinding_FillType);
3565 pathB.moveTo(0,4);
3566 pathB.cubicTo(1,2, 2,0, 2,0);
3567 pathB.close();
3568</div>
3569
3570<div id="cubicOp18d">
3571 path.setFillType(SkPath::kWinding_FillType);
3572 path.moveTo(0,1);
3573 path.cubicTo(3,5, 2,0, 2,1);
3574 path.close();
3575 pathB.setFillType(SkPath::kWinding_FillType);
3576 pathB.moveTo(0,2);
3577 pathB.cubicTo(1,2, 1,0, 5,3);
3578 pathB.close();
3579</div>
3580
3581<div id="cubicOp19i">
3582 path.setFillType(SkPath::kWinding_FillType);
3583 path.moveTo(0,2);
3584 path.cubicTo(0,1, 2,1, 6,2);
3585 path.close();
3586 pathB.setFillType(SkPath::kWinding_FillType);
3587 pathB.moveTo(1,2);
3588 pathB.cubicTo(2,6, 2,0, 1,0);
3589 pathB.close();
3590</div>
3591
caryclark@google.comd0a19eb2013-02-19 12:49:33 +00003592<div id="cubicOp20d">
3593 path.setFillType(SkPath::kWinding_FillType);
3594 path.moveTo(0,1);
3595 path.cubicTo(0,1, 6,0, 2,1);
3596 path.close();
3597 pathB.setFillType(SkPath::kWinding_FillType);
3598 pathB.moveTo(0,6);
3599 pathB.cubicTo(1,2, 1,0, 1,0);
3600 pathB.close();
3601</div>
3602
caryclark@google.com5e0500f2013-02-20 12:51:37 +00003603<div id="cubicOp21d">
3604 path.setFillType(SkPath::kWinding_FillType);
3605 path.moveTo(0,1);
3606 path.cubicTo(0,1, 2,1, 6,5);
3607 path.close();
3608 pathB.setFillType(SkPath::kWinding_FillType);
3609 pathB.moveTo(1,2);
3610 pathB.cubicTo(5,6, 1,0, 1,0);
3611 pathB.close();
3612</div>
3613
3614<div id="cubicOp22d">
3615 path.setFillType(SkPath::kWinding_FillType);
3616 path.moveTo(0,1);
3617 path.cubicTo(2,3, 3,0, 2,1);
3618 path.close();
3619 pathB.setFillType(SkPath::kWinding_FillType);
3620 pathB.moveTo(0,3);
3621 pathB.cubicTo(1,2, 1,0, 3,2);
3622 pathB.close();
3623</div>
3624
3625<div id="cubicOp23d">
3626 path.setFillType(SkPath::kWinding_FillType);
3627 path.moveTo(0,1);
3628 path.cubicTo(1,2, 4,0, 2,1);
3629 path.close();
3630 pathB.setFillType(SkPath::kWinding_FillType);
3631 pathB.moveTo(0,4);
3632 pathB.cubicTo(1,2, 1,0, 2,1);
3633 pathB.close();
3634</div>
3635
3636<div id="cubicOp24d">
3637 path.setFillType(SkPath::kWinding_FillType);
3638 path.moveTo(0,1);
3639 path.cubicTo(1,2, 2,0, 3,2);
3640 path.close();
3641 pathB.setFillType(SkPath::kWinding_FillType);
3642 pathB.moveTo(0,2);
3643 pathB.cubicTo(2,3, 1,0, 2,1);
3644 pathB.close();
3645</div>
3646
caryclark@google.comc83c70e2013-02-22 21:50:07 +00003647<div id="cubicOp25i">
3648 path.setFillType(SkPath::kWinding_FillType);
3649 path.moveTo(0,1);
3650 path.cubicTo(2,4, 5,0, 3,2);
3651 path.close();
3652 pathB.setFillType(SkPath::kWinding_FillType);
3653 pathB.moveTo(0,5);
3654 pathB.cubicTo(2,3, 1,0, 4,2);
3655 pathB.close();
3656</div>
3657
3658<div id="cubicOp26d">
3659 path.setFillType(SkPath::kWinding_FillType);
3660 path.moveTo(0,1);
3661 path.cubicTo(3,4, 4,0, 3,2);
3662 path.close();
3663 pathB.setFillType(SkPath::kWinding_FillType);
3664 pathB.moveTo(0,4);
3665 pathB.cubicTo(2,3, 1,0, 4,3);
3666 pathB.close();
3667</div>
3668
3669<div id="cubicOp27d">
3670 path.setFillType(SkPath::kWinding_FillType);
3671 path.moveTo(0,1);
3672 path.cubicTo(3,6, 1,0, 5,2);
3673 path.close();
3674 pathB.setFillType(SkPath::kWinding_FillType);
3675 pathB.moveTo(0,1);
3676 pathB.cubicTo(2,5, 1,0, 6,3);
3677 pathB.close();
3678</div>
3679
3680<div id="cubicOp28u">
3681 path.setFillType(SkPath::kWinding_FillType);
3682 path.moveTo(0,1);
3683 path.cubicTo(1,4, 6,0, 3,2);
3684 path.close();
3685 pathB.setFillType(SkPath::kWinding_FillType);
3686 pathB.moveTo(0,6);
3687 pathB.cubicTo(2,3, 1,0, 4,1);
3688 pathB.close();
3689</div>
3690
3691<div id="cubicOp29d">
3692 path.setFillType(SkPath::kWinding_FillType);
3693 path.moveTo(0,1);
3694 path.cubicTo(2,5, 6,0, 4,2);
3695 path.close();
3696 pathB.setFillType(SkPath::kWinding_FillType);
3697 pathB.moveTo(0,6);
3698 pathB.cubicTo(2,4, 1,0, 5,2);
3699 pathB.close();
3700</div>
3701
3702<div id="cubicOp30d">
3703 path.setFillType(SkPath::kWinding_FillType);
3704 path.moveTo(0,1);
3705 path.cubicTo(2,5, 6,0, 5,3);
3706 path.close();
3707 pathB.setFillType(SkPath::kWinding_FillType);
3708 pathB.moveTo(0,6);
3709 pathB.cubicTo(3,5, 1,0, 5,2);
3710 pathB.close();
3711</div>
3712
caryclark@google.com7ff5c842013-02-26 15:56:05 +00003713<div id="cubicOp31d">
3714 path.setFillType(SkPath::kWinding_FillType);
3715 path.moveTo(0,2);
3716 path.cubicTo(0,3, 2,1, 4,0);
3717 path.close();
3718 pathB.setFillType(SkPath::kWinding_FillType);
3719 pathB.moveTo(1,2);
3720 pathB.cubicTo(0,4, 2,0, 3,0);
3721 pathB.close();
3722</div>
3723
caryclark@google.com4aaaaea2013-02-28 16:12:39 +00003724<div id="cubicOp32d">
3725 path.setFillType(SkPath::kWinding_FillType);
3726 path.moveTo(0,1);
3727 path.cubicTo(1,2, 6,0, 3,1);
3728 path.close();
3729 pathB.setFillType(SkPath::kWinding_FillType);
3730 pathB.moveTo(0,6);
3731 pathB.cubicTo(1,3, 1,0, 2,1);
3732 pathB.close();
3733</div>
3734
3735<div id="cubicOp33i">
3736 path.setFillType(SkPath::kWinding_FillType);
3737 path.moveTo(0,1);
3738 path.cubicTo(1,2, 6,0, 3,1);
3739 path.close();
3740 pathB.setFillType(SkPath::kWinding_FillType);
3741 pathB.moveTo(0,6);
3742 pathB.cubicTo(1,3, 1,0, 2,1);
3743 pathB.close();
3744</div>
3745
3746<div id="cubicOp34d">
3747 path.setFillType(SkPath::kWinding_FillType);
3748 path.moveTo(0,1);
3749 path.cubicTo(3,5, 2,1, 3,1);
3750 path.close();
3751 pathB.setFillType(SkPath::kWinding_FillType);
3752 pathB.moveTo(1,2);
3753 pathB.cubicTo(1,3, 1,0, 5,3);
3754 pathB.close();
3755</div>
3756
3757<div id="cubicOp35d">
3758 path.setFillType(SkPath::kWinding_FillType);
3759 path.moveTo(0,1);
3760 path.cubicTo(1,5, 2,1, 4,0);
3761 path.close();
3762 pathB.setFillType(SkPath::kWinding_FillType);
3763 pathB.moveTo(1,2);
3764 pathB.cubicTo(0,4, 1,0, 5,1);
3765 pathB.close();
3766</div>
3767
caryclark@google.comd4c8e1e2013-03-05 14:13:13 +00003768<div id="cubicOp36u">
3769 path.setFillType(SkPath::kWinding_FillType);
3770 path.moveTo(0,1);
3771 path.cubicTo(1,6, 2,0, 5,1);
3772 path.close();
3773 pathB.setFillType(SkPath::kWinding_FillType);
3774 pathB.moveTo(0,2);
3775 pathB.cubicTo(1,5, 1,0, 6,1);
3776 pathB.close();
3777</div>
3778
caryclark@google.com1304bb22013-03-13 20:29:41 +00003779<div id="cubicOp37d">
3780 path.setFillType(SkPath::kWinding_FillType);
3781 path.moveTo(0,1);
3782 path.cubicTo(2,6, 6,1, 4,3);
3783 path.close();
3784 pathB.setFillType(SkPath::kWinding_FillType);
3785 pathB.moveTo(1,6);
3786 pathB.cubicTo(3,4, 1,0, 6,2);
3787 pathB.close();
3788</div>
3789
3790<div id="cubicOp38d">
3791 path.setFillType(SkPath::kWinding_FillType);
3792 path.moveTo(0,1);
3793 path.cubicTo(0,6, 3,2, 4,1);
3794 path.close();
3795 pathB.setFillType(SkPath::kWinding_FillType);
3796 pathB.moveTo(2,3);
3797 pathB.cubicTo(1,4, 1,0, 6,0);
3798 pathB.close();
3799</div>
3800
3801<div id="cubicOp39d">
3802 path.setFillType(SkPath::kWinding_FillType);
3803 path.moveTo(0,1);
3804 path.cubicTo(2,3, 5,1, 4,3);
3805 path.close();
3806 pathB.setFillType(SkPath::kWinding_FillType);
3807 pathB.moveTo(1,5);
3808 pathB.cubicTo(3,4, 1,0, 3,2);
3809 pathB.close();
3810</div>
3811
3812<div id="cubicOp40d">
3813 path.setFillType(SkPath::kWinding_FillType);
3814 path.moveTo(0,1);
3815 path.cubicTo(1,5, 3,2, 4,2);
3816 path.close();
3817 pathB.setFillType(SkPath::kWinding_FillType);
3818 pathB.moveTo(2,3);
3819 pathB.cubicTo(2,4, 1,0, 5,1);
3820 pathB.close();
3821</div>
3822
3823<div id="cubicOp41i">
3824 path.setFillType(SkPath::kWinding_FillType);
3825 path.moveTo(0,1);
3826 path.cubicTo(2,6, 4,3, 6,4);
3827 path.close();
3828 pathB.setFillType(SkPath::kWinding_FillType);
3829 pathB.moveTo(3,4);
3830 pathB.cubicTo(4,6, 1,0, 6,2);
3831 pathB.close();
3832</div>
3833
3834<div id="cubicOp42d">
3835 path.setFillType(SkPath::kWinding_FillType);
3836 path.moveTo(0,1);
3837 path.cubicTo(1,2, 6,5, 5,4);
3838 path.close();
3839 pathB.setFillType(SkPath::kWinding_FillType);
3840 pathB.moveTo(5,6);
3841 pathB.cubicTo(4,5, 1,0, 2,1);
3842 pathB.close();
3843</div>
3844
3845<div id="cubicOp43d">
3846 path.setFillType(SkPath::kWinding_FillType);
3847 path.moveTo(0,2);
3848 path.cubicTo(1,2, 4,0, 3,1);
3849 path.close();
3850 pathB.setFillType(SkPath::kWinding_FillType);
3851 pathB.moveTo(0,4);
3852 pathB.cubicTo(1,3, 2,0, 2,1);
3853 pathB.close();
3854</div>
3855
3856<div id="cubicOp44d">
3857 path.setFillType(SkPath::kWinding_FillType);
3858 path.moveTo(0,2);
3859 path.cubicTo(3,6, 4,0, 3,2);
3860 path.close();
3861 pathB.setFillType(SkPath::kWinding_FillType);
3862 pathB.moveTo(0,4);
3863 pathB.cubicTo(2,3, 2,0, 6,3);
3864 pathB.close();
3865</div>
3866
3867<div id="cubicOp45d">
3868 path.setFillType(SkPath::kWinding_FillType);
3869 path.moveTo(0,2);
3870 path.cubicTo(2,4, 4,0, 3,2);
3871 path.close();
3872 pathB.setFillType(SkPath::kWinding_FillType);
3873 pathB.moveTo(0,4);
3874 pathB.cubicTo(2,3, 2,0, 4,2);
3875 pathB.close();
3876</div>
3877
3878<div id="cubicOp46d">
3879 path.setFillType(SkPath::kWinding_FillType);
3880 path.moveTo(0,2);
3881 path.cubicTo(3,5, 5,0, 4,2);
3882 path.close();
3883 pathB.setFillType(SkPath::kWinding_FillType);
3884 pathB.moveTo(0,5);
3885 pathB.cubicTo(2,4, 2,0, 5,3);
3886 pathB.close();
3887</div>
3888
3889<div id="cubicOp47d">
3890 path.setFillType(SkPath::kWinding_FillType);
3891 path.moveTo(0,1);
3892 path.cubicTo(1,6, 6,2, 5,4);
3893 path.close();
3894 pathB.setFillType(SkPath::kWinding_FillType);
3895 pathB.moveTo(2,6);
3896 pathB.cubicTo(4,5, 1,0, 6,1);
3897 pathB.close();
3898</div>
3899
3900<div id="cubicOp48d">
3901 path.setFillType(SkPath::kWinding_FillType);
3902 path.moveTo(0,2);
3903 path.cubicTo(2,3, 5,1, 3,2);
3904 path.close();
3905 pathB.setFillType(SkPath::kWinding_FillType);
3906 pathB.moveTo(1,5);
3907 pathB.cubicTo(2,3, 2,0, 3,2);
3908 pathB.close();
3909</div>
3910
3911<div id="cubicOp49d">
3912 path.setFillType(SkPath::kWinding_FillType);
3913 path.moveTo(0,2);
3914 path.cubicTo(1,5, 3,2, 4,1);
3915 path.close();
3916 pathB.setFillType(SkPath::kWinding_FillType);
3917 pathB.moveTo(2,3);
3918 pathB.cubicTo(1,4, 2,0, 5,1);
3919 pathB.close();
3920</div>
3921
3922<div id="cubicOp50d">
3923 path.setFillType(SkPath::kWinding_FillType);
3924 path.moveTo(0,3);
3925 path.cubicTo(1,6, 5,0, 5,1);
3926 path.close();
3927 pathB.setFillType(SkPath::kWinding_FillType);
3928 pathB.moveTo(0,5);
3929 pathB.cubicTo(1,5, 3,0, 6,1);
3930 pathB.close();
3931</div>
3932
3933<div id="cubicOp51d">
3934 path.setFillType(SkPath::kWinding_FillType);
3935 path.moveTo(0,3);
3936 path.cubicTo(1,2, 4,1, 6,0);
3937 path.close();
3938 pathB.setFillType(SkPath::kWinding_FillType);
3939 pathB.moveTo(1,4);
3940 pathB.cubicTo(0,6, 3,0, 2,1);
3941 pathB.close();
3942</div>
3943
3944<div id="cubicOp52d">
3945 path.setFillType(SkPath::kWinding_FillType);
3946 path.moveTo(0,2);
3947 path.cubicTo(1,2, 5,4, 4,3);
3948 path.close();
3949 pathB.setFillType(SkPath::kWinding_FillType);
3950 pathB.moveTo(4,5);
3951 pathB.cubicTo(3,4, 2,0, 2,1);
3952 pathB.close();
3953</div>
3954
3955<div id="cubicOp53d">
3956 path.setFillType(SkPath::kWinding_FillType);
3957 path.moveTo(0,3);
3958 path.cubicTo(1,2, 5,3, 2,1);
3959 path.close();
3960 pathB.setFillType(SkPath::kWinding_FillType);
3961 pathB.moveTo(3,5);
3962 pathB.cubicTo(1,2, 3,0, 2,1);
3963 pathB.close();
3964</div>
3965
3966<div id="cubicOp54d">
3967 path.setFillType(SkPath::kWinding_FillType);
3968 path.moveTo(0,4);
3969 path.cubicTo(1,3, 5,4, 4,2);
3970 path.close();
3971 pathB.setFillType(SkPath::kWinding_FillType);
3972 pathB.moveTo(4,5);
3973 pathB.cubicTo(2,4, 4,0, 3,1);
3974 pathB.close();
3975</div>
3976
3977<div id="cubicOp55d">
3978 path.setFillType(SkPath::kWinding_FillType);
3979 path.moveTo(0,5);
3980 path.cubicTo(1,3, 3,2, 5,0);
3981 path.close();
3982 pathB.setFillType(SkPath::kWinding_FillType);
3983 pathB.moveTo(2,3);
3984 pathB.cubicTo(0,5, 5,0, 3,1);
3985 pathB.close();
3986</div>
3987
3988<div id="cubicOp56d">
3989 path.setFillType(SkPath::kWinding_FillType);
3990 path.moveTo(0,1);
3991 path.cubicTo(2,6, 5,0, 2,1);
3992 path.close();
3993 pathB.setFillType(SkPath::kWinding_FillType);
3994 pathB.moveTo(0,5);
3995 pathB.cubicTo(1,2, 1,0, 6,2);
3996 pathB.close();
3997</div>
3998
3999<div id="cubicOp57d">
4000 path.setFillType(SkPath::kWinding_FillType);
4001 path.moveTo(0,5);
4002 path.cubicTo(0,5, 5,4, 6,4);
4003 path.close();
4004 pathB.setFillType(SkPath::kWinding_FillType);
4005 pathB.moveTo(4,5);
4006 pathB.cubicTo(4,6, 5,0, 5,0);
4007 pathB.close();
4008</div>
4009
4010<div id="cubicOp58d">
4011 path.setFillType(SkPath::kWinding_FillType);
4012 path.moveTo(0,5);
4013 path.cubicTo(3,4, 6,5, 5,3);
4014 path.close();
4015 pathB.setFillType(SkPath::kWinding_FillType);
4016 pathB.moveTo(5,6);
4017 pathB.cubicTo(3,5, 5,0, 4,3);
4018 pathB.close();
4019</div>
4020
4021<div id="cubicOp59d">
4022 path.setFillType(SkPath::kWinding_FillType);
4023 path.moveTo(0,1);
4024 path.cubicTo(5,6, 4,0, 4,1);
4025 path.close();
4026 pathB.setFillType(SkPath::kWinding_FillType);
4027 pathB.moveTo(0,4);
4028 pathB.cubicTo(1,4, 1,0, 6,5);
4029 pathB.close();
4030</div>
4031
4032<div id="cubicOp60d">
4033 path.setFillType(SkPath::kWinding_FillType);
4034 path.moveTo(0,2);
4035 path.cubicTo(4,6, 6,0, 5,2);
4036 path.close();
4037 pathB.setFillType(SkPath::kWinding_FillType);
4038 pathB.moveTo(0,6);
4039 pathB.cubicTo(2,5, 2,0, 6,4);
4040 pathB.close();
4041</div>
4042
4043<div id="cubicOp61d">
4044 path.setFillType(SkPath::kWinding_FillType);
4045 path.moveTo(1,2);
4046 path.cubicTo(0,5, 3,2, 6,1);
4047 path.close();
4048 pathB.setFillType(SkPath::kWinding_FillType);
4049 pathB.moveTo(2,3);
4050 pathB.cubicTo(1,6, 2,1, 5,0);
4051 pathB.close();
4052</div>
4053
caryclark@google.com752b60e2012-03-22 21:11:17 +00004054</div>
4055
4056<script type="text/javascript">
4057
4058var testDivs = [
caryclark@google.com1304bb22013-03-13 20:29:41 +00004059 cubicOp61d,
4060 cubicOp60d,
4061 cubicOp59d,
4062 cubicOp58d,
4063 cubicOp57d,
4064 cubicOp56d,
4065 cubicOp55d,
4066 cubicOp54d,
4067 cubicOp53d,
4068 cubicOp52d,
4069 cubicOp51d,
4070 cubicOp50d,
4071 cubicOp49d,
4072 cubicOp48d,
4073 cubicOp47d,
4074 cubicOp46d,
4075 cubicOp45d,
4076 cubicOp44d,
4077 cubicOp43d,
4078 cubicOp42d,
4079 cubicOp41i,
4080 cubicOp40d,
4081 cubicOp39d,
4082 cubicOp38d,
4083 cubicOp37d,
caryclark@google.comd4c8e1e2013-03-05 14:13:13 +00004084 cubicOp36u,
caryclark@google.com4aaaaea2013-02-28 16:12:39 +00004085 cubicOp35d,
4086 cubicOp34d,
4087 cubicOp33i,
4088 cubicOp32d,
caryclark@google.com7ff5c842013-02-26 15:56:05 +00004089 cubicOp31d,
caryclark@google.comc83c70e2013-02-22 21:50:07 +00004090 cubicOp30d,
4091 cubicOp29d,
4092 cubicOp28u,
4093 cubicOp27d,
4094 cubicOp26d,
4095 cubicOp25i,
caryclark@google.com5e0500f2013-02-20 12:51:37 +00004096 cubicOp24d,
4097 cubicOp23d,
caryclark@google.com47d73da2013-02-17 01:41:25 +00004098 cubicOp18d,
caryclark@google.com47d73da2013-02-17 01:41:25 +00004099 cubicOp15d,
caryclark@google.com45a8fc62013-02-14 15:29:11 +00004100 cubicOp14d,
4101 cubicOp13d,
caryclark@google.com45a8fc62013-02-14 15:29:11 +00004102 cubicOp11d,
caryclark@google.com45a8fc62013-02-14 15:29:11 +00004103 cubicOp9d,
4104 cubicOp8d,
caryclark@google.combeda3892013-02-07 13:13:41 +00004105 cubicOp7d,
4106 cubicOp6d,
4107 cubicOp5d,
caryclark@google.comc83c70e2013-02-22 21:50:07 +00004108 cubicOp10d,
4109 cubicOp22d,
4110 cubicOp21d,
4111 cubicOp20d,
4112 cubicOp19i,
4113 cubicOp17d,
4114 cubicOp16d,
4115 cubicOp12d,
4116 cubicOp1i,
4117 lineOp9d,
4118 quadOp9d,
caryclark@google.combeda3892013-02-07 13:13:41 +00004119 cubicOp4d,
4120 cubicOp3d,
4121 cubicOp2d,
caryclark@google.comaa358312013-01-29 20:28:49 +00004122 cubicOp1d,
caryclark@google.com85ec74c2013-01-28 19:25:51 +00004123 testQuadratic93,
caryclark@google.com73ca6242013-01-17 21:02:47 +00004124 testCubic1,
4125 testQuadralateral1,
caryclark@google.com8f9f4682013-01-03 21:18:16 +00004126 testLine85,
4127 testLine84x,
4128 testLine83,
4129 testLine82h,
4130 testLine82g,
4131 testLine82f,
4132 testLine82e,
4133 testLine82d,
4134 testLine82c,
4135 testLine82b,
4136 testLine82a,
4137 testLine82,
4138 testQuadratic92x,
4139 testQuadratic91,
4140 testQuadratic90x,
4141 testQuadratic89x,
caryclark@google.com10227bf2012-12-28 22:10:41 +00004142 testQuadratic88,
4143 testQuadratic87,
4144 testQuadratic86,
4145 testQuadratic85,
4146 testQuadratic84,
caryclark@google.com3586ece2012-12-27 18:46:58 +00004147 testQuadratic83,
caryclark@google.comdb0b3e02012-12-21 21:34:36 +00004148 testQuadratic82,
4149 testQuadratic81,
4150 testQuadratic80,
4151 testQuadratic79,
4152 testQuadratic78,
4153 testQuadratic77,
4154 testQuadratic76,
caryclark@google.come7bd5f42012-12-13 19:47:53 +00004155 testQuadratic75,
4156 testQuadratic74,
4157 testQuadratic73,
4158 testQuadratic72,
4159 testQuadratic71,
4160 testQuadratic70x,
4161 testQuadratic69,
4162 testQuadratic68,
4163 testQuadratic67x,
4164 testQuadratic66,
4165 testQuadratic65,
4166 testQuadratic64,
4167 testQuadratic63,
4168 testLine1a,
4169 testQuadratic62x,
caryclark@google.com7fce0de2012-11-29 14:31:50 +00004170 testLine81,
caryclark@google.com0b7da432012-10-31 19:00:20 +00004171 testQuadratic61,
4172 testQuadratic60,
caryclark@google.comdb0b3e02012-12-21 21:34:36 +00004173 testQuadratic59,
caryclark@google.com0b7da432012-10-31 19:00:20 +00004174 testQuadratic59o,
4175 testQuadratic59s,
caryclark@google.comf839c032012-10-26 21:03:50 +00004176 testQuadratic58o,
4177 testQuadratic58a,
4178 testQuadratic58s,
4179 testQuadratic57o,
4180 testQuadratic57s,
4181 testQuadratic56o,
4182 testQuadratic56s,
4183 testQuadratic55o,
4184 testQuadratic55s,
4185 testQuadratic54,
4186 testQuadratic53o,
4187 testQuadratic53s,
4188 testQuadratic52sa,
4189 testQuadratic52sb,
4190 testQuadratic52sc,
caryclark@google.com185c7c42012-10-19 18:26:24 +00004191 testQuadratic52o,
4192 testQuadratic52s,
caryclark@google.comfb51afb2012-10-19 15:54:16 +00004193 testQuadratic51,
4194 testQuadratic50o,
4195 testQuadratic50s,
4196 testQuadratic49s,
4197 testQuadratic48o,
4198 testQuadratic48s,
caryclark@google.comc91dfe42012-10-16 12:06:27 +00004199 testQuadratic47o,
4200 testQuadratic47s,
caryclark@google.coma461ff02012-10-11 12:54:23 +00004201 testQuadratic46o,
4202 testQuadratic46s,
4203 testQuadratic45o,
4204 testQuadratic45s,
caryclark@google.com6aea33f2012-10-09 14:11:58 +00004205 testQuadratic44o,
4206 testQuadratic44s,
4207 testQuadratic43o,
4208 testQuadratic43s,
4209 testQuadratic42o,
4210 testQuadratic42s,
4211 testQuadratic41o,
4212 testQuadratic41s,
4213 testQuadratic40xb,
4214 testQuadratic40xa,
4215 testQuadratic40x,
caryclark@google.comd1688742012-09-18 20:08:37 +00004216 testQuadratic39,
4217 testQuadratic39a,
4218 testQuadratic38,
4219 testQuadratic37,
4220 testQuadratic36,
4221 testQuadratic35,
4222 testQuadratic34,
4223 testQuadratic33,
4224 testQuadratic32,
4225 testQuadratic31,
4226 testQuadratic30,
4227 testQuadratic29,
caryclark@google.com235f56a2012-09-14 14:19:30 +00004228 testQuadratic28,
4229 testQuadratic27,
4230 testQuadratic26,
4231 testQuadratic25,
4232 testQuadratic24,
4233 testQuadratic23,
4234 testQuadratic22,
4235 testQuadratic21,
caryclark@google.com32546db2012-08-31 20:55:07 +00004236 testQuadratic20,
caryclark@google.coma7e483d2012-08-28 20:44:43 +00004237 testQuadratic19,
caryclark@google.com3350c3c2012-08-24 15:24:36 +00004238 testQuadratic18,
4239 testQuadratic17x,
4240 testQuadratic16b,
4241 testQuadratic16a,
4242 testQuadratic15,
caryclark@google.comc899ad92012-08-23 15:24:42 +00004243 testQuadratic14,
4244 testQuadratic13b,
4245 testQuadratic13a,
4246 testQuadratic12,
4247 testQuadratic11b,
4248 testQuadratic11a,
4249 testQuadratic10b,
4250 testQuadratic10a,
4251 testQuadratic9a,
4252 testQuadratic9,
4253 testQuadratic8,
4254 testQuadratic7,
4255 testQuadratic6,
4256 testQuadratic5,
4257 testQuadratic4x,
caryclark@google.com03f97062012-08-21 13:13:52 +00004258 testQuadratic3,
caryclark@google.com24bec792012-08-20 12:43:57 +00004259 testQuadratic2,
4260 testQuadratic1,
4261 testLine4x,
4262 testLine3x,
4263 testLine2x,
4264 testLine1x,
4265 testQuadralateral9,
4266 testQuadralateral8,
4267 testQuadralateral7,
4268 testFauxQuadralateral6d,
4269 testFauxQuadralateral6c,
4270 testFauxQuadralateral6b,
4271 testFauxQuadralateral6a,
4272 testFauxQuadralateral6,
4273 testQuadralateral6a,
caryclark@google.com59823f72012-08-09 18:17:47 +00004274 testQuadralateral6,
4275 testQuadralateral5,
4276 testNondegenerate4,
4277 testNondegenerate3,
4278 testNondegenerate2,
4279 testNondegenerate1,
4280 testDegenerate4,
4281 testDegenerate3,
4282 testDegenerate2,
4283 testDegenerate1,
caryclark@google.com2ddff932012-08-07 21:25:27 +00004284 testLine79,
4285 testLine78,
4286 testLine77,
4287 testLine76,
4288 testLine75,
caryclark@google.com0c803d02012-08-06 11:15:47 +00004289 testLine74,
caryclark@google.com200c2112012-08-03 15:05:04 +00004290 testLine73,
4291 testLine72,
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004292 testLine71,
4293 testLine70,
4294 testLine69,
4295 testLine68f,
4296 testLine68e,
4297 testLine68d,
4298 testLine68c,
4299 testLine68b,
4300 testLine68a,
4301 testLine67,
caryclark@google.com27c449a2012-07-27 18:26:38 +00004302 testLine66,
4303 testLine65,
4304 testLine64,
4305 testLine63,
4306 testLine62,
4307 testLine61,
4308 testLine60,
caryclark@google.comcc905052012-07-25 20:59:42 +00004309 testLine59,
4310 testLine58,
caryclark@google.com18063442012-07-25 12:05:18 +00004311 testLine57,
4312 testLine56,
caryclark@google.come21cb182012-07-23 21:26:31 +00004313 testLine55,
4314 testLine54,
4315 testLine53,
4316 testLine52,
caryclark@google.com47580692012-07-23 12:14:49 +00004317 testLine51,
4318 testLine50,
4319 testLine49,
4320 testLine48,
4321 testLine47,
4322 testLine46,
4323 testLine45,
4324 testLine44,
4325 testLine43,
4326 testLine42,
4327 testLine41,
4328 testLine40,
4329 testLine39,
4330 testLine38,
4331 testLine37,
caryclark@google.com0e08a192012-07-13 21:07:52 +00004332 testLine36,
caryclark@google.com210acaf2012-07-12 21:05:13 +00004333 testLine35,
4334 testLine34,
caryclark@google.com9764cc62012-07-12 19:29:45 +00004335 testLine33,
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004336 testLine32,
4337 testLine31,
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004338 testLine30,
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004339 testLine29,
4340 testLine28,
caryclark@google.com47580692012-07-23 12:14:49 +00004341 testLine24,
caryclark@google.comcc905052012-07-25 20:59:42 +00004342 testLine22,
caryclark@google.com47580692012-07-23 12:14:49 +00004343 testLine19,
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004344 testLine17,
caryclark@google.come21cb182012-07-23 21:26:31 +00004345 testLine13,
4346 testLine12,
caryclark@google.com47580692012-07-23 12:14:49 +00004347 testLine9,
caryclark@google.comcc905052012-07-25 20:59:42 +00004348 testLine7b,
caryclark@google.com47580692012-07-23 12:14:49 +00004349 testLine7,
caryclark@google.com45a8fc62013-02-14 15:29:11 +00004350 testLine6,
4351 testLine5,
caryclark@google.com8dcf1142012-07-02 20:27:02 +00004352 testSimplifyQuadratic21,
4353 testSimplifyQuadratic20,
4354 testSimplifyQuadratic19,
caryclark@google.comb45a1b42012-05-18 20:50:33 +00004355 testSimplifyQuadratic18,
caryclark@google.comfa0588f2012-04-26 21:01:06 +00004356 testSimplifyQuadratic17,
4357 testSimplifyQuadratic16,
4358 testSimplifyQuadratic15,
4359 testSimplifyQuadratic14,
4360 testSimplifyQuadratic13,
4361 testSimplifyQuadratic12,
4362 testSimplifyQuadratic11,
4363 testSimplifyQuadratic10,
4364 testSimplifyQuadratic9,
4365 testSimplifyQuadratic8,
4366 testSimplifyQuadratic7,
4367 testSimplifyQuadratic6,
4368 testSimplifyQuadratic5,
4369 testSimplifyQuadratic4,
4370 testSimplifyQuadratic3,
4371 testSimplifyQuadratic2,
4372 testSimplifyQuadratic1,
caryclark@google.com752b60e2012-03-22 21:11:17 +00004373];
4374
4375var scale, columns, rows, xStart, yStart;
4376
4377var ticks = 0.1;
4378var at_x = 13 + 0.5;
4379var at_y = 13 + 0.5;
caryclark@google.com2ddff932012-08-07 21:25:27 +00004380var decimal_places = 0; // make this 3 to show more precision
caryclark@google.com752b60e2012-03-22 21:11:17 +00004381
4382var tests = [];
caryclark@google.com0e08a192012-07-13 21:07:52 +00004383var testTitles = [];
caryclark@google.com752b60e2012-03-22 21:11:17 +00004384var testIndex = 0;
caryclark@google.com24bec792012-08-20 12:43:57 +00004385var hasXor = false;
caryclark@google.com6aea33f2012-10-09 14:11:58 +00004386var draw_labels = true;
caryclark@google.com752b60e2012-03-22 21:11:17 +00004387
4388var ctx;
4389
caryclark@google.com0e08a192012-07-13 21:07:52 +00004390function parse(test, title) {
caryclark@google.com752b60e2012-03-22 21:11:17 +00004391 var contours = [];
4392 var contourStrs = test.split("path.close();");
caryclark@google.comd88e0892012-03-27 13:23:51 +00004393 var pattern = /-?\d+\.*\d*/g;
caryclark@google.com24bec792012-08-20 12:43:57 +00004394 hasXor = test.split("kEvenOdd_FillType").length > 1;
caryclark@google.com752b60e2012-03-22 21:11:17 +00004395 for (var c in contourStrs) {
caryclark@google.comfb173422012-04-10 18:28:55 +00004396 var contour = contourStrs[c];
4397 var verbStrs = contour.split("path");
4398 var verbs = [];
4399 for (var v in verbStrs) {
4400 var verbStr = verbStrs[v];
4401 var points = verbStr.match(pattern);
4402 var pts = [];
4403 for (var wd in points) {
4404 var num = parseFloat(points[wd]);
4405 if (isNaN(num)) continue;
4406 pts.push(num);
4407 }
4408 if (pts.length > 0)
4409 verbs.push(pts);
caryclark@google.com752b60e2012-03-22 21:11:17 +00004410 }
caryclark@google.comfa0588f2012-04-26 21:01:06 +00004411 if (verbs.length > 0) {
4412 var lastIndex = verbs.length - 1;
4413 var lastVerb = verbs[lastIndex];
4414 var lastLen = lastVerb.length;
4415 if (verbs[0][0] != lastVerb[lastLen - 2] && verbs[0][1] != lastVerb[lastLen - 1]) {
4416 var lastPts = [];
4417 lastPts.push(verbs[0][0]);
4418 lastPts.push(verbs[0][1]);
4419 verbs.push(lastPts);
4420 }
caryclark@google.comfb173422012-04-10 18:28:55 +00004421 contours.push(verbs);
caryclark@google.comfa0588f2012-04-26 21:01:06 +00004422 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004423 }
caryclark@google.com0e08a192012-07-13 21:07:52 +00004424 if (contours.length > 0) {
caryclark@google.comfb173422012-04-10 18:28:55 +00004425 tests.push(contours);
caryclark@google.com0e08a192012-07-13 21:07:52 +00004426 testTitles.push(title);
4427 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004428}
4429
caryclark@google.com0e08a192012-07-13 21:07:52 +00004430function parseRect(test, title) {
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004431 var contours = [];
4432 var rectStrs = test.split("path.addRect");
4433 var pattern = /-?\d+\.*\d*/g;
caryclark@google.com24bec792012-08-20 12:43:57 +00004434 hasXor = test.split("kEvenOdd_FillType").length > 1;
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004435 for (var r in rectStrs) {
4436 var rect = rectStrs[r];
4437 var sideStrs = rect.match(pattern);
caryclark@google.com7fce0de2012-11-29 14:31:50 +00004438 var ccw = rect.split("kCCW_Direction").length > 1;
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004439 var sides = [];
4440 for (var wd in sideStrs) {
4441 var num = parseFloat(sideStrs[wd]);
4442 if (isNaN(num)) continue;
4443 sides.push(num);
4444 }
4445 if (sides.length == 0)
4446 continue;
4447 var verbs = [];
4448 var topLeft = [];
4449 topLeft.push(sides[0]); topLeft.push(sides[1]);
4450 var topRight = [];
4451 topRight.push(sides[2]); topRight.push(sides[1]);
4452 var botLeft = [];
4453 botLeft.push(sides[0]); botLeft.push(sides[3]);
4454 var botRight = [];
4455 botRight.push(sides[2]); botRight.push(sides[3]);
4456 verbs.push(topLeft);
caryclark@google.com7fce0de2012-11-29 14:31:50 +00004457 if (!ccw) {
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004458 verbs.push(topRight);
4459 verbs.push(botRight);
4460 verbs.push(botLeft);
4461 } else {
4462 verbs.push(botLeft);
4463 verbs.push(botRight);
4464 verbs.push(topRight);
4465 }
4466 verbs.push(topLeft);
4467 contours.push(verbs);
4468 }
caryclark@google.com0e08a192012-07-13 21:07:52 +00004469 if (contours.length > 0) {
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004470 tests.push(contours);
caryclark@google.com0e08a192012-07-13 21:07:52 +00004471 testTitles.push(title);
4472 }
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004473}
4474
caryclark@google.com752b60e2012-03-22 21:11:17 +00004475function init(test) {
4476 var canvas = document.getElementById('canvas');
4477 if (!canvas.getContext) return;
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004478 canvas.width = window.innerWidth - at_x;
4479 canvas.height = window.innerHeight - at_y;
caryclark@google.com752b60e2012-03-22 21:11:17 +00004480 ctx = canvas.getContext('2d');
4481 var xmin = Infinity;
4482 var xmax = -Infinity;
4483 var ymin = Infinity;
4484 var ymax = -Infinity;
caryclark@google.comfb173422012-04-10 18:28:55 +00004485 for (var contours in test) {
4486 var contour = test[contours];
4487 for (var verbs in contour) {
4488 var verb = contour[verbs];
4489 var last = verb.length;
caryclark@google.comb45a1b42012-05-18 20:50:33 +00004490 for (var idx = 0; idx < last; idx += 2) {
4491 xmin = Math.min(xmin, verb[idx]);
4492 xmax = Math.max(xmax, verb[idx]);
4493 ymin = Math.min(ymin, verb[idx + 1]);
4494 ymax = Math.max(ymax, verb[idx + 1]);
4495 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004496 }
4497 }
4498 var subscale = 1;
4499 while ((xmax - xmin) * subscale < 0.1 && (ymax - ymin) * subscale < 0.1) {
4500 subscale *= 10;
4501 }
4502 columns = Math.ceil(xmax) - Math.floor(xmin) + 1;
4503 rows = Math.ceil(ymax) - Math.floor(ymin) + 1;
4504 xStart = Math.floor(xmin);
4505 yStart = Math.floor(ymin);
4506 var hscale = ctx.canvas.width / columns / ticks;
4507 var vscale = ctx.canvas.height / rows / ticks;
4508 scale = Math.floor(Math.min(hscale, vscale)) * subscale;
4509}
4510
4511function drawPoint(px, py, xoffset, yoffset, unit) {
caryclark@google.com2ddff932012-08-07 21:25:27 +00004512 var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
caryclark@google.com752b60e2012-03-22 21:11:17 +00004513 var _px = px * unit + xoffset;
4514 var _py = py * unit + yoffset;
4515 ctx.beginPath();
4516 ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
4517 ctx.closePath();
4518 ctx.fill();
4519 ctx.fillText(label, _px + 5, _py);
4520}
4521
caryclark@google.com0e08a192012-07-13 21:07:52 +00004522function draw(test, title, _at_x, _at_y, scale) {
4523 ctx.fillStyle = "rgba(0,0,0, 0.1)";
4524 ctx.font = "normal 50px Arial";
4525 ctx.fillText(title, 50, 50);
4526 ctx.font = "normal 10px Arial";
4527
caryclark@google.com752b60e2012-03-22 21:11:17 +00004528 var unit = scale * ticks;
4529 ctx.lineWidth = 1;
4530 var i;
4531 for (i = 0; i <= rows * ticks; ++i) {
4532 ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
4533 ctx.beginPath();
4534 ctx.moveTo(_at_x + 0, _at_y + i * scale);
4535 ctx.lineTo(_at_x + unit * columns, _at_y + i * scale);
4536 ctx.stroke();
4537 }
4538 for (i = 0; i <= columns * ticks; ++i) {
4539 ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
4540 ctx.beginPath();
4541 ctx.moveTo(_at_x + i * scale, _at_y + 0);
4542 ctx.lineTo(_at_x + i * scale, _at_y + unit * rows);
4543 ctx.stroke();
4544 }
4545
4546 var xoffset = xStart * -unit + _at_x;
4547 var yoffset = yStart * -unit + _at_y;
4548
4549 ctx.fillStyle = "rgb(40,80,60)"
4550 for (i = 0; i <= columns; i += (1 / ticks))
4551 {
4552 num = (xoffset - _at_x) / -unit + i;
4553 ctx.fillText(num.toFixed(0), i * unit + _at_y - 5, 10);
4554 }
4555 for (i = 0; i <= rows; i += (1 / ticks))
4556 {
4557 num = (yoffset - _at_x) / -unit + i;
4558 ctx.fillText(num.toFixed(0), 0, i * unit + _at_y + 0);
4559 }
caryclark@google.com32546db2012-08-31 20:55:07 +00004560
caryclark@google.com752b60e2012-03-22 21:11:17 +00004561 ctx.strokeStyle = "red";
caryclark@google.comfb173422012-04-10 18:28:55 +00004562 var contours, verbs, pts;
caryclark@google.com8dcf1142012-07-02 20:27:02 +00004563 ctx.beginPath();
caryclark@google.comfb173422012-04-10 18:28:55 +00004564 for (contours in test) {
4565 var contour = test[contours];
4566 if (contours == 2) ctx.strokeStyle = "blue";
caryclark@google.comfb173422012-04-10 18:28:55 +00004567 var first = true;
4568 for (verbs in contour) {
4569 var verb = contour[verbs];
4570 switch (verb.length) {
4571 case 2:
4572 if (first) {
4573 ctx.moveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit);
4574 first = false;
4575 } else
4576 ctx.lineTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit);
4577 break;
4578 case 4:
4579 ctx.quadraticCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit,
4580 xoffset + verb[2] * unit, yoffset + verb[3] * unit);
4581 break;
4582 case 6:
4583 ctx.bezierCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit,
4584 xoffset + verb[2] * unit, yoffset + verb[3] * unit,
4585 xoffset + verb[4] * unit, yoffset + verb[5] * unit);
4586 break;
4587 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004588 }
caryclark@google.com8dcf1142012-07-02 20:27:02 +00004589 ctx.closePath();
caryclark@google.com752b60e2012-03-22 21:11:17 +00004590 }
caryclark@google.com73ca6242013-01-17 21:02:47 +00004591 // uncomment if ever part of the standard
4592 // ctx.fillRule=hasXor ? evenodd : nonzero;
caryclark@google.com8dcf1142012-07-02 20:27:02 +00004593 ctx.stroke();
4594 ctx.fillStyle="rgba(192,192,255, 0.3)";
4595 ctx.fill();
caryclark@google.com752b60e2012-03-22 21:11:17 +00004596
caryclark@google.com6aea33f2012-10-09 14:11:58 +00004597 if (!draw_labels) {
4598 return;
4599 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004600 ctx.fillStyle="blue";
caryclark@google.comfb173422012-04-10 18:28:55 +00004601 for (contours in test) {
4602 var contour = test[contours];
4603 for (verbs in contour) {
4604 var verb = contour[verbs];
4605 for (i = 0; i < verb.length; i += 2) {
4606 x = verb[i];
4607 y = verb[i + 1];
4608 drawPoint(x, y, xoffset, yoffset, unit);
4609 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004610 }
4611 }
4612}
4613
4614var mouseX = Infinity, mouseY;
4615
4616function calcXY() {
4617 var e = window.event;
4618 var tgt = e.target || e.srcElement;
4619 var left = tgt.offsetLeft;
4620 var top = tgt.offsetTop;
4621 var unit = scale * ticks;
4622 mouseX = (e.clientX - left - Math.ceil(at_x) + 1) / unit + xStart;
4623 mouseY = (e.clientY - top - Math.ceil(at_y)) / unit + yStart;
4624}
4625
4626function handleMouseOver() {
4627 calcXY();
4628 var num = mouseX.toFixed(3) + ", " + mouseY.toFixed(3);
4629 ctx.beginPath();
caryclark@google.com4aaaaea2013-02-28 16:12:39 +00004630 ctx.rect(300,0,72,9);
caryclark@google.com752b60e2012-03-22 21:11:17 +00004631 ctx.fillStyle="white";
4632 ctx.fill();
4633 ctx.fillStyle="black";
caryclark@google.com4aaaaea2013-02-28 16:12:39 +00004634 ctx.fillText(num, 300, 7);
caryclark@google.com752b60e2012-03-22 21:11:17 +00004635}
4636
4637function handleMouseClick() {
4638 calcXY();
4639// drawInset();
4640}
4641
4642function drawTop() {
4643 init(tests[testIndex]);
4644 redraw();
4645}
4646
4647function redraw() {
4648 ctx.beginPath();
4649 ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
4650 ctx.fillStyle="white";
4651 ctx.fill();
caryclark@google.com0e08a192012-07-13 21:07:52 +00004652 draw(tests[testIndex], testTitles[testIndex], at_x, at_y, scale);
caryclark@google.com752b60e2012-03-22 21:11:17 +00004653// if (insetScale != scale && mouseX != Infinity)
4654// drawInset();
4655}
4656
4657function doKeyPress(evt) {
4658 var char = String.fromCharCode(evt.charCode);
4659 switch (char) {
4660 case 'N':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004661 testIndex += 9;
caryclark@google.com752b60e2012-03-22 21:11:17 +00004662 case 'n':
4663 if (++testIndex >= tests.length)
4664 testIndex = 0;
caryclark@google.comfa0588f2012-04-26 21:01:06 +00004665 mouseX = Infinity;
4666 drawTop();
4667 break;
4668 case 'P':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004669 testIndex -= 9;
caryclark@google.comfa0588f2012-04-26 21:01:06 +00004670 case 'p':
4671 if (--testIndex < 0)
4672 testIndex = tests.length - 1;
caryclark@google.com752b60e2012-03-22 21:11:17 +00004673 mouseX = Infinity;
4674 drawTop();
4675 break;
4676 case 'T':
4677 case 't':
caryclark@google.com752b60e2012-03-22 21:11:17 +00004678 break;
4679 case '-':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004680 drawTop();
caryclark@google.com752b60e2012-03-22 21:11:17 +00004681 break;
4682 case '=':
4683 case '+':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004684 drawTop();
caryclark@google.com752b60e2012-03-22 21:11:17 +00004685 break;
caryclark@google.com6aea33f2012-10-09 14:11:58 +00004686 case 'x':
4687 draw_labels ^= true;
4688 drawTop();
4689 break;
caryclark@google.com752b60e2012-03-22 21:11:17 +00004690 }
4691}
4692
4693function start() {
4694 for (i = 0; i < testDivs.length; ++i) {
caryclark@google.com0e08a192012-07-13 21:07:52 +00004695 var title = testDivs[i].id.toString();
caryclark@google.com752b60e2012-03-22 21:11:17 +00004696 var str = testDivs[i].firstChild.data;
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004697 if (str.split("addRect").length > 1) {
caryclark@google.com0e08a192012-07-13 21:07:52 +00004698 parseRect(str, title);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004699 } else {
caryclark@google.com0e08a192012-07-13 21:07:52 +00004700 parse(str, title);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004701 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004702 }
4703 drawTop();
4704 window.addEventListener('keypress', doKeyPress, true);
caryclark@google.com534aa5b2012-08-02 20:08:21 +00004705 window.onresize = function() {
4706 drawTop();
4707 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00004708}
4709
4710</script>
4711</head>
4712
4713<body onLoad="start();">
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00004714<canvas id="canvas" width="750" height="500"
caryclark@google.com752b60e2012-03-22 21:11:17 +00004715 onmousemove="handleMouseOver()"
4716 onclick="handleMouseClick()"
4717 ></canvas >
4718</body>
4719</html>