blob: 3621af036e5b24dd932482c30a19c53fff42ee04 [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
303<div id="testLine6">
304 SkPath path, simple;
305 path.moveTo(0,0);
306 path.lineTo(4,0);
307 path.lineTo(2,2);
308 path.close();
309 path.moveTo(2,0);
310 path.lineTo(6,0);
311 path.lineTo(4,2);
312 path.close();
313 testSimplifyx(path);
314</div>
315
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000316<div id="testLine7">
317 SkPath path, simple;
318 path.moveTo(0,0);
319 path.lineTo(4,0);
320 path.lineTo(2,2);
321 path.close();
322 path.moveTo(6,0);
323 path.lineTo(2,0);
324 path.lineTo(4,2);
325 path.close();
326 testSimplifyx(path);
327</div>
328
caryclark@google.comcc905052012-07-25 20:59:42 +0000329<div id="testLine7b">
330 path.moveTo(0,0);
331 path.lineTo(4,0);
332 path.close();
333 path.moveTo(6,0);
334 path.lineTo(2,0);
335 path.lineTo(4,2);
336 path.close();
337</div>
338
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000339<div id="testLine9">
340 SkPath path, simple;
341 path.moveTo(0,4);
342 path.lineTo(4,4);
343 path.lineTo(2,2);
344 path.close();
345 path.moveTo(6,4);
346 path.lineTo(2,4);
347 path.lineTo(4,2);
348 path.close();
349 testSimplifyx(path);
350</div>
351
caryclark@google.come21cb182012-07-23 21:26:31 +0000352<div id="testLine12">
353 path.moveTo(0,4);
354 path.lineTo(6,4);
355 path.lineTo(3,1);
356 path.close();
357 path.moveTo(2,3);
358 path.lineTo(3,2);
359 path.lineTo(4,3);
360 path.close();
361</div>
362
363<div id="testLine13">
364 path.moveTo(6,4);
365 path.lineTo(0,4);
366 path.lineTo(3,1);
367 path.close();
368 path.moveTo(3,2);
369 path.lineTo(2,3);
370 path.lineTo(4,3);
371 path.close();
372</div>
373
caryclark@google.com8dcf1142012-07-02 20:27:02 +0000374<div id="testLine17">
375 SkPath path, simple;
376 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
377 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
378 testSimplifyx(path);
379</div>
380
caryclark@google.com47580692012-07-23 12:14:49 +0000381<div id="testLine19">
382 SkPath path, simple;
383 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
384 path.addRect(12, 16, 21, 21, (SkPath::Direction) 0);
385 testSimplifyx(path);
386</div>
387
caryclark@google.comcc905052012-07-25 20:59:42 +0000388<div id="testLine22">
389 path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
390 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
391</div>
392
caryclark@google.com47580692012-07-23 12:14:49 +0000393<div id="testLine24">
394 path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
395 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
396</div>
397
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000398<div id="testLine28">
399 SkPath path, simple;
400 path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
401 path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
402 testSimplifyx(path);
403</div>
404
405<div id="testLine29">
406 SkPath path, simple;
407 path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
408 path.addRect(12, 12, 21, 21, (SkPath::Direction) 0);
409 testSimplifyx(path);
410</div>
411
412<div id="testLine30">
413 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
414 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
415 path.addRect(4, 4, 13, 13, (SkPath::Direction) 0);
416</div>
417
418<div id="testLine31">
419 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
420 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
421 path.addRect(0, 4, 9, 9, (SkPath::Direction) 0);
422</div>
423
424<div id="testLine32">
425 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
426 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
427 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
428</div>
429
caryclark@google.com9764cc62012-07-12 19:29:45 +0000430<div id="testLine33">
431 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
432 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
433 path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
434</div>
435
caryclark@google.com210acaf2012-07-12 21:05:13 +0000436<div id="testLine34">
437 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
438 path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
439 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
440</div>
441
442<div id="testLine35">
443 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
444 path.addRect(6, 0, 18, 18, (SkPath::Direction) 0);
445 path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
446</div>
447
caryclark@google.com0e08a192012-07-13 21:07:52 +0000448<div id="testLine36">
449 path.addRect(0, 10, 20, 20, (SkPath::Direction) 0);
450 path.addRect(6, 12, 18, 18, (SkPath::Direction) 0);
451 path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
452</div>
453
caryclark@google.com47580692012-07-23 12:14:49 +0000454<div id="testLine37">
455 path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
456 path.addRect(18, 24, 30, 30, (SkPath::Direction) 0);
457 path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
458</div>
459
460<div id="testLine38">
461 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
462 path.addRect(6, 12, 18, 18, (SkPath::Direction) 0);
463 path.addRect(12, 12, 21, 21, (SkPath::Direction) 0);
464</div>
465
466<div id="testLine39">
467 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
468 path.addRect(12, 6, 24, 24, (SkPath::Direction) 0);
469 path.addRect(12, 4, 21, 21, (SkPath::Direction) 0);
470</div>
471
472<div id="testLine40">
473 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
474 path.addRect(12, 18, 24, 24, (SkPath::Direction) 0);
475 path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
476</div>
477
478<div id="testLine41">
479 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
480 path.addRect(18, 24, 30, 30, (SkPath::Direction) 0);
481 path.addRect(12, 0, 21, 21, (SkPath::Direction) 0);
482</div>
483
484<div id="testLine42">
485 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
486 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
487 path.addRect(8, 16, 17, 17, (SkPath::Direction) 0);
488</div>
489
490<div id="testLine43">
491 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
492 path.addRect(6, 24, 18, 18, (SkPath::Direction) 0);
493 path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
494</div>
495
496<div id="testLine44">
497 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
498 path.addRect(18, 0, 30, 30, (SkPath::Direction) 0);
499 path.addRect(18, 32, 27, 36, (SkPath::Direction) 1);
500</div>
501
502<div id="testLine45">
503 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
504 path.addRect(18, 0, 30, 30, (SkPath::Direction) 0);
505 path.addRect(24, 32, 33, 36, (SkPath::Direction) 0);
506</div>
507
508<div id="testLine46">
509 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
510 path.addRect(24, 0, 36, 36, (SkPath::Direction) 0);
511 path.addRect(24, 32, 33, 36, (SkPath::Direction) 0);
512</div>
513
514<div id="testLine47">
515 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
516 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
517 path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
518</div>
519
520<div id="testLine48">
521 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
522 path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
523 path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
524</div>
525
526<div id="testLine49">
527 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
528 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
529 path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
530</div>
531
532<div id="testLine50">
533 path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
534 path.addRect(24, 20, 36, 30, (SkPath::Direction) 0);
535</div>
536
537<div id="testLine51">
538 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
539 path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
540 path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
541</div>
542
caryclark@google.come21cb182012-07-23 21:26:31 +0000543<div id="testLine52">
544 path.addRect(0, 30, 20, 20, (SkPath::Direction) 0);
545 path.addRect(6, 20, 18, 30, (SkPath::Direction) 0);
546 path.addRect(32, 0, 36, 41, (SkPath::Direction) 0);
547</div>
548
549<div id="testLine53">
550 path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
551 path.addRect(12, 20, 24, 30, (SkPath::Direction) 0);
552 path.addRect(12, 32, 21, 36, (SkPath::Direction) 1);
553</div>
554
555<div id="testLine54">
556 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
557 path.addRect(6, 0, 18, 18, (SkPath::Direction) 0);
558 path.addRect(8, 4, 17, 17, (SkPath::Direction) 1);
559</div>
560
561<div id="testLine55">
562 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
563 path.addRect(6, 6, 18, 18, (SkPath::Direction) 0);
564 path.addRect(4, 4, 13, 13, (SkPath::Direction) 1);
565</div>
566
caryclark@google.com18063442012-07-25 12:05:18 +0000567<div id="testLine56">
568 path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
569 path.addRect(18, 20, 30, 30, (SkPath::Direction) 0);
570 path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
571</div>
572
573<div id="testLine57">
574 path.addRect(20, 0, 40, 40, (SkPath::Direction) 0);
575 path.addRect(20, 0, 30, 40, (SkPath::Direction) 0);
576 path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
577</div>
578
caryclark@google.comcc905052012-07-25 20:59:42 +0000579<div id="testLine58">
580 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
581 path.addRect(0, 0, 12, 12, (SkPath::Direction) 1);
582 path.addRect(0, 12, 9, 9, (SkPath::Direction) 1);
583</div>
584
585<div id="testLine59">
586 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
587 path.addRect(6, 6, 18, 18, (SkPath::Direction) 1);
588 path.addRect(4, 4, 13, 13, (SkPath::Direction) 1);
589</div>
590
caryclark@google.com27c449a2012-07-27 18:26:38 +0000591<div id="testLine60">
592 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
593 path.addRect(6, 12, 18, 18, (SkPath::Direction) 1);
594 path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
595</div>
596
597<div id="testLine61">
598 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
599 path.addRect(12, 0, 24, 24, (SkPath::Direction) 1);
600 path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
601</div>
602
603<div id="testLine62">
604 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
605 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
606 path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
607 path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
608</div>
609
610<div id="testLine63">
611 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
612 path.addRect(0, 10, 20, 20, (SkPath::Direction) 0);
613 path.addRect(0, 6, 12, 12, (SkPath::Direction) 1);
614 path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
615</div>
616
617<div id="testLine64">
618 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
619 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
620 path.addRect(18, 6, 30, 30, (SkPath::Direction) 0);
621</div>
622
623<div id="testLine65">
624 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
625 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
626 path.addRect(24, 0, 36, 36, (SkPath::Direction) 0);
627 path.addRect(32, 6, 36, 41, (SkPath::Direction) 1);
628</div>
629
630<div id="testLine66">
631 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
632 path.addRect(0, 30, 20, 20, (SkPath::Direction) 0);
633 path.addRect(12, 20, 24, 30, (SkPath::Direction) 0);
634</div>
635
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000636<div id="testLine67">
637 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
638 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
639 path.addRect(24, 20, 36, 30, (SkPath::Direction) 0);
640 path.addRect(32, 0, 36, 41, (SkPath::Direction) 0);
641</div>
642
643<div id="testLine68a">
644 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
645 path.addRect(2, 2, 6, 6, (SkPath::Direction) 0);
646 path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
647</div>
648
649<div id="testLine68b">
650 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
651 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
652 path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
653</div>
654
655<div id="testLine68c">
656 path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
657 path.addRect(2, 2, 6, 6, (SkPath::Direction) 0);
658 path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
659</div>
660
661<div id="testLine68d">
662 path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
663 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
664 path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
665</div>
666
667<div id="testLine68e">
668 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
669 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
670 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
671 path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
672</div>
673
674<div id="testLine68f">
675 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
676 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
677 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
678 path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
679</div>
680
681<div id="testLine69">
682 path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
683 path.addRect(0, 20, 12, 30, (SkPath::Direction) 0);
684 path.addRect(12, 32, 21, 36, (SkPath::Direction) 0);
685</div>
686
687<div id="testLine70">
688 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
689 path.addRect(0, 24, 12, 12, (SkPath::Direction) 0);
690 path.addRect(12, 32, 21, 36, (SkPath::Direction) 1);
691</div>
692
693<div id="testLine71">
694 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
695 path.addRect(12, 0, 24, 24, (SkPath::Direction) 0);
696 path.addRect(12, 32, 21, 36, (SkPath::Direction) 0);
697</div>
698
caryclark@google.com200c2112012-08-03 15:05:04 +0000699<div id="testLine72">
700 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
701 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
702 path.addRect(6, 20, 18, 30, (SkPath::Direction) 0);
703</div>
704
705<div id="testLine73">
706 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
707 path.addRect(0, 40, 20, 20, (SkPath::Direction) 0);
708 path.addRect(0, 20, 12, 30, (SkPath::Direction) 0);
709 path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
710</div>
711
caryclark@google.com0c803d02012-08-06 11:15:47 +0000712<div id="testLine74">
713 path.addRect(20, 30, 40, 40, (SkPath::Direction) 0);
714 path.addRect(24, 20, 36, 30, (SkPath::Direction) 1);
715 path.addRect(32, 24, 36, 41, (SkPath::Direction) 1);
716</div>
717
caryclark@google.com2ddff932012-08-07 21:25:27 +0000718<div id="testLine75">
719 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
720 path.addRect(10, 0, 30, 30, (SkPath::Direction) 1);
721 path.addRect(18, 0, 30, 30, (SkPath::Direction) 1);
722 path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
723</div>
724
725<div id="testLine76">
726 path.addRect(36, 0, 66, 60, (SkPath::Direction) 0);
727 path.addRect(10, 20, 40, 30, (SkPath::Direction) 0);
728 path.addRect(24, 20, 36, 30, (SkPath::Direction) 1);
729 path.addRect(32, 6, 36, 41, (SkPath::Direction) 1);
730</div>
731
732<div id="testLine77">
733 path.addRect(20, 0, 40, 40, (SkPath::Direction) 0);
734 path.addRect(24, 6, 36, 36, (SkPath::Direction) 1);
735 path.addRect(24, 32, 33, 36, (SkPath::Direction) 1);
736</div>
737
738<div id="testLine78">
739 path.addRect(0, 0, 30, 60, (SkPath::Direction) 0);
740 path.addRect(10, 20, 30, 30, (SkPath::Direction) 1);
741 path.addRect(18, 20, 30, 30, (SkPath::Direction) 1);
742 path.addRect(32, 0, 36, 41, (SkPath::Direction) 1);
743</div>
744
745<div id="testLine79">
746 path.addRect(0, 36, 60, 30, (SkPath::Direction) 0);
747 path.addRect(10, 30, 40, 30, (SkPath::Direction) 0);
748 path.addRect(0, 20, 12, 30, (SkPath::Direction) 1);
749 path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
750</div>
751
caryclark@google.com59823f72012-08-09 18:17:47 +0000752<div id="testDegenerate1">
753 path.moveTo(0, 0);
754 path.lineTo(0, 0);
755 path.lineTo(2, 0);
756 path.close();
757 path.moveTo(0, 0);
758 path.lineTo(1, 0);
759 path.lineTo(2, 0);
760 path.close();
761</div>
762
763<div id="testDegenerate2">
764 path.moveTo(0, 0);
765 path.lineTo(0, 0);
766 path.lineTo(0, 0);
767 path.close();
768 path.moveTo(0, 0);
769 path.lineTo(1, 0);
770 path.lineTo(0, 1);
771 path.close();
772</div>
773
774<div id="testDegenerate3">
775 path.moveTo(0, 0);
776 path.lineTo(2, 0);
777 path.lineTo(1, 0);
778 path.close();
779 path.moveTo(0, 0);
780 path.lineTo(0, 0);
781 path.lineTo(3, 0);
782 path.close();
783</div>
784
785<div id="testDegenerate4">
786 path.moveTo(0, 0);
787 path.lineTo(1, 0);
788 path.lineTo(1, 3);
789 path.close();
790 path.moveTo(1, 0);
791 path.lineTo(1, 1);
792 path.lineTo(1, 2);
793 path.close();
794</div>
795
796<div id="testNondegenerate1">
797 path.moveTo(0, 0);
798 path.lineTo(3, 0);
799 path.lineTo(1, 3);
800 path.close();
801 path.moveTo(1, 1);
802 path.lineTo(2, 1);
803 path.lineTo(1, 2);
804 path.close();
805</div>
806
807<div id="testNondegenerate2">
808 path.moveTo(1, 0);
809 path.lineTo(0, 1);
810 path.lineTo(1, 1);
811 path.close();
812 path.moveTo(0, 2);
813 path.lineTo(0, 3);
814 path.lineTo(1, 2);
815 path.close();
816</div>
817
818<div id="testNondegenerate3">
819 path.moveTo(0, 0);
820 path.lineTo(1, 0);
821 path.lineTo(2, 1);
822 path.close();
823 path.moveTo(0, 1);
824 path.lineTo(1, 1);
825 path.lineTo(0, 2);
826 path.close();
827</div>
828
829<div id="testNondegenerate4">
830 path.moveTo(1, 0);
831 path.lineTo(0, 1);
832 path.lineTo(1, 2);
833 path.close();
834 path.moveTo(0, 2);
835 path.lineTo(0, 3);
836 path.lineTo(1, 3);
837 path.close();
838</div>
839
840<div id="testQuadralateral5">
841 path.moveTo(0, 0);
842 path.lineTo(0, 0);
843 path.lineTo(1, 0);
844 path.lineTo(1, 1);
845 path.close();
846 path.moveTo(0, 0);
847 path.lineTo(2, 2);
848 path.lineTo(3, 2);
849 path.lineTo(3, 3);
850 path.close();
851</div>
852
853<div id="testQuadralateral6">
854 path.moveTo(0, 0);
855 path.lineTo(0, 0);
856 path.lineTo(1, 0);
857 path.lineTo(1, 1);
858 path.close();
859 path.moveTo(1, 0);
860 path.lineTo(2, 0);
861 path.lineTo(0, 2);
862 path.lineTo(2, 2);
863 path.close();
864</div>
865
caryclark@google.com24bec792012-08-20 12:43:57 +0000866<div id="testFauxQuadralateral6">
867 path.moveTo(0, 0);
868 path.lineTo(1, 0);
869 path.lineTo(1, 1);
870 path.close();
871 path.moveTo(1, 0);
872 path.lineTo(2, 0);
873 path.lineTo(1.333, 0.667);
874 path.close();
875 path.moveTo(1.333, 0.667);
876 path.lineTo(0, 2);
877 path.lineTo(2, 2);
878 path.close();
879</div>
880
881<div id="testFauxQuadralateral6a">
882 path.moveTo(0, 0);
883 path.lineTo(3, 0);
884 path.lineTo(3, 3);
885 path.close();
886 path.moveTo(3, 0);
887 path.lineTo(6, 0);
888 path.lineTo(4, 2);
889 path.close();
890 path.moveTo(4, 2);
891 path.lineTo(0, 6);
892 path.lineTo(6, 6);
893 path.close();
894</div>
895
896<div id="testFauxQuadralateral6b">
897 path.moveTo(0, 0);
898 path.lineTo(3, 0);
899 path.lineTo(3, 3);
900 path.close();
901 path.moveTo(3, 0);
902 path.lineTo(6, 0);
903 path.lineTo(4, 2);
904 path.close();
905 path.moveTo(4, 2);
906 path.lineTo(6, 6);
907 path.lineTo(0, 6);
908 path.close();
909</div>
910
911<div id="testFauxQuadralateral6c">
912 path.moveTo(0, 0);
913 path.lineTo(3, 3);
914 path.lineTo(3, 0);
915 path.close();
916 path.moveTo(3, 0);
917 path.lineTo(6, 0);
918 path.lineTo(4, 2);
919 path.close();
920 path.moveTo(4, 2);
921 path.lineTo(0, 6);
922 path.lineTo(6, 6);
923 path.close();
924</div>
925
926<div id="testFauxQuadralateral6d">
927 path.moveTo(0, 0);
928 path.lineTo(3, 3);
929 path.lineTo(3, 0);
930 path.close();
931 path.moveTo(3, 0);
932 path.lineTo(6, 0);
933 path.lineTo(4, 2);
934 path.close();
935 path.moveTo(4, 2);
936 path.lineTo(6, 6);
937 path.lineTo(0, 6);
938</div>
939
940<div id="testQuadralateral6a">
941 path.moveTo(0, 0);
942 path.lineTo(0, 0);
943 path.lineTo(3, 0);
944 path.lineTo(3, 3);
945 path.close();
946 path.moveTo(3, 0);
947 path.lineTo(6, 0);
948 path.lineTo(0, 6);
949 path.lineTo(6, 6);
950</div>
951
952<div id="testQuadralateral7">
953 path.moveTo(0, 0);
954 path.lineTo(0, 0);
955 path.lineTo(1, 0);
956 path.lineTo(2, 1);
957 path.close();
958 path.moveTo(1, 0);
959 path.lineTo(1, 1);
960 path.lineTo(2, 2);
961 path.lineTo(1, 3);
962 path.close();
963</div>
964
965<div id="testQuadralateral8">
966 path.moveTo(0, 0);
967 path.lineTo(3, 1);
968 path.lineTo(1, 3);
969 path.lineTo(3, 3);
970 path.close();
971 path.moveTo(2, 1);
972 path.lineTo(0, 2);
973 path.lineTo(3, 2);
974 path.lineTo(2, 3);
975 path.close();
976</div>
977
978<div id="testQuadralateral9">
979 path.moveTo(0, 0);
980 path.lineTo(1, 0);
981 path.lineTo(1, 2);
982 path.lineTo(2, 2);
983 path.close();
984 path.moveTo(1, 1);
985 path.lineTo(2, 1);
986 path.lineTo(1, 3);
987 path.lineTo(2, 3);
988 path.close();
989</div>
990
991<div id="testLine1x">
992 path.setFillType(SkPath::kEvenOdd_FillType);
993 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
994 path.addRect(4, 0, 13, 13, (SkPath::Direction) 0);
995</div>
996
997<div id="testLine2x">
998 path.setFillType(SkPath::kEvenOdd_FillType);
999 path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
1000 path.addRect(0, 20, 12, 30, (SkPath::Direction) 0);
1001 path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
1002</div>
1003
1004<div id="testLine3x">
1005 path.setFillType(SkPath::kEvenOdd_FillType);
1006 path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
1007 path.addRect(18, 20, 30, 30, (SkPath::Direction) 1);
1008 path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
1009</div>
1010
1011<div id="testLine4x">
1012 path.setFillType(SkPath::kEvenOdd_FillType);
1013 path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
1014 path.addRect(24, 20, 36, 30, (SkPath::Direction) 1);
1015 path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
1016</div>
1017
1018<div id="testQuadratic1">
1019 path.moveTo(0, 0);
1020 path.quadTo(0, 0, 0, 0);
1021 path.lineTo(1, 0);
1022 path.close();
1023 path.moveTo(0, 0);
1024 path.lineTo(0, 0);
1025 path.quadTo(0, 0, 0, 0);
1026 path.close();
1027</div>
1028
1029<div id="testQuadratic2">
1030 path.moveTo(0, 0);
1031 path.quadTo(0, 0, 0, 0);
1032 path.lineTo(3, 0);
1033 path.close();
1034 path.moveTo(0, 0);
1035 path.lineTo(0, 0);
1036 path.quadTo(1, 0, 0, 1);
1037 path.close();
1038</div>
1039
caryclark@google.com03f97062012-08-21 13:13:52 +00001040<div id="testQuadratic3">
1041 path.moveTo(0, 0);
1042 path.quadTo(0, 0, 1, 0);
1043 path.lineTo(0, 2);
1044 path.close();
1045 path.moveTo(0, 0);
1046 path.lineTo(0, 0);
1047 path.quadTo(1, 0, 0, 1);
1048 path.close();
1049</div>
1050
caryclark@google.comc899ad92012-08-23 15:24:42 +00001051<div id="testQuadratic4x">
1052 path.setFillType(SkPath::kEvenOdd_FillType);
1053 path.moveTo(0, 0);
1054 path.quadTo(0, 0, 1, 0);
1055 path.lineTo(0, 2);
1056 path.close();
1057 path.moveTo(0, 0);
1058 path.lineTo(0, 0);
1059 path.quadTo(1, 0, 0, 2);
1060 path.close();
1061</div>
1062
1063<div id="testQuadratic5">
1064 path.moveTo(0, 0);
1065 path.quadTo(0, 0, 0, 0);
1066 path.lineTo(0, 1);
1067 path.close();
1068 path.moveTo(0, 0);
1069 path.lineTo(1, 0);
1070 path.quadTo(0, 1, 0, 2);
1071 path.close();
1072</div>
1073
1074<div id="testQuadratic6">
1075 path.moveTo(0, 0);
1076 path.quadTo(0, 0, 1, 0);
1077 path.lineTo(2, 1);
1078 path.close();
1079 path.moveTo(0, 0);
1080 path.lineTo(0, 0);
1081 path.quadTo(2, 0, 0, 1);
1082 path.close();
1083</div>
1084
1085<div id="testQuadratic7">
1086 path.moveTo(0, 0);
1087 path.quadTo(0, 0, 1, 0);
1088 path.lineTo(3, 1);
1089 path.close();
1090 path.moveTo(0, 0);
1091 path.lineTo(0, 0);
1092 path.quadTo(3, 0, 1, 2);
1093 path.close();
1094</div>
1095
1096<div id="testQuadratic8">
1097 path.moveTo(0, 0);
1098 path.quadTo(0, 0, 1, 0);
1099 path.lineTo(0, 2);
1100 path.close();
1101 path.moveTo(0, 0);
1102 path.lineTo(1, 0);
1103 path.quadTo(0, 1, 1, 2);
1104 path.close();
1105</div>
1106
1107<div id="testQuadratic9">
1108 path.moveTo(0, 0);
1109 path.quadTo(0, 0, 1, 0);
1110 path.lineTo(3, 1);
1111 path.close();
1112 path.moveTo(0, 0);
1113 path.lineTo(1, 0);
1114 path.quadTo(1, 2, 3, 2);
1115 path.close();
1116</div>
1117
1118<div id="testQuadratic9a">
1119 path.moveTo(1.08000004, 0.720000029);
1120 path.lineTo(0, 0);
1121 path.lineTo(1, 0);
1122 path.lineTo(3, 1);
1123 path.lineTo(1.01568651, 0.338562161);
1124 path.quadTo(1.03542483, 0.541699469, 1.08000004, 0.720000029);
1125 path.close();
1126 path.moveTo(1.08000004, 0.720000029);
1127 path.lineTo(3, 2);
1128 path.quadTo(1.39999998, 2, 1.08000004, 0.720000029);
1129 path.close();
1130
1131</div>
1132
1133<div id="testQuadratic10a">
1134path.moveTo(15.5, 15.5);
1135path.lineTo(46.5, 15.5);
1136path.quadTo(0, 31, 0, 46.5);
1137path.lineTo(15.5, 15.5);
1138path.close();
1139</div>
1140
1141<div id="testQuadratic10b">
1142path.moveTo(5.16666698, 36.1666641);
1143path.lineTo(15.5, 15.5);
1144path.lineTo(46.5, 15.5);
1145path.quadTo(15.5, 25.8333321, 5.16666698, 36.1666641);
1146path.close();
1147path.moveTo(5.16666698, 36.1666641);
1148path.lineTo(0, 46.5);
1149path.quadTo(0, 41.3333359, 5.16666698, 36.1666641);
1150path.close();
1151</div>
1152
1153<div id="testQuadratic11a">
1154path.moveTo(0, 0);
1155path.lineTo(15.5, 31);
1156path.lineTo(0, 0);
1157path.close();
1158path.moveTo(0, 15.5);
1159path.lineTo(15.5, 15.5);
1160path.quadTo(15.5, 15.5, 46.5, 31);
1161path.lineTo(0, 15.5);
1162path.close();
1163</div>
1164
1165<div id="testQuadratic11b">
1166path.moveTo(9.30000019, 18.6000004);
1167path.lineTo(0, 15.5);
1168path.lineTo(7.75, 15.5);
1169path.lineTo(15.5, 15.5);
1170path.lineTo(46.5, 31);
1171path.lineTo(9.30000019, 18.6000004);
1172path.close();
1173</div>
1174
1175<div id="testQuadratic12">
1176 path.moveTo(0, 0);
1177 path.quadTo(0, 0, 0, 0);
1178 path.lineTo(1, 3);
1179 path.close();
1180 path.moveTo(1, 0);
1181 path.lineTo(0, 1);
1182 path.quadTo(1, 1, 0, 3);
1183 path.close();
1184</div>
1185
1186<div id="testQuadratic13a">
1187path.moveTo(0, 0);
1188path.quadTo(0, 0, 15.5, 0);
1189path.lineTo(15.5, 31);
1190path.lineTo(0, 0);
1191path.close();
1192path.moveTo(0, 0);
1193path.quadTo(15.5, 46.5, 46.5, 46.5);
1194path.lineTo(0, 0);
1195path.close();
1196</div>
1197
1198<div id="testQuadratic13b">
1199path.moveTo(14.8800001, 29.7600002);
1200path.quadTo(6.20000029, 18.6000004, 0, 0);
1201path.lineTo(14.8800001, 29.7600002);
1202path.close();
1203path.moveTo(15.5, 30.5437222);
1204path.lineTo(15.5, 31);
1205path.lineTo(14.8800001, 29.7600002);
1206path.quadTo(15.1884346, 30.156559, 15.5, 30.5437222);
1207path.close();
1208path.moveTo(15.5, 15.5);
1209path.lineTo(0, 0);
1210path.lineTo(15.5, 0);
1211path.lineTo(15.5, 15.5);
1212path.close();
1213path.moveTo(15.5, 30.5437222);
1214path.lineTo(15.5, 15.5);
1215path.lineTo(46.5, 46.5);
1216path.quadTo(28.34062, 46.5, 15.5, 30.5437222);
1217path.close();
1218</div>
1219
1220<div id="testQuadratic14">
1221 path.moveTo(0, 0);
1222 path.quadTo(0, 0, 1, 0);
1223 path.lineTo(3, 2);
1224 path.close();
1225 path.moveTo(0, 0);
1226 path.lineTo(1, 0);
1227 path.quadTo(3, 2, 3, 3);
1228 path.close();
1229</div>
1230
caryclark@google.com3350c3c2012-08-24 15:24:36 +00001231<div id="testQuadratic15">
1232 path.moveTo(0, 0);
1233 path.quadTo(0, 0, 1, 0);
1234 path.lineTo(1, 3);
1235 path.close();
1236 path.moveTo(1, 0);
1237 path.lineTo(0, 1);
1238 path.quadTo(1, 1, 0, 3);
1239 path.close();
1240</div>
1241
1242<div id="testQuadratic16a">
1243path.moveTo(0, 0);
1244path.quadTo(0, 0, 31, 0);
1245path.lineTo(46.5, 31);
1246path.lineTo(0, 0);
1247path.close();
1248path.moveTo(46.5, 15.5);
1249path.lineTo(0, 31);
1250path.quadTo(0, 31, 15.5, 31);
1251path.lineTo(46.5, 15.5);
1252path.close();
1253</div>
1254
1255<div id="testQuadratic16b">
1256path.moveTo(31, 20.6666679);
1257path.lineTo(0, 0);
1258path.lineTo(31, 0);
1259path.lineTo(39.8571434, 17.7142868);
1260path.lineTo(31, 20.6666679);
1261path.close();
1262path.moveTo(33.214283, 22.1428585);
1263path.lineTo(15.5, 31);
1264path.lineTo(0, 31);
1265path.lineTo(31, 20.6666679);
1266path.lineTo(33.214283, 22.1428585);
1267path.close();
1268path.moveTo(40.2999992, 18.6000004);
1269path.lineTo(46.5, 31);
1270path.lineTo(33.214283, 22.1428585);
1271path.lineTo(40.2999992, 18.6000004);
1272path.close();
1273path.moveTo(39.8571434, 17.7142868);
1274path.lineTo(46.5, 15.5);
1275path.lineTo(40.2999992, 18.6000004);
1276path.lineTo(39.8571434, 17.7142868);
1277path.close();
1278</div>
1279
1280<div id="testQuadratic17x">
1281 path.setFillType(SkPath::kEvenOdd_FillType);
1282 path.moveTo(0, 0);
1283 path.quadTo(0, 0, 3, 1);
1284 path.lineTo(0, 2);
1285 path.close();
1286 path.moveTo(0, 0);
1287 path.lineTo(1, 0);
1288 path.quadTo(3, 1, 0, 2);
1289 path.close();
1290</div>
1291
1292<div id="testQuadratic18">
1293 path.moveTo(0, 0);
1294 path.quadTo(1, 0, 0, 1);
1295 path.lineTo(0, 1);
1296 path.close();
1297 path.moveTo(0, 0);
1298 path.lineTo(0, 0);
1299 path.quadTo(1, 0, 1, 1);
1300 path.close();
1301</div>
1302
caryclark@google.coma7e483d2012-08-28 20:44:43 +00001303<div id="testQuadratic19">
1304 path.moveTo(0, 0);
1305 path.quadTo(1, 0, 0, 1);
1306 path.lineTo(0, 1);
1307 path.close();
1308 path.moveTo(0, 0);
1309 path.lineTo(0, 0);
1310 path.quadTo(2, 0, 0, 1);
1311 path.close();
1312</div>
1313
caryclark@google.com32546db2012-08-31 20:55:07 +00001314<div id="testQuadratic20">
1315 path.moveTo(0, 0);
1316 path.quadTo(1, 0, 0, 1);
1317 path.lineTo(0, 1);
1318 path.close();
1319 path.moveTo(0, 0);
1320 path.lineTo(0, 0);
1321 path.quadTo(1, 0, 0, 1);
1322 path.close();
1323</div>
1324
caryclark@google.com235f56a2012-09-14 14:19:30 +00001325<div id="testQuadratic21">
1326 path.moveTo(0, 0);
1327 path.quadTo(1, 0, 0, 1);
1328 path.lineTo(0, 1);
1329 path.close();
1330 path.moveTo(0, 0);
1331 path.lineTo(0, 0);
1332 path.quadTo(1, 0, 0, 2);
1333 path.close();
1334</div>
1335
1336<div id="testQuadratic22">
1337 path.moveTo(0, 0);
1338 path.quadTo(1, 0, 0, 1);
1339 path.lineTo(0, 1);
1340 path.close();
1341 path.moveTo(0, 0);
1342 path.lineTo(0, 0);
1343 path.quadTo(0, 1, 2, 1);
1344 path.close();
1345</div>
1346
1347<div id="testQuadratic23">
1348 path.moveTo(0, 0);
1349 path.quadTo(1, 0, 0, 1);
1350 path.lineTo(0, 1);
1351 path.close();
1352 path.moveTo(0, 0);
1353 path.lineTo(0, 0);
1354 path.quadTo(0, 2, 1, 2);
1355 path.close();
1356</div>
1357
1358<div id="testQuadratic24">
1359 path.moveTo(0, 0);
1360 path.quadTo(1, 0, 0, 1);
1361 path.lineTo(0, 1);
1362 path.close();
1363 path.moveTo(0, 0);
1364 path.lineTo(1, 0);
1365 path.quadTo(2, 0, 0, 1);
1366 path.close();
1367</div>
1368
1369<div id="testQuadratic25">
1370 path.moveTo(0, 0);
1371 path.quadTo(1, 0, 1, 1);
1372 path.lineTo(1, 1);
1373 path.close();
1374 path.moveTo(0, 0);
1375 path.lineTo(0, 0);
1376 path.quadTo(2, 1, 0, 2);
1377 path.close();
1378</div>
1379
1380<div id="testQuadratic26">
1381 path.moveTo(0, 0);
1382 path.quadTo(1, 0, 1, 1);
1383 path.lineTo(0, 2);
1384 path.close();
1385 path.moveTo(0, 0);
1386 path.lineTo(0, 0);
1387 path.quadTo(1, 0, 0, 1);
1388 path.close();
1389</div>
1390
1391<div id="testQuadratic27">
1392 path.moveTo(0, 0);
1393 path.quadTo(1, 0, 1, 1);
1394 path.lineTo(2, 1);
1395 path.close();
1396 path.moveTo(0, 0);
1397 path.lineTo(0, 0);
1398 path.quadTo(2, 1, 0, 2);
1399 path.close();
1400</div>
1401
1402<div id="testQuadratic28">
1403 path.moveTo(0, 0);
1404 path.quadTo(1, 0, 0, 1);
1405 path.lineTo(0, 1);
1406 path.close();
1407 path.moveTo(0, 0);
1408 path.lineTo(0, 2);
1409 path.quadTo(1, 2, 0, 3);
1410 path.close();
1411</div>
1412
caryclark@google.comd1688742012-09-18 20:08:37 +00001413<div id="testQuadratic29">
1414 path.moveTo(0, 0);
1415 path.quadTo(1, 0, 2, 1);
1416 path.lineTo(0, 2);
1417 path.close();
1418 path.moveTo(0, 0);
1419 path.lineTo(0, 0);
1420 path.quadTo(1, 0, 0, 1);
1421 path.close();
1422</div>
1423
1424<div id="testQuadratic30">
1425 path.moveTo(0, 0);
1426 path.quadTo(1, 0, 1, 2);
1427 path.lineTo(1, 2);
1428 path.close();
1429 path.moveTo(0, 0);
1430 path.lineTo(1, 0);
1431 path.quadTo(0, 1, 1, 2);
1432 path.close();
1433</div>
1434
1435<div id="testQuadratic31">
1436 path.moveTo(0, 0);
1437 path.quadTo(1, 0, 1, 2);
1438 path.lineTo(1, 2);
1439 path.close();
1440 path.moveTo(0, 0);
1441 path.lineTo(1, 0);
1442 path.quadTo(0, 1, 1, 3);
1443 path.close();
1444</div>
1445
1446<div id="testQuadratic32">
1447 path.moveTo(0, 0);
1448 path.quadTo(1, 0, 2, 3);
1449 path.lineTo(2, 3);
1450 path.close();
1451 path.moveTo(0, 0);
1452 path.lineTo(0, 0);
1453 path.quadTo(3, 1, 0, 2);
1454 path.close();
1455</div>
1456
1457<div id="testQuadratic33">
1458 path.moveTo(0, 0);
1459 path.quadTo(2, 0, 0, 1);
1460 path.lineTo(0, 1);
1461 path.close();
1462 path.moveTo(0, 0);
1463 path.lineTo(1, 1);
1464 path.quadTo(2, 1, 2, 2);
1465 path.close();
1466</div>
1467
1468<div id="testQuadratic34">
1469 path.moveTo(0, 0);
1470 path.quadTo(2, 0, 0, 1);
1471 path.lineTo(0, 1);
1472 path.close();
1473 path.moveTo(1, 0);
1474 path.lineTo(1, 1);
1475 path.quadTo(2, 1, 1, 2);
1476 path.close();
1477</div>
1478
1479<div id="testQuadratic35">
1480 path.moveTo(0, 0);
1481 path.quadTo(0, 1, 1, 1);
1482 path.lineTo(1, 3);
1483 path.close();
1484 path.moveTo(2, 0);
1485 path.lineTo(3, 0);
1486 path.quadTo(0, 1, 1, 1);
1487 path.close();
1488</div>
1489
1490<div id="testQuadratic36">
1491 path.moveTo(0, 0);
1492 path.quadTo(2, 1, 2, 3);
1493 path.lineTo(2, 3);
1494 path.close();
1495 path.moveTo(3, 1);
1496 path.lineTo(1, 2);
1497 path.quadTo(3, 2, 1, 3);
1498 path.close();
1499</div>
1500
1501<div id="testQuadratic37">
1502 path.moveTo(0, 0);
1503 path.quadTo(0, 2, 1, 2);
1504 path.lineTo(1, 2);
1505 path.close();
1506 path.moveTo(0, 0);
1507 path.lineTo(3, 1);
1508 path.quadTo(0, 2, 1, 2);
1509 path.close();
1510</div>
1511
1512<div id="testQuadratic38">
1513 path.moveTo(1, 0);
1514 path.quadTo(0, 1, 1, 1);
1515 path.lineTo(1, 1);
1516 path.close();
1517 path.moveTo(1, 0);
1518 path.lineTo(1, 2);
1519 path.quadTo(2, 2, 1, 3);
1520 path.close();
1521</div>
1522
1523<div id="testQuadratic39">
1524path.moveTo(15.5, 0);
1525path.quadTo(46.5, 15.5, 46.5, 31);
1526path.lineTo(15.5, 0);
1527path.close();
1528path.moveTo(46.5, 15.5);
1529path.lineTo(0, 31);
1530path.quadTo(0, 31, 15.5, 31);
1531path.lineTo(46.5, 15.5);
1532 path.close();
1533</div>
1534
1535<div id="testQuadratic39a">
1536path.moveTo(34.875, 19.375);
1537path.lineTo(15.5, 0);
1538path.quadTo(32.9687576, 8.73437881, 40.5937271, 17.4687576);
1539path.lineTo(34.875, 19.375);
1540path.close();
1541path.moveTo(36.1666641, 20.6666679);
1542path.lineTo(15.5, 31);
1543path.lineTo(0, 31);
1544path.lineTo(34.875, 19.375);
1545path.lineTo(36.1666641, 20.6666679);
1546path.close();
1547path.moveTo(41.1812401, 18.15938);
1548path.quadTo(46.5, 24.5796909, 46.5, 31);
1549path.lineTo(36.1666641, 20.6666679);
1550path.lineTo(41.1812401, 18.15938);
1551path.close();
1552path.moveTo(40.5937271, 17.4687576);
1553path.lineTo(46.5, 15.5);
1554path.lineTo(41.1812401, 18.15938);
1555path.quadTo(40.8951759, 17.8140678, 40.5937271, 17.4687576);
1556 path.close();
1557</div>
1558
caryclark@google.com6aea33f2012-10-09 14:11:58 +00001559<div id="testQuadratic40x">
1560 path.setFillType(SkPath::kEvenOdd_FillType);
1561 path.moveTo(2, 0);
1562 path.quadTo(3, 0, 2, 2);
1563 path.lineTo(3, 2);
1564 path.close();
1565 path.moveTo(3, 1);
1566 path.lineTo(0, 2);
1567 path.quadTo(0, 2, 1, 2);
1568 path.close();
1569</div>
1570
1571<div id="testQuadratic40xa">
1572path.moveTo(31, 0);
1573path.quadTo(41.3333359, 0, 37.8888893, 13.7777777);
1574path.lineTo(31, 0);
1575path.close();
1576path.moveTo(37.8888893, 13.7777777);
1577path.quadTo(37.2993202, 16.1360455, 36.3061028, 18.8979664);
1578path.lineTo(0, 31);
1579path.lineTo(15.5, 31);
1580path.lineTo(35.5182915, 20.9908543);
1581path.quadTo(33.7454262, 25.5091457, 31, 31);
1582path.lineTo(46.5, 31);
1583path.lineTo(40.2999992, 18.6000004);
1584path.lineTo(46.5, 15.5);
1585path.lineTo(39.8571434, 17.7142868);
1586path.lineTo(37.8888893, 13.7777777);
1587path.close();
1588path.moveTo(36.3061028, 18.8979664);
1589path.quadTo(35.9396667, 19.9169388, 35.5182915, 20.9908543);
1590path.lineTo(40.2999992, 18.6000004);
1591path.lineTo(39.8571434, 17.7142868);
1592path.lineTo(36.3061028, 18.8979664);
1593</div>
1594
1595<div id="testQuadratic40xb">
1596path.moveTo(31, 0);
1597path.quadTo(46.5, 0, 31, 31);
1598path.lineTo(46.5, 31);
1599path.lineTo(31, 0);
1600path.close();
1601path.moveTo(46.5, 15.5);
1602path.lineTo(0, 31);
1603path.quadTo(0, 31, 15.5, 31);
1604path.lineTo(46.5, 15.5);
1605path.close();
1606</div>
1607
1608<div id="testQuadratic41o">
1609path.moveTo(419.33905, 236.377808);
1610path.quadTo(398.847778, 242.58728, 384.255524, 242.58728);
1611path.quadTo(359.417633, 242.58728, 343.738708, 226.080429);
1612path.quadTo(328.059784, 209.573578, 328.059784, 183.286819);
1613path.quadTo(328.059784, 157.724487, 341.875854, 141.372879);
1614path.quadTo(355.691956, 125.021263, 377.218109, 125.021263);
1615path.quadTo(397.605896, 125.021263, 408.731201, 139.51004);
1616path.quadTo(419.856506, 153.99881, 419.856506, 180.699539);
1617path.lineTo(419.752991, 187.012497);
1618path.lineTo(348.861511, 187.012497);
1619path.quadTo(353.311646, 227.063599, 388.084686, 227.063599);
1620path.quadTo(400.814117, 227.063599, 419.33905, 220.233185);
1621path.lineTo(419.33905, 236.377808);
1622path.close();
1623path.moveTo(349.792938, 171.695801);
1624path.lineTo(399.365234, 171.695801);
1625path.quadTo(399.365234, 140.337967, 375.976227, 140.337967);
1626path.quadTo(352.483704, 140.337967, 349.792938, 171.695801);
1627path.close();
1628path.moveTo(378.682587, 277.360321);
1629path.lineTo(381.062897, 259.66333);
1630path.quadTo(398.759888, 268.046112, 415.939423, 268.046112);
1631path.quadTo(450.402008, 268.046112, 450.402008, 231.513718);
1632path.lineTo(450.402008, 213.816727);
1633path.quadTo(439.12146, 237.41272, 413.352142, 237.41272);
1634path.quadTo(393.171356, 237.41272, 381.269867, 222.716965);
1635path.quadTo(369.368378, 208.02121, 369.368378, 183.079834);
1636path.quadTo(369.368378, 157.414017, 382.92572, 141.269379);
1637path.quadTo(396.483093, 125.124756, 418.009247, 125.124756);
1638path.quadTo(436.844666, 125.124756, 450.402008, 140.441467);
1639path.lineTo(450.402008, 127.608543);
1640path.lineTo(470.89325, 127.608543);
1641path.lineTo(470.89325, 209.366608);
1642path.quadTo(470.89325, 235.756866, 468.150757, 248.43454);
1643path.quadTo(465.408234, 261.112213, 457.853363, 269.184509);
1644path.quadTo(444.502991, 283.362823, 416.353394, 283.362823);
1645path.quadTo(396.690063, 283.362823, 378.682587, 277.360321);
1646path.close();
1647path.moveTo(450.402008, 201.087311);
1648path.lineTo(450.402008, 154.412781);
1649path.quadTo(436.948151, 140.441467, 421.113983, 140.441467);
1650path.quadTo(407.039185, 140.441467, 399.070374, 151.722);
1651path.quadTo(391.101532, 163.002533, 391.101532, 182.665863);
1652path.quadTo(391.101532, 219.612228, 417.07782, 219.612228);
1653path.quadTo(434.774841, 219.612228, 450.402008, 201.087311);
1654path.close();
1655path.moveTo(482.9328, 236.377808);
1656path.quadTo(462.441528, 242.58728, 447.849274, 242.58728);
1657path.quadTo(423.011383, 242.58728, 407.332458, 226.080429);
1658path.quadTo(391.653534, 209.573578, 391.653534, 183.286819);
1659path.quadTo(391.653534, 157.724487, 405.469604, 141.372879);
1660path.quadTo(419.285706, 125.021263, 440.811859, 125.021263);
1661path.quadTo(461.199646, 125.021263, 472.324951, 139.51004);
1662path.quadTo(483.450256, 153.99881, 483.450256, 180.699539);
1663path.lineTo(483.346741, 187.012497);
1664path.lineTo(412.455261, 187.012497);
1665path.quadTo(416.905396, 227.063599, 451.678436, 227.063599);
1666path.quadTo(464.407867, 227.063599, 482.9328, 220.233185);
1667path.lineTo(482.9328, 236.377808);
1668path.close();
1669path.moveTo(413.386688, 171.695801);
1670path.lineTo(462.958984, 171.695801);
1671path.quadTo(462.958984, 140.337967, 439.569977, 140.337967);
1672path.quadTo(416.077454, 140.337967, 413.386688, 171.695801);
1673path.close();
1674</div>
1675
1676<div id="testQuadratic41s">
1677path.moveTo(341.875854, 141.372879);
1678path.quadTo(355.691956,125.021263, 377.218109,125.021263);
1679path.quadTo(388.787811,125.021263, 397.374664,129.687164);
1680path.quadTo(406.565979,125.124756, 418.009247,125.124756);
1681path.quadTo(423.583374,125.124756, 428.695251,126.466187);
1682path.quadTo(434.412903,125.021263, 440.811859,125.021263);
1683path.quadTo(449.427277,125.021263, 456.388672,127.608543);
1684path.lineTo(470.89325,127.608543);
1685path.lineTo(470.89325,137.749908);
1686path.quadTo(471.627319,138.601486, 472.324951,139.51004);
1687path.quadTo(483.450256,153.99881, 483.450256,180.699539);
1688path.lineTo(483.346741,187.012497);
1689path.lineTo(470.89325,187.012497);
1690path.lineTo(470.89325,209.366608);
1691path.quadTo(470.89325,217.414856, 470.638184,224.187729);
1692path.quadTo(476.428223,222.631516, 482.9328,220.233185);
1693path.lineTo(482.9328,236.377808);
1694path.quadTo(475.87207,238.517426, 469.511749,239.919785);
1695path.quadTo(468.946777,244.754791, 468.150757,248.43454);
1696path.quadTo(465.408234,261.112213, 457.853363,269.184509);
1697path.quadTo(444.502991,283.362823, 416.353394,283.362823);
1698path.quadTo(396.690063,283.362823, 378.682587,277.360321);
1699path.lineTo(381.062897,259.66333);
1700path.quadTo(398.759888,268.046112, 415.939423,268.046112);
1701path.quadTo(444.719147,268.046112, 449.464905,242.568665);
1702path.quadTo(448.648254,242.58728, 447.849274,242.58728);
1703path.quadTo(433.084625,242.58728, 421.556366,236.754425);
1704path.quadTo(418.89566,237.203537, 416.046783,237.346252);
1705path.quadTo(397.661652,242.58728, 384.255524,242.58728);
1706path.quadTo(359.417633,242.58728, 343.738708,226.080429);
1707path.quadTo(328.059784,209.573578, 328.059784,183.286819);
1708path.quadTo(328.059784,157.724487, 341.875854,141.372879);
1709path.close();
1710path.moveTo(442.014923, 226.179474);
1711path.quadTo(445.951935,226.953491, 450.402008,227.049881);
1712path.lineTo(450.402008,213.816727);
1713path.quadTo(446.904755,221.132065, 442.014923,226.179474);
1714path.close();
1715path.moveTo(395.347717, 206.501785);
1716path.quadTo(392.200165,197.593536, 391.734406,187.012497);
1717path.lineTo(391.197113,187.012497);
1718path.quadTo(391.738647,198.938644, 395.347717,206.501785);
1719path.close();
1720path.moveTo(391.808533, 171.695801);
1721path.lineTo(392.428436,171.695801);
1722path.quadTo(393.693451,162.656265, 397.02359,154.9935);
1723path.quadTo(397.023804,154.992996, 397.024048,154.992493);
1724path.quadTo(393.175995,143.845093, 383.003235,141.177292);
1725path.quadTo(382.964447,141.223267, 382.92572,141.269379);
1726</div>
1727
1728<div id="testQuadratic42o">
1729path.moveTo(421.962158, 236.285355);
1730path.quadTo(400.947845, 242.65332, 385.983124, 242.65332);
1731path.quadTo(360.511261, 242.65332, 344.432129, 225.725143);
1732path.quadTo(328.352997, 208.796951, 328.352997, 181.839218);
1733path.quadTo(328.352997, 155.62442, 342.521729, 138.855438);
1734path.quadTo(356.69046, 122.086449, 378.766083, 122.086449);
1735path.quadTo(399.674255, 122.086449, 411.083527, 136.945038);
1736path.quadTo(422.492798, 151.803635, 422.492798, 179.185898);
1737path.lineTo(422.386688, 185.660004);
1738path.lineTo(349.685699, 185.660004);
1739path.quadTo(354.24942, 226.733398, 389.910034, 226.733398);
1740path.quadTo(402.964386, 226.733398, 421.962158, 219.728638);
1741path.lineTo(421.962158, 236.285355);
1742path.close();
1743path.moveTo(350.6409, 169.952347);
1744path.lineTo(401.478516, 169.952347);
1745path.quadTo(401.478516, 137.794098, 377.492493, 137.794098);
1746path.quadTo(353.40036, 137.794098, 350.6409, 169.952347);
1747path.close();
1748path.moveTo(379.213562, 278.313934);
1749path.lineTo(381.654602, 260.165222);
1750path.quadTo(399.803314, 268.761993, 417.421356, 268.761993);
1751path.quadTo(452.763611, 268.761993, 452.763611, 231.297104);
1752path.lineTo(452.763611, 213.148392);
1753path.quadTo(441.195129, 237.34668, 414.768036, 237.34668);
1754path.quadTo(394.072144, 237.34668, 381.866882, 222.275818);
1755path.quadTo(369.661591, 207.204956, 369.661591, 181.626953);
1756path.quadTo(369.661591, 155.306015, 383.565002, 138.749298);
1757path.quadTo(397.468384, 122.192581, 419.544037, 122.192581);
1758path.quadTo(438.860199, 122.192581, 452.763611, 137.900238);
1759path.lineTo(452.763611, 124.739769);
1760path.lineTo(473.777893, 124.739769);
1761path.lineTo(473.777893, 208.584686);
1762path.quadTo(473.777893, 235.64856, 470.965363, 248.649826);
1763path.quadTo(468.152863, 261.651093, 460.405151, 269.929443);
1764path.quadTo(446.71402, 284.469666, 417.845886, 284.469666);
1765path.quadTo(397.680664, 284.469666, 379.213562, 278.313934);
1766path.close();
1767path.moveTo(452.763611, 200.094055);
1768path.lineTo(452.763611, 152.228165);
1769path.quadTo(438.966339, 137.900238, 422.727997, 137.900238);
1770path.quadTo(408.293945, 137.900238, 400.121704, 149.468719);
1771path.quadTo(391.949493, 161.037186, 391.949493, 181.202423);
1772path.quadTo(391.949493, 219.091827, 418.588837, 219.091827);
1773path.quadTo(436.737549, 219.091827, 452.763611, 200.094055);
1774path.close();
1775path.moveTo(485.555908, 236.285355);
1776path.quadTo(464.541595, 242.65332, 449.576874, 242.65332);
1777path.quadTo(424.105011, 242.65332, 408.025879, 225.725143);
1778path.quadTo(391.946747, 208.796951, 391.946747, 181.839218);
1779path.quadTo(391.946747, 155.62442, 406.115479, 138.855438);
1780path.quadTo(420.28421, 122.086449, 442.359833, 122.086449);
1781path.quadTo(463.268005, 122.086449, 474.677277, 136.945038);
1782path.quadTo(486.086548, 151.803635, 486.086548, 179.185898);
1783path.lineTo(485.980438, 185.660004);
1784path.lineTo(413.279449, 185.660004);
1785path.quadTo(417.84317, 226.733398, 453.503784, 226.733398);
1786path.quadTo(466.558136, 226.733398, 485.555908, 219.728638);
1787path.lineTo(485.555908, 236.285355);
1788path.close();
1789path.moveTo(414.23465, 169.952347);
1790path.lineTo(465.072266, 169.952347);
1791path.quadTo(465.072266, 137.794098, 441.086243, 137.794098);
1792path.quadTo(416.99411, 137.794098, 414.23465, 169.952347);
1793path.close();
1794</div>
1795
1796<div id="testQuadratic42s">
1797path.moveTo(342.521729, 138.855438);
1798path.quadTo(356.69046,122.086449, 378.766083,122.086449);
1799path.quadTo(390.293488,122.086449, 398.933502,126.603004);
1800path.quadTo(408.150299,122.192581, 419.544037,122.192581);
1801path.quadTo(425.108429,122.192581, 430.223633,123.496056);
1802path.quadTo(435.959412,122.086449, 442.359833,122.086449);
1803path.quadTo(451.19516,122.086449, 458.334229,124.739769);
1804path.lineTo(473.777893,124.739769);
1805path.lineTo(473.777893,135.814713);
1806path.quadTo(474.234741,136.368698, 474.677277,136.945038);
1807path.quadTo(486.086548,151.803635, 486.086548,179.185898);
1808path.lineTo(485.980438,185.660004);
1809path.lineTo(473.777893,185.660004);
1810path.lineTo(473.777893,208.584686);
1811path.quadTo(473.777893,216.745773, 473.522156,223.628113);
1812path.quadTo(479.207153,222.069519, 485.555908,219.728638);
1813path.lineTo(485.555908,236.285355);
1814path.quadTo(478.638306,238.381592, 472.376221,239.787796);
1815path.quadTo(471.792389,244.826782, 470.965363,248.649826);
1816path.quadTo(468.152863,261.651093, 460.405151,269.929443);
1817path.quadTo(446.71402,284.469666, 417.845886,284.469666);
1818path.quadTo(397.680664,284.469666, 379.213562,278.313934);
1819path.lineTo(381.654602,260.165222);
1820path.quadTo(399.803314,268.761993, 417.421356,268.761993);
1821path.quadTo(446.944275,268.761993, 451.80542,242.619034);
1822path.quadTo(450.674866,242.65332, 449.576874,242.65332);
1823path.quadTo(434.524628,242.65332, 422.75238,236.741913);
1824path.quadTo(420.864227,237.041901, 418.884674,237.193085);
1825path.quadTo(399.840271,242.65332, 385.983124,242.65332);
1826path.quadTo(360.511261,242.65332, 344.432129,225.725143);
1827path.quadTo(328.352997,208.796951, 328.352997,181.839218);
1828path.quadTo(328.352997,155.62442, 342.521729,138.855438);
1829path.close();
1830path.moveTo(383.823944, 138.443222);
1831path.quadTo(380.900299,137.794098, 377.492493,137.794098);
1832path.quadTo(353.40036,137.794098, 350.6409,169.952347);
1833path.lineTo(370.408203,169.952347);
1834path.quadTo(372.883484,151.469254, 383.565002,138.749298);
1835path.quadTo(383.694122,138.595551, 383.823944,138.443222);
1836path.close();
1837path.moveTo(369.740021, 185.660004);
1838path.lineTo(349.685699,185.660004);
1839path.quadTo(353.983734,224.342361, 385.863525,226.594208);
1840path.quadTo(383.762756,224.616837, 381.866882,222.275818);
1841path.quadTo(370.639954,208.41301, 369.740021,185.660004);
1842path.close();
1843path.moveTo(413.279449, 185.660004);
1844path.quadTo(415.737305,207.780716, 427.214905,217.987976);
1845path.quadTo(440.600586,214.512451, 452.763611,200.094055);
1846path.lineTo(452.763611,185.660004);
1847</div>
1848
1849<div id="testQuadratic43o">
1850path.moveTo(288.755981, 240);
1851path.lineTo(288.755981, 102.232819);
1852path.lineTo(315.843994, 102.232819);
1853path.lineTo(354.009216, 208.816208);
1854path.lineTo(393.291473, 102.232819);
1855path.lineTo(417.493835, 102.232819);
1856path.lineTo(417.493835, 240);
1857path.lineTo(399.248962, 240);
1858path.lineTo(399.248962, 127.92453);
1859path.lineTo(361.269928, 230.784485);
1860path.lineTo(342.373474, 230.784485);
1861path.lineTo(305.511444, 127.645271);
1862path.lineTo(305.511444, 240);
1863path.lineTo(288.755981, 240);
1864path.close();
1865path.moveTo(397.864014, 236.741989);
1866path.quadTo(379.433014, 242.327148, 366.307892, 242.327148);
1867path.quadTo(343.967255, 242.327148, 329.864746, 227.479935);
1868path.quadTo(315.762238, 212.632736, 315.762238, 188.988907);
1869path.quadTo(315.762238, 165.996674, 328.189209, 151.289093);
1870path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
1871path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
1872path.quadTo(398.329468, 162.645584, 398.329468, 186.661758);
1873path.lineTo(398.236359, 192.339996);
1874path.lineTo(334.472504, 192.339996);
1875path.quadTo(338.475189, 228.364258, 369.752075, 228.364258);
1876path.quadTo(381.20163, 228.364258, 397.864014, 222.220581);
1877path.lineTo(397.864014, 236.741989);
1878path.close();
1879path.moveTo(335.310272, 178.563278);
1880path.lineTo(379.898438, 178.563278);
1881path.quadTo(379.898438, 150.358246, 358.861023, 150.358246);
1882path.quadTo(337.730499, 150.358246, 335.310272, 178.563278);
1883path.close();
1884path.moveTo(346.052765, 240);
1885path.lineTo(346.052765, 138.908661);
1886path.lineTo(364.390686, 138.908661);
1887path.lineTo(364.390686, 157.898193);
1888path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
1889path.quadTo(398.832489, 136.674606, 401.904327, 137.140045);
1890path.lineTo(401.904327, 154.267853);
1891path.quadTo(397.156952, 152.685394, 393.526611, 152.685394);
1892path.quadTo(376.119537, 152.685394, 364.390686, 173.350464);
1893path.lineTo(364.390686, 240);
1894path.lineTo(346.052765, 240);
1895path.close();
1896path.moveTo(362.792297, 273.604034);
1897path.lineTo(364.933289, 257.68634);
1898path.quadTo(380.850983, 265.226288, 396.303253, 265.226288);
1899path.quadTo(427.300842, 265.226288, 427.300842, 232.366959);
1900path.lineTo(427.300842, 216.449265);
1901path.quadTo(417.15448, 237.672852, 393.976105, 237.672852);
1902path.quadTo(375.824341, 237.672852, 365.119446, 224.454651);
1903path.quadTo(354.414581, 211.23645, 354.414581, 188.802734);
1904path.quadTo(354.414581, 165.717422, 366.608826, 151.196014);
1905path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
1906path.quadTo(415.106598, 136.674606, 427.300842, 150.451324);
1907path.lineTo(427.300842, 138.908661);
1908path.lineTo(445.731873, 138.908661);
1909path.lineTo(445.731873, 212.446564);
1910path.quadTo(445.731873, 236.183472, 443.265106, 247.586502);
1911path.quadTo(440.798309, 258.989532, 434.003052, 266.250244);
1912path.quadTo(421.994965, 279.002991, 396.675598, 279.002991);
1913path.quadTo(378.989258, 279.002991, 362.792297, 273.604034);
1914path.close();
1915path.moveTo(427.300842, 204.999695);
1916path.lineTo(427.300842, 163.017929);
1917path.quadTo(415.199677, 150.451324, 400.95755, 150.451324);
1918path.quadTo(388.297852, 150.451324, 381.130249, 160.597687);
1919path.quadTo(373.962616, 170.744064, 373.962616, 188.430389);
1920path.quadTo(373.962616, 221.662079, 397.327179, 221.662079);
1921path.quadTo(413.244873, 221.662079, 427.300842, 204.999695);
1922path.close();
1923path.moveTo(461.457764, 236.741989);
1924path.quadTo(443.026764, 242.327148, 429.901642, 242.327148);
1925path.quadTo(407.561005, 242.327148, 393.458496, 227.479935);
1926path.quadTo(379.355988, 212.632736, 379.355988, 188.988907);
1927path.quadTo(379.355988, 165.996674, 391.782959, 151.289093);
1928path.quadTo(404.20993, 136.581512, 423.571808, 136.581512);
1929path.quadTo(441.909729, 136.581512, 451.916473, 149.613556);
1930path.quadTo(461.923218, 162.645584, 461.923218, 186.661758);
1931path.lineTo(461.830109, 192.339996);
1932path.lineTo(398.066254, 192.339996);
1933path.quadTo(402.068939, 228.364258, 433.345825, 228.364258);
1934path.quadTo(444.79538, 228.364258, 461.457764, 222.220581);
1935path.lineTo(461.457764, 236.741989);
1936path.close();
1937path.moveTo(398.904022, 178.563278);
1938path.lineTo(443.492188, 178.563278);
1939path.quadTo(443.492188, 150.358246, 422.454773, 150.358246);
1940path.quadTo(401.324249, 150.358246, 398.904022, 178.563278);
1941path.close();
1942</div>
1943
1944<div id="testQuadratic43s">
1945path.moveTo(288.755981, 240);
1946path.lineTo(288.755981,102.232819);
1947path.lineTo(315.843994,102.232819);
1948path.lineTo(331.979736,147.294876);
1949path.quadTo(343.453125,136.581512, 359.978058,136.581512);
1950path.quadTo(370.869446,136.581512, 378.822021,141.178574);
1951path.quadTo(378.893585,141.140915, 378.965302,141.103577);
1952path.lineTo(393.291473,102.232819);
1953path.lineTo(417.493835,102.232819);
1954path.lineTo(417.493835,136.965759);
1955path.quadTo(420.44223,136.581512, 423.571808,136.581512);
1956path.quadTo(431.320984,136.581512, 437.582458,138.908661);
1957path.lineTo(445.731873,138.908661);
1958path.lineTo(445.731873,143.392502);
1959path.quadTo(449.143951,146.002823, 451.916473,149.613556);
1960path.quadTo(461.923218,162.645584, 461.923218,186.661758);
1961path.lineTo(461.830109,192.339996);
1962path.lineTo(445.731873,192.339996);
1963path.lineTo(445.731873,212.446564);
1964path.quadTo(445.731873,220.39856, 445.455017,226.966339);
1965path.quadTo(452.7435,225.43367, 461.457764,222.220581);
1966path.lineTo(461.457764,236.741989);
1967path.quadTo(452.250824,239.531982, 444.367889,240.928268);
1968path.quadTo(443.897583,244.662796, 443.265106,247.586502);
1969path.quadTo(440.798309,258.989532, 434.003052,266.250244);
1970path.quadTo(421.994965,279.002991, 396.675598,279.002991);
1971path.quadTo(378.989258,279.002991, 362.792297,273.604034);
1972path.lineTo(364.933289,257.68634);
1973path.quadTo(380.850983,265.226288, 396.303253,265.226288);
1974path.quadTo(422.230743,265.226288, 426.471558,242.237076);
1975path.quadTo(419.570892,241.869324, 413.503387,240);
1976path.lineTo(399.248962,240);
1977path.lineTo(399.248962,237.37915);
1978path.quadTo(397.047638,237.633072, 394.711517,237.667465);
1979path.quadTo(378.296356,242.327148, 366.307892,242.327148);
1980path.quadTo(357.463165,242.327148, 349.909637,240);
1981path.lineTo(346.052765,240);
1982path.lineTo(346.052765,238.625916);
1983path.quadTo(336.926056,234.914124, 329.864746,227.479935);
1984path.quadTo(315.762238,212.632736, 315.762238,188.988907);
1985path.quadTo(315.762238,176.540054, 319.405273,166.519882);
1986path.lineTo(305.511444,127.645271);
1987path.lineTo(305.511444,240);
1988path.lineTo(288.755981,240);
1989path.close();
1990path.moveTo(375.464813, 192.339996);
1991path.lineTo(374.267029,195.583939);
1992path.quadTo(375.987579,214.575378, 387.432068,219.736267);
1993path.quadTo(380.122528,208.101486, 379.428741,192.339996);
1994path.lineTo(375.464813,192.339996);
1995path.close();
1996path.moveTo(427.300842, 178.563278);
1997path.lineTo(427.300842,163.017929);
1998path.quadTo(422.561523,158.096329, 417.493835,155.102234);
1999path.lineTo(417.493835,178.563278);
2000path.lineTo(427.300842,178.563278);
2001path.close();
2002path.moveTo(427.300842, 192.339996);
2003path.lineTo(417.493835,192.339996);
2004path.lineTo(417.493835,214.429169);
2005path.quadTo(422.505676,210.684036, 427.300842,204.999695);
2006path.lineTo(427.300842,192.339996);
2007path.close();
2008path.moveTo(420.700134, 226.556015);
2009path.quadTo(423.794342,227.54834, 427.300842,227.996094);
2010path.lineTo(427.300842,216.449265);
2011path.quadTo(424.497772,222.312531, 420.700134,226.556015);
2012path.close();
2013path.moveTo(368.744965, 228.354782);
2014path.quadTo(366.836426,226.574738, 365.119446,224.454651);
2015path.quadTo(364.748657,223.996796, 364.390686,223.527878);
2016path.lineTo(364.390686,228.077774);
2017path.quadTo(366.495239,228.312164, 368.744965,228.354782);
2018path.close();
2019path.moveTo(399.248962, 199.701065);
2020path.lineTo(399.248962,192.339996);
2021path.lineTo(398.236359,192.339996);
2022path.lineTo(398.066254,192.339996);
2023path.quadTo(398.498535,196.230621, 399.248962,199.701065);
2024path.close();
2025path.moveTo(399.248962, 178.563278);
2026path.lineTo(399.248962,175.376892);
2027path.quadTo(399.04483,176.922348, 398.904022,178.563278);
2028path.lineTo(399.248962,178.563278);
2029path.close();
2030path.moveTo(399.248962, 136.688828);
2031path.lineTo(399.248962,127.92453);
2032path.lineTo(396.018158,136.674606);
2033path.quadTo(396.029053,136.674606, 396.039917,136.674606);
2034path.quadTo(396.513672,136.674606, 396.995453,136.688004);
2035path.quadTo(397.576904,136.674606, 398.164948,136.674606);
2036path.quadTo(398.709412,136.674606, 399.248962,136.688828);
2037path.close();
2038path.moveTo(346.052765, 178.563278);
2039path.lineTo(346.052765,154.02713);
2040path.quadTo(340.97113,157.621338, 338.22525,164.736588);
2041path.lineTo(343.1763,178.563278);
2042path.lineTo(346.052765,178.563278);
2043path.close();
2044path.moveTo(364.390686, 150.922379);
2045path.lineTo(364.390686,154.048065);
2046path.quadTo(365.340851,152.726639, 366.38147,151.468765);
2047path.quadTo(365.420258,151.14975, 364.390686,150.922379);
2048path.close();
2049path.moveTo(367.863586, 152.032623);
2050path.quadTo(367.144043,151.721848, 366.38147,151.468765);
2051</div>
2052
2053<div id="testQuadratic44o">
2054path.moveTo(354.009216, 208.816208);
2055path.lineTo(393.291473, 102.232819);
2056path.lineTo(399.248962, 127.92453);
2057path.lineTo(361.269928, 230.784485);
2058path.lineTo(354.009216, 208.816208);
2059path.close();
2060path.moveTo(328.189209, 151.289093);
2061path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
2062path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2063path.lineTo(328.189209, 151.289093);
2064path.close();
2065path.moveTo(346.052765, 138.908661);
2066path.lineTo(364.390686, 138.908661);
2067path.lineTo(364.390686, 157.898193);
2068path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2069path.lineTo(346.052765, 138.908661);
2070path.close();
2071</div>
2072
2073<div id="testQuadratic44s">
2074path.moveTo(380.33902, 137.376312);
2075path.lineTo(393.291473,102.232819);
2076path.lineTo(399.248962,127.92453);
2077path.lineTo(396.018158,136.674606);
2078path.quadTo(396.029053,136.674606, 396.039917,136.674606);
2079path.lineTo(396.017792,136.675598);
2080path.lineTo(361.269928,230.784485);
2081path.lineTo(354.009216,208.816208);
2082path.lineTo(375.699249,149.965286);
2083path.lineTo(369.22699,150.14563);
2084path.quadTo(373.524384,144.511566, 378.917297,141.233871);
2085path.lineTo(380.33902,137.376312);
2086path.close();
caryclark@google.coma461ff02012-10-11 12:54:23 +00002087path.moveTo(380.33902, 137.376312);
2088path.lineTo(378.917297,141.233856);
2089path.quadTo(375.048248,138.978912, 370.480499,137.816925);
2090path.lineTo(380.33902,137.376312);
2091path.close();
caryclark@google.com6aea33f2012-10-09 14:11:58 +00002092path.moveTo(392.55661, 136.830276);
caryclark@google.coma461ff02012-10-11 12:54:23 +00002093path.lineTo(380.33902,137.376312);
2094</div>
2095
2096<div id="testQuadratic45o">
2097path.moveTo(315.843994, 102.232819);
2098path.lineTo(354.009216, 208.816208);
2099path.lineTo(393.291473, 102.232819);
2100path.lineTo(399.248962, 127.92453);
2101path.lineTo(361.269928, 230.784485);
2102path.lineTo(342.373474, 230.784485);
2103path.lineTo(305.511444, 127.645271);
2104path.lineTo(315.843994, 102.232819);
2105path.close();
2106path.moveTo(366.307892, 242.327148);
2107path.quadTo(343.967255, 242.327148, 329.864746, 227.479935);
2108path.quadTo(315.762238, 212.632736, 315.762238, 188.988907);
2109path.quadTo(315.762238, 165.996674, 328.189209, 151.289093);
2110path.quadTo(340.61618, 136.581512, 359.978058, 136.581512);
2111path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2112path.quadTo(398.329468, 162.645584, 398.329468, 186.661758);
2113path.lineTo(398.236359, 192.339996);
2114path.lineTo(334.472504, 192.339996);
2115path.quadTo(338.475189, 228.364258, 369.752075, 228.364258);
2116path.quadTo(381.20163, 228.364258, 397.864014, 222.220581);
2117path.lineTo(366.307892, 242.327148);
2118path.close();
2119path.moveTo(335.310272, 178.563278);
2120path.lineTo(379.898438, 178.563278);
2121path.quadTo(379.898438, 150.358246, 358.861023, 150.358246);
2122path.quadTo(337.730499, 150.358246, 335.310272, 178.563278);
2123path.close();
2124path.moveTo(346.052765, 240);
2125path.lineTo(346.052765, 138.908661);
2126path.lineTo(364.390686, 138.908661);
2127path.lineTo(364.390686, 157.898193);
2128path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2129path.lineTo(401.904327, 154.267853);
2130path.quadTo(397.156952, 152.685394, 393.526611, 152.685394);
2131path.quadTo(376.119537, 152.685394, 364.390686, 173.350464);
2132path.lineTo(364.390686, 240);
2133path.lineTo(346.052765, 240);
2134path.close();
2135path.moveTo(396.303253, 265.226288);
2136path.quadTo(427.300842, 265.226288, 427.300842, 232.366959);
2137path.lineTo(427.300842, 216.449265);
2138path.quadTo(417.15448, 237.672852, 393.976105, 237.672852);
2139path.quadTo(375.824341, 237.672852, 365.119446, 224.454651);
2140path.quadTo(354.414581, 211.23645, 354.414581, 188.802734);
2141path.quadTo(354.414581, 165.717422, 366.608826, 151.196014);
2142path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
2143path.lineTo(396.303253, 265.226288);
2144path.close();
2145path.moveTo(400.95755, 150.451324);
2146path.quadTo(388.297852, 150.451324, 381.130249, 160.597687);
2147path.quadTo(373.962616, 170.744064, 373.962616, 188.430389);
2148path.quadTo(373.962616, 221.662079, 397.327179, 221.662079);
2149path.lineTo(400.95755, 150.451324);
2150path.close();
2151path.moveTo(429.901642, 242.327148);
2152path.quadTo(407.561005, 242.327148, 393.458496, 227.479935);
2153path.quadTo(379.355988, 212.632736, 379.355988, 188.988907);
2154path.quadTo(379.355988, 165.996674, 391.782959, 151.289093);
2155path.quadTo(404.20993, 136.581512, 423.571808, 136.581512);
2156path.lineTo(429.901642, 242.327148);
2157path.close();
2158</div>
2159
2160<div id="testQuadratic45s">
2161path.moveTo(305.511444, 127.645271);
2162path.lineTo(315.843994,102.232819);
2163path.lineTo(331.979736,147.294876);
2164path.quadTo(343.453125,136.581512, 359.978058,136.581512);
2165path.quadTo(370.869446,136.581512, 378.822021,141.178574);
2166path.quadTo(378.893585,141.140915, 378.965302,141.103577);
2167path.lineTo(393.291473,102.232819);
2168path.lineTo(399.248962,127.92453);
2169path.lineTo(396.018158,136.674606);
2170path.quadTo(396.029053,136.674606, 396.039917,136.674606);
2171path.lineTo(396.054596,136.718628);
2172path.quadTo(397.098907,136.674606, 398.164948,136.674606);
2173path.lineTo(398.076477,142.784256);
2174path.lineTo(398.697632,144.647751);
2175path.quadTo(409.233032,136.581512, 423.571808,136.581512);
2176path.lineTo(429.901642,242.327148);
2177path.quadTo(428.161621,242.327148, 426.471558,242.237076);
2178path.quadTo(427.300842,237.741562, 427.300842,232.366959);
2179path.lineTo(427.300842,216.449265);
2180path.quadTo(419.710114,232.327133, 404.8255,236.326401);
2181path.quadTo(400.557983,233.971252, 396.803375,230.691772);
2182path.lineTo(396.7034,237.596863);
2183path.quadTo(395.363068,237.672852, 393.976105,237.672852);
2184path.quadTo(385.309937,237.672852, 378.341187,234.659912);
2185path.lineTo(366.307892,242.327148);
2186path.quadTo(357.463165,242.327148, 349.909637,240);
2187path.lineTo(346.052765,240);
2188path.lineTo(346.052765,238.625916);
2189path.quadTo(336.926056,234.914124, 329.864746,227.479935);
2190path.quadTo(315.762238,212.632736, 315.762238,188.988907);
2191path.quadTo(315.762238,176.540054, 319.405273,166.519882);
2192path.lineTo(305.511444,127.645271);
2193path.close();
2194path.moveTo(375.464813, 192.339996);
2195path.lineTo(374.267029,195.583939);
2196path.quadTo(375.987579,214.575378, 387.432068,219.736267);
2197path.quadTo(380.122528,208.101486, 379.428741,192.339996);
2198path.lineTo(375.464813,192.339996);
2199path.close();
2200path.moveTo(397.925934, 153.178131);
2201path.lineTo(397.615479,174.615356);
2202path.quadTo(398.329468,180.246704, 398.329468,186.661758);
2203path.lineTo(398.236359,192.339996);
2204path.lineTo(397.358795,192.339996);
2205path.lineTo(396.934174,221.659714);
2206path.quadTo(397.129852,221.662079, 397.327179,221.662079);
2207path.lineTo(400.781189,153.910889);
2208path.quadTo(399.295654,153.462463, 397.925934,153.178131);
2209path.close();
2210path.moveTo(400.914398, 151.298019);
2211path.lineTo(400.632721,150.453003);
2212path.quadTo(400.794678,150.451324, 400.95755,150.451324);
2213path.lineTo(400.914398,151.298019);
2214path.close();
2215path.moveTo(368.744965, 228.354782);
2216path.quadTo(366.836426,226.574738, 365.119446,224.454651);
2217path.quadTo(364.748657,223.996796, 364.390686,223.527878);
2218path.lineTo(364.390686,228.077774);
2219path.quadTo(366.495239,228.312164, 368.744965,228.354782);
2220path.close();
2221path.moveTo(346.052765, 178.563278);
2222path.lineTo(346.052765,154.02713);
2223path.quadTo(340.97113,157.621338, 338.22525,164.736588);
2224path.lineTo(343.1763,178.563278);
2225path.lineTo(346.052765,178.563278);
2226path.close();
2227path.moveTo(364.390686, 150.922379);
2228path.lineTo(364.390686,154.048065);
2229path.quadTo(365.340851,152.726639, 366.38147,151.468765);
2230path.quadTo(365.420258,151.14975, 364.390686,150.922379);
2231path.close();
2232path.moveTo(367.863586, 152.032623);
2233path.quadTo(367.144043,151.721848, 366.38147,151.468765);
2234</div>
2235
2236<div id="testQuadratic46o">
2237path.moveTo(366.608826, 151.196014);
2238path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
2239path.lineTo(354.009216, 208.816208);
2240path.lineTo(393.291473, 102.232819);
2241path.lineTo(359.978058, 136.581512);
2242path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2243path.lineTo(364.390686, 157.898193);
2244path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2245path.lineTo(350, 120);
2246path.lineTo(366.608826, 151.196014);
2247path.close();
2248</div>
2249
2250<div id="testQuadratic46s">
2251path.moveTo(369.285553, 126.984779);
2252path.lineTo(393.291473,102.232819);
2253path.lineTo(382.416199,131.740402);
2254path.lineTo(396.039917,136.674606);
2255path.quadTo(387.290802,136.674606, 380.294495,140.44487);
2256path.quadTo(379.623352,140.760971, 378.965302,141.103577);
2257path.lineTo(378.917297,141.233856);
2258path.quadTo(378.86972,141.206131, 378.822021,141.178574);
2259path.quadTo(372.011871,144.761871, 366.608826,151.196014);
2260path.lineTo(350,120);
2261path.lineTo(369.285553,126.984779);
2262path.close();
2263path.moveTo(374.00174, 154.571106);
2264path.lineTo(378.917297,141.233871);
2265path.quadTo(378.917297,141.233871, 378.917297,141.233856);
2266path.quadTo(384.294891,144.368011, 388.322723,149.613556);
2267path.lineTo(374.00174,154.571106);
2268path.close();
2269path.moveTo(378.917297, 141.233871);
2270path.quadTo(370.233887,146.511475, 364.390686,157.898193);
2271path.lineTo(374.00174,154.571106);
2272path.lineTo(354.009216,208.816208);
2273path.lineTo(398.164948,136.674606);
2274path.quadTo(388.299255,136.674606, 380.294495,140.44487);
caryclark@google.com6aea33f2012-10-09 14:11:58 +00002275</div>
2276
caryclark@google.comc91dfe42012-10-16 12:06:27 +00002277<div id="testQuadratic47o">
2278path.moveTo(343.939362, 212.598053);
2279path.lineTo(378.457642, 118.940636);
2280path.lineTo(383.692657, 141.516571);
2281path.lineTo(350.319519, 231.902115);
2282path.lineTo(343.939362, 212.598053);
2283path.close();
2284path.moveTo(325.429016, 162.047577);
2285path.quadTo(336.348907, 149.123688, 353.36264, 149.123688);
2286path.quadTo(369.476624, 149.123688, 378.269806, 160.575241);
2287path.lineTo(325.429016, 162.047577);
2288path.close();
2289path.moveTo(370.867188, 186.014069);
2290path.quadTo(370.867188, 161.229614, 352.381104, 161.229614);
2291path.quadTo(333.813202, 161.229614, 331.686493, 186.014069);
2292path.lineTo(370.867188, 186.014069);
2293path.close();
2294path.moveTo(353.161499, 195.011719);
2295path.quadTo(353.161499, 174.726105, 363.876862, 161.96579);
2296path.lineTo(353.161499, 195.011719);
2297path.close();
2298</div>
2299
2300<div id="testQuadratic47s">
2301path.moveTo(366.466309, 151.476364);
2302path.lineTo(378.457642,118.940636);
2303path.lineTo(383.692657,141.516571);
2304path.lineTo(377.159943,159.209305);
2305path.quadTo(377.728729,159.87059, 378.269806,160.575241);
2306path.lineTo(376.638824,160.620682);
2307path.lineTo(370.26593,177.8806);
2308path.quadTo(368.708496,168.390671, 363.116943,164.309357);
2309path.lineTo(356.079041,186.014069);
2310path.lineTo(367.262817,186.014069);
2311path.lineTo(350.319519,231.902115);
2312path.lineTo(343.939362,212.598053);
2313path.lineTo(353.736816,186.014923);
2314path.lineTo(353.737122,186.014069);
2315path.lineTo(353.736938,186.014069);
2316path.quadTo(353.736877,186.014496, 353.736816,186.014923);
2317path.quadTo(353.161499,190.31131, 353.161499,195.011719);
2318</div>
2319
caryclark@google.comfb51afb2012-10-19 15:54:16 +00002320<div id="testQuadratic48o">
2321path.moveTo(366.608826, 151.196014);
2322path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
2323path.lineTo(354.009216, 208.816208);
2324path.lineTo(393.291473, 102.232819);
2325path.lineTo(359.978058, 136.581512);
2326path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2327path.lineTo(364.390686, 157.898193);
2328path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2329path.lineTo(350, 120);
2330path.lineTo(366.608826, 151.196014);
2331path.close();
2332</div>
2333
2334<div id="testQuadratic48s">
2335path.moveTo(369.285553, 126.984779);
2336path.lineTo(393.291473,102.232819);
2337path.lineTo(382.416199,131.740402);
2338path.lineTo(396.039917,136.674606);
2339path.quadTo(387.290802,136.674606, 380.294495,140.44487);
2340path.quadTo(379.623352,140.760971, 378.965302,141.103577);
2341path.lineTo(378.917297,141.233856);
2342path.quadTo(378.86972,141.206131, 378.822021,141.178574);
2343path.quadTo(372.011871,144.761871, 366.608826,151.196014);
2344path.lineTo(350,120);
2345path.lineTo(369.285553,126.984779);
2346path.close();
2347</div>
2348
2349<div id="testQuadratic49s">
2350path.moveTo(366.400513, 204.162521);
2351path.lineTo(411.545044, 81.6732483);
2352path.lineTo(366.400513, 204.162521);
2353path.close();
2354path.moveTo(331.585693, 138.050415);
2355path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
2356path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
2357path.lineTo(331.585693, 138.050415);
2358path.close();
2359path.moveTo(369.863983, 145.645813);
2360path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2361path.lineTo(369.863983, 145.645813);
2362path.close();
2363path.moveTo(369.970581, 137.94342);
2364path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2365path.lineTo(369.970581, 137.94342);
2366path.close();
2367</div>
2368
2369<div id="testQuadratic50o">
2370path.moveTo(366.400513, 204.162521);
2371path.lineTo(411.545044, 81.6732483);
2372path.lineTo(366.400513, 204.162521);
2373path.close();
2374path.moveTo(331.585693, 138.050415);
2375path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
2376path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
2377path.lineTo(331.585693, 138.050415);
2378path.close();
2379path.moveTo(369.863983, 145.645813);
2380path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2381path.lineTo(369.863983, 145.645813);
2382path.close();
2383path.moveTo(369.970581, 137.94342);
2384path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2385path.lineTo(369.970581, 137.94342);
2386path.close();
2387</div>
2388
2389<div id="testQuadratic50s">
2390path.moveTo(331.585693, 138.050415);
2391path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2392path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2393path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2394path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2395path.lineTo(395.061676,126.397095);
2396path.lineTo(391.979187,127.81559);
2397path.quadTo(393.010406,128.517273, 393.994415,129.292801);
2398path.quadTo(394.053131,129.339066, 394.111664,129.385605);
2399path.lineTo(393.910492,129.520508);
2400path.lineTo(383.340973,136.608322);
2401path.lineTo(375.350006,136.830978);
2402path.quadTo(376.20224,135.708145, 377.092102,134.66626);
2403path.lineTo(372.197113,136.918823);
2404</div>
2405
2406<div id="testQuadratic51">
2407path.moveTo(369.863983, 145.645813);
2408path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2409path.lineTo(369.863983, 145.645813);
2410path.close();
2411path.moveTo(369.970581, 137.94342);
2412path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2413path.lineTo(369.970581, 137.94342);
2414path.close();
2415</div>
2416
caryclark@google.com185c7c42012-10-19 18:26:24 +00002417<div id="testQuadratic52o">
2418path.moveTo(366.400513, 204.162521);
2419path.lineTo(411.545044, 81.6732483);
2420path.lineTo(366.400513, 204.162521);
2421path.close();
2422path.moveTo(331.585693, 138.050415);
2423path.quadTo(345.867188, 121.147957, 368.11853, 121.147957);
2424path.quadTo(389.193115, 121.147957, 400.693176, 136.124817);
2425path.lineTo(331.585693, 138.050415);
2426path.close();
2427path.moveTo(369.863983, 145.645813);
2428path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2429path.lineTo(369.863983, 145.645813);
2430path.close();
2431path.moveTo(369.970581, 137.94342);
2432path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2433path.lineTo(369.970581, 137.94342);
2434path.close();
2435</div>
2436
2437<div id="testQuadratic52s">
2438path.moveTo(331.585693, 138.050415);
2439path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2440path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2441path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2442path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2443path.close();
2444path.moveTo(383.340973, 136.608322);
2445path.lineTo(369.863983,145.645813);
2446path.quadTo(372.378204,140.746292, 375.350006,136.830978);
2447path.lineTo(372.197113,136.918823);
2448path.lineTo(369.970581,137.94342);
2449path.quadTo(370.390961,137.442825, 370.818756,136.95723);
2450path.lineTo(331.585693,138.050415);
2451path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2452path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2453path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2454path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2455path.close();
2456path.moveTo(383.340973, 136.608322);
2457path.lineTo(391.380798,136.384293);
2458path.lineTo(400.693176,136.124817);
2459path.quadTo(397.721985,132.255341, 394.111664,129.385605);
2460path.lineTo(406.236359,121.254936);
2461path.quadTo(406.236176,121.254936, 406.235992,121.254936);
2462path.lineTo(406.235992,121.254936);
2463path.quadTo(401.232697,121.254936, 396.645874,122.098694);
2464path.quadTo(391.577667,123.030998, 387.017914,124.993469);
2465path.quadTo(378.797424,121.147957, 368.11853,121.147957);
2466path.quadTo(345.867188,121.147957, 331.585693,138.050415);
2467path.lineTo(370.818756,136.95723);
2468path.quadTo(370.390961,137.442825, 369.970581,137.94342);
2469path.lineTo(372.197113,136.918823);
2470path.lineTo(375.350006,136.830978);
2471path.quadTo(372.378204,140.746292, 369.863983,145.645813);
2472path.lineTo(383.340973,136.608322);
2473path.close();
2474</div>
2475
caryclark@google.comf839c032012-10-26 21:03:50 +00002476<div id="testQuadratic52sa">
2477path.moveTo(331.585693, 138.050415);
2478path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2479path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2480path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2481path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2482path.close();
2483</div>
2484
2485<div id="testQuadratic52sb">
2486path.moveTo(383.340973, 136.608322);
2487path.lineTo(369.863983,145.645813);
2488path.quadTo(372.378204,140.746292, 375.350006,136.830978);
2489path.lineTo(372.197113,136.918823);
2490path.lineTo(369.970581,137.94342);
2491path.quadTo(370.390961,137.442825, 370.818756,136.95723);
2492path.lineTo(331.585693,138.050415);
2493path.quadTo(345.867188,121.147957, 368.11853,121.147957);
2494path.quadTo(378.797424,121.147957, 387.017914,124.993469);
2495path.quadTo(391.577667,123.030998, 396.645874,122.098694);
2496path.quadTo(401.232697,121.254936, 406.235992,121.254936);
2497path.close();
2498</div>
2499
2500<div id="testQuadratic52sc">
2501path.moveTo(383.340973, 136.608322);
2502path.lineTo(391.380798,136.384293);
2503path.lineTo(400.693176,136.124817);
2504path.quadTo(397.721985,132.255341, 394.111664,129.385605);
2505path.lineTo(406.236359,121.254936);
2506path.quadTo(406.236176,121.254936, 406.235992,121.254936);
2507path.lineTo(406.235992,121.254936);
2508path.quadTo(401.232697,121.254936, 396.645874,122.098694);
2509path.quadTo(391.577667,123.030998, 387.017914,124.993469);
2510path.quadTo(378.797424,121.147957, 368.11853,121.147957);
2511path.quadTo(345.867188,121.147957, 331.585693,138.050415);
2512path.lineTo(370.818756,136.95723);
2513path.quadTo(370.390961,137.442825, 369.970581,137.94342);
2514path.lineTo(372.197113,136.918823);
2515path.lineTo(375.350006,136.830978);
2516path.quadTo(372.378204,140.746292, 369.863983,145.645813);
2517path.lineTo(383.340973,136.608322);
2518path.close();
2519</div>
2520
2521<div id="testQuadratic53o">
2522path.moveTo(303.12088, 141.299606);
2523path.lineTo(330.463562, 217.659027);
2524path.lineTo(303.12088, 141.299606);
2525path.close();
2526path.moveTo(371.919067, 205.854996);
2527path.lineTo(326.236786, 205.854996);
2528path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2529path.lineTo(371.919067, 205.854996);
2530path.close();
2531</div>
2532
2533<div id="testQuadratic53s">
2534path.moveTo(326.236786,205.854996);
2535path.lineTo(326.236786,205.854996);
2536path.close();
2537path.moveTo(371.919067,205.854996);
2538path.lineTo(326.236786,205.854996);
2539</div>
2540
2541<div id="testQuadratic54">
2542path.moveTo(303.12088, 141.299606);
2543path.lineTo(330.463562, 217.659027);
2544path.lineTo(358.606506, 141.299606);
2545path.lineTo(303.12088, 141.299606);
2546path.close();
2547path.moveTo(371.919067, 205.854996);
2548path.lineTo(326.236786, 205.854996);
2549path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2550path.lineTo(371.919067, 205.854996);
2551path.close();
2552</div>
2553
2554<div id="testQuadratic55o">
2555path.moveTo(303.12088, 141.299606);
2556path.lineTo(330.463562, 217.659027);
2557path.lineTo(358.606506, 141.299606);
2558path.lineTo(303.12088, 141.299606);
2559path.close();
2560path.moveTo(326.236786, 205.854996);
2561path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2562path.lineTo(326.236786, 205.854996);
2563path.close();
2564</div>
2565
2566<div id="testQuadratic55s">
2567path.moveTo(326.236786,205.854996);
2568path.lineTo(303.12088,141.299606);
2569path.lineTo(358.606506,141.299606);
2570path.lineTo(332.468719,212.218475);
2571path.lineTo(351.512085,231.663818);
2572path.quadTo(329.104431,231.663818, 326.236786,205.854996);
2573path.close();
2574</div>
2575
2576<div id="testQuadratic56o">
2577path.moveTo(366.608826, 151.196014);
2578path.quadTo(378.803101, 136.674606, 398.164948, 136.674606);
2579path.lineTo(354.009216, 208.816208);
2580path.lineTo(393.291473, 102.232819);
2581path.lineTo(359.978058, 136.581512);
2582path.quadTo(378.315979, 136.581512, 388.322723, 149.613556);
2583path.lineTo(364.390686, 157.898193);
2584path.quadTo(375.281769, 136.674606, 396.039917, 136.674606);
2585path.lineTo(350, 120);
2586path.lineTo(366.608826, 151.196014);
2587path.close();
2588</div>
2589
2590<div id="testQuadratic56s">
2591path.moveTo(369.285553,126.984779);
2592path.lineTo(393.291473,102.232819);
2593path.lineTo(382.416199,131.740402);
2594path.lineTo(396.039917,136.674606);
2595path.quadTo(387.290802,136.674606, 380.294495,140.44487);
2596path.quadTo(379.623352,140.760971, 378.965302,141.103577);
2597path.lineTo(378.917297,141.233856);
2598path.quadTo(378.86972,141.206131, 378.822021,141.178574);
2599path.quadTo(372.011871,144.761871, 366.608826,151.196014);
2600path.lineTo(350,120);
2601path.lineTo(369.285553,126.984779);
2602path.close();
2603path.moveTo(378.917297,141.233871);
2604path.lineTo(378.917297,141.233856);
2605path.quadTo(378.86972,141.206131, 378.822021,141.178574);
2606path.quadTo(372.011871,144.761871, 366.608826,151.196014);
2607</div>
2608
2609<div id="testQuadratic57o">
2610path.moveTo(303.12088, 141.299606);
2611path.lineTo(330.463562, 217.659027);
2612path.lineTo(358.606506, 141.299606);
2613path.lineTo(362.874634, 159.705902);
2614path.lineTo(335.665344, 233.397751);
2615path.lineTo(322.12738, 233.397751);
2616path.lineTo(295.718353, 159.505829);
2617path.lineTo(295.718353, 240);
2618path.lineTo(303.12088, 141.299606);
2619path.close();
2620path.moveTo(322.935669, 231.030273);
2621path.quadTo(312.832214, 220.393295, 312.832214, 203.454178);
2622path.quadTo(312.832214, 186.981888, 321.73526, 176.444946);
2623path.quadTo(330.638306, 165.90802, 344.509705, 165.90802);
2624path.lineTo(371.919067, 205.854996);
2625path.lineTo(326.236786, 205.854996);
2626path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2627path.lineTo(322.935669, 231.030273);
2628path.close();
2629path.moveTo(326.837006, 195.984955);
2630path.lineTo(358.78125, 195.984955);
2631path.lineTo(343.709442, 175.778046);
2632path.quadTo(328.570923, 175.778046, 326.837006, 195.984955);
2633path.close();
2634</div>
2635
2636<div id="testQuadratic57s">
2637path.moveTo(300.708282,173.46756);
2638path.lineTo(303.12088,141.299606);
2639path.lineTo(317.770294,182.210785);
2640path.quadTo(319.462738,179.134506, 321.73526,176.444946);
2641path.quadTo(330.638306,165.90802, 344.509705,165.90802);
2642path.lineTo(347.780151,170.674438);
2643path.lineTo(358.606506,141.299606);
2644path.lineTo(362.874634,159.705902);
2645path.lineTo(354.960693,181.139511);
2646path.lineTo(371.919067,205.854996);
2647path.lineTo(345.834961,205.854996);
2648path.lineTo(337.609253,228.13298);
2649path.quadTo(342.649323,231.302383, 349.843323,231.626816);
2650path.lineTo(336.429047,231.329422);
2651path.lineTo(335.665344,233.397751);
2652path.lineTo(322.12738,233.397751);
2653path.lineTo(320.050781,227.587433);
2654path.quadTo(313.982483,219.336182, 313.015503,207.902908);
2655path.lineTo(300.708282,173.46756);
2656path.close();
2657path.moveTo(300.708282,173.46756);
2658path.lineTo(295.718353,240);
2659path.lineTo(295.718353,159.505829);
2660path.lineTo(300.708282,173.46756);
2661path.close();
2662path.moveTo(349.843323,231.626816);
2663path.lineTo(351.512085,231.663818);
2664path.quadTo(350.663696,231.663818, 349.843323,231.626816);
2665path.close();
2666path.moveTo(326.236786,205.854996);
2667path.lineTo(330.463562,217.659027);
2668path.lineTo(334.814056,205.854996);
2669path.lineTo(326.236786,205.854996);
2670path.close();
2671path.moveTo(334.814056,205.854996);
2672path.lineTo(338.451721,195.984955);
2673path.lineTo(349.479309,195.984955);
2674path.lineTo(352.559326,187.643173);
2675path.lineTo(358.78125,195.984955);
2676</div>
2677
2678<div id="testQuadratic58o">
2679path.moveTo(283.714233, 240);
2680path.lineTo(283.714233, 141.299606);
2681path.lineTo(303.12088, 141.299606);
2682path.lineTo(330.463562, 217.659027);
2683path.lineTo(358.606506, 141.299606);
2684path.lineTo(362.874634, 159.705902);
2685path.lineTo(335.665344, 233.397751);
2686path.lineTo(322.12738, 233.397751);
2687path.lineTo(295.718353, 159.505829);
2688path.lineTo(295.718353, 240);
2689path.lineTo(283.714233, 240);
2690path.close();
2691path.moveTo(322.935669, 231.030273);
2692path.quadTo(312.832214, 220.393295, 312.832214, 203.454178);
2693path.quadTo(312.832214, 186.981888, 321.73526, 176.444946);
2694path.quadTo(330.638306, 165.90802, 344.509705, 165.90802);
2695path.quadTo(357.647522, 165.90802, 364.81665, 175.244537);
2696path.lineTo(371.919067, 205.854996);
2697path.lineTo(326.236786, 205.854996);
2698path.quadTo(329.104431, 231.663818, 351.512085, 231.663818);
2699path.lineTo(322.935669, 231.030273);
2700path.close();
2701path.moveTo(326.837006, 195.984955);
2702path.lineTo(358.78125, 195.984955);
2703path.quadTo(358.78125, 175.778046, 343.709442, 175.778046);
2704path.quadTo(328.570923, 175.778046, 326.837006, 195.984955);
2705path.close();
2706</div>
2707
2708<div id="testQuadratic58s">
2709path.moveTo(283.714233,240);
2710path.lineTo(283.714233,141.299606);
2711path.lineTo(303.12088,141.299606);
2712path.lineTo(317.770294,182.210785);
2713path.quadTo(319.462738,179.134506, 321.73526,176.444946);
2714path.quadTo(330.638306,165.90802, 344.509705,165.90802);
2715path.quadTo(347.07132,165.90802, 349.406036,166.26297);
2716path.lineTo(358.606506,141.299606);
2717path.lineTo(362.874634,159.705902);
2718path.lineTo(359.116211,169.884979);
2719path.quadTo(362.326477,172.001541, 364.81665,175.244537);
2720path.lineTo(371.919067,205.854996);
2721path.lineTo(345.834961,205.854996);
2722path.lineTo(337.609253,228.13298);
2723path.quadTo(342.649323,231.302383, 349.843323,231.626816);
2724path.lineTo(336.429047,231.329422);
2725path.lineTo(335.665344,233.397751);
2726path.lineTo(322.12738,233.397751);
2727path.lineTo(320.050781,227.587433);
2728path.quadTo(313.982483,219.336182, 313.015503,207.902908);
2729path.lineTo(295.718353,159.505829);
2730path.lineTo(295.718353,240);
2731path.lineTo(283.714233,240);
2732path.close();
2733path.moveTo(349.843323,231.626816);
2734path.lineTo(351.512085,231.663818);
2735path.quadTo(350.663696,231.663818, 349.843323,231.626816);
2736path.close();
2737path.moveTo(326.236786,205.854996);
2738path.lineTo(330.463562,217.659027);
2739path.lineTo(334.814056,205.854996);
2740path.lineTo(326.236786,205.854996);
2741path.close();
2742path.moveTo(334.814056,205.854996);
2743path.lineTo(338.451721,195.984955);
2744path.lineTo(349.479309,195.984955);
2745path.lineTo(355.054535,180.885361);
2746path.quadTo(358.78125,185.936935, 358.78125,195.984955);
2747</div>
2748
2749<div id="testQuadratic58a">
2750path.moveTo(283.714233,240);
2751path.lineTo(283.714233,141.299606);
2752path.lineTo(303.12088,141.299606);
2753path.lineTo(317.770294,182.210785);
2754path.quadTo(319.462738,179.134506, 321.73526,176.444946);
2755path.quadTo(330.638306,165.90802, 344.509705,165.90802);
2756path.quadTo(347.07132,165.90802, 349.406036,166.26297);
2757path.lineTo(358.606506,141.299606);
2758path.lineTo(362.874634,159.705902);
2759path.lineTo(359.116211,169.884979);
2760path.quadTo(362.326477,172.001541, 364.81665,175.244537);
2761path.lineTo(371.919067,205.854996);
2762path.lineTo(345.834961,205.854996);
2763path.lineTo(337.609253,228.13298);
2764path.quadTo(342.649323,231.302383, 349.843323,231.626816);
2765path.lineTo(336.429047,231.329422);
2766path.lineTo(335.665344,233.397751);
2767path.lineTo(322.12738,233.397751);
2768path.lineTo(320.050781,227.587433);
2769path.quadTo(313.982483,219.336182, 313.015503,207.902908);
2770path.lineTo(295.718353,159.505829);
2771path.lineTo(295.718353,240);
2772path.lineTo(283.714233,240);
2773path.close();
2774path.moveTo(349.843323,231.626816);
2775path.lineTo(351.512085,231.663818);
2776path.quadTo(350.663696,231.663818, 349.843323,231.626816);
2777path.close();
2778path.moveTo(349.479309,195.984955);
2779path.lineTo(358.78125,195.984955);
2780path.quadTo(358.78125,185.936935, 355.054535,180.885361);
2781path.lineTo(349.479309,195.984955);
2782path.close();
2783path.moveTo(345.858368,175.888794);
2784path.lineTo(338.451721,195.984955);
2785path.lineTo(326.837006,195.984955);
2786path.quadTo(328.570923,175.778046, 343.709442,175.778046);
2787path.quadTo(344.825195,175.778046, 345.858368,175.888794);
2788path.close();
2789</div>
2790
caryclark@google.com0b7da432012-10-31 19:00:20 +00002791<div id="testQuadratic59o">
2792path.moveTo(369.863983, 145.645813);
2793path.quadTo(382.380371, 121.254936, 406.236359, 121.254936);
2794path.quadTo(409.445679, 121.254936, 412.975952, 121.789818);
2795path.lineTo(369.863983, 145.645813);
2796path.close();
2797path.moveTo(369.970581, 137.94342);
2798path.quadTo(383.98465, 121.254936, 406.235992, 121.254936);
2799path.quadTo(425.705902, 121.254936, 439.71994, 137.087616);
2800path.lineTo(369.970581, 137.94342);
2801path.close();
2802</div>
2803
2804<div id="testQuadratic59s">
2805path.moveTo(369.970581,137.94342);
2806path.quadTo(383.98465,121.254936, 406.235992,121.254936);
2807path.quadTo(406.237854,121.254936, 406.239746,121.254936);
2808path.lineTo(406.239532,121.254936);
2809path.quadTo(409.447418,121.255203, 412.975952,121.789818);
2810</div>
2811
2812<div id="testQuadratic60">
2813path.moveTo(360.416077, 166.795715);
2814path.quadTo(370.126831, 147.872162, 388.635406, 147.872162);
2815path.lineTo(360.416077, 166.795715);
2816path.close();
2817path.moveTo(353.2948, 194.351074);
2818path.quadTo(353.2948, 173.767563, 364.167572, 160.819855);
2819path.quadTo(375.040314, 147.872162, 392.303894, 147.872162);
2820path.lineTo(353.2948, 194.351074);
2821path.close();
2822</div>
2823
2824<div id="testQuadratic61">
2825path.moveTo(348.781738, 123.864815);
2826path.lineTo(369.848602, 123.864815);
2827path.lineTo(369.848602, 145.680267);
2828path.quadTo(382.360413, 121.298294, 406.207703, 121.298294);
2829path.lineTo(348.781738, 123.864815);
2830path.close();
2831path.moveTo(369.961151, 137.980698);
2832path.quadTo(383.970093, 121.298294, 406.213287, 121.298294);
2833path.lineTo(369.961151, 137.980698);
2834path.close();
2835</div>
2836
caryclark@google.com752b60e2012-03-22 21:11:17 +00002837</div>
2838
2839<script type="text/javascript">
2840
2841var testDivs = [
caryclark@google.com0b7da432012-10-31 19:00:20 +00002842 testQuadratic61,
2843 testQuadratic60,
2844 testQuadratic59o,
2845 testQuadratic59s,
caryclark@google.comf839c032012-10-26 21:03:50 +00002846 testQuadratic58o,
2847 testQuadratic58a,
2848 testQuadratic58s,
2849 testQuadratic57o,
2850 testQuadratic57s,
2851 testQuadratic56o,
2852 testQuadratic56s,
2853 testQuadratic55o,
2854 testQuadratic55s,
2855 testQuadratic54,
2856 testQuadratic53o,
2857 testQuadratic53s,
2858 testQuadratic52sa,
2859 testQuadratic52sb,
2860 testQuadratic52sc,
caryclark@google.com185c7c42012-10-19 18:26:24 +00002861 testQuadratic52o,
2862 testQuadratic52s,
caryclark@google.comfb51afb2012-10-19 15:54:16 +00002863 testQuadratic51,
2864 testQuadratic50o,
2865 testQuadratic50s,
2866 testQuadratic49s,
2867 testQuadratic48o,
2868 testQuadratic48s,
caryclark@google.comc91dfe42012-10-16 12:06:27 +00002869 testQuadratic47o,
2870 testQuadratic47s,
caryclark@google.coma461ff02012-10-11 12:54:23 +00002871 testQuadratic46o,
2872 testQuadratic46s,
2873 testQuadratic45o,
2874 testQuadratic45s,
caryclark@google.com6aea33f2012-10-09 14:11:58 +00002875 testQuadratic44o,
2876 testQuadratic44s,
2877 testQuadratic43o,
2878 testQuadratic43s,
2879 testQuadratic42o,
2880 testQuadratic42s,
2881 testQuadratic41o,
2882 testQuadratic41s,
2883 testQuadratic40xb,
2884 testQuadratic40xa,
2885 testQuadratic40x,
caryclark@google.comd1688742012-09-18 20:08:37 +00002886 testQuadratic39,
2887 testQuadratic39a,
2888 testQuadratic38,
2889 testQuadratic37,
2890 testQuadratic36,
2891 testQuadratic35,
2892 testQuadratic34,
2893 testQuadratic33,
2894 testQuadratic32,
2895 testQuadratic31,
2896 testQuadratic30,
2897 testQuadratic29,
caryclark@google.com235f56a2012-09-14 14:19:30 +00002898 testQuadratic28,
2899 testQuadratic27,
2900 testQuadratic26,
2901 testQuadratic25,
2902 testQuadratic24,
2903 testQuadratic23,
2904 testQuadratic22,
2905 testQuadratic21,
caryclark@google.com32546db2012-08-31 20:55:07 +00002906 testQuadratic20,
caryclark@google.coma7e483d2012-08-28 20:44:43 +00002907 testQuadratic19,
caryclark@google.com3350c3c2012-08-24 15:24:36 +00002908 testQuadratic18,
2909 testQuadratic17x,
2910 testQuadratic16b,
2911 testQuadratic16a,
2912 testQuadratic15,
caryclark@google.comc899ad92012-08-23 15:24:42 +00002913 testQuadratic14,
2914 testQuadratic13b,
2915 testQuadratic13a,
2916 testQuadratic12,
2917 testQuadratic11b,
2918 testQuadratic11a,
2919 testQuadratic10b,
2920 testQuadratic10a,
2921 testQuadratic9a,
2922 testQuadratic9,
2923 testQuadratic8,
2924 testQuadratic7,
2925 testQuadratic6,
2926 testQuadratic5,
2927 testQuadratic4x,
caryclark@google.com03f97062012-08-21 13:13:52 +00002928 testQuadratic3,
caryclark@google.com24bec792012-08-20 12:43:57 +00002929 testQuadratic2,
2930 testQuadratic1,
2931 testLine4x,
2932 testLine3x,
2933 testLine2x,
2934 testLine1x,
2935 testQuadralateral9,
2936 testQuadralateral8,
2937 testQuadralateral7,
2938 testFauxQuadralateral6d,
2939 testFauxQuadralateral6c,
2940 testFauxQuadralateral6b,
2941 testFauxQuadralateral6a,
2942 testFauxQuadralateral6,
2943 testQuadralateral6a,
caryclark@google.com59823f72012-08-09 18:17:47 +00002944 testQuadralateral6,
2945 testQuadralateral5,
2946 testNondegenerate4,
2947 testNondegenerate3,
2948 testNondegenerate2,
2949 testNondegenerate1,
2950 testDegenerate4,
2951 testDegenerate3,
2952 testDegenerate2,
2953 testDegenerate1,
caryclark@google.com2ddff932012-08-07 21:25:27 +00002954 testLine79,
2955 testLine78,
2956 testLine77,
2957 testLine76,
2958 testLine75,
caryclark@google.com0c803d02012-08-06 11:15:47 +00002959 testLine74,
caryclark@google.com200c2112012-08-03 15:05:04 +00002960 testLine73,
2961 testLine72,
caryclark@google.com534aa5b2012-08-02 20:08:21 +00002962 testLine71,
2963 testLine70,
2964 testLine69,
2965 testLine68f,
2966 testLine68e,
2967 testLine68d,
2968 testLine68c,
2969 testLine68b,
2970 testLine68a,
2971 testLine67,
caryclark@google.com27c449a2012-07-27 18:26:38 +00002972 testLine66,
2973 testLine65,
2974 testLine64,
2975 testLine63,
2976 testLine62,
2977 testLine61,
2978 testLine60,
caryclark@google.comcc905052012-07-25 20:59:42 +00002979 testLine59,
2980 testLine58,
caryclark@google.com18063442012-07-25 12:05:18 +00002981 testLine57,
2982 testLine56,
caryclark@google.come21cb182012-07-23 21:26:31 +00002983 testLine55,
2984 testLine54,
2985 testLine53,
2986 testLine52,
caryclark@google.com47580692012-07-23 12:14:49 +00002987 testLine51,
2988 testLine50,
2989 testLine49,
2990 testLine48,
2991 testLine47,
2992 testLine46,
2993 testLine45,
2994 testLine44,
2995 testLine43,
2996 testLine42,
2997 testLine41,
2998 testLine40,
2999 testLine39,
3000 testLine38,
3001 testLine37,
caryclark@google.com0e08a192012-07-13 21:07:52 +00003002 testLine36,
caryclark@google.com210acaf2012-07-12 21:05:13 +00003003 testLine35,
3004 testLine34,
caryclark@google.com9764cc62012-07-12 19:29:45 +00003005 testLine33,
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00003006 testLine32,
3007 testLine31,
caryclark@google.com534aa5b2012-08-02 20:08:21 +00003008 testLine30,
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00003009 testLine29,
3010 testLine28,
caryclark@google.com47580692012-07-23 12:14:49 +00003011 testLine24,
caryclark@google.comcc905052012-07-25 20:59:42 +00003012 testLine22,
caryclark@google.com47580692012-07-23 12:14:49 +00003013 testLine19,
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00003014 testLine17,
caryclark@google.come21cb182012-07-23 21:26:31 +00003015 testLine13,
3016 testLine12,
caryclark@google.com47580692012-07-23 12:14:49 +00003017 testLine9,
caryclark@google.comcc905052012-07-25 20:59:42 +00003018 testLine7b,
caryclark@google.com47580692012-07-23 12:14:49 +00003019 testLine7,
caryclark@google.com8dcf1142012-07-02 20:27:02 +00003020 testSimplifyQuadratic21,
3021 testSimplifyQuadratic20,
3022 testSimplifyQuadratic19,
caryclark@google.comb45a1b42012-05-18 20:50:33 +00003023 testSimplifyQuadratic18,
caryclark@google.comfa0588f2012-04-26 21:01:06 +00003024 testSimplifyQuadratic17,
3025 testSimplifyQuadratic16,
3026 testSimplifyQuadratic15,
3027 testSimplifyQuadratic14,
3028 testSimplifyQuadratic13,
3029 testSimplifyQuadratic12,
3030 testSimplifyQuadratic11,
3031 testSimplifyQuadratic10,
3032 testSimplifyQuadratic9,
3033 testSimplifyQuadratic8,
3034 testSimplifyQuadratic7,
3035 testSimplifyQuadratic6,
3036 testSimplifyQuadratic5,
3037 testSimplifyQuadratic4,
3038 testSimplifyQuadratic3,
3039 testSimplifyQuadratic2,
3040 testSimplifyQuadratic1,
caryclark@google.com752b60e2012-03-22 21:11:17 +00003041];
3042
3043var scale, columns, rows, xStart, yStart;
3044
3045var ticks = 0.1;
3046var at_x = 13 + 0.5;
3047var at_y = 13 + 0.5;
caryclark@google.com2ddff932012-08-07 21:25:27 +00003048var decimal_places = 0; // make this 3 to show more precision
caryclark@google.com752b60e2012-03-22 21:11:17 +00003049
3050var tests = [];
caryclark@google.com0e08a192012-07-13 21:07:52 +00003051var testTitles = [];
caryclark@google.com752b60e2012-03-22 21:11:17 +00003052var testIndex = 0;
caryclark@google.com24bec792012-08-20 12:43:57 +00003053var hasXor = false;
caryclark@google.com6aea33f2012-10-09 14:11:58 +00003054var draw_labels = true;
caryclark@google.com752b60e2012-03-22 21:11:17 +00003055
3056var ctx;
3057
caryclark@google.com0e08a192012-07-13 21:07:52 +00003058function parse(test, title) {
caryclark@google.com752b60e2012-03-22 21:11:17 +00003059 var contours = [];
3060 var contourStrs = test.split("path.close();");
caryclark@google.comd88e0892012-03-27 13:23:51 +00003061 var pattern = /-?\d+\.*\d*/g;
caryclark@google.com24bec792012-08-20 12:43:57 +00003062 hasXor = test.split("kEvenOdd_FillType").length > 1;
caryclark@google.com752b60e2012-03-22 21:11:17 +00003063 for (var c in contourStrs) {
caryclark@google.comfb173422012-04-10 18:28:55 +00003064 var contour = contourStrs[c];
3065 var verbStrs = contour.split("path");
3066 var verbs = [];
3067 for (var v in verbStrs) {
3068 var verbStr = verbStrs[v];
3069 var points = verbStr.match(pattern);
3070 var pts = [];
3071 for (var wd in points) {
3072 var num = parseFloat(points[wd]);
3073 if (isNaN(num)) continue;
3074 pts.push(num);
3075 }
3076 if (pts.length > 0)
3077 verbs.push(pts);
caryclark@google.com752b60e2012-03-22 21:11:17 +00003078 }
caryclark@google.comfa0588f2012-04-26 21:01:06 +00003079 if (verbs.length > 0) {
3080 var lastIndex = verbs.length - 1;
3081 var lastVerb = verbs[lastIndex];
3082 var lastLen = lastVerb.length;
3083 if (verbs[0][0] != lastVerb[lastLen - 2] && verbs[0][1] != lastVerb[lastLen - 1]) {
3084 var lastPts = [];
3085 lastPts.push(verbs[0][0]);
3086 lastPts.push(verbs[0][1]);
3087 verbs.push(lastPts);
3088 }
caryclark@google.comfb173422012-04-10 18:28:55 +00003089 contours.push(verbs);
caryclark@google.comfa0588f2012-04-26 21:01:06 +00003090 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00003091 }
caryclark@google.com0e08a192012-07-13 21:07:52 +00003092 if (contours.length > 0) {
caryclark@google.comfb173422012-04-10 18:28:55 +00003093 tests.push(contours);
caryclark@google.com0e08a192012-07-13 21:07:52 +00003094 testTitles.push(title);
3095 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00003096}
3097
caryclark@google.com0e08a192012-07-13 21:07:52 +00003098function parseRect(test, title) {
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00003099 var contours = [];
3100 var rectStrs = test.split("path.addRect");
3101 var pattern = /-?\d+\.*\d*/g;
caryclark@google.com24bec792012-08-20 12:43:57 +00003102 hasXor = test.split("kEvenOdd_FillType").length > 1;
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00003103 for (var r in rectStrs) {
3104 var rect = rectStrs[r];
3105 var sideStrs = rect.match(pattern);
3106 var sides = [];
3107 for (var wd in sideStrs) {
3108 var num = parseFloat(sideStrs[wd]);
3109 if (isNaN(num)) continue;
3110 sides.push(num);
3111 }
3112 if (sides.length == 0)
3113 continue;
3114 var verbs = [];
3115 var topLeft = [];
3116 topLeft.push(sides[0]); topLeft.push(sides[1]);
3117 var topRight = [];
3118 topRight.push(sides[2]); topRight.push(sides[1]);
3119 var botLeft = [];
3120 botLeft.push(sides[0]); botLeft.push(sides[3]);
3121 var botRight = [];
3122 botRight.push(sides[2]); botRight.push(sides[3]);
3123 verbs.push(topLeft);
3124 if (sides[4] == 0) {
3125 verbs.push(topRight);
3126 verbs.push(botRight);
3127 verbs.push(botLeft);
3128 } else {
3129 verbs.push(botLeft);
3130 verbs.push(botRight);
3131 verbs.push(topRight);
3132 }
3133 verbs.push(topLeft);
3134 contours.push(verbs);
3135 }
caryclark@google.com0e08a192012-07-13 21:07:52 +00003136 if (contours.length > 0) {
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00003137 tests.push(contours);
caryclark@google.com0e08a192012-07-13 21:07:52 +00003138 testTitles.push(title);
3139 }
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00003140}
3141
caryclark@google.com752b60e2012-03-22 21:11:17 +00003142function init(test) {
3143 var canvas = document.getElementById('canvas');
3144 if (!canvas.getContext) return;
caryclark@google.com534aa5b2012-08-02 20:08:21 +00003145 canvas.width = window.innerWidth - at_x;
3146 canvas.height = window.innerHeight - at_y;
caryclark@google.com752b60e2012-03-22 21:11:17 +00003147 ctx = canvas.getContext('2d');
3148 var xmin = Infinity;
3149 var xmax = -Infinity;
3150 var ymin = Infinity;
3151 var ymax = -Infinity;
caryclark@google.comfb173422012-04-10 18:28:55 +00003152 for (var contours in test) {
3153 var contour = test[contours];
3154 for (var verbs in contour) {
3155 var verb = contour[verbs];
3156 var last = verb.length;
caryclark@google.comb45a1b42012-05-18 20:50:33 +00003157 for (var idx = 0; idx < last; idx += 2) {
3158 xmin = Math.min(xmin, verb[idx]);
3159 xmax = Math.max(xmax, verb[idx]);
3160 ymin = Math.min(ymin, verb[idx + 1]);
3161 ymax = Math.max(ymax, verb[idx + 1]);
3162 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00003163 }
3164 }
3165 var subscale = 1;
3166 while ((xmax - xmin) * subscale < 0.1 && (ymax - ymin) * subscale < 0.1) {
3167 subscale *= 10;
3168 }
3169 columns = Math.ceil(xmax) - Math.floor(xmin) + 1;
3170 rows = Math.ceil(ymax) - Math.floor(ymin) + 1;
3171 xStart = Math.floor(xmin);
3172 yStart = Math.floor(ymin);
3173 var hscale = ctx.canvas.width / columns / ticks;
3174 var vscale = ctx.canvas.height / rows / ticks;
3175 scale = Math.floor(Math.min(hscale, vscale)) * subscale;
3176}
3177
3178function drawPoint(px, py, xoffset, yoffset, unit) {
caryclark@google.com2ddff932012-08-07 21:25:27 +00003179 var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
caryclark@google.com752b60e2012-03-22 21:11:17 +00003180 var _px = px * unit + xoffset;
3181 var _py = py * unit + yoffset;
3182 ctx.beginPath();
3183 ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
3184 ctx.closePath();
3185 ctx.fill();
3186 ctx.fillText(label, _px + 5, _py);
3187}
3188
caryclark@google.com0e08a192012-07-13 21:07:52 +00003189function draw(test, title, _at_x, _at_y, scale) {
3190 ctx.fillStyle = "rgba(0,0,0, 0.1)";
3191 ctx.font = "normal 50px Arial";
3192 ctx.fillText(title, 50, 50);
3193 ctx.font = "normal 10px Arial";
3194
caryclark@google.com752b60e2012-03-22 21:11:17 +00003195 var unit = scale * ticks;
3196 ctx.lineWidth = 1;
3197 var i;
3198 for (i = 0; i <= rows * ticks; ++i) {
3199 ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
3200 ctx.beginPath();
3201 ctx.moveTo(_at_x + 0, _at_y + i * scale);
3202 ctx.lineTo(_at_x + unit * columns, _at_y + i * scale);
3203 ctx.stroke();
3204 }
3205 for (i = 0; i <= columns * ticks; ++i) {
3206 ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
3207 ctx.beginPath();
3208 ctx.moveTo(_at_x + i * scale, _at_y + 0);
3209 ctx.lineTo(_at_x + i * scale, _at_y + unit * rows);
3210 ctx.stroke();
3211 }
3212
3213 var xoffset = xStart * -unit + _at_x;
3214 var yoffset = yStart * -unit + _at_y;
3215
3216 ctx.fillStyle = "rgb(40,80,60)"
3217 for (i = 0; i <= columns; i += (1 / ticks))
3218 {
3219 num = (xoffset - _at_x) / -unit + i;
3220 ctx.fillText(num.toFixed(0), i * unit + _at_y - 5, 10);
3221 }
3222 for (i = 0; i <= rows; i += (1 / ticks))
3223 {
3224 num = (yoffset - _at_x) / -unit + i;
3225 ctx.fillText(num.toFixed(0), 0, i * unit + _at_y + 0);
3226 }
caryclark@google.com32546db2012-08-31 20:55:07 +00003227
caryclark@google.com752b60e2012-03-22 21:11:17 +00003228 ctx.strokeStyle = "red";
caryclark@google.comfb173422012-04-10 18:28:55 +00003229 var contours, verbs, pts;
caryclark@google.com8dcf1142012-07-02 20:27:02 +00003230 ctx.beginPath();
caryclark@google.comfb173422012-04-10 18:28:55 +00003231 for (contours in test) {
3232 var contour = test[contours];
3233 if (contours == 2) ctx.strokeStyle = "blue";
caryclark@google.comfb173422012-04-10 18:28:55 +00003234 var first = true;
3235 for (verbs in contour) {
3236 var verb = contour[verbs];
3237 switch (verb.length) {
3238 case 2:
3239 if (first) {
3240 ctx.moveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit);
3241 first = false;
3242 } else
3243 ctx.lineTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit);
3244 break;
3245 case 4:
3246 ctx.quadraticCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit,
3247 xoffset + verb[2] * unit, yoffset + verb[3] * unit);
3248 break;
3249 case 6:
3250 ctx.bezierCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit,
3251 xoffset + verb[2] * unit, yoffset + verb[3] * unit,
3252 xoffset + verb[4] * unit, yoffset + verb[5] * unit);
3253 break;
3254 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00003255 }
caryclark@google.com8dcf1142012-07-02 20:27:02 +00003256 ctx.closePath();
caryclark@google.com752b60e2012-03-22 21:11:17 +00003257 }
caryclark@google.com24bec792012-08-20 12:43:57 +00003258 if (hasXor) {
3259 ctx.fillType=xor; // how is this done?
3260 }
caryclark@google.com8dcf1142012-07-02 20:27:02 +00003261 ctx.stroke();
3262 ctx.fillStyle="rgba(192,192,255, 0.3)";
3263 ctx.fill();
caryclark@google.com752b60e2012-03-22 21:11:17 +00003264
caryclark@google.com6aea33f2012-10-09 14:11:58 +00003265 if (!draw_labels) {
3266 return;
3267 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00003268 ctx.fillStyle="blue";
caryclark@google.comfb173422012-04-10 18:28:55 +00003269 for (contours in test) {
3270 var contour = test[contours];
3271 for (verbs in contour) {
3272 var verb = contour[verbs];
3273 for (i = 0; i < verb.length; i += 2) {
3274 x = verb[i];
3275 y = verb[i + 1];
3276 drawPoint(x, y, xoffset, yoffset, unit);
3277 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00003278 }
3279 }
3280}
3281
3282var mouseX = Infinity, mouseY;
3283
3284function calcXY() {
3285 var e = window.event;
3286 var tgt = e.target || e.srcElement;
3287 var left = tgt.offsetLeft;
3288 var top = tgt.offsetTop;
3289 var unit = scale * ticks;
3290 mouseX = (e.clientX - left - Math.ceil(at_x) + 1) / unit + xStart;
3291 mouseY = (e.clientY - top - Math.ceil(at_y)) / unit + yStart;
3292}
3293
3294function handleMouseOver() {
3295 calcXY();
3296 var num = mouseX.toFixed(3) + ", " + mouseY.toFixed(3);
3297 ctx.beginPath();
3298 ctx.rect(300,100,200,10);
3299 ctx.fillStyle="white";
3300 ctx.fill();
3301 ctx.fillStyle="black";
3302 ctx.fillText(num, 300, 108);
3303}
3304
3305function handleMouseClick() {
3306 calcXY();
3307// drawInset();
3308}
3309
3310function drawTop() {
3311 init(tests[testIndex]);
3312 redraw();
3313}
3314
3315function redraw() {
3316 ctx.beginPath();
3317 ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
3318 ctx.fillStyle="white";
3319 ctx.fill();
caryclark@google.com0e08a192012-07-13 21:07:52 +00003320 draw(tests[testIndex], testTitles[testIndex], at_x, at_y, scale);
caryclark@google.com752b60e2012-03-22 21:11:17 +00003321// if (insetScale != scale && mouseX != Infinity)
3322// drawInset();
3323}
3324
3325function doKeyPress(evt) {
3326 var char = String.fromCharCode(evt.charCode);
3327 switch (char) {
3328 case 'N':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00003329 testIndex += 9;
caryclark@google.com752b60e2012-03-22 21:11:17 +00003330 case 'n':
3331 if (++testIndex >= tests.length)
3332 testIndex = 0;
caryclark@google.comfa0588f2012-04-26 21:01:06 +00003333 mouseX = Infinity;
3334 drawTop();
3335 break;
3336 case 'P':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00003337 testIndex -= 9;
caryclark@google.comfa0588f2012-04-26 21:01:06 +00003338 case 'p':
3339 if (--testIndex < 0)
3340 testIndex = tests.length - 1;
caryclark@google.com752b60e2012-03-22 21:11:17 +00003341 mouseX = Infinity;
3342 drawTop();
3343 break;
3344 case 'T':
3345 case 't':
caryclark@google.com752b60e2012-03-22 21:11:17 +00003346 break;
3347 case '-':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00003348 drawTop();
caryclark@google.com752b60e2012-03-22 21:11:17 +00003349 break;
3350 case '=':
3351 case '+':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00003352 drawTop();
caryclark@google.com752b60e2012-03-22 21:11:17 +00003353 break;
caryclark@google.com6aea33f2012-10-09 14:11:58 +00003354 case 'x':
3355 draw_labels ^= true;
3356 drawTop();
3357 break;
caryclark@google.com752b60e2012-03-22 21:11:17 +00003358 }
3359}
3360
3361function start() {
3362 for (i = 0; i < testDivs.length; ++i) {
caryclark@google.com0e08a192012-07-13 21:07:52 +00003363 var title = testDivs[i].id.toString();
caryclark@google.com752b60e2012-03-22 21:11:17 +00003364 var str = testDivs[i].firstChild.data;
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00003365 if (str.split("addRect").length > 1) {
caryclark@google.com0e08a192012-07-13 21:07:52 +00003366 parseRect(str, title);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00003367 } else {
caryclark@google.com0e08a192012-07-13 21:07:52 +00003368 parse(str, title);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00003369 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00003370 }
3371 drawTop();
3372 window.addEventListener('keypress', doKeyPress, true);
caryclark@google.com534aa5b2012-08-02 20:08:21 +00003373 window.onresize = function() {
3374 drawTop();
3375 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00003376}
3377
3378</script>
3379</head>
3380
3381<body onLoad="start();">
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00003382<canvas id="canvas" width="750" height="500"
caryclark@google.com752b60e2012-03-22 21:11:17 +00003383 onmousemove="handleMouseOver()"
3384 onclick="handleMouseClick()"
3385 ></canvas >
3386</body>
3387</html>