Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(280)

Side by Side Diff: tools/pathops_visualizer.htm

Issue 1394503003: fix some pathops bugs found in 1M skps (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: init to avoid warning Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/pathops_sorter.htm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <html> 1 <html>
2 <head> 2 <head>
3 <div height="0" hidden="true"> 3 <div height="0" hidden="true">
4 4
5 <div id="battleOp183"> 5 <div id="skpwww_gorcraft_ru_1">
6 seg=1 {{{6.31801322e-006f, -60}, {0, -83}}} 6 seg=1 {{{{1170, 4559}, {1176, 4559}, {1176, 4565}}}, 0.707106769f}
7 seg=2 {{{0, -83}, {32.0712242f, -83}, {61.2726326f, -64.5230865f}, {75.0056381f, -35.5408783f}}} 7 seg=2 {{{1176, 4565}, {1176, 4590}}}
8 seg=3 {{{75.0056381f, -35.5408783f}, {88.7386475f, -6.55867052f}, {84.545517f, 2 7.7420006f}, {64.2353287f, 52.562561f}}} 8 seg=3 {{{{1176, 4590}, {1176, 4595}, {1171, 4595}}}, 0.707106769f}
9 seg=4 {{{64.2353287f, 52.562561f}, {60.2773972f, 57.3994484f}, {55.7858162f, 61. 773819f}, {50.8459854f, 65.6024933f}}} 9 seg=4 {{{1171, 4595}, {83, 4595}}}
10 seg=5 {{{50.8459854f, 65.6024933f}, {36.756134f, 47.423481f}}} 10 seg=5 {{{{83, 4595}, {78.0086746f, 4595}, {78, 4590.00586f}}}, 0.707720578f}
11 seg=6 {{{36.756134f, 47.423481f}, {40.3270988f, 44.6557693f}, {43.5740242f, 41.4 93576f}, {46.4351768f, 37.9970322f}}} 11 seg=6 {{{78, 4590.00586f}, {78, 4565}}}
12 seg=7 {{{46.4351768f, 37.9970322f}, {61.1172447f, 20.0544662f}, {64.1484222f, -4 .74120331f}, {54.2209473f, -25.6921959f}}} 12 seg=7 {{{{78, 4565}, {78, 4559}, {84, 4559}}}, 0.707106769f}
13 seg=8 {{{54.2209473f, -25.6921959f}, {44.2934723f, -46.6431847f}, {23.1840267f, -60}, {6.31801322e-006f, -60}}} 13 seg=8 {{{84, 4559}, {1170, 4559}}}
14 op union 14 op union
15 seg=9 {{{50.8459854f, 65.6024857f}, {23.334074f, 86.9259186f}, {-14.5602179f, 88 .8177719f}, {-44.0591507f, 70.3405457f}}} 15 seg=9 {{{78, 4590}, {78, 4565}}}
16 seg=10 {{{-44.0591507f, 70.3405457f}, {-73.5580902f, 51.8633156f}, {-88.3942261f , 16.9427452f}, {-81.2158127f, -17.116993f}}} 16 seg=10 {{{{78, 4565}, {78, 4559}, {84, 4559}}}, 0.707106769f}
17 seg=11 {{{-81.2158127f, -17.116993f}, {-74.0374069f, -51.1767159f}, {-46.3696136 f, -77.1391754f}, {-11.9226456f, -82.1392059f}}} 17 seg=11 {{{84, 4559}, {158, 4559}}}
18 seg=12 {{{-11.9226456f, -82.1392059f}, {-8.61876869f, -59.3777466f}}} 18 seg=12 {{{158, 4559}, {158, 4596}}}
19 seg=13 {{{-8.61876869f, -59.3777466f}, {-33.5202026f, -55.7632599f}, {-53.521015 2f, -36.9952087f}, {-58.7102203f, -12.3737135f}}} 19 seg=13 {{{158, 4596}, {84, 4596}}}
20 seg=14 {{{-58.7102203f, -12.3737135f}, {-63.8994179f, 12.2477798f}, {-53.1744957 f, 37.4915581f}, {-31.849966f, 50.8485832f}}} 20 seg=14 {{{{84, 4596}, {78, 4596}, {78, 4590}}}, 0.707106769f}
21 seg=15 {{{-31.849966f, 50.8485832f}, {-10.5254354f, 64.2056046f}, {16.8680305f, 62.8380051f}, {36.7561607f, 47.4234695f}}} 21 debugShowConicLineIntersection wtTs[0]=1 {{{{1170,4559}, {1176,4559}, {1176,4565 }}}, 0.707106769} {{1176,4565}} wnTs[0]=0 {{{1176,4565}, {1176,4590}}}
22 seg=16 {{{36.7561607f, 47.4234695f}, {50.8459854f, 65.6024857f}}} 22 debugShowConicLineIntersection wtTs[0]=0 {{{{1170,4559}, {1176,4559}, {1176,4565 }}}, 0.707106769} {{1170,4559}} wnTs[0]=1 {{{84,4559}, {1170,4559}}}
23 debugShowCubicLineIntersection wtTs[0]=0 {{{0,-83}, {32.0712242,-83}, {61.272632 6,-64.5230865}, {75.0056381,-35.5408783}}} {{0,-83}} wnTs[0]=1 {{{6.31801322e-00 6,-60}, {0,-83}}} 23 debugShowConicLineIntersection wtTs[0]=0 {{{{1176,4590}, {1176,4595}, {1171,4595 }}}, 0.707106769} {{1176,4590}} wnTs[0]=1 {{{1176,4565}, {1176,4590}}}
24 debugShowCubicLineIntersection wtTs[0]=1 {{{54.2209473,-25.6921959}, {44.2934723 ,-46.6431847}, {23.1840267,-60}, {6.31801322e-006,-60}}} {{6.31801322e-006,-60}} wnTs[0]=0 {{{6.31801322e-006,-60}, {0,-83}}} 24 debugShowConicLineIntersection wtTs[0]=1 {{{{1176,4590}, {1176,4595}, {1171,4595 }}}, 0.707106769} {{1171,4595}} wnTs[0]=0 {{{1171,4595}, {83,4595}}}
25 debugShowCubicIntersection wtTs[0]=1 {{{0,-83}, {32.0712242,-83}, {61.2726326,-6 4.5230865}, {75.0056381,-35.5408783}}} {{75.0056381,-35.5408783}} wnTs[0]=0 {{{7 5.0056381,-35.5408783}, {88.7386475,-6.55867052}, {84.545517,27.7420006}, {64.23 53287,52.562561}}} 25 debugShowConicLineIntersection wtTs[0]=0 {{{{83,4595}, {78.0086746,4595}, {78,45 90.00586}}}, 0.707720578} {{83,4595}} wnTs[0]=1 {{{1171,4595}, {83,4595}}}
26 debugShowCubicIntersection no intersect {{{0,-83}, {32.0712242,-83}, {61.2726326 ,-64.5230865}, {75.0056381,-35.5408783}}} {{{54.2209473,-25.6921959}, {44.293472 3,-46.6431847}, {23.1840267,-60}, {6.31801322e-006,-60}}} 26 debugShowConicLineIntersection wtTs[0]=1 {{{{83,4595}, {78.0086746,4595}, {78,45 90.00586}}}, 0.707720578} {{78,4590.00586}} wnTs[0]=0 {{{78,4590.00586}, {78,456 5}}}
27 debugShowCubicIntersection wtTs[0]=1 {{{75.0056381,-35.5408783}, {88.7386475,-6. 55867052}, {84.545517,27.7420006}, {64.2353287,52.562561}}} {{64.2353287,52.5625 61}} wnTs[0]=0 {{{64.2353287,52.562561}, {60.2773972,57.3994484}, {55.7858162,61 .773819}, {50.8459854,65.6024933}}} 27 debugShowConicLineIntersection wtTs[0]=0 {{{{78,4565}, {78,4559}, {84,4559}}}, 0 .707106769} {{78,4565}} wnTs[0]=1 {{{78,4590.00586}, {78,4565}}}
28 debugShowCubicLineIntersection wtTs[0]=1 {{{64.2353287,52.562561}, {60.2773972,5 7.3994484}, {55.7858162,61.773819}, {50.8459854,65.6024933}}} {{50.8459854,65.60 24933}} wnTs[0]=0 {{{50.8459854,65.6024933}, {36.756134,47.423481}}} 28 debugShowConicLineIntersection wtTs[0]=1 {{{{78,4565}, {78,4559}, {84,4559}}}, 0 .707106769} {{84,4559}} wnTs[0]=0 {{{84,4559}, {1170,4559}}}
29 debugShowCubicLineIntersection wtTs[0]=0 {{{36.756134,47.423481}, {40.3270988,44 .6557693}, {43.5740242,41.493576}, {46.4351768,37.9970322}}} {{36.756134,47.4234 81}} wnTs[0]=1 {{{50.8459854,65.6024933}, {36.756134,47.423481}}} 29 debugShowLineIntersection wtTs[0]=0.972972973 {{{158,4559}, {158,4596}}} {{158,4 595}} wnTs[0]=0.931066 {{{1171,4595}, {83,4595}}}
30 debugShowCubicIntersection wtTs[0]=1 {{{36.756134,47.423481}, {40.3270988,44.655 7693}, {43.5740242,41.493576}, {46.4351768,37.9970322}}} {{46.4351768,37.9970322 }} wnTs[0]=0 {{{46.4351768,37.9970322}, {61.1172447,20.0544662}, {64.1484222,-4. 74120331}, {54.2209473,-25.6921959}}} 30 SkOpSegment::addT insert t=0.931066176 segID=4 spanID=29
31 debugShowCubicIntersection wtTs[0]=1 {{{46.4351768,37.9970322}, {61.1172447,20.0 544662}, {64.1484222,-4.74120331}, {54.2209473,-25.6921959}}} {{54.2209473,-25.6 921959}} wnTs[0]=0 {{{54.2209473,-25.6921959}, {44.2934723,-46.6431847}, {23.184 0267,-60}, {6.31801322e-006,-60}}} 31 SkOpSegment::addT insert t=0.972972973 segID=12 spanID=30
32 debugShowCubicIntersection no intersect {{{64.2353287,52.562561}, {60.2773972,57 .3994484}, {55.7858162,61.773819}, {50.8459854,65.6024933}}} {{{50.8459854,65.60 24857}, {23.334074,86.9259186}, {-14.5602179,88.8177719}, {-44.0591507,70.340545 7}}} 32 debugShowConicLineIntersection no intersect {{{{84,4596}, {78,4596}, {78,4590}}} , 0.707106769} {{{1171,4595}, {83,4595}}}
33 debugShowCubicLineIntersection no intersect {{{64.2353287,52.562561}, {60.277397 2,57.3994484}, {55.7858162,61.773819}, {50.8459854,65.6024933}}} {{{36.7561607,4 7.4234695}, {50.8459854,65.6024857}}} 33 debugShowConicLineIntersection no intersect {{{{83,4595}, {78.0086746,4595}, {78 ,4590.00586}}}, 0.707720578} {{{78,4590}, {78,4565}}}
34 debugShowCubicLineIntersection wtTs[0]=0 {{{50.8459854,65.6024857}, {23.334074,8 6.9259186}, {-14.5602179,88.8177719}, {-44.0591507,70.3405457}}} {{50.8459854,65 .6024857}} wnTs[0]=2.62183e-007 {{{50.8459854,65.6024933}, {36.756134,47.423481} }} 34 id=1 1=(0,1) [4,2] id=2 2=(0,0.5) [1] 4=(0.5,1) [1]
35 SkOpSegment::addT alias t=2.62182896e-007 segID=5 spanID=9 35 id=1 1=(0,0.5) [4,2] 3=(0.5,1) [4] id=2 2=(0,0.5) [1] 4=(0.5,1) [3,1]
36 debugShowCubicLineIntersection wtTs[0]=0.999999628 {{{-31.849966,50.8485832}, {- 10.5254354,64.2056046}, {16.8680305,62.8380051}, {36.7561607,47.4234695}}} {{36. 7561378,47.4234886}} wnTs[0]=1 {{{50.8459854,65.6024933}, {36.756134,47.423481}} } 36 id=1 1=(0,0.5) [2] 3=(0.5,1) [6,4] id=2 2=(0,0.5) [1] 4=(0.5,0.75) [3] 6=(0.75,1 ) [3]
37 SkOpSegment::addT alias t=0.999999682 segID=5 spanID=10 37 id=1 3=(0.5,1) [6,4] id=2 4=(0.5,0.75) [3] 6=(0.75,1) [3]
38 SkOpSegment::addT insert t=0.999999628 segID=15 spanID=33 38 id=1 3=(0.5,0.75) [6,4] 5=(0.75,1) [6] id=2 4=(0.5,0.75) [3] 6=(0.75,1) [5,3]
39 debugShowLineIntersection wtTs[0]=2.62182896e-007 {{{50.8459854,65.6024933}, {36 .756134,47.423481}}} {{50.8459854,65.6024857}} wnTs[0]=1 {{{36.7561607,47.423469 5}, {50.8459854,65.6024857}}} 39 id=1 3=(0.5,0.75) [4] 5=(0.75,1) [10,6] id=2 4=(0.5,0.75) [3] 6=(0.75,0.875) [5] 10=(0.875,1) [5]
40 debugShowCubicIntersection no intersect {{{36.756134,47.423481}, {40.3270988,44. 6557693}, {43.5740242,41.493576}, {46.4351768,37.9970322}}} {{{-31.849966,50.848 5832}, {-10.5254354,64.2056046}, {16.8680305,62.8380051}, {36.7561607,47.4234695 }}} 40 id=1 5=(0.75,1) [10,6] id=2 6=(0.75,0.875) [5] 10=(0.875,1) [5]
41 debugShowCubicLineIntersection no intersect {{{36.756134,47.423481}, {40.3270988 ,44.6557693}, {43.5740242,41.493576}, {46.4351768,37.9970322}}} {{{36.7561607,47 .4234695}, {50.8459854,65.6024857}}} 41 id=1 5=(0.75,0.875) [10,6] 7=(0.875,1) [10] id=2 6=(0.75,0.875) [5] 10=(0.875,1) [7,5]
42 debugShowCubicIntersection wtTs[0]=1 {{{50.8459854,65.6024857}, {23.334074,86.92 59186}, {-14.5602179,88.8177719}, {-44.0591507,70.3405457}}} {{-44.0591507,70.34 05457}} wnTs[0]=0 {{{-44.0591507,70.3405457}, {-73.5580902,51.8633156}, {-88.394 2261,16.9427452}, {-81.2158127,-17.116993}}} 42 id=1 5=(0.75,0.875) [10] 7=(0.875,1) [10] id=2 10=(0.875,1) [7,5]
43 debugShowCubicLineIntersection wtTs[0]=0 {{{50.8459854,65.6024857}, {23.334074,8 6.9259186}, {-14.5602179,88.8177719}, {-44.0591507,70.3405457}}} {{50.8459854,65 .6024857}} wnTs[0]=1 {{{36.7561607,47.4234695}, {50.8459854,65.6024857}}} 43 id=1 7=(0.875,1) [16,10] id=2 10=(0.875,0.9375) [7] 16=(0.9375,1) [7]
44 debugShowCubicIntersection wtTs[0]=1 {{{-44.0591507,70.3405457}, {-73.5580902,51 .8633156}, {-88.3942261,16.9427452}, {-81.2158127,-17.116993}}} {{-81.2158127,-1 7.116993}} wnTs[0]=0 {{{-81.2158127,-17.116993}, {-74.0374069,-51.1767159}, {-46 .3696136,-77.1391754}, {-11.9226456,-82.1392059}}} 44 id=1 7=(0.875,0.9375) [16,10] 9=(0.9375,1) [16] id=2 10=(0.875,0.9375) [7] 16=(0 .9375,1) [9,7]
45 debugShowCubicIntersection no intersect {{{-44.0591507,70.3405457}, {-73.5580902 ,51.8633156}, {-88.3942261,16.9427452}, {-81.2158127,-17.116993}}} {{{-8.6187686 9,-59.3777466}, {-33.5202026,-55.7632599}, {-53.5210152,-36.9952087}, {-58.71022 03,-12.3737135}}} 45 id=1 7=(0.875,0.9375) [16] 9=(0.9375,1) [16] id=2 16=(0.9375,1) [9,7]
46 debugShowCubicIntersection no intersect {{{-44.0591507,70.3405457}, {-73.5580902 ,51.8633156}, {-88.3942261,16.9427452}, {-81.2158127,-17.116993}}} {{{-58.710220 3,-12.3737135}, {-63.8994179,12.2477798}, {-53.1744957,37.4915581}, {-31.849966, 50.8485832}}} 46 id=1 9=(0.9375,1) [20,16] id=2 16=(0.9375,0.96875) [9] 20=(0.96875,1) [9]
47 debugShowCubicLineIntersection wtTs[0]=1 {{{-81.2158127,-17.116993}, {-74.037406 9,-51.1767159}, {-46.3696136,-77.1391754}, {-11.9226456,-82.1392059}}} {{-11.922 6456,-82.1392059}} wnTs[0]=0 {{{-11.9226456,-82.1392059}, {-8.61876869,-59.37774 66}}} 47 id=1 9=(0.9375,0.96875) [20,16] 11=(0.96875,1) [20] id=2 16=(0.9375,0.96875) [9] 20=(0.96875,1) [11,9]
48 debugShowCubicIntersection no intersect {{{-81.2158127,-17.116993}, {-74.0374069 ,-51.1767159}, {-46.3696136,-77.1391754}, {-11.9226456,-82.1392059}}} {{{-8.6187 6869,-59.3777466}, {-33.5202026,-55.7632599}, {-53.5210152,-36.9952087}, {-58.71 02203,-12.3737135}}} 48 id=1 9=(0.9375,0.96875) [20] 11=(0.96875,1) [20] id=2 20=(0.96875,1) [11,9]
49 debugShowCubicLineIntersection wtTs[0]=0 {{{-8.61876869,-59.3777466}, {-33.52020 26,-55.7632599}, {-53.5210152,-36.9952087}, {-58.7102203,-12.3737135}}} {{-8.618 76869,-59.3777466}} wnTs[0]=1 {{{-11.9226456,-82.1392059}, {-8.61876869,-59.3777 466}}} 49 id=1 11=(0.96875,1) [24,20] id=2 20=(0.96875,0.984375) [11] 24=(0.984375,1) [11]
50 debugShowCubicIntersection wtTs[0]=1 {{{-8.61876869,-59.3777466}, {-33.5202026,- 55.7632599}, {-53.5210152,-36.9952087}, {-58.7102203,-12.3737135}}} {{-58.710220 3,-12.3737135}} wnTs[0]=0 {{{-58.7102203,-12.3737135}, {-63.8994179,12.2477798}, {-53.1744957,37.4915581}, {-31.849966,50.8485832}}} 50 id=1 11=(0.96875,0.984375) [24,20] 13=(0.984375,1) [24] id=2 20=(0.96875,0.98437 5) [11] 24=(0.984375,1) [13,11]
51 debugShowCubicIntersection wtTs[0]=1 {{{-58.7102203,-12.3737135}, {-63.8994179,1 2.2477798}, {-53.1744957,37.4915581}, {-31.849966,50.8485832}}} {{-31.849966,50. 8485832}} wnTs[0]=0 {{{-31.849966,50.8485832}, {-10.5254354,64.2056046}, {16.868 0305,62.8380051}, {36.7561607,47.4234695}}} 51 id=1 11=(0.96875,0.984375) [24] 13=(0.984375,1) [24] id=2 24=(0.984375,1) [13,11 ]
52 debugShowCubicLineIntersection wtTs[0]=1 {{{-31.849966,50.8485832}, {-10.5254354 ,64.2056046}, {16.8680305,62.8380051}, {36.7561607,47.4234695}}} {{36.7561607,47 .4234695}} wnTs[0]=0 {{{36.7561607,47.4234695}, {50.8459854,65.6024857}}} 52 id=1 13=(0.984375,1) [28,24] id=2 24=(0.984375,0.992188) [13] 28=(0.992188,1) [1 3]
53 SkOpSegment::sortAngles [4] tStart=1 [8] 53 id=1 13=(0.984375,0.992188) [24] 15=(0.992188,1) [28] id=2 24=(0.984375,0.992188 ) [13] 28=(0.992188,1) [15]
54 SkOpAngle::after [4/1] 1/1 tStart=1 tEnd=0 < [16/8] 9/9 tStart=1 tEnd=0 < [5/2] 9/9 tStart=0 tEnd=1 T 7 54 id=1 15=(0.992188,1) [28] id=2 28=(0.992188,1) [15]
55 SkOpAngle::afterPart {{{50.8459854,65.6024933}, {55.7858162,61.773819}, {60.2773 972,57.3994484}, {64.2353287,52.562561}}} id=4 55 id=1 15=(0.992188,1) [32,28] id=2 28=(0.992188,0.996094) [15] 32=(0.996094,1) [1 5]
56 SkOpAngle::afterPart {{{50.8459854,65.6024933}, {36.7561607,47.4234695}}} id=16 56 id=1 15=(0.992188,0.996094) [28] 17=(0.996094,1) [28,32] id=2 28=(0.992188,0.996 094) [17,15] 32=(0.996094,1) [17]
57 SkOpAngle::afterPart {{{50.8459854,65.6024933}, {36.756134,47.423481}}} id=5 57 id=1 17=(0.996094,1) [32] id=2 32=(0.996094,1) [17]
58 SkOpAngle::after [4/1] 1/1 tStart=1 tEnd=0 < [9/5] 17/17 tStart=0 tEnd=1 < [16/8 ] 9/9 tStart=1 tEnd=0 F 4 58 id=1 17=(0.996094,1) [36,32] id=2 32=(0.996094,0.998047) [17] 36=(0.998047,1) [1 7]
59 SkOpAngle::afterPart {{{50.8459854,65.6024933}, {55.7858162,61.773819}, {60.2773 972,57.3994484}, {64.2353287,52.562561}}} id=4 59 id=1 19=(0.998047,1) [36] id=2 36=(0.998047,1) [19]
60 SkOpAngle::afterPart {{{50.8459854,65.6024933}, {23.334074,86.9259186}, {-14.560 2179,88.8177719}, {-44.0591507,70.3405457}}} id=9 60 id=1 19=(0.998047,1) [38,36] id=2 36=(0.998047,0.999023) [19] 38=(0.999023,1) [1 9]
61 SkOpAngle::afterPart {{{50.8459854,65.6024933}, {36.7561607,47.4234695}}} id=16 61 setPerp t=0.998046875 cPt=(78.0000229,4590.01658) == oppT=0.998483762 fPerpPt=(7 8.0000301,4590.01658)
62 SkOpAngle::after [16/8] 9/9 tStart=1 tEnd=0 < [9/5] 17/17 tStart=0 tEnd=1 < [5/2 ] 9/9 tStart=0 tEnd=1 F 5 62 setPerp t=0.999023438 cPt=(78.0000057,4590.00829) == oppT=0.99965636 fPerpPt=(78 .0000048,4590.00829)
63 SkOpAngle::afterPart {{{50.8459854,65.6024933}, {36.7561607,47.4234695}}} id=16 63 setPerp t=0.999023438 cPt=(78.0000168,4590.01276) == oppT=0.998496341 fPerpPt=(7 8.0000136,4590.01276)
64 SkOpAngle::afterPart {{{50.8459854,65.6024933}, {23.334074,86.9259186}, {-14.560 2179,88.8177719}, {-44.0591507,70.3405457}}} id=9 64 setPerp t=0.998046875 cPt=(78.0000229,4590.01658) == oppT=0.998483762 fPerpPt=(7 8.0000301,4590.01658)
65 SkOpAngle::afterPart {{{50.8459854,65.6024933}, {36.756134,47.423481}}} id=5 65 setPerp t=0.999023438 cPt=(78.0000057,4590.00829) == oppT=0.99965636 fPerpPt=(78 .0000048,4590.00829)
66 SkOpAngle::after [5/2] 9/9 tStart=0 tEnd=1 < [9/5] 17/17 tStart=0 tEnd=1 < [4/1] 1/1 tStart=1 tEnd=0 T 4 66 setPerp t=0.999023438 cPt=(78.0000168,4590.01276) == oppT=0.998496341 fPerpPt=(7 8.0000136,4590.01276)
67 SkOpAngle::afterPart {{{50.8459854,65.6024933}, {36.756134,47.423481}}} id=5 67 setPerp t=0.999339899 cPt=(78.0000103,4590.01053) == oppT=0.998759893 fPerpPt=(7 8.0000092,4590.01053)
68 SkOpAngle::afterPart {{{50.8459854,65.6024933}, {23.334074,86.9259186}, {-14.560 2179,88.8177719}, {-44.0591507,70.3405457}}} id=9 68 id=1 21=(0.99934,0.99934) [36] id=2 36=(0.99876,0.99876) [21]
69 SkOpAngle::afterPart {{{50.8459854,65.6024933}, {55.7858162,61.773819}, {60.2773 972,57.3994484}, {64.2353287,52.562561}}} id=4 69 debugShowConicIntersection wtTs[0]=0.999339899 {{{{83,4595}, {78.0086746,4595}, {78,4590.00586}}}, 0.707720578} {{78.0000076,4590.01074}} wnTs[0]=0.99876 {{{{84 ,4596}, {78,4596}, {78,4590}}}, 0.707106769}
70 SkOpSegment::sortAngles [5] tStart=0 [9] 70 SkOpSegment::addT insert t=0.999339899 segID=5 spanID=31
71 SkOpSegment::sortAngles [5] tStart=1 [10] 71 SkOpSegment::addT insert t=0.998759893 segID=14 spanID=32
72 SkOpAngle::after [5/3] 25/25 tStart=1 tEnd=0 < [15/7] 1/1 tStart=0.999999628 tEn d=1 < [15/6] 17/17 tStart=0.999999628 tEnd=0 T 4 72 debugShowLineIntersection wtTs[0]=0 {{{78,4590}, {78,4565}}} {{78,4590}} wtTs[1] =1 {{78,4565}} wnTs[0]=0.00023432 {{{78,4590.00586}, {78,4565}}} wnTs[1]=1
73 SkOpAngle::afterPart {{{36.756134,47.423481}, {50.8459854,65.6024933}}} id=5 73 SkOpSegment::addT insert t=0.000234320081 segID=6 spanID=33
74 SkOpAngle::afterPart {{{36.756134,47.423481}, {36.7561414,47.4234752}, {36.75615 33,47.4234753}, {36.7561607,47.4234695}}} id=15 74 debugShowConicLineIntersection wtTs[0]=0 {{{{78,4565}, {78,4559}, {84,4559}}}, 0 .707106769} {{78,4565}} wnTs[0]=1 {{{78,4590.00586}, {78,4565}}}
75 SkOpAngle::afterPart {{{36.756134,47.423481}, {16.8680057,62.8380003}, {-10.5254 434,64.2055996}, {-31.849966,50.8485832}}} id=15 75 debugShowConicLineIntersection wtTs[0]=1 {{{{84,4596}, {78,4596}, {78,4590}}}, 0 .707106769} {{78,4590}} wnTs[0]=0.00023432 {{{78,4590.00586}, {78,4565}}}
76 SkOpAngle::after [5/3] 25/25 tStart=1 tEnd=0 < [6/4] 1/1 tStart=0 tEnd=1 < [15/7 ] 1/1 tStart=0.999999628 tEnd=1 T 7 76 debugShowConicLineIntersection wtTs[0]=0 {{{{78,4565}, {78,4559}, {84,4559}}}, 0 .707106769} {{78,4565}} wnTs[0]=1 {{{78,4590}, {78,4565}}}
77 SkOpAngle::afterPart {{{36.756134,47.423481}, {50.8459854,65.6024933}}} id=5 77 id=1 1=(0,1) [4,2] id=2 2=(0,0.5) [1] 4=(0.5,1) [1]
78 SkOpAngle::afterPart {{{36.756134,47.423481}, {40.3270988,44.6557693}, {43.57402 42,41.493576}, {46.4351768,37.9970322}}} id=6 78 id=1 1=(0,0.5) [4,2] 3=(0.5,1) [2,4] id=2 2=(0,0.5) [3,1] 4=(0.5,1) [3,1]
79 SkOpAngle::afterPart {{{36.756134,47.423481}, {36.7561414,47.4234752}, {36.75615 33,47.4234753}, {36.7561607,47.4234695}}} id=15 79 id=1 1=(0,0.5) [6,4,2] 3=(0.5,1) [6,4] id=2 2=(0,0.25) [1] 6=(0.25,0.5) [1,3] 4= (0.5,1) [3,1]
80 SkOpSegment::sortAngles [6] tStart=0 [11] 80 id=1 1=(0,0.25) [6,2] 5=(0.25,0.5) [2,4,6] 3=(0.5,1) [6,4] id=2 2=(0,0.25) [5,1] 6=(0.25,0.5) [5,1,3] 4=(0.5,1) [5,3]
81 id=1 1=(0,0.25) [6,2] 5=(0.25,0.5) [2,4,6] 3=(0.5,1) [8,6,4] id=2 2=(0,0.25) [5, 1] 6=(0.25,0.5) [5,1,3] 4=(0.5,0.75) [5,3] 8=(0.75,1) [3]
82 id=1 1=(0,0.25) [6,2] 5=(0.25,0.5) [2,4,6] 3=(0.5,0.75) [8,6,4] 7=(0.75,1) [4,8] id=2 2=(0,0.25) [5,1] 6=(0.25,0.5) [5,1,3] 4=(0.5,0.75) [7,5,3] 8=(0.75,1) [7,3 ]
83 id=1 1=(0,0.25) [6,2] 5=(0.25,0.5) [2,4,6] 3=(0.5,0.75) [8,6,4] 7=(0.75,1) [10,4 ,8] id=2 2=(0,0.25) [5,1] 6=(0.25,0.5) [5,1,3] 4=(0.5,0.75) [7,5,3] 8=(0.75,0.87 5) [7,3] 10=(0.875,1) [7]
84 id=1 1=(0,0.25) [6,2] 5=(0.25,0.5) [2,4,6] 3=(0.5,0.75) [8,6,4] 7=(0.75,0.875) [ 10,4,8] 9=(0.875,1) [8,10] id=2 2=(0,0.25) [5,1] 6=(0.25,0.5) [5,1,3] 4=(0.5,0.7 5) [7,5,3] 8=(0.75,0.875) [9,7,3] 10=(0.875,1) [9,7]
85 id=1 1=(0,0.25) [12,6,2] 5=(0.25,0.5) [12,4,6] 3=(0.5,0.75) [8,6,4] 7=(0.75,0.87 5) [10,4,8] 9=(0.875,1) [8,10] id=2 2=(0,0.125) [1] 12=(0.125,0.25) [1,5] 6=(0.2 5,0.5) [5,1,3] 4=(0.5,0.75) [7,5,3] 8=(0.75,0.875) [9,7,3] 10=(0.875,1) [9,7]
86 id=1 1=(0,0.125) [12,2] 11=(0.125,0.25) [2,6,12] 5=(0.25,0.5) [12,4,6] 3=(0.5,0. 75) [8,6,4] 7=(0.75,0.875) [10,4,8] 9=(0.875,1) [8,10] id=2 2=(0,0.125) [11,1] 1 2=(0.125,0.25) [11,1,5] 6=(0.25,0.5) [11,5,3] 4=(0.5,0.75) [7,5,3] 8=(0.75,0.875 ) [9,7,3] 10=(0.875,1) [9,7]
87 id=1 1=(0,0.125) [12,2] 11=(0.125,0.25) [2,6,12] 5=(0.25,0.5) [14,12,4,6] 3=(0.5 ,0.75) [14,8,4] 7=(0.75,0.875) [10,4,8] 9=(0.875,1) [8,10] id=2 2=(0,0.125) [11, 1] 12=(0.125,0.25) [11,1,5] 6=(0.25,0.375) [11,5] 14=(0.375,0.5) [3,5] 4=(0.5,0. 75) [7,5,3] 8=(0.75,0.875) [9,7,3] 10=(0.875,1) [9,7]
88 id=1 1=(0,0.125) [12,2] 11=(0.125,0.25) [2,6,12] 5=(0.25,0.375) [14,12,6] 13=(0. 375,0.5) [6,4,14] 3=(0.5,0.75) [14,8,4] 7=(0.75,0.875) [10,4,8] 9=(0.875,1) [8,1 0] id=2 2=(0,0.125) [11,1] 12=(0.125,0.25) [11,1,5] 6=(0.25,0.375) [13,11,5] 14= (0.375,0.5) [13,3,5] 4=(0.5,0.75) [13,7,3] 8=(0.75,0.875) [9,7,3] 10=(0.875,1) [ 9,7]
89 id=1 1=(0,0.125) [12,2] 11=(0.125,0.25) [2,6,12] 5=(0.25,0.375) [14,12,6] 13=(0. 375,0.5) [6,4,14] 3=(0.5,0.75) [16,14,8,4] 7=(0.75,0.875) [16,10,8] 9=(0.875,1) [8,10] id=2 2=(0,0.125) [11,1] 12=(0.125,0.25) [11,1,5] 6=(0.25,0.375) [13,11,5] 14=(0.375,0.5) [13,3,5] 4=(0.5,0.625) [13,3] 16=(0.625,0.75) [3,7] 8=(0.75,0.87 5) [9,7,3] 10=(0.875,1) [9,7]
90 id=1 1=(0,0.125) [12,2] 11=(0.125,0.25) [2,6,12] 5=(0.25,0.375) [14,12,6] 13=(0. 375,0.5) [6,4,14] 3=(0.5,0.625) [16,14,4] 15=(0.625,0.75) [4,8,16] 7=(0.75,0.875 ) [16,10,8] 9=(0.875,1) [8,10] id=2 2=(0,0.125) [11,1] 12=(0.125,0.25) [11,1,5] 6=(0.25,0.375) [13,11,5] 14=(0.375,0.5) [13,3,5] 4=(0.5,0.625) [15,13,3] 16=(0.6 25,0.75) [15,3,7] 8=(0.75,0.875) [15,9,7] 10=(0.875,1) [9,7]
91 id=1 1=(0,0.125) [12,2] 11=(0.125,0.25) [18,2,6,12] 5=(0.25,0.375) [18,14,6] 13= (0.375,0.5) [6,4,14] 3=(0.5,0.625) [16,14,4] 15=(0.625,0.75) [4,8,16] 7=(0.75,0. 875) [16,10,8] 9=(0.875,1) [8,10] id=2 2=(0,0.125) [11,1] 12=(0.125,0.1875) [11, 1] 18=(0.1875,0.25) [5,11] 6=(0.25,0.375) [13,11,5] 14=(0.375,0.5) [13,3,5] 4=(0 .5,0.625) [15,13,3] 16=(0.625,0.75) [15,3,7] 8=(0.75,0.875) [15,9,7] 10=(0.875,1 ) [9,7]
92 setPerp t=0 cPt=(78,4565) == oppT=0 fPerpPt=(78,4565)
93 setPerp t=0.125 cPt=(78.1001678,4563.90822) == oppT=0.125 fPerpPt=(78.1001678,45 63.90822)
94 setPerp t=0.1875 cPt=(78.2316063,4563.34905) == oppT=0.1875 fPerpPt=(78.2316063, 4563.34905)
95 setPerp t=0.25 cPt=(78.4212702,4562.79143) == oppT=0.25 fPerpPt=(78.4212702,4562 .79143)
96 setPerp t=0.375 cPt=(78.9780269,4561.71674) == oppT=0.375 fPerpPt=(78.9780269,45 61.71674)
97 setPerp t=0.5 cPt=(79.7573593,4560.75736) == oppT=0.5 fPerpPt=(79.7573593,4560.7 5736)
98 setPerp t=0.625 cPt=(80.7167415,4559.97803) == oppT=0.625 fPerpPt=(80.7167415,45 59.97803)
99 setPerp t=0.75 cPt=(81.7914318,4559.42127) == oppT=0.75 fPerpPt=(81.7914318,4559 .42127)
100 setPerp t=0.875 cPt=(82.9082217,4559.10017) == oppT=0.875 fPerpPt=(82.9082217,45 59.10017)
101 setPerp t=1 cPt=(84,4559) == oppT=1 fPerpPt=(84,4559)
102 setPerp t=0 cPt=(78,4565) == oppT=0 fPerpPt=(78,4565)
103 setPerp t=1 cPt=(84,4559) == oppT=1 fPerpPt=(84,4559)
104 id=1 (empty) id=2 (empty)
105 debugShowConicIntersection wtTs[0]=0 {{{{78,4565}, {78,4559}, {84,4559}}}, 0.707 106769} {{78,4565}} wtTs[1]=1 {{84,4559}} wnTs[0]=0 {{{{78,4565}, {78,4559}, {84 ,4559}}}, 0.707106769} wnTs[1]=1
106 debugShowConicLineIntersection wtTs[0]=1 {{{{78,4565}, {78,4559}, {84,4559}}}, 0 .707106769} {{84,4559}} wnTs[0]=0 {{{84,4559}, {158,4559}}}
107 debugShowConicLineIntersection wtTs[0]=1 {{{{78,4565}, {78,4559}, {84,4559}}}, 0 .707106769} {{84,4559}} wnTs[0]=0 {{{84,4559}, {1170,4559}}}
108 debugShowLineIntersection wtTs[0]=0 {{{84,4559}, {158,4559}}} {{84,4559}} wtTs[1 ]=1 {{158,4559}} wnTs[0]=0 {{{84,4559}, {1170,4559}}} wnTs[1]=0.0681399632
109 SkOpSegment::addT insert t=0.0681399632 segID=8 spanID=34
110 debugShowLineIntersection wtTs[0]=0 {{{158,4559}, {158,4596}}} {{158,4559}} wnTs [0]=0.06814 {{{84,4559}, {1170,4559}}}
111 debugShowConicLineIntersection wtTs[0]=0 {{{{78,4565}, {78,4559}, {84,4559}}}, 0 .707106769} {{78,4565}} wnTs[0]=1 {{{78,4590}, {78,4565}}}
112 debugShowConicLineIntersection wtTs[0]=1 {{{{84,4596}, {78,4596}, {78,4590}}}, 0 .707106769} {{78,4590}} wnTs[0]=0 {{{78,4590}, {78,4565}}}
113 debugShowConicLineIntersection wtTs[0]=1 {{{{78,4565}, {78,4559}, {84,4559}}}, 0 .707106769} {{84,4559}} wnTs[0]=0 {{{84,4559}, {158,4559}}}
114 debugShowLineIntersection wtTs[0]=0 {{{158,4559}, {158,4596}}} {{158,4559}} wnTs [0]=1 {{{84,4559}, {158,4559}}}
115 debugShowLineIntersection wtTs[0]=0 {{{158,4596}, {84,4596}}} {{158,4596}} wnTs[ 0]=1 {{{158,4559}, {158,4596}}}
116 debugShowConicLineIntersection wtTs[0]=0 {{{{84,4596}, {78,4596}, {78,4590}}}, 0 .707106769} {{84,4596}} wnTs[0]=1 {{{158,4596}, {84,4596}}}
117 ------------x-------- start
118 ------------x-------- moveMultiples
119 ------------x-------- findCollapsed
120 ------------x-------- moveNearby
121 ------------x-------- align
122 ------------x-------- fixAligned
123 ------------x-------- addAlignIntersections
124 ------------x-------- expand2
125 ------------x-------- mark1
126 ------------x-------- missingCoincidence1
127 ------------x-------- expand3
128 ------------x-------- addExpanded2
129 ------------x-------- missingCoincidence2
130 SkOpSegment::markDone id=8 (84,4559 1170,4559) t=0 [15] (84,4559) tEnd=0.0681399 632 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
131 SkOpSegment::markDone id=10 (78,4565 78,4559 84,4559) t=0 [19] (78,4565) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
132 SkOpSegment::markDone id=6 (78,4590.00586 78,4565) t=0.000234320081 [33] (78,459 0) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
133 ------------x-------- pairs->apply
134 ------------x-------- pairs->findOverlaps
135 SkOpSegment::sortAngles [4] tStart=0.931066176 [29]
136 SkOpAngle::after [4/1] 31/31 tStart=0.931066176 tEnd=0 < [12/14] 7/7 tStart=0.97 2972973 tEnd=0 < [4/2] 15/15 tStart=0.931066176 tEnd=1 T 4
137 SkOpAngle::afterPart {{{158,4595}, {1171,4595}}} id=4
138 SkOpAngle::afterPart {{{158,4595}, {158,4559}}} id=12
139 SkOpAngle::afterPart {{{158,4595}, {83,4595}}} id=4
140 SkOpAngle::after [4/1] 31/31 tStart=0.931066176 tEnd=0 < [12/15] 23/23 tStart=0. 972972973 tEnd=1 < [12/14] 7/7 tStart=0.972972973 tEnd=0 F 4
141 SkOpAngle::afterPart {{{158,4595}, {1171,4595}}} id=4
142 SkOpAngle::afterPart {{{158,4595}, {158,4596}}} id=12
143 SkOpAngle::afterPart {{{158,4595}, {158,4559}}} id=12
144 SkOpAngle::after [12/14] 7/7 tStart=0.972972973 tEnd=0 < [12/15] 23/23 tStart=0. 972972973 tEnd=1 < [4/2] 15/15 tStart=0.931066176 tEnd=1 F 4
145 SkOpAngle::afterPart {{{158,4595}, {158,4559}}} id=12
146 SkOpAngle::afterPart {{{158,4595}, {158,4596}}} id=12
147 SkOpAngle::afterPart {{{158,4595}, {83,4595}}} id=4
148 SkOpAngle::after [4/2] 15/15 tStart=0.931066176 tEnd=1 < [12/15] 23/23 tStart=0. 972972973 tEnd=1 < [4/1] 31/31 tStart=0.931066176 tEnd=0 T 4
149 SkOpAngle::afterPart {{{158,4595}, {83,4595}}} id=4
150 SkOpAngle::afterPart {{{158,4595}, {158,4596}}} id=12
151 SkOpAngle::afterPart {{{158,4595}, {1171,4595}}} id=4
152 SkOpSegment::sortAngles [5] tStart=0.999339899 [31]
153 SkOpAngle::after [5/3] 25/29 tStart=0.999339899 tEnd=0 < [14/16] 25/29 tStart=0. 998759893 tEnd=0 < [5/4] 9/9 tStart=0.999339899 tEnd=1 F 12
154 SkOpAngle::afterPart {{{{78.0000076,4590.01074}, {78.0133288,4595}, {83,4595}}}, 0.877537966} id=5
155 SkOpAngle::afterPart {{{{78.0000076,4590.01074}, {78.0105173,4596}, {84,4596}}}, 0.877548993} id=14
156 SkOpAngle::afterPart {{{{78.0000076,4590.01074}, {78.0000041,4590.00819}, {78,45 90.00586}}}, 0.999999881} id=5
157 SkOpAngle::after [5/3] 25/29 tStart=0.999339899 tEnd=0 < [14/17] 9/9 tStart=0.99 8759893 tEnd=1 < [5/4] 9/9 tStart=0.999339899 tEnd=1 T 11
158 SkOpAngle::afterPart {{{{78.0000076,4590.01074}, {78.0133288,4595}, {83,4595}}}, 0.877537966} id=5
159 SkOpAngle::afterPart {{{{78.0000076,4590.01074}, {78,4590.00526}, {78,4590}}}, 0 .999999642} id=14
160 SkOpAngle::afterPart {{{{78.0000076,4590.01074}, {78.0000041,4590.00819}, {78,45 90.00586}}}, 0.999999881} id=5
161 SkOpSegment::sortAngles [6] tStart=0.000234320081 [33]
162 SkOpAngle::after [6/5] 23/23 tStart=0.000234320081 tEnd=0 < [9/9] 7/7 tStart=0 t End=1 < [14/18] 21/21 tStart=1 tEnd=0.998759893 T 4
163 SkOpAngle::afterPart {{{78,4590}, {78,4590.00586}}} id=6
164 SkOpAngle::afterPart {{{78,4590}, {78,4565}}} id=9
165 SkOpAngle::afterPart {{{{78,4590}, {78,4590.00526}, {78.0000076,4590.01074}}}, 0 .999999642} id=14
166 SkOpSegment::sortAngles [7] tStart=0 [13]
167 SkOpSegment::sortAngles [7] tStart=1 [14]
168 SkOpSegment::sortAngles [8] tStart=0.0681399632 [34]
169 SkOpAngle::after [8/8] 31/31 tStart=0.0681399632 tEnd=1 < [11/12] 15/15 tStart=1 tEnd=0 < [12/13] 23/23 tStart=0 tEnd=0.972972973 T 4
170 SkOpAngle::afterPart {{{158,4559}, {1170,4559}}} id=8
171 SkOpAngle::afterPart {{{158,4559}, {84,4559}}} id=11
172 SkOpAngle::afterPart {{{158,4559}, {158,4595}}} id=12
81 SkOpSegment::sortAngles [9] tStart=0 [17] 173 SkOpSegment::sortAngles [9] tStart=0 [17]
82 SkOpSegment::sortAngles [15] tStart=0.999999628 [33] 174 SkOpSegment::sortAngles [9] tStart=1 [18]
83 SkOpSegment::sortAngles [16] tStart=1 [32] 175 SkOpSegment::sortAngles [11] tStart=0 [21]
84 SkOpSegment::debugShowActiveSpans id=1 (6.31801322e-006,-60 0,-83) t=0 (6.318013 22e-006,-60) tEnd=1 windSum=? windValue=1 176 SkOpSegment::sortAngles [11] tStart=1 [22]
85 SkOpSegment::debugShowActiveSpans id=2 (0,-83 32.0712242,-83 61.2726326,-64.5230 865 75.0056381,-35.5408783) t=0 (0,-83) tEnd=1 windSum=? windValue=1 177 SkOpSegment::sortAngles [12] tStart=0 [23]
86 SkOpSegment::debugShowActiveSpans id=3 (75.0056381,-35.5408783 88.7386475,-6.558 67052 84.545517,27.7420006 64.2353287,52.562561) t=0 (75.0056381,-35.5408783) tE nd=1 windSum=? windValue=1 178 SkOpSegment::sortAngles [12] tStart=0.972972973 [30]
87 SkOpSegment::debugShowActiveSpans id=4 (64.2353287,52.562561 60.2773972,57.39944 84 55.7858162,61.773819 50.8459854,65.6024933) t=0 (64.2353287,52.562561) tEnd=1 windSum=? windValue=1 179 SkOpSegment::sortAngles [14] tStart=0.998759893 [32]
88 SkOpSegment::debugShowActiveSpans id=5 (50.8459854,65.6024933 36.756134,47.42348 1) t=0 (50.8459854,65.6024933) tEnd=1 windSum=? windValue=1 180 SkOpSegment::sortAngles [14] tStart=1 [28]
89 SkOpSegment::debugShowActiveSpans id=6 (36.756134,47.423481 40.3270988,44.655769 3 43.5740242,41.493576 46.4351768,37.9970322) t=0 (36.756134,47.423481) tEnd=1 w indSum=? windValue=1 181 SkOpCoincidence::debugShowCoincidence - id=11 t=0 tEnd=1
90 SkOpSegment::debugShowActiveSpans id=7 (46.4351768,37.9970322 61.1172447,20.0544 662 64.1484222,-4.74120331 54.2209473,-25.6921959) t=0 (46.4351768,37.9970322) t End=1 windSum=? windValue=1 182 SkOpCoincidence::debugShowCoincidence + id=8 t=0 tEnd=0.0681399632
91 SkOpSegment::debugShowActiveSpans id=8 (54.2209473,-25.6921959 44.2934723,-46.64 31847 23.1840267,-60 6.31801322e-006,-60) t=0 (54.2209473,-25.6921959) tEnd=1 wi ndSum=? windValue=1 183 SkOpCoincidence::debugShowCoincidence - id=7 t=0 tEnd=1
92 SkOpSegment::debugShowActiveSpans id=9 (50.8459854,65.6024933 23.334074,86.92591 86 -14.5602179,88.8177719 -44.0591507,70.3405457) t=0 (50.8459854,65.6024933) tE nd=1 windSum=? windValue=1 184 SkOpCoincidence::debugShowCoincidence + id=10 t=0 tEnd=1
93 SkOpSegment::debugShowActiveSpans id=10 (-44.0591507,70.3405457 -73.5580902,51.8 633156 -88.3942261,16.9427452 -81.2158127,-17.116993) t=0 (-44.0591507,70.340545 7) tEnd=1 windSum=? windValue=1 185 SkOpCoincidence::debugShowCoincidence - id=9 t=0 tEnd=1
94 SkOpSegment::debugShowActiveSpans id=11 (-81.2158127,-17.116993 -74.0374069,-51. 1767159 -46.3696136,-77.1391754 -11.9226456,-82.1392059) t=0 (-81.2158127,-17.11 6993) tEnd=1 windSum=? windValue=1 186 SkOpCoincidence::debugShowCoincidence + id=6 t=0.000234320081 tEnd=1
95 SkOpSegment::debugShowActiveSpans id=12 (-11.9226456,-82.1392059 -8.61876869,-59 .3777466) t=0 (-11.9226456,-82.1392059) tEnd=1 windSum=? windValue=1 187 SkOpSegment::debugShowActiveSpans id=1 (1170,4559 1176,4559 1176,4565 0.70710676 9f) t=0 (1170,4559) tEnd=1 windSum=? windValue=1
96 SkOpSegment::debugShowActiveSpans id=13 (-8.61876869,-59.3777466 -33.5202026,-55 .7632599 -53.5210152,-36.9952087 -58.7102203,-12.3737135) t=0 (-8.61876869,-59.3 777466) tEnd=1 windSum=? windValue=1 188 SkOpSegment::debugShowActiveSpans id=2 (1176,4565 1176,4590) t=0 (1176,4565) tEn d=1 windSum=? windValue=1
97 SkOpSegment::debugShowActiveSpans id=14 (-58.7102203,-12.3737135 -63.8994179,12. 2477798 -53.1744957,37.4915581 -31.849966,50.8485832) t=0 (-58.7102203,-12.37371 35) tEnd=1 windSum=? windValue=1 189 SkOpSegment::debugShowActiveSpans id=3 (1176,4590 1176,4595 1171,4595 0.70710676 9f) t=0 (1176,4590) tEnd=1 windSum=? windValue=1
98 SkOpSegment::debugShowActiveSpans id=15 (-31.849966,50.8485832 -10.5254354,64.20 56046 16.8680305,62.8380051 36.7561607,47.4234695) t=0 (-31.849966,50.8485832) t End=0.999999628 windSum=? windValue=1 190 SkOpSegment::debugShowActiveSpans id=4 (1171,4595 83,4595) t=0 (1171,4595) tEnd= 0.931066176 windSum=? windValue=1
99 SkOpSegment::debugShowActiveSpans id=15 (-31.849966,50.8485832 -10.5254354,64.20 56046 16.8680305,62.8380051 36.7561607,47.4234695) t=0.999999628 (36.756134,47.4 23481) tEnd=1 windSum=? windValue=1 191 SkOpSegment::debugShowActiveSpans id=4 (1171,4595 83,4595) t=0.931066176 (158,45 95) tEnd=1 windSum=? windValue=1
100 SkOpSegment::debugShowActiveSpans id=16 (36.7561607,47.4234695 50.8459854,65.602 4933) t=0 (36.7561607,47.4234695) tEnd=1 windSum=? windValue=1 192 SkOpSegment::debugShowActiveSpans id=5 (83,4595 78.0086746,4595 78,4590.00586 0. 707720578f) t=0 (83,4595) tEnd=0.999339899 windSum=? windValue=1
101 SkOpSpan::sortableTop dir=kLeft seg=1 t=0.5 pt=(3.15900661e-006,-71.5) 193 SkOpSegment::debugShowActiveSpans id=5 (83,4595 78.0086746,4595 78,4590.00586 0. 707720578f) t=0.999339899 (78.0000076,4590.01074) tEnd=1 windSum=? windValue=1
102 SkOpSpan::sortableTop [0] valid=1 operand=1 span=21 ccw=1 seg=11 {{{-81.2158127f , -17.116993f}, {-74.0374069f, -51.1767159f}, {-46.3696136f, -77.1391754f}, {-11 .9226456f, -82.1392059f}}} t=0.683500004 pt=(-42.1581116,-71.5) slope=(86.347103 ,-50.9415461) 194 SkOpSegment::debugShowActiveSpans id=6 (78,4590.00586 78,4565) t=0 (78,4590.0058 6) tEnd=0.000234320081 windSum=? windValue=1
103 SkOpSpan::sortableTop [1] valid=1 operand=1 span=23 ccw=0 seg=12 {{{-11.9226456f , -82.1392059f}, {-8.61876869f, -59.3777466f}}} t=0.46742196 pt=(-10.3783407,-71 .5) slope=(3.30387688,22.7614594) 195 SkOpSegment::debugShowActiveSpans id=7 (78,4565 78,4559 84,4559 0.707106769f) t= 0 (78,4565) tEnd=1 windSum=? oppSum=? windValue=1 oppValue=1
104 SkOpSpan::sortableTop [2] valid=1 operand=0 span=1 ccw=1 seg=1 {{{6.31801322e-00 6f, -60}, {0, -83}}} t=0.5 pt=(3.15900661e-006,-71.5) slope=(-6.31801322e-006,-2 3) 196 SkOpSegment::debugShowActiveSpans id=8 (84,4559 1170,4559) t=0.0681399632 (158,4 559) tEnd=1 windSum=? windValue=1
105 SkOpSegment::markWinding id=11 (-81.2158127,-17.116993 -74.0374069,-51.1767159 - 46.3696136,-77.1391754 -11.9226456,-82.1392059) t=0 [21] (-81.2158127,-17.116993 ) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 197 SkOpSegment::debugShowActiveSpans id=9 (78,4590 78,4565) t=0 (78,4590) tEnd=1 wi ndSum=? oppSum=? windValue=1 oppValue=1
106 SkOpSegment::markWinding id=12 (-11.9226456,-82.1392059 -8.61876869,-59.3777466) t=0 [23] (-11.9226456,-82.1392059) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? wi ndSum=? windValue=1 oppValue=0 198 SkOpSegment::debugShowActiveSpans id=11 (84,4559 158,4559) t=0 (84,4559) tEnd=1 windSum=? oppSum=? windValue=1 oppValue=1
107 SkOpSegment::markWinding id=13 (-8.61876869,-59.3777466 -33.5202026,-55.7632599 -53.5210152,-36.9952087 -58.7102203,-12.3737135) t=0 [25] (-8.61876869,-59.37774 66) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 199 SkOpSegment::debugShowActiveSpans id=12 (158,4559 158,4596) t=0 (158,4559) tEnd= 0.972972973 windSum=? windValue=1
108 SkOpSegment::markWinding id=14 (-58.7102203,-12.3737135 -63.8994179,12.2477798 - 53.1744957,37.4915581 -31.849966,50.8485832) t=0 [27] (-58.7102203,-12.3737135) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 200 SkOpSegment::debugShowActiveSpans id=12 (158,4559 158,4596) t=0.972972973 (158,4 595) tEnd=1 windSum=? windValue=1
109 SkOpSegment::markWinding id=15 (-31.849966,50.8485832 -10.5254354,64.2056046 16. 8680305,62.8380051 36.7561607,47.4234695) t=0 [29] (-31.849966,50.8485832) tEnd= 0.999999628 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 201 SkOpSegment::debugShowActiveSpans id=13 (158,4596 84,4596) t=0 (158,4596) tEnd=1 windSum=? windValue=1
110 SkOpSegment::markWinding id=11 (-81.2158127,-17.116993 -74.0374069,-51.1767159 - 46.3696136,-77.1391754 -11.9226456,-82.1392059) t=0 [21] (-81.2158127,-17.116993 ) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 202 SkOpSegment::debugShowActiveSpans id=14 (84,4596 78,4596 78,4590 0.707106769f) t =0 (84,4596) tEnd=0.998759893 windSum=? windValue=1
111 SkOpSegment::markWinding id=10 (-44.0591507,70.3405457 -73.5580902,51.8633156 -8 8.3942261,16.9427452 -81.2158127,-17.116993) t=0 [19] (-44.0591507,70.3405457) t End=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 203 SkOpSegment::debugShowActiveSpans id=14 (84,4596 78,4596 78,4590 0.707106769f) t =0.998759893 (78.0000076,4590.01074) tEnd=1 windSum=? windValue=1
112 SkOpSegment::markWinding id=9 (50.8459854,65.6024933 23.334074,86.9259186 -14.56 02179,88.8177719 -44.0591507,70.3405457) t=0 [17] (50.8459854,65.6024933) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 204 SkOpSpan::sortableTop dir=kTop seg=1 t=0.5 pt=(1174.24268,4560.75732)
113 SkOpSegment::markWinding id=1 (6.31801322e-006,-60 0,-83) t=0 [1] (6.31801322e-0 06,-60) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValu e=0 205 SkOpSpan::sortableTop [0] valid=1 operand=0 span=1 ccw=1 seg=1 {{{{1170, 4559}, {1176, 4559}, {1176, 4565}}}, 0.707106769f} t=0.5 pt=(1174.24268,4560.75732) slo pe=(2.56066015,2.56066015)
114 SkOpSegment::markWinding id=2 (0,-83 32.0712242,-83 61.2726326,-64.5230865 75.00 56381,-35.5408783) t=0 [3] (0,-83) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? win dSum=? windValue=1 oppValue=0 206 SkOpSegment::markWinding id=1 (1170,4559 1176,4559 1176,4565) t=0 [1] (1170,4559 ) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
115 SkOpSegment::markWinding id=3 (75.0056381,-35.5408783 88.7386475,-6.55867052 84. 545517,27.7420006 64.2353287,52.562561) t=0 [5] (75.0056381,-35.5408783) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 207 SkOpSegment::markWinding id=2 (1176,4565 1176,4590) t=0 [3] (1176,4565) tEnd=1 n ewWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
116 SkOpSegment::markWinding id=4 (64.2353287,52.562561 60.2773972,57.3994484 55.785 8162,61.773819 50.8459854,65.6024933) t=0 [7] (64.2353287,52.562561) tEnd=1 newW indSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 208 SkOpSegment::markWinding id=3 (1176,4590 1176,4595 1171,4595) t=0 [5] (1176,4590 ) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
117 SkOpSegment::markWinding id=1 (6.31801322e-006,-60 0,-83) t=0 [1] (6.31801322e-0 06,-60) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValu e=0 209 SkOpSegment::markWinding id=4 (1171,4595 83,4595) t=0 [7] (1171,4595) tEnd=0.931 066176 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
118 SkOpSegment::markWinding id=8 (54.2209473,-25.6921959 44.2934723,-46.6431847 23. 1840267,-60 6.31801322e-006,-60) t=0 [15] (54.2209473,-25.6921959) tEnd=1 newWin dSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 210 SkOpSegment::markWinding id=1 (1170,4559 1176,4559 1176,4565) t=0 [1] (1170,4559 ) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
119 SkOpSegment::markWinding id=7 (46.4351768,37.9970322 61.1172447,20.0544662 64.14 84222,-4.74120331 54.2209473,-25.6921959) t=0 [13] (46.4351768,37.9970322) tEnd= 1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0 211 SkOpSegment::markWinding id=8 (84,4559 1170,4559) t=0.0681399632 [34] (158,4559) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
120 SkOpSegment::markWinding id=6 (36.756134,47.423481 40.3270988,44.6557693 43.5740 242,41.493576 46.4351768,37.9970322) t=0 [11] (36.756134,47.423481) tEnd=1 newWi ndSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
121 SkOpSegment::activeOp id=1 t=1 tEnd=0 op=union miFrom=0 miTo=1 suFrom=0 suTo=0 r esult=1 212 SkOpSegment::activeOp id=1 t=1 tEnd=0 op=union miFrom=0 miTo=1 suFrom=0 suTo=0 r esult=1
122 SkOpSegment::findNextOp simple 213 SkOpSegment::findNextOp simple
123 SkOpSegment::markDone id=1 (6.31801322e-006,-60 0,-83) t=0 [1] (6.31801322e-006, -60) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 214 SkOpSegment::markDone id=1 (1170,4559 1176,4559 1176,4565) t=0 [1] (1170,4559) t End=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
124 bridgeOp current id=1 from=(0,-83) to=(6.31801322e-006,-60) 215 bridgeOp current id=1 from=(1176,4565) to=(1170,4559)
125 SkOpSegment::findNextOp simple 216 path.moveTo(1176,4565);
126 SkOpSegment::markDone id=8 (54.2209473,-25.6921959 44.2934723,-46.6431847 23.184 0267,-60 6.31801322e-006,-60) t=0 [15] (54.2209473,-25.6921959) tEnd=1 newWindSu m=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 217 path.conicTo(1176,4559, 1170,4559, 0.707106769);
127 bridgeOp current id=8 from=(6.31801322e-006,-60) to=(54.2209473,-25.6921959) 218 SkOpSegment::markWinding id=11 (84,4559 158,4559) t=0 [21] (84,4559) tEnd=1 newW indSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
128 path.moveTo(0,-83); 219 SkOpSegment::markWinding id=7 (78,4565 78,4559 84,4559) t=0 [13] (78,4565) tEnd= 1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
129 path.lineTo(6.31801322e-006,-60); 220 SkOpSegment::markWinding id=9 (78,4590 78,4565) t=0 [17] (78,4590) tEnd=1 newWin dSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
130 path.cubicTo(23.1840267,-60, 44.2934723,-46.6431847, 54.2209473,-25.6921959); 221 SkOpSegment::markAngle last segment=9 span=17 windSum=-1
131 SkOpSegment::findNextOp simple 222 SkOpSegment::markWinding id=12 (158,4559 158,4596) t=0 [23] (158,4559) tEnd=0.97 2972973 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
132 SkOpSegment::markDone id=7 (46.4351768,37.9970322 61.1172447,20.0544662 64.14842 22,-4.74120331 54.2209473,-25.6921959) t=0 [13] (46.4351768,37.9970322) tEnd=1 n ewWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 223 SkOpSegment::markAngle last segment=12 span=30 windSum=?
133 bridgeOp current id=7 from=(54.2209473,-25.6921959) to=(46.4351768,37.9970322)
134 path.cubicTo(64.1484222,-4.74120331, 61.1172447,20.0544662, 46.4351768,37.997032 2);
135 SkOpSegment::markWinding id=15 (-31.849966,50.8485832 -10.5254354,64.2056046 16. 8680305,62.8380051 36.7561607,47.4234695) t=0.999999628 [33] (36.756134,47.42348 1) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
136 SkOpSegment::markWinding id=16 (36.7561607,47.4234695 50.8459854,65.6024933) t=0 [31] (36.7561607,47.4234695) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
137 SkOpSegment::markAngle last segment=16 span=32
138 SkOpSegment::markWinding id=5 (50.8459854,65.6024933 36.756134,47.423481) t=0 [9 ] (50.8459854,65.6024933) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? w indValue=1 oppValue=0
139 SkOpSegment::markAngle last segment=5 span=9 windSum=-1
140 SkOpSegment::findNextOp 224 SkOpSegment::findNextOp
141 SkOpAngle::dumpOne [6/4] next=15/7 sect=1/1 s=0 [11] e=1 [12] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 225 SkOpAngle::dumpOne [8/8] next=11/12 sect=31/31 s=0.0681399632 [34] e=1 [16] sgn =-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
142 SkOpAngle::dumpOne [15/7] next=15/6 sect=1/1 s=0.999999628 [33] e=1 [30] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 operand 226 SkOpAngle::dumpOne [11/12] next=12/13 sect=15/15 s=1 [22] e=0 [21] sgn=1 windVa l=1 windSum=-1 oppVal=1 oppSum=-1 operand
143 SkOpAngle::dumpOne [15/6] next=5/3 sect=17/17 s=0.999999628 [33] e=0 [29] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand 227 SkOpAngle::dumpOne [12/13] next=8/8 sect=23/23 s=0 [23] e=0.972972973 [30] sgn= -1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
144 SkOpAngle::dumpOne [5/3] next=6/4 sect=25/25 s=1 [10] e=0 [9] sgn=1 windVal=1 w indSum=-1 oppVal=0 oppSum=-1 228 SkOpSegment::activeOp id=11 t=1 tEnd=0 op=union miFrom=0 miTo=1 suFrom=0 suTo=1 result=1
145 SkOpSegment::activeOp id=15 t=0.999999628 tEnd=1 op=union miFrom=0 miTo=0 suFrom =0 suTo=1 result=1 229 SkOpSegment::findNextOp chase.append segment=9 span=17 windSum=-1
146 SkOpSegment::findNextOp chase.append segment=16 span=32 230 SkOpSegment::activeOp id=12 t=0 tEnd=0.972972973 op=union miFrom=1 miTo=1 suFrom =1 suTo=0 result=0
147 SkOpSegment::activeOp id=15 t=0.999999628 tEnd=0 op=union miFrom=0 miTo=0 suFrom =1 suTo=0 result=1 231 SkOpSegment::markDone id=12 (158,4559 158,4596) t=0 [23] (158,4559) tEnd=0.97297 2973 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
148 SkOpSegment::activeOp id=5 t=1 tEnd=0 op=union miFrom=0 miTo=1 suFrom=0 suTo=0 r esult=1 232 SkOpSegment::findNextOp chase.append segment=12 span=30 windSum=-2147483647
149 SkOpSegment::findNextOp chase.append segment=5 span=9 windSum=-1 233 SkOpSegment::markDone id=8 (84,4559 1170,4559) t=0.0681399632 [34] (158,4559) tE nd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
150 SkOpSegment::markDone id=6 (36.756134,47.423481 40.3270988,44.6557693 43.5740242 ,41.493576 46.4351768,37.9970322) t=0 [11] (36.756134,47.423481) tEnd=1 newWindS um=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 234 SkOpSegment::findNextOp from:[8] to:[11] start=8985900 end=8985796
151 SkOpSegment::findNextOp from:[6] to:[15] start=13585868 end=13585412 235 bridgeOp current id=8 from=(1170,4559) to=(158,4559)
152 bridgeOp current id=6 from=(46.4351768,37.9970322) to=(36.756134,47.423481) 236 SkOpSegment::findNextOp simple
153 path.cubicTo(43.5740242,41.493576, 40.3270988,44.6557693, 36.756134,47.423481); 237 SkOpSegment::markDone id=11 (84,4559 158,4559) t=0 [21] (84,4559) tEnd=1 newWind Sum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
154 SkOpSegment::findNextOp simple 238 bridgeOp current id=11 from=(158,4559) to=(84,4559)
155 SkOpSegment::markDone id=15 (-31.849966,50.8485832 -10.5254354,64.2056046 16.868 0305,62.8380051 36.7561607,47.4234695) t=0.999999628 [33] (36.756134,47.423481) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0 239 SkOpSegment::findNextOp simple
156 bridgeOp current id=15 from=(36.756134,47.423481) to=(36.7561607,47.4234695) 240 SkOpSegment::markDone id=7 (78,4565 78,4559 84,4559) t=0 [13] (78,4565) tEnd=1 n ewWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
157 path.cubicTo(36.7561417,47.4234734, 36.7561531,47.4234772, 36.7561607,47.4234695 ); 241 bridgeOp current id=7 from=(84,4559) to=(78,4565)
242 path.lineTo(84,4559);
243 path.conicTo(78,4559, 78,4565, 0.707106769);
244 SkOpSegment::markWinding id=14 (84,4596 78,4596 78,4590) t=0.998759893 [32] (78. 0000076,4590.01074) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValu e=1 oppValue=0
245 SkOpSegment::markAngle last segment=14 span=32 windSum=-1
246 SkOpSegment::markWinding id=6 (78,4590.00586 78,4565) t=0 [11] (78,4590.00586) t End=0.000234320081 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 opp Value=0
247 SkOpSegment::markWinding id=5 (83,4595 78.0086746,4595 78,4590.00586) t=0.999339 899 [31] (78.0000076,4590.01074) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? wind Sum=? windValue=1 oppValue=0
248 SkOpSegment::markAngle last segment=5 span=31 windSum=-1
158 SkOpSegment::findNextOp 249 SkOpSegment::findNextOp
159 SkOpAngle::dumpOne [16/8] next=5/2 sect=9/9 s=1 [32] e=0 [31] sgn=1 windVal=1 w indSum=1 oppVal=0 oppSum=0 operand 250 SkOpAngle::dumpOne [9/9] next=14/18 sect=7/7 s=0 [17] e=1 [18] sgn=-1 windVal=1 windSum=-1 oppVal=1 oppSum=-1 operand
160 SkOpAngle::dumpOne [5/2] next=9/5 sect=9/9 s=0 [9] e=1 [10] sgn=-1 windVal=1 wi ndSum=-1 oppVal=0 oppSum=-1 251 SkOpAngle::dumpOne [14/18] next=6/5 sect=21/21 s=1 [28] e=0.998759893 [32] sgn= 1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
161 SkOpAngle::dumpOne [9/5] next=4/1 sect=17/17 s=0 [17] e=1 [18] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand 252 SkOpAngle::dumpOne [6/5] next=9/9 sect=23/23 s=0.000234320081 [33] e=0 [11] sgn =1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
162 SkOpAngle::dumpOne [4/1] next=16/8 sect=1/1 s=1 [8] e=0 [7] sgn=1 windVal=1 win dSum=-1 oppVal=0 oppSum=0 253 SkOpSegment::activeOp id=14 t=1 tEnd=0.998759893 op=union miFrom=0 miTo=0 suFrom =0 suTo=1 result=1
163 SkOpSegment::activeOp id=5 t=0 tEnd=1 op=union miFrom=0 miTo=1 suFrom=0 suTo=0 r esult=1 254 SkOpSegment::findNextOp chase.append segment=14 span=32 windSum=-1
164 SkOpSegment::activeOp id=9 t=0 tEnd=1 op=union miFrom=1 miTo=1 suFrom=0 suTo=1 r esult=0 255 SkOpSegment::activeOp id=6 t=0.000234320081 tEnd=0 op=union miFrom=0 miTo=1 suFr om=1 suTo=1 result=0
165 SkOpSegment::markDone id=9 (50.8459854,65.6024933 23.334074,86.9259186 -14.56021 79,88.8177719 -44.0591507,70.3405457) t=0 [17] (50.8459854,65.6024933) tEnd=1 ne wWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 256 SkOpSegment::markDone id=6 (78,4590.00586 78,4565) t=0 [11] (78,4590.00586) tEnd =0.000234320081 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppV alue=0
166 SkOpSegment::markDone id=10 (-44.0591507,70.3405457 -73.5580902,51.8633156 -88.3 942261,16.9427452 -81.2158127,-17.116993) t=0 [19] (-44.0591507,70.3405457) tEnd =1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 257 SkOpSegment::markDone id=5 (83,4595 78.0086746,4595 78,4590.00586) t=0.999339899 [31] (78.0000076,4590.01074) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSu m=-1 windValue=1 oppValue=0
167 SkOpSegment::markDone id=11 (-81.2158127,-17.116993 -74.0374069,-51.1767159 -46. 3696136,-77.1391754 -11.9226456,-82.1392059) t=0 [21] (-81.2158127,-17.116993) t End=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 258 SkOpSegment::findNextOp chase.append segment=5 span=31 windSum=-1
168 SkOpSegment::markDone id=12 (-11.9226456,-82.1392059 -8.61876869,-59.3777466) t= 0 [23] (-11.9226456,-82.1392059) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windS um=-1 windValue=1 oppValue=0 259 SkOpSegment::markDone id=9 (78,4590 78,4565) t=0 [17] (78,4590) tEnd=1 newWindSu m=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
169 SkOpSegment::markDone id=13 (-8.61876869,-59.3777466 -33.5202026,-55.7632599 -53 .5210152,-36.9952087 -58.7102203,-12.3737135) t=0 [25] (-8.61876869,-59.3777466) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 260 SkOpSegment::findNextOp from:[9] to:[14] start=8986620 end=8987068
170 SkOpSegment::markDone id=14 (-58.7102203,-12.3737135 -63.8994179,12.2477798 -53. 1744957,37.4915581 -31.849966,50.8485832) t=0 [27] (-58.7102203,-12.3737135) tEn d=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 261 bridgeOp current id=9 from=(78,4565) to=(78,4590)
171 SkOpSegment::markDone id=15 (-31.849966,50.8485832 -10.5254354,64.2056046 16.868 0305,62.8380051 36.7561607,47.4234695) t=0 [29] (-31.849966,50.8485832) tEnd=0.9 99999628 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 262 SkOpSegment::markWinding id=14 (84,4596 78,4596 78,4590) t=0 [27] (84,4596) tEnd =0.998759893 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
172 SkOpSegment::activeOp id=4 t=1 tEnd=0 op=union miFrom=1 miTo=0 suFrom=1 suTo=1 r esult=0 263 SkOpSegment::markWinding id=13 (158,4596 84,4596) t=0 [25] (158,4596) tEnd=1 new WindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
173 SkOpSegment::markDone id=4 (64.2353287,52.562561 60.2773972,57.3994484 55.785816 2,61.773819 50.8459854,65.6024933) t=0 [7] (64.2353287,52.562561) tEnd=1 newWind Sum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 264 SkOpSegment::markWinding id=12 (158,4559 158,4596) t=0.972972973 [30] (158,4595) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
174 SkOpSegment::markDone id=3 (75.0056381,-35.5408783 88.7386475,-6.55867052 84.545 517,27.7420006 64.2353287,52.562561) t=0 [5] (75.0056381,-35.5408783) tEnd=1 new WindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0 265 SkOpSegment::markAngle last segment=12 span=30 windSum=-2
175 SkOpSegment::markDone id=2 (0,-83 32.0712242,-83 61.2726326,-64.5230865 75.00563 81,-35.5408783) t=0 [3] (0,-83) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSu m=-1 windValue=1 oppValue=0 266 SkOpSegment::markWinding id=5 (83,4595 78.0086746,4595 78,4590.00586) t=0 [9] (8 3,4595) tEnd=0.999339899 newWindSum=-1 newOppSum=-2 oppSum=? windSum=? windValue =1 oppValue=0
176 SkOpSegment::markDone id=16 (36.7561607,47.4234695 50.8459854,65.6024933) t=0 [3 1] (36.7561607,47.4234695) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 wi ndValue=1 oppValue=0 267 SkOpSegment::markWinding id=4 (1171,4595 83,4595) t=0.931066176 [29] (158,4595) tEnd=1 newWindSum=-1 newOppSum=-2 oppSum=? windSum=? windValue=1 oppValue=0
177 SkOpSegment::findNextOp from:[16] to:[5] start=13582764 end=13582868 268 SkOpSegment::markAngle last segment=4 span=29 windSum=-1
178 bridgeOp current id=16 from=(36.7561607,47.4234695) to=(50.8459854,65.6024933)
179 SkOpSegment::findNextOp 269 SkOpSegment::findNextOp
180 SkOpAngle::dumpOne [5/3] next=6/4 sect=25/25 s=1 [10] e=0 [9] sgn=1 windVal=1 w indSum=-1 oppVal=0 oppSum=-1 270 SkOpAngle::dumpOne [14/17] next=5/4 sect=9/9 s=0.998759893 [32] e=1 [28] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
181 SkOpAngle::dumpOne [6/4] next=15/7 sect=1/1 s=0 [11] e=1 [12] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done 271 SkOpAngle::dumpOne [5/4] next=14/16 sect=9/9 s=0.999339899 [31] e=1 [10] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
182 SkOpAngle::dumpOne [15/7] next=15/6 sect=1/1 s=0.999999628 [33] e=1 [30] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done operand 272 SkOpAngle::dumpOne [14/16] next=5/3 sect=25/29 s=0.998759893 [32] e=0 [27] sgn= 1 windVal=1 windSum=-2 oppVal=0 oppSum=0 operand
183 SkOpAngle::dumpOne [15/6] next=5/3 sect=17/17 s=0.999999628 [33] e=0 [29] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand 273 SkOpAngle::dumpOne [5/3] next=14/17 sect=25/29 s=0.999339899 [31] e=0 [9] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-2
184 SkOpSegment::activeOp id=6 t=0 tEnd=1 op=union miFrom=1 miTo=0 suFrom=1 suTo=1 r esult=0 274 SkOpSegment::activeOp id=5 t=0.999339899 tEnd=1 op=union miFrom=0 miTo=1 suFrom= 0 suTo=0 result=1
185 SkOpSegment::activeOp id=15 t=0.999999628 tEnd=1 op=union miFrom=0 miTo=0 suFrom =1 suTo=0 result=1 275 SkOpSegment::activeOp id=14 t=0.998759893 tEnd=0 op=union miFrom=1 miTo=1 suFrom =0 suTo=1 result=0
186 SkOpSegment::activeOp id=15 t=0.999999628 tEnd=0 op=union miFrom=0 miTo=0 suFrom =0 suTo=1 result=1 276 SkOpSegment::markDone id=14 (84,4596 78,4596 78,4590) t=0 [27] (84,4596) tEnd=0. 998759893 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
187 SkOpSegment::markDone id=5 (50.8459854,65.6024933 36.756134,47.423481) t=0 [9] ( 50.8459854,65.6024933) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 wi ndValue=1 oppValue=0 277 SkOpSegment::markDone id=13 (158,4596 84,4596) t=0 [25] (158,4596) tEnd=1 newWin dSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
188 SkOpSegment::findNextOp from:[5] to:[15] start=13585868 end=13585412 278 SkOpSegment::markDone id=12 (158,4559 158,4596) t=0.972972973 [30] (158,4595) tE nd=1 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
189 bridgeOp current id=5 from=(50.8459854,65.6024933) to=(36.756134,47.423481) 279 SkOpSegment::activeOp id=5 t=0.999339899 tEnd=0 op=union miFrom=1 miTo=0 suFrom= 1 suTo=1 result=0
190 path.lineTo(50.8459854,65.6024933); 280 SkOpSegment::markDone id=5 (83,4595 78.0086746,4595 78,4590.00586) t=0 [9] (83,4 595) tEnd=0.999339899 newWindSum=-1 newOppSum=-2 oppSum=-2 windSum=-1 windValue= 1 oppValue=0
191 path.lineTo(36.756134,47.423481); 281 SkOpSegment::markDone id=4 (1171,4595 83,4595) t=0.931066176 [29] (158,4595) tEn d=1 newWindSum=-1 newOppSum=-2 oppSum=-2 windSum=-1 windValue=1 oppValue=0
282 SkOpSegment::findNextOp chase.append segment=4 span=29 windSum=-1
283 SkOpSegment::markDone id=14 (84,4596 78,4596 78,4590) t=0.998759893 [32] (78.000 0076,4590.01074) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue= 1 oppValue=0
284 SkOpSegment::findNextOp from:[14] to:[5] start=8986964 end=8984396
285 bridgeOp current id=14 from=(78,4590) to=(78.0000076,4590.01074)
286 path.lineTo(78,4590);
287 path.conicTo(78,4590.00537, 78.0000076,4590.01074, 0.999999642);
288 SkOpSegment::debugShowActiveSpans id=2 (1176,4565 1176,4590) t=0 (1176,4565) tEn d=1 windSum=-1 oppSum=0 windValue=1 oppValue=0
289 SkOpSegment::debugShowActiveSpans id=3 (1176,4590 1176,4595 1171,4595 0.70710676 9f) t=0 (1176,4590) tEnd=1 windSum=-1 oppSum=0 windValue=1 oppValue=0
290 SkOpSegment::debugShowActiveSpans id=4 (1171,4595 83,4595) t=0 (1171,4595) tEnd= 0.931066176 windSum=-1 oppSum=0 windValue=1 oppValue=0
291 SkOpSegment::activeOp id=4 t=0.931066176 tEnd=0 op=union miFrom=0 miTo=1 suFrom= 0 suTo=0 result=1
292 SkOpSegment::findNextOp simple
293 SkOpSegment::markDone id=4 (1171,4595 83,4595) t=0 [7] (1171,4595) tEnd=0.931066 176 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
294 bridgeOp current id=4 from=(158,4595) to=(1171,4595)
295 SkOpSegment::findNextOp simple
296 SkOpSegment::markDone id=3 (1176,4590 1176,4595 1171,4595) t=0 [5] (1176,4590) t End=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
297 bridgeOp current id=3 from=(1171,4595) to=(1176,4590)
298 path.moveTo(158,4595);
299 path.lineTo(1171,4595);
300 path.conicTo(1176,4595, 1176,4590, 0.707106769);
301 SkOpSegment::findNextOp simple
302 SkOpSegment::markDone id=2 (1176,4565 1176,4590) t=0 [3] (1176,4565) tEnd=1 newW indSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
303 bridgeOp current id=2 from=(1176,4590) to=(1176,4565)
304 path.lineTo(1176,4565);
192 </div> 305 </div>
306
193 </div> 307 </div>
194 308
195 <script type="text/javascript"> 309 <script type="text/javascript">
196 310
197 var testDivs = [ 311 var testDivs = [
198 battleOp183, 312 skpwww_gorcraft_ru_1,
199 ]; 313 ];
200 314
201 var decimal_places = 3; // make this 3 to show more precision 315 var decimal_places = 3; // make this 3 to show more precision
202 316
203 var tests = []; 317 var tests = [];
204 var testLines = []; 318 var testLines = [];
205 var testTitles = []; 319 var testTitles = [];
206 var testIndex = 0; 320 var testIndex = 0;
207 var ctx; 321 var ctx;
208 322
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 var coinMax = 0; 373 var coinMax = 0;
260 var sectMax = 0; 374 var sectMax = 0;
261 var sectMax2 = 0; 375 var sectMax2 = 0;
262 var sortMax = 0; 376 var sortMax = 0;
263 var topMax = 0; 377 var topMax = 0;
264 var markMax = 0; 378 var markMax = 0;
265 var opMax = 0; 379 var opMax = 0;
266 var stepMax = 0; 380 var stepMax = 0;
267 var lastIndex = 0; 381 var lastIndex = 0;
268 var hasPath = false; 382 var hasPath = false;
383 var hasAlignedPath = false;
269 var hasComputedPath = false; 384 var hasComputedPath = false;
270 var angleBetween = false; 385 var angleBetween = false;
271 var afterIndex = 0; 386 var afterIndex = 0;
272 387
273 var firstActiveSpan = -1; 388 var firstActiveSpan = -1;
274 var logStart = -1; 389 var logStart = -1;
275 var logRange = 0; 390 var logRange = 0;
276 391
277 var SPAN_ID = 0; 392 var SPAN_ID = 0;
278 var SPAN_X1 = SPAN_ID + 1; 393 var SPAN_X1 = SPAN_ID + 1;
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
438 var REC_TYPE_SORT = 5; 553 var REC_TYPE_SORT = 5;
439 var REC_TYPE_OP = 6; 554 var REC_TYPE_OP = 6;
440 var REC_TYPE_MARK = 7; 555 var REC_TYPE_MARK = 7;
441 var REC_TYPE_COMPUTED = 8; 556 var REC_TYPE_COMPUTED = 8;
442 var REC_TYPE_COIN = 9; 557 var REC_TYPE_COIN = 9;
443 var REC_TYPE_ANGLE = 10; 558 var REC_TYPE_ANGLE = 10;
444 var REC_TYPE_ACTIVE_OP = 11; 559 var REC_TYPE_ACTIVE_OP = 11;
445 var REC_TYPE_AFTERPART = 12; 560 var REC_TYPE_AFTERPART = 12;
446 var REC_TYPE_TOP = 13; 561 var REC_TYPE_TOP = 13;
447 var REC_TYPE_COINCIDENCE = 14; 562 var REC_TYPE_COINCIDENCE = 14;
448 var REC_TYPE_LAST = REC_TYPE_COINCIDENCE; 563 var REC_TYPE_ALIGNED = 15;
564 var REC_TYPE_LAST = REC_TYPE_ALIGNED;
449 565
450 function strs_to_nums(strs) { 566 function strs_to_nums(strs) {
451 var result = []; 567 var result = [];
452 for (var idx = 1; idx < strs.length; ++idx) { 568 for (var idx = 1; idx < strs.length; ++idx) {
453 var str = strs[idx]; 569 var str = strs[idx];
454 var num = parseFloat(str); 570 var num = parseFloat(str);
455 if (isNaN(num)) { 571 if (isNaN(num)) {
456 result.push(str); 572 result.push(str);
457 } else { 573 } else {
458 result.push(num); 574 result.push(num);
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 } 669 }
554 var type = line.lastIndexOf("debugShowActiveSpans", 0) === 0 ? REC_TYPE_ ACTIVE 670 var type = line.lastIndexOf("debugShowActiveSpans", 0) === 0 ? REC_TYPE_ ACTIVE
555 : line.lastIndexOf("debugShowCoincidence", 0) === 0 ? REC_TYPE_C OINCIDENCE 671 : line.lastIndexOf("debugShowCoincidence", 0) === 0 ? REC_TYPE_C OINCIDENCE
556 : line.lastIndexOf("((SkOpSegment*)", 0) === 0 ? REC_TYPE_PATH2 672 : line.lastIndexOf("((SkOpSegment*)", 0) === 0 ? REC_TYPE_PATH2
557 : line.lastIndexOf("debugShowTs", 0) === 0 ? REC_TYPE_COIN 673 : line.lastIndexOf("debugShowTs", 0) === 0 ? REC_TYPE_COIN
558 : line.lastIndexOf("afterPart", 0) === 0 ? REC_TYPE_AFTERPART 674 : line.lastIndexOf("afterPart", 0) === 0 ? REC_TYPE_AFTERPART
559 : line.lastIndexOf("debugShow", 0) === 0 ? REC_TYPE_SECT 675 : line.lastIndexOf("debugShow", 0) === 0 ? REC_TYPE_SECT
560 : line.lastIndexOf("activeOp", 0) === 0 ? REC_TYPE_ACTIVE_OP 676 : line.lastIndexOf("activeOp", 0) === 0 ? REC_TYPE_ACTIVE_OP
561 : line.lastIndexOf("computed", 0) === 0 ? REC_TYPE_COMPUTED 677 : line.lastIndexOf("computed", 0) === 0 ? REC_TYPE_COMPUTED
562 : line.lastIndexOf("debugOne", 0) === 0 ? REC_TYPE_SORT 678 : line.lastIndexOf("debugOne", 0) === 0 ? REC_TYPE_SORT
679 : line.lastIndexOf("aligned=", 0) === 0 ? REC_TYPE_ALIGNED
563 : line.lastIndexOf("dumpOne", 0) === 0 ? REC_TYPE_SORT 680 : line.lastIndexOf("dumpOne", 0) === 0 ? REC_TYPE_SORT
564 : line.lastIndexOf("findTop", 0) === 0 ? REC_TYPE_TOP 681 : line.lastIndexOf("findTop", 0) === 0 ? REC_TYPE_TOP
565 : line.lastIndexOf("pathB.", 0) === 0 ? REC_TYPE_ADD 682 : line.lastIndexOf("pathB.", 0) === 0 ? REC_TYPE_ADD
566 : line.lastIndexOf("path.", 0) === 0 ? REC_TYPE_ADD 683 : line.lastIndexOf("path.", 0) === 0 ? REC_TYPE_ADD
567 : line.lastIndexOf("after", 0) === 0 ? REC_TYPE_ANGLE 684 : line.lastIndexOf("after", 0) === 0 ? REC_TYPE_ANGLE
568 : line.lastIndexOf("mark", 0) === 0 ? REC_TYPE_MARK 685 : line.lastIndexOf("mark", 0) === 0 ? REC_TYPE_MARK
569 : line.lastIndexOf(" {{", 0) === 0 ? REC_TYPE_COMPUTED 686 : line.lastIndexOf(" {{", 0) === 0 ? REC_TYPE_COMPUTED
570 : line.lastIndexOf("seg=", 0) === 0 ? REC_TYPE_PATH 687 : line.lastIndexOf("seg=", 0) === 0 ? REC_TYPE_PATH
571 : line.lastIndexOf("op", 0) === 0 ? REC_TYPE_OP 688 : line.lastIndexOf("op", 0) === 0 ? REC_TYPE_OP
572 : line.lastIndexOf("$", 0) === 0 ? REC_TYPE_PATH 689 : line.lastIndexOf("$", 0) === 0 ? REC_TYPE_PATH
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
642 } else { 759 } else {
643 found = match_regexp(line, lineNo, record, ADD_CLOSE, "PATH. close();"); 760 found = match_regexp(line, lineNo, record, ADD_CLOSE, "PATH. close();");
644 } 761 }
645 break; 762 break;
646 case REC_TYPE_AFTERPART: 763 case REC_TYPE_AFTERPART:
647 found = match_regexp(line, lineNo, record, PATH_LINE, "afterPart LINE_VAL") 764 found = match_regexp(line, lineNo, record, PATH_LINE, "afterPart LINE_VAL")
648 || match_regexp(line, lineNo, record, PATH_QUAD, "afterPart QUAD_VAL") 765 || match_regexp(line, lineNo, record, PATH_QUAD, "afterPart QUAD_VAL")
649 || match_regexp(line, lineNo, record, PATH_CONIC, "afterPart CONIC_VAL") 766 || match_regexp(line, lineNo, record, PATH_CONIC, "afterPart CONIC_VAL")
650 || match_regexp(line, lineNo, record, PATH_CUBIC, "afterPart CUBIC_VAL") 767 || match_regexp(line, lineNo, record, PATH_CUBIC, "afterPart CUBIC_VAL")
651 break; 768 break;
769 case REC_TYPE_ALIGNED:
770 found = match_regexp(line, lineNo, record, PATH_LINE, "aligned=I DX LINE_VAL"
771 ) || match_regexp(line, lineNo, record, PATH_QUAD, "aligned=IDX QUAD_VAL"
772 ) || match_regexp(line, lineNo, record, PATH_CONIC, "aligned=IDX CONIC_VAL"
773 ) || match_regexp(line, lineNo, record, PATH_CUBIC, "aligned=IDX CUBIC_VAL"
774 );
775 break;
652 case REC_TYPE_ANGLE: 776 case REC_TYPE_ANGLE:
653 found = match_regexp(line, lineNo, record, ANGLE_AFTER, "after " + 777 found = match_regexp(line, lineNo, record, ANGLE_AFTER, "after " +
654 "[IDX/IDX] NUM/NUM tStart=T_VAL tEnd=T_VAL < [IDX/IDX] NUM/NUM tStart=T_VAL tEnd =T_VAL < [IDX/IDX] NUM/NUM tStart=T_VAL tEnd=T_VAL T_F IDX"); 778 "[IDX/IDX] NUM/NUM tStart=T_VAL tEnd=T_VAL < [IDX/IDX] NUM/NUM tStart=T_VAL tEnd =T_VAL < [IDX/IDX] NUM/NUM tStart=T_VAL tEnd=T_VAL T_F IDX");
655 break; 779 break;
656 case REC_TYPE_COIN: 780 case REC_TYPE_COIN:
657 found = true; 781 found = true;
658 break; 782 break;
659 case REC_TYPE_COINCIDENCE: 783 case REC_TYPE_COINCIDENCE:
660 found = match_regexp(line, lineNo, record, COIN_MAIN_SPAN, "debu gShowCoincidence" + 784 found = match_regexp(line, lineNo, record, COIN_MAIN_SPAN, "debu gShowCoincidence" +
661 " + id=IDX t=T_VAL tEnd=T_VAL" 785 " + id=IDX t=T_VAL tEnd=T_VAL"
(...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after
861 canvas.height = unscaledHeight * resScale; 985 canvas.height = unscaledHeight * resScale;
862 canvas.style.width = unscaledWidth + 'px'; 986 canvas.style.width = unscaledWidth + 'px';
863 canvas.style.height = unscaledHeight + 'px'; 987 canvas.style.height = unscaledHeight + 'px';
864 if (resScale != 1) { 988 if (resScale != 1) {
865 ctx.scale(resScale, resScale); 989 ctx.scale(resScale, resScale);
866 } 990 }
867 xmin = Infinity; 991 xmin = Infinity;
868 xmax = -Infinity; 992 xmax = -Infinity;
869 ymin = Infinity; 993 ymin = Infinity;
870 ymax = -Infinity; 994 ymax = -Infinity;
871 hasPath = hasComputedPath = false; 995 hasPath = hasAlignedPath = hasComputedPath = false;
872 firstActiveSpan = -1; 996 firstActiveSpan = -1;
873 for (var tIndex = 0; tIndex < test.length; tIndex += 3) { 997 for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
874 var recType = test[tIndex]; 998 var recType = test[tIndex];
875 if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) { 999 if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
876 console.log("unknown rec type: " + recType); 1000 console.log("unknown rec type: " + recType);
877 throw "stop execution"; 1001 throw "stop execution";
878 } 1002 }
879 var records = test[tIndex + 2]; 1003 var records = test[tIndex + 2];
880 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2 ) { 1004 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2 ) {
881 var fragType = records[recordIndex]; 1005 var fragType = records[recordIndex];
882 if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_ TYPE_LAST) { 1006 if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_ TYPE_LAST) {
883 console.log("unknown in range frag type: " + fragType); 1007 console.log("unknown in range frag type: " + fragType);
884 throw "stop execution"; 1008 throw "stop execution";
885 } 1009 }
886 var frags = records[recordIndex + 1]; 1010 var frags = records[recordIndex + 1];
887 var first = 0; 1011 var first = 0;
888 var last = -1; 1012 var last = -1;
889 var first2 = 0; 1013 var first2 = 0;
890 var last2 = 0; 1014 var last2 = 0;
891 switch (recType) { 1015 switch (recType) {
1016 case REC_TYPE_ALIGNED:
1017 hasAlignedPath = true;
892 case REC_TYPE_COMPUTED: 1018 case REC_TYPE_COMPUTED:
893 if (fragType == COMPUTED_SET_1 || fragType == COMPUTED_SET_2 ) { 1019 if (fragType == COMPUTED_SET_1 || fragType == COMPUTED_SET_2 ) {
894 break; 1020 break;
895 } 1021 }
896 hasComputedPath = true; 1022 if (REC_TYPE_COMPUTED == recType) {
1023 hasComputedPath = true;
1024 }
897 case REC_TYPE_PATH: 1025 case REC_TYPE_PATH:
898 first = 1; 1026 first = 1;
899 switch (fragType) { 1027 switch (fragType) {
900 case PATH_LINE: 1028 case PATH_LINE:
901 last = 5; 1029 last = 5;
902 break; 1030 break;
903 case PATH_CONIC: 1031 case PATH_CONIC:
904 case PATH_QUAD: 1032 case PATH_QUAD:
905 last = 7; 1033 last = 7;
906 break; 1034 break;
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
1180 ymax = Math.max(ymax, angleBounds[3]); 1308 ymax = Math.max(ymax, angleBounds[3]);
1181 setScale(xmin, xmax, ymin, ymax); 1309 setScale(xmin, xmax, ymin, ymax);
1182 if (hasPath == false && hasComputedPath == true && !draw_computed) { 1310 if (hasPath == false && hasComputedPath == true && !draw_computed) {
1183 draw_computed = 7; // show quadratics, conics, and cubics 1311 draw_computed = 7; // show quadratics, conics, and cubics
1184 } 1312 }
1185 if (hasPath == true && hasComputedPath == false && draw_computed) { 1313 if (hasPath == true && hasComputedPath == false && draw_computed) {
1186 draw_computed = 0; 1314 draw_computed = 0;
1187 } 1315 }
1188 } 1316 }
1189 1317
1190 function curveByID(test, id) { 1318 function curveByIDMatch(test, id, recMatch) {
1191 var tIndex = -3; 1319 var tIndex = -3;
1192 while ((tIndex += 3) < test.length) { 1320 while ((tIndex += 3) < test.length) {
1193 var recType = test[tIndex]; 1321 var recType = test[tIndex];
1194 if (recType == REC_TYPE_OP) { 1322 if (recType == REC_TYPE_OP) {
1195 continue; 1323 continue;
1196 } 1324 }
1197 if (recType != REC_TYPE_PATH) { 1325 if (recType != recMatch) {
1198 return []; 1326 return [];
1199 } 1327 }
1200 var records = test[tIndex + 2]; 1328 var records = test[tIndex + 2];
1201 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2 ) { 1329 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2 ) {
1202 var fragType = records[recordIndex]; 1330 var fragType = records[recordIndex];
1203 var frags = records[recordIndex + 1]; 1331 var frags = records[recordIndex + 1];
1204 if (frags[0] == id) { 1332 if (frags[0] == id) {
1205 switch (fragType) { 1333 switch (fragType) {
1206 case PATH_LINE: 1334 case PATH_LINE:
1207 return [frags[1], frags[2], frags[3], frags[4]]; 1335 return [frags[1], frags[2], frags[3], frags[4]];
1208 case PATH_QUAD: 1336 case PATH_QUAD:
1209 return [frags[1], frags[2], frags[3], frags[4], 1337 return [frags[1], frags[2], frags[3], frags[4],
1210 frags[5], frags[6]]; 1338 frags[5], frags[6]];
1211 case PATH_CONIC: 1339 case PATH_CONIC:
1212 return [frags[1], frags[2], frags[3], frags[4], 1340 return [frags[1], frags[2], frags[3], frags[4],
1213 frags[5], frags[6], frags[7]]; 1341 frags[5], frags[6], frags[7]];
1214 case PATH_CUBIC: 1342 case PATH_CUBIC:
1215 return [frags[1], frags[2], frags[3], frags[4], 1343 return [frags[1], frags[2], frags[3], frags[4],
1216 frags[5], frags[6], frags[7], frags[8]]; 1344 frags[5], frags[6], frags[7], frags[8]];
1217 } 1345 }
1218 } 1346 }
1219 } 1347 }
1220 } 1348 }
1221 return []; 1349 return [];
1222 } 1350 }
1223 1351
1224 function curvePartialByID(test, id, t0, t1) { 1352 function curveByID(test, id) {
1353 var result = draw_path >= 4 ? curveByIDMatch(test, id, REC_TYPE_ALIGNED) : [ ];
1354 if (!result.length) {
1355 result = curveByIDMatch(test, id, REC_TYPE_PATH);
1356 }
1357 return result;
1358 }
1359
1360 function curvePartialByIDMatch(test, id, t0, t1, recMatch) {
1225 var tIndex = -3; 1361 var tIndex = -3;
1226 while ((tIndex += 3) < test.length) { 1362 while ((tIndex += 3) < test.length) {
1227 var recType = test[tIndex]; 1363 var recType = test[tIndex];
1228 if (recType == REC_TYPE_OP) { 1364 if (recType == REC_TYPE_OP) {
1229 continue; 1365 continue;
1230 } 1366 }
1231 if (recType != REC_TYPE_PATH) { 1367 if (recType != recMatch) {
1232 return []; 1368 return [];
1233 } 1369 }
1234 var records = test[tIndex + 2]; 1370 var records = test[tIndex + 2];
1235 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2 ) { 1371 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2 ) {
1236 var fragType = records[recordIndex]; 1372 var fragType = records[recordIndex];
1237 var frags = records[recordIndex + 1]; 1373 var frags = records[recordIndex + 1];
1238 if (frags[0] == id) { 1374 if (frags[0] == id) {
1239 switch (fragType) { 1375 switch (fragType) {
1240 case PATH_LINE: 1376 case PATH_LINE:
1241 return linePartial(frags[1], frags[2], frags[3], frags[4 ], t0, t1); 1377 return linePartial(frags[1], frags[2], frags[3], frags[4 ], t0, t1);
1242 case PATH_QUAD: 1378 case PATH_QUAD:
1243 return quadPartial(frags[1], frags[2], frags[3], frags[4 ], 1379 return quadPartial(frags[1], frags[2], frags[3], frags[4 ],
1244 frags[5], frags[6], t0, t1); 1380 frags[5], frags[6], t0, t1);
1245 case PATH_CONIC: 1381 case PATH_CONIC:
1246 return conicPartial(frags[1], frags[2], frags[3], frags[ 4], 1382 return conicPartial(frags[1], frags[2], frags[3], frags[ 4],
1247 frags[5], frags[6], frags[7], t0, t1); 1383 frags[5], frags[6], frags[7], t0, t1);
1248 case PATH_CUBIC: 1384 case PATH_CUBIC:
1249 return cubicPartial(frags[1], frags[2], frags[3], frags[ 4], 1385 return cubicPartial(frags[1], frags[2], frags[3], frags[ 4],
1250 frags[5], frags[6], frags[7], frags[8], t0, t1); 1386 frags[5], frags[6], frags[7], frags[8], t0, t1);
1251 } 1387 }
1252 } 1388 }
1253 } 1389 }
1254 } 1390 }
1255 return []; 1391 return [];
1256 } 1392 }
1257 1393
1258 function idByCurve(test, frag, type) { 1394 function curvePartialByID(test, id, t0, t1) {
1395 var result = draw_path >= 4 ? curvePartialByIDMatch(test, id, t0, t1, REC_TY PE_ALIGNED) : [];
1396 if (!result.length) {
1397 result = curvePartialByIDMatch(test, id, t0, t1, REC_TYPE_PATH);
1398 }
1399 return result;
1400 }
1401
1402 function idByCurveIDMatch(test, frag, type, recMatch) {
1259 var tIndex = 0; 1403 var tIndex = 0;
1260 while (tIndex < test.length) { 1404 while (tIndex < test.length) {
1261 var recType = test[tIndex]; 1405 var recType = test[tIndex];
1262 if (recType != REC_TYPE_PATH) { 1406 if (recType != recMatch) {
1263 ++tIndex; 1407 ++tIndex;
1264 continue; 1408 continue;
1265 } 1409 }
1266 var records = test[tIndex + 2]; 1410 var records = test[tIndex + 2];
1267 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2 ) { 1411 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2 ) {
1268 var fragType = records[recordIndex]; 1412 var fragType = records[recordIndex];
1269 var frags = records[recordIndex + 1]; 1413 var frags = records[recordIndex + 1];
1270 if (frag.length != frags.length - 1) { 1414 if (frag.length != frags.length - 1) {
1271 continue; 1415 continue;
1272 } 1416 }
(...skipping 27 matching lines...) Expand all
1300 continue; 1444 continue;
1301 } 1445 }
1302 return frags[0]; 1446 return frags[0];
1303 } 1447 }
1304 } 1448 }
1305 ++tIndex; 1449 ++tIndex;
1306 } 1450 }
1307 return -1; 1451 return -1;
1308 } 1452 }
1309 1453
1454 function idByCurve(test, frag, type) {
1455 var result = draw_path >= 4 ? idByCurveIDMatch(test, frag, type, REC_TYPE_AL IGNED) : [];
1456 if (!result.length) {
1457 result = idByCurveIDMatch(test, frag, type, REC_TYPE_PATH);
1458 }
1459 return result;
1460 }
1461
1310 function curve_extremes(curve, bounds) { 1462 function curve_extremes(curve, bounds) {
1311 var length = curve.length == 7 ? 6 : curve.length; 1463 var length = curve.length == 7 ? 6 : curve.length;
1312 for (var index = 0; index < curve.length; index += 2) { 1464 for (var index = 0; index < curve.length; index += 2) {
1313 var x = curve[index]; 1465 var x = curve[index];
1314 var y = curve[index + 1]; 1466 var y = curve[index + 1];
1315 bounds[0] = Math.min(bounds[0], x); 1467 bounds[0] = Math.min(bounds[0], x);
1316 bounds[1] = Math.min(bounds[1], y); 1468 bounds[1] = Math.min(bounds[1], y);
1317 bounds[2] = Math.max(bounds[2], x); 1469 bounds[2] = Math.max(bounds[2], x);
1318 bounds[3] = Math.max(bounds[3], y); 1470 bounds[3] = Math.max(bounds[3], y);
1319 } 1471 }
(...skipping 1381 matching lines...) Expand 10 before | Expand all | Expand 10 after
2701 break; 2853 break;
2702 default: 2854 default:
2703 console.log("unknown REC_TYPE_COMPUTED frag type: " + fragType); 2855 console.log("unknown REC_TYPE_COMPUTED frag type: " + fragType);
2704 throw "stop execution"; 2856 throw "stop execution";
2705 } 2857 }
2706 if (!drawThis || collect_bounds) { 2858 if (!drawThis || collect_bounds) {
2707 break; 2859 break;
2708 } 2860 }
2709 drawCurveSpecials(test, frags, fragType); 2861 drawCurveSpecials(test, frags, fragType);
2710 break; 2862 break;
2863 case REC_TYPE_ALIGNED:
2864 if (draw_path < 4) {
2865 continue;
2866 }
2711 case REC_TYPE_PATH: 2867 case REC_TYPE_PATH:
2712 case REC_TYPE_PATH2: 2868 case REC_TYPE_PATH2:
2869 if (REC_TYPE_ALIGNED != recType && draw_path >= 4) {
2870 continue;
2871 }
2713 if (!draw_path) { 2872 if (!draw_path) {
2714 continue; 2873 continue;
2715 } 2874 }
2716 var firstPath = tIndex < secondPath; 2875 var firstPath = tIndex < secondPath;
2717 if ((draw_path & (firstPath ? 1 : 2)) == 0) { 2876 if ((draw_path & (firstPath ? 1 : 2)) == 0) {
2718 continue; 2877 continue;
2719 } 2878 }
2720 ctx.lineWidth = 1; 2879 ctx.lineWidth = 1;
2721 ctx.strokeStyle = firstPath ? "black" : "red"; 2880 ctx.strokeStyle = firstPath ? "black" : "red";
2722 ctx.fillStyle = "blue"; 2881 ctx.fillStyle = "blue";
(...skipping 12 matching lines...) Expand all
2735 for (var i = 0; i < 7; ++ i) { frags2[i] = frags[i + 1]; } 2894 for (var i = 0; i < 7; ++ i) { frags2[i] = frags[i + 1]; }
2736 drawConicWithQuads(frags2[0], frags2[1], frags2[2], frags2[3], 2895 drawConicWithQuads(frags2[0], frags2[1], frags2[2], frags2[3],
2737 frags2[4], frags2[5], frags2[6]); 2896 frags2[4], frags2[5], frags2[6]);
2738 break; 2897 break;
2739 case PATH_CUBIC: 2898 case PATH_CUBIC:
2740 for (var i = 0; i < 8; ++ i) { frags2[i] = frags[i + 1]; } 2899 for (var i = 0; i < 8; ++ i) { frags2[i] = frags[i + 1]; }
2741 drawCubic(frags2[0], frags2[1], frags2[2], frags2[3] , 2900 drawCubic(frags2[0], frags2[1], frags2[2], frags2[3] ,
2742 frags2[4], frags2[5], frags2[6], frags2[7]); 2901 frags2[4], frags2[5], frags2[6], frags2[7]);
2743 break; 2902 break;
2744 default: 2903 default:
2745 console.log("unknown REC_TYPE_PATH2 frag type: " + f ragType); 2904 console.log("unknown " + recType + " frag type: " + fragType);
2746 throw "stop execution"; 2905 throw "stop execution";
2747 } 2906 }
2748 if (collect_bounds) { 2907 if (collect_bounds) {
2749 break; 2908 break;
2750 } 2909 }
2751 drawCurveSpecials(test, frags2, fragType); 2910 drawCurveSpecials(test, frags2, fragType);
2752 break; 2911 break;
2753 case REC_TYPE_OP: 2912 case REC_TYPE_OP:
2754 switch (fragType) { 2913 switch (fragType) {
2755 case OP_INTERSECT: opLetter = 'I'; break; 2914 case OP_INTERSECT: opLetter = 'I'; break;
(...skipping 644 matching lines...) Expand 10 before | Expand all | Expand 10 after
3400 drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_intersection > 1 ? se ctCount : sectMax2, draw_intersection, intersectionKey); 3559 drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_intersection > 1 ? se ctCount : sectMax2, draw_intersection, intersectionKey);
3401 drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_add ? addCount : addM ax, draw_add, addKey); 3560 drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_add ? addCount : addM ax, draw_add, addKey);
3402 drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_active ? activeCount : activeMax, draw_active, activeKey); 3561 drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_active ? activeCount : activeMax, draw_active, activeKey);
3403 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_angle ? angleCount : angleMax, draw_angle, angleKey); 3562 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_angle ? angleCount : angleMax, draw_angle, angleKey);
3404 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_coincidence ? coinC ount : coinMax, draw_coincidence, coincidenceKey); 3563 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_coincidence ? coinC ount : coinMax, draw_coincidence, coincidenceKey);
3405 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_op ? opCount : opMa x, draw_op, opKey); 3564 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_op ? opCount : opMa x, draw_op, opKey);
3406 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_sort ? sortCount : sortMax, draw_sort, sortKey); 3565 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_sort ? sortCount : sortMax, draw_sort, sortKey);
3407 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_top ? topCount : to pMax, draw_top, topKey); 3566 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_top ? topCount : to pMax, draw_top, topKey);
3408 drawBox(pos++, "rgba(127,0,127, 0.3)", "black", draw_mark ? markCount : markMax, draw_mark, markKey); 3567 drawBox(pos++, "rgba(127,0,127, 0.3)", "black", draw_mark ? markCount : markMax, draw_mark, markKey);
3409 drawBox(pos++, "black", "white", 3568 drawBox(pos++, "black", "white",
3410 (new Array('P', 'P1', 'P2', 'P'))[draw_path], draw_path != 0, pa thKey); 3569 (new Array('P', 'P1', 'P2', 'P', 'p', 'p1', 'p2'))[draw_path], d raw_path != 0, pathKey);
3411 drawBox(pos++, "rgba(0,63,0, 0.7)", "white", 3570 drawBox(pos++, "rgba(0,63,0, 0.7)", "white",
3412 (new Array('Q', 'Q', 'C', 'QC', 'Qc', 'Cq'))[draw_computed], 3571 (new Array('Q', 'Q', 'C', 'QC', 'Qc', 'Cq'))[draw_computed],
3413 draw_computed != 0, computedKey); 3572 draw_computed != 0, computedKey);
3414 drawBox(pos++, "green", "black", step_limit, drawSomething, ''); 3573 drawBox(pos++, "green", "black", step_limit, drawSomething, '');
3415 drawBox(pos++, "green", "black", stepMax, drawSomething, ''); 3574 drawBox(pos++, "green", "black", stepMax, drawSomething, '');
3416 drawBox(pos++, "rgba(255,0,0, 0.6)", "black", lastIndex, drawSomething & draw_log, ''); 3575 drawBox(pos++, "rgba(255,0,0, 0.6)", "black", lastIndex, drawSomething & draw_log, '');
3417 drawBox(pos++, "rgba(255,0,0, 0.6)", "black", test.length - 1, drawSomet hing & draw_log, ''); 3576 drawBox(pos++, "rgba(255,0,0, 0.6)", "black", test.length - 1, drawSomet hing & draw_log, '');
3418 if (curve_t) { 3577 if (curve_t) {
3419 drawCurveTControl(); 3578 drawCurveTControl();
3420 } 3579 }
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
3727 break; 3886 break;
3728 case opKey: 3887 case opKey:
3729 draw_op = (draw_op + 1) % 3; 3888 draw_op = (draw_op + 1) % 3;
3730 redraw(); 3889 redraw();
3731 break; 3890 break;
3732 case opBackKey: 3891 case opBackKey:
3733 draw_op = (draw_op + 2) % 3; 3892 draw_op = (draw_op + 2) % 3;
3734 redraw(); 3893 redraw();
3735 break; 3894 break;
3736 case pathKey: 3895 case pathKey:
3737 draw_path = (draw_path + 1) % 4; 3896 draw_path = (draw_path + 1) % (4 + (hasAlignedPath ? 3 : 0));
3738 redraw(); 3897 redraw();
3739 break; 3898 break;
3740 case pathBackKey: 3899 case pathBackKey:
3741 draw_path = (draw_path + 3) % 4; 3900 draw_path = (draw_path + 3 + (hasAlignedPath ? 3 : 0)) % (4 + (hasAligne dPath ? 3 : 0));
3742 redraw(); 3901 redraw();
3743 break; 3902 break;
3744 case ptsKey: 3903 case ptsKey:
3745 pt_labels = (pt_labels + 1) % 3; 3904 pt_labels = (pt_labels + 1) % 3;
3746 redraw(); 3905 redraw();
3747 break; 3906 break;
3748 case retinaKey: 3907 case retinaKey:
3749 retina_scale ^= true; 3908 retina_scale ^= true;
3750 drawTop(); 3909 drawTop();
3751 break; 3910 break;
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
3953 </script> 4112 </script>
3954 </head> 4113 </head>
3955 4114
3956 <body onLoad="start();"> 4115 <body onLoad="start();">
3957 <canvas id="canvas" width="750" height="500" 4116 <canvas id="canvas" width="750" height="500"
3958 onmousemove="handleMouseOver()" 4117 onmousemove="handleMouseOver()"
3959 onclick="handleMouseClick()" 4118 onclick="handleMouseClick()"
3960 ></canvas > 4119 ></canvas >
3961 </body> 4120 </body>
3962 </html> 4121 </html>
OLDNEW
« no previous file with comments | « tools/pathops_sorter.htm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698