| <!-- path visualizer --> |
| <html> |
| <head> |
| <div style="height:0"> |
| |
| <div id="testSimplifyQuadratic1"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 1, 1); |
| path.close(); |
| path.moveTo(1, 0); |
| path.quadTo(0, 0, 0, 1); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic2"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(20, 0, 20, 20); |
| path.close(); |
| path.moveTo(20, 0); |
| path.quadTo(0, 0, 0, 20); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic3"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(20, 0, 20, 20); |
| path.close(); |
| path.moveTo(0, 20); |
| path.quadTo(0, 0, 20, 0); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic4"> |
| SkPath path, out; |
| path.moveTo(0, 20); |
| path.quadTo(20, 0, 40, 20); |
| path.close(); |
| path.moveTo(40, 10); |
| path.quadTo(20, 30, 0, 10); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic5"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(0, 0); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(0, 0, 0, 1); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic6"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(1, 0); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic7"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 0, 2); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic8"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(0, 0); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 0, 2); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic9"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(1, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 2, 2); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic10"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(0, 0); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 1); |
| path.quadTo(1, 1, 1, 2); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic11"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(0, 2); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(2, 1); |
| path.quadTo(2, 2, 3, 3); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic12"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.lineTo(0, 2); |
| path.lineTo(0, 0); |
| path.close(); |
| path.moveTo(3, 0); |
| path.quadTo(1, 1, 0, 2); |
| path.lineTo(3, 0); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic13"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 1, 0); |
| path.lineTo(1, 1); |
| path.lineTo(0, 0); |
| path.close(); |
| path.moveTo(0, 0); |
| path.quadTo(3, 0, 1, 1); |
| path.lineTo(0, 0); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic14"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(1, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(0, 1, 2, 1); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic15"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 1, 3); |
| path.lineTo(3, 3); |
| path.close(); |
| path.moveTo(0, 1); |
| path.lineTo(1, 1); |
| path.quadTo(0, 3, 3, 3); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic16"> |
| SkPath path, out; |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic17"> |
| SkPath path, out; |
| path.moveTo(8, 8); |
| path.quadTo(10, 10, 8, -10); |
| path.close(); |
| path.moveTo(8, 8); |
| path.quadTo(12, 12, 14, 4); |
| path.close(); |
| path.moveTo(8, 8); |
| path.quadTo(9, 9, 10, 8); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| } |
| </div> |
| |
| <div id="testSimplifyQuadratic18"> |
| SkPath path, out; |
| path.moveTo(8.0000000000000071, 8.0000000000000071); |
| path.quadTo(8.7289570079366854, 8.7289570079366889, 9.3914917259458743, 9.0593802763083691); |
| path.close(); |
| path.moveTo(8.0000000000000142, 8.0000000000000142); |
| path.quadTo(8.1250000000000107, 8.1250000000000071, 8.2500000000000071, 8.2187500000000053); |
| path.close(); |
| testSimplify(path, true, out, bitmap); |
| drawAsciiPaths(path, out, true); |
| </div> |
| |
| <div id="testSimplifyQuadratic19"> |
| SkPath path, simple; |
| path.moveTo(0,4); |
| path.lineTo(6,4); |
| path.lineTo(3,1); |
| path.close(); |
| path.moveTo(2,3); |
| path.lineTo(3,2); |
| path.lineTo(4,3); |
| path.close(); |
| testSimplifyx(path); |
| </div> |
| |
| <div id="testSimplifyQuadratic20"> |
| SkPath path, simple; |
| path.moveTo(0,4); |
| path.lineTo(6,4); |
| path.lineTo(3,1); |
| path.close(); |
| path.moveTo(2,3); |
| path.lineTo(4,3); |
| path.lineTo(3,2); |
| path.close(); |
| testSimplifyx(path); |
| </div> |
| |
| <div id="testSimplifyQuadratic21"> |
| SkPath path, simple; |
| path.moveTo(0,4); |
| path.lineTo(8,4); |
| path.lineTo(4,0); |
| path.close(); |
| path.moveTo(2,2); |
| path.lineTo(3,3); |
| path.lineTo(4,2); |
| path.close(); |
| testSimplifyx(path); |
| </div> |
| |
| <div id="testLine6"> |
| SkPath path, simple; |
| path.moveTo(0,0); |
| path.lineTo(4,0); |
| path.lineTo(2,2); |
| path.close(); |
| path.moveTo(2,0); |
| path.lineTo(6,0); |
| path.lineTo(4,2); |
| path.close(); |
| testSimplifyx(path); |
| </div> |
| |
| <div id="testLine7"> |
| SkPath path, simple; |
| path.moveTo(0,0); |
| path.lineTo(4,0); |
| path.lineTo(2,2); |
| path.close(); |
| path.moveTo(6,0); |
| path.lineTo(2,0); |
| path.lineTo(4,2); |
| path.close(); |
| testSimplifyx(path); |
| </div> |
| |
| <div id="testLine7b"> |
| path.moveTo(0,0); |
| path.lineTo(4,0); |
| path.close(); |
| path.moveTo(6,0); |
| path.lineTo(2,0); |
| path.lineTo(4,2); |
| path.close(); |
| </div> |
| |
| <div id="testLine9"> |
| SkPath path, simple; |
| path.moveTo(0,4); |
| path.lineTo(4,4); |
| path.lineTo(2,2); |
| path.close(); |
| path.moveTo(6,4); |
| path.lineTo(2,4); |
| path.lineTo(4,2); |
| path.close(); |
| testSimplifyx(path); |
| </div> |
| |
| <div id="testLine12"> |
| path.moveTo(0,4); |
| path.lineTo(6,4); |
| path.lineTo(3,1); |
| path.close(); |
| path.moveTo(2,3); |
| path.lineTo(3,2); |
| path.lineTo(4,3); |
| path.close(); |
| </div> |
| |
| <div id="testLine13"> |
| path.moveTo(6,4); |
| path.lineTo(0,4); |
| path.lineTo(3,1); |
| path.close(); |
| path.moveTo(3,2); |
| path.lineTo(2,3); |
| path.lineTo(4,3); |
| path.close(); |
| </div> |
| |
| <div id="testLine17"> |
| SkPath path, simple; |
| path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); |
| path.addRect(4, 12, 13, 13, (SkPath::Direction) 0); |
| testSimplifyx(path); |
| </div> |
| |
| <div id="testLine19"> |
| SkPath path, simple; |
| path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); |
| path.addRect(12, 16, 21, 21, (SkPath::Direction) 0); |
| testSimplifyx(path); |
| </div> |
| |
| <div id="testLine22"> |
| path.addRect(0, 12, 12, 12, (SkPath::Direction) 0); |
| path.addRect(4, 12, 13, 13, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine24"> |
| path.addRect(0, 18, 12, 12, (SkPath::Direction) 0); |
| path.addRect(4, 12, 13, 13, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine28"> |
| SkPath path, simple; |
| path.addRect(0, 6, 12, 12, (SkPath::Direction) 0); |
| path.addRect(0, 0, 9, 9, (SkPath::Direction) 0); |
| testSimplifyx(path); |
| </div> |
| |
| <div id="testLine29"> |
| SkPath path, simple; |
| path.addRect(0, 18, 12, 12, (SkPath::Direction) 0); |
| path.addRect(12, 12, 21, 21, (SkPath::Direction) 0); |
| testSimplifyx(path); |
| </div> |
| |
| <div id="testLine30"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); |
| path.addRect(4, 4, 13, 13, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine31"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); |
| path.addRect(0, 4, 9, 9, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine32"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); |
| path.addRect(4, 12, 13, 13, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine33"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); |
| path.addRect(4, 16, 13, 13, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine34"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 6, 12, 12, (SkPath::Direction) 0); |
| path.addRect(4, 12, 13, 13, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine35"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(6, 0, 18, 18, (SkPath::Direction) 0); |
| path.addRect(4, 16, 13, 13, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine36"> |
| path.addRect(0, 10, 20, 20, (SkPath::Direction) 0); |
| path.addRect(6, 12, 18, 18, (SkPath::Direction) 0); |
| path.addRect(4, 16, 13, 13, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine37"> |
| path.addRect(0, 20, 20, 20, (SkPath::Direction) 0); |
| path.addRect(18, 24, 30, 30, (SkPath::Direction) 0); |
| path.addRect(0, 0, 9, 9, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine38"> |
| path.addRect(10, 0, 30, 30, (SkPath::Direction) 0); |
| path.addRect(6, 12, 18, 18, (SkPath::Direction) 0); |
| path.addRect(12, 12, 21, 21, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine39"> |
| path.addRect(10, 0, 30, 30, (SkPath::Direction) 0); |
| path.addRect(12, 6, 24, 24, (SkPath::Direction) 0); |
| path.addRect(12, 4, 21, 21, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine40"> |
| path.addRect(10, 0, 30, 30, (SkPath::Direction) 0); |
| path.addRect(12, 18, 24, 24, (SkPath::Direction) 0); |
| path.addRect(4, 16, 13, 13, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine41"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(18, 24, 30, 30, (SkPath::Direction) 0); |
| path.addRect(12, 0, 21, 21, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine42"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); |
| path.addRect(8, 16, 17, 17, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine43"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(6, 24, 18, 18, (SkPath::Direction) 0); |
| path.addRect(0, 32, 9, 36, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine44"> |
| path.addRect(10, 40, 30, 30, (SkPath::Direction) 0); |
| path.addRect(18, 0, 30, 30, (SkPath::Direction) 0); |
| path.addRect(18, 32, 27, 36, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine45"> |
| path.addRect(10, 0, 30, 30, (SkPath::Direction) 0); |
| path.addRect(18, 0, 30, 30, (SkPath::Direction) 0); |
| path.addRect(24, 32, 33, 36, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine46"> |
| path.addRect(10, 40, 30, 30, (SkPath::Direction) 0); |
| path.addRect(24, 0, 36, 36, (SkPath::Direction) 0); |
| path.addRect(24, 32, 33, 36, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine47"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); |
| path.addRect(0, 0, 9, 9, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine48"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 6, 12, 12, (SkPath::Direction) 0); |
| path.addRect(0, 0, 9, 9, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine49"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); |
| path.addRect(0, 0, 9, 9, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine50"> |
| path.addRect(10, 30, 30, 30, (SkPath::Direction) 0); |
| path.addRect(24, 20, 36, 30, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine51"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 12, 12, 12, (SkPath::Direction) 0); |
| path.addRect(4, 12, 13, 13, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine52"> |
| path.addRect(0, 30, 20, 20, (SkPath::Direction) 0); |
| path.addRect(6, 20, 18, 30, (SkPath::Direction) 0); |
| path.addRect(32, 0, 36, 41, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine53"> |
| path.addRect(10, 30, 30, 30, (SkPath::Direction) 0); |
| path.addRect(12, 20, 24, 30, (SkPath::Direction) 0); |
| path.addRect(12, 32, 21, 36, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine54"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(6, 0, 18, 18, (SkPath::Direction) 0); |
| path.addRect(8, 4, 17, 17, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine55"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(6, 6, 18, 18, (SkPath::Direction) 0); |
| path.addRect(4, 4, 13, 13, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine56"> |
| path.addRect(0, 20, 20, 20, (SkPath::Direction) 0); |
| path.addRect(18, 20, 30, 30, (SkPath::Direction) 0); |
| path.addRect(12, 0, 21, 21, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine57"> |
| path.addRect(20, 0, 40, 40, (SkPath::Direction) 0); |
| path.addRect(20, 0, 30, 40, (SkPath::Direction) 0); |
| path.addRect(12, 0, 21, 21, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine58"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 0, 12, 12, (SkPath::Direction) 1); |
| path.addRect(0, 12, 9, 9, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine59"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(6, 6, 18, 18, (SkPath::Direction) 1); |
| path.addRect(4, 4, 13, 13, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine60"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(6, 12, 18, 18, (SkPath::Direction) 1); |
| path.addRect(4, 12, 13, 13, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine61"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(12, 0, 24, 24, (SkPath::Direction) 1); |
| path.addRect(12, 0, 21, 21, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine62"> |
| path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 12, 12, 12, (SkPath::Direction) 0); |
| path.addRect(4, 12, 13, 13, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine63"> |
| path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); |
| path.addRect(0, 10, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 6, 12, 12, (SkPath::Direction) 1); |
| path.addRect(0, 32, 9, 36, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine64"> |
| path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); |
| path.addRect(10, 40, 30, 30, (SkPath::Direction) 0); |
| path.addRect(18, 6, 30, 30, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine65"> |
| path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); |
| path.addRect(10, 0, 30, 30, (SkPath::Direction) 0); |
| path.addRect(24, 0, 36, 36, (SkPath::Direction) 0); |
| path.addRect(32, 6, 36, 41, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine66"> |
| path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); |
| path.addRect(0, 30, 20, 20, (SkPath::Direction) 0); |
| path.addRect(12, 20, 24, 30, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine67"> |
| path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); |
| path.addRect(10, 40, 30, 30, (SkPath::Direction) 0); |
| path.addRect(24, 20, 36, 30, (SkPath::Direction) 0); |
| path.addRect(32, 0, 36, 41, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine68a"> |
| path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); |
| path.addRect(2, 2, 6, 6, (SkPath::Direction) 0); |
| path.addRect(1, 2, 4, 2, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine68b"> |
| path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); |
| path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); |
| path.addRect(1, 2, 4, 2, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine68c"> |
| path.addRect(0, 0, 8, 8, (SkPath::Direction) 1); |
| path.addRect(2, 2, 6, 6, (SkPath::Direction) 0); |
| path.addRect(1, 2, 4, 2, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine68d"> |
| path.addRect(0, 0, 8, 8, (SkPath::Direction) 1); |
| path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); |
| path.addRect(1, 2, 4, 2, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine68e"> |
| path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); |
| path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); |
| path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); |
| path.addRect(1, 2, 2, 2, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine68f"> |
| path.addRect(0, 0, 8, 8, (SkPath::Direction) 0); |
| path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); |
| path.addRect(2, 2, 6, 6, (SkPath::Direction) 1); |
| path.addRect(1, 2, 2, 2, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine69"> |
| path.addRect(0, 20, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 20, 12, 30, (SkPath::Direction) 0); |
| path.addRect(12, 32, 21, 36, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine70"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 24, 12, 12, (SkPath::Direction) 0); |
| path.addRect(12, 32, 21, 36, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine71"> |
| path.addRect(0, 0, 20, 20, (SkPath::Direction) 0); |
| path.addRect(12, 0, 24, 24, (SkPath::Direction) 0); |
| path.addRect(12, 32, 21, 36, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine72"> |
| path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); |
| path.addRect(10, 40, 30, 30, (SkPath::Direction) 0); |
| path.addRect(6, 20, 18, 30, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine73"> |
| path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); |
| path.addRect(0, 40, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 20, 12, 30, (SkPath::Direction) 0); |
| path.addRect(0, 0, 9, 9, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine74"> |
| path.addRect(20, 30, 40, 40, (SkPath::Direction) 0); |
| path.addRect(24, 20, 36, 30, (SkPath::Direction) 1); |
| path.addRect(32, 24, 36, 41, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine75"> |
| path.addRect(0, 0, 60, 60, (SkPath::Direction) 0); |
| path.addRect(10, 0, 30, 30, (SkPath::Direction) 1); |
| path.addRect(18, 0, 30, 30, (SkPath::Direction) 1); |
| path.addRect(12, 0, 21, 21, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine76"> |
| path.addRect(36, 0, 66, 60, (SkPath::Direction) 0); |
| path.addRect(10, 20, 40, 30, (SkPath::Direction) 0); |
| path.addRect(24, 20, 36, 30, (SkPath::Direction) 1); |
| path.addRect(32, 6, 36, 41, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine77"> |
| path.addRect(20, 0, 40, 40, (SkPath::Direction) 0); |
| path.addRect(24, 6, 36, 36, (SkPath::Direction) 1); |
| path.addRect(24, 32, 33, 36, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine78"> |
| path.addRect(0, 0, 30, 60, (SkPath::Direction) 0); |
| path.addRect(10, 20, 30, 30, (SkPath::Direction) 1); |
| path.addRect(18, 20, 30, 30, (SkPath::Direction) 1); |
| path.addRect(32, 0, 36, 41, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine79"> |
| path.addRect(0, 36, 60, 30, (SkPath::Direction) 0); |
| path.addRect(10, 30, 40, 30, (SkPath::Direction) 0); |
| path.addRect(0, 20, 12, 30, (SkPath::Direction) 1); |
| path.addRect(0, 32, 9, 36, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testDegenerate1"> |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.lineTo(2, 0); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.lineTo(2, 0); |
| path.close(); |
| </div> |
| |
| <div id="testDegenerate2"> |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.lineTo(0, 0); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.lineTo(0, 1); |
| path.close(); |
| </div> |
| |
| <div id="testDegenerate3"> |
| path.moveTo(0, 0); |
| path.lineTo(2, 0); |
| path.lineTo(1, 0); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.lineTo(3, 0); |
| path.close(); |
| </div> |
| |
| <div id="testDegenerate4"> |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.lineTo(1, 3); |
| path.close(); |
| path.moveTo(1, 0); |
| path.lineTo(1, 1); |
| path.lineTo(1, 2); |
| path.close(); |
| </div> |
| |
| <div id="testNondegenerate1"> |
| path.moveTo(0, 0); |
| path.lineTo(3, 0); |
| path.lineTo(1, 3); |
| path.close(); |
| path.moveTo(1, 1); |
| path.lineTo(2, 1); |
| path.lineTo(1, 2); |
| path.close(); |
| </div> |
| |
| <div id="testNondegenerate2"> |
| path.moveTo(1, 0); |
| path.lineTo(0, 1); |
| path.lineTo(1, 1); |
| path.close(); |
| path.moveTo(0, 2); |
| path.lineTo(0, 3); |
| path.lineTo(1, 2); |
| path.close(); |
| </div> |
| |
| <div id="testNondegenerate3"> |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.lineTo(2, 1); |
| path.close(); |
| path.moveTo(0, 1); |
| path.lineTo(1, 1); |
| path.lineTo(0, 2); |
| path.close(); |
| </div> |
| |
| <div id="testNondegenerate4"> |
| path.moveTo(1, 0); |
| path.lineTo(0, 1); |
| path.lineTo(1, 2); |
| path.close(); |
| path.moveTo(0, 2); |
| path.lineTo(0, 3); |
| path.lineTo(1, 3); |
| path.close(); |
| </div> |
| |
| <div id="testQuadralateral5"> |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.lineTo(1, 0); |
| path.lineTo(1, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(2, 2); |
| path.lineTo(3, 2); |
| path.lineTo(3, 3); |
| path.close(); |
| </div> |
| |
| <div id="testQuadralateral6"> |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.lineTo(1, 0); |
| path.lineTo(1, 1); |
| path.close(); |
| path.moveTo(1, 0); |
| path.lineTo(2, 0); |
| path.lineTo(0, 2); |
| path.lineTo(2, 2); |
| path.close(); |
| </div> |
| |
| <div id="testFauxQuadralateral6"> |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.lineTo(1, 1); |
| path.close(); |
| path.moveTo(1, 0); |
| path.lineTo(2, 0); |
| path.lineTo(1.333, 0.667); |
| path.close(); |
| path.moveTo(1.333, 0.667); |
| path.lineTo(0, 2); |
| path.lineTo(2, 2); |
| path.close(); |
| </div> |
| |
| <div id="testFauxQuadralateral6a"> |
| path.moveTo(0, 0); |
| path.lineTo(3, 0); |
| path.lineTo(3, 3); |
| path.close(); |
| path.moveTo(3, 0); |
| path.lineTo(6, 0); |
| path.lineTo(4, 2); |
| path.close(); |
| path.moveTo(4, 2); |
| path.lineTo(0, 6); |
| path.lineTo(6, 6); |
| path.close(); |
| </div> |
| |
| <div id="testFauxQuadralateral6b"> |
| path.moveTo(0, 0); |
| path.lineTo(3, 0); |
| path.lineTo(3, 3); |
| path.close(); |
| path.moveTo(3, 0); |
| path.lineTo(6, 0); |
| path.lineTo(4, 2); |
| path.close(); |
| path.moveTo(4, 2); |
| path.lineTo(6, 6); |
| path.lineTo(0, 6); |
| path.close(); |
| </div> |
| |
| <div id="testFauxQuadralateral6c"> |
| path.moveTo(0, 0); |
| path.lineTo(3, 3); |
| path.lineTo(3, 0); |
| path.close(); |
| path.moveTo(3, 0); |
| path.lineTo(6, 0); |
| path.lineTo(4, 2); |
| path.close(); |
| path.moveTo(4, 2); |
| path.lineTo(0, 6); |
| path.lineTo(6, 6); |
| path.close(); |
| </div> |
| |
| <div id="testFauxQuadralateral6d"> |
| path.moveTo(0, 0); |
| path.lineTo(3, 3); |
| path.lineTo(3, 0); |
| path.close(); |
| path.moveTo(3, 0); |
| path.lineTo(6, 0); |
| path.lineTo(4, 2); |
| path.close(); |
| path.moveTo(4, 2); |
| path.lineTo(6, 6); |
| path.lineTo(0, 6); |
| </div> |
| |
| <div id="testQuadralateral6a"> |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.lineTo(3, 0); |
| path.lineTo(3, 3); |
| path.close(); |
| path.moveTo(3, 0); |
| path.lineTo(6, 0); |
| path.lineTo(0, 6); |
| path.lineTo(6, 6); |
| </div> |
| |
| <div id="testQuadralateral7"> |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.lineTo(1, 0); |
| path.lineTo(2, 1); |
| path.close(); |
| path.moveTo(1, 0); |
| path.lineTo(1, 1); |
| path.lineTo(2, 2); |
| path.lineTo(1, 3); |
| path.close(); |
| </div> |
| |
| <div id="testQuadralateral8"> |
| path.moveTo(0, 0); |
| path.lineTo(3, 1); |
| path.lineTo(1, 3); |
| path.lineTo(3, 3); |
| path.close(); |
| path.moveTo(2, 1); |
| path.lineTo(0, 2); |
| path.lineTo(3, 2); |
| path.lineTo(2, 3); |
| path.close(); |
| </div> |
| |
| <div id="testQuadralateral9"> |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.lineTo(1, 2); |
| path.lineTo(2, 2); |
| path.close(); |
| path.moveTo(1, 1); |
| path.lineTo(2, 1); |
| path.lineTo(1, 3); |
| path.lineTo(2, 3); |
| path.close(); |
| </div> |
| |
| <div id="testLine1x"> |
| path.setFillType(SkPath::kEvenOdd_FillType); |
| path.addRect(0, 0, 12, 12, (SkPath::Direction) 0); |
| path.addRect(4, 0, 13, 13, (SkPath::Direction) 0); |
| </div> |
| |
| <div id="testLine2x"> |
| path.setFillType(SkPath::kEvenOdd_FillType); |
| path.addRect(0, 20, 20, 20, (SkPath::Direction) 0); |
| path.addRect(0, 20, 12, 30, (SkPath::Direction) 0); |
| path.addRect(12, 0, 21, 21, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine3x"> |
| path.setFillType(SkPath::kEvenOdd_FillType); |
| path.addRect(10, 30, 30, 30, (SkPath::Direction) 0); |
| path.addRect(18, 20, 30, 30, (SkPath::Direction) 1); |
| path.addRect(0, 32, 9, 36, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testLine4x"> |
| path.setFillType(SkPath::kEvenOdd_FillType); |
| path.addRect(10, 30, 30, 30, (SkPath::Direction) 0); |
| path.addRect(24, 20, 36, 30, (SkPath::Direction) 1); |
| path.addRect(0, 32, 9, 36, (SkPath::Direction) 1); |
| </div> |
| |
| <div id="testQuadratic1"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(1, 0); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic2"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(3, 0); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic3"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 1, 0); |
| path.lineTo(0, 2); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic4x"> |
| path.setFillType(SkPath::kEvenOdd_FillType); |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 1, 0); |
| path.lineTo(0, 2); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 0, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic5"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.quadTo(0, 1, 0, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic6"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 1, 0); |
| path.lineTo(2, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(2, 0, 0, 1); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic7"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 1, 0); |
| path.lineTo(3, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(3, 0, 1, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic8"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 1, 0); |
| path.lineTo(0, 2); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.quadTo(0, 1, 1, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic9"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 1, 0); |
| path.lineTo(3, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.quadTo(1, 2, 3, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic9a"> |
| path.moveTo(1.08000004, 0.720000029); |
| path.lineTo(0, 0); |
| path.lineTo(1, 0); |
| path.lineTo(3, 1); |
| path.lineTo(1.01568651, 0.338562161); |
| path.quadTo(1.03542483, 0.541699469, 1.08000004, 0.720000029); |
| path.close(); |
| path.moveTo(1.08000004, 0.720000029); |
| path.lineTo(3, 2); |
| path.quadTo(1.39999998, 2, 1.08000004, 0.720000029); |
| path.close(); |
| |
| </div> |
| |
| <div id="testQuadratic10a"> |
| path.moveTo(15.5, 15.5); |
| path.lineTo(46.5, 15.5); |
| path.quadTo(0, 31, 0, 46.5); |
| path.lineTo(15.5, 15.5); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic10b"> |
| path.moveTo(5.16666698, 36.1666641); |
| path.lineTo(15.5, 15.5); |
| path.lineTo(46.5, 15.5); |
| path.quadTo(15.5, 25.8333321, 5.16666698, 36.1666641); |
| path.close(); |
| path.moveTo(5.16666698, 36.1666641); |
| path.lineTo(0, 46.5); |
| path.quadTo(0, 41.3333359, 5.16666698, 36.1666641); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic11a"> |
| path.moveTo(0, 0); |
| path.lineTo(15.5, 31); |
| path.lineTo(0, 0); |
| path.close(); |
| path.moveTo(0, 15.5); |
| path.lineTo(15.5, 15.5); |
| path.quadTo(15.5, 15.5, 46.5, 31); |
| path.lineTo(0, 15.5); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic11b"> |
| path.moveTo(9.30000019, 18.6000004); |
| path.lineTo(0, 15.5); |
| path.lineTo(7.75, 15.5); |
| path.lineTo(15.5, 15.5); |
| path.lineTo(46.5, 31); |
| path.lineTo(9.30000019, 18.6000004); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic12"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 0, 0); |
| path.lineTo(1, 3); |
| path.close(); |
| path.moveTo(1, 0); |
| path.lineTo(0, 1); |
| path.quadTo(1, 1, 0, 3); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic13a"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 15.5, 0); |
| path.lineTo(15.5, 31); |
| path.lineTo(0, 0); |
| path.close(); |
| path.moveTo(0, 0); |
| path.quadTo(15.5, 46.5, 46.5, 46.5); |
| path.lineTo(0, 0); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic13b"> |
| path.moveTo(14.8800001, 29.7600002); |
| path.quadTo(6.20000029, 18.6000004, 0, 0); |
| path.lineTo(14.8800001, 29.7600002); |
| path.close(); |
| path.moveTo(15.5, 30.5437222); |
| path.lineTo(15.5, 31); |
| path.lineTo(14.8800001, 29.7600002); |
| path.quadTo(15.1884346, 30.156559, 15.5, 30.5437222); |
| path.close(); |
| path.moveTo(15.5, 15.5); |
| path.lineTo(0, 0); |
| path.lineTo(15.5, 0); |
| path.lineTo(15.5, 15.5); |
| path.close(); |
| path.moveTo(15.5, 30.5437222); |
| path.lineTo(15.5, 15.5); |
| path.lineTo(46.5, 46.5); |
| path.quadTo(28.34062, 46.5, 15.5, 30.5437222); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic14"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 1, 0); |
| path.lineTo(3, 2); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.quadTo(3, 2, 3, 3); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic15"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 1, 0); |
| path.lineTo(1, 3); |
| path.close(); |
| path.moveTo(1, 0); |
| path.lineTo(0, 1); |
| path.quadTo(1, 1, 0, 3); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic16a"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 31, 0); |
| path.lineTo(46.5, 31); |
| path.lineTo(0, 0); |
| path.close(); |
| path.moveTo(46.5, 15.5); |
| path.lineTo(0, 31); |
| path.quadTo(0, 31, 15.5, 31); |
| path.lineTo(46.5, 15.5); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic16b"> |
| path.moveTo(31, 20.6666679); |
| path.lineTo(0, 0); |
| path.lineTo(31, 0); |
| path.lineTo(39.8571434, 17.7142868); |
| path.lineTo(31, 20.6666679); |
| path.close(); |
| path.moveTo(33.214283, 22.1428585); |
| path.lineTo(15.5, 31); |
| path.lineTo(0, 31); |
| path.lineTo(31, 20.6666679); |
| path.lineTo(33.214283, 22.1428585); |
| path.close(); |
| path.moveTo(40.2999992, 18.6000004); |
| path.lineTo(46.5, 31); |
| path.lineTo(33.214283, 22.1428585); |
| path.lineTo(40.2999992, 18.6000004); |
| path.close(); |
| path.moveTo(39.8571434, 17.7142868); |
| path.lineTo(46.5, 15.5); |
| path.lineTo(40.2999992, 18.6000004); |
| path.lineTo(39.8571434, 17.7142868); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic17x"> |
| path.setFillType(SkPath::kEvenOdd_FillType); |
| path.moveTo(0, 0); |
| path.quadTo(0, 0, 3, 1); |
| path.lineTo(0, 2); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.quadTo(3, 1, 0, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic18"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 1, 1); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic19"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(2, 0, 0, 1); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic20"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic21"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 0, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic22"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(0, 1, 2, 1); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic23"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(0, 2, 1, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic24"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.quadTo(2, 0, 0, 1); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic25"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 1, 1); |
| path.lineTo(1, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(2, 1, 0, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic26"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 1, 1); |
| path.lineTo(0, 2); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic27"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 1, 1); |
| path.lineTo(2, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(2, 1, 0, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic28"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 2); |
| path.quadTo(1, 2, 0, 3); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic29"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 2, 1); |
| path.lineTo(0, 2); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(1, 0, 0, 1); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic30"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 1, 2); |
| path.lineTo(1, 2); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.quadTo(0, 1, 1, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic31"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 1, 2); |
| path.lineTo(1, 2); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(1, 0); |
| path.quadTo(0, 1, 1, 3); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic32"> |
| path.moveTo(0, 0); |
| path.quadTo(1, 0, 2, 3); |
| path.lineTo(2, 3); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(0, 0); |
| path.quadTo(3, 1, 0, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic33"> |
| path.moveTo(0, 0); |
| path.quadTo(2, 0, 0, 1); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(1, 1); |
| path.quadTo(2, 1, 2, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic34"> |
| path.moveTo(0, 0); |
| path.quadTo(2, 0, 0, 1); |
| path.lineTo(0, 1); |
| path.close(); |
| path.moveTo(1, 0); |
| path.lineTo(1, 1); |
| path.quadTo(2, 1, 1, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic35"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 1, 1, 1); |
| path.lineTo(1, 3); |
| path.close(); |
| path.moveTo(2, 0); |
| path.lineTo(3, 0); |
| path.quadTo(0, 1, 1, 1); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic36"> |
| path.moveTo(0, 0); |
| path.quadTo(2, 1, 2, 3); |
| path.lineTo(2, 3); |
| path.close(); |
| path.moveTo(3, 1); |
| path.lineTo(1, 2); |
| path.quadTo(3, 2, 1, 3); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic37"> |
| path.moveTo(0, 0); |
| path.quadTo(0, 2, 1, 2); |
| path.lineTo(1, 2); |
| path.close(); |
| path.moveTo(0, 0); |
| path.lineTo(3, 1); |
| path.quadTo(0, 2, 1, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic38"> |
| path.moveTo(1, 0); |
| path.quadTo(0, 1, 1, 1); |
| path.lineTo(1, 1); |
| path.close(); |
| path.moveTo(1, 0); |
| path.lineTo(1, 2); |
| path.quadTo(2, 2, 1, 3); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic39"> |
| path.moveTo(15.5, 0); |
| path.quadTo(46.5, 15.5, 46.5, 31); |
| path.lineTo(15.5, 0); |
| path.close(); |
| path.moveTo(46.5, 15.5); |
| path.lineTo(0, 31); |
| path.quadTo(0, 31, 15.5, 31); |
| path.lineTo(46.5, 15.5); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic39a"> |
| path.moveTo(34.875, 19.375); |
| path.lineTo(15.5, 0); |
| path.quadTo(32.9687576, 8.73437881, 40.5937271, 17.4687576); |
| path.lineTo(34.875, 19.375); |
| path.close(); |
| path.moveTo(36.1666641, 20.6666679); |
| path.lineTo(15.5, 31); |
| path.lineTo(0, 31); |
| path.lineTo(34.875, 19.375); |
| path.lineTo(36.1666641, 20.6666679); |
| path.close(); |
| path.moveTo(41.1812401, 18.15938); |
| path.quadTo(46.5, 24.5796909, 46.5, 31); |
| path.lineTo(36.1666641, 20.6666679); |
| path.lineTo(41.1812401, 18.15938); |
| path.close(); |
| path.moveTo(40.5937271, 17.4687576); |
| path.lineTo(46.5, 15.5); |
| path.lineTo(41.1812401, 18.15938); |
| path.quadTo(40.8951759, 17.8140678, 40.5937271, 17.4687576); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic40x"> |
| path.setFillType(SkPath::kEvenOdd_FillType); |
| path.moveTo(2, 0); |
| path.quadTo(3, 0, 2, 2); |
| path.lineTo(3, 2); |
| path.close(); |
| path.moveTo(3, 1); |
| path.lineTo(0, 2); |
| path.quadTo(0, 2, 1, 2); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic40xa"> |
| path.moveTo(31, 0); |
| path.quadTo(41.3333359, 0, 37.8888893, 13.7777777); |
| path.lineTo(31, 0); |
| path.close(); |
| path.moveTo(37.8888893, 13.7777777); |
| path.quadTo(37.2993202, 16.1360455, 36.3061028, 18.8979664); |
| path.lineTo(0, 31); |
| path.lineTo(15.5, 31); |
| path.lineTo(35.5182915, 20.9908543); |
| path.quadTo(33.7454262, 25.5091457, 31, 31); |
| path.lineTo(46.5, 31); |
| path.lineTo(40.2999992, 18.6000004); |
| path.lineTo(46.5, 15.5); |
| path.lineTo(39.8571434, 17.7142868); |
| path.lineTo(37.8888893, 13.7777777); |
| path.close(); |
| path.moveTo(36.3061028, 18.8979664); |
| path.quadTo(35.9396667, 19.9169388, 35.5182915, 20.9908543); |
| path.lineTo(40.2999992, 18.6000004); |
| path.lineTo(39.8571434, 17.7142868); |
| path.lineTo(36.3061028, 18.8979664); |
| </div> |
| |
| <div id="testQuadratic40xb"> |
| path.moveTo(31, 0); |
| path.quadTo(46.5, 0, 31, 31); |
| path.lineTo(46.5, 31); |
| path.lineTo(31, 0); |
| path.close(); |
| path.moveTo(46.5, 15.5); |
| path.lineTo(0, 31); |
| path.quadTo(0, 31, 15.5, 31); |
| path.lineTo(46.5, 15.5); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic41o"> |
| path.moveTo(419.33905, 236.377808); |
| path.quadTo(398.847778, 242.58728, 384.255524, 242.58728); |
| path.quadTo(359.417633, 242.58728, 343.738708, 226.080429); |
| path.quadTo(328.059784, 209.573578, 328.059784, 183.286819); |
| path.quadTo(328.059784, 157.724487, 341.875854, 141.372879); |
| path.quadTo(355.691956, 125.021263, 377.218109, 125.021263); |
| path.quadTo(397.605896, 125.021263, 408.731201, 139.51004); |
| path.quadTo(419.856506, 153.99881, 419.856506, 180.699539); |
| path.lineTo(419.752991, 187.012497); |
| path.lineTo(348.861511, 187.012497); |
| path.quadTo(353.311646, 227.063599, 388.084686, 227.063599); |
| path.quadTo(400.814117, 227.063599, 419.33905, 220.233185); |
| path.lineTo(419.33905, 236.377808); |
| path.close(); |
| path.moveTo(349.792938, 171.695801); |
| path.lineTo(399.365234, 171.695801); |
| path.quadTo(399.365234, 140.337967, 375.976227, 140.337967); |
| path.quadTo(352.483704, 140.337967, 349.792938, 171.695801); |
| path.close(); |
| path.moveTo(378.682587, 277.360321); |
| path.lineTo(381.062897, 259.66333); |
| path.quadTo(398.759888, 268.046112, 415.939423, 268.046112); |
| path.quadTo(450.402008, 268.046112, 450.402008, 231.513718); |
| path.lineTo(450.402008, 213.816727); |
| path.quadTo(439.12146, 237.41272, 413.352142, 237.41272); |
| path.quadTo(393.171356, 237.41272, 381.269867, 222.716965); |
| path.quadTo(369.368378, 208.02121, 369.368378, 183.079834); |
| path.quadTo(369.368378, 157.414017, 382.92572, 141.269379); |
| path.quadTo(396.483093, 125.124756, 418.009247, 125.124756); |
| path.quadTo(436.844666, 125.124756, 450.402008, 140.441467); |
| path.lineTo(450.402008, 127.608543); |
| path.lineTo(470.89325, 127.608543); |
| path.lineTo(470.89325, 209.366608); |
| path.quadTo(470.89325, 235.756866, 468.150757, 248.43454); |
| path.quadTo(465.408234, 261.112213, 457.853363, 269.184509); |
| path.quadTo(444.502991, 283.362823, 416.353394, 283.362823); |
| path.quadTo(396.690063, 283.362823, 378.682587, 277.360321); |
| path.close(); |
| path.moveTo(450.402008, 201.087311); |
| path.lineTo(450.402008, 154.412781); |
| path.quadTo(436.948151, 140.441467, 421.113983, 140.441467); |
| path.quadTo(407.039185, 140.441467, 399.070374, 151.722); |
| path.quadTo(391.101532, 163.002533, 391.101532, 182.665863); |
| path.quadTo(391.101532, 219.612228, 417.07782, 219.612228); |
| path.quadTo(434.774841, 219.612228, 450.402008, 201.087311); |
| path.close(); |
| path.moveTo(482.9328, 236.377808); |
| path.quadTo(462.441528, 242.58728, 447.849274, 242.58728); |
| path.quadTo(423.011383, 242.58728, 407.332458, 226.080429); |
| path.quadTo(391.653534, 209.573578, 391.653534, 183.286819); |
| path.quadTo(391.653534, 157.724487, 405.469604, 141.372879); |
| path.quadTo(419.285706, 125.021263, 440.811859, 125.021263); |
| path.quadTo(461.199646, 125.021263, 472.324951, 139.51004); |
| path.quadTo(483.450256, 153.99881, 483.450256, 180.699539); |
| path.lineTo(483.346741, 187.012497); |
| path.lineTo(412.455261, 187.012497); |
| path.quadTo(416.905396, 227.063599, 451.678436, 227.063599); |
| path.quadTo(464.407867, 227.063599, 482.9328, 220.233185); |
| path.lineTo(482.9328, 236.377808); |
| path.close(); |
| path.moveTo(413.386688, 171.695801); |
| path.lineTo(462.958984, 171.695801); |
| path.quadTo(462.958984, 140.337967, 439.569977, 140.337967); |
| path.quadTo(416.077454, 140.337967, 413.386688, 171.695801); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic41s"> |
| path.moveTo(341.875854, 141.372879); |
| path.quadTo(355.691956,125.021263, 377.218109,125.021263); |
| path.quadTo(388.787811,125.021263, 397.374664,129.687164); |
| path.quadTo(406.565979,125.124756, 418.009247,125.124756); |
| path.quadTo(423.583374,125.124756, 428.695251,126.466187); |
| path.quadTo(434.412903,125.021263, 440.811859,125.021263); |
| path.quadTo(449.427277,125.021263, 456.388672,127.608543); |
| path.lineTo(470.89325,127.608543); |
| path.lineTo(470.89325,137.749908); |
| path.quadTo(471.627319,138.601486, 472.324951,139.51004); |
| path.quadTo(483.450256,153.99881, 483.450256,180.699539); |
| path.lineTo(483.346741,187.012497); |
| path.lineTo(470.89325,187.012497); |
| path.lineTo(470.89325,209.366608); |
| path.quadTo(470.89325,217.414856, 470.638184,224.187729); |
| path.quadTo(476.428223,222.631516, 482.9328,220.233185); |
| path.lineTo(482.9328,236.377808); |
| path.quadTo(475.87207,238.517426, 469.511749,239.919785); |
| path.quadTo(468.946777,244.754791, 468.150757,248.43454); |
| path.quadTo(465.408234,261.112213, 457.853363,269.184509); |
| path.quadTo(444.502991,283.362823, 416.353394,283.362823); |
| path.quadTo(396.690063,283.362823, 378.682587,277.360321); |
| path.lineTo(381.062897,259.66333); |
| path.quadTo(398.759888,268.046112, 415.939423,268.046112); |
| path.quadTo(444.719147,268.046112, 449.464905,242.568665); |
| path.quadTo(448.648254,242.58728, 447.849274,242.58728); |
| path.quadTo(433.084625,242.58728, 421.556366,236.754425); |
| path.quadTo(418.89566,237.203537, 416.046783,237.346252); |
| path.quadTo(397.661652,242.58728, 384.255524,242.58728); |
| path.quadTo(359.417633,242.58728, 343.738708,226.080429); |
| path.quadTo(328.059784,209.573578, 328.059784,183.286819); |
| path.quadTo(328.059784,157.724487, 341.875854,141.372879); |
| path.close(); |
| path.moveTo(442.014923, 226.179474); |
| path.quadTo(445.951935,226.953491, 450.402008,227.049881); |
| path.lineTo(450.402008,213.816727); |
| path.quadTo(446.904755,221.132065, 442.014923,226.179474); |
| path.close(); |
| path.moveTo(395.347717, 206.501785); |
| path.quadTo(392.200165,197.593536, 391.734406,187.012497); |
| path.lineTo(391.197113,187.012497); |
| path.quadTo(391.738647,198.938644, 395.347717,206.501785); |
| path.close(); |
| path.moveTo(391.808533, 171.695801); |
| path.lineTo(392.428436,171.695801); |
| path.quadTo(393.693451,162.656265, 397.02359,154.9935); |
| path.quadTo(397.023804,154.992996, 397.024048,154.992493); |
| path.quadTo(393.175995,143.845093, 383.003235,141.177292); |
| path.quadTo(382.964447,141.223267, 382.92572,141.269379); |
| </div> |
| |
| <div id="testQuadratic42o"> |
| path.moveTo(421.962158, 236.285355); |
| path.quadTo(400.947845, 242.65332, 385.983124, 242.65332); |
| path.quadTo(360.511261, 242.65332, 344.432129, 225.725143); |
| path.quadTo(328.352997, 208.796951, 328.352997, 181.839218); |
| path.quadTo(328.352997, 155.62442, 342.521729, 138.855438); |
| path.quadTo(356.69046, 122.086449, 378.766083, 122.086449); |
| path.quadTo(399.674255, 122.086449, 411.083527, 136.945038); |
| path.quadTo(422.492798, 151.803635, 422.492798, 179.185898); |
| path.lineTo(422.386688, 185.660004); |
| path.lineTo(349.685699, 185.660004); |
| path.quadTo(354.24942, 226.733398, 389.910034, 226.733398); |
| path.quadTo(402.964386, 226.733398, 421.962158, 219.728638); |
| path.lineTo(421.962158, 236.285355); |
| path.close(); |
| path.moveTo(350.6409, 169.952347); |
| path.lineTo(401.478516, 169.952347); |
| path.quadTo(401.478516, 137.794098, 377.492493, 137.794098); |
| path.quadTo(353.40036, 137.794098, 350.6409, 169.952347); |
| path.close(); |
| path.moveTo(379.213562, 278.313934); |
| path.lineTo(381.654602, 260.165222); |
| path.quadTo(399.803314, 268.761993, 417.421356, 268.761993); |
| path.quadTo(452.763611, 268.761993, 452.763611, 231.297104); |
| path.lineTo(452.763611, 213.148392); |
| path.quadTo(441.195129, 237.34668, 414.768036, 237.34668); |
| path.quadTo(394.072144, 237.34668, 381.866882, 222.275818); |
| path.quadTo(369.661591, 207.204956, 369.661591, 181.626953); |
| path.quadTo(369.661591, 155.306015, 383.565002, 138.749298); |
| path.quadTo(397.468384, 122.192581, 419.544037, 122.192581); |
| path.quadTo(438.860199, 122.192581, 452.763611, 137.900238); |
| path.lineTo(452.763611, 124.739769); |
| path.lineTo(473.777893, 124.739769); |
| path.lineTo(473.777893, 208.584686); |
| path.quadTo(473.777893, 235.64856, 470.965363, 248.649826); |
| path.quadTo(468.152863, 261.651093, 460.405151, 269.929443); |
| path.quadTo(446.71402, 284.469666, 417.845886, 284.469666); |
| path.quadTo(397.680664, 284.469666, 379.213562, 278.313934); |
| path.close(); |
| path.moveTo(452.763611, 200.094055); |
| path.lineTo(452.763611, 152.228165); |
| path.quadTo(438.966339, 137.900238, 422.727997, 137.900238); |
| path.quadTo(408.293945, 137.900238, 400.121704, 149.468719); |
| path.quadTo(391.949493, 161.037186, 391.949493, 181.202423); |
| path.quadTo(391.949493, 219.091827, 418.588837, 219.091827); |
| path.quadTo(436.737549, 219.091827, 452.763611, 200.094055); |
| path.close(); |
| path.moveTo(485.555908, 236.285355); |
| path.quadTo(464.541595, 242.65332, 449.576874, 242.65332); |
| path.quadTo(424.105011, 242.65332, 408.025879, 225.725143); |
| path.quadTo(391.946747, 208.796951, 391.946747, 181.839218); |
| path.quadTo(391.946747, 155.62442, 406.115479, 138.855438); |
| path.quadTo(420.28421, 122.086449, 442.359833, 122.086449); |
| path.quadTo(463.268005, 122.086449, 474.677277, 136.945038); |
| path.quadTo(486.086548, 151.803635, 486.086548, 179.185898); |
| path.lineTo(485.980438, 185.660004); |
| path.lineTo(413.279449, 185.660004); |
| path.quadTo(417.84317, 226.733398, 453.503784, 226.733398); |
| path.quadTo(466.558136, 226.733398, 485.555908, 219.728638); |
| path.lineTo(485.555908, 236.285355); |
| path.close(); |
| path.moveTo(414.23465, 169.952347); |
| path.lineTo(465.072266, 169.952347); |
| path.quadTo(465.072266, 137.794098, 441.086243, 137.794098); |
| path.quadTo(416.99411, 137.794098, 414.23465, 169.952347); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic42s"> |
| path.moveTo(342.521729, 138.855438); |
| path.quadTo(356.69046,122.086449, 378.766083,122.086449); |
| path.quadTo(390.293488,122.086449, 398.933502,126.603004); |
| path.quadTo(408.150299,122.192581, 419.544037,122.192581); |
| path.quadTo(425.108429,122.192581, 430.223633,123.496056); |
| path.quadTo(435.959412,122.086449, 442.359833,122.086449); |
| path.quadTo(451.19516,122.086449, 458.334229,124.739769); |
| path.lineTo(473.777893,124.739769); |
| path.lineTo(473.777893,135.814713); |
| path.quadTo(474.234741,136.368698, 474.677277,136.945038); |
| path.quadTo(486.086548,151.803635, 486.086548,179.185898); |
| path.lineTo(485.980438,185.660004); |
| path.lineTo(473.777893,185.660004); |
| path.lineTo(473.777893,208.584686); |
| path.quadTo(473.777893,216.745773, 473.522156,223.628113); |
| path.quadTo(479.207153,222.069519, 485.555908,219.728638); |
| path.lineTo(485.555908,236.285355); |
| path.quadTo(478.638306,238.381592, 472.376221,239.787796); |
| path.quadTo(471.792389,244.826782, 470.965363,248.649826); |
| path.quadTo(468.152863,261.651093, 460.405151,269.929443); |
| path.quadTo(446.71402,284.469666, 417.845886,284.469666); |
| path.quadTo(397.680664,284.469666, 379.213562,278.313934); |
| path.lineTo(381.654602,260.165222); |
| path.quadTo(399.803314,268.761993, 417.421356,268.761993); |
| path.quadTo(446.944275,268.761993, 451.80542,242.619034); |
| path.quadTo(450.674866,242.65332, 449.576874,242.65332); |
| path.quadTo(434.524628,242.65332, 422.75238,236.741913); |
| path.quadTo(420.864227,237.041901, 418.884674,237.193085); |
| path.quadTo(399.840271,242.65332, 385.983124,242.65332); |
| path.quadTo(360.511261,242.65332, 344.432129,225.725143); |
| path.quadTo(328.352997,208.796951, 328.352997,181.839218); |
| path.quadTo(328.352997,155.62442, 342.521729,138.855438); |
| path.close(); |
| path.moveTo(383.823944, 138.443222); |
| path.quadTo(380.900299,137.794098, 377.492493,137.794098); |
| path.quadTo(353.40036,137.794098, 350.6409,169.952347); |
| path.lineTo(370.408203,169.952347); |
| path.quadTo(372.883484,151.469254, 383.565002,138.749298); |
| path.quadTo(383.694122,138.595551, 383.823944,138.443222); |
| path.close(); |
| path.moveTo(369.740021, 185.660004); |
| path.lineTo(349.685699,185.660004); |
| path.quadTo(353.983734,224.342361, 385.863525,226.594208); |
| path.quadTo(383.762756,224.616837, 381.866882,222.275818); |
| path.quadTo(370.639954,208.41301, 369.740021,185.660004); |
| path.close(); |
| path.moveTo(413.279449, 185.660004); |
| path.quadTo(415.737305,207.780716, 427.214905,217.987976); |
| path.quadTo(440.600586,214.512451, 452.763611,200.094055); |
| path.lineTo(452.763611,185.660004); |
| </div> |
| |
| <div id="testQuadratic43o"> |
| path.moveTo(288.755981, 240); |
| path.lineTo(288.755981, 102.232819); |
| path.lineTo(315.843994, 102.232819); |
| path.lineTo(354.009216, 208.816208); |
| path.lineTo(393.291473, 102.232819); |
| path.lineTo(417.493835, 102.232819); |
| path.lineTo(417.493835, 240); |
| path.lineTo(399.248962, 240); |
| path.lineTo(399.248962, 127.92453); |
| path.lineTo(361.269928, 230.784485); |
| path.lineTo(342.373474, 230.784485); |
| path.lineTo(305.511444, 127.645271); |
| path.lineTo(305.511444, 240); |
| path.lineTo(288.755981, 240); |
| path.close(); |
| path.moveTo(397.864014, 236.741989); |
| path.quadTo(379.433014, 242.327148, 366.307892, 242.327148); |
| path.quadTo(343.967255, 242.327148, 329.864746, 227.479935); |
| path.quadTo(315.762238, 212.632736, 315.762238, 188.988907); |
| path.quadTo(315.762238, 165.996674, 328.189209, 151.289093); |
| path.quadTo(340.61618, 136.581512, 359.978058, 136.581512); |
| path.quadTo(378.315979, 136.581512, 388.322723, 149.613556); |
| path.quadTo(398.329468, 162.645584, 398.329468, 186.661758); |
| path.lineTo(398.236359, 192.339996); |
| path.lineTo(334.472504, 192.339996); |
| path.quadTo(338.475189, 228.364258, 369.752075, 228.364258); |
| path.quadTo(381.20163, 228.364258, 397.864014, 222.220581); |
| path.lineTo(397.864014, 236.741989); |
| path.close(); |
| path.moveTo(335.310272, 178.563278); |
| path.lineTo(379.898438, 178.563278); |
| path.quadTo(379.898438, 150.358246, 358.861023, 150.358246); |
| path.quadTo(337.730499, 150.358246, 335.310272, 178.563278); |
| path.close(); |
| path.moveTo(346.052765, 240); |
| path.lineTo(346.052765, 138.908661); |
| path.lineTo(364.390686, 138.908661); |
| path.lineTo(364.390686, 157.898193); |
| path.quadTo(375.281769, 136.674606, 396.039917, 136.674606); |
| path.quadTo(398.832489, 136.674606, 401.904327, 137.140045); |
| path.lineTo(401.904327, 154.267853); |
| path.quadTo(397.156952, 152.685394, 393.526611, 152.685394); |
| path.quadTo(376.119537, 152.685394, 364.390686, 173.350464); |
| path.lineTo(364.390686, 240); |
| path.lineTo(346.052765, 240); |
| path.close(); |
| path.moveTo(362.792297, 273.604034); |
| path.lineTo(364.933289, 257.68634); |
| path.quadTo(380.850983, 265.226288, 396.303253, 265.226288); |
| path.quadTo(427.300842, 265.226288, 427.300842, 232.366959); |
| path.lineTo(427.300842, 216.449265); |
| path.quadTo(417.15448, 237.672852, 393.976105, 237.672852); |
| path.quadTo(375.824341, 237.672852, 365.119446, 224.454651); |
| path.quadTo(354.414581, 211.23645, 354.414581, 188.802734); |
| path.quadTo(354.414581, 165.717422, 366.608826, 151.196014); |
| path.quadTo(378.803101, 136.674606, 398.164948, 136.674606); |
| path.quadTo(415.106598, 136.674606, 427.300842, 150.451324); |
| path.lineTo(427.300842, 138.908661); |
| path.lineTo(445.731873, 138.908661); |
| path.lineTo(445.731873, 212.446564); |
| path.quadTo(445.731873, 236.183472, 443.265106, 247.586502); |
| path.quadTo(440.798309, 258.989532, 434.003052, 266.250244); |
| path.quadTo(421.994965, 279.002991, 396.675598, 279.002991); |
| path.quadTo(378.989258, 279.002991, 362.792297, 273.604034); |
| path.close(); |
| path.moveTo(427.300842, 204.999695); |
| path.lineTo(427.300842, 163.017929); |
| path.quadTo(415.199677, 150.451324, 400.95755, 150.451324); |
| path.quadTo(388.297852, 150.451324, 381.130249, 160.597687); |
| path.quadTo(373.962616, 170.744064, 373.962616, 188.430389); |
| path.quadTo(373.962616, 221.662079, 397.327179, 221.662079); |
| path.quadTo(413.244873, 221.662079, 427.300842, 204.999695); |
| path.close(); |
| path.moveTo(461.457764, 236.741989); |
| path.quadTo(443.026764, 242.327148, 429.901642, 242.327148); |
| path.quadTo(407.561005, 242.327148, 393.458496, 227.479935); |
| path.quadTo(379.355988, 212.632736, 379.355988, 188.988907); |
| path.quadTo(379.355988, 165.996674, 391.782959, 151.289093); |
| path.quadTo(404.20993, 136.581512, 423.571808, 136.581512); |
| path.quadTo(441.909729, 136.581512, 451.916473, 149.613556); |
| path.quadTo(461.923218, 162.645584, 461.923218, 186.661758); |
| path.lineTo(461.830109, 192.339996); |
| path.lineTo(398.066254, 192.339996); |
| path.quadTo(402.068939, 228.364258, 433.345825, 228.364258); |
| path.quadTo(444.79538, 228.364258, 461.457764, 222.220581); |
| path.lineTo(461.457764, 236.741989); |
| path.close(); |
| path.moveTo(398.904022, 178.563278); |
| path.lineTo(443.492188, 178.563278); |
| path.quadTo(443.492188, 150.358246, 422.454773, 150.358246); |
| path.quadTo(401.324249, 150.358246, 398.904022, 178.563278); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic43s"> |
| path.moveTo(288.755981, 240); |
| path.lineTo(288.755981,102.232819); |
| path.lineTo(315.843994,102.232819); |
| path.lineTo(331.979736,147.294876); |
| path.quadTo(343.453125,136.581512, 359.978058,136.581512); |
| path.quadTo(370.869446,136.581512, 378.822021,141.178574); |
| path.quadTo(378.893585,141.140915, 378.965302,141.103577); |
| path.lineTo(393.291473,102.232819); |
| path.lineTo(417.493835,102.232819); |
| path.lineTo(417.493835,136.965759); |
| path.quadTo(420.44223,136.581512, 423.571808,136.581512); |
| path.quadTo(431.320984,136.581512, 437.582458,138.908661); |
| path.lineTo(445.731873,138.908661); |
| path.lineTo(445.731873,143.392502); |
| path.quadTo(449.143951,146.002823, 451.916473,149.613556); |
| path.quadTo(461.923218,162.645584, 461.923218,186.661758); |
| path.lineTo(461.830109,192.339996); |
| path.lineTo(445.731873,192.339996); |
| path.lineTo(445.731873,212.446564); |
| path.quadTo(445.731873,220.39856, 445.455017,226.966339); |
| path.quadTo(452.7435,225.43367, 461.457764,222.220581); |
| path.lineTo(461.457764,236.741989); |
| path.quadTo(452.250824,239.531982, 444.367889,240.928268); |
| path.quadTo(443.897583,244.662796, 443.265106,247.586502); |
| path.quadTo(440.798309,258.989532, 434.003052,266.250244); |
| path.quadTo(421.994965,279.002991, 396.675598,279.002991); |
| path.quadTo(378.989258,279.002991, 362.792297,273.604034); |
| path.lineTo(364.933289,257.68634); |
| path.quadTo(380.850983,265.226288, 396.303253,265.226288); |
| path.quadTo(422.230743,265.226288, 426.471558,242.237076); |
| path.quadTo(419.570892,241.869324, 413.503387,240); |
| path.lineTo(399.248962,240); |
| path.lineTo(399.248962,237.37915); |
| path.quadTo(397.047638,237.633072, 394.711517,237.667465); |
| path.quadTo(378.296356,242.327148, 366.307892,242.327148); |
| path.quadTo(357.463165,242.327148, 349.909637,240); |
| path.lineTo(346.052765,240); |
| path.lineTo(346.052765,238.625916); |
| path.quadTo(336.926056,234.914124, 329.864746,227.479935); |
| path.quadTo(315.762238,212.632736, 315.762238,188.988907); |
| path.quadTo(315.762238,176.540054, 319.405273,166.519882); |
| path.lineTo(305.511444,127.645271); |
| path.lineTo(305.511444,240); |
| path.lineTo(288.755981,240); |
| path.close(); |
| path.moveTo(375.464813, 192.339996); |
| path.lineTo(374.267029,195.583939); |
| path.quadTo(375.987579,214.575378, 387.432068,219.736267); |
| path.quadTo(380.122528,208.101486, 379.428741,192.339996); |
| path.lineTo(375.464813,192.339996); |
| path.close(); |
| path.moveTo(427.300842, 178.563278); |
| path.lineTo(427.300842,163.017929); |
| path.quadTo(422.561523,158.096329, 417.493835,155.102234); |
| path.lineTo(417.493835,178.563278); |
| path.lineTo(427.300842,178.563278); |
| path.close(); |
| path.moveTo(427.300842, 192.339996); |
| path.lineTo(417.493835,192.339996); |
| path.lineTo(417.493835,214.429169); |
| path.quadTo(422.505676,210.684036, 427.300842,204.999695); |
| path.lineTo(427.300842,192.339996); |
| path.close(); |
| path.moveTo(420.700134, 226.556015); |
| path.quadTo(423.794342,227.54834, 427.300842,227.996094); |
| path.lineTo(427.300842,216.449265); |
| path.quadTo(424.497772,222.312531, 420.700134,226.556015); |
| path.close(); |
| path.moveTo(368.744965, 228.354782); |
| path.quadTo(366.836426,226.574738, 365.119446,224.454651); |
| path.quadTo(364.748657,223.996796, 364.390686,223.527878); |
| path.lineTo(364.390686,228.077774); |
| path.quadTo(366.495239,228.312164, 368.744965,228.354782); |
| path.close(); |
| path.moveTo(399.248962, 199.701065); |
| path.lineTo(399.248962,192.339996); |
| path.lineTo(398.236359,192.339996); |
| path.lineTo(398.066254,192.339996); |
| path.quadTo(398.498535,196.230621, 399.248962,199.701065); |
| path.close(); |
| path.moveTo(399.248962, 178.563278); |
| path.lineTo(399.248962,175.376892); |
| path.quadTo(399.04483,176.922348, 398.904022,178.563278); |
| path.lineTo(399.248962,178.563278); |
| path.close(); |
| path.moveTo(399.248962, 136.688828); |
| path.lineTo(399.248962,127.92453); |
| path.lineTo(396.018158,136.674606); |
| path.quadTo(396.029053,136.674606, 396.039917,136.674606); |
| path.quadTo(396.513672,136.674606, 396.995453,136.688004); |
| path.quadTo(397.576904,136.674606, 398.164948,136.674606); |
| path.quadTo(398.709412,136.674606, 399.248962,136.688828); |
| path.close(); |
| path.moveTo(346.052765, 178.563278); |
| path.lineTo(346.052765,154.02713); |
| path.quadTo(340.97113,157.621338, 338.22525,164.736588); |
| path.lineTo(343.1763,178.563278); |
| path.lineTo(346.052765,178.563278); |
| path.close(); |
| path.moveTo(364.390686, 150.922379); |
| path.lineTo(364.390686,154.048065); |
| path.quadTo(365.340851,152.726639, 366.38147,151.468765); |
| path.quadTo(365.420258,151.14975, 364.390686,150.922379); |
| path.close(); |
| path.moveTo(367.863586, 152.032623); |
| path.quadTo(367.144043,151.721848, 366.38147,151.468765); |
| </div> |
| |
| <div id="testQuadratic44o"> |
| path.moveTo(354.009216, 208.816208); |
| path.lineTo(393.291473, 102.232819); |
| path.lineTo(399.248962, 127.92453); |
| path.lineTo(361.269928, 230.784485); |
| path.lineTo(354.009216, 208.816208); |
| path.close(); |
| path.moveTo(328.189209, 151.289093); |
| path.quadTo(340.61618, 136.581512, 359.978058, 136.581512); |
| path.quadTo(378.315979, 136.581512, 388.322723, 149.613556); |
| path.lineTo(328.189209, 151.289093); |
| path.close(); |
| path.moveTo(346.052765, 138.908661); |
| path.lineTo(364.390686, 138.908661); |
| path.lineTo(364.390686, 157.898193); |
| path.quadTo(375.281769, 136.674606, 396.039917, 136.674606); |
| path.lineTo(346.052765, 138.908661); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic44s"> |
| path.moveTo(380.33902, 137.376312); |
| path.lineTo(393.291473,102.232819); |
| path.lineTo(399.248962,127.92453); |
| path.lineTo(396.018158,136.674606); |
| path.quadTo(396.029053,136.674606, 396.039917,136.674606); |
| path.lineTo(396.017792,136.675598); |
| path.lineTo(361.269928,230.784485); |
| path.lineTo(354.009216,208.816208); |
| path.lineTo(375.699249,149.965286); |
| path.lineTo(369.22699,150.14563); |
| path.quadTo(373.524384,144.511566, 378.917297,141.233871); |
| path.lineTo(380.33902,137.376312); |
| path.close(); |
| path.moveTo(380.33902, 137.376312); |
| path.lineTo(378.917297,141.233856); |
| path.quadTo(375.048248,138.978912, 370.480499,137.816925); |
| path.lineTo(380.33902,137.376312); |
| path.close(); |
| path.moveTo(392.55661, 136.830276); |
| path.lineTo(380.33902,137.376312); |
| </div> |
| |
| <div id="testQuadratic45o"> |
| path.moveTo(315.843994, 102.232819); |
| path.lineTo(354.009216, 208.816208); |
| path.lineTo(393.291473, 102.232819); |
| path.lineTo(399.248962, 127.92453); |
| path.lineTo(361.269928, 230.784485); |
| path.lineTo(342.373474, 230.784485); |
| path.lineTo(305.511444, 127.645271); |
| path.lineTo(315.843994, 102.232819); |
| path.close(); |
| path.moveTo(366.307892, 242.327148); |
| path.quadTo(343.967255, 242.327148, 329.864746, 227.479935); |
| path.quadTo(315.762238, 212.632736, 315.762238, 188.988907); |
| path.quadTo(315.762238, 165.996674, 328.189209, 151.289093); |
| path.quadTo(340.61618, 136.581512, 359.978058, 136.581512); |
| path.quadTo(378.315979, 136.581512, 388.322723, 149.613556); |
| path.quadTo(398.329468, 162.645584, 398.329468, 186.661758); |
| path.lineTo(398.236359, 192.339996); |
| path.lineTo(334.472504, 192.339996); |
| path.quadTo(338.475189, 228.364258, 369.752075, 228.364258); |
| path.quadTo(381.20163, 228.364258, 397.864014, 222.220581); |
| path.lineTo(366.307892, 242.327148); |
| path.close(); |
| path.moveTo(335.310272, 178.563278); |
| path.lineTo(379.898438, 178.563278); |
| path.quadTo(379.898438, 150.358246, 358.861023, 150.358246); |
| path.quadTo(337.730499, 150.358246, 335.310272, 178.563278); |
| path.close(); |
| path.moveTo(346.052765, 240); |
| path.lineTo(346.052765, 138.908661); |
| path.lineTo(364.390686, 138.908661); |
| path.lineTo(364.390686, 157.898193); |
| path.quadTo(375.281769, 136.674606, 396.039917, 136.674606); |
| path.lineTo(401.904327, 154.267853); |
| path.quadTo(397.156952, 152.685394, 393.526611, 152.685394); |
| path.quadTo(376.119537, 152.685394, 364.390686, 173.350464); |
| path.lineTo(364.390686, 240); |
| path.lineTo(346.052765, 240); |
| path.close(); |
| path.moveTo(396.303253, 265.226288); |
| path.quadTo(427.300842, 265.226288, 427.300842, 232.366959); |
| path.lineTo(427.300842, 216.449265); |
| path.quadTo(417.15448, 237.672852, 393.976105, 237.672852); |
| path.quadTo(375.824341, 237.672852, 365.119446, 224.454651); |
| path.quadTo(354.414581, 211.23645, 354.414581, 188.802734); |
| path.quadTo(354.414581, 165.717422, 366.608826, 151.196014); |
| path.quadTo(378.803101, 136.674606, 398.164948, 136.674606); |
| path.lineTo(396.303253, 265.226288); |
| path.close(); |
| path.moveTo(400.95755, 150.451324); |
| path.quadTo(388.297852, 150.451324, 381.130249, 160.597687); |
| path.quadTo(373.962616, 170.744064, 373.962616, 188.430389); |
| path.quadTo(373.962616, 221.662079, 397.327179, 221.662079); |
| path.lineTo(400.95755, 150.451324); |
| path.close(); |
| path.moveTo(429.901642, 242.327148); |
| path.quadTo(407.561005, 242.327148, 393.458496, 227.479935); |
| path.quadTo(379.355988, 212.632736, 379.355988, 188.988907); |
| path.quadTo(379.355988, 165.996674, 391.782959, 151.289093); |
| path.quadTo(404.20993, 136.581512, 423.571808, 136.581512); |
| path.lineTo(429.901642, 242.327148); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic45s"> |
| path.moveTo(305.511444, 127.645271); |
| path.lineTo(315.843994,102.232819); |
| path.lineTo(331.979736,147.294876); |
| path.quadTo(343.453125,136.581512, 359.978058,136.581512); |
| path.quadTo(370.869446,136.581512, 378.822021,141.178574); |
| path.quadTo(378.893585,141.140915, 378.965302,141.103577); |
| path.lineTo(393.291473,102.232819); |
| path.lineTo(399.248962,127.92453); |
| path.lineTo(396.018158,136.674606); |
| path.quadTo(396.029053,136.674606, 396.039917,136.674606); |
| path.lineTo(396.054596,136.718628); |
| path.quadTo(397.098907,136.674606, 398.164948,136.674606); |
| path.lineTo(398.076477,142.784256); |
| path.lineTo(398.697632,144.647751); |
| path.quadTo(409.233032,136.581512, 423.571808,136.581512); |
| path.lineTo(429.901642,242.327148); |
| path.quadTo(428.161621,242.327148, 426.471558,242.237076); |
| path.quadTo(427.300842,237.741562, 427.300842,232.366959); |
| path.lineTo(427.300842,216.449265); |
| path.quadTo(419.710114,232.327133, 404.8255,236.326401); |
| path.quadTo(400.557983,233.971252, 396.803375,230.691772); |
| path.lineTo(396.7034,237.596863); |
| path.quadTo(395.363068,237.672852, 393.976105,237.672852); |
| path.quadTo(385.309937,237.672852, 378.341187,234.659912); |
| path.lineTo(366.307892,242.327148); |
| path.quadTo(357.463165,242.327148, 349.909637,240); |
| path.lineTo(346.052765,240); |
| path.lineTo(346.052765,238.625916); |
| path.quadTo(336.926056,234.914124, 329.864746,227.479935); |
| path.quadTo(315.762238,212.632736, 315.762238,188.988907); |
| path.quadTo(315.762238,176.540054, 319.405273,166.519882); |
| path.lineTo(305.511444,127.645271); |
| path.close(); |
| path.moveTo(375.464813, 192.339996); |
| path.lineTo(374.267029,195.583939); |
| path.quadTo(375.987579,214.575378, 387.432068,219.736267); |
| path.quadTo(380.122528,208.101486, 379.428741,192.339996); |
| path.lineTo(375.464813,192.339996); |
| path.close(); |
| path.moveTo(397.925934, 153.178131); |
| path.lineTo(397.615479,174.615356); |
| path.quadTo(398.329468,180.246704, 398.329468,186.661758); |
| path.lineTo(398.236359,192.339996); |
| path.lineTo(397.358795,192.339996); |
| path.lineTo(396.934174,221.659714); |
| path.quadTo(397.129852,221.662079, 397.327179,221.662079); |
| path.lineTo(400.781189,153.910889); |
| path.quadTo(399.295654,153.462463, 397.925934,153.178131); |
| path.close(); |
| path.moveTo(400.914398, 151.298019); |
| path.lineTo(400.632721,150.453003); |
| path.quadTo(400.794678,150.451324, 400.95755,150.451324); |
| path.lineTo(400.914398,151.298019); |
| path.close(); |
| path.moveTo(368.744965, 228.354782); |
| path.quadTo(366.836426,226.574738, 365.119446,224.454651); |
| path.quadTo(364.748657,223.996796, 364.390686,223.527878); |
| path.lineTo(364.390686,228.077774); |
| path.quadTo(366.495239,228.312164, 368.744965,228.354782); |
| path.close(); |
| path.moveTo(346.052765, 178.563278); |
| path.lineTo(346.052765,154.02713); |
| path.quadTo(340.97113,157.621338, 338.22525,164.736588); |
| path.lineTo(343.1763,178.563278); |
| path.lineTo(346.052765,178.563278); |
| path.close(); |
| path.moveTo(364.390686, 150.922379); |
| path.lineTo(364.390686,154.048065); |
| path.quadTo(365.340851,152.726639, 366.38147,151.468765); |
| path.quadTo(365.420258,151.14975, 364.390686,150.922379); |
| path.close(); |
| path.moveTo(367.863586, 152.032623); |
| path.quadTo(367.144043,151.721848, 366.38147,151.468765); |
| </div> |
| |
| <div id="testQuadratic46o"> |
| path.moveTo(366.608826, 151.196014); |
| path.quadTo(378.803101, 136.674606, 398.164948, 136.674606); |
| path.lineTo(354.009216, 208.816208); |
| path.lineTo(393.291473, 102.232819); |
| path.lineTo(359.978058, 136.581512); |
| path.quadTo(378.315979, 136.581512, 388.322723, 149.613556); |
| path.lineTo(364.390686, 157.898193); |
| path.quadTo(375.281769, 136.674606, 396.039917, 136.674606); |
| path.lineTo(350, 120); |
| path.lineTo(366.608826, 151.196014); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic46s"> |
| path.moveTo(369.285553, 126.984779); |
| path.lineTo(393.291473,102.232819); |
| path.lineTo(382.416199,131.740402); |
| path.lineTo(396.039917,136.674606); |
| path.quadTo(387.290802,136.674606, 380.294495,140.44487); |
| path.quadTo(379.623352,140.760971, 378.965302,141.103577); |
| path.lineTo(378.917297,141.233856); |
| path.quadTo(378.86972,141.206131, 378.822021,141.178574); |
| path.quadTo(372.011871,144.761871, 366.608826,151.196014); |
| path.lineTo(350,120); |
| path.lineTo(369.285553,126.984779); |
| path.close(); |
| path.moveTo(374.00174, 154.571106); |
| path.lineTo(378.917297,141.233871); |
| path.quadTo(378.917297,141.233871, 378.917297,141.233856); |
| path.quadTo(384.294891,144.368011, 388.322723,149.613556); |
| path.lineTo(374.00174,154.571106); |
| path.close(); |
| path.moveTo(378.917297, 141.233871); |
| path.quadTo(370.233887,146.511475, 364.390686,157.898193); |
| path.lineTo(374.00174,154.571106); |
| path.lineTo(354.009216,208.816208); |
| path.lineTo(398.164948,136.674606); |
| path.quadTo(388.299255,136.674606, 380.294495,140.44487); |
| </div> |
| |
| <div id="testQuadratic47o"> |
| path.moveTo(343.939362, 212.598053); |
| path.lineTo(378.457642, 118.940636); |
| path.lineTo(383.692657, 141.516571); |
| path.lineTo(350.319519, 231.902115); |
| path.lineTo(343.939362, 212.598053); |
| path.close(); |
| path.moveTo(325.429016, 162.047577); |
| path.quadTo(336.348907, 149.123688, 353.36264, 149.123688); |
| path.quadTo(369.476624, 149.123688, 378.269806, 160.575241); |
| path.lineTo(325.429016, 162.047577); |
| path.close(); |
| path.moveTo(370.867188, 186.014069); |
| path.quadTo(370.867188, 161.229614, 352.381104, 161.229614); |
| path.quadTo(333.813202, 161.229614, 331.686493, 186.014069); |
| path.lineTo(370.867188, 186.014069); |
| path.close(); |
| path.moveTo(353.161499, 195.011719); |
| path.quadTo(353.161499, 174.726105, 363.876862, 161.96579); |
| path.lineTo(353.161499, 195.011719); |
| path.close(); |
| </div> |
| |
| <div id="testQuadratic47s"> |
| path.moveTo(366.466309, 151.476364); |
| path.lineTo(378.457642,118.940636); |
| path.lineTo(383.692657,141.516571); |
| path.lineTo(377.159943,159.209305); |
| path.quadTo(377.728729,159.87059, 378.269806,160.575241); |
| path.lineTo(376.638824,160.620682); |
| path.lineTo(370.26593,177.8806); |
| path.quadTo(368.708496,168.390671, 363.116943,164.309357); |
| path.lineTo(356.079041,186.014069); |
| path.lineTo(367.262817,186.014069); |
| path.lineTo(350.319519,231.902115); |
| path.lineTo(343.939362,212.598053); |
| path.lineTo(353.736816,186.014923); |
| path.lineTo(353.737122,186.014069); |
| path.lineTo(353.736938,186.014069); |
| path.quadTo(353.736877,186.014496, 353.736816,186.014923); |
| path.quadTo(353.161499,190.31131, 353.161499,195.011719); |
| </div> |
| |
| </div> |
| |
| <script type="text/javascript"> |
| |
| var testDivs = [ |
| testQuadratic47o, |
| testQuadratic47s, |
| testQuadratic46o, |
| testQuadratic46s, |
| testQuadratic45o, |
| testQuadratic45s, |
| testQuadratic44o, |
| testQuadratic44s, |
| testQuadratic43o, |
| testQuadratic43s, |
| testQuadratic42o, |
| testQuadratic42s, |
| testQuadratic41o, |
| testQuadratic41s, |
| testQuadratic40xb, |
| testQuadratic40xa, |
| testQuadratic40x, |
| testQuadratic39, |
| testQuadratic39a, |
| testQuadratic38, |
| testQuadratic37, |
| testQuadratic36, |
| testQuadratic35, |
| testQuadratic34, |
| testQuadratic33, |
| testQuadratic32, |
| testQuadratic31, |
| testQuadratic30, |
| testQuadratic29, |
| testQuadratic28, |
| testQuadratic27, |
| testQuadratic26, |
| testQuadratic25, |
| testQuadratic24, |
| testQuadratic23, |
| testQuadratic22, |
| testQuadratic21, |
| testQuadratic20, |
| testQuadratic19, |
| testQuadratic18, |
| testQuadratic17x, |
| testQuadratic16b, |
| testQuadratic16a, |
| testQuadratic15, |
| testQuadratic14, |
| testQuadratic13b, |
| testQuadratic13a, |
| testQuadratic12, |
| testQuadratic11b, |
| testQuadratic11a, |
| testQuadratic10b, |
| testQuadratic10a, |
| testQuadratic9a, |
| testQuadratic9, |
| testQuadratic8, |
| testQuadratic7, |
| testQuadratic6, |
| testQuadratic5, |
| testQuadratic4x, |
| testQuadratic3, |
| testQuadratic2, |
| testQuadratic1, |
| testLine4x, |
| testLine3x, |
| testLine2x, |
| testLine1x, |
| testQuadralateral9, |
| testQuadralateral8, |
| testQuadralateral7, |
| testFauxQuadralateral6d, |
| testFauxQuadralateral6c, |
| testFauxQuadralateral6b, |
| testFauxQuadralateral6a, |
| testFauxQuadralateral6, |
| testQuadralateral6a, |
| testQuadralateral6, |
| testQuadralateral5, |
| testNondegenerate4, |
| testNondegenerate3, |
| testNondegenerate2, |
| testNondegenerate1, |
| testDegenerate4, |
| testDegenerate3, |
| testDegenerate2, |
| testDegenerate1, |
| testLine79, |
| testLine78, |
| testLine77, |
| testLine76, |
| testLine75, |
| testLine74, |
| testLine73, |
| testLine72, |
| testLine71, |
| testLine70, |
| testLine69, |
| testLine68f, |
| testLine68e, |
| testLine68d, |
| testLine68c, |
| testLine68b, |
| testLine68a, |
| testLine67, |
| testLine66, |
| testLine65, |
| testLine64, |
| testLine63, |
| testLine62, |
| testLine61, |
| testLine60, |
| testLine59, |
| testLine58, |
| testLine57, |
| testLine56, |
| testLine55, |
| testLine54, |
| testLine53, |
| testLine52, |
| testLine51, |
| testLine50, |
| testLine49, |
| testLine48, |
| testLine47, |
| testLine46, |
| testLine45, |
| testLine44, |
| testLine43, |
| testLine42, |
| testLine41, |
| testLine40, |
| testLine39, |
| testLine38, |
| testLine37, |
| testLine36, |
| testLine35, |
| testLine34, |
| testLine33, |
| testLine32, |
| testLine31, |
| testLine30, |
| testLine29, |
| testLine28, |
| testLine24, |
| testLine22, |
| testLine19, |
| testLine17, |
| testLine13, |
| testLine12, |
| testLine9, |
| testLine7b, |
| testLine7, |
| testSimplifyQuadratic21, |
| testSimplifyQuadratic20, |
| testSimplifyQuadratic19, |
| testSimplifyQuadratic18, |
| testSimplifyQuadratic17, |
| testSimplifyQuadratic16, |
| testSimplifyQuadratic15, |
| testSimplifyQuadratic14, |
| testSimplifyQuadratic13, |
| testSimplifyQuadratic12, |
| testSimplifyQuadratic11, |
| testSimplifyQuadratic10, |
| testSimplifyQuadratic9, |
| testSimplifyQuadratic8, |
| testSimplifyQuadratic7, |
| testSimplifyQuadratic6, |
| testSimplifyQuadratic5, |
| testSimplifyQuadratic4, |
| testSimplifyQuadratic3, |
| testSimplifyQuadratic2, |
| testSimplifyQuadratic1, |
| ]; |
| |
| var scale, columns, rows, xStart, yStart; |
| |
| var ticks = 0.1; |
| var at_x = 13 + 0.5; |
| var at_y = 13 + 0.5; |
| var decimal_places = 0; // make this 3 to show more precision |
| |
| var tests = []; |
| var testTitles = []; |
| var testIndex = 0; |
| var hasXor = false; |
| var draw_labels = true; |
| |
| var ctx; |
| |
| function parse(test, title) { |
| var contours = []; |
| var contourStrs = test.split("path.close();"); |
| var pattern = /-?\d+\.*\d*/g; |
| hasXor = test.split("kEvenOdd_FillType").length > 1; |
| for (var c in contourStrs) { |
| var contour = contourStrs[c]; |
| var verbStrs = contour.split("path"); |
| var verbs = []; |
| for (var v in verbStrs) { |
| var verbStr = verbStrs[v]; |
| var points = verbStr.match(pattern); |
| var pts = []; |
| for (var wd in points) { |
| var num = parseFloat(points[wd]); |
| if (isNaN(num)) continue; |
| pts.push(num); |
| } |
| if (pts.length > 0) |
| verbs.push(pts); |
| } |
| if (verbs.length > 0) { |
| var lastIndex = verbs.length - 1; |
| var lastVerb = verbs[lastIndex]; |
| var lastLen = lastVerb.length; |
| if (verbs[0][0] != lastVerb[lastLen - 2] && verbs[0][1] != lastVerb[lastLen - 1]) { |
| var lastPts = []; |
| lastPts.push(verbs[0][0]); |
| lastPts.push(verbs[0][1]); |
| verbs.push(lastPts); |
| } |
| contours.push(verbs); |
| } |
| } |
| if (contours.length > 0) { |
| tests.push(contours); |
| testTitles.push(title); |
| } |
| } |
| |
| function parseRect(test, title) { |
| var contours = []; |
| var rectStrs = test.split("path.addRect"); |
| var pattern = /-?\d+\.*\d*/g; |
| hasXor = test.split("kEvenOdd_FillType").length > 1; |
| for (var r in rectStrs) { |
| var rect = rectStrs[r]; |
| var sideStrs = rect.match(pattern); |
| var sides = []; |
| for (var wd in sideStrs) { |
| var num = parseFloat(sideStrs[wd]); |
| if (isNaN(num)) continue; |
| sides.push(num); |
| } |
| if (sides.length == 0) |
| continue; |
| var verbs = []; |
| var topLeft = []; |
| topLeft.push(sides[0]); topLeft.push(sides[1]); |
| var topRight = []; |
| topRight.push(sides[2]); topRight.push(sides[1]); |
| var botLeft = []; |
| botLeft.push(sides[0]); botLeft.push(sides[3]); |
| var botRight = []; |
| botRight.push(sides[2]); botRight.push(sides[3]); |
| verbs.push(topLeft); |
| if (sides[4] == 0) { |
| verbs.push(topRight); |
| verbs.push(botRight); |
| verbs.push(botLeft); |
| } else { |
| verbs.push(botLeft); |
| verbs.push(botRight); |
| verbs.push(topRight); |
| } |
| verbs.push(topLeft); |
| contours.push(verbs); |
| } |
| if (contours.length > 0) { |
| tests.push(contours); |
| testTitles.push(title); |
| } |
| } |
| |
| function init(test) { |
| var canvas = document.getElementById('canvas'); |
| if (!canvas.getContext) return; |
| canvas.width = window.innerWidth - at_x; |
| canvas.height = window.innerHeight - at_y; |
| ctx = canvas.getContext('2d'); |
| var xmin = Infinity; |
| var xmax = -Infinity; |
| var ymin = Infinity; |
| var ymax = -Infinity; |
| for (var contours in test) { |
| var contour = test[contours]; |
| for (var verbs in contour) { |
| var verb = contour[verbs]; |
| var last = verb.length; |
| for (var idx = 0; idx < last; idx += 2) { |
| xmin = Math.min(xmin, verb[idx]); |
| xmax = Math.max(xmax, verb[idx]); |
| ymin = Math.min(ymin, verb[idx + 1]); |
| ymax = Math.max(ymax, verb[idx + 1]); |
| } |
| } |
| } |
| var subscale = 1; |
| while ((xmax - xmin) * subscale < 0.1 && (ymax - ymin) * subscale < 0.1) { |
| subscale *= 10; |
| } |
| columns = Math.ceil(xmax) - Math.floor(xmin) + 1; |
| rows = Math.ceil(ymax) - Math.floor(ymin) + 1; |
| xStart = Math.floor(xmin); |
| yStart = Math.floor(ymin); |
| var hscale = ctx.canvas.width / columns / ticks; |
| var vscale = ctx.canvas.height / rows / ticks; |
| scale = Math.floor(Math.min(hscale, vscale)) * subscale; |
| } |
| |
| function drawPoint(px, py, xoffset, yoffset, unit) { |
| var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places); |
| var _px = px * unit + xoffset; |
| var _py = py * unit + yoffset; |
| ctx.beginPath(); |
| ctx.arc(_px, _py, 3, 0, Math.PI*2, true); |
| ctx.closePath(); |
| ctx.fill(); |
| ctx.fillText(label, _px + 5, _py); |
| } |
| |
| function draw(test, title, _at_x, _at_y, scale) { |
| ctx.fillStyle = "rgba(0,0,0, 0.1)"; |
| ctx.font = "normal 50px Arial"; |
| ctx.fillText(title, 50, 50); |
| ctx.font = "normal 10px Arial"; |
| |
| var unit = scale * ticks; |
| ctx.lineWidth = 1; |
| var i; |
| for (i = 0; i <= rows * ticks; ++i) { |
| ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black"; |
| ctx.beginPath(); |
| ctx.moveTo(_at_x + 0, _at_y + i * scale); |
| ctx.lineTo(_at_x + unit * columns, _at_y + i * scale); |
| ctx.stroke(); |
| } |
| for (i = 0; i <= columns * ticks; ++i) { |
| ctx.strokeStyle = (i % ticks) != 0 ? "rgb(160,160,160)" : "black"; |
| ctx.beginPath(); |
| ctx.moveTo(_at_x + i * scale, _at_y + 0); |
| ctx.lineTo(_at_x + i * scale, _at_y + unit * rows); |
| ctx.stroke(); |
| } |
| |
| var xoffset = xStart * -unit + _at_x; |
| var yoffset = yStart * -unit + _at_y; |
| |
| ctx.fillStyle = "rgb(40,80,60)" |
| for (i = 0; i <= columns; i += (1 / ticks)) |
| { |
| num = (xoffset - _at_x) / -unit + i; |
| ctx.fillText(num.toFixed(0), i * unit + _at_y - 5, 10); |
| } |
| for (i = 0; i <= rows; i += (1 / ticks)) |
| { |
| num = (yoffset - _at_x) / -unit + i; |
| ctx.fillText(num.toFixed(0), 0, i * unit + _at_y + 0); |
| } |
| |
| ctx.strokeStyle = "red"; |
| var contours, verbs, pts; |
| ctx.beginPath(); |
| for (contours in test) { |
| var contour = test[contours]; |
| if (contours == 2) ctx.strokeStyle = "blue"; |
| var first = true; |
| for (verbs in contour) { |
| var verb = contour[verbs]; |
| switch (verb.length) { |
| case 2: |
| if (first) { |
| ctx.moveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit); |
| first = false; |
| } else |
| ctx.lineTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit); |
| break; |
| case 4: |
| ctx.quadraticCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit, |
| xoffset + verb[2] * unit, yoffset + verb[3] * unit); |
| break; |
| case 6: |
| ctx.bezierCurveTo(xoffset + verb[0] * unit, yoffset + verb[1] * unit, |
| xoffset + verb[2] * unit, yoffset + verb[3] * unit, |
| xoffset + verb[4] * unit, yoffset + verb[5] * unit); |
| break; |
| } |
| } |
| ctx.closePath(); |
| } |
| if (hasXor) { |
| ctx.fillType=xor; // how is this done? |
| } |
| ctx.stroke(); |
| ctx.fillStyle="rgba(192,192,255, 0.3)"; |
| ctx.fill(); |
| |
| if (!draw_labels) { |
| return; |
| } |
| ctx.fillStyle="blue"; |
| for (contours in test) { |
| var contour = test[contours]; |
| for (verbs in contour) { |
| var verb = contour[verbs]; |
| for (i = 0; i < verb.length; i += 2) { |
| x = verb[i]; |
| y = verb[i + 1]; |
| drawPoint(x, y, xoffset, yoffset, unit); |
| } |
| } |
| } |
| } |
| |
| var mouseX = Infinity, mouseY; |
| |
| function calcXY() { |
| var e = window.event; |
| var tgt = e.target || e.srcElement; |
| var left = tgt.offsetLeft; |
| var top = tgt.offsetTop; |
| var unit = scale * ticks; |
| mouseX = (e.clientX - left - Math.ceil(at_x) + 1) / unit + xStart; |
| mouseY = (e.clientY - top - Math.ceil(at_y)) / unit + yStart; |
| } |
| |
| function handleMouseOver() { |
| calcXY(); |
| var num = mouseX.toFixed(3) + ", " + mouseY.toFixed(3); |
| ctx.beginPath(); |
| ctx.rect(300,100,200,10); |
| ctx.fillStyle="white"; |
| ctx.fill(); |
| ctx.fillStyle="black"; |
| ctx.fillText(num, 300, 108); |
| } |
| |
| function handleMouseClick() { |
| calcXY(); |
| // drawInset(); |
| } |
| |
| function drawTop() { |
| init(tests[testIndex]); |
| redraw(); |
| } |
| |
| function redraw() { |
| ctx.beginPath(); |
| ctx.rect(0, 0, ctx.canvas.width, ctx.canvas.height); |
| ctx.fillStyle="white"; |
| ctx.fill(); |
| draw(tests[testIndex], testTitles[testIndex], at_x, at_y, scale); |
| // if (insetScale != scale && mouseX != Infinity) |
| // drawInset(); |
| } |
| |
| function doKeyPress(evt) { |
| var char = String.fromCharCode(evt.charCode); |
| switch (char) { |
| case 'N': |
| testIndex += 9; |
| case 'n': |
| if (++testIndex >= tests.length) |
| testIndex = 0; |
| mouseX = Infinity; |
| drawTop(); |
| break; |
| case 'P': |
| testIndex -= 9; |
| case 'p': |
| if (--testIndex < 0) |
| testIndex = tests.length - 1; |
| mouseX = Infinity; |
| drawTop(); |
| break; |
| case 'T': |
| case 't': |
| break; |
| case '-': |
| drawTop(); |
| break; |
| case '=': |
| case '+': |
| drawTop(); |
| break; |
| case 'x': |
| draw_labels ^= true; |
| drawTop(); |
| break; |
| } |
| } |
| |
| function start() { |
| for (i = 0; i < testDivs.length; ++i) { |
| var title = testDivs[i].id.toString(); |
| var str = testDivs[i].firstChild.data; |
| if (str.split("addRect").length > 1) { |
| parseRect(str, title); |
| } else { |
| parse(str, title); |
| } |
| } |
| drawTop(); |
| window.addEventListener('keypress', doKeyPress, true); |
| window.onresize = function() { |
| drawTop(); |
| } |
| } |
| |
| </script> |
| </head> |
| |
| <body onLoad="start();"> |
| <canvas id="canvas" width="750" height="500" |
| onmousemove="handleMouseOver()" |
| onclick="handleMouseClick()" |
| ></canvas > |
| </body> |
| </html> |