blob: 7049f0262b8e42ec60c2fc32dc297b3a78d841ba [file] [log] [blame]
caryclark@google.com752b60e2012-03-22 21:11:17 +00001<html>
2<head>
3<div style="height:0">
caryclark@google.comfa0588f2012-04-26 21:01:06 +00004
5<div id="testSimplifyQuadratic1">
6 SkPath path, out;
7 path.moveTo(0, 0);
8 path.quadTo(1, 0, 1, 1);
9 path.close();
10 path.moveTo(1, 0);
11 path.quadTo(0, 0, 0, 1);
12 path.close();
13 testSimplify(path, true, out, bitmap);
14}
caryclark@google.com752b60e2012-03-22 21:11:17 +000015</div>
caryclark@google.comfa0588f2012-04-26 21:01:06 +000016
17<div id="testSimplifyQuadratic2">
18 SkPath path, out;
19 path.moveTo(0, 0);
20 path.quadTo(20, 0, 20, 20);
21 path.close();
22 path.moveTo(20, 0);
23 path.quadTo(0, 0, 0, 20);
24 path.close();
25 testSimplify(path, true, out, bitmap);
26}
caryclark@google.comd88e0892012-03-27 13:23:51 +000027</div>
caryclark@google.comfa0588f2012-04-26 21:01:06 +000028
29<div id="testSimplifyQuadratic3">
30 SkPath path, out;
31 path.moveTo(0, 0);
32 path.quadTo(20, 0, 20, 20);
33 path.close();
34 path.moveTo(0, 20);
35 path.quadTo(0, 0, 20, 0);
36 path.close();
37 testSimplify(path, true, out, bitmap);
38}
caryclark@google.comd88e0892012-03-27 13:23:51 +000039</div>
caryclark@google.comfa0588f2012-04-26 21:01:06 +000040
41<div id="testSimplifyQuadratic4">
42 SkPath path, out;
43 path.moveTo(0, 20);
44 path.quadTo(20, 0, 40, 20);
45 path.close();
46 path.moveTo(40, 10);
47 path.quadTo(20, 30, 0, 10);
48 path.close();
49 testSimplify(path, true, out, bitmap);
50 drawAsciiPaths(path, out, true);
51}
caryclark@google.comd88e0892012-03-27 13:23:51 +000052</div>
caryclark@google.comfa0588f2012-04-26 21:01:06 +000053
54<div id="testSimplifyQuadratic5">
55 SkPath path, out;
56 path.moveTo(0, 0);
57 path.quadTo(0, 0, 0, 0);
58 path.lineTo(0, 0);
59 path.close();
60 path.moveTo(0, 0);
61 path.lineTo(0, 0);
62 path.quadTo(0, 0, 0, 1);
63 path.close();
64 testSimplify(path, true, out, bitmap);
65 drawAsciiPaths(path, out, true);
66}
caryclark@google.comfb173422012-04-10 18:28:55 +000067</div>
caryclark@google.comfa0588f2012-04-26 21:01:06 +000068
69<div id="testSimplifyQuadratic6">
70 SkPath path, out;
71 path.moveTo(0, 0);
72 path.quadTo(0, 0, 0, 0);
73 path.lineTo(1, 0);
74 path.close();
75 path.moveTo(0, 0);
76 path.lineTo(0, 0);
77 path.quadTo(1, 0, 0, 1);
78 path.close();
79 testSimplify(path, true, out, bitmap);
80 drawAsciiPaths(path, out, true);
81}
caryclark@google.comfb173422012-04-10 18:28:55 +000082</div>
caryclark@google.comfa0588f2012-04-26 21:01:06 +000083
84<div id="testSimplifyQuadratic7">
85 SkPath path, out;
86 path.moveTo(0, 0);
87 path.quadTo(0, 0, 0, 0);
88 path.lineTo(0, 1);
89 path.close();
90 path.moveTo(0, 0);
91 path.lineTo(0, 0);
92 path.quadTo(1, 0, 0, 2);
93 path.close();
94 testSimplify(path, true, out, bitmap);
95 drawAsciiPaths(path, out, true);
96}
97</div>
98
99<div id="testSimplifyQuadratic8">
100 SkPath path, out;
101 path.moveTo(0, 0);
102 path.quadTo(0, 0, 0, 0);
103 path.lineTo(0, 0);
104 path.close();
105 path.moveTo(0, 0);
106 path.lineTo(0, 0);
107 path.quadTo(1, 0, 0, 2);
108 path.close();
109 testSimplify(path, true, out, bitmap);
110 drawAsciiPaths(path, out, true);
111}
112</div>
113
114<div id="testSimplifyQuadratic9">
115 SkPath path, out;
116 path.moveTo(0, 0);
117 path.quadTo(0, 0, 0, 0);
118 path.lineTo(1, 1);
119 path.close();
120 path.moveTo(0, 0);
121 path.lineTo(0, 0);
122 path.quadTo(1, 0, 2, 2);
123 path.close();
124 testSimplify(path, true, out, bitmap);
125 drawAsciiPaths(path, out, true);
126}
127</div>
128
129<div id="testSimplifyQuadratic10">
130 SkPath path, out;
caryclark@google.com78e17132012-04-17 11:40:34 +0000131 path.moveTo(0, 0);
132 path.quadTo(0, 0, 0, 0);
133 path.lineTo(0, 0);
134 path.close();
135 path.moveTo(0, 0);
136 path.lineTo(0, 1);
137 path.quadTo(1, 1, 1, 2);
caryclark@google.com78e17132012-04-17 11:40:34 +0000138 path.close();
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000139 testSimplify(path, true, out, bitmap);
140 drawAsciiPaths(path, out, true);
141}
caryclark@google.com78e17132012-04-17 11:40:34 +0000142</div>
143
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000144<div id="testSimplifyQuadratic11">
145 SkPath path, out;
caryclark@google.com78e17132012-04-17 11:40:34 +0000146 path.moveTo(0, 0);
147 path.quadTo(0, 0, 0, 0);
148 path.lineTo(0, 2);
caryclark@google.com78e17132012-04-17 11:40:34 +0000149 path.close();
150 path.moveTo(0, 0);
151 path.lineTo(2, 1);
152 path.quadTo(2, 2, 3, 3);
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000153 path.close();
154 testSimplify(path, true, out, bitmap);
155 drawAsciiPaths(path, out, true);
156}
157</div>
158
159<div id="testSimplifyQuadratic12">
160 SkPath path, out;
161 path.moveTo(0, 0);
162 path.lineTo(0, 2);
caryclark@google.com78e17132012-04-17 11:40:34 +0000163 path.lineTo(0, 0);
164 path.close();
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000165 path.moveTo(3, 0);
166 path.quadTo(1, 1, 0, 2);
167 path.lineTo(3, 0);
168 path.close();
169 testSimplify(path, true, out, bitmap);
170 drawAsciiPaths(path, out, true);
171}
caryclark@google.com78e17132012-04-17 11:40:34 +0000172</div>
173
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000174<div id="testSimplifyQuadratic13">
175 SkPath path, out;
caryclark@google.com78e17132012-04-17 11:40:34 +0000176path.moveTo(0, 0);
177path.quadTo(0, 0, 1, 0);
178path.lineTo(1, 1);
179path.lineTo(0, 0);
180path.close();
181path.moveTo(0, 0);
182path.quadTo(3, 0, 1, 1);
183path.lineTo(0, 0);
184path.close();
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000185 testSimplify(path, true, out, bitmap);
186 drawAsciiPaths(path, out, true);
187}
caryclark@google.com78e17132012-04-17 11:40:34 +0000188</div>
189
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000190<div id="testSimplifyQuadratic14">
191 SkPath path, out;
caryclark@google.com78e17132012-04-17 11:40:34 +0000192 path.moveTo(0, 0);
193 path.quadTo(0, 0, 0, 0);
194 path.lineTo(1, 1);
caryclark@google.com78e17132012-04-17 11:40:34 +0000195 path.close();
196 path.moveTo(0, 0);
197 path.lineTo(0, 0);
198 path.quadTo(0, 1, 2, 1);
caryclark@google.com78e17132012-04-17 11:40:34 +0000199 path.close();
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000200 testSimplify(path, true, out, bitmap);
201 drawAsciiPaths(path, out, true);
202}
caryclark@google.com78e17132012-04-17 11:40:34 +0000203</div>
204
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000205<div id="testSimplifyQuadratic15">
206 SkPath path, out;
207 path.moveTo(0, 0);
208 path.quadTo(0, 0, 1, 3);
209 path.lineTo(3, 3);
210 path.close();
211 path.moveTo(0, 1);
212 path.lineTo(1, 1);
213 path.quadTo(0, 3, 3, 3);
214 path.close();
215 testSimplify(path, true, out, bitmap);
216 drawAsciiPaths(path, out, true);
217}
218</div>
219
220<div id="testSimplifyQuadratic16">
221 SkPath path, out;
222 path.moveTo(0, 0);
223 path.quadTo(0, 0, 0, 0);
224 path.lineTo(0, 1);
225 path.close();
226 path.moveTo(0, 0);
227 path.lineTo(0, 0);
228 path.quadTo(1, 0, 0, 1);
229 path.close();
230 testSimplify(path, true, out, bitmap);
231 drawAsciiPaths(path, out, true);
232}
233</div>
234
235<div id="testSimplifyQuadratic17">
236 SkPath path, out;
caryclark@google.comb45a1b42012-05-18 20:50:33 +0000237 path.moveTo(8, 8);
238 path.quadTo(10, 10, 8, -10);
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000239 path.close();
caryclark@google.comb45a1b42012-05-18 20:50:33 +0000240 path.moveTo(8, 8);
241 path.quadTo(12, 12, 14, 4);
242 path.close();
243 path.moveTo(8, 8);
244 path.quadTo(9, 9, 10, 8);
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000245 path.close();
246 testSimplify(path, true, out, bitmap);
247 drawAsciiPaths(path, out, true);
248}
caryclark@google.com78e17132012-04-17 11:40:34 +0000249</div>
caryclark@google.comfb173422012-04-10 18:28:55 +0000250
caryclark@google.comb45a1b42012-05-18 20:50:33 +0000251<div id="testSimplifyQuadratic18">
252 SkPath path, out;
253 path.moveTo(8.0000000000000071, 8.0000000000000071);
254 path.quadTo(8.7289570079366854, 8.7289570079366889, 9.3914917259458743, 9.0593802763083691);
255 path.close();
256 path.moveTo(8.0000000000000142, 8.0000000000000142);
257 path.quadTo(8.1250000000000107, 8.1250000000000071, 8.2500000000000071, 8.2187500000000053);
258 path.close();
259 testSimplify(path, true, out, bitmap);
260 drawAsciiPaths(path, out, true);
261</div>
caryclark@google.com8dcf1142012-07-02 20:27:02 +0000262
263<div id="testSimplifyQuadratic19">
264 SkPath path, simple;
265 path.moveTo(0,4);
266 path.lineTo(6,4);
267 path.lineTo(3,1);
268 path.close();
269 path.moveTo(2,3);
270 path.lineTo(3,2);
271 path.lineTo(4,3);
272 path.close();
273 testSimplifyx(path);
274</div>
275
276<div id="testSimplifyQuadratic20">
277 SkPath path, simple;
278 path.moveTo(0,4);
279 path.lineTo(6,4);
280 path.lineTo(3,1);
281 path.close();
282 path.moveTo(2,3);
283 path.lineTo(4,3);
284 path.lineTo(3,2);
285 path.close();
286 testSimplifyx(path);
287</div>
288
289<div id="testSimplifyQuadratic21">
290 SkPath path, simple;
291 path.moveTo(0,4);
292 path.lineTo(8,4);
293 path.lineTo(4,0);
294 path.close();
295 path.moveTo(2,2);
296 path.lineTo(3,3);
297 path.lineTo(4,2);
298 path.close();
299 testSimplifyx(path);
300</div>
301
302<div id="testLine6">
303 SkPath path, simple;
304 path.moveTo(0,0);
305 path.lineTo(4,0);
306 path.lineTo(2,2);
307 path.close();
308 path.moveTo(2,0);
309 path.lineTo(6,0);
310 path.lineTo(4,2);
311 path.close();
312 testSimplifyx(path);
313</div>
314
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000315<div id="testLine7">
316 SkPath path, simple;
317 path.moveTo(0,0);
318 path.lineTo(4,0);
319 path.lineTo(2,2);
320 path.close();
321 path.moveTo(6,0);
322 path.lineTo(2,0);
323 path.lineTo(4,2);
324 path.close();
325 testSimplifyx(path);
326</div>
327
caryclark@google.comcc905052012-07-25 20:59:42 +0000328<div id="testLine7b">
329 path.moveTo(0,0);
330 path.lineTo(4,0);
331 path.close();
332 path.moveTo(6,0);
333 path.lineTo(2,0);
334 path.lineTo(4,2);
335 path.close();
336</div>
337
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000338<div id="testLine9">
339 SkPath path, simple;
340 path.moveTo(0,4);
341 path.lineTo(4,4);
342 path.lineTo(2,2);
343 path.close();
344 path.moveTo(6,4);
345 path.lineTo(2,4);
346 path.lineTo(4,2);
347 path.close();
348 testSimplifyx(path);
349</div>
350
caryclark@google.come21cb182012-07-23 21:26:31 +0000351<div id="testLine12">
352 path.moveTo(0,4);
353 path.lineTo(6,4);
354 path.lineTo(3,1);
355 path.close();
356 path.moveTo(2,3);
357 path.lineTo(3,2);
358 path.lineTo(4,3);
359 path.close();
360</div>
361
362<div id="testLine13">
363 path.moveTo(6,4);
364 path.lineTo(0,4);
365 path.lineTo(3,1);
366 path.close();
367 path.moveTo(3,2);
368 path.lineTo(2,3);
369 path.lineTo(4,3);
370 path.close();
371</div>
372
caryclark@google.com8dcf1142012-07-02 20:27:02 +0000373<div id="testLine17">
374 SkPath path, simple;
375 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
376 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
377 testSimplifyx(path);
378</div>
379
caryclark@google.com47580692012-07-23 12:14:49 +0000380<div id="testLine19">
381 SkPath path, simple;
382 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
383 path.addRect(12, 16, 21, 21, (SkPath::Direction) 0);
384 testSimplifyx(path);
385</div>
386
caryclark@google.comcc905052012-07-25 20:59:42 +0000387<div id="testLine22">
388 path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
389 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
390</div>
391
caryclark@google.com47580692012-07-23 12:14:49 +0000392<div id="testLine24">
393 path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
394 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
395</div>
396
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000397<div id="testLine28">
398 SkPath path, simple;
399 path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
400 path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
401 testSimplifyx(path);
402</div>
403
404<div id="testLine29">
405 SkPath path, simple;
406 path.addRect(0, 18, 12, 12, (SkPath::Direction) 0);
407 path.addRect(12, 12, 21, 21, (SkPath::Direction) 0);
408 testSimplifyx(path);
409</div>
410
411<div id="testLine30">
412 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
413 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
414 path.addRect(4, 4, 13, 13, (SkPath::Direction) 0);
415</div>
416
417<div id="testLine31">
418 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
419 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
420 path.addRect(0, 4, 9, 9, (SkPath::Direction) 0);
421</div>
422
423<div id="testLine32">
424 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
425 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
426 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
427</div>
428
caryclark@google.com9764cc62012-07-12 19:29:45 +0000429<div id="testLine33">
430 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
431 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
432 path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
433</div>
434
caryclark@google.com210acaf2012-07-12 21:05:13 +0000435<div id="testLine34">
436 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
437 path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
438 path.addRect(4, 12, 13, 13, (SkPath::Direction) 0);
439</div>
440
441<div id="testLine35">
442 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
443 path.addRect(6, 0, 18, 18, (SkPath::Direction) 0);
444 path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
445</div>
446
caryclark@google.com0e08a192012-07-13 21:07:52 +0000447<div id="testLine36">
448 path.addRect(0, 10, 20, 20, (SkPath::Direction) 0);
449 path.addRect(6, 12, 18, 18, (SkPath::Direction) 0);
450 path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
451</div>
452
caryclark@google.com47580692012-07-23 12:14:49 +0000453<div id="testLine37">
454 path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
455 path.addRect(18, 24, 30, 30, (SkPath::Direction) 0);
456 path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
457</div>
458
459<div id="testLine38">
460 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
461 path.addRect(6, 12, 18, 18, (SkPath::Direction) 0);
462 path.addRect(12, 12, 21, 21, (SkPath::Direction) 0);
463</div>
464
465<div id="testLine39">
466 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
467 path.addRect(12, 6, 24, 24, (SkPath::Direction) 0);
468 path.addRect(12, 4, 21, 21, (SkPath::Direction) 0);
469</div>
470
471<div id="testLine40">
472 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
473 path.addRect(12, 18, 24, 24, (SkPath::Direction) 0);
474 path.addRect(4, 16, 13, 13, (SkPath::Direction) 0);
475</div>
476
477<div id="testLine41">
478 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
479 path.addRect(18, 24, 30, 30, (SkPath::Direction) 0);
480 path.addRect(12, 0, 21, 21, (SkPath::Direction) 0);
481</div>
482
483<div id="testLine42">
484 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
485 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
486 path.addRect(8, 16, 17, 17, (SkPath::Direction) 0);
487</div>
488
489<div id="testLine43">
490 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
491 path.addRect(6, 24, 18, 18, (SkPath::Direction) 0);
492 path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
493</div>
494
495<div id="testLine44">
496 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
497 path.addRect(18, 0, 30, 30, (SkPath::Direction) 0);
498 path.addRect(18, 32, 27, 36, (SkPath::Direction) 1);
499</div>
500
501<div id="testLine45">
502 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
503 path.addRect(18, 0, 30, 30, (SkPath::Direction) 0);
504 path.addRect(24, 32, 33, 36, (SkPath::Direction) 0);
505</div>
506
507<div id="testLine46">
508 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
509 path.addRect(24, 0, 36, 36, (SkPath::Direction) 0);
510 path.addRect(24, 32, 33, 36, (SkPath::Direction) 0);
511</div>
512
513<div id="testLine47">
514 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
515 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
516 path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
517</div>
518
519<div id="testLine48">
520 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
521 path.addRect(0, 6, 12, 12, (SkPath::Direction) 0);
522 path.addRect(0, 0, 9, 9, (SkPath::Direction) 1);
523</div>
524
525<div id="testLine49">
526 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
527 path.addRect(0, 0, 12, 12, (SkPath::Direction) 0);
528 path.addRect(0, 0, 9, 9, (SkPath::Direction) 0);
529</div>
530
531<div id="testLine50">
532 path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
533 path.addRect(24, 20, 36, 30, (SkPath::Direction) 0);
534</div>
535
536<div id="testLine51">
537 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
538 path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
539 path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
540</div>
541
caryclark@google.come21cb182012-07-23 21:26:31 +0000542<div id="testLine52">
543 path.addRect(0, 30, 20, 20, (SkPath::Direction) 0);
544 path.addRect(6, 20, 18, 30, (SkPath::Direction) 0);
545 path.addRect(32, 0, 36, 41, (SkPath::Direction) 0);
546</div>
547
548<div id="testLine53">
549 path.addRect(10, 30, 30, 30, (SkPath::Direction) 0);
550 path.addRect(12, 20, 24, 30, (SkPath::Direction) 0);
551 path.addRect(12, 32, 21, 36, (SkPath::Direction) 1);
552</div>
553
554<div id="testLine54">
555 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
556 path.addRect(6, 0, 18, 18, (SkPath::Direction) 0);
557 path.addRect(8, 4, 17, 17, (SkPath::Direction) 1);
558</div>
559
560<div id="testLine55">
561 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
562 path.addRect(6, 6, 18, 18, (SkPath::Direction) 0);
563 path.addRect(4, 4, 13, 13, (SkPath::Direction) 1);
564</div>
565
caryclark@google.com18063442012-07-25 12:05:18 +0000566<div id="testLine56">
567 path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
568 path.addRect(18, 20, 30, 30, (SkPath::Direction) 0);
569 path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
570</div>
571
572<div id="testLine57">
573 path.addRect(20, 0, 40, 40, (SkPath::Direction) 0);
574 path.addRect(20, 0, 30, 40, (SkPath::Direction) 0);
575 path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
576</div>
577
caryclark@google.comcc905052012-07-25 20:59:42 +0000578<div id="testLine58">
579 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
580 path.addRect(0, 0, 12, 12, (SkPath::Direction) 1);
581 path.addRect(0, 12, 9, 9, (SkPath::Direction) 1);
582</div>
583
584<div id="testLine59">
585 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
586 path.addRect(6, 6, 18, 18, (SkPath::Direction) 1);
587 path.addRect(4, 4, 13, 13, (SkPath::Direction) 1);
588</div>
589
caryclark@google.com27c449a2012-07-27 18:26:38 +0000590<div id="testLine60">
591 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
592 path.addRect(6, 12, 18, 18, (SkPath::Direction) 1);
593 path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
594</div>
595
596<div id="testLine61">
597 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
598 path.addRect(12, 0, 24, 24, (SkPath::Direction) 1);
599 path.addRect(12, 0, 21, 21, (SkPath::Direction) 1);
600</div>
601
602<div id="testLine62">
603 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
604 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
605 path.addRect(0, 12, 12, 12, (SkPath::Direction) 0);
606 path.addRect(4, 12, 13, 13, (SkPath::Direction) 1);
607</div>
608
609<div id="testLine63">
610 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
611 path.addRect(0, 10, 20, 20, (SkPath::Direction) 0);
612 path.addRect(0, 6, 12, 12, (SkPath::Direction) 1);
613 path.addRect(0, 32, 9, 36, (SkPath::Direction) 1);
614</div>
615
616<div id="testLine64">
617 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
618 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
619 path.addRect(18, 6, 30, 30, (SkPath::Direction) 0);
620</div>
621
622<div id="testLine65">
623 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
624 path.addRect(10, 0, 30, 30, (SkPath::Direction) 0);
625 path.addRect(24, 0, 36, 36, (SkPath::Direction) 0);
626 path.addRect(32, 6, 36, 41, (SkPath::Direction) 1);
627</div>
628
629<div id="testLine66">
630 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
631 path.addRect(0, 30, 20, 20, (SkPath::Direction) 0);
632 path.addRect(12, 20, 24, 30, (SkPath::Direction) 0);
633</div>
634
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000635<div id="testLine67">
636 path.addRect(0, 0, 60, 60, (SkPath::Direction) 0);
637 path.addRect(10, 40, 30, 30, (SkPath::Direction) 0);
638 path.addRect(24, 20, 36, 30, (SkPath::Direction) 0);
639 path.addRect(32, 0, 36, 41, (SkPath::Direction) 0);
640</div>
641
642<div id="testLine68a">
643 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
644 path.addRect(2, 2, 6, 6, (SkPath::Direction) 0);
645 path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
646</div>
647
648<div id="testLine68b">
649 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
650 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
651 path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
652</div>
653
654<div id="testLine68c">
655 path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
656 path.addRect(2, 2, 6, 6, (SkPath::Direction) 0);
657 path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
658</div>
659
660<div id="testLine68d">
661 path.addRect(0, 0, 8, 8, (SkPath::Direction) 1);
662 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
663 path.addRect(1, 2, 4, 2, (SkPath::Direction) 0);
664</div>
665
666<div id="testLine68e">
667 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
668 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
669 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
670 path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
671</div>
672
673<div id="testLine68f">
674 path.addRect(0, 0, 8, 8, (SkPath::Direction) 0);
675 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
676 path.addRect(2, 2, 6, 6, (SkPath::Direction) 1);
677 path.addRect(1, 2, 2, 2, (SkPath::Direction) 0);
678</div>
679
680<div id="testLine69">
681 path.addRect(0, 20, 20, 20, (SkPath::Direction) 0);
682 path.addRect(0, 20, 12, 30, (SkPath::Direction) 0);
683 path.addRect(12, 32, 21, 36, (SkPath::Direction) 0);
684</div>
685
686<div id="testLine70">
687 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
688 path.addRect(0, 24, 12, 12, (SkPath::Direction) 0);
689 path.addRect(12, 32, 21, 36, (SkPath::Direction) 1);
690</div>
691
692<div id="testLine71">
693 path.addRect(0, 0, 20, 20, (SkPath::Direction) 0);
694 path.addRect(12, 0, 24, 24, (SkPath::Direction) 0);
695 path.addRect(12, 32, 21, 36, (SkPath::Direction) 0);
696</div>
697
caryclark@google.com752b60e2012-03-22 21:11:17 +0000698</div>
699
700<script type="text/javascript">
701
702var testDivs = [
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000703 testLine71,
704 testLine70,
705 testLine69,
706 testLine68f,
707 testLine68e,
708 testLine68d,
709 testLine68c,
710 testLine68b,
711 testLine68a,
712 testLine67,
caryclark@google.com27c449a2012-07-27 18:26:38 +0000713 testLine66,
714 testLine65,
715 testLine64,
716 testLine63,
717 testLine62,
718 testLine61,
719 testLine60,
caryclark@google.comcc905052012-07-25 20:59:42 +0000720 testLine59,
721 testLine58,
caryclark@google.com18063442012-07-25 12:05:18 +0000722 testLine57,
723 testLine56,
caryclark@google.come21cb182012-07-23 21:26:31 +0000724 testLine55,
725 testLine54,
726 testLine53,
727 testLine52,
caryclark@google.com47580692012-07-23 12:14:49 +0000728 testLine51,
729 testLine50,
730 testLine49,
731 testLine48,
732 testLine47,
733 testLine46,
734 testLine45,
735 testLine44,
736 testLine43,
737 testLine42,
738 testLine41,
739 testLine40,
740 testLine39,
741 testLine38,
742 testLine37,
caryclark@google.com0e08a192012-07-13 21:07:52 +0000743 testLine36,
caryclark@google.com210acaf2012-07-12 21:05:13 +0000744 testLine35,
745 testLine34,
caryclark@google.com9764cc62012-07-12 19:29:45 +0000746 testLine33,
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000747 testLine32,
748 testLine31,
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000749 testLine30,
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000750 testLine29,
751 testLine28,
caryclark@google.com47580692012-07-23 12:14:49 +0000752 testLine24,
caryclark@google.comcc905052012-07-25 20:59:42 +0000753 testLine22,
caryclark@google.com47580692012-07-23 12:14:49 +0000754 testLine19,
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000755 testLine17,
caryclark@google.come21cb182012-07-23 21:26:31 +0000756 testLine13,
757 testLine12,
caryclark@google.com47580692012-07-23 12:14:49 +0000758 testLine9,
caryclark@google.comcc905052012-07-25 20:59:42 +0000759 testLine7b,
caryclark@google.com47580692012-07-23 12:14:49 +0000760 testLine7,
caryclark@google.com8dcf1142012-07-02 20:27:02 +0000761 testSimplifyQuadratic21,
762 testSimplifyQuadratic20,
763 testSimplifyQuadratic19,
caryclark@google.comb45a1b42012-05-18 20:50:33 +0000764 testSimplifyQuadratic18,
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000765 testSimplifyQuadratic17,
766 testSimplifyQuadratic16,
767 testSimplifyQuadratic15,
768 testSimplifyQuadratic14,
769 testSimplifyQuadratic13,
770 testSimplifyQuadratic12,
771 testSimplifyQuadratic11,
772 testSimplifyQuadratic10,
773 testSimplifyQuadratic9,
774 testSimplifyQuadratic8,
775 testSimplifyQuadratic7,
776 testSimplifyQuadratic6,
777 testSimplifyQuadratic5,
778 testSimplifyQuadratic4,
779 testSimplifyQuadratic3,
780 testSimplifyQuadratic2,
781 testSimplifyQuadratic1,
caryclark@google.com752b60e2012-03-22 21:11:17 +0000782];
783
784var scale, columns, rows, xStart, yStart;
785
786var ticks = 0.1;
787var at_x = 13 + 0.5;
788var at_y = 13 + 0.5;
789
790var tests = [];
caryclark@google.com0e08a192012-07-13 21:07:52 +0000791var testTitles = [];
caryclark@google.com752b60e2012-03-22 21:11:17 +0000792var testIndex = 0;
793
794var ctx;
795
caryclark@google.com0e08a192012-07-13 21:07:52 +0000796function parse(test, title) {
caryclark@google.com752b60e2012-03-22 21:11:17 +0000797 var contours = [];
798 var contourStrs = test.split("path.close();");
caryclark@google.comd88e0892012-03-27 13:23:51 +0000799 var pattern = /-?\d+\.*\d*/g;
caryclark@google.com752b60e2012-03-22 21:11:17 +0000800 for (var c in contourStrs) {
caryclark@google.comfb173422012-04-10 18:28:55 +0000801 var contour = contourStrs[c];
802 var verbStrs = contour.split("path");
803 var verbs = [];
804 for (var v in verbStrs) {
805 var verbStr = verbStrs[v];
806 var points = verbStr.match(pattern);
807 var pts = [];
808 for (var wd in points) {
809 var num = parseFloat(points[wd]);
810 if (isNaN(num)) continue;
811 pts.push(num);
812 }
813 if (pts.length > 0)
814 verbs.push(pts);
caryclark@google.com752b60e2012-03-22 21:11:17 +0000815 }
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000816 if (verbs.length > 0) {
817 var lastIndex = verbs.length - 1;
818 var lastVerb = verbs[lastIndex];
819 var lastLen = lastVerb.length;
820 if (verbs[0][0] != lastVerb[lastLen - 2] && verbs[0][1] != lastVerb[lastLen - 1]) {
821 var lastPts = [];
822 lastPts.push(verbs[0][0]);
823 lastPts.push(verbs[0][1]);
824 verbs.push(lastPts);
825 }
caryclark@google.comfb173422012-04-10 18:28:55 +0000826 contours.push(verbs);
caryclark@google.comfa0588f2012-04-26 21:01:06 +0000827 }
caryclark@google.com752b60e2012-03-22 21:11:17 +0000828 }
caryclark@google.com0e08a192012-07-13 21:07:52 +0000829 if (contours.length > 0) {
caryclark@google.comfb173422012-04-10 18:28:55 +0000830 tests.push(contours);
caryclark@google.com0e08a192012-07-13 21:07:52 +0000831 testTitles.push(title);
832 }
caryclark@google.com752b60e2012-03-22 21:11:17 +0000833}
834
caryclark@google.com0e08a192012-07-13 21:07:52 +0000835function parseRect(test, title) {
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000836 var contours = [];
837 var rectStrs = test.split("path.addRect");
838 var pattern = /-?\d+\.*\d*/g;
839 for (var r in rectStrs) {
840 var rect = rectStrs[r];
841 var sideStrs = rect.match(pattern);
842 var sides = [];
843 for (var wd in sideStrs) {
844 var num = parseFloat(sideStrs[wd]);
845 if (isNaN(num)) continue;
846 sides.push(num);
847 }
848 if (sides.length == 0)
849 continue;
850 var verbs = [];
851 var topLeft = [];
852 topLeft.push(sides[0]); topLeft.push(sides[1]);
853 var topRight = [];
854 topRight.push(sides[2]); topRight.push(sides[1]);
855 var botLeft = [];
856 botLeft.push(sides[0]); botLeft.push(sides[3]);
857 var botRight = [];
858 botRight.push(sides[2]); botRight.push(sides[3]);
859 verbs.push(topLeft);
860 if (sides[4] == 0) {
861 verbs.push(topRight);
862 verbs.push(botRight);
863 verbs.push(botLeft);
864 } else {
865 verbs.push(botLeft);
866 verbs.push(botRight);
867 verbs.push(topRight);
868 }
869 verbs.push(topLeft);
870 contours.push(verbs);
871 }
caryclark@google.com0e08a192012-07-13 21:07:52 +0000872 if (contours.length > 0) {
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000873 tests.push(contours);
caryclark@google.com0e08a192012-07-13 21:07:52 +0000874 testTitles.push(title);
875 }
caryclark@google.comfa4a6e92012-07-11 17:52:32 +0000876}
877
caryclark@google.com752b60e2012-03-22 21:11:17 +0000878function init(test) {
879 var canvas = document.getElementById('canvas');
880 if (!canvas.getContext) return;
caryclark@google.com534aa5b2012-08-02 20:08:21 +0000881 canvas.width = window.innerWidth - at_x;
882 canvas.height = window.innerHeight - at_y;
caryclark@google.com752b60e2012-03-22 21:11:17 +0000883 ctx = canvas.getContext('2d');
884 var xmin = Infinity;
885 var xmax = -Infinity;
886 var ymin = Infinity;
887 var ymax = -Infinity;
caryclark@google.comfb173422012-04-10 18:28:55 +0000888 for (var contours in test) {
889 var contour = test[contours];
890 for (var verbs in contour) {
891 var verb = contour[verbs];
892 var last = verb.length;
caryclark@google.comb45a1b42012-05-18 20:50:33 +0000893 for (var idx = 0; idx < last; idx += 2) {
894 xmin = Math.min(xmin, verb[idx]);
895 xmax = Math.max(xmax, verb[idx]);
896 ymin = Math.min(ymin, verb[idx + 1]);
897 ymax = Math.max(ymax, verb[idx + 1]);
898 }
caryclark@google.com752b60e2012-03-22 21:11:17 +0000899 }
900 }
901 var subscale = 1;
902 while ((xmax - xmin) * subscale < 0.1 && (ymax - ymin) * subscale < 0.1) {
903 subscale *= 10;
904 }
905 columns = Math.ceil(xmax) - Math.floor(xmin) + 1;
906 rows = Math.ceil(ymax) - Math.floor(ymin) + 1;
907 xStart = Math.floor(xmin);
908 yStart = Math.floor(ymin);
909 var hscale = ctx.canvas.width / columns / ticks;
910 var vscale = ctx.canvas.height / rows / ticks;
911 scale = Math.floor(Math.min(hscale, vscale)) * subscale;
912}
913
914function drawPoint(px, py, xoffset, yoffset, unit) {
caryclark@google.comd88e0892012-03-27 13:23:51 +0000915 var label = px.toFixed(3) + ", " + py.toFixed(3);
caryclark@google.com752b60e2012-03-22 21:11:17 +0000916 var _px = px * unit + xoffset;
917 var _py = py * unit + yoffset;
918 ctx.beginPath();
919 ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
920 ctx.closePath();
921 ctx.fill();
922 ctx.fillText(label, _px + 5, _py);
923}
924
caryclark@google.com0e08a192012-07-13 21:07:52 +0000925function draw(test, title, _at_x, _at_y, scale) {
926 ctx.fillStyle = "rgba(0,0,0, 0.1)";
927 ctx.font = "normal 50px Arial";
928 ctx.fillText(title, 50, 50);
929 ctx.font = "normal 10px Arial";
930
caryclark@google.com752b60e2012-03-22 21:11:17 +0000931 var unit = scale * ticks;
932 ctx.lineWidth = 1;
933 var i;
934 for (i = 0; i <= rows * ticks; ++i) {
935 ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
936 ctx.beginPath();
937 ctx.moveTo(_at_x + 0, _at_y + i * scale);
938 ctx.lineTo(_at_x + unit * columns, _at_y + i * scale);
939 ctx.stroke();
940 }
941 for (i = 0; i <= columns * ticks; ++i) {
942 ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black";
943 ctx.beginPath();
944 ctx.moveTo(_at_x + i * scale, _at_y + 0);
945 ctx.lineTo(_at_x + i * scale, _at_y + unit * rows);
946 ctx.stroke();
947 }
948
949 var xoffset = xStart * -unit + _at_x;
950 var yoffset = yStart * -unit + _at_y;
951
952 ctx.fillStyle = "rgb(40,80,60)"
953 for (i = 0; i <= columns; i += (1 / ticks))
954 {
955 num = (xoffset - _at_x) / -unit + i;
956 ctx.fillText(num.toFixed(0), i * unit + _at_y - 5, 10);
957 }
958 for (i = 0; i <= rows; i += (1 / ticks))
959 {
960 num = (yoffset - _at_x) / -unit + i;
961 ctx.fillText(num.toFixed(0), 0, i * unit + _at_y + 0);
962 }
963 ctx.strokeStyle = "red";
caryclark@google.comfb173422012-04-10 18:28:55 +0000964 var contours, verbs, pts;
caryclark@google.com8dcf1142012-07-02 20:27:02 +0000965 ctx.beginPath();
caryclark@google.comfb173422012-04-10 18:28:55 +0000966 for (contours in test) {
967 var contour = test[contours];
968 if (contours == 2) ctx.strokeStyle = "blue";
caryclark@google.comfb173422012-04-10 18:28:55 +0000969 var first = true;
970 for (verbs in contour) {
971 var verb = contour[verbs];
972 switch (verb.length) {
973 case 2:
974 if (first) {
975 ctx.moveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit);
976 first = false;
977 } else
978 ctx.lineTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit);
979 break;
980 case 4:
981 ctx.quadraticCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit,
982 xoffset + verb[2] * unit, yoffset + verb[3] * unit);
983 break;
984 case 6:
985 ctx.bezierCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit,
986 xoffset + verb[2] * unit, yoffset + verb[3] * unit,
987 xoffset + verb[4] * unit, yoffset + verb[5] * unit);
988 break;
989 }
caryclark@google.com752b60e2012-03-22 21:11:17 +0000990 }
caryclark@google.com8dcf1142012-07-02 20:27:02 +0000991 ctx.closePath();
caryclark@google.com752b60e2012-03-22 21:11:17 +0000992 }
caryclark@google.com8dcf1142012-07-02 20:27:02 +0000993 ctx.stroke();
994 ctx.fillStyle="rgba(192,192,255, 0.3)";
995 ctx.fill();
caryclark@google.com752b60e2012-03-22 21:11:17 +0000996
997 ctx.fillStyle="blue";
caryclark@google.comfb173422012-04-10 18:28:55 +0000998 for (contours in test) {
999 var contour = test[contours];
1000 for (verbs in contour) {
1001 var verb = contour[verbs];
1002 for (i = 0; i < verb.length; i += 2) {
1003 x = verb[i];
1004 y = verb[i + 1];
1005 drawPoint(x, y, xoffset, yoffset, unit);
1006 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00001007 }
1008 }
1009}
1010
1011var mouseX = Infinity, mouseY;
1012
1013function calcXY() {
1014 var e = window.event;
1015 var tgt = e.target || e.srcElement;
1016 var left = tgt.offsetLeft;
1017 var top = tgt.offsetTop;
1018 var unit = scale * ticks;
1019 mouseX = (e.clientX - left - Math.ceil(at_x) + 1) / unit + xStart;
1020 mouseY = (e.clientY - top - Math.ceil(at_y)) / unit + yStart;
1021}
1022
1023function handleMouseOver() {
1024 calcXY();
1025 var num = mouseX.toFixed(3) + ", " + mouseY.toFixed(3);
1026 ctx.beginPath();
1027 ctx.rect(300,100,200,10);
1028 ctx.fillStyle="white";
1029 ctx.fill();
1030 ctx.fillStyle="black";
1031 ctx.fillText(num, 300, 108);
1032}
1033
1034function handleMouseClick() {
1035 calcXY();
1036// drawInset();
1037}
1038
1039function drawTop() {
1040 init(tests[testIndex]);
1041 redraw();
1042}
1043
1044function redraw() {
1045 ctx.beginPath();
1046 ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height);
1047 ctx.fillStyle="white";
1048 ctx.fill();
caryclark@google.com0e08a192012-07-13 21:07:52 +00001049 draw(tests[testIndex], testTitles[testIndex], at_x, at_y, scale);
caryclark@google.com752b60e2012-03-22 21:11:17 +00001050// if (insetScale != scale && mouseX != Infinity)
1051// drawInset();
1052}
1053
1054function doKeyPress(evt) {
1055 var char = String.fromCharCode(evt.charCode);
1056 switch (char) {
1057 case 'N':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00001058 testIndex += 9;
caryclark@google.com752b60e2012-03-22 21:11:17 +00001059 case 'n':
1060 if (++testIndex >= tests.length)
1061 testIndex = 0;
caryclark@google.comfa0588f2012-04-26 21:01:06 +00001062 mouseX = Infinity;
1063 drawTop();
1064 break;
1065 case 'P':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00001066 testIndex -= 9;
caryclark@google.comfa0588f2012-04-26 21:01:06 +00001067 case 'p':
1068 if (--testIndex < 0)
1069 testIndex = tests.length - 1;
caryclark@google.com752b60e2012-03-22 21:11:17 +00001070 mouseX = Infinity;
1071 drawTop();
1072 break;
1073 case 'T':
1074 case 't':
caryclark@google.com752b60e2012-03-22 21:11:17 +00001075 break;
1076 case '-':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00001077 drawTop();
caryclark@google.com752b60e2012-03-22 21:11:17 +00001078 break;
1079 case '=':
1080 case '+':
caryclark@google.com534aa5b2012-08-02 20:08:21 +00001081 drawTop();
caryclark@google.com752b60e2012-03-22 21:11:17 +00001082 break;
1083 }
1084}
1085
caryclark@google.com534aa5b2012-08-02 20:08:21 +00001086function doResize(evt) {
1087 drawTop();
1088}
1089
caryclark@google.com752b60e2012-03-22 21:11:17 +00001090function start() {
1091 for (i = 0; i < testDivs.length; ++i) {
caryclark@google.com0e08a192012-07-13 21:07:52 +00001092 var title = testDivs[i].id.toString();
caryclark@google.com752b60e2012-03-22 21:11:17 +00001093 var str = testDivs[i].firstChild.data;
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00001094 if (str.split("addRect").length > 1) {
caryclark@google.com0e08a192012-07-13 21:07:52 +00001095 parseRect(str, title);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00001096 } else {
caryclark@google.com0e08a192012-07-13 21:07:52 +00001097 parse(str, title);
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00001098 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00001099 }
1100 drawTop();
1101 window.addEventListener('keypress', doKeyPress, true);
caryclark@google.com534aa5b2012-08-02 20:08:21 +00001102 window.onresize = function() {
1103 drawTop();
1104 }
caryclark@google.com752b60e2012-03-22 21:11:17 +00001105}
1106
1107</script>
1108</head>
1109
1110<body onLoad="start();">
caryclark@google.comfa4a6e92012-07-11 17:52:32 +00001111<canvas id="canvas" width="750" height="500"
caryclark@google.com752b60e2012-03-22 21:11:17 +00001112 onmousemove="handleMouseOver()"
1113 onclick="handleMouseClick()"
1114 ></canvas >
1115</body>
1116</html>