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