blob: 9facf647304449ad8e62849e6be26aa48ebb5028 [file] [log] [blame]
caryclarkdac1d172014-06-17 05:15:38 -07001<html>
2<head>
3<div height="0" hidden="true">
caryclarkdac1d172014-06-17 05:15:38 -07004
caryclark03b03ca2015-04-23 09:13:37 -07005<div id="quadRect1">
6seg=1 {{{6, 15}, {16, 0}, {8, 4}}}
7seg=2 {{{8, 4}, {2, 7}, {12, 12}}}
8seg=3 {{{12, 12}, {6, 15}}}
9seg=4 {{{4, 11}, {13, 11}}}
10seg=5 {{{13, 11}, {13, 16}}}
11seg=6 {{{13, 16}, {4, 16}}}
12seg=7 {{{4, 16}, {4, 11}}}
13-SkOpSegment::findTop- baseAngle
14SkOpAngle::dumpOne [2/14] next=1/13 sect=17/25 s=0 [3] e=0.823529343 [16] sgn=-1 windVal=1 windSum=?
15SkOpAngle::dumpOne [1/13] next=2/14 sect=1/25 s=1 [2] e=0.17647064 [15] sgn=1 windVal=1 windSum=?
16-SkOpSegment::findTop- firstAngle
17SkOpAngle::dumpOne [1/13] next=2/14 sect=1/25 s=1 [2] e=0.17647064 [15] sgn=1 windVal=1 windSum=?
18SkOpAngle::dumpOne [2/14] next=1/13 sect=17/25 s=0 [3] e=0.823529343 [16] sgn=-1 windVal=1 windSum=?
19SkOpSegment::findTop id=1 s=0.17647064 e=1 (-) cw=0 swap=1 inflections=0 monotonic=0
20</div>
21
22<div id="quadRect2">
23seg=1 {{{5, 12}, {15, 7}, {9, 4}}}
24seg=2 {{{9, 4}, {1, 0}, {11, 15}}}
25seg=3 {{{11, 15}, {5, 12}}}
26seg=4 {{{4, 11}, {13, 11}}}
27seg=5 {{{13, 11}, {13, 16}}}
28seg=6 {{{13, 16}, {4, 16}}}
29seg=7 {{{4, 16}, {4, 11}}}
30-SkOpSegment::findTop- baseAngle
31SkOpAngle::dumpOne [2/13] next=1/14 sect=13/21 s=0 [3] e=0.82352936 [16] sgn=-1 windVal=1 windSum=?
32SkOpAngle::dumpOne [1/14] next=2/13 sect=29/21 s=1 [2] e=0.176470657 [15] sgn=1 windVal=1 windSum=?
33-SkOpSegment::findTop- firstAngle
34SkOpAngle::dumpOne [2/13] next=1/14 sect=13/21 s=0 [3] e=0.82352936 [16] sgn=-1 windVal=1 windSum=?
35SkOpAngle::dumpOne [1/14] next=2/13 sect=29/21 s=1 [2] e=0.176470657 [15] sgn=1 windVal=1 windSum=?
36SkOpSegment::findTop id=2 s=0.82352936 e=0 (+) cw=1 swap=0 inflections=0 monotonic=0
37</div>
38
39<div id="quadRect3">
40seg=1 {{{12, 12}, {2, 7}, {8, 4}}}
41seg=2 {{{8, 4}, {16, 0}, {6, 15}}}
42seg=3 {{{6, 15}, {12, 12}}}
43seg=4 {{{4, 11}, {13, 11}}}
44seg=5 {{{13, 11}, {13, 16}}}
45seg=6 {{{13, 16}, {4, 16}}}
46seg=7 {{{4, 16}, {4, 11}}}
47-SkOpSegment::findTop- baseAngle
48SkOpAngle::dumpOne [1/14] next=2/13 sect=17/25 s=1 [2] e=0.176470657 [15] sgn=1 windVal=1 windSum=?
49SkOpAngle::dumpOne [2/13] next=1/14 sect=1/25 s=0 [3] e=0.82352936 [16] sgn=-1 windVal=1 windSum=?
50-SkOpSegment::findTop- firstAngle
51SkOpAngle::dumpOne [2/13] next=1/14 sect=1/25 s=0 [3] e=0.82352936 [16] sgn=-1 windVal=1 windSum=?
52SkOpAngle::dumpOne [1/14] next=2/13 sect=17/25 s=1 [2] e=0.176470657 [15] sgn=1 windVal=1 windSum=?
53SkOpSegment::findTop id=2 s=0.82352936 e=0 (+) cw=0 swap=1 inflections=0 monotonic=0
54</div>
55
56<div id="quadRect4">
57seg=1 {{{11, 15}, {1, 0}, {9, 4}}}
58seg=2 {{{9, 4}, {15, 7}, {5, 12}}}
59seg=3 {{{5, 12}, {11, 15}}}
60seg=4 {{{4, 11}, {13, 11}}}
61seg=5 {{{13, 11}, {13, 16}}}
62seg=6 {{{13, 16}, {4, 16}}}
63seg=7 {{{4, 16}, {4, 11}}}
64-SkOpSegment::findTop- baseAngle
65SkOpAngle::dumpOne [1/13] next=2/14 sect=13/21 s=1 [2] e=0.17647064 [15] sgn=1 windVal=1 windSum=?
66SkOpAngle::dumpOne [2/14] next=1/13 sect=29/21 s=0 [3] e=0.823529343 [16] sgn=-1 windVal=1 windSum=?
67-SkOpSegment::findTop- firstAngle
68SkOpAngle::dumpOne [1/13] next=2/14 sect=13/21 s=1 [2] e=0.17647064 [15] sgn=1 windVal=1 windSum=?
69SkOpAngle::dumpOne [2/14] next=1/13 sect=29/21 s=0 [3] e=0.823529343 [16] sgn=-1 windVal=1 windSum=?
70SkOpSegment::findTop id=1 s=0.17647064 e=1 (-) cw=1 swap=0 inflections=0 monotonic=0
71</div>
72
73<div id="quadRect5">
74seg=1 {{{11, 13}, {4, 4}, {8, 4}}}
75seg=2 {{{8, 4}, {12, 4}, {5, 13}}}
76seg=3 {{{5, 13}, {11, 13}}}
77seg=4 {{{4, 11}, {13, 11}}}
78seg=5 {{{13, 11}, {13, 16}}}
79seg=6 {{{13, 16}, {4, 16}}}
80seg=7 {{{4, 16}, {4, 11}}}
81-SkOpSegment::findTop- baseAngle
82SkOpAngle::dumpOne [1/14] next=2/13 sect=16/21 s=1 [2] e=0.272727338 [15] sgn=1 windVal=1 windSum=?
83SkOpAngle::dumpOne [2/13] next=1/14 sect=30/21 s=0 [3] e=0.727272662 [16] sgn=-1 windVal=1 windSum=?
84-SkOpSegment::findTop- firstAngle
85SkOpAngle::dumpOne [1/14] next=2/13 sect=16/21 s=1 [2] e=0.272727338 [15] sgn=1 windVal=1 windSum=?
86SkOpAngle::dumpOne [2/13] next=1/14 sect=30/21 s=0 [3] e=0.727272662 [16] sgn=-1 windVal=1 windSum=?
87SkOpSegment::findTop id=1 s=0.272727338 e=1 (-) cw=1 swap=0 inflections=0 monotonic=1
88</div>
89
90<div id="quadRect6">
91seg=1 {{{5, 13}, {12, 4}, {8, 4}}}
92seg=2 {{{8, 4}, {4, 4}, {11, 13}}}
93seg=3 {{{11, 13}, {5, 13}}}
94seg=4 {{{4, 11}, {13, 11}}}
95seg=5 {{{13, 11}, {13, 16}}}
96seg=6 {{{13, 16}, {4, 16}}}
97seg=7 {{{4, 16}, {4, 11}}}
98-SkOpSegment::findTop- baseAngle
99SkOpAngle::dumpOne [2/13] next=1/14 sect=16/25 s=0 [3] e=0.727272662 [16] sgn=-1 windVal=1 windSum=?
100SkOpAngle::dumpOne [1/14] next=2/13 sect=30/25 s=1 [2] e=0.272727338 [15] sgn=1 windVal=1 windSum=?
101-SkOpSegment::findTop- firstAngle
102SkOpAngle::dumpOne [2/13] next=1/14 sect=16/25 s=0 [3] e=0.727272662 [16] sgn=-1 windVal=1 windSum=?
103SkOpAngle::dumpOne [1/14] next=2/13 sect=30/25 s=1 [2] e=0.272727338 [15] sgn=1 windVal=1 windSum=?
104SkOpSegment::findTop id=2 s=0.727272662 e=0 (+) cw=1 swap=0 inflections=0 monotonic=1
105</div>
106
107<div id="cubicOp141">
108seg=1 {{{0, 2}, {0.333333343f, 2}, {1.11111116f, 2.22222233f}, {1.88888907f, 2.44444442f}}}
109seg=2 {{{1.88888907f, 2.44444442f}, {3.44444466f, 2.88888884f}, {5, 3.33333325f}, {3, 2}}}
110seg=3 {{{3, 2}, {0, 2}}}
111seg=4 {{{4, 6}, {2.26715517f, 3.40073299f}, {2.03568602f, 0.801465988f}, {2.00476694f, 0.80384922f}}}
112seg=5 {{{2.00476694f, 0.80384922f}, {2, 0.804216623f}, {2, 0.866422355f}, {2, 1}}}
113seg=6 {{{2, 1}, {4, 6}}}
114-SkOpSegment::findTop- baseAngle
115SkOpAngle::dumpOne [5/21] next=4/22 sect=17/21 s=0 [9] e=1 [10] sgn=-1 windVal=1 windSum=? operand
116SkOpAngle::dumpOne [4/22] next=5/21 sect=1/25 s=1 [8] e=0.769447644 [13] sgn=1 windVal=1 windSum=? operand
117-SkOpSegment::findTop- firstAngle
118SkOpAngle::dumpOne [4/22] next=5/21 sect=1/25 s=1 [8] e=0.769447644 [13] sgn=1 windVal=1 windSum=? operand
119SkOpAngle::dumpOne [5/21] next=4/22 sect=17/21 s=0 [9] e=1 [10] sgn=-1 windVal=1 windSum=? operand
120SkOpSegment::findTop id=4 s=0.769447644 e=1 (-) cw=0 swap=1 inflections=1 monotonic=0
121</div>
122
123<div id="cubicOp58d">
124seg=1 {{{0, 5}, {1.125f, 4.625f}, {2.25f, 4.53125f}, {3.1640625f, 4.45507813f}}}
125seg=2 {{{3.1640625f, 4.45507813f}, {4.6875f, 4.328125f}, {5.625f, 4.25f}, {5, 3}}}
126seg=3 {{{5, 3}, {0, 5}}}
127seg=4 {{{5, 6}, {3.45152783f, 5.2257638f}, {4.30082178f, 2.05376172f}, {4.29911709f, 2.05330443f}}}
128seg=5 {{{4.29911709f, 2.05330443f}, {4.29861975f, 2.05317116f}, {4.2257638f, 2.32270813f}, {4, 3}}}
129seg=6 {{{4, 3}, {5, 6}}}
130-SkOpSegment::findTop- baseAngle
131SkOpAngle::dumpOne [5/21] next=4/22 sect=13/21 s=0 [9] e=1 [10] sgn=-1 windVal=1 windSum=? operand
132SkOpAngle::dumpOne [4/22] next=5/21 sect=29/21 s=1 [8] e=0.587088912 [13] sgn=1 windVal=1 windSum=? operand
133-SkOpSegment::findTop- firstAngle
134SkOpAngle::dumpOne [5/21] next=4/22 sect=13/21 s=0 [9] e=1 [10] sgn=-1 windVal=1 windSum=? operand
135SkOpAngle::dumpOne [4/22] next=5/21 sect=29/21 s=1 [8] e=0.587088912 [13] sgn=1 windVal=1 windSum=? operand
136SkOpSegment::findTop id=5 s=1 e=0 (+) cw=0 swap=1 inflections=1 monotonic=0
137</div>
138
139
140<div id="issue3651_5">
141seg=1 {{{9.89999962f, 257.399994f}, {10.2666664f, 257.399994f}, {10.6333332f, 257.406433f}, {11, 257.412872f}}}
142seg=2 {{{11, 257.412872f}, {11.7333336f, 257.425751f}, {12.4666672f, 257.438629f}, {13.1999998f, 257.399994f}}}
143seg=3 {{{13.1999998f, 257.399994f}, {14.3000002f, 257.342041f}, {15.3999996f, 257.207611f}, {16.5f, 257.052246f}}}
144seg=4 {{{16.5f, 257.052246f}, {16.9802361f, 256.984406f}, {17.4604721f, 256.884735f}, {17.9407063f, 256.785095f}}}
145seg=5 {{{17.9407063f, 256.785095f}, {18.5604706f, 256.656494f}, {19.1802349f, 256.527893f}, {19.7999992f, 256.467651f}}}
146seg=6 {{{19.7999992f, 256.467651f}, {20.8999996f, 256.360748f}, {22, 256.304291f}, {23.1000004f, 256.410889f}}}
147seg=7 {{{23.1000004f, 256.410889f}, {23.70541f, 256.469543f}, {24.3108177f, 256.624634f}, {24.9162273f, 256.779724f}}}
148seg=8 {{{24.9162273f, 256.779724f}, {25.4108181f, 256.906403f}, {25.9054089f, 257.033081f}, {26.3999996f, 257.107208f}}}
149seg=9 {{{26.3999996f, 257.107208f}, {27.5f, 257.272064f}, {28.6000004f, 257.401825f}, {29.7000008f, 257.399994f}}}
150seg=10 {{{29.7000008f, 257.399994f}, {30.7999992f, 257.398163f}, {31.8999996f, 257.262878f}, {33, 257.096222f}}}
151seg=11 {{{33, 257.096222f}, {33.4856606f, 257.022644f}, {33.9713249f, 256.897003f}, {34.4569855f, 256.771362f}}}
152seg=12 {{{34.4569855f, 256.771362f}, {35.0713234f, 256.612457f}, {35.6856613f, 256.453552f}, {36.2999992f, 256.399994f}}}
153seg=13 {{{36.2999992f, 256.399994f}, {37.4000015f, 256.304108f}, {38.5f, 256.354187f}, {39.5999985f, 256.520844f}}}
154seg=14 {{{39.5999985f, 256.520844f}, {40.1364708f, 256.602112f}, {40.6729393f, 256.778381f}, {41.2094116f, 256.95462f}}}
155seg=15 {{{41.2094116f, 256.95462f}, {41.7729416f, 257.139771f}, {42.3364716f, 257.324921f}, {42.9000015f, 257.399994f}}}
156seg=16 {{{42.9000015f, 257.399994f}, {43.6333351f, 257.497681f}, {44.3666687f, 257.465118f}, {45.1000023f, 257.432556f}}}
157seg=17 {{{45.1000023f, 257.432556f}, {45.4666672f, 257.41629f}, {45.8333321f, 257.399994f}, {46.2000008f, 257.399994f}}}
158seg=18 {{{46.2000008f, 257.399994f}, {46.5666656f, 257.399994f}, {46.9333344f, 257.41275f}, {47.2999992f, 257.425507f}}}
159seg=19 {{{47.2999992f, 257.425507f}, {48.0333328f, 257.451019f}, {48.7666664f, 257.476501f}, {49.5f, 257.399994f}}}
160seg=20 {{{49.5f, 257.399994f}, {50.1035385f, 257.337006f}, {50.707077f, 257.186005f}, {51.3106155f, 257.035004f}}}
161seg=21 {{{51.3106155f, 257.035004f}, {51.8070755f, 256.910797f}, {52.3035393f, 256.786591f}, {52.7999992f, 256.711365f}}}
162seg=22 {{{52.7999992f, 256.711365f}, {53.9000015f, 256.544678f}, {55, 256.451904f}, {56.0999985f, 256.399994f}}}
163seg=23 {{{56.0999985f, 256.399994f}, {56.8333321f, 256.365417f}, {57.5666656f, 256.376923f}, {58.2999992f, 256.388458f}}}
164seg=24 {{{58.2999992f, 256.388458f}, {58.6666679f, 256.394226f}, {59.0333328f, 256.399994f}, {59.4000015f, 256.399994f}}}
165seg=25 {{{59.4000015f, 256.399994f}, {59.7666664f, 256.399994f}, {60.1333313f, 256.393616f}, {60.5f, 256.387238f}}}
166seg=26 {{{60.5f, 256.387238f}, {61.2333336f, 256.374481f}, {61.9666672f, 256.361755f}, {62.7000008f, 256.399994f}}}
167seg=27 {{{62.7000008f, 256.399994f}, {63.7999992f, 256.457397f}, {64.9000015f, 256.577667f}, {66, 256.744354f}}}
168seg=28 {{{66, 256.744354f}, {66.484726f, 256.81778f}, {66.9694519f, 256.932587f}, {67.4541855f, 257.047394f}}}
169seg=29 {{{67.4541855f, 257.047394f}, {68.069458f, 257.193146f}, {68.6847305f, 257.338867f}, {69.3000031f, 257.399994f}}}
170seg=30 {{{69.3000031f, 257.399994f}, {70.0333328f, 257.472839f}, {70.7666626f, 257.448578f}, {71.4999924f, 257.424286f}}}
171seg=31 {{{71.4999924f, 257.424286f}, {71.8666611f, 257.41214f}, {72.2333298f, 257.399994f}, {72.5999985f, 257.399994f}}}
172seg=32 {{{72.5999985f, 257.399994f}, {72.9666672f, 257.399994f}, {73.3333359f, 257.40683f}, {73.7000046f, 257.413696f}}}
173seg=33 {{{73.7000046f, 257.413696f}, {74.4333344f, 257.427399f}, {75.1666718f, 257.441101f}, {75.9000015f, 257.399994f}}}
174seg=34 {{{75.9000015f, 257.399994f}, {76.3889008f, 257.37262f}, {76.8778f, 257.296539f}, {77.3666992f, 257.220459f}}}
175seg=35 {{{77.3666992f, 257.220459f}, {77.9777985f, 257.125336f}, {78.5888977f, 257.030243f}, {79.1999969f, 257.030243f}}}
176seg=36 {{{79.1999969f, 257.030243f}, {79.8110962f, 257.030243f}, {80.4221954f, 257.125336f}, {81.0332947f, 257.220459f}}}
177seg=37 {{{81.0332947f, 257.220459f}, {81.5222015f, 257.296539f}, {82.0111008f, 257.37262f}, {82.5f, 257.399994f}}}
178seg=38 {{{82.5f, 257.399994f}, {83.2333298f, 257.441101f}, {83.9666595f, 257.427399f}, {84.6999969f, 257.413696f}}}
179seg=39 {{{84.6999969f, 257.413696f}, {85.0666656f, 257.40683f}, {85.4333344f, 257.399994f}, {85.8000031f, 257.399994f}}}
180seg=40 {{{85.8000031f, 257.399994f}, {9.89999962f, 257.399994f}}}
181op union
182seg=41 {{{9.89999962f, 257.399994f}, {10.2666664f, 257.399994f}, {10.6333332f, 257.393555f}, {11, 257.387115f}}}
183seg=42 {{{11, 257.387115f}, {11.7333336f, 257.374237f}, {12.4666672f, 257.361359f}, {13.1999998f, 257.399994f}}}
184seg=43 {{{13.1999998f, 257.399994f}, {14.3000002f, 257.457947f}, {15.3999996f, 257.592377f}, {16.5f, 257.747742f}}}
185seg=44 {{{16.5f, 257.747742f}, {16.9802361f, 257.815582f}, {17.4604721f, 257.915253f}, {17.9407063f, 258.014893f}}}
186seg=45 {{{17.9407063f, 258.014893f}, {18.5604706f, 258.143494f}, {19.1802349f, 258.272095f}, {19.7999992f, 258.332336f}}}
187seg=46 {{{19.7999992f, 258.332336f}, {20.8999996f, 258.43924f}, {22, 258.495697f}, {23.1000004f, 258.389099f}}}
188seg=47 {{{23.1000004f, 258.389099f}, {23.70541f, 258.330444f}, {24.3108177f, 258.175354f}, {24.9162273f, 258.020264f}}}
189seg=48 {{{24.9162273f, 258.020264f}, {25.4108181f, 257.893585f}, {25.9054089f, 257.766907f}, {26.3999996f, 257.69278f}}}
190seg=49 {{{26.3999996f, 257.69278f}, {27.5f, 257.527924f}, {28.6000004f, 257.398163f}, {29.7000008f, 257.399994f}}}
191seg=50 {{{29.7000008f, 257.399994f}, {30.7999992f, 257.401825f}, {31.8999996f, 257.537109f}, {33, 257.703766f}}}
192seg=51 {{{33, 257.703766f}, {33.4856606f, 257.777344f}, {33.9713249f, 257.902985f}, {34.4569855f, 258.028625f}}}
193seg=52 {{{34.4569855f, 258.028625f}, {35.0713234f, 258.187531f}, {35.6856613f, 258.346436f}, {36.2999992f, 258.399994f}}}
194seg=53 {{{36.2999992f, 258.399994f}, {37.4000015f, 258.49588f}, {38.5f, 258.445801f}, {39.5999985f, 258.279144f}}}
195seg=54 {{{39.5999985f, 258.279144f}, {40.1364708f, 258.197876f}, {40.6729393f, 258.021606f}, {41.2094116f, 257.845367f}}}
196seg=55 {{{41.2094116f, 257.845367f}, {41.7729416f, 257.660217f}, {42.3364716f, 257.475067f}, {42.9000015f, 257.399994f}}}
197seg=56 {{{42.9000015f, 257.399994f}, {43.6333351f, 257.302307f}, {44.3666687f, 257.334869f}, {45.1000023f, 257.367432f}}}
198seg=57 {{{45.1000023f, 257.367432f}, {45.4666672f, 257.383698f}, {45.8333321f, 257.399994f}, {46.2000008f, 257.399994f}}}
199seg=58 {{{46.2000008f, 257.399994f}, {46.5666656f, 257.399994f}, {46.9333344f, 257.387238f}, {47.2999992f, 257.374481f}}}
200seg=59 {{{47.2999992f, 257.374481f}, {48.0333328f, 257.348969f}, {48.7666664f, 257.323486f}, {49.5f, 257.399994f}}}
201seg=60 {{{49.5f, 257.399994f}, {50.1035385f, 257.462982f}, {50.707077f, 257.613983f}, {51.3106155f, 257.764984f}}}
202seg=61 {{{51.3106155f, 257.764984f}, {51.8070755f, 257.889191f}, {52.3035393f, 258.013397f}, {52.7999992f, 258.088623f}}}
203seg=62 {{{52.7999992f, 258.088623f}, {53.9000015f, 258.25531f}, {55, 258.348083f}, {56.0999985f, 258.399994f}}}
204seg=63 {{{56.0999985f, 258.399994f}, {56.8333321f, 258.43457f}, {57.5666656f, 258.423065f}, {58.2999992f, 258.41153f}}}
205seg=64 {{{58.2999992f, 258.41153f}, {58.6666679f, 258.405762f}, {59.0333328f, 258.399994f}, {59.4000015f, 258.399994f}}}
206seg=65 {{{59.4000015f, 258.399994f}, {59.7666664f, 258.399994f}, {60.1333313f, 258.406372f}, {60.5f, 258.41275f}}}
207seg=66 {{{60.5f, 258.41275f}, {61.2333336f, 258.425507f}, {61.9666672f, 258.438232f}, {62.7000008f, 258.399994f}}}
208seg=67 {{{62.7000008f, 258.399994f}, {63.7999992f, 258.34259f}, {64.9000015f, 258.222321f}, {66, 258.055634f}}}
209seg=68 {{{66, 258.055634f}, {66.484726f, 257.982208f}, {66.9694519f, 257.867401f}, {67.4541855f, 257.752594f}}}
210seg=69 {{{67.4541855f, 257.752594f}, {68.069458f, 257.606842f}, {68.6847305f, 257.461121f}, {69.3000031f, 257.399994f}}}
211seg=70 {{{69.3000031f, 257.399994f}, {70.0333328f, 257.327148f}, {70.7666626f, 257.35141f}, {71.4999924f, 257.375702f}}}
212seg=71 {{{71.4999924f, 257.375702f}, {71.8666611f, 257.387848f}, {72.2333298f, 257.399994f}, {72.5999985f, 257.399994f}}}
213seg=72 {{{72.5999985f, 257.399994f}, {72.9666672f, 257.399994f}, {73.3333359f, 257.393158f}, {73.7000046f, 257.386292f}}}
214seg=73 {{{73.7000046f, 257.386292f}, {74.4333344f, 257.372589f}, {75.1666718f, 257.358887f}, {75.9000015f, 257.399994f}}}
215seg=74 {{{75.9000015f, 257.399994f}, {76.3889008f, 257.427368f}, {76.8778f, 257.503448f}, {77.3666992f, 257.579529f}}}
216seg=75 {{{77.3666992f, 257.579529f}, {77.9777985f, 257.674652f}, {78.5888977f, 257.769745f}, {79.1999969f, 257.769745f}}}
217seg=76 {{{79.1999969f, 257.769745f}, {79.8110962f, 257.769745f}, {80.4221954f, 257.674652f}, {81.0332947f, 257.579529f}}}
218seg=77 {{{81.0332947f, 257.579529f}, {81.5222015f, 257.503448f}, {82.0111008f, 257.427368f}, {82.5f, 257.399994f}}}
219seg=78 {{{82.5f, 257.399994f}, {83.2333298f, 257.358887f}, {83.9666595f, 257.372589f}, {84.6999969f, 257.386292f}}}
220seg=79 {{{84.6999969f, 257.386292f}, {85.0666656f, 257.393158f}, {85.4333344f, 257.399994f}, {85.8000031f, 257.399994f}}}
221seg=80 {{{85.8000031f, 257.399994f}, {9.89999962f, 257.399994f}}}
222debugShowCubicIntersection wtTs[0]=1 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.406433}, {11,257.412872}}} {{11,257.412872}} wnTs[0]=0 {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}}
223debugShowCubicLineIntersection wtTs[0]=0 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.406433}, {11,257.412872}}} {{9.89999962,257.399994}} wnTs[0]=1 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
224debugShowCubicIntersection wtTs[0]=1 {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}}
225debugShowCubicLineIntersection wtTs[0]=1 {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
226SkOpSegment::addT insert t=0.956521739 segID=40 spanID=161
227debugShowCubicIntersection wtTs[0]=1 {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} {{16.5,257.052246}} wnTs[0]=0 {{{16.5,257.052246}, {16.9802361,256.984406}, {17.4604721,256.884735}, {17.9407063,256.785095}}}
228debugShowCubicLineIntersection wtTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
229debugShowCubicIntersection wtTs[0]=1 {{{16.5,257.052246}, {16.9802361,256.984406}, {17.4604721,256.884735}, {17.9407063,256.785095}}} {{17.9407063,256.785095}} wnTs[0]=0 {{{17.9407063,256.785095}, {18.5604706,256.656494}, {19.1802349,256.527893}, {19.7999992,256.467651}}}
230debugShowCubicIntersection wtTs[0]=1 {{{17.9407063,256.785095}, {18.5604706,256.656494}, {19.1802349,256.527893}, {19.7999992,256.467651}}} {{19.7999992,256.467651}} wnTs[0]=0 {{{19.7999992,256.467651}, {20.8999996,256.360748}, {22,256.304291}, {23.1000004,256.410889}}}
231debugShowCubicIntersection wtTs[0]=1 {{{19.7999992,256.467651}, {20.8999996,256.360748}, {22,256.304291}, {23.1000004,256.410889}}} {{23.1000004,256.410889}} wnTs[0]=0 {{{23.1000004,256.410889}, {23.70541,256.469543}, {24.3108177,256.624634}, {24.9162273,256.779724}}}
232debugShowCubicIntersection wtTs[0]=1 {{{23.1000004,256.410889}, {23.70541,256.469543}, {24.3108177,256.624634}, {24.9162273,256.779724}}} {{24.9162273,256.779724}} wnTs[0]=0 {{{24.9162273,256.779724}, {25.4108181,256.906403}, {25.9054089,257.033081}, {26.3999996,257.107208}}}
233debugShowCubicIntersection wtTs[0]=1 {{{24.9162273,256.779724}, {25.4108181,256.906403}, {25.9054089,257.033081}, {26.3999996,257.107208}}} {{26.3999996,257.107208}} wnTs[0]=0 {{{26.3999996,257.107208}, {27.5,257.272064}, {28.6000004,257.401825}, {29.7000008,257.399994}}}
234debugShowCubicIntersection wtTs[0]=1 {{{26.3999996,257.107208}, {27.5,257.272064}, {28.6000004,257.401825}, {29.7000008,257.399994}}} {{29.7000008,257.399994}} wnTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.398163}, {31.8999996,257.262878}, {33,257.096222}}}
235debugShowCubicLineIntersection wtTs[0]=0.986037692 {{{26.3999996,257.107208}, {27.5,257.272064}, {28.6000004,257.401825}, {29.7000008,257.399994}}} {{29.6539249,257.399994}} wtTs[1]=1 {{29.7000008,257.399994}} wnTs[0]=0.739737 {{{85.8000031,257.399994}, {9.89999962,257.399994}}} wnTs[1]=0.739130432
236SkOpSegment::addT insert t=0.986037692 segID=9 spanID=162
237SkOpSegment::addT insert t=0.739737489 segID=40 spanID=163
238SkOpSegment::addT insert t=0.739130432 segID=40 spanID=164
239debugShowCubicIntersection wtTs[0]=1 {{{29.7000008,257.399994}, {30.7999992,257.398163}, {31.8999996,257.262878}, {33,257.096222}}} {{33,257.096222}} wnTs[0]=0 {{{33,257.096222}, {33.4856606,257.022644}, {33.9713249,256.897003}, {34.4569855,256.771362}}}
240debugShowCubicLineIntersection wtTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.398163}, {31.8999996,257.262878}, {33,257.096222}}} {{29.7000008,257.399994}} wnTs[0]=0.73913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
241debugShowCubicIntersection wtTs[0]=1 {{{33,257.096222}, {33.4856606,257.022644}, {33.9713249,256.897003}, {34.4569855,256.771362}}} {{34.4569855,256.771362}} wnTs[0]=0 {{{34.4569855,256.771362}, {35.0713234,256.612457}, {35.6856613,256.453552}, {36.2999992,256.399994}}}
242debugShowCubicIntersection wtTs[0]=1 {{{34.4569855,256.771362}, {35.0713234,256.612457}, {35.6856613,256.453552}, {36.2999992,256.399994}}} {{36.2999992,256.399994}} wnTs[0]=0 {{{36.2999992,256.399994}, {37.4000015,256.304108}, {38.5,256.354187}, {39.5999985,256.520844}}}
243debugShowCubicIntersection wtTs[0]=1 {{{36.2999992,256.399994}, {37.4000015,256.304108}, {38.5,256.354187}, {39.5999985,256.520844}}} {{39.5999985,256.520844}} wnTs[0]=0 {{{39.5999985,256.520844}, {40.1364708,256.602112}, {40.6729393,256.778381}, {41.2094116,256.95462}}}
244debugShowCubicIntersection wtTs[0]=1 {{{39.5999985,256.520844}, {40.1364708,256.602112}, {40.6729393,256.778381}, {41.2094116,256.95462}}} {{41.2094116,256.95462}} wnTs[0]=0 {{{41.2094116,256.95462}, {41.7729416,257.139771}, {42.3364716,257.324921}, {42.9000015,257.399994}}}
245debugShowCubicIntersection wtTs[0]=1 {{{41.2094116,256.95462}, {41.7729416,257.139771}, {42.3364716,257.324921}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}}
246debugShowCubicLineIntersection wtTs[0]=1 {{{41.2094116,256.95462}, {41.7729416,257.139771}, {42.3364716,257.324921}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
247SkOpSegment::addT insert t=0.565217386 segID=40 spanID=165
248debugShowCubicIntersection wtTs[0]=1 {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} {{45.1000023,257.432556}} wnTs[0]=0 {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}}
249debugShowCubicLineIntersection wtTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
250debugShowCubicIntersection wtTs[0]=1 {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}}
251debugShowCubicLineIntersection wtTs[0]=1 {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
252SkOpSegment::addT insert t=0.521739137 segID=40 spanID=166
253debugShowCubicIntersection wtTs[0]=1 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} {{47.2999992,257.425507}} wnTs[0]=0 {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}}
254debugShowCubicLineIntersection wtTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
255debugShowCubicIntersection wtTs[0]=1 {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}}
256debugShowCubicLineIntersection wtTs[0]=1 {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
257SkOpSegment::addT insert t=0.478260888 segID=40 spanID=167
258debugShowCubicIntersection wtTs[0]=1 {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} {{51.3106155,257.035004}} wnTs[0]=0 {{{51.3106155,257.035004}, {51.8070755,256.910797}, {52.3035393,256.786591}, {52.7999992,256.711365}}}
259debugShowCubicLineIntersection wtTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
260debugShowCubicIntersection wtTs[0]=1 {{{51.3106155,257.035004}, {51.8070755,256.910797}, {52.3035393,256.786591}, {52.7999992,256.711365}}} {{52.7999992,256.711365}} wnTs[0]=0 {{{52.7999992,256.711365}, {53.9000015,256.544678}, {55,256.451904}, {56.0999985,256.399994}}}
261debugShowCubicIntersection wtTs[0]=1 {{{52.7999992,256.711365}, {53.9000015,256.544678}, {55,256.451904}, {56.0999985,256.399994}}} {{56.0999985,256.399994}} wnTs[0]=0 {{{56.0999985,256.399994}, {56.8333321,256.365417}, {57.5666656,256.376923}, {58.2999992,256.388458}}}
262debugShowCubicIntersection wtTs[0]=1 {{{56.0999985,256.399994}, {56.8333321,256.365417}, {57.5666656,256.376923}, {58.2999992,256.388458}}} {{58.2999992,256.388458}} wnTs[0]=0 {{{58.2999992,256.388458}, {58.6666679,256.394226}, {59.0333328,256.399994}, {59.4000015,256.399994}}}
263debugShowCubicIntersection wtTs[0]=1 {{{58.2999992,256.388458}, {58.6666679,256.394226}, {59.0333328,256.399994}, {59.4000015,256.399994}}} {{59.4000015,256.399994}} wnTs[0]=0 {{{59.4000015,256.399994}, {59.7666664,256.399994}, {60.1333313,256.393616}, {60.5,256.387238}}}
264debugShowCubicIntersection wtTs[0]=1 {{{59.4000015,256.399994}, {59.7666664,256.399994}, {60.1333313,256.393616}, {60.5,256.387238}}} {{60.5,256.387238}} wnTs[0]=0 {{{60.5,256.387238}, {61.2333336,256.374481}, {61.9666672,256.361755}, {62.7000008,256.399994}}}
265debugShowCubicIntersection wtTs[0]=1 {{{60.5,256.387238}, {61.2333336,256.374481}, {61.9666672,256.361755}, {62.7000008,256.399994}}} {{62.7000008,256.399994}} wnTs[0]=0 {{{62.7000008,256.399994}, {63.7999992,256.457397}, {64.9000015,256.577667}, {66,256.744354}}}
266debugShowCubicIntersection wtTs[0]=1 {{{62.7000008,256.399994}, {63.7999992,256.457397}, {64.9000015,256.577667}, {66,256.744354}}} {{66,256.744354}} wnTs[0]=0 {{{66,256.744354}, {66.484726,256.81778}, {66.9694519,256.932587}, {67.4541855,257.047394}}}
267debugShowCubicIntersection wtTs[0]=1 {{{66,256.744354}, {66.484726,256.81778}, {66.9694519,256.932587}, {67.4541855,257.047394}}} {{67.4541855,257.047394}} wnTs[0]=0 {{{67.4541855,257.047394}, {68.069458,257.193146}, {68.6847305,257.338867}, {69.3000031,257.399994}}}
268debugShowCubicIntersection wtTs[0]=1 {{{67.4541855,257.047394}, {68.069458,257.193146}, {68.6847305,257.338867}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}}
269debugShowCubicLineIntersection wtTs[0]=1 {{{67.4541855,257.047394}, {68.069458,257.193146}, {68.6847305,257.338867}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
270SkOpSegment::addT insert t=0.217391295 segID=40 spanID=168
271debugShowCubicIntersection wtTs[0]=1 {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} {{71.4999924,257.424286}} wnTs[0]=0 {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}}
272debugShowCubicLineIntersection wtTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
273debugShowCubicIntersection wtTs[0]=1 {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}}
274debugShowCubicLineIntersection wtTs[0]=1 {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
275SkOpSegment::addT insert t=0.173913096 segID=40 spanID=169
276debugShowCubicIntersection wtTs[0]=1 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} {{73.7000046,257.413696}} wnTs[0]=0 {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}}
277debugShowCubicLineIntersection wtTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
278debugShowCubicIntersection wtTs[0]=1 {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}}
279debugShowCubicLineIntersection wtTs[0]=1 {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
280SkOpSegment::addT insert t=0.130434797 segID=40 spanID=170
281debugShowCubicIntersection wtTs[0]=1 {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} {{77.3666992,257.220459}} wnTs[0]=0 {{{77.3666992,257.220459}, {77.9777985,257.125336}, {78.5888977,257.030243}, {79.1999969,257.030243}}}
282debugShowCubicLineIntersection wtTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
283debugShowCubicIntersection wtTs[0]=1 {{{77.3666992,257.220459}, {77.9777985,257.125336}, {78.5888977,257.030243}, {79.1999969,257.030243}}} {{79.1999969,257.030243}} wnTs[0]=0 {{{79.1999969,257.030243}, {79.8110962,257.030243}, {80.4221954,257.125336}, {81.0332947,257.220459}}}
284debugShowCubicIntersection wtTs[0]=1 {{{79.1999969,257.030243}, {79.8110962,257.030243}, {80.4221954,257.125336}, {81.0332947,257.220459}}} {{81.0332947,257.220459}} wnTs[0]=0 {{{81.0332947,257.220459}, {81.5222015,257.296539}, {82.0111008,257.37262}, {82.5,257.399994}}}
285debugShowCubicIntersection wtTs[0]=1 {{{81.0332947,257.220459}, {81.5222015,257.296539}, {82.0111008,257.37262}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}}
286debugShowCubicLineIntersection wtTs[0]=1 {{{81.0332947,257.220459}, {81.5222015,257.296539}, {82.0111008,257.37262}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
287SkOpSegment::addT insert t=0.0434782991 segID=40 spanID=171
288debugShowCubicIntersection wtTs[0]=1 {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} {{84.6999969,257.413696}} wnTs[0]=0 {{{84.6999969,257.413696}, {85.0666656,257.40683}, {85.4333344,257.399994}, {85.8000031,257.399994}}}
289debugShowCubicLineIntersection wtTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
290debugShowCubicLineIntersection wtTs[0]=1 {{{84.6999969,257.413696}, {85.0666656,257.40683}, {85.4333344,257.399994}, {85.8000031,257.399994}}} {{85.8000031,257.399994}} wnTs[0]=0 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
291debugShowCubicIntersection wtTs[0]=0 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.406433}, {11,257.412872}}} {{9.89999962,257.399994}} wnTs[0]=0 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.393555}, {11,257.387115}}}
292debugShowCubicIntersection no intersect {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.406433}, {11,257.412872}}} {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}}
293debugShowCubicLineIntersection wtTs[0]=0 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.406433}, {11,257.412872}}} {{9.89999962,257.399994}} wnTs[0]=1 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
294debugShowCubicIntersection no intersect {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}} {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.393555}, {11,257.387115}}}
295debugShowCubicIntersection wtTs[0]=1 {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=1 {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}}
296debugShowCubicIntersection wtTs[0]=1 {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}}
297debugShowCubicLineIntersection wtTs[0]=1 {{{11,257.412872}, {11.7333336,257.425751}, {12.4666672,257.438629}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
298SkOpSegment::addT insert t=0.956521739 segID=80 spanID=172
299debugShowCubicIntersection wtTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} {{13.1999998,257.399994}} wnTs[0]=1 {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}}
300debugShowCubicIntersection wtTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} {{13.1999998,257.399994}} wnTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}}
301debugShowCubicLineIntersection wtTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
302debugShowCubicIntersection wtTs[0]=0.986174342 {{{26.3999996,257.107208}, {27.5,257.272064}, {28.6000004,257.401825}, {29.7000008,257.399994}}} {{29.654377,257.399994}} wtTs[1]=1 {{29.7000008,257.399994}} wnTs[0]=0.986174 {{{26.3999996,257.69278}, {27.5,257.527924}, {28.6000004,257.398163}, {29.7000008,257.399994}}} wnTs[1]=1
303SkOpSegment::addT insert t=0.986174342 segID=9 spanID=173
304SkOpSegment::addT insert t=0.986174342 segID=49 spanID=174
305debugShowCubicIntersection wtTs[0]=1 {{{26.3999996,257.107208}, {27.5,257.272064}, {28.6000004,257.401825}, {29.7000008,257.399994}}} {{29.7000008,257.399994}} wnTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.401825}, {31.8999996,257.537109}, {33,257.703766}}}
306debugShowCubicLineIntersection wtTs[0]=0.986037692 {{{26.3999996,257.107208}, {27.5,257.272064}, {28.6000004,257.401825}, {29.7000008,257.399994}}} {{29.6539249,257.399994}} wtTs[1]=1 {{29.7000008,257.399994}} wnTs[0]=0.739737 {{{85.8000031,257.399994}, {9.89999962,257.399994}}} wnTs[1]=0.739130432
307SkOpSegment::addT insert t=0.739737489 segID=80 spanID=175
308SkOpSegment::addT insert t=0.739130432 segID=80 spanID=176
309debugShowCubicIntersection wtTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.398163}, {31.8999996,257.262878}, {33,257.096222}}} {{29.7000008,257.399994}} wnTs[0]=1 {{{26.3999996,257.69278}, {27.5,257.527924}, {28.6000004,257.398163}, {29.7000008,257.399994}}}
310debugShowCubicIntersection wtTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.398163}, {31.8999996,257.262878}, {33,257.096222}}} {{29.7000008,257.399994}} wnTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.401825}, {31.8999996,257.537109}, {33,257.703766}}}
311debugShowCubicLineIntersection wtTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.398163}, {31.8999996,257.262878}, {33,257.096222}}} {{29.7000008,257.399994}} wnTs[0]=0.73913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
312debugShowCubicIntersection wtTs[0]=1 {{{41.2094116,256.95462}, {41.7729416,257.139771}, {42.3364716,257.324921}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=1 {{{41.2094116,257.845367}, {41.7729416,257.660217}, {42.3364716,257.475067}, {42.9000015,257.399994}}}
313debugShowCubicIntersection wtTs[0]=1 {{{41.2094116,256.95462}, {41.7729416,257.139771}, {42.3364716,257.324921}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}}
314debugShowCubicLineIntersection wtTs[0]=1 {{{41.2094116,256.95462}, {41.7729416,257.139771}, {42.3364716,257.324921}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
315SkOpSegment::addT insert t=0.565217386 segID=80 spanID=177
316debugShowCubicIntersection wtTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} {{42.9000015,257.399994}} wnTs[0]=1 {{{41.2094116,257.845367}, {41.7729416,257.660217}, {42.3364716,257.475067}, {42.9000015,257.399994}}}
317debugShowCubicIntersection wtTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} {{42.9000015,257.399994}} wnTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}}
318debugShowCubicIntersection no intersect {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}}
319debugShowCubicLineIntersection wtTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
320debugShowCubicIntersection no intersect {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}}
321debugShowCubicIntersection wtTs[0]=1 {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=1 {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}}
322debugShowCubicIntersection wtTs[0]=1 {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}}
323debugShowCubicLineIntersection wtTs[0]=1 {{{45.1000023,257.432556}, {45.4666672,257.41629}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
324SkOpSegment::addT insert t=0.521739137 segID=80 spanID=178
325debugShowCubicIntersection wtTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} {{46.2000008,257.399994}} wnTs[0]=1 {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}}
326debugShowCubicIntersection wtTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} {{46.2000008,257.399994}} wnTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}}
327debugShowCubicIntersection no intersect {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}}
328debugShowCubicLineIntersection wtTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
329debugShowCubicIntersection no intersect {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}} {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}}
330debugShowCubicIntersection wtTs[0]=1 {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=1 {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}}
331debugShowCubicIntersection wtTs[0]=1 {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}}
332debugShowCubicLineIntersection wtTs[0]=1 {{{47.2999992,257.425507}, {48.0333328,257.451019}, {48.7666664,257.476501}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
333SkOpSegment::addT insert t=0.478260888 segID=80 spanID=179
334debugShowCubicIntersection wtTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} {{49.5,257.399994}} wnTs[0]=1 {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}}
335debugShowCubicIntersection wtTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} {{49.5,257.399994}} wnTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}}
336debugShowCubicLineIntersection wtTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
337debugShowCubicIntersection wtTs[0]=1 {{{67.4541855,257.047394}, {68.069458,257.193146}, {68.6847305,257.338867}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=1 {{{67.4541855,257.752594}, {68.069458,257.606842}, {68.6847305,257.461121}, {69.3000031,257.399994}}}
338debugShowCubicIntersection wtTs[0]=1 {{{67.4541855,257.047394}, {68.069458,257.193146}, {68.6847305,257.338867}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}}
339debugShowCubicLineIntersection wtTs[0]=1 {{{67.4541855,257.047394}, {68.069458,257.193146}, {68.6847305,257.338867}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
340SkOpSegment::addT insert t=0.217391295 segID=80 spanID=180
341debugShowCubicIntersection wtTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} {{69.3000031,257.399994}} wnTs[0]=1 {{{67.4541855,257.752594}, {68.069458,257.606842}, {68.6847305,257.461121}, {69.3000031,257.399994}}}
342debugShowCubicIntersection wtTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} {{69.3000031,257.399994}} wnTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}}
343debugShowCubicIntersection no intersect {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}}
344debugShowCubicLineIntersection wtTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
345debugShowCubicIntersection no intersect {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}}
346debugShowCubicIntersection wtTs[0]=1 {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=1 {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}}
347debugShowCubicIntersection wtTs[0]=1 {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}}
348debugShowCubicLineIntersection wtTs[0]=1 {{{71.4999924,257.424286}, {71.8666611,257.41214}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
349SkOpSegment::addT insert t=0.173913096 segID=80 spanID=181
350debugShowCubicIntersection wtTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} {{72.5999985,257.399994}} wnTs[0]=1 {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}}
351debugShowCubicIntersection wtTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} {{72.5999985,257.399994}} wnTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}}
352debugShowCubicIntersection no intersect {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}}
353debugShowCubicLineIntersection wtTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
354debugShowCubicIntersection no intersect {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}} {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}}
355debugShowCubicIntersection wtTs[0]=1 {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=1 {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}}
356debugShowCubicIntersection wtTs[0]=1 {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}}
357debugShowCubicLineIntersection wtTs[0]=1 {{{73.7000046,257.413696}, {74.4333344,257.427399}, {75.1666718,257.441101}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
358SkOpSegment::addT insert t=0.130434797 segID=80 spanID=182
359debugShowCubicIntersection wtTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} {{75.9000015,257.399994}} wnTs[0]=1 {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}}
360debugShowCubicIntersection wtTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} {{75.9000015,257.399994}} wnTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}}
361debugShowCubicLineIntersection wtTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
362debugShowCubicIntersection wtTs[0]=1 {{{81.0332947,257.220459}, {81.5222015,257.296539}, {82.0111008,257.37262}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=1 {{{81.0332947,257.579529}, {81.5222015,257.503448}, {82.0111008,257.427368}, {82.5,257.399994}}}
363debugShowCubicIntersection wtTs[0]=1 {{{81.0332947,257.220459}, {81.5222015,257.296539}, {82.0111008,257.37262}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}}
364debugShowCubicLineIntersection wtTs[0]=1 {{{81.0332947,257.220459}, {81.5222015,257.296539}, {82.0111008,257.37262}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
365SkOpSegment::addT insert t=0.0434782991 segID=80 spanID=183
366debugShowCubicIntersection wtTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} {{82.5,257.399994}} wnTs[0]=1 {{{81.0332947,257.579529}, {81.5222015,257.503448}, {82.0111008,257.427368}, {82.5,257.399994}}}
367debugShowCubicIntersection wtTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} {{82.5,257.399994}} wnTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}}
368debugShowCubicIntersection no intersect {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} {{{84.6999969,257.386292}, {85.0666656,257.393158}, {85.4333344,257.399994}, {85.8000031,257.399994}}}
369debugShowCubicLineIntersection wtTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
370debugShowCubicIntersection no intersect {{{84.6999969,257.413696}, {85.0666656,257.40683}, {85.4333344,257.399994}, {85.8000031,257.399994}}} {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}}
371debugShowCubicIntersection wtTs[0]=1 {{{84.6999969,257.413696}, {85.0666656,257.40683}, {85.4333344,257.399994}, {85.8000031,257.399994}}} {{85.8000031,257.399994}} wnTs[0]=1 {{{84.6999969,257.386292}, {85.0666656,257.393158}, {85.4333344,257.399994}, {85.8000031,257.399994}}}
372debugShowCubicLineIntersection wtTs[0]=1 {{{84.6999969,257.413696}, {85.0666656,257.40683}, {85.4333344,257.399994}, {85.8000031,257.399994}}} {{85.8000031,257.399994}} wnTs[0]=0 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
373debugShowCubicLineIntersection wtTs[0]=0 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.393555}, {11,257.387115}}} {{9.89999962,257.399994}} wnTs[0]=1 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
374debugShowCubicLineIntersection wtTs[0]=1 {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
375debugShowCubicLineIntersection wtTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
376debugShowCubicLineIntersection wtTs[0]=0.986037692 {{{26.3999996,257.69278}, {27.5,257.527924}, {28.6000004,257.398163}, {29.7000008,257.399994}}} {{29.6539249,257.399994}} wtTs[1]=1 {{29.7000008,257.399994}} wnTs[0]=0.739737 {{{85.8000031,257.399994}, {9.89999962,257.399994}}} wnTs[1]=0.739130432
377SkOpSegment::addT insert t=0.986037692 segID=49 spanID=184
378debugShowCubicLineIntersection wtTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.401825}, {31.8999996,257.537109}, {33,257.703766}}} {{29.7000008,257.399994}} wnTs[0]=0.73913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
379debugShowCubicLineIntersection wtTs[0]=1 {{{41.2094116,257.845367}, {41.7729416,257.660217}, {42.3364716,257.475067}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
380debugShowCubicLineIntersection wtTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
381debugShowCubicLineIntersection wtTs[0]=1 {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
382debugShowCubicLineIntersection wtTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
383debugShowCubicLineIntersection wtTs[0]=1 {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
384debugShowCubicLineIntersection wtTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
385debugShowCubicLineIntersection wtTs[0]=1 {{{67.4541855,257.752594}, {68.069458,257.606842}, {68.6847305,257.461121}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
386debugShowCubicLineIntersection wtTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
387debugShowCubicLineIntersection wtTs[0]=1 {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
388debugShowCubicLineIntersection wtTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
389debugShowCubicLineIntersection wtTs[0]=1 {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
390debugShowCubicLineIntersection wtTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
391debugShowCubicLineIntersection wtTs[0]=1 {{{81.0332947,257.579529}, {81.5222015,257.503448}, {82.0111008,257.427368}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
392debugShowCubicLineIntersection wtTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
393debugShowCubicLineIntersection wtTs[0]=1 {{{84.6999969,257.386292}, {85.0666656,257.393158}, {85.4333344,257.399994}, {85.8000031,257.399994}}} {{85.8000031,257.399994}} wnTs[0]=0 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
394debugShowLineIntersection wtTs[0]=0 {{{85.8000031,257.399994}, {9.89999962,257.399994}}} {{85.8000031,257.399994}} wtTs[1]=1 {{9.89999962,257.399994}} wnTs[0]=0 {{{85.8000031,257.399994}, {9.89999962,257.399994}}} wnTs[1]=1
395debugShowCubicIntersection wtTs[0]=1 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.393555}, {11,257.387115}}} {{11,257.387115}} wnTs[0]=0 {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}}
396debugShowCubicLineIntersection wtTs[0]=0 {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.393555}, {11,257.387115}}} {{9.89999962,257.399994}} wnTs[0]=1 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
397debugShowCubicIntersection wtTs[0]=1 {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}}
398debugShowCubicLineIntersection wtTs[0]=1 {{{11,257.387115}, {11.7333336,257.374237}, {12.4666672,257.361359}, {13.1999998,257.399994}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
399debugShowCubicIntersection wtTs[0]=1 {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} {{16.5,257.747742}} wnTs[0]=0 {{{16.5,257.747742}, {16.9802361,257.815582}, {17.4604721,257.915253}, {17.9407063,258.014893}}}
400debugShowCubicLineIntersection wtTs[0]=0 {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} {{13.1999998,257.399994}} wnTs[0]=0.956522 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
401debugShowCubicIntersection wtTs[0]=1 {{{16.5,257.747742}, {16.9802361,257.815582}, {17.4604721,257.915253}, {17.9407063,258.014893}}} {{17.9407063,258.014893}} wnTs[0]=0 {{{17.9407063,258.014893}, {18.5604706,258.143494}, {19.1802349,258.272095}, {19.7999992,258.332336}}}
402debugShowCubicIntersection wtTs[0]=1 {{{17.9407063,258.014893}, {18.5604706,258.143494}, {19.1802349,258.272095}, {19.7999992,258.332336}}} {{19.7999992,258.332336}} wnTs[0]=0 {{{19.7999992,258.332336}, {20.8999996,258.43924}, {22,258.495697}, {23.1000004,258.389099}}}
403debugShowCubicIntersection wtTs[0]=1 {{{19.7999992,258.332336}, {20.8999996,258.43924}, {22,258.495697}, {23.1000004,258.389099}}} {{23.1000004,258.389099}} wnTs[0]=0 {{{23.1000004,258.389099}, {23.70541,258.330444}, {24.3108177,258.175354}, {24.9162273,258.020264}}}
404debugShowCubicIntersection wtTs[0]=1 {{{23.1000004,258.389099}, {23.70541,258.330444}, {24.3108177,258.175354}, {24.9162273,258.020264}}} {{24.9162273,258.020264}} wnTs[0]=0 {{{24.9162273,258.020264}, {25.4108181,257.893585}, {25.9054089,257.766907}, {26.3999996,257.69278}}}
405debugShowCubicIntersection wtTs[0]=1 {{{24.9162273,258.020264}, {25.4108181,257.893585}, {25.9054089,257.766907}, {26.3999996,257.69278}}} {{26.3999996,257.69278}} wnTs[0]=0 {{{26.3999996,257.69278}, {27.5,257.527924}, {28.6000004,257.398163}, {29.7000008,257.399994}}}
406debugShowCubicIntersection wtTs[0]=1 {{{26.3999996,257.69278}, {27.5,257.527924}, {28.6000004,257.398163}, {29.7000008,257.399994}}} {{29.7000008,257.399994}} wnTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.401825}, {31.8999996,257.537109}, {33,257.703766}}}
407debugShowCubicLineIntersection wtTs[0]=0.986037692 {{{26.3999996,257.69278}, {27.5,257.527924}, {28.6000004,257.398163}, {29.7000008,257.399994}}} {{29.6539249,257.399994}} wtTs[1]=1 {{29.7000008,257.399994}} wnTs[0]=0.739737 {{{85.8000031,257.399994}, {9.89999962,257.399994}}} wnTs[1]=0.739130432
408debugShowCubicIntersection wtTs[0]=1 {{{29.7000008,257.399994}, {30.7999992,257.401825}, {31.8999996,257.537109}, {33,257.703766}}} {{33,257.703766}} wnTs[0]=0 {{{33,257.703766}, {33.4856606,257.777344}, {33.9713249,257.902985}, {34.4569855,258.028625}}}
409debugShowCubicLineIntersection wtTs[0]=0 {{{29.7000008,257.399994}, {30.7999992,257.401825}, {31.8999996,257.537109}, {33,257.703766}}} {{29.7000008,257.399994}} wnTs[0]=0.73913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
410debugShowCubicIntersection wtTs[0]=1 {{{33,257.703766}, {33.4856606,257.777344}, {33.9713249,257.902985}, {34.4569855,258.028625}}} {{34.4569855,258.028625}} wnTs[0]=0 {{{34.4569855,258.028625}, {35.0713234,258.187531}, {35.6856613,258.346436}, {36.2999992,258.399994}}}
411debugShowCubicIntersection wtTs[0]=1 {{{34.4569855,258.028625}, {35.0713234,258.187531}, {35.6856613,258.346436}, {36.2999992,258.399994}}} {{36.2999992,258.399994}} wnTs[0]=0 {{{36.2999992,258.399994}, {37.4000015,258.49588}, {38.5,258.445801}, {39.5999985,258.279144}}}
412debugShowCubicIntersection wtTs[0]=1 {{{36.2999992,258.399994}, {37.4000015,258.49588}, {38.5,258.445801}, {39.5999985,258.279144}}} {{39.5999985,258.279144}} wnTs[0]=0 {{{39.5999985,258.279144}, {40.1364708,258.197876}, {40.6729393,258.021606}, {41.2094116,257.845367}}}
413debugShowCubicIntersection wtTs[0]=1 {{{39.5999985,258.279144}, {40.1364708,258.197876}, {40.6729393,258.021606}, {41.2094116,257.845367}}} {{41.2094116,257.845367}} wnTs[0]=0 {{{41.2094116,257.845367}, {41.7729416,257.660217}, {42.3364716,257.475067}, {42.9000015,257.399994}}}
414debugShowCubicIntersection wtTs[0]=1 {{{41.2094116,257.845367}, {41.7729416,257.660217}, {42.3364716,257.475067}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}}
415debugShowCubicLineIntersection wtTs[0]=1 {{{41.2094116,257.845367}, {41.7729416,257.660217}, {42.3364716,257.475067}, {42.9000015,257.399994}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
416debugShowCubicIntersection wtTs[0]=1 {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}} {{45.1000023,257.367432}} wnTs[0]=0 {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}}
417debugShowCubicLineIntersection wtTs[0]=0 {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}} {{42.9000015,257.399994}} wnTs[0]=0.565217 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
418debugShowCubicIntersection wtTs[0]=1 {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}}
419debugShowCubicLineIntersection wtTs[0]=1 {{{45.1000023,257.367432}, {45.4666672,257.383698}, {45.8333321,257.399994}, {46.2000008,257.399994}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
420debugShowCubicIntersection wtTs[0]=1 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} {{47.2999992,257.374481}} wnTs[0]=0 {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}}
421debugShowCubicLineIntersection wtTs[0]=0 {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} {{46.2000008,257.399994}} wnTs[0]=0.521739 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
422debugShowCubicIntersection wtTs[0]=1 {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}}
423debugShowCubicLineIntersection wtTs[0]=1 {{{47.2999992,257.374481}, {48.0333328,257.348969}, {48.7666664,257.323486}, {49.5,257.399994}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
424debugShowCubicIntersection wtTs[0]=1 {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} {{51.3106155,257.764984}} wnTs[0]=0 {{{51.3106155,257.764984}, {51.8070755,257.889191}, {52.3035393,258.013397}, {52.7999992,258.088623}}}
425debugShowCubicLineIntersection wtTs[0]=0 {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} {{49.5,257.399994}} wnTs[0]=0.478261 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
426debugShowCubicIntersection wtTs[0]=1 {{{51.3106155,257.764984}, {51.8070755,257.889191}, {52.3035393,258.013397}, {52.7999992,258.088623}}} {{52.7999992,258.088623}} wnTs[0]=0 {{{52.7999992,258.088623}, {53.9000015,258.25531}, {55,258.348083}, {56.0999985,258.399994}}}
427debugShowCubicIntersection wtTs[0]=1 {{{52.7999992,258.088623}, {53.9000015,258.25531}, {55,258.348083}, {56.0999985,258.399994}}} {{56.0999985,258.399994}} wnTs[0]=0 {{{56.0999985,258.399994}, {56.8333321,258.43457}, {57.5666656,258.423065}, {58.2999992,258.41153}}}
428debugShowCubicIntersection wtTs[0]=1 {{{56.0999985,258.399994}, {56.8333321,258.43457}, {57.5666656,258.423065}, {58.2999992,258.41153}}} {{58.2999992,258.41153}} wnTs[0]=0 {{{58.2999992,258.41153}, {58.6666679,258.405762}, {59.0333328,258.399994}, {59.4000015,258.399994}}}
429debugShowCubicIntersection wtTs[0]=1 {{{58.2999992,258.41153}, {58.6666679,258.405762}, {59.0333328,258.399994}, {59.4000015,258.399994}}} {{59.4000015,258.399994}} wnTs[0]=0 {{{59.4000015,258.399994}, {59.7666664,258.399994}, {60.1333313,258.406372}, {60.5,258.41275}}}
430debugShowCubicIntersection wtTs[0]=1 {{{59.4000015,258.399994}, {59.7666664,258.399994}, {60.1333313,258.406372}, {60.5,258.41275}}} {{60.5,258.41275}} wnTs[0]=0 {{{60.5,258.41275}, {61.2333336,258.425507}, {61.9666672,258.438232}, {62.7000008,258.399994}}}
431debugShowCubicIntersection wtTs[0]=1 {{{60.5,258.41275}, {61.2333336,258.425507}, {61.9666672,258.438232}, {62.7000008,258.399994}}} {{62.7000008,258.399994}} wnTs[0]=0 {{{62.7000008,258.399994}, {63.7999992,258.34259}, {64.9000015,258.222321}, {66,258.055634}}}
432debugShowCubicIntersection wtTs[0]=1 {{{62.7000008,258.399994}, {63.7999992,258.34259}, {64.9000015,258.222321}, {66,258.055634}}} {{66,258.055634}} wnTs[0]=0 {{{66,258.055634}, {66.484726,257.982208}, {66.9694519,257.867401}, {67.4541855,257.752594}}}
433debugShowCubicIntersection wtTs[0]=1 {{{66,258.055634}, {66.484726,257.982208}, {66.9694519,257.867401}, {67.4541855,257.752594}}} {{67.4541855,257.752594}} wnTs[0]=0 {{{67.4541855,257.752594}, {68.069458,257.606842}, {68.6847305,257.461121}, {69.3000031,257.399994}}}
434debugShowCubicIntersection wtTs[0]=1 {{{67.4541855,257.752594}, {68.069458,257.606842}, {68.6847305,257.461121}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}}
435debugShowCubicLineIntersection wtTs[0]=1 {{{67.4541855,257.752594}, {68.069458,257.606842}, {68.6847305,257.461121}, {69.3000031,257.399994}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
436debugShowCubicIntersection wtTs[0]=1 {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}} {{71.4999924,257.375702}} wnTs[0]=0 {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}}
437debugShowCubicLineIntersection wtTs[0]=0 {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}} {{69.3000031,257.399994}} wnTs[0]=0.217391 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
438debugShowCubicIntersection wtTs[0]=1 {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}}
439debugShowCubicLineIntersection wtTs[0]=1 {{{71.4999924,257.375702}, {71.8666611,257.387848}, {72.2333298,257.399994}, {72.5999985,257.399994}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
440debugShowCubicIntersection wtTs[0]=1 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} {{73.7000046,257.386292}} wnTs[0]=0 {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}}
441debugShowCubicLineIntersection wtTs[0]=0 {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} {{72.5999985,257.399994}} wnTs[0]=0.173913 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
442debugShowCubicIntersection wtTs[0]=1 {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}}
443debugShowCubicLineIntersection wtTs[0]=1 {{{73.7000046,257.386292}, {74.4333344,257.372589}, {75.1666718,257.358887}, {75.9000015,257.399994}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
444debugShowCubicIntersection wtTs[0]=1 {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} {{77.3666992,257.579529}} wnTs[0]=0 {{{77.3666992,257.579529}, {77.9777985,257.674652}, {78.5888977,257.769745}, {79.1999969,257.769745}}}
445debugShowCubicLineIntersection wtTs[0]=0 {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} {{75.9000015,257.399994}} wnTs[0]=0.130435 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
446debugShowCubicIntersection wtTs[0]=1 {{{77.3666992,257.579529}, {77.9777985,257.674652}, {78.5888977,257.769745}, {79.1999969,257.769745}}} {{79.1999969,257.769745}} wnTs[0]=0 {{{79.1999969,257.769745}, {79.8110962,257.769745}, {80.4221954,257.674652}, {81.0332947,257.579529}}}
447debugShowCubicIntersection wtTs[0]=1 {{{79.1999969,257.769745}, {79.8110962,257.769745}, {80.4221954,257.674652}, {81.0332947,257.579529}}} {{81.0332947,257.579529}} wnTs[0]=0 {{{81.0332947,257.579529}, {81.5222015,257.503448}, {82.0111008,257.427368}, {82.5,257.399994}}}
448debugShowCubicIntersection wtTs[0]=1 {{{81.0332947,257.579529}, {81.5222015,257.503448}, {82.0111008,257.427368}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}}
449debugShowCubicLineIntersection wtTs[0]=1 {{{81.0332947,257.579529}, {81.5222015,257.503448}, {82.0111008,257.427368}, {82.5,257.399994}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
450debugShowCubicIntersection wtTs[0]=1 {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}} {{84.6999969,257.386292}} wnTs[0]=0 {{{84.6999969,257.386292}, {85.0666656,257.393158}, {85.4333344,257.399994}, {85.8000031,257.399994}}}
451debugShowCubicLineIntersection wtTs[0]=0 {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}} {{82.5,257.399994}} wnTs[0]=0.0434783 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
452debugShowCubicLineIntersection wtTs[0]=1 {{{84.6999969,257.386292}, {85.0666656,257.393158}, {85.4333344,257.399994}, {85.8000031,257.399994}}} {{85.8000031,257.399994}} wnTs[0]=0 {{{85.8000031,257.399994}, {9.89999962,257.399994}}}
453SkOpSegment::markDone id=49 (26.3999996,257.69278 27.5,257.527924 28.6000004,257.398163 29.7000008,257.399994) t=0.986037692 [184] (29.6539249,257.399994) tEnd=0.986174342 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
454SkOpSegment::markDone id=80 (85.8000031,257.399994 9.89999962,257.399994) t=0.739130432 [176] (29.7000008,257.399994) tEnd=0.739737489 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
455SkOpSegment::markDone id=49 (26.3999996,257.69278 27.5,257.527924 28.6000004,257.398163 29.7000008,257.399994) t=0.986174342 [174] (29.654377,257.399994) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
456SkOpSegment::markDone id=80 (85.8000031,257.399994 9.89999962,257.399994) t=0.565217386 [177] (42.9000015,257.399994) tEnd=0.739130432 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
457SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0 [79] (85.8000031,257.399994) tEnd=0.0434782991 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
458SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.0434782991 [171] (82.5,257.399994) tEnd=0.130434797 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
459SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.130434797 [170] (75.9000015,257.399994) tEnd=0.173913096 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
460SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.173913096 [169] (72.5999985,257.399994) tEnd=0.217391295 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
461SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.217391295 [168] (69.3000031,257.399994) tEnd=0.478260888 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
462SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.478260888 [167] (49.5,257.399994) tEnd=0.521739137 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
463SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.521739137 [166] (46.2000008,257.399994) tEnd=0.565217386 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
464SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.739737489 [163] (29.6539249,257.399994) tEnd=0.956521739 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
465SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.956521739 [161] (13.1999998,257.399994) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
466SkOpSegment::markDone id=9 (26.3999996,257.107208 27.5,257.272064 28.6000004,257.401825 29.7000008,257.399994) t=0.986037692 [162] (29.6539249,257.399994) tEnd=0.986174342 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
467SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.739130432 [164] (29.7000008,257.399994) tEnd=0.739737489 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
468SkOpSegment::markDone id=9 (26.3999996,257.107208 27.5,257.272064 28.6000004,257.401825 29.7000008,257.399994) t=0.986174342 [173] (29.654377,257.399994) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
469SkOpSegment::markDone id=40 (85.8000031,257.399994 9.89999962,257.399994) t=0.565217386 [165] (42.9000015,257.399994) tEnd=0.739130432 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
470SkOpSegment::sortAngles [1] tStart=0 [1]
471SkOpAngle::after [1/1] 30/29 tStart=0 tEnd=1 < [41/21] 0/1 tStart=0 tEnd=1 < [80/58] 31/31 tStart=1 tEnd=0.956521739 F 4
472SkOpAngle::afterPart {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.406433}, {11,257.412872}}} id=1
473SkOpAngle::afterPart {{{9.89999962,257.399994}, {10.2666664,257.399994}, {10.6333332,257.393555}, {11,257.387115}}} id=41
474SkOpAngle::afterPart {{{9.89999962,257.399994}, {13.1999998,257.399994}}} id=80
475SkOpSegment::sortAngles [2] tStart=1 [4]
476SkOpAngle::after [2/2] 17/17 tStart=1 tEnd=0 < [80/57] 15/15 tStart=0.956521739 tEnd=1 < [80/56] 31/31 tStart=0.956521739 tEnd=0.739737489 F 4
477SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.438629}, {11.7333336,257.425751}, {11,257.412872}}} id=2
478SkOpAngle::afterPart {{{13.1999998,257.399994}, {9.89999962,257.399994}}} id=80
479SkOpAngle::afterPart {{{13.1999998,257.399994}, {29.6539249,257.399994}}} id=80
480SkOpAngle::after [2/2] 17/17 tStart=1 tEnd=0 < [43/23] 29/29 tStart=0 tEnd=1 < [80/56] 31/31 tStart=0.956521739 tEnd=0.739737489 T 4
481SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.438629}, {11.7333336,257.425751}, {11,257.412872}}} id=2
482SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} id=43
483SkOpAngle::afterPart {{{13.1999998,257.399994}, {29.6539249,257.399994}}} id=80
484SkOpAngle::after [2/2] 17/17 tStart=1 tEnd=0 < [42/22] 13/13 tStart=1 tEnd=0 < [43/23] 29/29 tStart=0 tEnd=1 F 4
485SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.438629}, {11.7333336,257.425751}, {11,257.412872}}} id=2
486SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.361359}, {11.7333336,257.374237}, {11,257.387115}}} id=42
487SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} id=43
488SkOpAngle::after [43/23] 29/29 tStart=0 tEnd=1 < [42/22] 13/13 tStart=1 tEnd=0 < [80/56] 31/31 tStart=0.956521739 tEnd=0.739737489 F 4
489SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} id=43
490SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.361359}, {11.7333336,257.374237}, {11,257.387115}}} id=42
491SkOpAngle::afterPart {{{13.1999998,257.399994}, {29.6539249,257.399994}}} id=80
492SkOpAngle::after [80/56] 31/31 tStart=0.956521739 tEnd=0.739737489 < [42/22] 13/13 tStart=1 tEnd=0 < [80/57] 15/15 tStart=0.956521739 tEnd=1 T 4
493SkOpAngle::afterPart {{{13.1999998,257.399994}, {29.6539249,257.399994}}} id=80
494SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.361359}, {11.7333336,257.374237}, {11,257.387115}}} id=42
495SkOpAngle::afterPart {{{13.1999998,257.399994}, {9.89999962,257.399994}}} id=80
496SkOpAngle::after [2/2] 17/17 tStart=1 tEnd=0 < [3/3] 1/1 tStart=0 tEnd=1 < [43/23] 29/29 tStart=0 tEnd=1 F 4
497SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.438629}, {11.7333336,257.425751}, {11,257.412872}}} id=2
498SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} id=3
499SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} id=43
500SkOpAngle::after [43/23] 29/29 tStart=0 tEnd=1 < [3/3] 1/1 tStart=0 tEnd=1 < [80/56] 31/31 tStart=0.956521739 tEnd=0.739737489 F 4
501SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.457947}, {15.3999996,257.592377}, {16.5,257.747742}}} id=43
502SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} id=3
503SkOpAngle::afterPart {{{13.1999998,257.399994}, {29.6539249,257.399994}}} id=80
504SkOpAngle::after [80/56] 31/31 tStart=0.956521739 tEnd=0.739737489 < [3/3] 1/1 tStart=0 tEnd=1 < [42/22] 13/13 tStart=1 tEnd=0 T 4
505SkOpAngle::afterPart {{{13.1999998,257.399994}, {29.6539249,257.399994}}} id=80
506SkOpAngle::afterPart {{{13.1999998,257.399994}, {14.3000002,257.342041}, {15.3999996,257.207611}, {16.5,257.052246}}} id=3
507SkOpAngle::afterPart {{{13.1999998,257.399994}, {12.4666672,257.361359}, {11.7333336,257.374237}, {11,257.387115}}} id=42
508SkOpSegment::sortAngles [3] tStart=0 [5]
509SkOpSegment::sortAngles [9] tStart=0.986037692 [162]
510SkOpAngle::after [9/4] 13/13 tStart=0.986037692 tEnd=0 < [49/24] 17/17 tStart=0.986037692 tEnd=0 < [80/55] 15/15 tStart=0.739737489 tEnd=0.956521739 F 4
511SkOpAngle::afterPart {{{29.6539249,257.399994}, {28.5692831,257.398195}, {27.4846415,257.269762}, {26.3999996,257.107208}}} id=9
512SkOpAngle::afterPart {{{29.6539249,257.399994}, {28.5692831,257.401793}, {27.4846415,257.530225}, {26.3999996,257.69278}}} id=49
513SkOpAngle::afterPart {{{29.6539249,257.399994}, {13.1999998,257.399994}}} id=80
514SkOpSegment::sortAngles [10] tStart=0 [19]
515SkOpSegment::sortAngles [15] tStart=1 [30]
516SkOpAngle::after [15/6] 13/13 tStart=1 tEnd=0 < [56/27] 1/1 tStart=0 tEnd=1 < [80/54] 31/31 tStart=0.565217386 tEnd=0.521739137 F 4
517SkOpAngle::afterPart {{{42.9000015,257.399994}, {42.3364716,257.324921}, {41.7729416,257.139771}, {41.2094116,256.95462}}} id=15
518SkOpAngle::afterPart {{{42.9000015,257.399994}, {43.6333351,257.302307}, {44.3666687,257.334869}, {45.1000023,257.367432}}} id=56
519SkOpAngle::afterPart {{{42.9000015,257.399994}, {46.2000008,257.399994}}} id=80
520SkOpAngle::after [15/6] 13/13 tStart=1 tEnd=0 < [55/26] 17/17 tStart=1 tEnd=0 < [80/54] 31/31 tStart=0.565217386 tEnd=0.521739137 T 4
521SkOpAngle::afterPart {{{42.9000015,257.399994}, {42.3364716,257.324921}, {41.7729416,257.139771}, {41.2094116,256.95462}}} id=15
522SkOpAngle::afterPart {{{42.9000015,257.399994}, {42.3364716,257.475067}, {41.7729416,257.660217}, {41.2094116,257.845367}}} id=55
523SkOpAngle::afterPart {{{42.9000015,257.399994}, {46.2000008,257.399994}}} id=80
524SkOpAngle::after [15/6] 13/13 tStart=1 tEnd=0 < [16/7] 29/29 tStart=0 tEnd=1 < [55/26] 17/17 tStart=1 tEnd=0 F 4
525SkOpAngle::afterPart {{{42.9000015,257.399994}, {42.3364716,257.324921}, {41.7729416,257.139771}, {41.2094116,256.95462}}} id=15
526SkOpAngle::afterPart {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} id=16
527SkOpAngle::afterPart {{{42.9000015,257.399994}, {42.3364716,257.475067}, {41.7729416,257.660217}, {41.2094116,257.845367}}} id=55
528SkOpAngle::after [55/26] 17/17 tStart=1 tEnd=0 < [16/7] 29/29 tStart=0 tEnd=1 < [80/54] 31/31 tStart=0.565217386 tEnd=0.521739137 T 4
529SkOpAngle::afterPart {{{42.9000015,257.399994}, {42.3364716,257.475067}, {41.7729416,257.660217}, {41.2094116,257.845367}}} id=55
530SkOpAngle::afterPart {{{42.9000015,257.399994}, {43.6333351,257.497681}, {44.3666687,257.465118}, {45.1000023,257.432556}}} id=16
531SkOpAngle::afterPart {{{42.9000015,257.399994}, {46.2000008,257.399994}}} id=80
532SkOpSegment::sortAngles [16] tStart=0 [31]
533SkOpSegment::sortAngles [17] tStart=1 [34]
534SkOpAngle::after [17/8] 16/17 tStart=1 tEnd=0 < [80/53] 15/15 tStart=0.521739137 tEnd=0.565217386 < [80/52] 31/31 tStart=0.521739137 tEnd=0.478260888 F 4
535SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.41629}, {45.1000023,257.432556}}} id=17
536SkOpAngle::afterPart {{{46.2000008,257.399994}, {42.9000015,257.399994}}} id=80
537SkOpAngle::afterPart {{{46.2000008,257.399994}, {49.5,257.399994}}} id=80
538SkOpAngle::after [17/8] 16/17 tStart=1 tEnd=0 < [58/29] 0/1 tStart=0 tEnd=1 < [80/52] 31/31 tStart=0.521739137 tEnd=0.478260888 F 4
539SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.41629}, {45.1000023,257.432556}}} id=17
540SkOpAngle::afterPart {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} id=58
541SkOpAngle::afterPart {{{46.2000008,257.399994}, {49.5,257.399994}}} id=80
542SkOpAngle::after [80/52] 31/31 tStart=0.521739137 tEnd=0.478260888 < [58/29] 0/1 tStart=0 tEnd=1 < [80/53] 15/15 tStart=0.521739137 tEnd=0.565217386 T 4
543SkOpAngle::afterPart {{{46.2000008,257.399994}, {49.5,257.399994}}} id=80
544SkOpAngle::afterPart {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} id=58
545SkOpAngle::afterPart {{{46.2000008,257.399994}, {42.9000015,257.399994}}} id=80
546SkOpAngle::after [17/8] 16/17 tStart=1 tEnd=0 < [57/28] 14/13 tStart=1 tEnd=0 < [80/52] 31/31 tStart=0.521739137 tEnd=0.478260888 F 4
547SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.41629}, {45.1000023,257.432556}}} id=17
548SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.383698}, {45.1000023,257.367432}}} id=57
549SkOpAngle::afterPart {{{46.2000008,257.399994}, {49.5,257.399994}}} id=80
550SkOpAngle::after [80/52] 31/31 tStart=0.521739137 tEnd=0.478260888 < [57/28] 14/13 tStart=1 tEnd=0 < [58/29] 0/1 tStart=0 tEnd=1 F 4
551SkOpAngle::afterPart {{{46.2000008,257.399994}, {49.5,257.399994}}} id=80
552SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.383698}, {45.1000023,257.367432}}} id=57
553SkOpAngle::afterPart {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} id=58
554SkOpAngle::after [58/29] 0/1 tStart=0 tEnd=1 < [57/28] 14/13 tStart=1 tEnd=0 < [80/53] 15/15 tStart=0.521739137 tEnd=0.565217386 T 4
555SkOpAngle::afterPart {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.387238}, {47.2999992,257.374481}}} id=58
556SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.383698}, {45.1000023,257.367432}}} id=57
557SkOpAngle::afterPart {{{46.2000008,257.399994}, {42.9000015,257.399994}}} id=80
558SkOpAngle::after [17/8] 16/17 tStart=1 tEnd=0 < [18/9] 30/29 tStart=0 tEnd=1 < [80/52] 31/31 tStart=0.521739137 tEnd=0.478260888 T 4
559SkOpAngle::afterPart {{{46.2000008,257.399994}, {45.8333321,257.399994}, {45.4666672,257.41629}, {45.1000023,257.432556}}} id=17
560SkOpAngle::afterPart {{{46.2000008,257.399994}, {46.5666656,257.399994}, {46.9333344,257.41275}, {47.2999992,257.425507}}} id=18
561SkOpAngle::afterPart {{{46.2000008,257.399994}, {49.5,257.399994}}} id=80
562SkOpSegment::sortAngles [18] tStart=0 [35]
563SkOpSegment::sortAngles [19] tStart=1 [38]
564SkOpAngle::after [19/10] 17/17 tStart=1 tEnd=0 < [80/51] 15/15 tStart=0.478260888 tEnd=0.521739137 < [80/50] 31/31 tStart=0.478260888 tEnd=0.217391295 F 4
565SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.476501}, {48.0333328,257.451019}, {47.2999992,257.425507}}} id=19
566SkOpAngle::afterPart {{{49.5,257.399994}, {46.2000008,257.399994}}} id=80
567SkOpAngle::afterPart {{{49.5,257.399994}, {69.3000031,257.399994}}} id=80
568SkOpAngle::after [19/10] 17/17 tStart=1 tEnd=0 < [60/31] 29/29 tStart=0 tEnd=1 < [80/50] 31/31 tStart=0.478260888 tEnd=0.217391295 T 4
569SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.476501}, {48.0333328,257.451019}, {47.2999992,257.425507}}} id=19
570SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} id=60
571SkOpAngle::afterPart {{{49.5,257.399994}, {69.3000031,257.399994}}} id=80
572SkOpAngle::after [19/10] 17/17 tStart=1 tEnd=0 < [59/30] 13/13 tStart=1 tEnd=0 < [60/31] 29/29 tStart=0 tEnd=1 F 4
573SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.476501}, {48.0333328,257.451019}, {47.2999992,257.425507}}} id=19
574SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.323486}, {48.0333328,257.348969}, {47.2999992,257.374481}}} id=59
575SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} id=60
576SkOpAngle::after [60/31] 29/29 tStart=0 tEnd=1 < [59/30] 13/13 tStart=1 tEnd=0 < [80/50] 31/31 tStart=0.478260888 tEnd=0.217391295 F 4
577SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} id=60
578SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.323486}, {48.0333328,257.348969}, {47.2999992,257.374481}}} id=59
579SkOpAngle::afterPart {{{49.5,257.399994}, {69.3000031,257.399994}}} id=80
580SkOpAngle::after [80/50] 31/31 tStart=0.478260888 tEnd=0.217391295 < [59/30] 13/13 tStart=1 tEnd=0 < [80/51] 15/15 tStart=0.478260888 tEnd=0.521739137 T 4
581SkOpAngle::afterPart {{{49.5,257.399994}, {69.3000031,257.399994}}} id=80
582SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.323486}, {48.0333328,257.348969}, {47.2999992,257.374481}}} id=59
583SkOpAngle::afterPart {{{49.5,257.399994}, {46.2000008,257.399994}}} id=80
584SkOpAngle::after [19/10] 17/17 tStart=1 tEnd=0 < [20/11] 1/1 tStart=0 tEnd=1 < [60/31] 29/29 tStart=0 tEnd=1 F 4
585SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.476501}, {48.0333328,257.451019}, {47.2999992,257.425507}}} id=19
586SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} id=20
587SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} id=60
588SkOpAngle::after [60/31] 29/29 tStart=0 tEnd=1 < [20/11] 1/1 tStart=0 tEnd=1 < [80/50] 31/31 tStart=0.478260888 tEnd=0.217391295 F 4
589SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.462982}, {50.707077,257.613983}, {51.3106155,257.764984}}} id=60
590SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} id=20
591SkOpAngle::afterPart {{{49.5,257.399994}, {69.3000031,257.399994}}} id=80
592SkOpAngle::after [80/50] 31/31 tStart=0.478260888 tEnd=0.217391295 < [20/11] 1/1 tStart=0 tEnd=1 < [59/30] 13/13 tStart=1 tEnd=0 T 4
593SkOpAngle::afterPart {{{49.5,257.399994}, {69.3000031,257.399994}}} id=80
594SkOpAngle::afterPart {{{49.5,257.399994}, {50.1035385,257.337006}, {50.707077,257.186005}, {51.3106155,257.035004}}} id=20
595SkOpAngle::afterPart {{{49.5,257.399994}, {48.7666664,257.323486}, {48.0333328,257.348969}, {47.2999992,257.374481}}} id=59
596SkOpSegment::sortAngles [20] tStart=0 [39]
597SkOpSegment::sortAngles [29] tStart=1 [58]
598SkOpAngle::after [29/12] 13/13 tStart=1 tEnd=0 < [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 < [80/48] 31/31 tStart=0.217391295 tEnd=0.173913096 T 4
599SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.338867}, {68.069458,257.193146}, {67.4541855,257.047394}}} id=29
600SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
601SkOpAngle::afterPart {{{69.3000031,257.399994}, {72.5999985,257.399994}}} id=80
602SkOpAngle::after [29/12] 13/13 tStart=1 tEnd=0 < [70/33] 1/1 tStart=0 tEnd=1 < [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 F 4
603SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.338867}, {68.069458,257.193146}, {67.4541855,257.047394}}} id=29
604SkOpAngle::afterPart {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}} id=70
605SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
606SkOpAngle::after [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 < [70/33] 1/1 tStart=0 tEnd=1 < [80/48] 31/31 tStart=0.217391295 tEnd=0.173913096 F 4
607SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
608SkOpAngle::afterPart {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}} id=70
609SkOpAngle::afterPart {{{69.3000031,257.399994}, {72.5999985,257.399994}}} id=80
610SkOpAngle::after [80/48] 31/31 tStart=0.217391295 tEnd=0.173913096 < [70/33] 1/1 tStart=0 tEnd=1 < [29/12] 13/13 tStart=1 tEnd=0 T 4
611SkOpAngle::afterPart {{{69.3000031,257.399994}, {72.5999985,257.399994}}} id=80
612SkOpAngle::afterPart {{{69.3000031,257.399994}, {70.0333328,257.327148}, {70.7666626,257.35141}, {71.4999924,257.375702}}} id=70
613SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.338867}, {68.069458,257.193146}, {67.4541855,257.047394}}} id=29
614SkOpAngle::after [29/12] 13/13 tStart=1 tEnd=0 < [69/32] 17/17 tStart=1 tEnd=0 < [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 F 4
615SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.338867}, {68.069458,257.193146}, {67.4541855,257.047394}}} id=29
616SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.461121}, {68.069458,257.606842}, {67.4541855,257.752594}}} id=69
617SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
618SkOpAngle::after [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 < [69/32] 17/17 tStart=1 tEnd=0 < [80/48] 31/31 tStart=0.217391295 tEnd=0.173913096 T 4
619SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
620SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.461121}, {68.069458,257.606842}, {67.4541855,257.752594}}} id=69
621SkOpAngle::afterPart {{{69.3000031,257.399994}, {72.5999985,257.399994}}} id=80
622SkOpAngle::after [29/12] 13/13 tStart=1 tEnd=0 < [30/13] 29/29 tStart=0 tEnd=1 < [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 F 4
623SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.338867}, {68.069458,257.193146}, {67.4541855,257.047394}}} id=29
624SkOpAngle::afterPart {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} id=30
625SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
626SkOpAngle::after [80/49] 15/15 tStart=0.217391295 tEnd=0.478260888 < [30/13] 29/29 tStart=0 tEnd=1 < [69/32] 17/17 tStart=1 tEnd=0 F 4
627SkOpAngle::afterPart {{{69.3000031,257.399994}, {49.5,257.399994}}} id=80
628SkOpAngle::afterPart {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} id=30
629SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.461121}, {68.069458,257.606842}, {67.4541855,257.752594}}} id=69
630SkOpAngle::after [69/32] 17/17 tStart=1 tEnd=0 < [30/13] 29/29 tStart=0 tEnd=1 < [80/48] 31/31 tStart=0.217391295 tEnd=0.173913096 T 4
631SkOpAngle::afterPart {{{69.3000031,257.399994}, {68.6847305,257.461121}, {68.069458,257.606842}, {67.4541855,257.752594}}} id=69
632SkOpAngle::afterPart {{{69.3000031,257.399994}, {70.0333328,257.472839}, {70.7666626,257.448578}, {71.4999924,257.424286}}} id=30
633SkOpAngle::afterPart {{{69.3000031,257.399994}, {72.5999985,257.399994}}} id=80
634SkOpSegment::sortAngles [30] tStart=0 [59]
635SkOpSegment::sortAngles [31] tStart=1 [62]
636SkOpAngle::after [31/14] 16/17 tStart=1 tEnd=0 < [80/47] 15/15 tStart=0.173913096 tEnd=0.217391295 < [80/46] 31/31 tStart=0.173913096 tEnd=0.130434797 F 4
637SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.41214}, {71.4999924,257.424286}}} id=31
638SkOpAngle::afterPart {{{72.5999985,257.399994}, {69.3000031,257.399994}}} id=80
639SkOpAngle::afterPart {{{72.5999985,257.399994}, {75.9000015,257.399994}}} id=80
640SkOpAngle::after [31/14] 16/17 tStart=1 tEnd=0 < [72/35] 0/1 tStart=0 tEnd=1 < [80/46] 31/31 tStart=0.173913096 tEnd=0.130434797 F 4
641SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.41214}, {71.4999924,257.424286}}} id=31
642SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} id=72
643SkOpAngle::afterPart {{{72.5999985,257.399994}, {75.9000015,257.399994}}} id=80
644SkOpAngle::after [80/46] 31/31 tStart=0.173913096 tEnd=0.130434797 < [72/35] 0/1 tStart=0 tEnd=1 < [80/47] 15/15 tStart=0.173913096 tEnd=0.217391295 T 4
645SkOpAngle::afterPart {{{72.5999985,257.399994}, {75.9000015,257.399994}}} id=80
646SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} id=72
647SkOpAngle::afterPart {{{72.5999985,257.399994}, {69.3000031,257.399994}}} id=80
648SkOpAngle::after [31/14] 16/17 tStart=1 tEnd=0 < [71/34] 14/13 tStart=1 tEnd=0 < [80/46] 31/31 tStart=0.173913096 tEnd=0.130434797 F 4
649SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.41214}, {71.4999924,257.424286}}} id=31
650SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.387848}, {71.4999924,257.375702}}} id=71
651SkOpAngle::afterPart {{{72.5999985,257.399994}, {75.9000015,257.399994}}} id=80
652SkOpAngle::after [80/46] 31/31 tStart=0.173913096 tEnd=0.130434797 < [71/34] 14/13 tStart=1 tEnd=0 < [72/35] 0/1 tStart=0 tEnd=1 F 4
653SkOpAngle::afterPart {{{72.5999985,257.399994}, {75.9000015,257.399994}}} id=80
654SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.387848}, {71.4999924,257.375702}}} id=71
655SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} id=72
656SkOpAngle::after [72/35] 0/1 tStart=0 tEnd=1 < [71/34] 14/13 tStart=1 tEnd=0 < [80/47] 15/15 tStart=0.173913096 tEnd=0.217391295 T 4
657SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.393158}, {73.7000046,257.386292}}} id=72
658SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.387848}, {71.4999924,257.375702}}} id=71
659SkOpAngle::afterPart {{{72.5999985,257.399994}, {69.3000031,257.399994}}} id=80
660SkOpAngle::after [31/14] 16/17 tStart=1 tEnd=0 < [32/15] 30/29 tStart=0 tEnd=1 < [80/46] 31/31 tStart=0.173913096 tEnd=0.130434797 T 4
661SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.2333298,257.399994}, {71.8666611,257.41214}, {71.4999924,257.424286}}} id=31
662SkOpAngle::afterPart {{{72.5999985,257.399994}, {72.9666672,257.399994}, {73.3333359,257.40683}, {73.7000046,257.413696}}} id=32
663SkOpAngle::afterPart {{{72.5999985,257.399994}, {75.9000015,257.399994}}} id=80
664SkOpSegment::sortAngles [32] tStart=0 [63]
665SkOpSegment::sortAngles [33] tStart=1 [66]
666SkOpAngle::after [33/16] 17/17 tStart=1 tEnd=0 < [80/45] 15/15 tStart=0.130434797 tEnd=0.173913096 < [80/44] 31/31 tStart=0.130434797 tEnd=0.0434782991 F 4
667SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.441101}, {74.4333344,257.427399}, {73.7000046,257.413696}}} id=33
668SkOpAngle::afterPart {{{75.9000015,257.399994}, {72.5999985,257.399994}}} id=80
669SkOpAngle::afterPart {{{75.9000015,257.399994}, {82.5,257.399994}}} id=80
670SkOpAngle::after [33/16] 17/17 tStart=1 tEnd=0 < [74/37] 29/29 tStart=0 tEnd=1 < [80/44] 31/31 tStart=0.130434797 tEnd=0.0434782991 T 4
671SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.441101}, {74.4333344,257.427399}, {73.7000046,257.413696}}} id=33
672SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} id=74
673SkOpAngle::afterPart {{{75.9000015,257.399994}, {82.5,257.399994}}} id=80
674SkOpAngle::after [33/16] 17/17 tStart=1 tEnd=0 < [73/36] 13/13 tStart=1 tEnd=0 < [74/37] 29/29 tStart=0 tEnd=1 F 4
675SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.441101}, {74.4333344,257.427399}, {73.7000046,257.413696}}} id=33
676SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.358887}, {74.4333344,257.372589}, {73.7000046,257.386292}}} id=73
677SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} id=74
678SkOpAngle::after [74/37] 29/29 tStart=0 tEnd=1 < [73/36] 13/13 tStart=1 tEnd=0 < [80/44] 31/31 tStart=0.130434797 tEnd=0.0434782991 F 4
679SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} id=74
680SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.358887}, {74.4333344,257.372589}, {73.7000046,257.386292}}} id=73
681SkOpAngle::afterPart {{{75.9000015,257.399994}, {82.5,257.399994}}} id=80
682SkOpAngle::after [80/44] 31/31 tStart=0.130434797 tEnd=0.0434782991 < [73/36] 13/13 tStart=1 tEnd=0 < [80/45] 15/15 tStart=0.130434797 tEnd=0.173913096 T 4
683SkOpAngle::afterPart {{{75.9000015,257.399994}, {82.5,257.399994}}} id=80
684SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.358887}, {74.4333344,257.372589}, {73.7000046,257.386292}}} id=73
685SkOpAngle::afterPart {{{75.9000015,257.399994}, {72.5999985,257.399994}}} id=80
686SkOpAngle::after [33/16] 17/17 tStart=1 tEnd=0 < [34/17] 1/1 tStart=0 tEnd=1 < [74/37] 29/29 tStart=0 tEnd=1 F 4
687SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.441101}, {74.4333344,257.427399}, {73.7000046,257.413696}}} id=33
688SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} id=34
689SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} id=74
690SkOpAngle::after [74/37] 29/29 tStart=0 tEnd=1 < [34/17] 1/1 tStart=0 tEnd=1 < [80/44] 31/31 tStart=0.130434797 tEnd=0.0434782991 F 4
691SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.427368}, {76.8778,257.503448}, {77.3666992,257.579529}}} id=74
692SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} id=34
693SkOpAngle::afterPart {{{75.9000015,257.399994}, {82.5,257.399994}}} id=80
694SkOpAngle::after [80/44] 31/31 tStart=0.130434797 tEnd=0.0434782991 < [34/17] 1/1 tStart=0 tEnd=1 < [73/36] 13/13 tStart=1 tEnd=0 T 4
695SkOpAngle::afterPart {{{75.9000015,257.399994}, {82.5,257.399994}}} id=80
696SkOpAngle::afterPart {{{75.9000015,257.399994}, {76.3889008,257.37262}, {76.8778,257.296539}, {77.3666992,257.220459}}} id=34
697SkOpAngle::afterPart {{{75.9000015,257.399994}, {75.1666718,257.358887}, {74.4333344,257.372589}, {73.7000046,257.386292}}} id=73
698SkOpSegment::sortAngles [34] tStart=0 [67]
699SkOpSegment::sortAngles [37] tStart=1 [74]
700SkOpAngle::after [37/18] 13/13 tStart=1 tEnd=0 < [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 < [80/42] 31/31 tStart=0.0434782991 tEnd=0 T 4
701SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.37262}, {81.5222015,257.296539}, {81.0332947,257.220459}}} id=37
702SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
703SkOpAngle::afterPart {{{82.5,257.399994}, {85.8000031,257.399994}}} id=80
704SkOpAngle::after [37/18] 13/13 tStart=1 tEnd=0 < [78/39] 1/1 tStart=0 tEnd=1 < [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 F 4
705SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.37262}, {81.5222015,257.296539}, {81.0332947,257.220459}}} id=37
706SkOpAngle::afterPart {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}} id=78
707SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
708SkOpAngle::after [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 < [78/39] 1/1 tStart=0 tEnd=1 < [80/42] 31/31 tStart=0.0434782991 tEnd=0 F 4
709SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
710SkOpAngle::afterPart {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}} id=78
711SkOpAngle::afterPart {{{82.5,257.399994}, {85.8000031,257.399994}}} id=80
712SkOpAngle::after [80/42] 31/31 tStart=0.0434782991 tEnd=0 < [78/39] 1/1 tStart=0 tEnd=1 < [37/18] 13/13 tStart=1 tEnd=0 T 4
713SkOpAngle::afterPart {{{82.5,257.399994}, {85.8000031,257.399994}}} id=80
714SkOpAngle::afterPart {{{82.5,257.399994}, {83.2333298,257.358887}, {83.9666595,257.372589}, {84.6999969,257.386292}}} id=78
715SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.37262}, {81.5222015,257.296539}, {81.0332947,257.220459}}} id=37
716SkOpAngle::after [37/18] 13/13 tStart=1 tEnd=0 < [77/38] 17/17 tStart=1 tEnd=0 < [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 F 4
717SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.37262}, {81.5222015,257.296539}, {81.0332947,257.220459}}} id=37
718SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.427368}, {81.5222015,257.503448}, {81.0332947,257.579529}}} id=77
719SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
720SkOpAngle::after [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 < [77/38] 17/17 tStart=1 tEnd=0 < [80/42] 31/31 tStart=0.0434782991 tEnd=0 T 4
721SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
722SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.427368}, {81.5222015,257.503448}, {81.0332947,257.579529}}} id=77
723SkOpAngle::afterPart {{{82.5,257.399994}, {85.8000031,257.399994}}} id=80
724SkOpAngle::after [37/18] 13/13 tStart=1 tEnd=0 < [38/19] 29/29 tStart=0 tEnd=1 < [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 F 4
725SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.37262}, {81.5222015,257.296539}, {81.0332947,257.220459}}} id=37
726SkOpAngle::afterPart {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} id=38
727SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
728SkOpAngle::after [80/43] 15/15 tStart=0.0434782991 tEnd=0.130434797 < [38/19] 29/29 tStart=0 tEnd=1 < [77/38] 17/17 tStart=1 tEnd=0 F 4
729SkOpAngle::afterPart {{{82.5,257.399994}, {75.9000015,257.399994}}} id=80
730SkOpAngle::afterPart {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} id=38
731SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.427368}, {81.5222015,257.503448}, {81.0332947,257.579529}}} id=77
732SkOpAngle::after [77/38] 17/17 tStart=1 tEnd=0 < [38/19] 29/29 tStart=0 tEnd=1 < [80/42] 31/31 tStart=0.0434782991 tEnd=0 T 4
733SkOpAngle::afterPart {{{82.5,257.399994}, {82.0111008,257.427368}, {81.5222015,257.503448}, {81.0332947,257.579529}}} id=77
734SkOpAngle::afterPart {{{82.5,257.399994}, {83.2333298,257.441101}, {83.9666595,257.427399}, {84.6999969,257.413696}}} id=38
735SkOpAngle::afterPart {{{82.5,257.399994}, {85.8000031,257.399994}}} id=80
736SkOpSegment::sortAngles [38] tStart=0 [75]
737SkOpSegment::sortAngles [39] tStart=1 [78]
738SkOpAngle::after [39/20] 16/17 tStart=1 tEnd=0 < [79/40] 14/13 tStart=1 tEnd=0 < [80/41] 15/15 tStart=0 tEnd=0.0434782991 T 4
739SkOpAngle::afterPart {{{85.8000031,257.399994}, {85.4333344,257.399994}, {85.0666656,257.40683}, {84.6999969,257.413696}}} id=39
740SkOpAngle::afterPart {{{85.8000031,257.399994}, {85.4333344,257.399994}, {85.0666656,257.393158}, {84.6999969,257.386292}}} id=79
741SkOpAngle::afterPart {{{85.8000031,257.399994}, {82.5,257.399994}}} id=80
742SkOpSegment::sortAngles [41] tStart=0 [81]
743SkOpSegment::sortAngles [42] tStart=1 [84]
744SkOpSegment::sortAngles [43] tStart=0 [85]
745SkOpSegment::sortAngles [49] tStart=0.986037692 [184]
746SkOpSegment::sortAngles [50] tStart=0 [99]
747SkOpSegment::sortAngles [55] tStart=1 [110]
748SkOpSegment::sortAngles [56] tStart=0 [111]
749SkOpSegment::sortAngles [57] tStart=1 [114]
750SkOpSegment::sortAngles [58] tStart=0 [115]
751SkOpSegment::sortAngles [59] tStart=1 [118]
752SkOpSegment::sortAngles [60] tStart=0 [119]
753SkOpSegment::sortAngles [69] tStart=1 [138]
754SkOpSegment::sortAngles [70] tStart=0 [139]
755SkOpSegment::sortAngles [71] tStart=1 [142]
756SkOpSegment::sortAngles [72] tStart=0 [143]
757SkOpSegment::sortAngles [73] tStart=1 [146]
758SkOpSegment::sortAngles [74] tStart=0 [147]
759SkOpSegment::sortAngles [77] tStart=1 [154]
760SkOpSegment::sortAngles [78] tStart=0 [155]
761SkOpSegment::sortAngles [79] tStart=1 [158]
762SkOpSegment::sortAngles [80] tStart=0 [159]
763SkOpSegment::sortAngles [80] tStart=0.0434782991 [183]
764SkOpSegment::sortAngles [80] tStart=0.130434797 [182]
765SkOpSegment::sortAngles [80] tStart=0.173913096 [181]
766SkOpSegment::sortAngles [80] tStart=0.217391295 [180]
767SkOpSegment::sortAngles [80] tStart=0.478260888 [179]
768SkOpSegment::sortAngles [80] tStart=0.521739137 [178]
769SkOpSegment::sortAngles [80] tStart=0.565217386 [177]
770SkOpSegment::sortAngles [80] tStart=0.739737489 [175]
771SkOpSegment::sortAngles [80] tStart=0.956521739 [172]
772SkOpSegment::sortAngles [80] tStart=1 [160]
773SkOpSegment::debugShowActiveSpans id=1 (9.89999962,257.399994 10.2666664,257.399994 10.6333332,257.406433 11,257.412872) t=0 (9.89999962,257.399994) tEnd=1 windSum=? windValue=1 oppValue=0
774SkOpSegment::debugShowActiveSpans id=2 (11,257.412872 11.7333336,257.425751 12.4666672,257.438629 13.1999998,257.399994) t=0 (11,257.412872) tEnd=1 windSum=? windValue=1 oppValue=0
775SkOpSegment::debugShowActiveSpans id=3 (13.1999998,257.399994 14.3000002,257.342041 15.3999996,257.207611 16.5,257.052246) t=0 (13.1999998,257.399994) tEnd=1 windSum=? windValue=1 oppValue=0
776SkOpSegment::debugShowActiveSpans id=4 (16.5,257.052246 16.9802361,256.984406 17.4604721,256.884735 17.9407063,256.785095) t=0 (16.5,257.052246) tEnd=1 windSum=? windValue=1 oppValue=0
777SkOpSegment::debugShowActiveSpans id=5 (17.9407063,256.785095 18.5604706,256.656494 19.1802349,256.527893 19.7999992,256.467651) t=0 (17.9407063,256.785095) tEnd=1 windSum=? windValue=1 oppValue=0
778SkOpSegment::debugShowActiveSpans id=6 (19.7999992,256.467651 20.8999996,256.360748 22,256.304291 23.1000004,256.410889) t=0 (19.7999992,256.467651) tEnd=1 windSum=? windValue=1 oppValue=0
779SkOpSegment::debugShowActiveSpans id=7 (23.1000004,256.410889 23.70541,256.469543 24.3108177,256.624634 24.9162273,256.779724) t=0 (23.1000004,256.410889) tEnd=1 windSum=? windValue=1 oppValue=0
780SkOpSegment::debugShowActiveSpans id=8 (24.9162273,256.779724 25.4108181,256.906403 25.9054089,257.033081 26.3999996,257.107208) t=0 (24.9162273,256.779724) tEnd=1 windSum=? windValue=1 oppValue=0
781SkOpSegment::debugShowActiveSpans id=9 (26.3999996,257.107208 27.5,257.272064 28.6000004,257.401825 29.7000008,257.399994) t=0 (26.3999996,257.107208) tEnd=0.986037692 windSum=? windValue=1 oppValue=0
782</div>
783
784<div id="cubicOp142">
785seg=1 {{{5, 6}, {3.45152783f, 5.2257638f}, {4.30082178f, 2.05376172f}, {4.29911709f, 2.05330443f}}}
786seg=2 {{{4.29911709f, 2.05330443f}, {4.29861975f, 2.05317116f}, {4.2257638f, 2.32270813f}, {4, 3}}}
787seg=3 {{{4, 3}, {5, 6}}}
788op diff
789seg=4 {{{0, 5}, {1.125f, 4.625f}, {2.25f, 4.53125f}, {3.1640625f, 4.45507813f}}}
790seg=5 {{{3.1640625f, 4.45507813f}, {4.6875f, 4.328125f}, {5.625f, 4.25f}, {5, 3}}}
791seg=6 {{{5, 3}, {0, 5}}}
792debugShowCubicIntersection wtTs[0]=1 {{{5,6}, {3.45152783,5.2257638}, {4.30082178,2.05376172}, {4.29911709,2.05330443}}} {{4.29911709,2.05330443}} wnTs[0]=0 {{{4.29911709,2.05330443}, {4.29861975,2.05317116}, {4.2257638,2.32270813}, {4,3}}}
793debugShowCubicLineIntersection wtTs[0]=0 {{{5,6}, {3.45152783,5.2257638}, {4.30082178,2.05376172}, {4.29911709,2.05330443}}} {{5,6}} wtTs[1]=0.587088912 {{4.09466553,3.28399706}} wnTs[0]=1 {{{4,3}, {5,6}}} wnTs[1]=0.0946657086
794SkOpSegment::addT insert t=0.587088912 segID=1 spanID=13
795SkOpSegment::addT insert t=0.0946657086 segID=3 spanID=14
796debugShowCubicLineIntersection wtTs[0]=1 {{{4.29911709,2.05330443}, {4.29861975,2.05317116}, {4.2257638,2.32270813}, {4,3}}} {{4,3}} wnTs[0]=0 {{{4,3}, {5,6}}}
797debugShowCubicIntersection wtTs[0]=0.383986729 {{{5,6}, {3.45152783,5.2257638}, {4.30082178,2.05376172}, {4.29911709,2.05330443}}} {{4.09290743,4.36280823}} wnTs[0]=0.225176 {{{3.1640625,4.45507813}, {4.6875,4.328125}, {5.625,4.25}, {5,3}}}
798SkOpSegment::addT insert t=0.383986729 segID=1 spanID=15
799SkOpSegment::addT insert t=0.225175574 segID=5 spanID=16
800debugShowCubicLineIntersection wtTs[0]=0.571089482 {{{5,6}, {3.45152783,5.2257638}, {4.30082178,2.05376172}, {4.29911709,2.05330443}}} {{4.08799171,3.36480331}} wnTs[0]=0.182402 {{{5,3}, {0,5}}}
801SkOpSegment::addT insert t=0.571089482 segID=1 spanID=17
802SkOpSegment::addT insert t=0.18240164 segID=6 spanID=18
803debugShowCubicIntersection no intersect {{{4.29911709,2.05330443}, {4.29861975,2.05317116}, {4.2257638,2.32270813}, {4,3}}} {{{3.1640625,4.45507813}, {4.6875,4.328125}, {5.625,4.25}, {5,3}}}
804debugShowCubicLineIntersection no intersect {{{4.29911709,2.05330443}, {4.29861975,2.05317116}, {4.2257638,2.32270813}, {4,3}}} {{{5,3}, {0,5}}}
805debugShowCubicLineIntersection wtTs[0]=0.326417764 {{{3.1640625,4.45507813}, {4.6875,4.328125}, {5.625,4.25}, {5,3}}} {{4.43463707,4.30391121}} wnTs[0]=0.434637 {{{4,3}, {5,6}}}
806SkOpSegment::addT insert t=0.434637102 segID=3 spanID=19
807SkOpSegment::addT insert t=0.326417764 segID=5 spanID=20
808debugShowLineIntersection wtTs[0]=0.117647059 {{{4,3}, {5,6}}} {{4.11764717,3.35294127}} wnTs[0]=0.176471 {{{5,3}, {0,5}}}
809SkOpSegment::addT insert t=0.117647059 segID=3 spanID=21
810SkOpSegment::addT insert t=0.176470588 segID=6 spanID=22
811debugShowCubicIntersection wtTs[0]=1 {{{0,5}, {1.125,4.625}, {2.25,4.53125}, {3.1640625,4.45507813}}} {{3.1640625,4.45507813}} wnTs[0]=0 {{{3.1640625,4.45507813}, {4.6875,4.328125}, {5.625,4.25}, {5,3}}}
812debugShowCubicLineIntersection wtTs[0]=0 {{{0,5}, {1.125,4.625}, {2.25,4.53125}, {3.1640625,4.45507813}}} {{0,5}} wnTs[0]=1 {{{5,3}, {0,5}}}
813debugShowCubicLineIntersection wtTs[0]=1 {{{3.1640625,4.45507813}, {4.6875,4.328125}, {5.625,4.25}, {5,3}}} {{5,3}} wnTs[0]=0 {{{5,3}, {0,5}}}
814SkOpSegment::sortAngles [1] tStart=0.383986729 [15]
815SkOpAngle::after [1/1] 25/25 tStart=0.383986729 tEnd=0 < [5/13] 17/17 tStart=0.225175574 tEnd=0 < [1/2] 9/9 tStart=0.383986729 tEnd=0.571089482 F 4
816SkOpAngle::afterPart {{{4.09290743,4.36280823}, {4.16435514,5.05186675}, {4.40540724,5.70270357}, {5,6}}} id=1
817SkOpAngle::afterPart {{{4.09290743,4.36280823}, {3.82043503,4.40038055}, {3.50710341,4.42649138}, {3.1640625,4.45507813}}} id=5
818SkOpAngle::afterPart {{{4.09290743,4.36280823}, {4.05809356,4.0270551}, {4.06354799,3.68222709}, {4.08799171,3.36480331}}} id=1
819SkOpAngle::after [1/1] 25/25 tStart=0.383986729 tEnd=0 < [5/14] 1/1 tStart=0.225175574 tEnd=0.326417764 < [1/2] 9/9 tStart=0.383986729 tEnd=0.571089482 T 4
820SkOpAngle::afterPart {{{4.09290743,4.36280823}, {4.16435514,5.05186675}, {4.40540724,5.70270357}, {5,6}}} id=1
821SkOpAngle::afterPart {{{4.09290743,4.36280823}, {4.21541496,4.34591517}, {4.32966255,4.32670493}, {4.43463707,4.30391121}}} id=5
822SkOpAngle::afterPart {{{4.09290743,4.36280823}, {4.05809356,4.0270551}, {4.06354799,3.68222709}, {4.08799171,3.36480331}}} id=1
823SkOpSegment::sortAngles [1] tStart=0.571089482 [17]
824SkOpAngle::after [1/3] 21/25 tStart=0.571089482 tEnd=0.383986729 < [6/19] 1/1 tStart=0.18240164 tEnd=0.176470588 < [1/4] 5/5 tStart=0.571089482 tEnd=0.587088912 T 4
825SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.06354799,3.68222709}, {4.05809356,4.0270551}, {4.09290743,4.36280823}}} id=1
826SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.11764717,3.35294127}}} id=6
827SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.09008193,3.33765994}, {4.09231091,3.31071685}, {4.09466553,3.28399706}}} id=1
828SkOpAngle::after [1/3] 21/25 tStart=0.571089482 tEnd=0.383986729 < [6/20] 17/17 tStart=0.18240164 tEnd=1 < [6/19] 1/1 tStart=0.18240164 tEnd=0.176470588 F 4
829SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.06354799,3.68222709}, {4.05809356,4.0270551}, {4.09290743,4.36280823}}} id=1
830SkOpAngle::afterPart {{{4.08799171,3.36480331}, {0,5}}} id=6
831SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.11764717,3.35294127}}} id=6
832SkOpAngle::after [6/19] 1/1 tStart=0.18240164 tEnd=0.176470588 < [6/20] 17/17 tStart=0.18240164 tEnd=1 < [1/4] 5/5 tStart=0.571089482 tEnd=0.587088912 F 4
833SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.11764717,3.35294127}}} id=6
834SkOpAngle::afterPart {{{4.08799171,3.36480331}, {0,5}}} id=6
835SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.09008193,3.33765994}, {4.09231091,3.31071685}, {4.09466553,3.28399706}}} id=1
836SkOpAngle::after [1/4] 5/5 tStart=0.571089482 tEnd=0.587088912 < [6/20] 17/17 tStart=0.18240164 tEnd=1 < [1/3] 21/25 tStart=0.571089482 tEnd=0.383986729 T 4
837SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.09008193,3.33765994}, {4.09231091,3.31071685}, {4.09466553,3.28399706}}} id=1
838SkOpAngle::afterPart {{{4.08799171,3.36480331}, {0,5}}} id=6
839SkOpAngle::afterPart {{{4.08799171,3.36480331}, {4.06354799,3.68222709}, {4.05809356,4.0270551}, {4.09290743,4.36280823}}} id=1
840SkOpSegment::sortAngles [1] tStart=0.587088912 [13]
841SkOpAngle::after [1/5] 21/21 tStart=0.587088912 tEnd=0.571089482 < [3/7] 9/9 tStart=0.0946657086 tEnd=0 < [1/6] 5/5 tStart=0.587088912 tEnd=1 F 4
842SkOpAngle::afterPart {{{4.09466553,3.28399706}, {4.09231091,3.31071685}, {4.09008193,3.33765994}, {4.08799171,3.36480331}}} id=1
843SkOpAngle::afterPart {{{4.09466553,3.28399706}, {4,3}}} id=3
844SkOpAngle::afterPart {{{4.09466553,3.28399706}, {4.15543319,2.59441633}, {4.29982097,2.05349325}, {4.29911709,2.05330443}}} id=1
845SkOpAngle::after [1/5] 21/21 tStart=0.587088912 tEnd=0.571089482 < [3/8] 25/25 tStart=0.0946657086 tEnd=0.117647059 < [1/6] 5/5 tStart=0.587088912 tEnd=1 T 4
846SkOpAngle::afterPart {{{4.09466553,3.28399706}, {4.09231091,3.31071685}, {4.09008193,3.33765994}, {4.08799171,3.36480331}}} id=1
847SkOpAngle::afterPart {{{4.09466553,3.28399706}, {4.11764717,3.35294127}}} id=3
848SkOpAngle::afterPart {{{4.09466553,3.28399706}, {4.15543319,2.59441633}, {4.29982097,2.05349325}, {4.29911709,2.05330443}}} id=1
849SkOpSegment::sortAngles [3] tStart=0.0946657086 [14]
850SkOpSegment::sortAngles [3] tStart=0.117647059 [21]
851SkOpAngle::after [3/9] 9/9 tStart=0.117647059 tEnd=0.0946657086 < [6/17] 1/1 tStart=0.176470588 tEnd=0 < [3/10] 25/25 tStart=0.117647059 tEnd=0.434637102 F 4
852SkOpAngle::afterPart {{{4.11764717,3.35294127}, {4.09466553,3.28399706}}} id=3
853SkOpAngle::afterPart {{{4.11764717,3.35294127}, {5,3}}} id=6
854SkOpAngle::afterPart {{{4.11764717,3.35294127}, {4.43463707,4.30391121}}} id=3
855SkOpAngle::after [3/9] 9/9 tStart=0.117647059 tEnd=0.0946657086 < [6/18] 17/17 tStart=0.176470588 tEnd=0.18240164 < [3/10] 25/25 tStart=0.117647059 tEnd=0.434637102 T 4
856SkOpAngle::afterPart {{{4.11764717,3.35294127}, {4.09466553,3.28399706}}} id=3
857SkOpAngle::afterPart {{{4.11764717,3.35294127}, {4.08799171,3.36480331}}} id=6
858SkOpAngle::afterPart {{{4.11764717,3.35294127}, {4.43463707,4.30391121}}} id=3
859SkOpSegment::sortAngles [3] tStart=0.434637102 [19]
860SkOpAngle::after [3/11] 9/9 tStart=0.434637102 tEnd=0.117647059 < [5/15] 17/17 tStart=0.326417764 tEnd=0.225175574 < [3/12] 25/25 tStart=0.434637102 tEnd=1 T 4
861SkOpAngle::afterPart {{{4.43463707,4.30391121}, {4.11764717,3.35294127}}} id=3
862SkOpAngle::afterPart {{{4.43463707,4.30391121}, {4.32966255,4.32670493}, {4.21541496,4.34591517}, {4.09290743,4.36280823}}} id=5
863SkOpAngle::afterPart {{{4.43463707,4.30391121}, {5,6}}} id=3
864SkOpAngle::after [3/11] 9/9 tStart=0.434637102 tEnd=0.117647059 < [5/16] 1/5 tStart=0.326417764 tEnd=1 < [5/15] 17/17 tStart=0.326417764 tEnd=0.225175574 F 4
865SkOpAngle::afterPart {{{4.43463707,4.30391121}, {4.11764717,3.35294127}}} id=3
866SkOpAngle::afterPart {{{4.43463707,4.30391121}, {5.13305116,4.15226054}, {5.4209889,3.84197779}, {5,3}}} id=5
867SkOpAngle::afterPart {{{4.43463707,4.30391121}, {4.32966255,4.32670493}, {4.21541496,4.34591517}, {4.09290743,4.36280823}}} id=5
868SkOpAngle::after [5/15] 17/17 tStart=0.326417764 tEnd=0.225175574 < [5/16] 1/5 tStart=0.326417764 tEnd=1 < [3/12] 25/25 tStart=0.434637102 tEnd=1 F 4
869SkOpAngle::afterPart {{{4.43463707,4.30391121}, {4.32966255,4.32670493}, {4.21541496,4.34591517}, {4.09290743,4.36280823}}} id=5
870SkOpAngle::afterPart {{{4.43463707,4.30391121}, {5.13305116,4.15226054}, {5.4209889,3.84197779}, {5,3}}} id=5
871SkOpAngle::afterPart {{{4.43463707,4.30391121}, {5,6}}} id=3
872SkOpAngle::after [3/12] 25/25 tStart=0.434637102 tEnd=1 < [5/16] 1/5 tStart=0.326417764 tEnd=1 < [3/11] 9/9 tStart=0.434637102 tEnd=0.117647059 T 4
873SkOpAngle::afterPart {{{4.43463707,4.30391121}, {5,6}}} id=3
874SkOpAngle::afterPart {{{4.43463707,4.30391121}, {5.13305116,4.15226054}, {5.4209889,3.84197779}, {5,3}}} id=5
875SkOpAngle::afterPart {{{4.43463707,4.30391121}, {4.11764717,3.35294127}}} id=3
876SkOpSegment::sortAngles [5] tStart=0.225175574 [16]
877SkOpSegment::sortAngles [5] tStart=0.326417764 [20]
878SkOpSegment::sortAngles [6] tStart=0.176470588 [22]
879SkOpSegment::sortAngles [6] tStart=0.18240164 [18]
880SkOpSegment::debugShowActiveSpans id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0 (5,6) tEnd=0.383986729 windSum=? windValue=1 oppValue=0
881SkOpSegment::debugShowActiveSpans id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.383986729 (4.09290743,4.36280823) tEnd=0.571089482 windSum=? windValue=1 oppValue=0
882SkOpSegment::debugShowActiveSpans id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.571089482 (4.08799171,3.36480331) tEnd=0.587088912 windSum=? windValue=1 oppValue=0
883SkOpSegment::debugShowActiveSpans id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.587088912 (4.09466553,3.28399706) tEnd=1 windSum=? windValue=1 oppValue=0
884SkOpSegment::debugShowActiveSpans id=2 (4.29911709,2.05330443 4.29861975,2.05317116 4.2257638,2.32270813 4,3) t=0 (4.29911709,2.05330443) tEnd=1 windSum=? windValue=1 oppValue=0
885SkOpSegment::debugShowActiveSpans id=3 (4,3 5,6) t=0 (4,3) tEnd=0.0946657086 windSum=? windValue=1 oppValue=0
886SkOpSegment::debugShowActiveSpans id=3 (4,3 5,6) t=0.0946657086 (4.09466553,3.28399706) tEnd=0.117647059 windSum=? windValue=1 oppValue=0
887SkOpSegment::debugShowActiveSpans id=3 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 windSum=? windValue=1 oppValue=0
888SkOpSegment::debugShowActiveSpans id=3 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 windSum=? windValue=1 oppValue=0
889SkOpSegment::debugShowActiveSpans id=4 (0,5 1.125,4.625 2.25,4.53125 3.1640625,4.45507813) t=0 (0,5) tEnd=1 windSum=? windValue=1 oppValue=0
890SkOpSegment::debugShowActiveSpans id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0 (3.1640625,4.45507813) tEnd=0.225175574 windSum=? windValue=1 oppValue=0
891SkOpSegment::debugShowActiveSpans id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.225175574 (4.09290743,4.36280823) tEnd=0.326417764 windSum=? windValue=1 oppValue=0
892SkOpSegment::debugShowActiveSpans id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.326417764 (4.43463707,4.30391121) tEnd=1 windSum=? windValue=1 oppValue=0
893SkOpSegment::debugShowActiveSpans id=6 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 windSum=? windValue=1 oppValue=0
894SkOpSegment::debugShowActiveSpans id=6 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.18240164 windSum=? windValue=1 oppValue=0
895SkOpSegment::debugShowActiveSpans id=6 (5,3 0,5) t=0.18240164 (4.08799171,3.36480331) tEnd=1 windSum=? windValue=1 oppValue=0
896-SkOpSegment::findTop-
897SkOpAngle::dumpOne [2/21] next=3/22 sect=5/5 s=1 [4] e=0 [3] sgn=1 windVal=1 windSum=?
898SkOpAngle::dumpOne [3/22] next=2/21 sect=25/25 s=0 [5] e=0.0946657086 [14] sgn=-1 windVal=1 windSum=? stop
899SkOpSegment::findTop id=2 s=0 e=1 cw=1 swap=0 inflections=1 monotonic=0
900SkOpSegment::markWinding id=2 (4.29911709,2.05330443 4.29861975,2.05317116 4.2257638,2.32270813 4,3) t=0 [3] (4.29911709,2.05330443) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
901SkOpSegment::nextChase mismatched signs
902SkOpSegment::markWinding id=3 (4,3 5,6) t=0 [5] (4,3) tEnd=0.0946657086 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
903SkOpSegment::markWinding id=2 (4.29911709,2.05330443 4.29861975,2.05317116 4.2257638,2.32270813 4,3) t=0 [3] (4.29911709,2.05330443) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
904SkOpSegment::markWinding id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.587088912 [13] (4.09466553,3.28399706) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
905SkOpSegment::activeOp id=2 t=0 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
906SkOpSegment::nextChase mismatched signs
907SkOpSegment::findNextOp simple
908SkOpSegment::markDone id=2 (4.29911709,2.05330443 4.29861975,2.05317116 4.2257638,2.32270813 4,3) t=0 [3] (4.29911709,2.05330443) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
909bridgeOp current id=2 from=(4.29911709,2.05330443) to=(4,3)
910path.moveTo(4.29911709,2.05330443);
911path.cubicTo(4.29861975,2.05317116, 4.2257638,2.32270813, 4,3);
912SkOpSegment::markWinding id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.571089482 [17] (4.08799171,3.36480331) tEnd=0.587088912 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
913SkOpSegment::markAngle last segment=1 span=17 windSum=-2
914SkOpSegment::markWinding id=3 (4,3 5,6) t=0.0946657086 [14] (4.09466553,3.28399706) tEnd=0.117647059 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
915SkOpSegment::markAngle last segment=3 span=21 windSum=?
916SkOpSegment::findNextOp
917SkOpAngle::dumpOne [3/7] next=1/5 sect=9/9 s=0.0946657086 [14] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
918SkOpAngle::dumpOne [1/5] next=3/8 sect=21/21 s=0.587088912 [13] e=0.571089482 [17] sgn=1 windVal=1 windSum=-2 oppVal=0 oppSum=0
919SkOpAngle::dumpOne [3/8] next=1/6 sect=25/25 s=0.0946657086 [14] e=0.117647059 [21] sgn=-1 windVal=1 windSum=-2 oppVal=0 oppSum=0
920SkOpAngle::dumpOne [1/6] next=3/7 sect=5/5 s=0.587088912 [13] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
921SkOpSegment::activeOp id=1 t=0.587088912 tEnd=0.571089482 op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
922SkOpSegment::markDone id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.571089482 [17] (4.08799171,3.36480331) tEnd=0.587088912 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
923SkOpSegment::findNextOp chase.append segment=1 span=17 windSum=-2
924SkOpSegment::activeOp id=3 t=0.0946657086 tEnd=0.117647059 op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
925SkOpSegment::markDone id=3 (4,3 5,6) t=0.0946657086 [14] (4.09466553,3.28399706) tEnd=0.117647059 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
926SkOpSegment::findNextOp chase.append segment=3 span=21 windSum=-2147483647
927SkOpSegment::activeOp id=1 t=0.587088912 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
928SkOpSegment::markDone id=3 (4,3 5,6) t=0 [5] (4,3) tEnd=0.0946657086 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
929SkOpSegment::findNextOp from:[3] to:[1] start=5399116 end=16446944
930bridgeOp current id=3 from=(4,3) to=(4.09466553,3.28399706)
931SkOpSegment::findNextOp simple
932SkOpSegment::markDone id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.587088912 [13] (4.09466553,3.28399706) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
933bridgeOp current id=1 from=(4.09466553,3.28399706) to=(4.29911709,2.05330443)
934path.lineTo(4.09466553,3.28399706);
935path.cubicTo(4.15543318,2.59441638, 4.2998209,2.05349326, 4.29911709,2.05330443);
936path.close();
937SkOpSegment::markWinding id=6 (5,3 0,5) t=0.176470588 [22] (4.11764717,3.35294127) tEnd=0.18240164 newWindSum=1 newOppSum=-2 oppSum=? windSum=? windValue=1 oppValue=0
938SkOpSegment::markAngle last segment=6 span=18 windSum=?
939SkOpSegment::markWinding id=3 (4,3 5,6) t=0.117647059 [21] (4.11764717,3.35294127) tEnd=0.434637102 newWindSum=-2 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
940SkOpSegment::markAngle last segment=3 span=19 windSum=?
941SkOpSegment::markWinding id=6 (5,3 0,5) t=0 [11] (5,3) tEnd=0.176470588 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
942SkOpSegment::markWinding id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.326417764 [20] (4.43463707,4.30391121) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
943SkOpSegment::markAngle last segment=5 span=20 windSum=1
944SkOpSegment::debugShowActiveSpans id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0 (5,6) tEnd=0.383986729 windSum=? windValue=1 oppValue=0
945SkOpSegment::debugShowActiveSpans id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.383986729 (4.09290743,4.36280823) tEnd=0.571089482 windSum=? windValue=1 oppValue=0
946SkOpSegment::debugShowActiveSpans id=3 (4,3 5,6) t=0.117647059 (4.11764717,3.35294127) tEnd=0.434637102 windSum=-2 windValue=1 oppValue=0
947SkOpSegment::debugShowActiveSpans id=3 (4,3 5,6) t=0.434637102 (4.43463707,4.30391121) tEnd=1 windSum=? windValue=1 oppValue=0
948SkOpSegment::debugShowActiveSpans id=4 (0,5 1.125,4.625 2.25,4.53125 3.1640625,4.45507813) t=0 (0,5) tEnd=1 windSum=? windValue=1 oppValue=0
949SkOpSegment::debugShowActiveSpans id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0 (3.1640625,4.45507813) tEnd=0.225175574 windSum=? windValue=1 oppValue=0
950SkOpSegment::debugShowActiveSpans id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.225175574 (4.09290743,4.36280823) tEnd=0.326417764 windSum=? windValue=1 oppValue=0
951SkOpSegment::debugShowActiveSpans id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.326417764 (4.43463707,4.30391121) tEnd=1 windSum=1 windValue=1 oppValue=0
952SkOpSegment::debugShowActiveSpans id=6 (5,3 0,5) t=0 (5,3) tEnd=0.176470588 windSum=1 windValue=1 oppValue=0
953SkOpSegment::debugShowActiveSpans id=6 (5,3 0,5) t=0.176470588 (4.11764717,3.35294127) tEnd=0.18240164 windSum=1 windValue=1 oppValue=0
954SkOpSegment::debugShowActiveSpans id=6 (5,3 0,5) t=0.18240164 (4.08799171,3.36480331) tEnd=1 windSum=? windValue=1 oppValue=0
955SkOpSegment::activeOp id=6 t=0.176470588 tEnd=0.18240164 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
956SkOpSegment::markWinding id=6 (5,3 0,5) t=0.18240164 [18] (4.08799171,3.36480331) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
957SkOpSegment::markWinding id=4 (0,5 1.125,4.625 2.25,4.53125 3.1640625,4.45507813) t=0 [7] (0,5) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
958SkOpSegment::markWinding id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0 [9] (3.1640625,4.45507813) tEnd=0.225175574 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
959SkOpSegment::markAngle last segment=5 span=16 windSum=?
960SkOpSegment::markWinding id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.383986729 [15] (4.09290743,4.36280823) tEnd=0.571089482 newWindSum=-2 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
961SkOpSegment::markAngle last segment=1 span=15 windSum=-2
962SkOpSegment::findNextOp
963SkOpAngle::dumpOne [6/19] next=1/4 sect=1/1 s=0.18240164 [18] e=0.176470588 [22] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-2 operand
964SkOpAngle::dumpOne [1/4] next=6/20 sect=5/5 s=0.571089482 [17] e=0.587088912 [13] sgn=-1 windVal=1 windSum=-2 oppVal=0 oppSum=0 done
965SkOpAngle::dumpOne [6/20] next=1/3 sect=17/17 s=0.18240164 [18] e=1 [12] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
966SkOpAngle::dumpOne [1/3] next=6/19 sect=21/25 s=0.571089482 [17] e=0.383986729 [15] sgn=1 windVal=1 windSum=-2 oppVal=0 oppSum=1
967SkOpSegment::activeOp id=1 t=0.571089482 tEnd=0.587088912 op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
968SkOpSegment::activeOp id=6 t=0.18240164 tEnd=1 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
969SkOpSegment::findNextOp chase.append segment=5 span=16 windSum=-2147483647
970SkOpSegment::activeOp id=1 t=0.571089482 tEnd=0.383986729 op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
971SkOpSegment::markDone id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0.383986729 [15] (4.09290743,4.36280823) tEnd=0.571089482 newWindSum=-2 newOppSum=1 oppSum=1 windSum=-2 windValue=1 oppValue=0
972SkOpSegment::findNextOp chase.append segment=1 span=15 windSum=-2
973SkOpSegment::markDone id=6 (5,3 0,5) t=0.176470588 [22] (4.11764717,3.35294127) tEnd=0.18240164 newWindSum=1 newOppSum=-2 oppSum=-2 windSum=1 windValue=1 oppValue=0
974SkOpSegment::findNextOp from:[6] to:[6] start=5399596 end=5398996
975bridgeOp current id=6 from=(4.11764717,3.35294127) to=(4.08799171,3.36480331)
976SkOpSegment::findNextOp simple
977SkOpSegment::markDone id=6 (5,3 0,5) t=0.18240164 [18] (4.08799171,3.36480331) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
978bridgeOp current id=6 from=(4.08799171,3.36480331) to=(0,5)
979path.moveTo(4.11764717,3.35294127);
980path.lineTo(4.08799171,3.36480331);
981SkOpSegment::findNextOp simple
982SkOpSegment::markDone id=4 (0,5 1.125,4.625 2.25,4.53125 3.1640625,4.45507813) t=0 [7] (0,5) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
983bridgeOp current id=4 from=(0,5) to=(3.1640625,4.45507813)
984path.lineTo(0,5);
985path.cubicTo(1.125,4.625, 2.25,4.53125, 3.1640625,4.45507813);
986SkOpSegment::markWinding id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0 [1] (5,6) tEnd=0.383986729 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
987SkOpSegment::markWinding id=3 (4,3 5,6) t=0.434637102 [19] (4.43463707,4.30391121) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
988SkOpSegment::markAngle last segment=3 span=19 windSum=-2
989SkOpSegment::markWinding id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.225175574 [16] (4.09290743,4.36280823) tEnd=0.326417764 newWindSum=1 newOppSum=-2 oppSum=? windSum=? windValue=1 oppValue=0
990SkOpSegment::markAngle last segment=5 span=20 windSum=1
991SkOpSegment::findNextOp
992SkOpAngle::dumpOne [5/13] next=1/1 sect=17/17 s=0.225175574 [16] e=0 [9] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
993SkOpAngle::dumpOne [1/1] next=5/14 sect=25/25 s=0.383986729 [15] e=0 [1] sgn=1 windVal=1 windSum=-2 oppVal=0 oppSum=0
994SkOpAngle::dumpOne [5/14] next=1/2 sect=1/1 s=0.225175574 [16] e=0.326417764 [20] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-2 operand
995SkOpAngle::dumpOne [1/2] next=5/13 sect=9/9 s=0.383986729 [15] e=0.571089482 [17] sgn=-1 windVal=1 windSum=-2 oppVal=0 oppSum=1 done
996SkOpSegment::activeOp id=1 t=0.383986729 tEnd=0 op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
997SkOpSegment::markDone id=1 (5,6 3.45152783,5.2257638 4.30082178,2.05376172 4.29911709,2.05330443) t=0 [1] (5,6) tEnd=0.383986729 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
998SkOpSegment::markDone id=3 (4,3 5,6) t=0.434637102 [19] (4.43463707,4.30391121) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
999SkOpSegment::findNextOp chase.append segment=3 span=19 windSum=-2
1000SkOpSegment::activeOp id=5 t=0.225175574 tEnd=0.326417764 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
1001SkOpSegment::findNextOp chase.append segment=5 span=20 windSum=1
1002SkOpSegment::activeOp id=1 t=0.383986729 tEnd=0.571089482 op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
1003SkOpSegment::markDone id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0 [9] (3.1640625,4.45507813) tEnd=0.225175574 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
1004SkOpSegment::findNextOp from:[5] to:[5] start=5399404 end=5399788
1005bridgeOp current id=5 from=(3.1640625,4.45507813) to=(4.09290743,4.36280823)
1006path.cubicTo(3.50710344,4.42649126, 3.82043505,4.40038061, 4.09290743,4.36280823);
1007SkOpSegment::findNextOp
1008SkOpAngle::dumpOne [5/15] next=3/12 sect=17/17 s=0.326417764 [20] e=0.225175574 [16] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-2 operand
1009SkOpAngle::dumpOne [3/12] next=5/16 sect=25/25 s=0.434637102 [19] e=1 [6] sgn=-1 windVal=1 windSum=-2 oppVal=0 oppSum=0 done
1010SkOpAngle::dumpOne [5/16] next=3/11 sect=1/5 s=0.326417764 [20] e=1 [10] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
1011SkOpAngle::dumpOne [3/11] next=5/15 sect=9/9 s=0.434637102 [19] e=0.117647059 [21] sgn=1 windVal=1 windSum=-2 oppVal=0 oppSum=1
1012SkOpSegment::activeOp id=3 t=0.434637102 tEnd=1 op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
1013SkOpSegment::activeOp id=5 t=0.326417764 tEnd=1 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
1014SkOpSegment::activeOp id=3 t=0.434637102 tEnd=0.117647059 op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
1015SkOpSegment::markDone id=3 (4,3 5,6) t=0.117647059 [21] (4.11764717,3.35294127) tEnd=0.434637102 newWindSum=-2 newOppSum=1 oppSum=1 windSum=-2 windValue=1 oppValue=0
1016SkOpSegment::markDone id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.225175574 [16] (4.09290743,4.36280823) tEnd=0.326417764 newWindSum=1 newOppSum=-2 oppSum=-2 windSum=1 windValue=1 oppValue=0
1017SkOpSegment::findNextOp from:[5] to:[5] start=5399788 end=5398780
1018bridgeOp current id=5 from=(4.09290743,4.36280823) to=(4.43463707,4.30391121)
1019path.cubicTo(4.215415,4.34591532, 4.32966232,4.32670498, 4.43463707,4.30391121);
1020SkOpSegment::findNextOp simple
1021SkOpSegment::markDone id=5 (3.1640625,4.45507813 4.6875,4.328125 5.625,4.25 5,3) t=0.326417764 [20] (4.43463707,4.30391121) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
1022bridgeOp current id=5 from=(4.43463707,4.30391121) to=(5,3)
1023path.cubicTo(5.13305092,4.1522603, 5.42098904,3.84197783, 5,3);
1024SkOpSegment::findNextOp
1025SkOpAngle::dumpOne [6/17] next=3/9 sect=1/1 s=0.176470588 [22] e=0 [11] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
1026SkOpAngle::dumpOne [3/9] next=6/18 sect=9/9 s=0.117647059 [21] e=0.0946657086 [14] sgn=1 windVal=1 windSum=-2 oppVal=0 oppSum=0 done
1027SkOpAngle::dumpOne [6/18] next=3/10 sect=17/17 s=0.176470588 [22] e=0.18240164 [18] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-2 done operand
1028SkOpAngle::dumpOne [3/10] next=6/17 sect=25/25 s=0.117647059 [21] e=0.434637102 [19] sgn=-1 windVal=1 windSum=-2 oppVal=0 oppSum=1 done
1029SkOpSegment::activeOp id=3 t=0.117647059 tEnd=0.0946657086 op=diff miFrom=1 miTo=1 suFrom=0 suTo=0 result=0
1030SkOpSegment::activeOp id=6 t=0.176470588 tEnd=0.18240164 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
1031SkOpSegment::activeOp id=3 t=0.117647059 tEnd=0.434637102 op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
1032SkOpSegment::markDone id=6 (5,3 0,5) t=0 [11] (5,3) tEnd=0.176470588 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
1033SkOpSegment::findNextOp from:[6] to:[6] start=5399980 end=5399596
1034bridgeOp current id=6 from=(5,3) to=(4.11764717,3.35294127)
1035path.lineTo(4.11764717,3.35294127);
1036path.close();
1037</div>
1038
1039<div id="cubicOp139">
1040seg=1 {{{0, 2}, {0, 3.1622777f}, {1.01316714f, 2.63594365f}, {2.25444698f, 1.99110639f}}}
1041seg=2 {{{2.25444698f, 1.99110639f}, {3.14911079f, 1.52633405f}, {4.1622777f, 1}, {5, 1}}}
1042seg=3 {{{5, 1}, {0, 2}}}
1043op diff
1044seg=4 {{{1, 3}, {1, 3.81649661f}, {1.16666663f, 3.46632648f}, {1.5f, 2.7659862f}}}
1045seg=5 {{{1.5f, 2.7659862f}, {1.98316336f, 1.75085032f}, {2.81649661f, 0}, {4, 0}}}
1046seg=6 {{{4, 0}, {1, 3}}}
1047debugShowCubicIntersection wtTs[0]=1 {{{1,3}, {1,3.81649661}, {1.16666663,3.46632648}, {1.5,2.7659862}}} {{1.5,2.7659862}} wnTs[0]=0 {{{1.5,2.7659862}, {1.98316336,1.75085032}, {2.81649661,0}, {4,0}}}
1048debugShowCubicLineIntersection wtTs[0]=0 {{{1,3}, {1,3.81649661}, {1.16666663,3.46632648}, {1.5,2.7659862}}} {{1,3}} wnTs[0]=1 {{{4,0}, {1,3}}}
1049debugShowCubicLineIntersection wtTs[0]=0.155050986 {{{1.5,2.7659862}, {1.98316336,1.75085032}, {2.81649661,0}, {4,0}}} {{1.75,2.25}} wtTs[1]=1 {{4,0}} wnTs[0]=0.75 {{{4,0}, {1,3}}} wnTs[1]=0
1050SkOpSegment::addT insert t=0.155050986 segID=5 spanID=13
1051SkOpSegment::addT insert t=0.750000011 segID=6 spanID=14
1052debugShowCubicIntersection wtTs[0]=0.155051514 {{{1.5,2.7659862}, {1.98316336,1.75085032}, {2.81649661,0}, {4,0}}} {{1.75000095,2.24999809}} wnTs[0]=0.86038 {{{0,2}, {0,3.1622777}, {1.01316714,2.63594365}, {2.25444698,1.99110639}}}
1053SkOpSegment::addT insert t=0.155051514 segID=5 spanID=15
1054SkOpSegment::addT insert t=0.860380193 segID=1 spanID=16
1055debugShowCubicIntersection no intersect {{{1.5,2.7659862}, {1.98316336,1.75085032}, {2.81649661,0}, {4,0}}} {{{2.25444698,1.99110639}, {3.14911079,1.52633405}, {4.1622777,1}, {5,1}}}
1056debugShowCubicLineIntersection wtTs[0]=0.338765887 {{{1.5,2.7659862}, {1.98316336,1.75085032}, {2.81649661,0}, {4,0}}} {{2.11159682,1.57768071}} wnTs[0]=0.577681 {{{5,1}, {0,2}}}
1057SkOpSegment::addT insert t=0.338765887 segID=5 spanID=17
1058SkOpSegment::addT insert t=0.577680653 segID=3 spanID=18
1059debugShowCubicLineIntersection wtTs[0]=0.860379519 {{{0,2}, {0,3.1622777}, {1.01316714,2.63594365}, {2.25444698,1.99110639}}} {{1.74999988,2.25000024}} wnTs[0]=0.75 {{{4,0}, {1,3}}}
1060SkOpSegment::addT alias t=0.750000053 segID=6 spanID=14
1061SkOpSegment::addT insert t=0.860379519 segID=1 spanID=19
1062debugShowCubicLineIntersection no intersect {{{2.25444698,1.99110639}, {3.14911079,1.52633405}, {4.1622777,1}, {5,1}}} {{{4,0}, {1,3}}}
1063debugShowLineIntersection wtTs[0]=0.5 {{{4,0}, {1,3}}} {{2.5,1.5}} wnTs[0]=0.5 {{{5,1}, {0,2}}}
1064SkOpSegment::addT insert t=0.5 segID=6 spanID=20
1065SkOpSegment::addT insert t=0.5 segID=3 spanID=21
1066debugShowCubicIntersection wtTs[0]=1 {{{0,2}, {0,3.1622777}, {1.01316714,2.63594365}, {2.25444698,1.99110639}}} {{2.25444698,1.99110639}} wnTs[0]=0 {{{2.25444698,1.99110639}, {3.14911079,1.52633405}, {4.1622777,1}, {5,1}}}
1067debugShowCubicLineIntersection wtTs[0]=0 {{{0,2}, {0,3.1622777}, {1.01316714,2.63594365}, {2.25444698,1.99110639}}} {{0,2}} wnTs[0]=1 {{{5,1}, {0,2}}}
1068debugShowCubicLineIntersection wtTs[0]=0.602095723 {{{2.25444698,1.99110639}, {3.14911079,1.52633405}, {4.1622777,1}, {5,1}}} {{3.93518543,1.21296299}} wtTs[1]=1 {{5,1}} wnTs[0]=0.212963 {{{5,1}, {0,2}}} wnTs[1]=0
1069SkOpSegment::addT insert t=0.602095723 segID=2 spanID=22
1070SkOpSegment::addT insert t=0.212962927 segID=3 spanID=23
1071SkOpSegment::sortAngles [5] tStart=0.155050986 [13]
1072SkOpAngle::after [5/1] 21/21 tStart=0.155050986 tEnd=0 < [6/9] 3/3 tStart=0.750000011 tEnd=0.5 < [5/2] 3/3 tStart=0.155050986 tEnd=0.155051514 T 11
1073SkOpAngle::afterPart {{{1.75,2.25}, {1.65824831,2.43350336}, {1.57491495,2.60858838}, {1.5,2.7659862}}} id=5
1074SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
1075SkOpAngle::afterPart {{{1.75,2.25}, {1.75000031,2.24999938}, {1.75000064,2.24999872}, {1.75000095,2.24999809}}} id=5
1076SkOpAngle::after [5/1] 21/21 tStart=0.155050986 tEnd=0 < [6/10] 19/19 tStart=0.750000011 tEnd=1 < [6/9] 3/3 tStart=0.750000011 tEnd=0.5 F 4
1077SkOpAngle::afterPart {{{1.75,2.25}, {1.65824831,2.43350336}, {1.57491495,2.60858838}, {1.5,2.7659862}}} id=5
1078SkOpAngle::afterPart {{{1.75,2.25}, {1,3}}} id=6
1079SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
1080SkOpAngle::after [6/9] 3/3 tStart=0.750000011 tEnd=0.5 < [6/10] 19/19 tStart=0.750000011 tEnd=1 < [5/2] 3/3 tStart=0.155050986 tEnd=0.155051514 F 5
1081SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
1082SkOpAngle::afterPart {{{1.75,2.25}, {1,3}}} id=6
1083SkOpAngle::afterPart {{{1.75,2.25}, {1.75000031,2.24999938}, {1.75000064,2.24999872}, {1.75000095,2.24999809}}} id=5
1084SkOpAngle::after [5/2] 3/3 tStart=0.155050986 tEnd=0.155051514 < [6/10] 19/19 tStart=0.750000011 tEnd=1 < [5/1] 21/21 tStart=0.155050986 tEnd=0 T 4
1085SkOpAngle::afterPart {{{1.75,2.25}, {1.75000031,2.24999938}, {1.75000064,2.24999872}, {1.75000095,2.24999809}}} id=5
1086SkOpAngle::afterPart {{{1.75,2.25}, {1,3}}} id=6
1087SkOpAngle::afterPart {{{1.75,2.25}, {1.65824831,2.43350336}, {1.57491495,2.60858838}, {1.5,2.7659862}}} id=5
1088SkOpAngle::after [5/1] 21/21 tStart=0.155050986 tEnd=0 < [1/11] 17/13 tStart=0.860379519 tEnd=0 < [6/9] 3/3 tStart=0.750000011 tEnd=0.5 F 4
1089SkOpAngle::afterPart {{{1.75,2.25}, {1.65824831,2.43350336}, {1.57491495,2.60858838}, {1.5,2.7659862}}} id=5
1090SkOpAngle::afterPart {{{1.75,2.25}, {0.750000093,2.74999992}, {0,2.99999993}, {0,2}}} id=1
1091SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
1092SkOpAngle::after [6/9] 3/3 tStart=0.750000011 tEnd=0.5 < [1/11] 17/13 tStart=0.860379519 tEnd=0 < [5/2] 3/3 tStart=0.155050986 tEnd=0.155051514 F 5
1093SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
1094SkOpAngle::afterPart {{{1.75,2.25}, {0.750000093,2.74999992}, {0,2.99999993}, {0,2}}} id=1
1095SkOpAngle::afterPart {{{1.75,2.25}, {1.75000031,2.24999938}, {1.75000064,2.24999872}, {1.75000095,2.24999809}}} id=5
1096SkOpAngle::after [5/2] 3/3 tStart=0.155050986 tEnd=0.155051514 < [1/11] 17/13 tStart=0.860379519 tEnd=0 < [6/10] 19/19 tStart=0.750000011 tEnd=1 T 4
1097SkOpAngle::afterPart {{{1.75,2.25}, {1.75000031,2.24999938}, {1.75000064,2.24999872}, {1.75000095,2.24999809}}} id=5
1098SkOpAngle::afterPart {{{1.75,2.25}, {0.750000093,2.74999992}, {0,2.99999993}, {0,2}}} id=1
1099SkOpAngle::afterPart {{{1.75,2.25}, {1,3}}} id=6
1100SkOpAngle::after [5/1] 21/21 tStart=0.155050986 tEnd=0 < [1/12] 3/3 tStart=0.860379519 tEnd=0.860380193 < [6/9] 3/3 tStart=0.750000011 tEnd=0.5 F 11
1101SkOpAngle::afterPart {{{1.75,2.25}, {1.65824831,2.43350336}, {1.57491495,2.60858838}, {1.5,2.7659862}}} id=5
1102SkOpAngle::afterPart {{{1.75,2.25}, {1.75000078,2.24999961}, {1.75000017,2.24999848}, {1.75000095,2.24999809}}} id=1
1103SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
1104SkOpAngle::after [6/9] 3/3 tStart=0.750000011 tEnd=0.5 < [1/12] 3/3 tStart=0.860379519 tEnd=0.860380193 < [5/2] 3/3 tStart=0.155050986 tEnd=0.155051514 T 7
1105SkOpAngle::afterPart {{{1.75,2.25}, {2.5,1.5}}} id=6
1106SkOpAngle::afterPart {{{1.75,2.25}, {1.75000078,2.24999961}, {1.75000017,2.24999848}, {1.75000095,2.24999809}}} id=1
1107SkOpAngle::afterPart {{{1.75,2.25}, {1.75000031,2.24999938}, {1.75000064,2.24999872}, {1.75000095,2.24999809}}} id=5
1108SkOpSegment::sortAngles [5] tStart=0.155051514 [15]
1109SkOpAngle::after [5/3] 19/19 tStart=0.155051514 tEnd=0.155050986 < [1/13] 19/19 tStart=0.860380193 tEnd=0.860379519 < [5/4] 5/5 tStart=0.155051514 tEnd=0.338765887 T 12
1110SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.75000064,2.24999872}, {1.75000031,2.24999938}, {1.75,2.25}}} id=5
1111SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.75000017,2.24999848}, {1.75000078,2.24999961}, {1.75,2.25}}} id=1
1112SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.85871432,2.03257145}, {1.9792463,1.80332639}, {2.11159682,1.57768071}}} id=5
1113SkOpAngle::after [5/3] 19/19 tStart=0.155051514 tEnd=0.155050986 < [1/14] 1/1 tStart=0.860380193 tEnd=1 < [1/13] 19/19 tStart=0.860380193 tEnd=0.860379519 F 5
1114SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.75000064,2.24999872}, {1.75000031,2.24999938}, {1.75,2.25}}} id=5
1115SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.912278,2.16885954}, {2.08113973,2.08113844}, {2.25444698,1.99110639}}} id=1
1116SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.75000017,2.24999848}, {1.75000078,2.24999961}, {1.75,2.25}}} id=1
1117SkOpAngle::after [1/13] 19/19 tStart=0.860380193 tEnd=0.860379519 < [1/14] 1/1 tStart=0.860380193 tEnd=1 < [5/4] 5/5 tStart=0.155051514 tEnd=0.338765887 T 4
1118SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.75000017,2.24999848}, {1.75000078,2.24999961}, {1.75,2.25}}} id=1
1119SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.912278,2.16885954}, {2.08113973,2.08113844}, {2.25444698,1.99110639}}} id=1
1120SkOpAngle::afterPart {{{1.75000095,2.24999809}, {1.85871432,2.03257145}, {1.9792463,1.80332639}, {2.11159682,1.57768071}}} id=5
1121SkOpSegment::sortAngles [5] tStart=0.338765887 [17]
1122SkOpAngle::after [5/5] 21/21 tStart=0.338765887 tEnd=0.155051514 < [3/21] 1/1 tStart=0.577680653 tEnd=0.5 < [5/6] 5/1 tStart=0.338765887 tEnd=1 T 11
1123SkOpAngle::afterPart {{{2.11159682,1.57768071}, {1.9792463,1.80332639}, {1.85871432,2.03257145}, {1.75000095,2.24999809}}} id=5
1124SkOpAngle::afterPart {{{2.11159682,1.57768071}, {2.5,1.5}}} id=3
1125SkOpAngle::afterPart {{{2.11159682,1.57768071}, {2.58795954,0.765525306}, {3.21742719,0}, {4,0}}} id=5
1126SkOpAngle::after [5/5] 21/21 tStart=0.338765887 tEnd=0.155051514 < [3/22] 17/17 tStart=0.577680653 tEnd=1 < [3/21] 1/1 tStart=0.577680653 tEnd=0.5 F 4
1127SkOpAngle::afterPart {{{2.11159682,1.57768071}, {1.9792463,1.80332639}, {1.85871432,2.03257145}, {1.75000095,2.24999809}}} id=5
1128SkOpAngle::afterPart {{{2.11159682,1.57768071}, {0,2}}} id=3
1129SkOpAngle::afterPart {{{2.11159682,1.57768071}, {2.5,1.5}}} id=3
1130SkOpAngle::after [3/21] 1/1 tStart=0.577680653 tEnd=0.5 < [3/22] 17/17 tStart=0.577680653 tEnd=1 < [5/6] 5/1 tStart=0.338765887 tEnd=1 F 5
1131SkOpAngle::afterPart {{{2.11159682,1.57768071}, {2.5,1.5}}} id=3
1132SkOpAngle::afterPart {{{2.11159682,1.57768071}, {0,2}}} id=3
1133SkOpAngle::afterPart {{{2.11159682,1.57768071}, {2.58795954,0.765525306}, {3.21742719,0}, {4,0}}} id=5
1134SkOpAngle::after [5/6] 5/1 tStart=0.338765887 tEnd=1 < [3/22] 17/17 tStart=0.577680653 tEnd=1 < [5/5] 21/21 tStart=0.338765887 tEnd=0.155051514 T 4
1135SkOpAngle::afterPart {{{2.11159682,1.57768071}, {2.58795954,0.765525306}, {3.21742719,0}, {4,0}}} id=5
1136SkOpAngle::afterPart {{{2.11159682,1.57768071}, {0,2}}} id=3
1137SkOpAngle::afterPart {{{2.11159682,1.57768071}, {1.9792463,1.80332639}, {1.85871432,2.03257145}, {1.75000095,2.24999809}}} id=5
1138SkOpSegment::sortAngles [6] tStart=0.5 [20]
1139SkOpAngle::after [6/7] 3/3 tStart=0.5 tEnd=0 < [3/19] 1/1 tStart=0.5 tEnd=0.212962927 < [6/8] 19/19 tStart=0.5 tEnd=0.750000011 F 4
1140SkOpAngle::afterPart {{{2.5,1.5}, {4,0}}} id=6
1141SkOpAngle::afterPart {{{2.5,1.5}, {3.93518543,1.21296299}}} id=3
1142SkOpAngle::afterPart {{{2.5,1.5}, {1.75,2.25}}} id=6
1143SkOpAngle::after [6/7] 3/3 tStart=0.5 tEnd=0 < [3/20] 17/17 tStart=0.5 tEnd=0.577680653 < [6/8] 19/19 tStart=0.5 tEnd=0.750000011 T 4
1144SkOpAngle::afterPart {{{2.5,1.5}, {4,0}}} id=6
1145SkOpAngle::afterPart {{{2.5,1.5}, {2.11159682,1.57768071}}} id=3
1146SkOpAngle::afterPart {{{2.5,1.5}, {1.75,2.25}}} id=6
1147SkOpSegment::sortAngles [6] tStart=0.750000011 [14]
1148SkOpSegment::sortAngles [1] tStart=0.860379519 [19]
1149SkOpSegment::sortAngles [1] tStart=0.860380193 [16]
1150SkOpSegment::sortAngles [2] tStart=0.602095723 [22]
1151SkOpAngle::after [2/15] 17/17 tStart=0.602095723 tEnd=0 < [3/17] 1/1 tStart=0.212962927 tEnd=0 < [2/16] 1/1 tStart=0.602095723 tEnd=1 T 11
1152SkOpAngle::afterPart {{{3.93518543,1.21296299}, {3.37475322,1.40911426}, {2.79312024,1.71126895}, {2.25444698,1.99110639}}} id=2
1153SkOpAngle::afterPart {{{3.93518543,1.21296299}, {5,1}}} id=3
1154SkOpAngle::afterPart {{{3.93518543,1.21296299}, {4.30555574,1.08333338}, {4.66666671,1}, {5,1}}} id=2
1155SkOpAngle::after [2/15] 17/17 tStart=0.602095723 tEnd=0 < [3/18] 17/17 tStart=0.212962927 tEnd=0.5 < [3/17] 1/1 tStart=0.212962927 tEnd=0 F 12
1156SkOpAngle::afterPart {{{3.93518543,1.21296299}, {3.37475322,1.40911426}, {2.79312024,1.71126895}, {2.25444698,1.99110639}}} id=2
1157SkOpAngle::afterPart {{{3.93518543,1.21296299}, {2.5,1.5}}} id=3
1158SkOpAngle::afterPart {{{3.93518543,1.21296299}, {5,1}}} id=3
1159SkOpAngle::after [3/17] 1/1 tStart=0.212962927 tEnd=0 < [3/18] 17/17 tStart=0.212962927 tEnd=0.5 < [2/16] 1/1 tStart=0.602095723 tEnd=1 F 5
1160SkOpAngle::afterPart {{{3.93518543,1.21296299}, {5,1}}} id=3
1161SkOpAngle::afterPart {{{3.93518543,1.21296299}, {2.5,1.5}}} id=3
1162SkOpAngle::afterPart {{{3.93518543,1.21296299}, {4.30555574,1.08333338}, {4.66666671,1}, {5,1}}} id=2
1163SkOpAngle::after [2/16] 1/1 tStart=0.602095723 tEnd=1 < [3/18] 17/17 tStart=0.212962927 tEnd=0.5 < [2/15] 17/17 tStart=0.602095723 tEnd=0 T 11
1164SkOpAngle::afterPart {{{3.93518543,1.21296299}, {4.30555574,1.08333338}, {4.66666671,1}, {5,1}}} id=2
1165SkOpAngle::afterPart {{{3.93518543,1.21296299}, {2.5,1.5}}} id=3
1166SkOpAngle::afterPart {{{3.93518543,1.21296299}, {3.37475322,1.40911426}, {2.79312024,1.71126895}, {2.25444698,1.99110639}}} id=2
1167SkOpSegment::sortAngles [3] tStart=0.212962927 [23]
1168SkOpSegment::sortAngles [3] tStart=0.5 [21]
1169SkOpSegment::sortAngles [3] tStart=0.577680653 [18]
1170SkOpSegment::debugShowActiveSpans id=4 (1,3 1,3.81649661 1.16666663,3.46632648 1.5,2.7659862) t=0 (1,3) tEnd=1 windSum=? windValue=1 oppValue=0
1171SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0 (1.5,2.7659862) tEnd=0.155050986 windSum=? windValue=1 oppValue=0
1172SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155050986 (1.75,2.25) tEnd=0.155051514 windSum=? windValue=1 oppValue=0
1173SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155051514 (1.75000095,2.24999809) tEnd=0.338765887 windSum=? windValue=1 oppValue=0
1174SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.338765887 (2.11159682,1.57768071) tEnd=1 windSum=? windValue=1 oppValue=0
1175SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0 (4,0) tEnd=0.5 windSum=? windValue=1 oppValue=0
1176SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0.5 (2.5,1.5) tEnd=0.750000011 windSum=? windValue=1 oppValue=0
1177SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0.750000011 (1.75,2.25) tEnd=1 windSum=? windValue=1 oppValue=0
1178SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0 (0,2) tEnd=0.860379519 windSum=? windValue=1 oppValue=0
1179SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860379519 (1.75,2.25) tEnd=0.860380193 windSum=? windValue=1 oppValue=0
1180SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860380193 (1.75000095,2.24999809) tEnd=1 windSum=? windValue=1 oppValue=0
1181SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0 (2.25444698,1.99110639) tEnd=0.602095723 windSum=? windValue=1 oppValue=0
1182SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 (3.93518543,1.21296299) tEnd=1 windSum=? windValue=1 oppValue=0
1183SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0 (5,1) tEnd=0.212962927 windSum=? windValue=1 oppValue=0
1184SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.212962927 (3.93518543,1.21296299) tEnd=0.5 windSum=? windValue=1 oppValue=0
1185SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.5 (2.5,1.5) tEnd=0.577680653 windSum=? windValue=1 oppValue=0
1186SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.577680653 (2.11159682,1.57768071) tEnd=1 windSum=? windValue=1 oppValue=0
1187-SkOpSegment::findTop-
1188SkOpAngle::dumpOne [5/24] next=6/23 sect=16/17 s=1 [10] e=0.338765887 [17] sgn=1 windVal=1 windSum=? operand
1189SkOpAngle::dumpOne [6/23] next=5/24 sect=19/19 s=0 [11] e=0.5 [20] sgn=-1 windVal=1 windSum=? operand stop
1190SkOpSegment::findTop id=5 s=0.338765887 e=1 cw=1 swap=0 inflections=0 monotonic=1
1191SkOpSegment::markWinding id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.338765887 [17] (2.11159682,1.57768071) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1192SkOpSegment::nextChase mismatched signs
1193SkOpSegment::markWinding id=6 (4,0 1,3) t=0 [11] (4,0) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1194SkOpSegment::markWinding id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.338765887 [17] (2.11159682,1.57768071) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1195SkOpSegment::activeOp id=5 t=0.338765887 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
1196SkOpSegment::markDone id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.338765887 [17] (2.11159682,1.57768071) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1197SkOpSegment::nextChase mismatched signs
1198SkOpSegment::markDone id=6 (4,0 1,3) t=0 [11] (4,0) tEnd=0.5 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1199bridgeOp chase.append id=6 windSum=-2147483647
1200SkOpSegment::markWinding id=3 (5,1 0,2) t=0.5 [21] (2.5,1.5) tEnd=0.577680653 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
1201SkOpSegment::markAngle last segment=3 span=18 windSum=?
1202SkOpSegment::markWinding id=6 (4,0 1,3) t=0.5 [20] (2.5,1.5) tEnd=0.750000011 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
1203SkOpSegment::markAngle last segment=6 span=14 windSum=?
1204SkOpSegment::markWinding id=3 (5,1 0,2) t=0.212962927 [23] (3.93518543,1.21296299) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1205SkOpSegment::markAngle last segment=3 span=23 windSum=1
1206SkOpSegment::debugShowActiveSpans id=4 (1,3 1,3.81649661 1.16666663,3.46632648 1.5,2.7659862) t=0 (1,3) tEnd=1 windSum=? windValue=1 oppValue=0
1207SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0 (1.5,2.7659862) tEnd=0.155050986 windSum=? windValue=1 oppValue=0
1208SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155050986 (1.75,2.25) tEnd=0.155051514 windSum=? windValue=1 oppValue=0
1209SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155051514 (1.75000095,2.24999809) tEnd=0.338765887 windSum=? windValue=1 oppValue=0
1210SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0.5 (2.5,1.5) tEnd=0.750000011 windSum=-1 windValue=1 oppValue=0
1211SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0.750000011 (1.75,2.25) tEnd=1 windSum=? windValue=1 oppValue=0
1212SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0 (0,2) tEnd=0.860379519 windSum=? windValue=1 oppValue=0
1213SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860379519 (1.75,2.25) tEnd=0.860380193 windSum=? windValue=1 oppValue=0
1214SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860380193 (1.75000095,2.24999809) tEnd=1 windSum=? windValue=1 oppValue=0
1215SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0 (2.25444698,1.99110639) tEnd=0.602095723 windSum=? windValue=1 oppValue=0
1216SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 (3.93518543,1.21296299) tEnd=1 windSum=? windValue=1 oppValue=0
1217SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0 (5,1) tEnd=0.212962927 windSum=? windValue=1 oppValue=0
1218SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.212962927 (3.93518543,1.21296299) tEnd=0.5 windSum=1 windValue=1 oppValue=0
1219SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.5 (2.5,1.5) tEnd=0.577680653 windSum=1 windValue=1 oppValue=0
1220SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.577680653 (2.11159682,1.57768071) tEnd=1 windSum=? windValue=1 oppValue=0
1221SkOpSegment::activeOp id=3 t=0.5 tEnd=0.577680653 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
1222SkOpSegment::markDone id=3 (5,1 0,2) t=0.5 [21] (2.5,1.5) tEnd=0.577680653 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
1223bridgeOp chase.append id=3 windSum=-2147483647
1224SkOpSegment::markWinding id=3 (5,1 0,2) t=0.577680653 [18] (2.11159682,1.57768071) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1225SkOpSegment::markWinding id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0 [1] (0,2) tEnd=0.860379519 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1226SkOpSegment::markAngle last segment=1 span=19 windSum=?
1227SkOpSegment::markWinding id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155051514 [15] (1.75000095,2.24999809) tEnd=0.338765887 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
1228SkOpSegment::markAngle last segment=5 span=15 windSum=-1
1229SkOpSegment::debugShowActiveSpans id=4 (1,3 1,3.81649661 1.16666663,3.46632648 1.5,2.7659862) t=0 (1,3) tEnd=1 windSum=? windValue=1 oppValue=0
1230SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0 (1.5,2.7659862) tEnd=0.155050986 windSum=? windValue=1 oppValue=0
1231SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155050986 (1.75,2.25) tEnd=0.155051514 windSum=? windValue=1 oppValue=0
1232SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155051514 (1.75000095,2.24999809) tEnd=0.338765887 windSum=-1 windValue=1 oppValue=0
1233SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0.5 (2.5,1.5) tEnd=0.750000011 windSum=-1 windValue=1 oppValue=0
1234SkOpSegment::debugShowActiveSpans id=6 (4,0 1,3) t=0.750000011 (1.75,2.25) tEnd=1 windSum=? windValue=1 oppValue=0
1235SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0 (0,2) tEnd=0.860379519 windSum=1 windValue=1 oppValue=0
1236SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860379519 (1.75,2.25) tEnd=0.860380193 windSum=? windValue=1 oppValue=0
1237SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860380193 (1.75000095,2.24999809) tEnd=1 windSum=? windValue=1 oppValue=0
1238SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0 (2.25444698,1.99110639) tEnd=0.602095723 windSum=? windValue=1 oppValue=0
1239SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 (3.93518543,1.21296299) tEnd=1 windSum=? windValue=1 oppValue=0
1240SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0 (5,1) tEnd=0.212962927 windSum=? windValue=1 oppValue=0
1241SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.212962927 (3.93518543,1.21296299) tEnd=0.5 windSum=1 windValue=1 oppValue=0
1242SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.577680653 (2.11159682,1.57768071) tEnd=1 windSum=1 windValue=1 oppValue=0
1243SkOpSegment::activeOp id=3 t=0.577680653 tEnd=1 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
1244SkOpSegment::findNextOp simple
1245SkOpSegment::markDone id=3 (5,1 0,2) t=0.577680653 [18] (2.11159682,1.57768071) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
1246bridgeOp current id=3 from=(2.11159682,1.57768071) to=(0,2)
1247SkOpSegment::findNextOp
1248SkOpAngle::dumpOne [1/11] next=6/10 sect=17/13 s=0.860379519 [19] e=0 [1] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0
1249SkOpAngle::dumpOne [6/10] next=5/1 sect=19/19 s=0.750000011 [14] e=1 [12] sgn=-1 windVal=1 windSum=? operand
1250SkOpAngle::dumpOne [5/1] next=6/9 sect=21/21 s=0.155050986 [13] e=0 [9] sgn=1 windVal=1 windSum=? operand
1251SkOpAngle::dumpOne [6/9] next=1/12 sect=3/3 s=0.750000011 [14] e=0.5 [20] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
1252SkOpAngle::dumpOne [1/12] next=5/2 sect=3/3 s=0.860379519 [19] e=0.860380193 [16] sgn=-1 windVal=1 windSum=? unorderable
1253SkOpAngle::dumpOne [5/2] next=1/11 sect=3/3 s=0.155050986 [13] e=0.155051514 [15] sgn=-1 windVal=1 windSum=? unorderable operand
1254SkOpSegment::activeOp id=6 t=0.750000011 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
1255SkOpSegment::markDone id=6 (4,0 1,3) t=0.750000011 [14] (1.75,2.25) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
1256SkOpSegment::markDone id=4 (1,3 1,3.81649661 1.16666663,3.46632648 1.5,2.7659862) t=0 [7] (1,3) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
1257SkOpSegment::markDone id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0 [9] (1.5,2.7659862) tEnd=0.155050986 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
1258SkOpSegment::activeOp id=5 t=0.155050986 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
1259SkOpSegment::activeOp id=6 t=0.750000011 tEnd=0.5 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
1260SkOpSegment::markDone id=6 (4,0 1,3) t=0.5 [20] (2.5,1.5) tEnd=0.750000011 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
1261SkOpSegment::activeOp id=1 t=0.860379519 tEnd=0.860380193 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
1262SkOpSegment::markDone id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860379519 [19] (1.75,2.25) tEnd=0.860380193 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
1263SkOpSegment::activeOp id=5 t=0.155050986 tEnd=0.155051514 op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
1264SkOpSegment::markDone id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0 [1] (0,2) tEnd=0.860379519 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
1265SkOpSegment::findNextOp from:[1] to:[5] start=5940460 end=5940652
1266bridgeOp current id=1 from=(0,2) to=(1.75,2.25)
1267path.moveTo(2.11159682,1.57768071);
1268path.lineTo(0,2);
1269path.cubicTo(0,3, 0.750000119,2.75, 1.75,2.25);
1270SkOpSegment::markDone id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155050986 [13] (1.75,2.25) tEnd=0.155051514 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
1271SkOpSegment::debugShowActiveSpans id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155051514 (1.75000095,2.24999809) tEnd=0.338765887 windSum=-1 windValue=1 oppValue=0
1272SkOpSegment::debugShowActiveSpans id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860380193 (1.75000095,2.24999809) tEnd=1 windSum=? windValue=1 oppValue=0
1273SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0 (2.25444698,1.99110639) tEnd=0.602095723 windSum=? windValue=1 oppValue=0
1274SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 (3.93518543,1.21296299) tEnd=1 windSum=? windValue=1 oppValue=0
1275SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0 (5,1) tEnd=0.212962927 windSum=? windValue=1 oppValue=0
1276SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.212962927 (3.93518543,1.21296299) tEnd=0.5 windSum=1 windValue=1 oppValue=0
1277SkOpSegment::activeOp id=5 t=0.338765887 tEnd=0.155051514 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
1278SkOpSegment::findNextOp
1279SkOpAngle::dumpOne [5/4] next=5/3 sect=5/5 s=0.155051514 [15] e=0.338765887 [17] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
1280SkOpAngle::dumpOne [5/3] next=1/13 sect=19/19 s=0.155051514 [15] e=0.155050986 [13] sgn=1 windVal=1 windSum=? done unorderable operand
1281SkOpAngle::dumpOne [1/13] next=1/14 sect=19/19 s=0.860380193 [16] e=0.860379519 [19] sgn=1 windVal=1 windSum=? done unorderable
1282SkOpAngle::dumpOne [1/14] next=5/4 sect=1/1 s=0.860380193 [16] e=1 [2] sgn=-1 windVal=1 windSum=?
1283SkOpSegment::activeOp id=5 t=0.155051514 tEnd=0.155050986 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
1284SkOpSegment::activeOp id=1 t=0.860380193 tEnd=0.860379519 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
1285SkOpSegment::activeOp id=1 t=0.860380193 tEnd=1 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
1286SkOpSegment::markDone id=1 (0,2 0,3.1622777 1.01316714,2.63594365 2.25444698,1.99110639) t=0.860380193 [16] (1.75000095,2.24999809) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
1287SkOpSegment::markDone id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0 [3] (2.25444698,1.99110639) tEnd=0.602095723 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=1 oppValue=0
1288SkOpSegment::markDone id=5 (1.5,2.7659862 1.98316336,1.75085032 2.81649661,0 4,0) t=0.155051514 [15] (1.75000095,2.24999809) tEnd=0.338765887 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
1289SkOpSegment::findNextOp from:[5] to:[5] start=5940652 end=5940460
1290bridgeOp current id=5 from=(2.11159682,1.57768071) to=(1.75000095,2.24999809)
1291path.moveTo(2.11159682,1.57768071);
1292path.cubicTo(1.97924626,1.80332637, 1.85871434,2.03257155, 1.75000095,2.24999809);
1293SkOpSegment::debugShowActiveSpans id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 (3.93518543,1.21296299) tEnd=1 windSum=? windValue=1 oppValue=0
1294SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0 (5,1) tEnd=0.212962927 windSum=? windValue=1 oppValue=0
1295SkOpSegment::debugShowActiveSpans id=3 (5,1 0,2) t=0.212962927 (3.93518543,1.21296299) tEnd=0.5 windSum=1 windValue=1 oppValue=0
1296SkOpSegment::activeOp id=3 t=0.5 tEnd=0.212962927 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
1297SkOpSegment::markAngle last segment=1 span=16 windSum=?
1298SkOpSegment::markWinding id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 [22] (3.93518543,1.21296299) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1299SkOpSegment::markWinding id=3 (5,1 0,2) t=0 [5] (5,1) tEnd=0.212962927 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1300SkOpSegment::markAngle last segment=3 span=23 windSum=1
1301SkOpSegment::markAngle last segment=1 span=16 windSum=?
1302SkOpSegment::findNextOp
1303SkOpAngle::dumpOne [3/18] next=2/15 sect=17/17 s=0.212962927 [23] e=0.5 [21] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
1304SkOpAngle::dumpOne [2/15] next=3/17 sect=17/17 s=0.602095723 [22] e=0 [3] sgn=1 windVal=1 windSum=? done
1305SkOpAngle::dumpOne [3/17] next=2/16 sect=1/1 s=0.212962927 [23] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
1306SkOpAngle::dumpOne [2/16] next=3/18 sect=1/1 s=0.602095723 [22] e=1 [4] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
1307SkOpSegment::activeOp id=2 t=0.602095723 tEnd=0 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
1308SkOpSegment::findNextOp chase.append segment=1 span=16 windSum=-2147483647
1309SkOpSegment::activeOp id=3 t=0.212962927 tEnd=0 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
1310SkOpSegment::activeOp id=2 t=0.602095723 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
1311SkOpSegment::findNextOp chase.append segment=3 span=23 windSum=1
1312SkOpSegment::markDone id=3 (5,1 0,2) t=0.212962927 [23] (3.93518543,1.21296299) tEnd=0.5 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
1313SkOpSegment::findNextOp from:[3] to:[2] start=5941356 end=5939348
1314bridgeOp current id=3 from=(2.5,1.5) to=(3.93518543,1.21296299)
1315SkOpSegment::findNextOp simple
1316SkOpSegment::markDone id=2 (2.25444698,1.99110639 3.14911079,1.52633405 4.1622777,1 5,1) t=0.602095723 [22] (3.93518543,1.21296299) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1317bridgeOp current id=2 from=(3.93518543,1.21296299) to=(5,1)
1318path.moveTo(2.5,1.5);
1319path.lineTo(3.93518543,1.21296299);
1320path.cubicTo(4.30555582,1.08333337, 4.66666651,1, 5,1);
1321SkOpSegment::markAngle last segment=1 span=16 windSum=?
1322SkOpSegment::markAngle last segment=1 span=16 windSum=?
1323SkOpSegment::findNextOp
1324SkOpAngle::dumpOne [3/17] next=2/16 sect=1/1 s=0.212962927 [23] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
1325SkOpAngle::dumpOne [2/16] next=3/18 sect=1/1 s=0.602095723 [22] e=1 [4] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
1326SkOpAngle::dumpOne [3/18] next=2/15 sect=17/17 s=0.212962927 [23] e=0.5 [21] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
1327SkOpAngle::dumpOne [2/15] next=3/17 sect=17/17 s=0.602095723 [22] e=0 [3] sgn=1 windVal=1 windSum=? done
1328SkOpSegment::activeOp id=2 t=0.602095723 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
1329SkOpSegment::activeOp id=3 t=0.212962927 tEnd=0.5 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
1330SkOpSegment::activeOp id=2 t=0.602095723 tEnd=0 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
1331SkOpSegment::markDone id=3 (5,1 0,2) t=0 [5] (5,1) tEnd=0.212962927 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1332SkOpSegment::findNextOp from:[3] to:[2] start=5941356 end=5939252
1333bridgeOp current id=3 from=(5,1) to=(3.93518543,1.21296299)
1334path.lineTo(3.93518543,1.21296299);
1335</div>
1336
1337<div id="issue3651_4">
1338seg=1 {{{32.7999992f, 180.399994f}, {33.0277786f, 180.399994f}, {33.255558f, 180.407654f}, {33.4833336f, 180.415314f}}}
1339seg=2 {{{33.4833336f, 180.415314f}, {33.9388885f, 180.430649f}, {34.3944435f, 180.445984f}, {34.8499985f, 180.399994f}}}
1340seg=3 {{{34.8499985f, 180.399994f}, {35.1892509f, 180.365753f}, {35.5285034f, 180.27977f}, {35.8677559f, 180.193771f}}}
1341seg=4 {{{35.8677559f, 180.193771f}, {36.2118378f, 180.106552f}, {36.5559196f, 180.019333f}, {36.9000015f, 179.986115f}}}
1342seg=5 {{{36.9000015f, 179.986115f}, {37.4102402f, 179.936844f}, {37.9204788f, 179.960083f}, {38.4307175f, 179.983322f}}}
1343seg=6 {{{38.4307175f, 179.983322f}, {38.6038094f, 179.991211f}, {38.7769051f, 179.999084f}, {38.9500008f, 180.004135f}}}
1344seg=7 {{{38.9500008f, 180.004135f}, {39.4294357f, 180.018143f}, {39.9088669f, 180.045212f}, {40.3883018f, 180.072281f}}}
1345seg=8 {{{40.3883018f, 180.072281f}, {40.5922012f, 180.083801f}, {40.7961006f, 180.095306f}, {41, 180.10582f}}}
1346seg=9 {{{41, 180.10582f}, {41.2403526f, 180.11821f}, {41.4807053f, 180.133743f}, {41.7210579f, 180.149277f}}}
1347seg=10 {{{41.7210579f, 180.149277f}, {42.1640396f, 180.177887f}, {42.6070175f, 180.206497f}, {43.0499992f, 180.215454f}}}
1348seg=11 {{{43.0499992f, 180.215454f}, {43.5468216f, 180.22551f}, {44.043644f, 180.213379f}, {44.5404663f, 180.201248f}}}
1349seg=12 {{{44.5404663f, 180.201248f}, {44.7269783f, 180.196701f}, {44.9134903f, 180.192154f}, {45.0999985f, 180.188782f}}}
1350seg=13 {{{45.0999985f, 180.188782f}, {45.3586121f, 180.184097f}, {45.6172256f, 180.175217f}, {45.8758392f, 180.166336f}}}
1351seg=14 {{{45.8758392f, 180.166336f}, {46.30056f, 180.151764f}, {46.7252808f, 180.137192f}, {47.1500015f, 180.141159f}}}
1352seg=15 {{{47.1500015f, 180.141159f}, {47.5802765f, 180.145172f}, {48.0105553f, 180.167938f}, {48.440834f, 180.190704f}}}
1353seg=16 {{{48.440834f, 180.190704f}, {48.6938896f, 180.204086f}, {48.9469452f, 180.217468f}, {49.2000008f, 180.227036f}}}
1354seg=17 {{{49.2000008f, 180.227036f}, {49.4036903f, 180.234741f}, {49.6073761f, 180.244537f}, {49.8110657f, 180.254333f}}}
1355seg=18 {{{49.8110657f, 180.254333f}, {50.2907104f, 180.27739f}, {50.7703552f, 180.300446f}, {51.25f, 180.29631f}}}
1356seg=19 {{{51.25f, 180.29631f}, {51.5591507f, 180.29364f}, {51.8682976f, 180.268448f}, {52.1774483f, 180.24324f}}}
1357seg=20 {{{52.1774483f, 180.24324f}, {52.5516319f, 180.212738f}, {52.9258156f, 180.182236f}, {53.2999992f, 180.191696f}}}
1358seg=21 {{{53.2999992f, 180.191696f}, {53.6290703f, 180.200027f}, {53.9581413f, 180.247635f}, {54.2872086f, 180.295242f}}}
1359seg=22 {{{54.2872086f, 180.295242f}, {54.6414719f, 180.346497f}, {54.9957352f, 180.397751f}, {55.3499985f, 180.399994f}}}
1360seg=23 {{{55.3499985f, 180.399994f}, {55.7292671f, 180.402405f}, {56.1085358f, 180.354599f}, {56.4878044f, 180.306793f}}}
1361seg=24 {{{56.4878044f, 180.306793f}, {56.7918701f, 180.268463f}, {57.0959358f, 180.230133f}, {57.4000015f, 180.217682f}}}
1362seg=25 {{{57.4000015f, 180.217682f}, {57.8000603f, 180.201294f}, {58.2001228f, 180.210999f}, {58.6001854f, 180.220703f}}}
1363seg=26 {{{58.6001854f, 180.220703f}, {58.8834572f, 180.227585f}, {59.166729f, 180.234467f}, {59.4500008f, 180.232071f}}}
1364seg=27 {{{59.4500008f, 180.232071f}, {60.1333351f, 180.226303f}, {60.8166656f, 180.21814f}, {61.5f, 180.183044f}}}
1365seg=28 {{{61.5f, 180.183044f}, {61.8292809f, 180.166122f}, {62.1585579f, 180.135086f}, {62.4878387f, 180.10405f}}}
1366seg=29 {{{62.4878387f, 180.10405f}, {62.8418922f, 180.070663f}, {63.1959457f, 180.037277f}, {63.5499992f, 180.021454f}}}
1367seg=30 {{{63.5499992f, 180.021454f}, {64.2333298f, 179.990921f}, {64.9166641f, 179.981766f}, {65.5999985f, 179.999802f}}}
1368seg=31 {{{65.5999985f, 179.999802f}, {66.2833328f, 180.017853f}, {66.9666672f, 180.062988f}, {67.6500015f, 180.129684f}}}
1369seg=32 {{{67.6500015f, 180.129684f}, {67.9556503f, 180.159515f}, {68.2612991f, 180.207733f}, {68.5669479f, 180.255951f}}}
1370seg=33 {{{68.5669479f, 180.255951f}, {68.9446335f, 180.315521f}, {69.322319f, 180.375092f}, {69.6999969f, 180.399994f}}}
1371seg=34 {{{69.6999969f, 180.399994f}, {70.1841125f, 180.431915f}, {70.6682281f, 180.421127f}, {71.1523438f, 180.410339f}}}
1372seg=35 {{{71.1523438f, 180.410339f}, {71.3515625f, 180.405899f}, {71.5507813f, 180.401459f}, {71.75f, 180.399994f}}}
1373seg=36 {{{71.75f, 180.399994f}, {71.9187546f, 180.398788f}}}
1374seg=37 {{{71.9187546f, 180.398788f}, {72.5458374f, 180.394318f}, {73.1729202f, 180.389847f}, {73.8000031f, 180.369904f}}}
1375seg=38 {{{73.8000031f, 180.369904f}, {74.167778f, 180.358215f}, {74.535553f, 180.337616f}, {74.9033279f, 180.317017f}}}
1376seg=39 {{{74.9033279f, 180.317017f}, {75.2188797f, 180.299347f}, {75.5344391f, 180.281677f}, {75.8499985f, 180.269623f}}}
1377seg=40 {{{75.8499985f, 180.269623f}, {76.5333328f, 180.24353f}, {77.2166672f, 180.221283f}, {77.9000015f, 180.213348f}}}
1378seg=41 {{{77.9000015f, 180.213348f}, {78.1885834f, 180.209991f}, {78.4771652f, 180.215805f}, {78.7657471f, 180.221619f}}}
1379seg=42 {{{78.7657471f, 180.221619f}, {79.1604996f, 180.229553f}, {79.5552521f, 180.237503f}, {79.9499969f, 180.222f}}}
1380seg=43 {{{79.9499969f, 180.222f}, {80.2761536f, 180.209198f}, {80.6023102f, 180.173965f}, {80.9284668f, 180.138733f}}}
1381seg=44 {{{80.9284668f, 180.138733f}, {81.2856445f, 180.100159f}, {81.6428223f, 180.061569f}, {82, 180.05246f}}}
1382seg=45 {{{82, 180.05246f}, {82.4119263f, 180.041962f}, {82.8238525f, 180.063217f}, {83.2357788f, 180.084473f}}}
1383seg=46 {{{83.2357788f, 180.084473f}, {83.5071869f, 180.09848f}, {83.778595f, 180.112473f}, {84.0500031f, 180.117401f}}}
1384seg=47 {{{84.0500031f, 180.117401f}, {84.1819916f, 180.119797f}, {84.3139801f, 180.122665f}, {84.4459686f, 180.125534f}}}
1385seg=48 {{{84.4459686f, 180.125534f}, {84.9973068f, 180.137497f}, {85.5486526f, 180.149475f}, {86.0999985f, 180.126755f}}}
1386seg=49 {{{86.0999985f, 180.126755f}, {86.4434433f, 180.11261f}, {86.7868881f, 180.075027f}, {87.1303329f, 180.037445f}}}
1387seg=50 {{{87.1303329f, 180.037445f}, {87.4702225f, 180.000244f}, {87.810112f, 179.963043f}, {88.1500015f, 179.948563f}}}
1388seg=51 {{{88.1500015f, 179.948563f}, {88.711525f, 179.924652f}, {89.2730484f, 179.935165f}, {89.8345642f, 179.945679f}}}
1389seg=52 {{{89.8345642f, 179.945679f}, {89.9563751f, 179.947968f}, {90.078186f, 179.950256f}, {90.1999969f, 179.952194f}}}
1390seg=53 {{{90.1999969f, 179.952194f}, {90.286644f, 179.953568f}, {90.373291f, 179.954849f}, {90.459938f, 179.956131f}}}
1391seg=54 {{{90.459938f, 179.956131f}, {91.0566254f, 179.96492f}, {91.6533127f, 179.973709f}, {92.25f, 180.013504f}}}
1392seg=55 {{{92.25f, 180.013504f}, {92.6229324f, 180.038376f}, {92.9958649f, 180.082474f}, {93.3687973f, 180.126587f}}}
1393seg=56 {{{93.3687973f, 180.126587f}, {93.6791992f, 180.1633f}, {93.9896011f, 180.200012f}, {94.3000031f, 180.225632f}}}
1394seg=57 {{{94.3000031f, 180.225632f}, {94.9833298f, 180.282028f}, {95.6666641f, 180.32988f}, {96.3499985f, 180.351883f}}}
1395seg=58 {{{96.3499985f, 180.351883f}, {96.426857f, 180.354355f}, {96.5037155f, 180.356964f}, {96.580574f, 180.359573f}}}
1396seg=59 {{{96.580574f, 180.359573f}, {97.1870499f, 180.380096f}, {97.7935257f, 180.400635f}, {98.4000015f, 180.35762f}}}
1397seg=60 {{{98.4000015f, 180.35762f}, {98.9169769f, 180.320953f}, {99.4339523f, 180.232758f}, {99.9509201f, 180.144562f}}}
1398seg=61 {{{99.9509201f, 180.144562f}, {100.117279f, 180.11618f}, {100.283638f, 180.087799f}, {100.449997f, 180.061127f}}}
1399seg=62 {{{100.449997f, 180.061127f}, {100.71254f, 180.019043f}, {100.975082f, 179.965027f}, {101.237625f, 179.911011f}}}
1400seg=63 {{{101.237625f, 179.911011f}, {101.658417f, 179.824432f}, {102.079208f, 179.737854f}, {102.5f, 179.700394f}}}
1401seg=64 {{{102.5f, 179.700394f}, {102.980095f, 179.657639f}, {103.46019f, 179.670685f}, {103.940285f, 179.683731f}}}
1402seg=65 {{{103.940285f, 179.683731f}, {104.143524f, 179.689255f}, {104.346764f, 179.694778f}, {104.550003f, 179.69606f}}}
1403seg=66 {{{104.550003f, 179.69606f}, {105.23333f, 179.700394f}, {105.916664f, 179.713379f}, {106.599998f, 179.726364f}}}
1404seg=67 {{{106.599998f, 179.726364f}, {106.927223f, 179.73259f}, {107.254448f, 179.740982f}, {107.581673f, 179.749374f}}}
1405seg=68 {{{107.581673f, 179.749374f}, {107.937782f, 179.758514f}, {108.293892f, 179.767654f}, {108.650002f, 179.773987f}}}
1406seg=69 {{{108.650002f, 179.773987f}, {108.8871f, 179.778198f}, {109.124199f, 179.771011f}, {109.36129f, 179.763824f}}}
1407seg=70 {{{109.36129f, 179.763824f}, {109.807526f, 179.75029f}, {110.253761f, 179.736755f}, {110.699997f, 179.799255f}}}
1408seg=71 {{{110.699997f, 179.799255f}, {111.044617f, 179.847534f}, {111.389236f, 179.961273f}, {111.733856f, 180.075012f}}}
1409seg=72 {{{111.733856f, 180.075012f}, {112.072571f, 180.186813f}, {112.411285f, 180.298615f}, {112.75f, 180.348251f}}}
1410seg=73 {{{112.75f, 180.348251f}, {113.232018f, 180.418884f}, {113.714035f, 180.411331f}, {114.196053f, 180.403778f}}}
1411seg=74 {{{114.196053f, 180.403778f}, {114.397369f, 180.40062f}, {114.598686f, 180.397461f}, {114.800003f, 180.399994f}}}
1412seg=75 {{{114.800003f, 180.399994f}, {115.255554f, 180.405746f}, {115.711113f, 180.403839f}, {116.166672f, 180.401917f}}}
1413seg=76 {{{116.166672f, 180.401917f}, {116.394447f, 180.400955f}, {116.622223f, 180.399994f}, {116.849998f, 180.399994f}}}
1414seg=77 {{{116.849998f, 180.399994f}, {32.7999992f, 180.399994f}}}
1415seg=78 {{{133.25f, 180.399994f}, {133.477783f, 180.399994f}, {133.705566f, 180.408691f}, {133.93335f, 180.417389f}}}
1416seg=79 {{{133.93335f, 180.417389f}, {134.388901f, 180.434769f}, {134.844452f, 180.452164f}, {135.300003f, 180.399994f}}}
1417seg=80 {{{135.300003f, 180.399994f}, {135.670105f, 180.35762f}, {136.040207f, 180.255554f}, {136.410309f, 180.153488f}}}
1418seg=81 {{{136.410309f, 180.153488f}, {136.723541f, 180.067108f}, {137.036774f, 179.980728f}, {137.350006f, 179.930542f}}}
1419seg=82 {{{137.350006f, 179.930542f}, {138.03334f, 179.821045f}, {138.71666f, 179.775558f}, {139.399994f, 179.742981f}}}
1420seg=83 {{{139.399994f, 179.742981f}, {139.866074f, 179.720749f}, {140.332153f, 179.725769f}, {140.798233f, 179.730789f}}}
1421seg=84 {{{140.798233f, 179.730789f}, {141.015488f, 179.733124f}, {141.232742f, 179.735458f}, {141.449997f, 179.735031f}}}
1422seg=85 {{{141.449997f, 179.735031f}, {141.725189f, 179.734497f}, {142.000381f, 179.735214f}, {142.275574f, 179.735931f}}}
1423seg=86 {{{142.275574f, 179.735931f}, {142.683716f, 179.736984f}, {143.091858f, 179.738052f}, {143.5f, 179.735031f}}}
1424seg=87 {{{143.5f, 179.735031f}, {143.993256f, 179.731384f}, {144.486511f, 179.722855f}, {144.979767f, 179.714325f}}}
1425seg=88 {{{144.979767f, 179.714325f}, {145.169846f, 179.711029f}, {145.359924f, 179.707733f}, {145.550003f, 179.704727f}}}
1426seg=89 {{{145.550003f, 179.704727f}, {145.805878f, 179.700668f}, {146.061752f, 179.695709f}, {146.317627f, 179.69075f}}}
1427seg=90 {{{146.317627f, 179.69075f}, {146.745087f, 179.682449f}, {147.172546f, 179.674149f}, {147.600006f, 179.67009f}}}
1428seg=91 {{{147.600006f, 179.67009f}, {148.100571f, 179.665329f}, {148.60112f, 179.665543f}, {149.101685f, 179.665771f}}}
1429seg=92 {{{149.101685f, 179.665771f}, {149.284454f, 179.665848f}, {149.467224f, 179.665924f}, {149.649994f, 179.665756f}}}
1430seg=93 {{{149.649994f, 179.665756f}, {149.990616f, 179.665466f}, {150.331238f, 179.665787f}, {150.67186f, 179.666107f}}}
1431seg=94 {{{150.67186f, 179.666107f}, {151.014572f, 179.666428f}, {151.357285f, 179.666763f}, {151.699997f, 179.666458f}}}
1432seg=95 {{{151.699997f, 179.666458f}, {151.997147f, 179.666199f}, {152.294296f, 179.665253f}, {152.591446f, 179.664307f}}}
1433seg=96 {{{152.591446f, 179.664307f}, {152.977631f, 179.663086f}, {153.363815f, 179.661865f}, {153.75f, 179.66214f}}}
1434seg=97 {{{153.75f, 179.66214f}, {154.117691f, 179.662399f}, {154.485382f, 179.664139f}, {154.853073f, 179.665878f}}}
1435seg=98 {{{154.853073f, 179.665878f}, {155.168716f, 179.667358f}, {155.48436f, 179.668839f}, {155.800003f, 179.669388f}}}
1436seg=99 {{{155.800003f, 179.669388f}, {156.483337f, 179.670593f}, {157.166672f, 179.669983f}, {157.850006f, 179.669388f}}}
1437seg=100 {{{157.850006f, 179.669388f}, {158.181168f, 179.669098f}, {158.512314f, 179.66835f}, {158.843475f, 179.667603f}}}
1438seg=101 {{{158.843475f, 179.667603f}, {159.195648f, 179.666809f}, {159.547821f, 179.666f}, {159.899994f, 179.665756f}}}
1439seg=102 {{{159.899994f, 179.665756f}, {160.065567f, 179.665634f}, {160.23114f, 179.665405f}, {160.396713f, 179.665176f}}}
1440seg=103 {{{160.396713f, 179.665176f}, {160.914474f, 179.664459f}, {161.432236f, 179.663727f}, {161.949997f, 179.666458f}}}
1441seg=104 {{{161.949997f, 179.666458f}, {162.319626f, 179.668411f}, {162.689255f, 179.672928f}, {163.058884f, 179.677444f}}}
1442seg=105 {{{163.058884f, 179.677444f}, {163.372589f, 179.68129f}, {163.686295f, 179.685135f}, {164, 179.687408f}}}
1443seg=106 {{{164, 179.687408f}, {164.578613f, 179.691574f}, {165.157227f, 179.693329f}, {165.73584f, 179.695084f}}}
1444seg=107 {{{165.73584f, 179.695084f}, {166.050003f, 179.69606f}}}
1445seg=108 {{{166.050003f, 179.69606f}, {166.239731f, 179.696655f}, {166.429459f, 179.69754f}, {166.619186f, 179.69841f}}}
1446seg=109 {{{166.619186f, 179.69841f}, {167.112793f, 179.700699f}, {167.6064f, 179.702988f}, {168.100006f, 179.700394f}}}
1447seg=110 {{{168.100006f, 179.700394f}, {168.484314f, 179.698364f}, {168.868622f, 179.692413f}, {169.25293f, 179.686462f}}}
1448seg=111 {{{169.25293f, 179.686462f}, {169.551956f, 179.681839f}, {169.850967f, 179.6772f}, {170.149994f, 179.674423f}}}
1449seg=112 {{{170.149994f, 179.674423f}, {170.833328f, 179.668045f}, {171.516663f, 179.663452f}, {172.199997f, 179.66214f}}}
1450seg=113 {{{172.199997f, 179.66214f}, {172.378799f, 179.661789f}, {172.557602f, 179.660751f}, {172.736404f, 179.659714f}}}
1451seg=114 {{{172.736404f, 179.659714f}, {173.240936f, 179.656784f}, {173.745468f, 179.653854f}, {174.25f, 179.666458f}}}
1452seg=115 {{{174.25f, 179.666458f}, {174.405182f, 179.670334f}, {174.560364f, 179.672485f}, {174.715546f, 179.674637f}}}
1453seg=116 {{{174.715546f, 179.674637f}, {175.243698f, 179.681992f}, {175.771851f, 179.689346f}, {176.300003f, 179.764633f}}}
1454seg=117 {{{176.300003f, 179.764633f}, {176.640213f, 179.813126f}, {176.980423f, 179.910141f}, {177.320633f, 180.007156f}}}
1455seg=118 {{{177.320633f, 180.007156f}, {177.663757f, 180.104996f}, {178.006882f, 180.202835f}, {178.350006f, 180.2509f}}}
1456seg=119 {{{178.350006f, 180.2509f}, {178.822037f, 180.317017f}, {179.294052f, 180.321915f}, {179.766083f, 180.326813f}}}
1457seg=120 {{{179.766083f, 180.326813f}, {179.977386f, 180.32901f}, {180.18869f, 180.331207f}, {180.399994f, 180.338898f}}}
1458seg=121 {{{180.399994f, 180.338898f}, {180.547852f, 180.344284f}}}
1459seg=122 {{{180.547852f, 180.344284f}, {181.1819f, 180.367416f}, {181.815948f, 180.390549f}, {182.449997f, 180.399994f}}}
1460seg=123 {{{182.449997f, 180.399994f}, {182.905548f, 180.406784f}, {183.361099f, 180.404526f}, {183.81665f, 180.402252f}}}
1461seg=124 {{{183.81665f, 180.402252f}, {184.044434f, 180.401123f}, {184.272217f, 180.399994f}, {184.5f, 180.399994f}}}
1462seg=125 {{{184.5f, 180.399994f}, {133.25f, 180.399994f}}}
1463seg=126 {{{186.550003f, 180.399994f}, {186.891663f, 180.398926f}, {187.233337f, 180.396271f}, {187.575012f, 180.393616f}}}
1464seg=127 {{{187.575012f, 180.393616f}, {187.916672f, 180.390945f}, {188.258331f, 180.388275f}, {188.600006f, 180.387222f}}}
1465seg=128 {{{188.600006f, 180.387222f}, {189.28334f, 180.385086f}, {189.96666f, 180.385086f}, {190.649994f, 180.387222f}}}
1466seg=129 {{{190.649994f, 180.387222f}, {190.991669f, 180.388275f}, {191.333328f, 180.390945f}, {191.674988f, 180.393616f}}}
1467seg=130 {{{191.674988f, 180.393616f}, {192.016663f, 180.396271f}, {192.358337f, 180.398926f}, {192.699997f, 180.399994f}}}
1468seg=131 {{{192.699997f, 180.399994f}, {186.550003f, 180.399994f}}}
1469op union
1470seg=132 {{{32.7999992f, 180.399994f}, {33.0277786f, 180.399994f}, {33.255558f, 180.392334f}, {33.4833336f, 180.384674f}}}
1471seg=133 {{{33.4833336f, 180.384674f}, {33.9388885f, 180.369339f}, {34.3944435f, 180.354004f}, {34.8499985f, 180.399994f}}}
1472seg=134 {{{34.8499985f, 180.399994f}, {35.1892509f, 180.434235f}, {35.5285034f, 180.520218f}, {35.8677559f, 180.606216f}}}
1473seg=135 {{{35.8677559f, 180.606216f}, {36.2118378f, 180.693436f}, {36.5559196f, 180.780655f}, {36.9000015f, 180.813873f}}}
1474seg=136 {{{36.9000015f, 180.813873f}, {37.4102402f, 180.863144f}, {37.9204788f, 180.839905f}, {38.4307175f, 180.816666f}}}
1475seg=137 {{{38.4307175f, 180.816666f}, {38.6038094f, 180.808777f}, {38.7769051f, 180.800903f}, {38.9500008f, 180.795853f}}}
1476seg=138 {{{38.9500008f, 180.795853f}, {39.4294357f, 180.781845f}, {39.9088669f, 180.754776f}, {40.3883018f, 180.727707f}}}
1477seg=139 {{{40.3883018f, 180.727707f}, {40.5922012f, 180.716187f}, {40.7961006f, 180.704681f}, {41, 180.694168f}}}
1478seg=140 {{{41, 180.694168f}, {41.2403526f, 180.681778f}, {41.4807053f, 180.666245f}, {41.7210579f, 180.650711f}}}
1479seg=141 {{{41.7210579f, 180.650711f}, {42.1640396f, 180.622101f}, {42.6070175f, 180.593491f}, {43.0499992f, 180.584534f}}}
1480seg=142 {{{43.0499992f, 180.584534f}, {43.5468216f, 180.574478f}, {44.043644f, 180.586609f}, {44.5404663f, 180.59874f}}}
1481seg=143 {{{44.5404663f, 180.59874f}, {44.7269783f, 180.603287f}, {44.9134903f, 180.607834f}, {45.0999985f, 180.611206f}}}
1482seg=144 {{{45.0999985f, 180.611206f}, {45.3586121f, 180.615891f}, {45.6172256f, 180.624771f}, {45.8758392f, 180.633652f}}}
1483seg=145 {{{45.8758392f, 180.633652f}, {46.30056f, 180.648224f}, {46.7252808f, 180.662796f}, {47.1500015f, 180.658829f}}}
1484seg=146 {{{47.1500015f, 180.658829f}, {47.5802765f, 180.654816f}, {48.0105553f, 180.63205f}, {48.440834f, 180.609283f}}}
1485seg=147 {{{48.440834f, 180.609283f}, {48.6938896f, 180.595901f}, {48.9469452f, 180.58252f}, {49.2000008f, 180.572952f}}}
1486seg=148 {{{49.2000008f, 180.572952f}, {49.4036903f, 180.565247f}, {49.6073761f, 180.55545f}, {49.8110657f, 180.545654f}}}
1487seg=149 {{{49.8110657f, 180.545654f}, {50.2907104f, 180.522598f}, {50.7703552f, 180.499542f}, {51.25f, 180.503677f}}}
1488seg=150 {{{51.25f, 180.503677f}, {51.5591507f, 180.506348f}, {51.8682976f, 180.53154f}, {52.1774483f, 180.556747f}}}
1489seg=151 {{{52.1774483f, 180.556747f}, {52.5516319f, 180.58725f}, {52.9258156f, 180.617752f}, {53.2999992f, 180.608292f}}}
1490seg=152 {{{53.2999992f, 180.608292f}, {53.6290703f, 180.59996f}, {53.9581413f, 180.552353f}, {54.2872086f, 180.504745f}}}
1491seg=153 {{{54.2872086f, 180.504745f}, {54.6414719f, 180.453491f}, {54.9957352f, 180.402237f}, {55.3499985f, 180.399994f}}}
1492seg=154 {{{55.3499985f, 180.399994f}, {55.7292671f, 180.397583f}, {56.1085358f, 180.445389f}, {56.4878044f, 180.493195f}}}
1493seg=155 {{{56.4878044f, 180.493195f}, {56.7918701f, 180.531525f}, {57.0959358f, 180.569855f}, {57.4000015f, 180.582306f}}}
1494seg=156 {{{57.4000015f, 180.582306f}, {57.8000603f, 180.598694f}, {58.2001228f, 180.588989f}, {58.6001854f, 180.579285f}}}
1495seg=157 {{{58.6001854f, 180.579285f}, {58.8834572f, 180.572403f}, {59.166729f, 180.565521f}, {59.4500008f, 180.567917f}}}
1496seg=158 {{{59.4500008f, 180.567917f}, {60.1333351f, 180.573685f}, {60.8166656f, 180.581848f}, {61.5f, 180.616943f}}}
1497seg=159 {{{61.5f, 180.616943f}, {61.8292809f, 180.633865f}, {62.1585579f, 180.664902f}, {62.4878387f, 180.695938f}}}
1498seg=160 {{{62.4878387f, 180.695938f}, {62.8418922f, 180.729324f}, {63.1959457f, 180.762711f}, {63.5499992f, 180.778534f}}}
1499seg=161 {{{63.5499992f, 180.778534f}, {64.2333298f, 180.809067f}, {64.9166641f, 180.818222f}, {65.5999985f, 180.800186f}}}
1500seg=162 {{{65.5999985f, 180.800186f}, {66.2833328f, 180.782135f}, {66.9666672f, 180.737f}, {67.6500015f, 180.670303f}}}
1501seg=163 {{{67.6500015f, 180.670303f}, {67.9556503f, 180.640472f}, {68.2612991f, 180.592255f}, {68.5669479f, 180.544037f}}}
1502seg=164 {{{68.5669479f, 180.544037f}, {68.9446335f, 180.484467f}, {69.322319f, 180.424896f}, {69.6999969f, 180.399994f}}}
1503seg=165 {{{69.6999969f, 180.399994f}, {70.1841125f, 180.368073f}, {70.6682281f, 180.37886f}, {71.1523438f, 180.389648f}}}
1504seg=166 {{{71.1523438f, 180.389648f}, {71.3515625f, 180.394089f}, {71.5507813f, 180.398529f}, {71.75f, 180.399994f}}}
1505seg=167 {{{71.75f, 180.399994f}, {71.9187546f, 180.401199f}}}
1506seg=168 {{{71.9187546f, 180.401199f}, {72.5458374f, 180.40567f}, {73.1729202f, 180.410141f}, {73.8000031f, 180.430084f}}}
1507seg=169 {{{73.8000031f, 180.430084f}, {74.167778f, 180.441772f}, {74.535553f, 180.462372f}, {74.9033279f, 180.482971f}}}
1508seg=170 {{{74.9033279f, 180.482971f}, {75.2188797f, 180.500641f}, {75.5344391f, 180.518311f}, {75.8499985f, 180.530365f}}}
1509seg=171 {{{75.8499985f, 180.530365f}, {76.5333328f, 180.556458f}, {77.2166672f, 180.578705f}, {77.9000015f, 180.586639f}}}
1510seg=172 {{{77.9000015f, 180.586639f}, {78.1885834f, 180.589996f}, {78.4771652f, 180.584183f}, {78.7657471f, 180.578369f}}}
1511seg=173 {{{78.7657471f, 180.578369f}, {79.1604996f, 180.570435f}, {79.5552521f, 180.562485f}, {79.9499969f, 180.577988f}}}
1512seg=174 {{{79.9499969f, 180.577988f}, {80.2761536f, 180.59079f}, {80.6023102f, 180.626022f}, {80.9284668f, 180.661255f}}}
1513seg=175 {{{80.9284668f, 180.661255f}, {81.2856445f, 180.699829f}, {81.6428223f, 180.738419f}, {82, 180.747528f}}}
1514seg=176 {{{82, 180.747528f}, {82.4119263f, 180.758026f}, {82.8238525f, 180.736771f}, {83.2357788f, 180.715515f}}}
1515seg=177 {{{83.2357788f, 180.715515f}, {83.5071869f, 180.701508f}, {83.778595f, 180.687515f}, {84.0500031f, 180.682587f}}}
1516seg=178 {{{84.0500031f, 180.682587f}, {84.1819916f, 180.680191f}, {84.3139801f, 180.677322f}, {84.4459686f, 180.674454f}}}
1517seg=179 {{{84.4459686f, 180.674454f}, {84.9973068f, 180.662491f}, {85.5486526f, 180.650513f}, {86.0999985f, 180.673233f}}}
1518seg=180 {{{86.0999985f, 180.673233f}, {86.4434433f, 180.687378f}, {86.7868881f, 180.72496f}, {87.1303329f, 180.762543f}}}
1519seg=181 {{{87.1303329f, 180.762543f}, {87.4702225f, 180.799744f}, {87.810112f, 180.836945f}, {88.1500015f, 180.851425f}}}
1520seg=182 {{{88.1500015f, 180.851425f}, {88.711525f, 180.875336f}, {89.2730484f, 180.864822f}, {89.8345642f, 180.854309f}}}
1521seg=183 {{{89.8345642f, 180.854309f}, {89.9563751f, 180.85202f}, {90.078186f, 180.849731f}, {90.1999969f, 180.847794f}}}
1522seg=184 {{{90.1999969f, 180.847794f}, {90.286644f, 180.84642f}, {90.373291f, 180.845139f}, {90.459938f, 180.843857f}}}
1523seg=185 {{{90.459938f, 180.843857f}, {91.0566254f, 180.835068f}, {91.6533127f, 180.826279f}, {92.25f, 180.786484f}}}
1524seg=186 {{{92.25f, 180.786484f}, {92.6229324f, 180.761612f}, {92.9958649f, 180.717514f}, {93.3687973f, 180.673401f}}}
1525seg=187 {{{93.3687973f, 180.673401f}, {93.6791992f, 180.636688f}, {93.9896011f, 180.599976f}, {94.3000031f, 180.574356f}}}
1526seg=188 {{{94.3000031f, 180.574356f}, {94.9833298f, 180.51796f}, {95.6666641f, 180.470108f}, {96.3499985f, 180.448105f}}}
1527seg=189 {{{96.3499985f, 180.448105f}, {96.426857f, 180.445633f}, {96.5037155f, 180.443024f}, {96.580574f, 180.440414f}}}
1528seg=190 {{{96.580574f, 180.440414f}, {97.1870499f, 180.419891f}, {97.7935257f, 180.399353f}, {98.4000015f, 180.442368f}}}
1529seg=191 {{{98.4000015f, 180.442368f}, {98.9169769f, 180.479034f}, {99.4339523f, 180.56723f}, {99.9509201f, 180.655426f}}}
1530seg=192 {{{99.9509201f, 180.655426f}, {100.117279f, 180.683807f}, {100.283638f, 180.712189f}, {100.449997f, 180.738861f}}}
1531seg=193 {{{100.449997f, 180.738861f}, {100.71254f, 180.780945f}, {100.975082f, 180.834961f}, {101.237625f, 180.888977f}}}
1532seg=194 {{{101.237625f, 180.888977f}, {101.658417f, 180.975555f}, {102.079208f, 181.062134f}, {102.5f, 181.099594f}}}
1533seg=195 {{{102.5f, 181.099594f}, {102.980095f, 181.142349f}, {103.46019f, 181.129303f}, {103.940285f, 181.116257f}}}
1534seg=196 {{{103.940285f, 181.116257f}, {104.143524f, 181.110733f}, {104.346764f, 181.105209f}, {104.550003f, 181.103928f}}}
1535seg=197 {{{104.550003f, 181.103928f}, {105.23333f, 181.099594f}, {105.916664f, 181.086609f}, {106.599998f, 181.073624f}}}
1536seg=198 {{{106.599998f, 181.073624f}, {106.927223f, 181.067398f}, {107.254448f, 181.059006f}, {107.581673f, 181.050613f}}}
1537seg=199 {{{107.581673f, 181.050613f}, {107.937782f, 181.041473f}, {108.293892f, 181.032333f}, {108.650002f, 181.026001f}}}
1538seg=200 {{{108.650002f, 181.026001f}, {108.8871f, 181.02179f}, {109.124199f, 181.028976f}, {109.36129f, 181.036163f}}}
1539seg=201 {{{109.36129f, 181.036163f}, {109.807526f, 181.049698f}, {110.253761f, 181.063232f}, {110.699997f, 181.000732f}}}
1540seg=202 {{{110.699997f, 181.000732f}, {111.044617f, 180.952454f}, {111.389236f, 180.838715f}, {111.733856f, 180.724976f}}}
1541seg=203 {{{111.733856f, 180.724976f}, {112.072571f, 180.613174f}, {112.411285f, 180.501373f}, {112.75f, 180.451736f}}}
1542seg=204 {{{112.75f, 180.451736f}, {113.232018f, 180.381104f}, {113.714035f, 180.388657f}, {114.196053f, 180.39621f}}}
1543seg=205 {{{114.196053f, 180.39621f}, {114.397369f, 180.399368f}, {114.598686f, 180.402527f}, {114.800003f, 180.399994f}}}
1544seg=206 {{{114.800003f, 180.399994f}, {115.255554f, 180.394241f}, {115.711113f, 180.396149f}, {116.166672f, 180.398071f}}}
1545seg=207 {{{116.166672f, 180.398071f}, {116.394447f, 180.399033f}, {116.622223f, 180.399994f}, {116.849998f, 180.399994f}}}
1546seg=208 {{{116.849998f, 180.399994f}, {32.7999992f, 180.399994f}}}
1547seg=209 {{{133.25f, 180.399994f}, {133.477783f, 180.399994f}, {133.705566f, 180.391296f}, {133.93335f, 180.382599f}}}
1548seg=210 {{{133.93335f, 180.382599f}, {134.388901f, 180.365219f}, {134.844452f, 180.347824f}, {135.300003f, 180.399994f}}}
1549seg=211 {{{135.300003f, 180.399994f}, {135.670105f, 180.442368f}, {136.040207f, 180.544434f}, {136.410309f, 180.6465f}}}
1550seg=212 {{{136.410309f, 180.6465f}, {136.723541f, 180.73288f}, {137.036774f, 180.81926f}, {137.350006f, 180.869446f}}}
1551seg=213 {{{137.350006f, 180.869446f}, {138.03334f, 180.978943f}, {138.71666f, 181.024429f}, {139.399994f, 181.057007f}}}
1552seg=214 {{{139.399994f, 181.057007f}, {139.866074f, 181.079239f}, {140.332153f, 181.074219f}, {140.798233f, 181.069199f}}}
1553seg=215 {{{140.798233f, 181.069199f}, {141.015488f, 181.066864f}, {141.232742f, 181.064529f}, {141.449997f, 181.064957f}}}
1554seg=216 {{{141.449997f, 181.064957f}, {141.725189f, 181.065491f}, {142.000381f, 181.064774f}, {142.275574f, 181.064056f}}}
1555seg=217 {{{142.275574f, 181.064056f}, {142.683716f, 181.063004f}, {143.091858f, 181.061935f}, {143.5f, 181.064957f}}}
1556seg=218 {{{143.5f, 181.064957f}, {143.993256f, 181.068604f}, {144.486511f, 181.077133f}, {144.979767f, 181.085663f}}}
1557seg=219 {{{144.979767f, 181.085663f}, {145.169846f, 181.088959f}, {145.359924f, 181.092255f}, {145.550003f, 181.095261f}}}
1558seg=220 {{{145.550003f, 181.095261f}, {145.805878f, 181.099319f}, {146.061752f, 181.104279f}, {146.317627f, 181.109238f}}}
1559seg=221 {{{146.317627f, 181.109238f}, {146.745087f, 181.117538f}, {147.172546f, 181.125839f}, {147.600006f, 181.129898f}}}
1560seg=222 {{{147.600006f, 181.129898f}, {148.100571f, 181.134659f}, {148.60112f, 181.134445f}, {149.101685f, 181.134216f}}}
1561seg=223 {{{149.101685f, 181.134216f}, {149.284454f, 181.13414f}, {149.467224f, 181.134064f}, {149.649994f, 181.134232f}}}
1562seg=224 {{{149.649994f, 181.134232f}, {149.990616f, 181.134521f}, {150.331238f, 181.134201f}, {150.67186f, 181.133881f}}}
1563seg=225 {{{150.67186f, 181.133881f}, {151.014572f, 181.13356f}, {151.357285f, 181.133224f}, {151.699997f, 181.13353f}}}
1564seg=226 {{{151.699997f, 181.13353f}, {151.997147f, 181.133789f}, {152.294296f, 181.134735f}, {152.591446f, 181.135681f}}}
1565seg=227 {{{152.591446f, 181.135681f}, {152.977631f, 181.136902f}, {153.363815f, 181.138123f}, {153.75f, 181.137848f}}}
1566seg=228 {{{153.75f, 181.137848f}, {154.117691f, 181.137589f}, {154.485382f, 181.135849f}, {154.853073f, 181.134109f}}}
1567seg=229 {{{154.853073f, 181.134109f}, {155.168716f, 181.132629f}, {155.48436f, 181.131149f}, {155.800003f, 181.1306f}}}
1568seg=230 {{{155.800003f, 181.1306f}, {156.199615f, 181.129898f}, {156.599228f, 181.129807f}, {156.99884f, 181.129974f}}}
1569seg=231 {{{156.99884f, 181.129974f}, {157.282562f, 181.130096f}, {157.566284f, 181.130356f}, {157.850006f, 181.1306f}}}
1570seg=232 {{{157.850006f, 181.1306f}, {158.181168f, 181.13089f}, {158.512314f, 181.131638f}, {158.843475f, 181.132385f}}}
1571seg=233 {{{158.843475f, 181.132385f}, {159.195648f, 181.133179f}, {159.547821f, 181.133987f}, {159.899994f, 181.134232f}}}
1572seg=234 {{{159.899994f, 181.134232f}, {160.065567f, 181.134354f}, {160.23114f, 181.134583f}, {160.396713f, 181.134811f}}}
1573seg=235 {{{160.396713f, 181.134811f}, {160.914474f, 181.135529f}, {161.432236f, 181.136261f}, {161.949997f, 181.13353f}}}
1574seg=236 {{{161.949997f, 181.13353f}, {162.319626f, 181.131577f}, {162.689255f, 181.12706f}, {163.058884f, 181.122543f}}}
1575seg=237 {{{163.058884f, 181.122543f}, {163.372589f, 181.118698f}, {163.686295f, 181.114853f}, {164, 181.112579f}}}
1576seg=238 {{{164, 181.112579f}, {164.627563f, 181.108047f}, {165.255127f, 181.106369f}, {165.88269f, 181.104446f}}}
1577seg=239 {{{165.88269f, 181.104446f}, {166.050003f, 181.103928f}}}
1578seg=240 {{{166.050003f, 181.103928f}, {166.239731f, 181.103333f}, {166.429459f, 181.102448f}, {166.619186f, 181.101578f}}}
1579seg=241 {{{166.619186f, 181.101578f}, {167.112793f, 181.099289f}, {167.6064f, 181.097f}, {168.100006f, 181.099594f}}}
1580seg=242 {{{168.100006f, 181.099594f}, {168.484314f, 181.101624f}, {168.868622f, 181.107574f}, {169.25293f, 181.113525f}}}
1581seg=243 {{{169.25293f, 181.113525f}, {169.551956f, 181.118149f}, {169.850967f, 181.122787f}, {170.149994f, 181.125565f}}}
1582seg=244 {{{170.149994f, 181.125565f}, {170.833328f, 181.131943f}, {171.516663f, 181.136536f}, {172.199997f, 181.137848f}}}
1583seg=245 {{{172.199997f, 181.137848f}, {172.378799f, 181.138199f}, {172.557602f, 181.139236f}, {172.736404f, 181.140274f}}}
1584seg=246 {{{172.736404f, 181.140274f}, {173.240936f, 181.143204f}, {173.745468f, 181.146133f}, {174.25f, 181.13353f}}}
1585seg=247 {{{174.25f, 181.13353f}, {174.405182f, 181.129654f}, {174.560364f, 181.127502f}, {174.715546f, 181.125351f}}}
1586seg=248 {{{174.715546f, 181.125351f}, {175.243698f, 181.117996f}, {175.771851f, 181.110641f}, {176.300003f, 181.035355f}}}
1587seg=249 {{{176.300003f, 181.035355f}, {176.640213f, 180.986862f}, {176.980423f, 180.889847f}, {177.320633f, 180.792831f}}}
1588seg=250 {{{177.320633f, 180.792831f}, {177.663757f, 180.694992f}, {178.006882f, 180.597153f}, {178.350006f, 180.549088f}}}
1589seg=251 {{{178.350006f, 180.549088f}, {178.822037f, 180.482971f}, {179.294052f, 180.478073f}, {179.766083f, 180.473175f}}}
1590seg=252 {{{179.766083f, 180.473175f}, {179.977386f, 180.470978f}, {180.18869f, 180.468781f}, {180.399994f, 180.46109f}}}
1591seg=253 {{{180.399994f, 180.46109f}, {180.547852f, 180.455704f}}}
1592seg=254 {{{180.547852f, 180.455704f}, {181.1819f, 180.432571f}, {181.815948f, 180.409439f}, {182.449997f, 180.399994f}}}
1593seg=255 {{{182.449997f, 180.399994f}, {182.905548f, 180.393204f}, {183.361099f, 180.395462f}, {183.81665f, 180.397736f}}}
1594seg=256 {{{183.81665f, 180.397736f}, {184.044434f, 180.398865f}, {184.272217f, 180.399994f}, {184.5f, 180.399994f}}}
1595seg=257 {{{184.5f, 180.399994f}, {133.25f, 180.399994f}}}
1596seg=258 {{{186.550003f, 180.399994f}, {186.891663f, 180.401062f}, {187.233337f, 180.403717f}, {187.575012f, 180.406372f}}}
1597seg=259 {{{187.575012f, 180.406372f}, {187.916672f, 180.409042f}, {188.258331f, 180.411713f}, {188.600006f, 180.412766f}}}
1598seg=260 {{{188.600006f, 180.412766f}, {189.28334f, 180.414902f}, {189.96666f, 180.414902f}, {190.649994f, 180.412766f}}}
1599seg=261 {{{190.649994f, 180.412766f}, {190.991669f, 180.411713f}, {191.333328f, 180.409042f}, {191.674988f, 180.406372f}}}
1600seg=262 {{{191.674988f, 180.406372f}, {192.016663f, 180.403717f}, {192.358337f, 180.401062f}, {192.699997f, 180.399994f}}}
1601seg=263 {{{192.699997f, 180.399994f}, {186.550003f, 180.399994f}}}
1602</div>
1603
1604<div id="cubics138">
1605seg=1 {{{0, 5}, {1.47503459f, 5.49167824f}, {1.74133193f, 4.29112434f}, {1.98751152f, 3.18126726f}}}
1606seg=2 {{{1.98751152f, 3.18126726f}, {2.24202442f, 2.03384113f}, {2.47503471f, 0.983356416f}, {4, 2}}}
1607seg=3 {{{4, 2}, {0, 5}}}
1608op diff
1609seg=4 {{{0, 1}, {1.01669919f, 2.52504873f}, {2.29181767f, 2.2411623f}, {3.43125343f, 1.98748374f}}}
1610seg=5 {{{3.43125343f, 1.98748374f}, {4.53325891f, 1.74213839f}, {5.50834942f, 1.52504873f}, {6, 3}}}
1611seg=6 {{{6, 3}, {0, 1}}}
1612debugShowCubicIntersection wtTs[0]=1 {{{0,1}, {1.01669919,2.52504873}, {2.29181767,2.2411623}, {3.43125343,1.98748374}}} {{3.43125343,1.98748374}} wnTs[0]=0 {{{3.43125343,1.98748374}, {4.53325891,1.74213839}, {5.50834942,1.52504873}, {6,3}}}
1613debugShowCubicLineIntersection wtTs[0]=0 {{{0,1}, {1.01669919,2.52504873}, {2.29181767,2.2411623}, {3.43125343,1.98748374}}} {{0,1}} wtTs[1]=0.918003405 {{3.14844441,2.04948139}} wnTs[0]=1 {{{6,3}, {0,1}}} wnTs[1]=0.475259271
1614SkOpSegment::addT insert t=0.918003405 segID=4 spanID=13
1615SkOpSegment::addT insert t=0.475259271 segID=6 spanID=14
1616debugShowCubicLineIntersection wtTs[0]=1 {{{3.43125343,1.98748374}, {4.53325891,1.74213839}, {5.50834942,1.52504873}, {6,3}}} {{6,3}} wnTs[0]=0 {{{6,3}, {0,1}}}
1617debugShowCubicIntersection wtTs[0]=0.667611207 {{{0,1}, {1.01669919,2.52504873}, {2.29181767,2.2411623}, {3.43125343,1.98748374}}} {{2.26454735,2.18291688}} wnTs[0]=0.316675 {{{1.98751152,3.18126726}, {2.24202442,2.03384113}, {2.47503471,0.983356416}, {4,2}}}
1618SkOpSegment::addT insert t=0.667611207 segID=4 spanID=15
1619SkOpSegment::addT insert t=0.316674705 segID=2 spanID=16
1620debugShowCubicLineIntersection no intersect {{{0,1}, {1.01669919,2.52504873}, {2.29181767,2.2411623}, {3.43125343,1.98748374}}} {{{4,2}, {0,5}}}
1621debugShowCubicIntersection wtTs[0]=0.126307173 {{{3.43125343,1.98748374}, {4.53325891,1.74213839}, {5.50834942,1.52504873}, {6,3}}} {{3.84203434,1.89922202}} wnTs[0]=0.964411 {{{1.98751152,3.18126726}, {2.24202442,2.03384113}, {2.47503471,0.983356416}, {4,2}}}
1622SkOpSegment::addT insert t=0.126307173 segID=5 spanID=17
1623SkOpSegment::addT insert t=0.964411114 segID=2 spanID=18
1624debugShowCubicLineIntersection no intersect {{{3.43125343,1.98748374}, {4.53325891,1.74213839}, {5.50834942,1.52504873}, {6,3}}} {{{4,2}, {0,5}}}
1625debugShowCubicLineIntersection wtTs[0]=0.47393597 {{{1.98751152,3.18126726}, {2.24202442,2.03384113}, {2.47503471,0.983356416}, {4,2}}} {{2.47471237,1.82490408}} wnTs[0]=0.587548 {{{6,3}, {0,1}}}
1626SkOpSegment::addT insert t=0.587547935 segID=6 spanID=19
1627SkOpSegment::addT insert t=0.47393597 segID=2 spanID=20
1628debugShowLineIntersection wtTs[0]=0.384615385 {{{6,3}, {0,1}}} {{3.69230771,2.23076916}} wnTs[0]=0.0769231 {{{4,2}, {0,5}}}
1629SkOpSegment::addT insert t=0.384615385 segID=6 spanID=21
1630SkOpSegment::addT insert t=0.0769230769 segID=3 spanID=22
1631debugShowCubicIntersection wtTs[0]=1 {{{0,5}, {1.47503459,5.49167824}, {1.74133193,4.29112434}, {1.98751152,3.18126726}}} {{1.98751152,3.18126726}} wnTs[0]=0 {{{1.98751152,3.18126726}, {2.24202442,2.03384113}, {2.47503471,0.983356416}, {4,2}}}
1632debugShowCubicLineIntersection wtTs[0]=0 {{{0,5}, {1.47503459,5.49167824}, {1.74133193,4.29112434}, {1.98751152,3.18126726}}} {{0,5}} wtTs[1]=0.881335235 {{1.89703703,3.57722235}} wnTs[0]=1 {{{4,2}, {0,5}}} wnTs[1]=0.525740749
1633SkOpSegment::addT insert t=0.881335235 segID=1 spanID=23
1634SkOpSegment::addT insert t=0.525740749 segID=3 spanID=24
1635debugShowCubicLineIntersection wtTs[0]=1 {{{1.98751152,3.18126726}, {2.24202442,2.03384113}, {2.47503471,0.983356416}, {4,2}}} {{4,2}} wnTs[0]=0 {{{4,2}, {0,5}}}
1636SkOpSegment::sortAngles [4] tStart=0.667611207 [15]
1637SkOpAngle::after [4/1] 17/13 tStart=0.667611207 tEnd=0 < [2/15] 21/21 tStart=0.316674705 tEnd=0 < [4/2] 1/1 tStart=0.667611207 tEnd=0.918003405 T 4
1638SkOpAngle::afterPart {{{2.26454735,2.18291688}, {1.47269817,2.2300284}, {0.678759777,2.01813963}, {0,1}}} id=4
1639SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.1465507,2.46426727}, {2.06810932,2.81790643}, {1.98751152,3.18126726}}} id=2
1640SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.56153585,2.16524738}, {2.85823057,2.11114475}, {3.14844441,2.04948139}}} id=4
1641SkOpAngle::after [4/1] 17/13 tStart=0.667611207 tEnd=0 < [2/16] 5/5 tStart=0.316674705 tEnd=0.47393597 < [2/15] 21/21 tStart=0.316674705 tEnd=0 F 4
1642SkOpAngle::afterPart {{{2.26454735,2.18291688}, {1.47269817,2.2300284}, {0.678759777,2.01813963}, {0,1}}} id=4
1643SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.32314471,2.04319774}, {2.39149697,1.92130586}, {2.47471237,1.82490408}}} id=2
1644SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.1465507,2.46426727}, {2.06810932,2.81790643}, {1.98751152,3.18126726}}} id=2
1645SkOpAngle::after [2/15] 21/21 tStart=0.316674705 tEnd=0 < [2/16] 5/5 tStart=0.316674705 tEnd=0.47393597 < [4/2] 1/1 tStart=0.667611207 tEnd=0.918003405 F 4
1646SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.1465507,2.46426727}, {2.06810932,2.81790643}, {1.98751152,3.18126726}}} id=2
1647SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.32314471,2.04319774}, {2.39149697,1.92130586}, {2.47471237,1.82490408}}} id=2
1648SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.56153585,2.16524738}, {2.85823057,2.11114475}, {3.14844441,2.04948139}}} id=4
1649SkOpAngle::after [4/2] 1/1 tStart=0.667611207 tEnd=0.918003405 < [2/16] 5/5 tStart=0.316674705 tEnd=0.47393597 < [4/1] 17/13 tStart=0.667611207 tEnd=0 T 4
1650SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.56153585,2.16524738}, {2.85823057,2.11114475}, {3.14844441,2.04948139}}} id=4
1651SkOpAngle::afterPart {{{2.26454735,2.18291688}, {2.32314471,2.04319774}, {2.39149697,1.92130586}, {2.47471237,1.82490408}}} id=2
1652SkOpAngle::afterPart {{{2.26454735,2.18291688}, {1.47269817,2.2300284}, {0.678759777,2.01813963}, {0,1}}} id=4
1653SkOpSegment::sortAngles [4] tStart=0.918003405 [13]
1654SkOpAngle::after [4/3] 17/17 tStart=0.918003405 tEnd=0.667611207 < [6/9] 29/29 tStart=0.475259271 tEnd=0.384615385 < [4/4] 1/1 tStart=0.918003405 tEnd=1 T 4
1655SkOpAngle::afterPart {{{3.14844441,2.04948139}, {2.85823057,2.11114475}, {2.56153585,2.16524738}, {2.26454735,2.18291688}}} id=4
1656SkOpAngle::afterPart {{{3.14844441,2.04948139}, {3.69230771,2.23076916}}} id=6
1657SkOpAngle::afterPart {{{3.14844441,2.04948139}, {3.24348151,2.02928833}, {3.33782358,2.00828452}, {3.43125343,1.98748374}}} id=4
1658SkOpAngle::after [4/3] 17/17 tStart=0.918003405 tEnd=0.667611207 < [6/10] 13/13 tStart=0.475259271 tEnd=0.587547935 < [6/9] 29/29 tStart=0.475259271 tEnd=0.384615385 F 4
1659SkOpAngle::afterPart {{{3.14844441,2.04948139}, {2.85823057,2.11114475}, {2.56153585,2.16524738}, {2.26454735,2.18291688}}} id=4
1660SkOpAngle::afterPart {{{3.14844441,2.04948139}, {2.47471237,1.82490408}}} id=6
1661SkOpAngle::afterPart {{{3.14844441,2.04948139}, {3.69230771,2.23076916}}} id=6
1662SkOpAngle::after [6/9] 29/29 tStart=0.475259271 tEnd=0.384615385 < [6/10] 13/13 tStart=0.475259271 tEnd=0.587547935 < [4/4] 1/1 tStart=0.918003405 tEnd=1 F 4
1663SkOpAngle::afterPart {{{3.14844441,2.04948139}, {3.69230771,2.23076916}}} id=6
1664SkOpAngle::afterPart {{{3.14844441,2.04948139}, {2.47471237,1.82490408}}} id=6
1665SkOpAngle::afterPart {{{3.14844441,2.04948139}, {3.24348151,2.02928833}, {3.33782358,2.00828452}, {3.43125343,1.98748374}}} id=4
1666SkOpAngle::after [4/4] 1/1 tStart=0.918003405 tEnd=1 < [6/10] 13/13 tStart=0.475259271 tEnd=0.587547935 < [4/3] 17/17 tStart=0.918003405 tEnd=0.667611207 T 4
1667SkOpAngle::afterPart {{{3.14844441,2.04948139}, {3.24348151,2.02928833}, {3.33782358,2.00828452}, {3.43125343,1.98748374}}} id=4
1668SkOpAngle::afterPart {{{3.14844441,2.04948139}, {2.47471237,1.82490408}}} id=6
1669SkOpAngle::afterPart {{{3.14844441,2.04948139}, {2.85823057,2.11114475}, {2.56153585,2.16524738}, {2.26454735,2.18291688}}} id=4
1670SkOpSegment::sortAngles [5] tStart=0.126307173 [17]
1671SkOpAngle::after [5/5] 17/17 tStart=0.126307173 tEnd=0 < [2/19] 13/13 tStart=0.964411114 tEnd=0.47393597 < [5/6] 1/29 tStart=0.126307173 tEnd=1 F 4
1672SkOpAngle::afterPart {{{3.84203434,1.89922202}, {3.70761103,1.92595674}, {3.57044463,1.95649486}, {3.43125343,1.98748374}}} id=5
1673SkOpAngle::afterPart {{{3.84203434,1.89922202}, {3.13836417,1.47152506}, {2.73424919,1.52424088}, {2.47471237,1.82490408}}} id=2
1674SkOpAngle::afterPart {{{3.84203434,1.89922202}, {4.77186815,1.71429239}, {5.57044841,1.71134566}, {6,3}}} id=5
1675SkOpAngle::after [5/5] 17/17 tStart=0.126307173 tEnd=0 < [2/20] 29/29 tStart=0.964411114 tEnd=1 < [5/6] 1/29 tStart=0.126307173 tEnd=1 T 11
1676SkOpAngle::afterPart {{{3.84203434,1.89922202}, {3.70761103,1.92595674}, {3.57044463,1.95649486}, {3.43125343,1.98748374}}} id=5
1677SkOpAngle::afterPart {{{3.84203434,1.89922202}, {3.89309266,1.93025572}, {3.94572818,1.96381879}, {4,2}}} id=2
1678SkOpAngle::afterPart {{{3.84203434,1.89922202}, {4.77186815,1.71429239}, {5.57044841,1.71134566}, {6,3}}} id=5
1679SkOpSegment::sortAngles [6] tStart=0.384615385 [21]
1680SkOpAngle::after [6/7] 29/29 tStart=0.384615385 tEnd=0 < [3/21] 1/1 tStart=0.0769230769 tEnd=0 < [6/8] 13/13 tStart=0.384615385 tEnd=0.475259271 T 4
1681SkOpAngle::afterPart {{{3.69230771,2.23076916}, {6,3}}} id=6
1682SkOpAngle::afterPart {{{3.69230771,2.23076916}, {4,2}}} id=3
1683SkOpAngle::afterPart {{{3.69230771,2.23076916}, {3.14844441,2.04948139}}} id=6
1684SkOpAngle::after [6/7] 29/29 tStart=0.384615385 tEnd=0 < [3/22] 17/17 tStart=0.0769230769 tEnd=0.525740749 < [3/21] 1/1 tStart=0.0769230769 tEnd=0 F 4
1685SkOpAngle::afterPart {{{3.69230771,2.23076916}, {6,3}}} id=6
1686SkOpAngle::afterPart {{{3.69230771,2.23076916}, {1.89703703,3.57722235}}} id=3
1687SkOpAngle::afterPart {{{3.69230771,2.23076916}, {4,2}}} id=3
1688SkOpAngle::after [3/21] 1/1 tStart=0.0769230769 tEnd=0 < [3/22] 17/17 tStart=0.0769230769 tEnd=0.525740749 < [6/8] 13/13 tStart=0.384615385 tEnd=0.475259271 F 4
1689SkOpAngle::afterPart {{{3.69230771,2.23076916}, {4,2}}} id=3
1690SkOpAngle::afterPart {{{3.69230771,2.23076916}, {1.89703703,3.57722235}}} id=3
1691SkOpAngle::afterPart {{{3.69230771,2.23076916}, {3.14844441,2.04948139}}} id=6
1692SkOpAngle::after [6/8] 13/13 tStart=0.384615385 tEnd=0.475259271 < [3/22] 17/17 tStart=0.0769230769 tEnd=0.525740749 < [6/7] 29/29 tStart=0.384615385 tEnd=0 T 4
1693SkOpAngle::afterPart {{{3.69230771,2.23076916}, {3.14844441,2.04948139}}} id=6
1694SkOpAngle::afterPart {{{3.69230771,2.23076916}, {1.89703703,3.57722235}}} id=3
1695SkOpAngle::afterPart {{{3.69230771,2.23076916}, {6,3}}} id=6
1696SkOpSegment::sortAngles [6] tStart=0.475259271 [14]
1697SkOpSegment::sortAngles [6] tStart=0.587547935 [19]
1698SkOpAngle::after [6/11] 29/29 tStart=0.587547935 tEnd=0.475259271 < [2/17] 21/21 tStart=0.47393597 tEnd=0.316674705 < [6/12] 13/13 tStart=0.587547935 tEnd=1 F 4
1699SkOpAngle::afterPart {{{2.47471237,1.82490408}, {3.14844441,2.04948139}}} id=6
1700SkOpAngle::afterPart {{{2.47471237,1.82490408}, {2.39149697,1.92130586}, {2.32314471,2.04319774}, {2.26454735,2.18291688}}} id=2
1701SkOpAngle::afterPart {{{2.47471237,1.82490408}, {0,1}}} id=6
1702SkOpAngle::after [6/11] 29/29 tStart=0.587547935 tEnd=0.475259271 < [2/18] 5/29 tStart=0.47393597 tEnd=0.964411114 < [6/12] 13/13 tStart=0.587547935 tEnd=1 T 12
1703SkOpAngle::afterPart {{{2.47471237,1.82490408}, {3.14844441,2.04948139}}} id=6
1704SkOpAngle::afterPart {{{2.47471237,1.82490408}, {2.73424919,1.52424088}, {3.13836417,1.47152506}, {3.84203434,1.89922202}}} id=2
1705SkOpAngle::afterPart {{{2.47471237,1.82490408}, {0,1}}} id=6
1706SkOpSegment::sortAngles [1] tStart=0.881335235 [23]
1707SkOpAngle::after [1/13] 21/17 tStart=0.881335235 tEnd=0 < [3/23] 1/1 tStart=0.525740749 tEnd=0.0769230769 < [1/14] 5/5 tStart=0.881335235 tEnd=1 T 4
1708SkOpAngle::afterPart {{{1.89703703,3.57722235}, {1.66111111,4.55222246}, {1.29999996,5.43333336}, {0,5}}} id=1
1709SkOpAngle::afterPart {{{1.89703703,3.57722235}, {3.69230771,2.23076916}}} id=3
1710SkOpAngle::afterPart {{{1.89703703,3.57722235}, {1.92880257,3.44594635}, {1.95829867,3.31296819}, {1.98751152,3.18126726}}} id=1
1711SkOpAngle::after [1/13] 21/17 tStart=0.881335235 tEnd=0 < [3/24] 17/17 tStart=0.525740749 tEnd=1 < [3/23] 1/1 tStart=0.525740749 tEnd=0.0769230769 F 12
1712SkOpAngle::afterPart {{{1.89703703,3.57722235}, {1.66111111,4.55222246}, {1.29999996,5.43333336}, {0,5}}} id=1
1713SkOpAngle::afterPart {{{1.89703703,3.57722235}, {0,5}}} id=3
1714SkOpAngle::afterPart {{{1.89703703,3.57722235}, {3.69230771,2.23076916}}} id=3
1715SkOpAngle::after [3/23] 1/1 tStart=0.525740749 tEnd=0.0769230769 < [3/24] 17/17 tStart=0.525740749 tEnd=1 < [1/14] 5/5 tStart=0.881335235 tEnd=1 F 4
1716SkOpAngle::afterPart {{{1.89703703,3.57722235}, {3.69230771,2.23076916}}} id=3
1717SkOpAngle::afterPart {{{1.89703703,3.57722235}, {0,5}}} id=3
1718SkOpAngle::afterPart {{{1.89703703,3.57722235}, {1.92880257,3.44594635}, {1.95829867,3.31296819}, {1.98751152,3.18126726}}} id=1
1719SkOpAngle::after [1/14] 5/5 tStart=0.881335235 tEnd=1 < [3/24] 17/17 tStart=0.525740749 tEnd=1 < [1/13] 21/17 tStart=0.881335235 tEnd=0 T 11
1720SkOpAngle::afterPart {{{1.89703703,3.57722235}, {1.92880257,3.44594635}, {1.95829867,3.31296819}, {1.98751152,3.18126726}}} id=1
1721SkOpAngle::afterPart {{{1.89703703,3.57722235}, {0,5}}} id=3
1722SkOpAngle::afterPart {{{1.89703703,3.57722235}, {1.66111111,4.55222246}, {1.29999996,5.43333336}, {0,5}}} id=1
1723SkOpSegment::sortAngles [2] tStart=0.316674705 [16]
1724SkOpSegment::sortAngles [2] tStart=0.47393597 [20]
1725SkOpSegment::sortAngles [2] tStart=0.964411114 [18]
1726SkOpSegment::sortAngles [3] tStart=0.0769230769 [22]
1727SkOpSegment::sortAngles [3] tStart=0.525740749 [24]
1728SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0 (0,1) tEnd=0.667611207 windSum=? windValue=1 oppValue=0
1729SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=? windValue=1 oppValue=0
1730SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=? windValue=1 oppValue=0
1731SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=? windValue=1 oppValue=0
1732SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
1733SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0 (6,3) tEnd=0.384615385 windSum=? windValue=1 oppValue=0
1734SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=? windValue=1 oppValue=0
1735SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
1736SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=? windValue=1 oppValue=0
1737SkOpSegment::debugShowActiveSpans id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0 (0,5) tEnd=0.881335235 windSum=? windValue=1 oppValue=0
1738SkOpSegment::debugShowActiveSpans id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0.881335235 (1.89703703,3.57722235) tEnd=1 windSum=? windValue=1 oppValue=0
1739SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0 (1.98751152,3.18126726) tEnd=0.316674705 windSum=? windValue=1 oppValue=0
1740SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=? windValue=1 oppValue=0
1741SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=? windValue=1 oppValue=0
1742SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
1743SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0 (4,2) tEnd=0.0769230769 windSum=? windValue=1 oppValue=0
1744SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.0769230769 (3.69230771,2.23076916) tEnd=0.525740749 windSum=? windValue=1 oppValue=0
1745SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.525740749 (1.89703703,3.57722235) tEnd=1 windSum=? windValue=1 oppValue=0
1746-SkOpSegment::findTop-
1747SkOpAngle::dumpOne [4/26] next=6/25 sect=25/29 s=0 [7] e=0.667611207 [15] sgn=-1 windVal=1 windSum=? operand
1748SkOpAngle::dumpOne [6/25] next=4/26 sect=29/29 s=1 [12] e=0.587547935 [19] sgn=1 windVal=1 windSum=? operand
1749SkOpSegment::findTop id=4 s=0.667611207 e=0 cw=0 swap=1 inflections=0 monotonic=0
1750SkOpSegment::markWinding id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0 [7] (0,1) tEnd=0.667611207 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1751SkOpSegment::markWinding id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0 [7] (0,1) tEnd=0.667611207 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1752SkOpSegment::nextChase mismatched signs
1753SkOpSegment::markWinding id=6 (6,3 0,1) t=0.587547935 [19] (2.47471237,1.82490408) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1754SkOpSegment::activeOp id=4 t=0 tEnd=0.667611207 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
1755SkOpSegment::markDone id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0 [7] (0,1) tEnd=0.667611207 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1756bridgeOp chase.append id=4 windSum=-2147483647
1757SkOpSegment::markWinding id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0 [3] (1.98751152,3.18126726) tEnd=0.316674705 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
1758SkOpSegment::markWinding id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0.881335235 [23] (1.89703703,3.57722235) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
1759SkOpSegment::markAngle last segment=1 span=23 windSum=-1
1760SkOpSegment::markWinding id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 [15] (2.26454735,2.18291688) tEnd=0.918003405 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
1761SkOpSegment::markAngle last segment=4 span=13 windSum=?
1762SkOpSegment::markWinding id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 [16] (2.26454735,2.18291688) tEnd=0.47393597 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1763SkOpSegment::markAngle last segment=2 span=20 windSum=?
1764SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
1765SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=? windValue=1 oppValue=0
1766SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=? windValue=1 oppValue=0
1767SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
1768SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0 (6,3) tEnd=0.384615385 windSum=? windValue=1 oppValue=0
1769SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=? windValue=1 oppValue=0
1770SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
1771SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
1772SkOpSegment::debugShowActiveSpans id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0 (0,5) tEnd=0.881335235 windSum=? windValue=1 oppValue=0
1773SkOpSegment::debugShowActiveSpans id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0.881335235 (1.89703703,3.57722235) tEnd=1 windSum=-1 windValue=1 oppValue=0
1774SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0 (1.98751152,3.18126726) tEnd=0.316674705 windSum=-1 windValue=1 oppValue=0
1775SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
1776SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=? windValue=1 oppValue=0
1777SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
1778SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0 (4,2) tEnd=0.0769230769 windSum=? windValue=1 oppValue=0
1779SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.0769230769 (3.69230771,2.23076916) tEnd=0.525740749 windSum=? windValue=1 oppValue=0
1780SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.525740749 (1.89703703,3.57722235) tEnd=1 windSum=? windValue=1 oppValue=0
1781SkOpSegment::activeOp id=2 t=0.316674705 tEnd=0 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
1782SkOpSegment::markDone id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0 [3] (1.98751152,3.18126726) tEnd=0.316674705 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
1783SkOpSegment::markDone id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0.881335235 [23] (1.89703703,3.57722235) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
1784bridgeOp chase.append id=1 windSum=-1
1785SkOpSegment::markWinding id=3 (4,2 0,5) t=0.525740749 [24] (1.89703703,3.57722235) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
1786SkOpSegment::markWinding id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0 [1] (0,5) tEnd=0.881335235 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
1787SkOpSegment::markAngle last segment=1 span=23 windSum=-1
1788SkOpSegment::markWinding id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0 [1] (0,5) tEnd=0.881335235 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
1789SkOpSegment::markWinding id=3 (4,2 0,5) t=0.0769230769 [22] (3.69230771,2.23076916) tEnd=0.525740749 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
1790SkOpSegment::markAngle last segment=3 span=22 windSum=-1
1791SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
1792SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=? windValue=1 oppValue=0
1793SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=? windValue=1 oppValue=0
1794SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
1795SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0 (6,3) tEnd=0.384615385 windSum=? windValue=1 oppValue=0
1796SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=? windValue=1 oppValue=0
1797SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
1798SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
1799SkOpSegment::debugShowActiveSpans id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0 (0,5) tEnd=0.881335235 windSum=1 windValue=1 oppValue=0
1800SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
1801SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=? windValue=1 oppValue=0
1802SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
1803SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0 (4,2) tEnd=0.0769230769 windSum=? windValue=1 oppValue=0
1804SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.0769230769 (3.69230771,2.23076916) tEnd=0.525740749 windSum=-1 windValue=1 oppValue=0
1805SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.525740749 (1.89703703,3.57722235) tEnd=1 windSum=1 windValue=1 oppValue=0
1806SkOpSegment::activeOp id=3 t=0.525740749 tEnd=1 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
1807SkOpSegment::markDone id=3 (4,2 0,5) t=0.525740749 [24] (1.89703703,3.57722235) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
1808SkOpSegment::markDone id=1 (0,5 1.47503459,5.49167824 1.74133193,4.29112434 1.98751152,3.18126726) t=0 [1] (0,5) tEnd=0.881335235 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
1809SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
1810SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=? windValue=1 oppValue=0
1811SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=? windValue=1 oppValue=0
1812SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
1813SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0 (6,3) tEnd=0.384615385 windSum=? windValue=1 oppValue=0
1814SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=? windValue=1 oppValue=0
1815SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
1816SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
1817SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
1818SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=? windValue=1 oppValue=0
1819SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 (3.84203434,1.89922202) tEnd=1 windSum=? windValue=1 oppValue=0
1820SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0 (4,2) tEnd=0.0769230769 windSum=? windValue=1 oppValue=0
1821SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0.0769230769 (3.69230771,2.23076916) tEnd=0.525740749 windSum=-1 windValue=1 oppValue=0
1822SkOpSegment::activeOp id=3 t=0.525740749 tEnd=0.0769230769 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
1823SkOpSegment::markDone id=3 (4,2 0,5) t=0.0769230769 [22] (3.69230771,2.23076916) tEnd=0.525740749 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
1824bridgeOp chase.append id=3 windSum=-1
1825SkOpSegment::markWinding id=6 (6,3 0,1) t=0 [11] (6,3) tEnd=0.384615385 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1826SkOpSegment::markWinding id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 [17] (3.84203434,1.89922202) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1827SkOpSegment::markAngle last segment=5 span=17 windSum=-2
1828SkOpSegment::markWinding id=3 (4,2 0,5) t=0 [5] (4,2) tEnd=0.0769230769 newWindSum=-1 newOppSum=-2 oppSum=? windSum=? windValue=1 oppValue=0
1829SkOpSegment::markWinding id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 [18] (3.84203434,1.89922202) tEnd=1 newWindSum=-1 newOppSum=-2 oppSum=? windSum=? windValue=1 oppValue=0
1830SkOpSegment::markAngle last segment=2 span=18 windSum=-1
1831SkOpSegment::markWinding id=6 (6,3 0,1) t=0.384615385 [21] (3.69230771,2.23076916) tEnd=0.475259271 newWindSum=-2 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
1832SkOpSegment::markAngle last segment=6 span=14 windSum=?
1833SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
1834SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=? windValue=1 oppValue=0
1835SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=? windValue=1 oppValue=0
1836SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 (3.84203434,1.89922202) tEnd=1 windSum=-2 windValue=1 oppValue=0
1837SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0 (6,3) tEnd=0.384615385 windSum=-2 windValue=1 oppValue=0
1838SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=-2 windValue=1 oppValue=0
1839SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
1840SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
1841SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
1842SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=? windValue=1 oppValue=0
1843SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 (3.84203434,1.89922202) tEnd=1 windSum=-1 windValue=1 oppValue=0
1844SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0 (4,2) tEnd=0.0769230769 windSum=-1 windValue=1 oppValue=0
1845SkOpSegment::activeOp id=6 t=0.384615385 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=1 suTo=1 result=0
1846SkOpSegment::markDone id=6 (6,3 0,1) t=0 [11] (6,3) tEnd=0.384615385 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
1847SkOpSegment::markDone id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0.126307173 [17] (3.84203434,1.89922202) tEnd=1 newWindSum=-2 newOppSum=0 oppSum=0 windSum=-2 windValue=1 oppValue=0
1848bridgeOp chase.append id=5 windSum=-2
1849SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
1850SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=? windValue=1 oppValue=0
1851SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=? windValue=1 oppValue=0
1852SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=-2 windValue=1 oppValue=0
1853SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
1854SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
1855SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
1856SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=? windValue=1 oppValue=0
1857SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 (3.84203434,1.89922202) tEnd=1 windSum=-1 windValue=1 oppValue=0
1858SkOpSegment::debugShowActiveSpans id=3 (4,2 0,5) t=0 (4,2) tEnd=0.0769230769 windSum=-1 windValue=1 oppValue=0
1859SkOpSegment::activeOp id=2 t=0.964411114 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
1860SkOpSegment::markDone id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.964411114 [18] (3.84203434,1.89922202) tEnd=1 newWindSum=-1 newOppSum=-2 oppSum=-2 windSum=-1 windValue=1 oppValue=0
1861SkOpSegment::markDone id=3 (4,2 0,5) t=0 [5] (4,2) tEnd=0.0769230769 newWindSum=-1 newOppSum=-2 oppSum=-2 windSum=-1 windValue=1 oppValue=0
1862SkOpSegment::markWinding id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 [20] (2.47471237,1.82490408) tEnd=0.964411114 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
1863SkOpSegment::markAngle last segment=2 span=20 windSum=-1
1864SkOpSegment::markWinding id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 [9] (3.43125343,1.98748374) tEnd=0.126307173 newWindSum=-2 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
1865SkOpSegment::markWinding id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 [13] (3.14844441,2.04948139) tEnd=1 newWindSum=-2 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
1866SkOpSegment::markAngle last segment=4 span=13 windSum=-2
1867SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
1868SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=-2 windValue=1 oppValue=0
1869SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=-2 windValue=1 oppValue=0
1870SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=-2 windValue=1 oppValue=0
1871SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
1872SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
1873SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
1874SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 (2.47471237,1.82490408) tEnd=0.964411114 windSum=-1 windValue=1 oppValue=0
1875SkOpSegment::activeOp id=2 t=0.964411114 tEnd=0.47393597 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
1876SkOpSegment::markDone id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.47393597 [20] (2.47471237,1.82490408) tEnd=0.964411114 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
1877bridgeOp chase.append id=2 windSum=-1
1878SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
1879SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=-2 windValue=1 oppValue=0
1880SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=-2 windValue=1 oppValue=0
1881SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=-2 windValue=1 oppValue=0
1882SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
1883SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.587547935 (2.47471237,1.82490408) tEnd=1 windSum=-1 windValue=1 oppValue=0
1884SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
1885SkOpSegment::activeOp id=6 t=0.587547935 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
1886SkOpSegment::markDone id=6 (6,3 0,1) t=0.587547935 [19] (2.47471237,1.82490408) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1887SkOpSegment::nextChase mismatched signs
1888SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 (2.26454735,2.18291688) tEnd=0.918003405 windSum=-1 windValue=1 oppValue=0
1889SkOpSegment::debugShowActiveSpans id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 (3.14844441,2.04948139) tEnd=1 windSum=-2 windValue=1 oppValue=0
1890SkOpSegment::debugShowActiveSpans id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 (3.43125343,1.98748374) tEnd=0.126307173 windSum=-2 windValue=1 oppValue=0
1891SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.384615385 (3.69230771,2.23076916) tEnd=0.475259271 windSum=-2 windValue=1 oppValue=0
1892SkOpSegment::debugShowActiveSpans id=6 (6,3 0,1) t=0.475259271 (3.14844441,2.04948139) tEnd=0.587547935 windSum=? windValue=1 oppValue=0
1893SkOpSegment::debugShowActiveSpans id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 (2.26454735,2.18291688) tEnd=0.47393597 windSum=-1 windValue=1 oppValue=0
1894SkOpSegment::activeOp id=2 t=0.47393597 tEnd=0.316674705 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
1895SkOpSegment::findNextOp
1896SkOpAngle::dumpOne [2/16] next=4/1 sect=5/5 s=0.316674705 [16] e=0.47393597 [20] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
1897SkOpAngle::dumpOne [4/1] next=2/15 sect=17/13 s=0.667611207 [15] e=0 [7] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
1898SkOpAngle::dumpOne [2/15] next=4/2 sect=21/21 s=0.316674705 [16] e=0 [3] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
1899SkOpAngle::dumpOne [4/2] next=2/16 sect=1/1 s=0.667611207 [15] e=0.918003405 [13] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
1900SkOpSegment::activeOp id=4 t=0.667611207 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
1901SkOpSegment::nextChase mismatched signs
1902SkOpSegment::activeOp id=2 t=0.316674705 tEnd=0 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
1903SkOpSegment::activeOp id=4 t=0.667611207 tEnd=0.918003405 op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
1904SkOpSegment::markDone id=2 (1.98751152,3.18126726 2.24202442,2.03384113 2.47503471,0.983356416 4,2) t=0.316674705 [16] (2.26454735,2.18291688) tEnd=0.47393597 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1905SkOpSegment::findNextOp from:[2] to:[4] start=3957516 end=3957324
1906bridgeOp current id=2 from=(2.47471237,1.82490408) to=(2.26454735,2.18291688)
1907path.moveTo(2.47471237,1.82490408);
1908path.cubicTo(2.3914969,1.92130589, 2.32314467,2.04319763, 2.26454735,2.18291688);
1909SkOpSegment::markWinding id=6 (6,3 0,1) t=0.475259271 [14] (3.14844441,2.04948139) tEnd=0.587547935 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
1910SkOpSegment::markAngle last segment=6 span=19 windSum=-1
1911SkOpSegment::findNextOp
1912SkOpAngle::dumpOne [4/3] next=6/9 sect=17/17 s=0.918003405 [13] e=0.667611207 [15] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
1913SkOpAngle::dumpOne [6/9] next=4/4 sect=29/29 s=0.475259271 [14] e=0.384615385 [21] sgn=1 windVal=1 windSum=-2 oppVal=0 oppSum=-1 operand
1914SkOpAngle::dumpOne [4/4] next=6/10 sect=1/1 s=0.918003405 [13] e=1 [8] sgn=-1 windVal=1 windSum=-2 oppVal=0 oppSum=-1 operand
1915SkOpAngle::dumpOne [6/10] next=4/3 sect=13/13 s=0.475259271 [14] e=0.587547935 [19] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
1916SkOpSegment::activeOp id=6 t=0.475259271 tEnd=0.384615385 op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
1917SkOpSegment::markDone id=6 (6,3 0,1) t=0.384615385 [21] (3.69230771,2.23076916) tEnd=0.475259271 newWindSum=-2 newOppSum=-1 oppSum=-1 windSum=-2 windValue=1 oppValue=0
1918SkOpSegment::activeOp id=4 t=0.918003405 tEnd=1 op=diff miFrom=1 miTo=1 suFrom=1 suTo=1 result=0
1919SkOpSegment::markDone id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.918003405 [13] (3.14844441,2.04948139) tEnd=1 newWindSum=-2 newOppSum=-1 oppSum=-1 windSum=-2 windValue=1 oppValue=0
1920SkOpSegment::markDone id=5 (3.43125343,1.98748374 4.53325891,1.74213839 5.50834942,1.52504873 6,3) t=0 [9] (3.43125343,1.98748374) tEnd=0.126307173 newWindSum=-2 newOppSum=-1 oppSum=-1 windSum=-2 windValue=1 oppValue=0
1921SkOpSegment::activeOp id=6 t=0.475259271 tEnd=0.587547935 op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
1922SkOpSegment::findNextOp chase.append segment=6 span=19 windSum=-1
1923SkOpSegment::markDone id=4 (0,1 1.01669919,2.52504873 2.29181767,2.2411623 3.43125343,1.98748374) t=0.667611207 [15] (2.26454735,2.18291688) tEnd=0.918003405 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
1924SkOpSegment::findNextOp from:[4] to:[6] start=3957420 end=3957900
1925bridgeOp current id=4 from=(2.26454735,2.18291688) to=(3.14844441,2.04948139)
1926path.cubicTo(2.56153584,2.16524744, 2.85823059,2.11114478, 3.14844441,2.04948139);
1927SkOpSegment::findNextOp
1928SkOpAngle::dumpOne [6/11] next=2/18 sect=29/29 s=0.587547935 [19] e=0.475259271 [14] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
1929SkOpAngle::dumpOne [2/18] next=6/12 sect=5/29 s=0.47393597 [20] e=0.964411114 [18] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
1930SkOpAngle::dumpOne [6/12] next=2/17 sect=13/13 s=0.587547935 [19] e=1 [12] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
1931SkOpAngle::dumpOne [2/17] next=6/11 sect=21/21 s=0.47393597 [20] e=0.316674705 [16] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
1932SkOpSegment::activeOp id=2 t=0.47393597 tEnd=0.964411114 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
1933SkOpSegment::activeOp id=6 t=0.587547935 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
1934SkOpSegment::nextChase mismatched signs
1935SkOpSegment::activeOp id=2 t=0.47393597 tEnd=0.316674705 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
1936SkOpSegment::markDone id=6 (6,3 0,1) t=0.475259271 [14] (3.14844441,2.04948139) tEnd=0.587547935 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
1937SkOpSegment::findNextOp from:[6] to:[2] start=3957996 end=3957612
1938bridgeOp current id=6 from=(3.14844441,2.04948139) to=(2.47471237,1.82490408)
1939path.lineTo(2.47471237,1.82490408);
1940path.close();
1941</div>
1942
1943<div id="cubicOp136a">
1944seg=1 {{{5, 6}, {5, 0}, {3, 1}}}
1945seg=2 {{{3, 1}, {5, 6}}}
1946op diff
1947seg=3 {{{0, 5}, {1, 3}, {6, 5}, {6, 5}}}
1948seg=4 {{{6, 5}, {0, 5}}}
1949debugShowQuadLineIntersection wtTs[0]=0 {{{5,6}, {5,0}, {3,1}}} {{5,6}} wtTs[1]=1 {{3,1}} wnTs[0]=1 {{{3,1}, {5,6}}} wnTs[1]=0
1950debugShowCubicQuadIntersection wtTs[0]=0.711945896 {{{0,5}, {1,3}, {6,5}, {6,5}}} {{4.97048473,4.64555693}} wnTs[0]=0.121478 {{{5,6}, {5,0}, {3,1}}}
1951SkOpSegment::addT insert t=0.121478342 segID=1 spanID=9
1952SkOpSegment::addT insert t=0.711945896 segID=3 spanID=10
1953debugShowQuadLineIntersection wtTs[0]=0.087833599 {{{5,6}, {5,0}, {3,1}}} {{4.9845705,5}} wnTs[0]=0.169238 {{{6,5}, {0,5}}}
1954SkOpSegment::addT insert t=0.087833599 segID=1 spanID=11
1955SkOpSegment::addT insert t=0.169238247 segID=4 spanID=12
1956debugShowCubicLineIntersection wtTs[0]=0.6285848 {{{0,5}, {1,3}, {6,5}, {6,5}}} {{4.3918891,4.47972298}} wnTs[0]=0.695945 {{{3,1}, {5,6}}}
1957SkOpSegment::addT insert t=0.695944637 segID=2 spanID=13
1958SkOpSegment::addT insert t=0.6285848 segID=3 spanID=14
1959debugShowLineIntersection wtTs[0]=0.8 {{{3,1}, {5,6}}} {{4.5999999,5}} wnTs[0]=0.233333 {{{6,5}, {0,5}}}
1960SkOpSegment::addT insert t=0.8 segID=2 spanID=15
1961SkOpSegment::addT insert t=0.233333333 segID=4 spanID=16
1962debugShowCubicLineIntersection wtTs[0]=0 {{{0,5}, {1,3}, {6,5}, {6,5}}} {{0,5}} wtTs[1]=1 {{6,5}} wnTs[0]=1 {{{6,5}, {0,5}}} wnTs[1]=0
1963SkOpSegment::sortAngles [1] tStart=0.087833599 [11]
1964SkOpAngle::after [1/1] 25/25 tStart=0.087833599 tEnd=0 < [4/13] 31/31 tStart=0.169238247 tEnd=0 < [1/2] 9/9 tStart=0.087833599 tEnd=0.121478342 T 4
1965SkOpAngle::afterPart {{{4.9845705,5}, {5,5.47299885}, {5,6}}} id=1
1966SkOpAngle::afterPart {{{4.9845705,5}, {6,5}}} id=4
1967SkOpAngle::afterPart {{{4.9845705,5}, {4.97865988,4.81880703}, {4.97048616,4.64555883}}} id=1
1968SkOpAngle::after [1/1] 25/25 tStart=0.087833599 tEnd=0 < [4/14] 15/15 tStart=0.169238247 tEnd=0.233333333 < [4/13] 31/31 tStart=0.169238247 tEnd=0 F 4
1969SkOpAngle::afterPart {{{4.9845705,5}, {5,5.47299885}, {5,6}}} id=1
1970SkOpAngle::afterPart {{{4.9845705,5}, {4.5999999,5}}} id=4
1971SkOpAngle::afterPart {{{4.9845705,5}, {6,5}}} id=4
1972SkOpAngle::after [4/13] 31/31 tStart=0.169238247 tEnd=0 < [4/14] 15/15 tStart=0.169238247 tEnd=0.233333333 < [1/2] 9/9 tStart=0.087833599 tEnd=0.121478342 F 4
1973SkOpAngle::afterPart {{{4.9845705,5}, {6,5}}} id=4
1974SkOpAngle::afterPart {{{4.9845705,5}, {4.5999999,5}}} id=4
1975SkOpAngle::afterPart {{{4.9845705,5}, {4.97865988,4.81880703}, {4.97048616,4.64555883}}} id=1
1976SkOpAngle::after [1/2] 9/9 tStart=0.087833599 tEnd=0.121478342 < [4/14] 15/15 tStart=0.169238247 tEnd=0.233333333 < [1/1] 25/25 tStart=0.087833599 tEnd=0 T 4
1977SkOpAngle::afterPart {{{4.9845705,5}, {4.97865988,4.81880703}, {4.97048616,4.64555883}}} id=1
1978SkOpAngle::afterPart {{{4.9845705,5}, {4.5999999,5}}} id=4
1979SkOpAngle::afterPart {{{4.9845705,5}, {5,5.47299885}, {5,6}}} id=1
1980SkOpSegment::sortAngles [1] tStart=0.121478342 [9]
1981SkOpAngle::after [1/3] 25/25 tStart=0.121478342 tEnd=0.087833599 < [3/11] 13/13 tStart=0.711945896 tEnd=0.6285848 < [1/4] 9/9 tStart=0.121478342 tEnd=1 F 4
1982SkOpAngle::afterPart {{{4.97048616,4.64555883}, {4.97865988,4.81880703}, {4.9845705,5}}} id=1
1983SkOpAngle::afterPart {{{4.97048616,4.64555883}, {4.79261321,4.59101022}, {4.59800847,4.53457168}, {4.3918891,4.47972298}}} id=3
1984SkOpAngle::afterPart {{{4.97048616,4.64555883}, {4.75704345,0.121478274}, {3,1}}} id=1
1985SkOpAngle::after [1/3] 25/25 tStart=0.121478342 tEnd=0.087833599 < [3/12] 29/29 tStart=0.711945896 tEnd=1 < [1/4] 9/9 tStart=0.121478342 tEnd=1 T 4
1986SkOpAngle::afterPart {{{4.97048616,4.64555883}, {4.97865988,4.81880703}, {4.9845705,5}}} id=1
1987SkOpAngle::afterPart {{{4.97048616,4.64555883}, {5.5851258,4.83405148}, {6,5}, {6,5}}} id=3
1988SkOpAngle::afterPart {{{4.97048616,4.64555883}, {4.75704345,0.121478274}, {3,1}}} id=1
1989SkOpSegment::sortAngles [2] tStart=0.695944637 [13]
1990SkOpAngle::after [2/5] 9/9 tStart=0.695944637 tEnd=0 < [3/9] 13/17 tStart=0.6285848 tEnd=0 < [2/6] 25/25 tStart=0.695944637 tEnd=0.8 T 4
1991SkOpAngle::afterPart {{{4.3918891,4.47972298}, {3,1}}} id=2
1992SkOpAngle::afterPart {{{4.3918891,4.47972298}, {2.83764482,4.06613599}, {0.6285848,3.7428304}, {0,5}}} id=3
1993SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5999999,5}}} id=2
1994SkOpAngle::after [2/5] 9/9 tStart=0.695944637 tEnd=0 < [3/10] 29/29 tStart=0.6285848 tEnd=0.711945896 < [3/9] 13/17 tStart=0.6285848 tEnd=0 F 4
1995SkOpAngle::afterPart {{{4.3918891,4.47972298}, {3,1}}} id=2
1996SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.59800847,4.53457168}, {4.79261321,4.59101022}, {4.97048616,4.64555883}}} id=3
1997SkOpAngle::afterPart {{{4.3918891,4.47972298}, {2.83764482,4.06613599}, {0.6285848,3.7428304}, {0,5}}} id=3
1998SkOpAngle::after [3/9] 13/17 tStart=0.6285848 tEnd=0 < [3/10] 29/29 tStart=0.6285848 tEnd=0.711945896 < [2/6] 25/25 tStart=0.695944637 tEnd=0.8 F 4
1999SkOpAngle::afterPart {{{4.3918891,4.47972298}, {2.83764482,4.06613599}, {0.6285848,3.7428304}, {0,5}}} id=3
2000SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.59800847,4.53457168}, {4.79261321,4.59101022}, {4.97048616,4.64555883}}} id=3
2001SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5999999,5}}} id=2
2002SkOpAngle::after [2/6] 25/25 tStart=0.695944637 tEnd=0.8 < [3/10] 29/29 tStart=0.6285848 tEnd=0.711945896 < [2/5] 9/9 tStart=0.695944637 tEnd=0 T 4
2003SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5999999,5}}} id=2
2004SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.59800847,4.53457168}, {4.79261321,4.59101022}, {4.97048616,4.64555883}}} id=3
2005SkOpAngle::afterPart {{{4.3918891,4.47972298}, {3,1}}} id=2
2006SkOpSegment::sortAngles [2] tStart=0.8 [15]
2007SkOpAngle::after [2/7] 9/9 tStart=0.8 tEnd=0.695944637 < [4/15] 31/31 tStart=0.233333333 tEnd=0.169238247 < [2/8] 25/25 tStart=0.8 tEnd=1 F 4
2008SkOpAngle::afterPart {{{4.5999999,5}, {4.3918891,4.47972298}}} id=2
2009SkOpAngle::afterPart {{{4.5999999,5}, {4.9845705,5}}} id=4
2010SkOpAngle::afterPart {{{4.5999999,5}, {5,6}}} id=2
2011SkOpAngle::after [2/7] 9/9 tStart=0.8 tEnd=0.695944637 < [4/16] 15/15 tStart=0.233333333 tEnd=1 < [2/8] 25/25 tStart=0.8 tEnd=1 T 4
2012SkOpAngle::afterPart {{{4.5999999,5}, {4.3918891,4.47972298}}} id=2
2013SkOpAngle::afterPart {{{4.5999999,5}, {0,5}}} id=4
2014SkOpAngle::afterPart {{{4.5999999,5}, {5,6}}} id=2
2015SkOpSegment::sortAngles [3] tStart=0.6285848 [14]
2016SkOpSegment::sortAngles [3] tStart=0.711945896 [10]
2017SkOpSegment::sortAngles [4] tStart=0.169238247 [12]
2018SkOpSegment::sortAngles [4] tStart=0.233333333 [16]
2019SkOpSegment::debugShowActiveSpans id=1 (5,6 5,0 3,1) t=0 (5,6) tEnd=0.087833599 windSum=? windValue=1 oppValue=0
2020SkOpSegment::debugShowActiveSpans id=1 (5,6 5,0 3,1) t=0.087833599 (4.9845705,5) tEnd=0.121478342 windSum=? windValue=1 oppValue=0
2021SkOpSegment::debugShowActiveSpans id=1 (5,6 5,0 3,1) t=0.121478342 (4.97048616,4.64555883) tEnd=1 windSum=? windValue=1 oppValue=0
2022SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0 (3,1) tEnd=0.695944637 windSum=? windValue=1 oppValue=0
2023SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0.695944637 (4.3918891,4.47972298) tEnd=0.8 windSum=? windValue=1 oppValue=0
2024SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0.8 (4.5999999,5) tEnd=1 windSum=? windValue=1 oppValue=0
2025SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 6,5 6,5) t=0 (0,5) tEnd=0.6285848 windSum=? windValue=1 oppValue=0
2026SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 6,5 6,5) t=0.6285848 (4.3918891,4.47972298) tEnd=0.711945896 windSum=? windValue=1 oppValue=0
2027SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 6,5 6,5) t=0.711945896 (4.97048616,4.64555883) tEnd=1 windSum=? windValue=1 oppValue=0
2028SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0 (6,5) tEnd=0.169238247 windSum=? windValue=1 oppValue=0
2029SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0.169238247 (4.9845705,5) tEnd=0.233333333 windSum=? windValue=1 oppValue=0
2030SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0.233333333 (4.5999999,5) tEnd=1 windSum=? windValue=1 oppValue=0
2031-SkOpSegment::findTop-
2032SkOpAngle::dumpOne [1/17] next=2/18 sect=1/25 s=1 [2] e=0.121478342 [9] sgn=1 windVal=1 windSum=?
2033SkOpAngle::dumpOne [2/18] next=1/17 sect=25/25 s=0 [3] e=0.695944637 [13] sgn=-1 windVal=1 windSum=?
2034SkOpSegment::findTop id=1 s=0.121478342 e=1 cw=0 swap=1 inflections=0 monotonic=0
2035SkOpSegment::markWinding id=1 (5,6 5,0 3,1) t=0.121478342 [9] (4.97048616,4.64555883) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2036SkOpSegment::markWinding id=1 (5,6 5,0 3,1) t=0.121478342 [9] (4.97048616,4.64555883) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2037SkOpSegment::nextChase mismatched signs
2038SkOpSegment::markWinding id=2 (3,1 5,6) t=0 [3] (3,1) tEnd=0.695944637 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2039SkOpSegment::activeOp id=1 t=1 tEnd=0.121478342 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
2040SkOpSegment::markWinding id=3 (0,5 1,3 6,5 6,5) t=0.6285848 [14] (4.3918891,4.47972298) tEnd=0.711945896 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
2041SkOpSegment::markAngle last segment=3 span=14 windSum=-1
2042SkOpSegment::markWinding id=1 (5,6 5,0 3,1) t=0.087833599 [11] (4.9845705,5) tEnd=0.121478342 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2043SkOpSegment::markAngle last segment=1 span=11 windSum=1
2044SkOpSegment::markWinding id=3 (0,5 1,3 6,5 6,5) t=0.711945896 [10] (4.97048616,4.64555883) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2045SkOpSegment::markWinding id=4 (6,5 0,5) t=0 [7] (6,5) tEnd=0.169238247 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2046SkOpSegment::markAngle last segment=4 span=12 windSum=?
2047SkOpSegment::findNextOp
2048SkOpAngle::dumpOne [1/4] next=3/11 sect=9/9 s=0.121478342 [9] e=1 [2] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
2049SkOpAngle::dumpOne [3/11] next=1/3 sect=13/13 s=0.711945896 [10] e=0.6285848 [14] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
2050SkOpAngle::dumpOne [1/3] next=3/12 sect=25/25 s=0.121478342 [9] e=0.087833599 [11] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1
2051SkOpAngle::dumpOne [3/12] next=1/4 sect=29/29 s=0.711945896 [10] e=1 [6] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
2052SkOpSegment::activeOp id=3 t=0.711945896 tEnd=0.6285848 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
2053SkOpSegment::findNextOp chase.append segment=3 span=14 windSum=-1
2054SkOpSegment::activeOp id=1 t=0.121478342 tEnd=0.087833599 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
2055SkOpSegment::markDone id=1 (5,6 5,0 3,1) t=0.087833599 [11] (4.9845705,5) tEnd=0.121478342 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
2056SkOpSegment::findNextOp chase.append segment=1 span=11 windSum=1
2057SkOpSegment::activeOp id=3 t=0.711945896 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
2058SkOpSegment::markDone id=3 (0,5 1,3 6,5 6,5) t=0.711945896 [10] (4.97048616,4.64555883) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2059SkOpSegment::markDone id=4 (6,5 0,5) t=0 [7] (6,5) tEnd=0.169238247 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2060SkOpSegment::findNextOp chase.append segment=4 span=12 windSum=-2147483647
2061SkOpSegment::markDone id=1 (5,6 5,0 3,1) t=0.121478342 [9] (4.97048616,4.64555883) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2062SkOpSegment::findNextOp from:[1] to:[3] start=3891316 end=3891700
2063bridgeOp current id=1 from=(3,1) to=(4.97048616,4.64555883)
2064path.moveTo(3,1);
2065path.quadTo(4.75704336,0.121478274, 4.97048616,4.64555883);
2066SkOpSegment::markWinding id=3 (0,5 1,3 6,5 6,5) t=0 [5] (0,5) tEnd=0.6285848 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2067SkOpSegment::markWinding id=4 (6,5 0,5) t=0.233333333 [16] (4.5999999,5) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2068SkOpSegment::markAngle last segment=4 span=16 windSum=-1
2069SkOpSegment::markWinding id=2 (3,1 5,6) t=0.695944637 [13] (4.3918891,4.47972298) tEnd=0.8 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2070SkOpSegment::markAngle last segment=2 span=15 windSum=?
2071SkOpSegment::findNextOp
2072SkOpAngle::dumpOne [3/10] next=2/5 sect=29/29 s=0.6285848 [14] e=0.711945896 [10] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
2073SkOpAngle::dumpOne [2/5] next=3/9 sect=9/9 s=0.695944637 [13] e=0 [3] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0
2074SkOpAngle::dumpOne [3/9] next=2/6 sect=13/17 s=0.6285848 [14] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
2075SkOpAngle::dumpOne [2/6] next=3/10 sect=25/25 s=0.695944637 [13] e=0.8 [15] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1
2076SkOpSegment::activeOp id=2 t=0.695944637 tEnd=0 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
2077SkOpSegment::activeOp id=3 t=0.6285848 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
2078SkOpSegment::markDone id=3 (0,5 1,3 6,5 6,5) t=0 [5] (0,5) tEnd=0.6285848 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2079SkOpSegment::markDone id=4 (6,5 0,5) t=0.233333333 [16] (4.5999999,5) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2080SkOpSegment::findNextOp chase.append segment=4 span=16 windSum=-1
2081SkOpSegment::activeOp id=2 t=0.695944637 tEnd=0.8 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
2082SkOpSegment::markDone id=2 (3,1 5,6) t=0.695944637 [13] (4.3918891,4.47972298) tEnd=0.8 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
2083SkOpSegment::findNextOp chase.append segment=2 span=15 windSum=-2147483647
2084SkOpSegment::markDone id=3 (0,5 1,3 6,5 6,5) t=0.6285848 [14] (4.3918891,4.47972298) tEnd=0.711945896 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
2085SkOpSegment::findNextOp from:[3] to:[2] start=3891604 end=3890508
2086bridgeOp current id=3 from=(4.97048616,4.64555883) to=(4.3918891,4.47972298)
2087path.cubicTo(4.79261303,4.59101009, 4.59800863,4.53457165, 4.3918891,4.47972298);
2088SkOpSegment::nextChase mismatched signs
2089SkOpSegment::findNextOp simple
2090SkOpSegment::markDone id=2 (3,1 5,6) t=0 [3] (3,1) tEnd=0.695944637 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2091bridgeOp current id=2 from=(4.3918891,4.47972298) to=(3,1)
2092path.lineTo(3,1);
2093path.close();
2094SkOpSegment::markWinding id=2 (3,1 5,6) t=0.8 [15] (4.5999999,5) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2095SkOpSegment::markWinding id=1 (5,6 5,0 3,1) t=0 [1] (5,6) tEnd=0.087833599 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2096SkOpSegment::markAngle last segment=1 span=11 windSum=1
2097SkOpSegment::markWinding id=4 (6,5 0,5) t=0.169238247 [12] (4.9845705,5) tEnd=0.233333333 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
2098SkOpSegment::markAngle last segment=4 span=12 windSum=-1
2099SkOpSegment::debugShowActiveSpans id=1 (5,6 5,0 3,1) t=0 (5,6) tEnd=0.087833599 windSum=1 windValue=1 oppValue=0
2100SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0.8 (4.5999999,5) tEnd=1 windSum=1 windValue=1 oppValue=0
2101SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0.169238247 (4.9845705,5) tEnd=0.233333333 windSum=-1 windValue=1 oppValue=0
2102SkOpSegment::activeOp id=2 t=0.8 tEnd=1 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
2103SkOpSegment::findNextOp simple
2104SkOpSegment::markDone id=2 (3,1 5,6) t=0.8 [15] (4.5999999,5) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2105bridgeOp current id=2 from=(4.5999999,5) to=(5,6)
2106SkOpSegment::findNextOp
2107SkOpAngle::dumpOne [1/1] next=4/13 sect=25/25 s=0.087833599 [11] e=0 [1] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0
2108SkOpAngle::dumpOne [4/13] next=1/2 sect=31/31 s=0.169238247 [12] e=0 [7] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
2109SkOpAngle::dumpOne [1/2] next=4/14 sect=9/9 s=0.087833599 [11] e=0.121478342 [9] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 done
2110SkOpAngle::dumpOne [4/14] next=1/1 sect=15/15 s=0.169238247 [12] e=0.233333333 [16] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
2111SkOpSegment::activeOp id=4 t=0.169238247 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
2112SkOpSegment::activeOp id=1 t=0.087833599 tEnd=0.121478342 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
2113SkOpSegment::activeOp id=4 t=0.169238247 tEnd=0.233333333 op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
2114SkOpSegment::markDone id=1 (5,6 5,0 3,1) t=0 [1] (5,6) tEnd=0.087833599 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2115SkOpSegment::findNextOp from:[1] to:[4] start=3891508 end=3891892
2116bridgeOp current id=1 from=(5,6) to=(4.9845705,5)
2117path.moveTo(4.5999999,5);
2118path.lineTo(5,6);
2119path.quadTo(5,5.47299862, 4.9845705,5);
2120SkOpSegment::findNextOp
2121SkOpAngle::dumpOne [4/15] next=2/7 sect=31/31 s=0.233333333 [16] e=0.169238247 [12] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
2122SkOpAngle::dumpOne [2/7] next=4/16 sect=9/9 s=0.8 [15] e=0.695944637 [13] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1 done
2123SkOpAngle::dumpOne [4/16] next=2/8 sect=15/15 s=0.233333333 [16] e=1 [8] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
2124SkOpAngle::dumpOne [2/8] next=4/15 sect=25/25 s=0.8 [15] e=1 [4] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
2125SkOpSegment::activeOp id=2 t=0.8 tEnd=0.695944637 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
2126SkOpSegment::activeOp id=4 t=0.233333333 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
2127SkOpSegment::activeOp id=2 t=0.8 tEnd=1 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
2128SkOpSegment::markDone id=4 (6,5 0,5) t=0.169238247 [12] (4.9845705,5) tEnd=0.233333333 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
2129SkOpSegment::findNextOp from:[4] to:[2] start=3891796 end=3890604
2130bridgeOp current id=4 from=(4.9845705,5) to=(4.5999999,5)
2131path.lineTo(4.5999999,5);
2132path.close();
2133</div>
2134
2135<div id="cubicOp136">
2136seg=1 {{{5, 6}, {5, 6}, {5, 0}, {3, 1}}}
2137seg=2 {{{3, 1}, {5, 6}}}
2138op diff
2139seg=3 {{{0, 5}, {1, 3}, {6, 5}, {6, 5}}}
2140seg=4 {{{6, 5}, {0, 5}}}
2141debugShowCubicLineIntersection wtTs[0]=0 {{{5,6}, {5,6}, {5,0}, {3,1}}} {{5,6}} wtTs[1]=1 {{3,1}} wnTs[0]=1 {{{3,1}, {5,6}}} wnTs[1]=0
2142debugShowCubicIntersection wtTs[0]=0.312911718 {{{5,6}, {5,6}, {5,0}, {3,1}}} {{4.93872309,4.63585138}} wnTs[0]=0.707011 {{{0,5}, {1,3}, {6,5}, {6,5}}}
2143SkOpSegment::addT insert t=0.312911718 segID=1 spanID=9
2144SkOpSegment::addT insert t=0.707011363 segID=3 spanID=10
2145debugShowCubicLineIntersection wtTs[0]=0.261734846 {{{5,6}, {5,6}, {5,0}, {3,1}}} {{4.96413946,5}} wnTs[0]=0.172643 {{{6,5}, {0,5}}}
2146SkOpSegment::addT insert t=0.261734846 segID=1 spanID=11
2147SkOpSegment::addT insert t=0.172643393 segID=4 spanID=12
2148debugShowCubicLineIntersection wtTs[0]=0.6285848 {{{0,5}, {1,3}, {6,5}, {6,5}}} {{4.3918891,4.47972298}} wnTs[0]=0.695945 {{{3,1}, {5,6}}}
2149SkOpSegment::addT insert t=0.695944637 segID=2 spanID=13
2150SkOpSegment::addT insert t=0.6285848 segID=3 spanID=14
2151debugShowLineIntersection wtTs[0]=0.8 {{{3,1}, {5,6}}} {{4.5999999,5}} wnTs[0]=0.233333 {{{6,5}, {0,5}}}
2152SkOpSegment::addT insert t=0.8 segID=2 spanID=15
2153SkOpSegment::addT insert t=0.233333333 segID=4 spanID=16
2154debugShowCubicLineIntersection wtTs[0]=0 {{{0,5}, {1,3}, {6,5}, {6,5}}} {{0,5}} wtTs[1]=1 {{6,5}} wnTs[0]=1 {{{6,5}, {0,5}}} wnTs[1]=0
2155SkOpSegment::sortAngles [1] tStart=0.261734846 [11]
2156SkOpAngle::after [1/1] 25/25 tStart=0.261734846 tEnd=0 < [4/13] 31/31 tStart=0.172643393 tEnd=0 < [1/2] 9/9 tStart=0.261734846 tEnd=0.312911718 T 4
2157SkOpAngle::afterPart {{{4.96413946,5}, {4.99999982,5.58896922}, {5,6}, {5,6}}} id=1
2158SkOpAngle::afterPart {{{4.96413946,5}, {6,5}}} id=4
2159SkOpAngle::afterPart {{{4.96413946,5}, {4.95712771,4.88483917}, {4.94874493,4.76287555}, {4.93872309,4.63585138}}} id=1
2160SkOpAngle::after [1/1] 25/25 tStart=0.261734846 tEnd=0 < [4/14] 15/15 tStart=0.172643393 tEnd=0.233333333 < [4/13] 31/31 tStart=0.172643393 tEnd=0 F 4
2161SkOpAngle::afterPart {{{4.96413946,5}, {4.99999982,5.58896922}, {5,6}, {5,6}}} id=1
2162SkOpAngle::afterPart {{{4.96413946,5}, {4.5999999,5}}} id=4
2163SkOpAngle::afterPart {{{4.96413946,5}, {6,5}}} id=4
2164SkOpAngle::after [4/13] 31/31 tStart=0.172643393 tEnd=0 < [4/14] 15/15 tStart=0.172643393 tEnd=0.233333333 < [1/2] 9/9 tStart=0.261734846 tEnd=0.312911718 F 4
2165SkOpAngle::afterPart {{{4.96413946,5}, {6,5}}} id=4
2166SkOpAngle::afterPart {{{4.96413946,5}, {4.5999999,5}}} id=4
2167SkOpAngle::afterPart {{{4.96413946,5}, {4.95712771,4.88483917}, {4.94874493,4.76287555}, {4.93872309,4.63585138}}} id=1
2168SkOpAngle::after [1/2] 9/9 tStart=0.261734846 tEnd=0.312911718 < [4/14] 15/15 tStart=0.172643393 tEnd=0.233333333 < [1/1] 25/25 tStart=0.261734846 tEnd=0 T 4
2169SkOpAngle::afterPart {{{4.96413946,5}, {4.95712771,4.88483917}, {4.94874493,4.76287555}, {4.93872309,4.63585138}}} id=1
2170SkOpAngle::afterPart {{{4.96413946,5}, {4.5999999,5}}} id=4
2171SkOpAngle::afterPart {{{4.96413946,5}, {4.99999982,5.58896922}, {5,6}, {5,6}}} id=1
2172SkOpSegment::sortAngles [1] tStart=0.312911718 [9]
2173SkOpAngle::after [1/3] 25/25 tStart=0.312911718 tEnd=0.261734846 < [3/11] 13/13 tStart=0.707011363 tEnd=0.6285848 < [1/4] 9/9 tStart=0.312911718 tEnd=1 F 4
2174SkOpAngle::afterPart {{{4.93872309,4.63585138}, {4.94874493,4.76287555}, {4.95712771,4.88483917}, {4.96413946,5}}} id=1
2175SkOpAngle::afterPart {{{4.93872309,4.63585138}, {4.76953305,4.58433293}, {4.5858073,4.53132493}, {4.3918891,4.47972298}}} id=3
2176SkOpAngle::afterPart {{{4.93872309,4.63585138}, {4.80417232,2.9304557}, {4.37417656,0.312911718}, {3,1}}} id=1
2177SkOpAngle::after [1/3] 25/25 tStart=0.312911718 tEnd=0.261734846 < [3/12] 29/29 tStart=0.707011363 tEnd=1 < [1/4] 9/9 tStart=0.312911718 tEnd=1 T 4
2178SkOpAngle::afterPart {{{4.93872309,4.63585138}, {4.94874493,4.76287555}, {4.95712771,4.88483917}, {4.96413946,5}}} id=1
2179SkOpAngle::afterPart {{{4.93872309,4.63585138}, {5.57078903,4.82831577}, {6,5}, {6,5}}} id=3
2180SkOpAngle::afterPart {{{4.93872309,4.63585138}, {4.80417232,2.9304557}, {4.37417656,0.312911718}, {3,1}}} id=1
2181SkOpSegment::sortAngles [2] tStart=0.695944637 [13]
2182SkOpAngle::after [2/5] 9/9 tStart=0.695944637 tEnd=0 < [3/9] 13/17 tStart=0.6285848 tEnd=0 < [2/6] 25/25 tStart=0.695944637 tEnd=0.8 T 4
2183SkOpAngle::afterPart {{{4.3918891,4.47972298}, {3,1}}} id=2
2184SkOpAngle::afterPart {{{4.3918891,4.47972298}, {2.83764482,4.06613599}, {0.6285848,3.7428304}, {0,5}}} id=3
2185SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5999999,5}}} id=2
2186SkOpAngle::after [2/5] 9/9 tStart=0.695944637 tEnd=0 < [3/10] 29/29 tStart=0.6285848 tEnd=0.707011363 < [3/9] 13/17 tStart=0.6285848 tEnd=0 F 4
2187SkOpAngle::afterPart {{{4.3918891,4.47972298}, {3,1}}} id=2
2188SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5858073,4.53132493}, {4.76953305,4.58433293}, {4.93872309,4.63585138}}} id=3
2189SkOpAngle::afterPart {{{4.3918891,4.47972298}, {2.83764482,4.06613599}, {0.6285848,3.7428304}, {0,5}}} id=3
2190SkOpAngle::after [3/9] 13/17 tStart=0.6285848 tEnd=0 < [3/10] 29/29 tStart=0.6285848 tEnd=0.707011363 < [2/6] 25/25 tStart=0.695944637 tEnd=0.8 F 4
2191SkOpAngle::afterPart {{{4.3918891,4.47972298}, {2.83764482,4.06613599}, {0.6285848,3.7428304}, {0,5}}} id=3
2192SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5858073,4.53132493}, {4.76953305,4.58433293}, {4.93872309,4.63585138}}} id=3
2193SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5999999,5}}} id=2
2194SkOpAngle::after [2/6] 25/25 tStart=0.695944637 tEnd=0.8 < [3/10] 29/29 tStart=0.6285848 tEnd=0.707011363 < [2/5] 9/9 tStart=0.695944637 tEnd=0 T 4
2195SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5999999,5}}} id=2
2196SkOpAngle::afterPart {{{4.3918891,4.47972298}, {4.5858073,4.53132493}, {4.76953305,4.58433293}, {4.93872309,4.63585138}}} id=3
2197SkOpAngle::afterPart {{{4.3918891,4.47972298}, {3,1}}} id=2
2198SkOpSegment::sortAngles [2] tStart=0.8 [15]
2199SkOpAngle::after [2/7] 9/9 tStart=0.8 tEnd=0.695944637 < [4/15] 31/31 tStart=0.233333333 tEnd=0.172643393 < [2/8] 25/25 tStart=0.8 tEnd=1 F 4
2200SkOpAngle::afterPart {{{4.5999999,5}, {4.3918891,4.47972298}}} id=2
2201SkOpAngle::afterPart {{{4.5999999,5}, {4.96413946,5}}} id=4
2202SkOpAngle::afterPart {{{4.5999999,5}, {5,6}}} id=2
2203SkOpAngle::after [2/7] 9/9 tStart=0.8 tEnd=0.695944637 < [4/16] 15/15 tStart=0.233333333 tEnd=1 < [2/8] 25/25 tStart=0.8 tEnd=1 T 4
2204SkOpAngle::afterPart {{{4.5999999,5}, {4.3918891,4.47972298}}} id=2
2205SkOpAngle::afterPart {{{4.5999999,5}, {0,5}}} id=4
2206SkOpAngle::afterPart {{{4.5999999,5}, {5,6}}} id=2
2207SkOpSegment::sortAngles [3] tStart=0.6285848 [14]
2208SkOpSegment::sortAngles [3] tStart=0.707011363 [10]
2209SkOpSegment::sortAngles [4] tStart=0.172643393 [12]
2210SkOpSegment::sortAngles [4] tStart=0.233333333 [16]
2211SkOpSegment::debugShowActiveSpans id=1 (5,6 5,6 5,0 3,1) t=0 (5,6) tEnd=0.261734846 windSum=? windValue=1 oppValue=0
2212SkOpSegment::debugShowActiveSpans id=1 (5,6 5,6 5,0 3,1) t=0.261734846 (4.96413946,5) tEnd=0.312911718 windSum=? windValue=1 oppValue=0
2213SkOpSegment::debugShowActiveSpans id=1 (5,6 5,6 5,0 3,1) t=0.312911718 (4.93872309,4.63585138) tEnd=1 windSum=? windValue=1 oppValue=0
2214SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0 (3,1) tEnd=0.695944637 windSum=? windValue=1 oppValue=0
2215SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0.695944637 (4.3918891,4.47972298) tEnd=0.8 windSum=? windValue=1 oppValue=0
2216SkOpSegment::debugShowActiveSpans id=2 (3,1 5,6) t=0.8 (4.5999999,5) tEnd=1 windSum=? windValue=1 oppValue=0
2217SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 6,5 6,5) t=0 (0,5) tEnd=0.6285848 windSum=? windValue=1 oppValue=0
2218SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 6,5 6,5) t=0.6285848 (4.3918891,4.47972298) tEnd=0.707011363 windSum=? windValue=1 oppValue=0
2219SkOpSegment::debugShowActiveSpans id=3 (0,5 1,3 6,5 6,5) t=0.707011363 (4.93872309,4.63585138) tEnd=1 windSum=? windValue=1 oppValue=0
2220SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0 (6,5) tEnd=0.172643393 windSum=? windValue=1 oppValue=0
2221SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0.172643393 (4.96413946,5) tEnd=0.233333333 windSum=? windValue=1 oppValue=0
2222SkOpSegment::debugShowActiveSpans id=4 (6,5 0,5) t=0.233333333 (4.5999999,5) tEnd=1 windSum=? windValue=1 oppValue=0
2223-SkOpSegment::findTop-
2224SkOpAngle::dumpOne [1/17] next=2/18 sect=1/25 s=1 [2] e=0.312911718 [9] sgn=1 windVal=1 windSum=?
2225SkOpAngle::dumpOne [2/18] next=1/17 sect=25/25 s=0 [3] e=0.695944637 [13] sgn=-1 windVal=1 windSum=?
2226SkOpSegment::findTop id=1 s=0.312911718 e=1 cw=0 swap=0 inflections=0 monotonic=0
2227SkOpSegment::markWinding id=1 (5,6 5,6 5,0 3,1) t=0.312911718 [9] (4.93872309,4.63585138) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2228SkOpSegment::nextChase mismatched signs
2229SkOpSegment::markWinding id=2 (3,1 5,6) t=0 [3] (3,1) tEnd=0.695944637 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2230SkOpSegment::markWinding id=1 (5,6 5,6 5,0 3,1) t=0.312911718 [9] (4.93872309,4.63585138) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2231SkOpSegment::activeOp id=1 t=0.312911718 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
2232SkOpSegment::nextChase mismatched signs
2233SkOpSegment::findNextOp simple
2234SkOpSegment::markDone id=1 (5,6 5,6 5,0 3,1) t=0.312911718 [9] (4.93872309,4.63585138) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2235bridgeOp current id=1 from=(4.93872309,4.63585138) to=(3,1)
2236path.moveTo(4.93872309,4.63585138);
2237path.cubicTo(4.80417252,2.93045568, 4.3741765,0.312911719, 3,1);
2238SkOpSegment::markWinding id=3 (0,5 1,3 6,5 6,5) t=0 [5] (0,5) tEnd=0.6285848 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2239SkOpSegment::markWinding id=4 (6,5 0,5) t=0.233333333 [16] (4.5999999,5) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2240SkOpSegment::markAngle last segment=4 span=16 windSum=-1
2241SkOpSegment::markWinding id=2 (3,1 5,6) t=0.695944637 [13] (4.3918891,4.47972298) tEnd=0.8 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2242SkOpSegment::markAngle last segment=2 span=15 windSum=?
2243SkOpSegment::markWinding id=3 (0,5 1,3 6,5 6,5) t=0.6285848 [14] (4.3918891,4.47972298) tEnd=0.707011363 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2244SkOpSegment::markAngle last segment=3 span=10 windSum=?
2245SkOpSegment::findNextOp
2246SkOpAngle::dumpOne [2/5] next=3/9 sect=9/9 s=0.695944637 [13] e=0 [3] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
2247SkOpAngle::dumpOne [3/9] next=2/6 sect=13/17 s=0.6285848 [14] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
2248SkOpAngle::dumpOne [2/6] next=3/10 sect=25/25 s=0.695944637 [13] e=0.8 [15] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
2249SkOpAngle::dumpOne [3/10] next=2/5 sect=29/29 s=0.6285848 [14] e=0.707011363 [10] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
2250SkOpSegment::activeOp id=3 t=0.6285848 tEnd=0 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
2251SkOpSegment::findNextOp chase.append segment=4 span=16 windSum=-1
2252SkOpSegment::activeOp id=2 t=0.695944637 tEnd=0.8 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
2253SkOpSegment::markDone id=2 (3,1 5,6) t=0.695944637 [13] (4.3918891,4.47972298) tEnd=0.8 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
2254SkOpSegment::findNextOp chase.append segment=2 span=15 windSum=-2147483647
2255SkOpSegment::activeOp id=3 t=0.6285848 tEnd=0.707011363 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
2256SkOpSegment::markDone id=3 (0,5 1,3 6,5 6,5) t=0.6285848 [14] (4.3918891,4.47972298) tEnd=0.707011363 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2257SkOpSegment::findNextOp chase.append segment=3 span=10 windSum=-2147483647
2258SkOpSegment::markDone id=2 (3,1 5,6) t=0 [3] (3,1) tEnd=0.695944637 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2259SkOpSegment::findNextOp from:[2] to:[3] start=6251004 end=6250036
2260bridgeOp current id=2 from=(3,1) to=(4.3918891,4.47972298)
2261SkOpSegment::findNextOp simple
2262SkOpSegment::markDone id=3 (0,5 1,3 6,5 6,5) t=0 [5] (0,5) tEnd=0.6285848 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
2263bridgeOp current id=3 from=(4.3918891,4.47972298) to=(0,5)
2264path.lineTo(4.3918891,4.47972298);
2265path.cubicTo(2.83764482,4.06613588, 0.628584802,3.74283051, 0,5);
2266SkOpSegment::markWinding id=2 (3,1 5,6) t=0.8 [15] (4.5999999,5) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2267SkOpSegment::markWinding id=1 (5,6 5,6 5,0 3,1) t=0 [1] (5,6) tEnd=0.261734846 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2268SkOpSegment::markAngle last segment=1 span=11 windSum=?
2269SkOpSegment::markWinding id=4 (6,5 0,5) t=0.172643393 [12] (4.96413946,5) tEnd=0.233333333 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2270SkOpSegment::markAngle last segment=4 span=12 windSum=-1
2271SkOpSegment::findNextOp
2272SkOpAngle::dumpOne [4/16] next=2/8 sect=15/15 s=0.233333333 [16] e=1 [8] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
2273SkOpAngle::dumpOne [2/8] next=4/15 sect=25/25 s=0.8 [15] e=1 [4] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
2274SkOpAngle::dumpOne [4/15] next=2/7 sect=31/31 s=0.233333333 [16] e=0.172643393 [12] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
2275SkOpAngle::dumpOne [2/7] next=4/16 sect=9/9 s=0.8 [15] e=0.695944637 [13] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
2276SkOpSegment::activeOp id=2 t=0.8 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
2277SkOpSegment::findNextOp chase.append segment=1 span=11 windSum=-2147483647
2278SkOpSegment::activeOp id=4 t=0.233333333 tEnd=0.172643393 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
2279SkOpSegment::markDone id=4 (6,5 0,5) t=0.172643393 [12] (4.96413946,5) tEnd=0.233333333 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2280SkOpSegment::findNextOp chase.append segment=4 span=12 windSum=-1
2281SkOpSegment::activeOp id=2 t=0.8 tEnd=0.695944637 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
2282SkOpSegment::markDone id=4 (6,5 0,5) t=0.233333333 [16] (4.5999999,5) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
2283SkOpSegment::findNextOp from:[4] to:[2] start=6251100 end=6249908
2284bridgeOp current id=4 from=(0,5) to=(4.5999999,5)
2285SkOpSegment::findNextOp simple
2286SkOpSegment::markDone id=2 (3,1 5,6) t=0.8 [15] (4.5999999,5) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2287bridgeOp current id=2 from=(4.5999999,5) to=(5,6)
2288path.lineTo(4.5999999,5);
2289SkOpSegment::markWinding id=4 (6,5 0,5) t=0 [7] (6,5) tEnd=0.172643393 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2290SkOpSegment::markWinding id=3 (0,5 1,3 6,5 6,5) t=0.707011363 [10] (4.93872309,4.63585138) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2291SkOpSegment::markAngle last segment=3 span=10 windSum=-1
2292SkOpSegment::markWinding id=1 (5,6 5,6 5,0 3,1) t=0.261734846 [11] (4.96413946,5) tEnd=0.312911718 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2293SkOpSegment::markAngle last segment=1 span=9 windSum=-1
2294SkOpSegment::findNextOp
2295SkOpAngle::dumpOne [1/1] next=4/13 sect=25/25 s=0.261734846 [11] e=0 [1] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
2296SkOpAngle::dumpOne [4/13] next=1/2 sect=31/31 s=0.172643393 [12] e=0 [7] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
2297SkOpAngle::dumpOne [1/2] next=4/14 sect=9/9 s=0.261734846 [11] e=0.312911718 [9] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
2298SkOpAngle::dumpOne [4/14] next=1/1 sect=15/15 s=0.172643393 [12] e=0.233333333 [16] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
2299SkOpSegment::activeOp id=4 t=0.172643393 tEnd=0 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
2300SkOpSegment::activeOp id=1 t=0.261734846 tEnd=0.312911718 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
2301SkOpSegment::markDone id=1 (5,6 5,6 5,0 3,1) t=0.261734846 [11] (4.96413946,5) tEnd=0.312911718 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
2302SkOpSegment::findNextOp chase.append segment=1 span=9 windSum=-1
2303SkOpSegment::activeOp id=4 t=0.172643393 tEnd=0.233333333 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
2304SkOpSegment::markDone id=1 (5,6 5,6 5,0 3,1) t=0 [1] (5,6) tEnd=0.261734846 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2305SkOpSegment::findNextOp from:[1] to:[4] start=6250812 end=6250308
2306bridgeOp current id=1 from=(5,6) to=(4.96413946,5)
2307path.lineTo(5,6);
2308path.cubicTo(5,6, 5,5.58896923, 4.96413946,5);
2309SkOpSegment::findNextOp simple
2310SkOpSegment::markDone id=4 (6,5 0,5) t=0 [7] (6,5) tEnd=0.172643393 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
2311bridgeOp current id=4 from=(4.96413946,5) to=(6,5)
2312SkOpSegment::findNextOp
2313SkOpAngle::dumpOne [3/12] next=1/4 sect=29/29 s=0.707011363 [10] e=1 [6] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
2314SkOpAngle::dumpOne [1/4] next=3/11 sect=9/9 s=0.312911718 [9] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
2315SkOpAngle::dumpOne [3/11] next=1/3 sect=13/13 s=0.707011363 [10] e=0.6285848 [14] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
2316SkOpAngle::dumpOne [1/3] next=3/12 sect=25/25 s=0.312911718 [9] e=0.261734846 [11] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
2317SkOpSegment::activeOp id=1 t=0.312911718 tEnd=1 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
2318SkOpSegment::activeOp id=3 t=0.707011363 tEnd=0.6285848 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
2319SkOpSegment::activeOp id=1 t=0.312911718 tEnd=0.261734846 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
2320SkOpSegment::markDone id=3 (0,5 1,3 6,5 6,5) t=0.707011363 [10] (4.93872309,4.63585138) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
2321SkOpSegment::findNextOp from:[3] to:[1] start=6250524 end=16839328
2322bridgeOp current id=3 from=(6,5) to=(4.93872309,4.63585138)
2323path.lineTo(6,5);
2324path.cubicTo(6,5, 5.57078886,4.82831573, 4.93872309,4.63585138);
2325path.close();
2326</div>
2327
2328<div id="loop16">
2329seg=1 {{{1, 5}, {0.655789495f, 3.62315798f}, {1.29891956f, 3.23365664f}, {1.70591938f, 3.38288999f}}}
2330seg=2 {{{1.70591938f, 3.38288999f}, {2.48133492f, 3.66720891f}, {2.39964914f, 5.90701771f}, {-7, 7}}}
2331seg=3 {{{-7, 7}, {1, 5}}}
2332op sect
2333seg=4 {{{0, 1}, {5.22302151f, 4.08633089f}, {-0.544847488f, 5.81993675f}, {-1.40665555f, 5.83952332f}}}
2334seg=5 {{{-1.40665555f, 5.83952332f}, {-1.75486088f, 5.84743738f}, {-1.30215836f, 5.57553959f}, {1, 5}}}
2335seg=6 {{{1, 5}, {0, 1}}}
2336debugShowCubicIntersection wtTs[0]=0.596717927 {{{0,1}, {5.22302151,4.08633089}, {-0.544847488,5.81993675}, {-1.40665555,5.83952332}}} {{0.987057447,5.00323725}} wtTs[1]=1 {{-1.40665555,5.83952332}} wnTs[0]=0.998123 {{{-1.40665555,5.83952332}, {-1.75486088,5.84743738}, {-1.30215836,5.57553959}, {1,5}}} wnTs[1]=0
2337SkOpSegment::addT insert t=0.596717927 segID=4 spanID=13
2338SkOpSegment::addT insert t=0.998123104 segID=5 spanID=14
2339debugShowCubicLineIntersection wtTs[0]=0 {{{0,1}, {5.22302151,4.08633089}, {-0.544847488,5.81993675}, {-1.40665555,5.83952332}}} {{0,1}} wtTs[1]=0.59493238 {{0.999006689,4.99602699}} wnTs[0]=1 {{{1,5}, {0,1}}} wnTs[1]=0.000993298772
2340SkOpSegment::addT insert t=0.59493238 segID=4 spanID=15
2341SkOpSegment::addT insert t=0.000993298772 segID=6 spanID=16
2342debugShowCubicLineIntersection wtTs[0]=1 {{{-1.40665555,5.83952332}, {-1.75486088,5.84743738}, {-1.30215836,5.57553959}, {1,5}}} {{1,5}} wnTs[0]=0 {{{1,5}, {0,1}}}
2343debugShowCubicIntersection wtTs[0]=0.594931837 {{{0,1}, {5.22302151,4.08633089}, {-0.544847488,5.81993675}, {-1.40665555,5.83952332}}} {{0.999010324,4.99602461}} wnTs[0]=0.000963087 {{{1,5}, {0.655789495,3.62315798}, {1.29891956,3.23365664}, {1.70591938,3.38288999}}}
2344SkOpSegment::addT insert t=0.594931837 segID=4 spanID=17
2345SkOpSegment::addT insert t=0.000963086711 segID=1 spanID=18
2346debugShowCubicIntersection wtTs[0]=0.51391312 {{{0,1}, {5.22302151,4.08633089}, {-0.544847488,5.81993675}, {-1.40665555,5.83952332}}} {{1.50189435,4.63748884}} wtTs[1]=0.570807669 {{1.15735686,4.89566994}} wtTs[2]=0.621522123 {{0.818326533,5.10029507}} wnTs[0]=0.441854 {{{1.70591938,3.38288999}, {2.48133492,3.66720891}, {2.39964914,5.90701771}, {-7,7}}} wnTs[1]=0.501700561 wnTs[2]=0.547732168
2347SkOpSegment::addT insert t=0.51391312 segID=4 spanID=19
2348SkOpSegment::addT insert t=0.441853762 segID=2 spanID=20
2349SkOpSegment::addT insert t=0.570807669 segID=4 spanID=21
2350SkOpSegment::addT insert t=0.501700561 segID=2 spanID=22
2351SkOpSegment::addT insert t=0.621522123 segID=4 spanID=23
2352SkOpSegment::addT insert t=0.547732168 segID=2 spanID=24
2353debugShowCubicLineIntersection wtTs[0]=0.596717201 {{{0,1}, {5.22302151,4.08633089}, {-0.544847488,5.81993675}, {-1.40665555,5.83952332}}} {{0.987062335,5.00323439}} wnTs[0]=0.998383 {{{-7,7}, {1,5}}}
2354SkOpSegment::addT insert t=0.596717201 segID=4 spanID=25
2355SkOpSegment::addT insert t=0.998382791 segID=3 spanID=26
2356debugShowCubicIntersection wtTs[0]=1 {{{-1.40665555,5.83952332}, {-1.75486088,5.84743738}, {-1.30215836,5.57553959}, {1,5}}} {{1,5}} wnTs[0]=0 {{{1,5}, {0.655789495,3.62315798}, {1.29891956,3.23365664}, {1.70591938,3.38288999}}}
2357debugShowCubicIntersection wtTs[0]=0.998028054 {{{-1.40665555,5.83952332}, {-1.75486088,5.84743738}, {-1.30215836,5.57553959}, {1,5}}} {{0.986402392,5.00340128}} wnTs[0]=0.526052 {{{1.70591938,3.38288999}, {2.48133492,3.66720891}, {2.39964914,5.90701771}, {-7,7}}}
2358SkOpSegment::addT insert t=0.998028054 segID=5 spanID=27
2359SkOpSegment::addT insert t=0.526051613 segID=2 spanID=28
2360debugShowCubicLineIntersection wtTs[0]=1 {{{-1.40665555,5.83952332}, {-1.75486088,5.84743738}, {-1.30215836,5.57553959}, {1,5}}} {{1,5}} wnTs[0]=1 {{{-7,7}, {1,5}}}
2361debugShowCubicLineIntersection wtTs[0]=0 {{{1,5}, {0.655789495,3.62315798}, {1.29891956,3.23365664}, {1.70591938,3.38288999}}} {{1,5}} wnTs[0]=0 {{{1,5}, {0,1}}}
2362debugShowCubicLineIntersection wtTs[0]=0.524349463 {{{1.70591938,3.38288999}, {2.48133492,3.66720891}, {2.39964914,5.90701771}, {-7,7}}} {{0.998957574,4.99583006}} wnTs[0]=0.00104244 {{{1,5}, {0,1}}}
2363SkOpSegment::addT insert t=0.00104243869 segID=6 spanID=29
2364SkOpSegment::addT insert t=0.524349463 segID=2 spanID=30
2365debugShowLineIntersection wtTs[0]=0 {{{1,5}, {0,1}}} {{1,5}} wnTs[0]=1 {{{-7,7}, {1,5}}}
2366debugShowCubicIntersection wtTs[0]=0.00101062542 {{{1,5}, {0.655789495,3.62315798}, {1.29891956,3.23365664}, {1.70591938,3.38288999}}} {{0.998959422,4.99582863}} wtTs[1]=1 {{1.70591938,3.38288999}} wnTs[0]=0.524349 {{{1.70591938,3.38288999}, {2.48133492,3.66720891}, {2.39964914,5.90701771}, {-7,7}}} wnTs[1]=0
2367SkOpSegment::addT insert t=0.00101062542 segID=1 spanID=31
2368SkOpSegment::addT insert t=0.524348945 segID=2 spanID=32
2369debugShowCubicLineIntersection wtTs[0]=0 {{{1,5}, {0.655789495,3.62315798}, {1.29891956,3.23365664}, {1.70591938,3.38288999}}} {{1,5}} wnTs[0]=1 {{{-7,7}, {1,5}}}
2370debugShowCubicLineIntersection wtTs[0]=0.526050901 {{{1.70591938,3.38288999}, {2.48133492,3.66720891}, {2.39964914,5.90701771}, {-7,7}}} {{0.986407638,5.00339794}} wtTs[1]=1 {{-7,7}} wnTs[0]=0.998301 {{{-7,7}, {1,5}}} wnTs[1]=0
2371SkOpSegment::addT insert t=0.526050901 segID=2 spanID=33
2372SkOpSegment::addT insert t=0.998300955 segID=3 spanID=34
2373SkOpSegment::sortAngles [4] tStart=0.51391312 [19]
2374SkOpAngle::after [4/1] 1/9 tStart=0.51391312 tEnd=0 < [2/30] 1/5 tStart=0.441853762 tEnd=0 < [4/2] 17/17 tStart=0.51391312 tEnd=0.570807669 T 12
2375SkOpAngle::afterPart {{{1.50189435,4.63748884}, {2.46559084,3.81494809}, {2.68417928,2.58610594}, {0,1}}} id=4
2376SkOpAngle::afterPart {{{1.50189435,4.63748884}, {2.22382402,4.01592428}, {2.04853966,3.50851737}, {1.70591938,3.38288999}}} id=2
2377SkOpAngle::afterPart {{{1.50189435,4.63748884}, {1.39520496,4.72855109}, {1.27938319,4.81463379}, {1.15735686,4.89566994}}} id=4
2378SkOpAngle::after [4/1] 1/9 tStart=0.51391312 tEnd=0 < [2/31] 17/17 tStart=0.441853762 tEnd=0.501700561 < [2/30] 1/5 tStart=0.441853762 tEnd=0 F 5
2379SkOpAngle::afterPart {{{1.50189435,4.63748884}, {2.46559084,3.81494809}, {2.68417928,2.58610594}, {0,1}}} id=4
2380SkOpAngle::afterPart {{{1.50189435,4.63748884}, {1.40411273,4.72167654}, {1.28987138,4.80795871}, {1.15735686,4.89566994}}} id=2
2381SkOpAngle::afterPart {{{1.50189435,4.63748884}, {2.22382402,4.01592428}, {2.04853966,3.50851737}, {1.70591938,3.38288999}}} id=2
2382SkOpAngle::after [2/30] 1/5 tStart=0.441853762 tEnd=0 < [2/31] 17/17 tStart=0.441853762 tEnd=0.501700561 < [4/2] 17/17 tStart=0.51391312 tEnd=0.570807669 F 11
2383SkOpAngle::afterPart {{{1.50189435,4.63748884}, {2.22382402,4.01592428}, {2.04853966,3.50851737}, {1.70591938,3.38288999}}} id=2
2384SkOpAngle::afterPart {{{1.50189435,4.63748884}, {1.40411273,4.72167654}, {1.28987138,4.80795871}, {1.15735686,4.89566994}}} id=2
2385SkOpAngle::afterPart {{{1.50189435,4.63748884}, {1.39520496,4.72855109}, {1.27938319,4.81463379}, {1.15735686,4.89566994}}} id=4
2386SkOpAngle::after [4/2] 17/17 tStart=0.51391312 tEnd=0.570807669 < [2/31] 17/17 tStart=0.441853762 tEnd=0.501700561 < [4/1] 1/9 tStart=0.51391312 tEnd=0 T 12
2387SkOpAngle::afterPart {{{1.50189435,4.63748884}, {1.39520496,4.72855109}, {1.27938319,4.81463379}, {1.15735686,4.89566994}}} id=4
2388SkOpAngle::afterPart {{{1.50189435,4.63748884}, {1.40411273,4.72167654}, {1.28987138,4.80795871}, {1.15735686,4.89566994}}} id=2
2389SkOpAngle::afterPart {{{1.50189435,4.63748884}, {2.46559084,3.81494809}, {2.68417928,2.58610594}, {0,1}}} id=4
2390SkOpSegment::sortAngles [4] tStart=0.570807669 [21]
2391SkOpAngle::after [4/3] 1/1 tStart=0.570807669 tEnd=0.51391312 < [2/32] 1/1 tStart=0.501700561 tEnd=0.441853762 < [4/4] 17/17 tStart=0.570807669 tEnd=0.594931837 F 12
2392SkOpAngle::afterPart {{{1.15735686,4.89566994}, {1.27938319,4.81463379}, {1.39520496,4.72855109}, {1.50189435,4.63748884}}} id=4
2393SkOpAngle::afterPart {{{1.15735686,4.89566994}, {1.28987138,4.80795871}, {1.40411273,4.72167654}, {1.50189435,4.63748884}}} id=2
2394SkOpAngle::afterPart {{{1.15735686,4.89566994}, {1.10561581,4.93003052}, {1.05275924,4.96348365}, {0.999010324,4.99602461}}} id=4
2395SkOpAngle::after [4/3] 1/1 tStart=0.570807669 tEnd=0.51391312 < [2/33] 17/17 tStart=0.501700561 tEnd=0.524348945 < [4/4] 17/17 tStart=0.570807669 tEnd=0.594931837 T 11
2396SkOpAngle::afterPart {{{1.15735686,4.89566994}, {1.27938319,4.81463379}, {1.39520496,4.72855109}, {1.50189435,4.63748884}}} id=4
2397SkOpAngle::afterPart {{{1.15735686,4.89566994}, {1.10720815,4.92886332}, {1.05444048,4.9622619}, {0.998959422,4.99582863}}} id=2
2398SkOpAngle::afterPart {{{1.15735686,4.89566994}, {1.10561581,4.93003052}, {1.05275924,4.96348365}, {0.999010324,4.99602461}}} id=4
2399SkOpSegment::sortAngles [4] tStart=0.594931837 [17]
2400SkOpAngle::after [4/5] 1/1 tStart=0.594931837 tEnd=0.570807669 < [1/26] 25/25 tStart=0.000963086711 tEnd=0 < [4/6] 17/17 tStart=0.594931837 tEnd=0.59493238 F 4
2401SkOpAngle::afterPart {{{0.999010324,4.99602461}, {1.05275924,4.96348365}, {1.10561581,4.93003052}, {1.15735686,4.89566994}}} id=4
2402SkOpAngle::afterPart {{{0.999010324,4.99602461}, {0.999339999,4.9973488}, {0.999668495,4.99867398}, {1,5}}} id=1
2403SkOpAngle::afterPart {{{0.999010324,4.99602461}, {0.999009115,4.99602534}, {0.999007898,4.99602626}, {0.999006689,4.99602699}}} id=4
2404SkOpAngle::after [4/5] 1/1 tStart=0.594931837 tEnd=0.570807669 < [1/27] 9/9 tStart=0.000963086711 tEnd=0.00101062542 < [4/6] 17/17 tStart=0.594931837 tEnd=0.59493238 T 4
2405SkOpAngle::afterPart {{{0.999010324,4.99602461}, {1.05275924,4.96348365}, {1.10561581,4.93003052}, {1.15735686,4.89566994}}} id=4
2406SkOpAngle::afterPart {{{0.999010324,4.99602461}, {0.998994052,4.99595925}, {0.998975691,4.99589399}, {0.998959422,4.99582863}}} id=1
2407SkOpAngle::afterPart {{{0.999010324,4.99602461}, {0.999009115,4.99602534}, {0.999007898,4.99602626}, {0.999006689,4.99602699}}} id=4
2408SkOpSegment::sortAngles [4] tStart=0.59493238 [15]
2409SkOpAngle::after [4/7] 1/1 tStart=0.59493238 tEnd=0.594931837 < [6/21] 25/25 tStart=0.000993298772 tEnd=0 < [4/8] 17/17 tStart=0.59493238 tEnd=0.596717201 F 4
2410SkOpAngle::afterPart {{{0.999006689,4.99602699}, {0.999007898,4.99602626}, {0.999009115,4.99602534}, {0.999010324,4.99602461}}} id=4
2411SkOpAngle::afterPart {{{0.999006689,4.99602699}, {1,5}}} id=6
2412SkOpAngle::afterPart {{{0.999006689,4.99602699}, {0.995030085,4.99843453}, {0.991048617,5.00083684}, {0.987062335,5.00323439}}} id=4
2413SkOpAngle::after [4/7] 1/1 tStart=0.59493238 tEnd=0.594931837 < [6/22] 9/9 tStart=0.000993298772 tEnd=0.00104243869 < [4/8] 17/17 tStart=0.59493238 tEnd=0.596717201 T 4
2414SkOpAngle::afterPart {{{0.999006689,4.99602699}, {0.999007898,4.99602626}, {0.999009115,4.99602534}, {0.999010324,4.99602461}}} id=4
2415SkOpAngle::afterPart {{{0.999006689,4.99602699}, {0.998957574,4.99583006}}} id=6
2416SkOpAngle::afterPart {{{0.999006689,4.99602699}, {0.995030085,4.99843453}, {0.991048617,5.00083684}, {0.987062335,5.00323439}}} id=4
2417SkOpSegment::sortAngles [4] tStart=0.596717201 [25]
2418SkOpAngle::after [4/9] 1/1 tStart=0.596717201 tEnd=0.59493238 < [3/46] 17/17 tStart=0.998382791 tEnd=0.998300955 < [4/10] 17/17 tStart=0.596717201 tEnd=0.596717927 T 11
2419SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.991048617,5.00083684}, {0.995030085,4.99843453}, {0.999006689,4.99602699}}} id=4
2420SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.986407638,5.00339794}}} id=3
2421SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.987060715,5.00323536}, {0.987059068,5.00323627}, {0.987057447,5.00323725}}} id=4
2422SkOpAngle::after [4/9] 1/1 tStart=0.596717201 tEnd=0.59493238 < [3/47] 1/1 tStart=0.998382791 tEnd=1 < [3/46] 17/17 tStart=0.998382791 tEnd=0.998300955 F 12
2423SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.991048617,5.00083684}, {0.995030085,4.99843453}, {0.999006689,4.99602699}}} id=4
2424SkOpAngle::afterPart {{{0.987062335,5.00323439}, {1,5}}} id=3
2425SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.986407638,5.00339794}}} id=3
2426SkOpAngle::after [3/46] 17/17 tStart=0.998382791 tEnd=0.998300955 < [3/47] 1/1 tStart=0.998382791 tEnd=1 < [4/10] 17/17 tStart=0.596717201 tEnd=0.596717927 F 5
2427SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.986407638,5.00339794}}} id=3
2428SkOpAngle::afterPart {{{0.987062335,5.00323439}, {1,5}}} id=3
2429SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.987060715,5.00323536}, {0.987059068,5.00323627}, {0.987057447,5.00323725}}} id=4
2430SkOpAngle::after [4/10] 17/17 tStart=0.596717201 tEnd=0.596717927 < [3/47] 1/1 tStart=0.998382791 tEnd=1 < [4/9] 1/1 tStart=0.596717201 tEnd=0.59493238 T 11
2431SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.987060715,5.00323536}, {0.987059068,5.00323627}, {0.987057447,5.00323725}}} id=4
2432SkOpAngle::afterPart {{{0.987062335,5.00323439}, {1,5}}} id=3
2433SkOpAngle::afterPart {{{0.987062335,5.00323439}, {0.991048617,5.00083684}, {0.995030085,4.99843453}, {0.999006689,4.99602699}}} id=4
2434SkOpSegment::sortAngles [4] tStart=0.596717927 [13]
2435SkOpAngle::after [4/11] 1/1 tStart=0.596717927 tEnd=0.596717201 < [5/17] 17/17 tStart=0.998123104 tEnd=0.998028054 < [4/12] 17/17 tStart=0.596717927 tEnd=0.621522123 T 11
2436SkOpAngle::afterPart {{{0.987057447,5.00323725}, {0.987059068,5.00323627}, {0.987060715,5.00323536}, {0.987062335,5.00323439}}} id=4
2437SkOpAngle::afterPart {{{0.987057447,5.00323725}, {0.986839287,5.00329184}, {0.98662052,5.00334669}, {0.986402392,5.00340128}}} id=5
2438SkOpAngle::afterPart {{{0.987057447,5.00323725}, {0.931658826,5.03655656}, {0.875334323,5.06891107}, {0.818326533,5.10029507}}} id=4
2439SkOpAngle::after [4/11] 1/1 tStart=0.596717927 tEnd=0.596717201 < [5/18] 1/1 tStart=0.998123104 tEnd=1 < [5/17] 17/17 tStart=0.998123104 tEnd=0.998028054 T 12
2440SkOpAngle::afterPart {{{0.987057447,5.00323725}, {0.987059068,5.00323627}, {0.987060715,5.00323536}, {0.987062335,5.00323439}}} id=4
2441SkOpAngle::afterPart {{{0.987057447,5.00323725}, {0.991365337,5.00215916}, {0.995679087,5.00108023}, {1,5}}} id=5
2442SkOpAngle::afterPart {{{0.987057447,5.00323725}, {0.986839287,5.00329184}, {0.98662052,5.00334669}, {0.986402392,5.00340128}}} id=5
2443SkOpSegment::sortAngles [4] tStart=0.621522123 [23]
2444SkOpAngle::after [4/13] 1/1 tStart=0.621522123 tEnd=0.596717927 < [2/42] 1/1 tStart=0.547732168 tEnd=0.526051613 < [4/14] 17/17 tStart=0.621522123 tEnd=1 T 12
2445SkOpAngle::afterPart {{{0.818326533,5.10029507}, {0.875334323,5.06891107}, {0.931658826,5.03655656}, {0.987057447,5.00323725}}} id=4
2446SkOpAngle::afterPart {{{0.818326533,5.10029507}, {0.876904272,5.06786614}, {0.932900844,5.03555769}, {0.986402392,5.00340128}}} id=2
2447SkOpAngle::afterPart {{{0.818326533,5.10029507}, {-0.0515338283,5.5791716}, {-1.08048026,5.83211023}, {-1.40665555,5.83952332}}} id=4
2448SkOpAngle::after [4/13] 1/1 tStart=0.621522123 tEnd=0.596717927 < [2/43] 17/17 tStart=0.547732168 tEnd=1 < [2/42] 1/1 tStart=0.547732168 tEnd=0.526051613 F 5
2449SkOpAngle::afterPart {{{0.818326533,5.10029507}, {0.875334323,5.06891107}, {0.931658826,5.03655656}, {0.987057447,5.00323725}}} id=4
2450SkOpAngle::afterPart {{{0.818326533,5.10029507}, {-0.403636057,5.77677955}, {-2.74884106,6.50567927}, {-7,7}}} id=2
2451SkOpAngle::afterPart {{{0.818326533,5.10029507}, {0.876904272,5.06786614}, {0.932900844,5.03555769}, {0.986402392,5.00340128}}} id=2
2452SkOpAngle::after [2/42] 1/1 tStart=0.547732168 tEnd=0.526051613 < [2/43] 17/17 tStart=0.547732168 tEnd=1 < [4/14] 17/17 tStart=0.621522123 tEnd=1 F 11
2453SkOpAngle::afterPart {{{0.818326533,5.10029507}, {0.876904272,5.06786614}, {0.932900844,5.03555769}, {0.986402392,5.00340128}}} id=2
2454SkOpAngle::afterPart {{{0.818326533,5.10029507}, {-0.403636057,5.77677955}, {-2.74884106,6.50567927}, {-7,7}}} id=2
2455SkOpAngle::afterPart {{{0.818326533,5.10029507}, {-0.0515338283,5.5791716}, {-1.08048026,5.83211023}, {-1.40665555,5.83952332}}} id=4
2456SkOpAngle::after [4/14] 17/17 tStart=0.621522123 tEnd=1 < [2/43] 17/17 tStart=0.547732168 tEnd=1 < [4/13] 1/1 tStart=0.621522123 tEnd=0.596717927 T 12
2457SkOpAngle::afterPart {{{0.818326533,5.10029507}, {-0.0515338283,5.5791716}, {-1.08048026,5.83211023}, {-1.40665555,5.83952332}}} id=4
2458SkOpAngle::afterPart {{{0.818326533,5.10029507}, {-0.403636057,5.77677955}, {-2.74884106,6.50567927}, {-7,7}}} id=2
2459SkOpAngle::afterPart {{{0.818326533,5.10029507}, {0.875334323,5.06891107}, {0.931658826,5.03655656}, {0.987057447,5.00323725}}} id=4
2460SkOpSegment::sortAngles [5] tStart=0.998028054 [27]
2461SkOpAngle::after [5/15] 17/17 tStart=0.998028054 tEnd=0 < [2/40] 1/1 tStart=0.526051613 tEnd=0.526050901 < [5/16] 1/1 tStart=0.998028054 tEnd=0.998123104 F 11
2462SkOpAngle::afterPart {{{0.986402392,5.00340128}, {-1.30394063,5.57661086}, {-1.75417424,5.84742178}, {-1.40665555,5.83952332}}} id=5
2463SkOpAngle::afterPart {{{0.986402392,5.00340128}, {0.986404149,5.00340022}, {0.986405881,5.003399}, {0.986407638,5.00339794}}} id=2
2464SkOpAngle::afterPart {{{0.986402392,5.00340128}, {0.98662052,5.00334669}, {0.986839287,5.00329184}, {0.987057447,5.00323725}}} id=5
2465SkOpAngle::after [5/15] 17/17 tStart=0.998028054 tEnd=0 < [2/41] 17/17 tStart=0.526051613 tEnd=0.547732168 < [5/16] 1/1 tStart=0.998028054 tEnd=0.998123104 T 12
2466SkOpAngle::afterPart {{{0.986402392,5.00340128}, {-1.30394063,5.57661086}, {-1.75417424,5.84742178}, {-1.40665555,5.83952332}}} id=5
2467SkOpAngle::afterPart {{{0.986402392,5.00340128}, {0.932900844,5.03555769}, {0.876904272,5.06786614}, {0.818326533,5.10029507}}} id=2
2468SkOpAngle::afterPart {{{0.986402392,5.00340128}, {0.98662052,5.00334669}, {0.986839287,5.00329184}, {0.987057447,5.00323725}}} id=5
2469SkOpSegment::sortAngles [5] tStart=0.998123104 [14]
2470SkOpSegment::sortAngles [5] tStart=1 [10]
2471SkOpAngle::after [5/19] 17/17 tStart=1 tEnd=0.998123104 < [1/25] 9/9 tStart=0 tEnd=0.000963086711 < [3/48] 17/17 tStart=1 tEnd=0.998382791 T 5
2472SkOpAngle::afterPart {{{1,5}, {0.995679087,5.00108023}, {0.991365337,5.00215916}, {0.987057447,5.00323725}}} id=5
2473SkOpAngle::afterPart {{{1,5}, {0.999668495,4.99867398}, {0.999339999,4.9973488}, {0.999010324,4.99602461}}} id=1
2474SkOpAngle::afterPart {{{1,5}, {0.987062335,5.00323439}}} id=3
2475SkOpAngle::after [5/19] 17/17 tStart=1 tEnd=0.998123104 < [6/20] 9/9 tStart=0 tEnd=0.000993298772 < [1/25] 9/9 tStart=0 tEnd=0.000963086711 F 7
2476SkOpAngle::afterPart {{{1,5}, {0.995679087,5.00108023}, {0.991365337,5.00215916}, {0.987057447,5.00323725}}} id=5
2477SkOpAngle::afterPart {{{1,5}, {0.999006689,4.99602699}}} id=6
2478SkOpAngle::afterPart {{{1,5}, {0.999668495,4.99867398}, {0.999339999,4.9973488}, {0.999010324,4.99602461}}} id=1
2479SkOpAngle::after [1/25] 9/9 tStart=0 tEnd=0.000963086711 < [6/20] 9/9 tStart=0 tEnd=0.000993298772 < [3/48] 17/17 tStart=1 tEnd=0.998382791 T 7
2480SkOpAngle::afterPart {{{1,5}, {0.999668495,4.99867398}, {0.999339999,4.9973488}, {0.999010324,4.99602461}}} id=1
2481SkOpAngle::afterPart {{{1,5}, {0.999006689,4.99602699}}} id=6
2482SkOpAngle::afterPart {{{1,5}, {0.987062335,5.00323439}}} id=3
2483SkOpSegment::sortAngles [6] tStart=0 [11]
2484SkOpSegment::sortAngles [6] tStart=0.000993298772 [16]
2485SkOpSegment::sortAngles [6] tStart=0.00104243869 [29]
2486SkOpAngle::after [6/23] 25/25 tStart=0.00104243869 tEnd=0.000993298772 < [2/36] 1/1 tStart=0.524349463 tEnd=0.524348945 < [6/24] 9/9 tStart=0.00104243869 tEnd=1 T 4
2487SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.999006689,4.99602699}}} id=6
2488SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.998958844,4.99582929}, {0.998958153,4.9958294}, {0.998959422,4.99582863}}} id=2
2489SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0,1}}} id=6
2490SkOpAngle::after [6/23] 25/25 tStart=0.00104243869 tEnd=0.000993298772 < [2/37] 17/17 tStart=0.524349463 tEnd=0.526050901 < [2/36] 1/1 tStart=0.524349463 tEnd=0.524348945 F 4
2491SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.999006689,4.99602699}}} id=6
2492SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.994789605,4.99835173}, {0.990606297,5.00087438}, {0.986407638,5.00339794}}} id=2
2493SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.998958844,4.99582929}, {0.998958153,4.9958294}, {0.998959422,4.99582863}}} id=2
2494SkOpAngle::after [2/36] 1/1 tStart=0.524349463 tEnd=0.524348945 < [2/37] 17/17 tStart=0.524349463 tEnd=0.526050901 < [6/24] 9/9 tStart=0.00104243869 tEnd=1 F 4
2495SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.998958844,4.99582929}, {0.998958153,4.9958294}, {0.998959422,4.99582863}}} id=2
2496SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.994789605,4.99835173}, {0.990606297,5.00087438}, {0.986407638,5.00339794}}} id=2
2497SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0,1}}} id=6
2498SkOpAngle::after [6/24] 9/9 tStart=0.00104243869 tEnd=1 < [2/37] 17/17 tStart=0.524349463 tEnd=0.526050901 < [6/23] 25/25 tStart=0.00104243869 tEnd=0.000993298772 T 4
2499SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0,1}}} id=6
2500SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.994789605,4.99835173}, {0.990606297,5.00087438}, {0.986407638,5.00339794}}} id=2
2501SkOpAngle::afterPart {{{0.998957574,4.99583006}, {0.999006689,4.99602699}}} id=6
2502SkOpSegment::sortAngles [1] tStart=0 [1]
2503SkOpSegment::sortAngles [1] tStart=0.000963086711 [18]
2504SkOpSegment::sortAngles [1] tStart=0.00101062542 [31]
2505SkOpAngle::after [1/28] 25/25 tStart=0.00101062542 tEnd=0.000963086711 < [2/34] 1/1 tStart=0.524348945 tEnd=0.501700561 < [1/29] 9/5 tStart=0.00101062542 tEnd=1 T 4
2506SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.998975691,4.99589399}, {0.998994052,4.99595925}, {0.999010324,4.99602461}}} id=1
2507SkOpAngle::afterPart {{{0.998959422,4.99582863}, {1.05444048,4.9622619}, {1.10720815,4.92886332}, {1.15735686,4.89566994}}} id=2
2508SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.657089182,3.62237127}, {1.29933088,3.23380746}, {1.70591938,3.38288999}}} id=1
2509SkOpAngle::after [1/28] 25/25 tStart=0.00101062542 tEnd=0.000963086711 < [2/35] 17/17 tStart=0.524348945 tEnd=0.524349463 < [2/34] 1/1 tStart=0.524348945 tEnd=0.501700561 F 4
2510SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.998975691,4.99589399}, {0.998994052,4.99595925}, {0.999010324,4.99602461}}} id=1
2511SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.998958153,4.9958294}, {0.998958844,4.99582929}, {0.998957574,4.99583006}}} id=2
2512SkOpAngle::afterPart {{{0.998959422,4.99582863}, {1.05444048,4.9622619}, {1.10720815,4.92886332}, {1.15735686,4.89566994}}} id=2
2513SkOpAngle::after [2/34] 1/1 tStart=0.524348945 tEnd=0.501700561 < [2/35] 17/17 tStart=0.524348945 tEnd=0.524349463 < [1/29] 9/5 tStart=0.00101062542 tEnd=1 F 4
2514SkOpAngle::afterPart {{{0.998959422,4.99582863}, {1.05444048,4.9622619}, {1.10720815,4.92886332}, {1.15735686,4.89566994}}} id=2
2515SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.998958153,4.9958294}, {0.998958844,4.99582929}, {0.998957574,4.99583006}}} id=2
2516SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.657089182,3.62237127}, {1.29933088,3.23380746}, {1.70591938,3.38288999}}} id=1
2517SkOpAngle::after [1/29] 9/5 tStart=0.00101062542 tEnd=1 < [2/35] 17/17 tStart=0.524348945 tEnd=0.524349463 < [1/28] 25/25 tStart=0.00101062542 tEnd=0.000963086711 T 4
2518SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.657089182,3.62237127}, {1.29933088,3.23380746}, {1.70591938,3.38288999}}} id=1
2519SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.998958153,4.9958294}, {0.998958844,4.99582929}, {0.998957574,4.99583006}}} id=2
2520SkOpAngle::afterPart {{{0.998959422,4.99582863}, {0.998975691,4.99589399}, {0.998994052,4.99595925}, {0.999010324,4.99602461}}} id=1
2521SkOpSegment::sortAngles [2] tStart=0.441853762 [20]
2522SkOpSegment::sortAngles [2] tStart=0.501700561 [22]
2523SkOpSegment::sortAngles [2] tStart=0.524348945 [32]
2524SkOpSegment::sortAngles [2] tStart=0.524349463 [30]
2525SkOpSegment::sortAngles [2] tStart=0.526050901 [33]
2526SkOpAngle::after [2/38] 1/1 tStart=0.526050901 tEnd=0.524349463 < [3/44] 17/17 tStart=0.998300955 tEnd=0 < [2/39] 17/17 tStart=0.526050901 tEnd=0.526051613 T 11
2527SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.990606297,5.00087438}, {0.994789605,4.99835173}, {0.998957574,4.99583006}}} id=2
2528SkOpAngle::afterPart {{{0.986407638,5.00339794}, {-7,7}}} id=3
2529SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.986405881,5.003399}, {0.986404149,5.00340022}, {0.986402392,5.00340128}}} id=2
2530SkOpAngle::after [2/38] 1/1 tStart=0.526050901 tEnd=0.524349463 < [3/45] 1/1 tStart=0.998300955 tEnd=0.998382791 < [3/44] 17/17 tStart=0.998300955 tEnd=0 F 12
2531SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.990606297,5.00087438}, {0.994789605,4.99835173}, {0.998957574,4.99583006}}} id=2
2532SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.987062335,5.00323439}}} id=3
2533SkOpAngle::afterPart {{{0.986407638,5.00339794}, {-7,7}}} id=3
2534SkOpAngle::after [3/44] 17/17 tStart=0.998300955 tEnd=0 < [3/45] 1/1 tStart=0.998300955 tEnd=0.998382791 < [2/39] 17/17 tStart=0.526050901 tEnd=0.526051613 F 5
2535SkOpAngle::afterPart {{{0.986407638,5.00339794}, {-7,7}}} id=3
2536SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.987062335,5.00323439}}} id=3
2537SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.986405881,5.003399}, {0.986404149,5.00340022}, {0.986402392,5.00340128}}} id=2
2538SkOpAngle::after [2/39] 17/17 tStart=0.526050901 tEnd=0.526051613 < [3/45] 1/1 tStart=0.998300955 tEnd=0.998382791 < [2/38] 1/1 tStart=0.526050901 tEnd=0.524349463 T 11
2539SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.986405881,5.003399}, {0.986404149,5.00340022}, {0.986402392,5.00340128}}} id=2
2540SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.987062335,5.00323439}}} id=3
2541SkOpAngle::afterPart {{{0.986407638,5.00339794}, {0.990606297,5.00087438}, {0.994789605,4.99835173}, {0.998957574,4.99583006}}} id=2
2542SkOpSegment::sortAngles [2] tStart=0.526051613 [28]
2543SkOpSegment::sortAngles [2] tStart=0.547732168 [24]
2544SkOpSegment::sortAngles [3] tStart=0.998300955 [34]
2545SkOpSegment::sortAngles [3] tStart=0.998382791 [26]
2546SkOpSegment::sortAngles [3] tStart=1 [6]
2547SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0 (0,1) tEnd=0.51391312 windSum=? windValue=1 oppValue=0
2548SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.51391312 (1.50189435,4.63748884) tEnd=0.570807669 windSum=? windValue=1 oppValue=0
2549SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.570807669 (1.15735686,4.89566994) tEnd=0.594931837 windSum=? windValue=1 oppValue=0
2550SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.594931837 (0.999010324,4.99602461) tEnd=0.59493238 windSum=? windValue=1 oppValue=0
2551SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.59493238 (0.999006689,4.99602699) tEnd=0.596717201 windSum=? windValue=1 oppValue=0
2552SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717201 (0.987062335,5.00323439) tEnd=0.596717927 windSum=? windValue=1 oppValue=0
2553SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717927 (0.987057447,5.00323725) tEnd=0.621522123 windSum=? windValue=1 oppValue=0
2554SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
2555SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 (-1.40665555,5.83952332) tEnd=0.998028054 windSum=? windValue=1 oppValue=0
2556SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998028054 (0.986402392,5.00340128) tEnd=0.998123104 windSum=? windValue=1 oppValue=0
2557SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998123104 (0.987057447,5.00323725) tEnd=1 windSum=? windValue=1 oppValue=0
2558SkOpSegment::debugShowActiveSpans id=6 (1,5 0,1) t=0 (1,5) tEnd=0.000993298772 windSum=? windValue=1 oppValue=0
2559SkOpSegment::debugShowActiveSpans id=6 (1,5 0,1) t=0.000993298772 (0.999006689,4.99602699) tEnd=0.00104243869 windSum=? windValue=1 oppValue=0
2560SkOpSegment::debugShowActiveSpans id=6 (1,5 0,1) t=0.00104243869 (0.998957574,4.99583006) tEnd=1 windSum=? windValue=1 oppValue=0
2561SkOpSegment::debugShowActiveSpans id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0 (1,5) tEnd=0.000963086711 windSum=? windValue=1 oppValue=0
2562SkOpSegment::debugShowActiveSpans id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.000963086711 (0.999010324,4.99602461) tEnd=0.00101062542 windSum=? windValue=1 oppValue=0
2563SkOpSegment::debugShowActiveSpans id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.00101062542 (0.998959422,4.99582863) tEnd=1 windSum=? windValue=1 oppValue=0
2564SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0 (1.70591938,3.38288999) tEnd=0.441853762 windSum=? windValue=1 oppValue=0
2565SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.441853762 (1.50189435,4.63748884) tEnd=0.501700561 windSum=? windValue=1 oppValue=0
2566SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.501700561 (1.15735686,4.89566994) tEnd=0.524348945 windSum=? windValue=1 oppValue=0
2567SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524348945 (0.998959422,4.99582863) tEnd=0.524349463 windSum=? windValue=1 oppValue=0
2568SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524349463 (0.998957574,4.99583006) tEnd=0.526050901 windSum=? windValue=1 oppValue=0
2569SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526050901 (0.986407638,5.00339794) tEnd=0.526051613 windSum=? windValue=1 oppValue=0
2570SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526051613 (0.986402392,5.00340128) tEnd=0.547732168 windSum=? windValue=1 oppValue=0
2571SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.547732168 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
2572SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0 (-7,7) tEnd=0.998300955 windSum=? windValue=1 oppValue=0
2573SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0.998300955 (0.986407638,5.00339794) tEnd=0.998382791 windSum=? windValue=1 oppValue=0
2574SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0.998382791 (0.987062335,5.00323439) tEnd=1 windSum=? windValue=1 oppValue=0
2575SkOpSegment::findTop
2576SkOpAngle::dumpOne [6/49] next=4/50 sect=25/25 s=1 [12] e=0.00104243869 [29] sgn=1 windVal=1 windSum=? operand
2577SkOpAngle::dumpOne [4/50] next=6/49 sect=29/25 s=0 [7] e=0.51391312 [19] sgn=-1 windVal=1 windSum=? operand
2578SkOpSegment::findTop id=6 s=0.00104243869 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
2579SkOpSegment::markWinding id=6 (1,5 0,1) t=0.00104243869 [29] (0.998957574,4.99583006) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2580SkOpSegment::nextChase mismatched signs
2581SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0 [7] (0,1) tEnd=0.51391312 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2582SkOpSegment::markWinding id=6 (1,5 0,1) t=0.00104243869 [29] (0.998957574,4.99583006) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2583SkOpSegment::activeOp id=6 t=0.00104243869 tEnd=1 op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
2584SkOpSegment::markDone id=6 (1,5 0,1) t=0.00104243869 [29] (0.998957574,4.99583006) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2585SkOpSegment::nextChase mismatched signs
2586SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0 [7] (0,1) tEnd=0.51391312 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2587bridgeOp chase.append id=4 windSum=-2147483647
2588SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0 [3] (1.70591938,3.38288999) tEnd=0.441853762 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2589SkOpSegment::markWinding id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.00101062542 [31] (0.998959422,4.99582863) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2590SkOpSegment::markAngle last segment=1 span=31 windSum=-1
2591SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.51391312 [19] (1.50189435,4.63748884) tEnd=0.570807669 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2592SkOpSegment::markAngle last segment=4 span=21 windSum=?
2593SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.441853762 [20] (1.50189435,4.63748884) tEnd=0.501700561 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2594SkOpSegment::markAngle last segment=2 span=22 windSum=?
2595SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.51391312 (1.50189435,4.63748884) tEnd=0.570807669 windSum=-1 windValue=1 oppValue=0
2596SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.570807669 (1.15735686,4.89566994) tEnd=0.594931837 windSum=? windValue=1 oppValue=0
2597SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.594931837 (0.999010324,4.99602461) tEnd=0.59493238 windSum=? windValue=1 oppValue=0
2598SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.59493238 (0.999006689,4.99602699) tEnd=0.596717201 windSum=? windValue=1 oppValue=0
2599SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717201 (0.987062335,5.00323439) tEnd=0.596717927 windSum=? windValue=1 oppValue=0
2600SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717927 (0.987057447,5.00323725) tEnd=0.621522123 windSum=? windValue=1 oppValue=0
2601SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
2602SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 (-1.40665555,5.83952332) tEnd=0.998028054 windSum=? windValue=1 oppValue=0
2603SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998028054 (0.986402392,5.00340128) tEnd=0.998123104 windSum=? windValue=1 oppValue=0
2604SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998123104 (0.987057447,5.00323725) tEnd=1 windSum=? windValue=1 oppValue=0
2605SkOpSegment::debugShowActiveSpans id=6 (1,5 0,1) t=0 (1,5) tEnd=0.000993298772 windSum=? windValue=1 oppValue=0
2606SkOpSegment::debugShowActiveSpans id=6 (1,5 0,1) t=0.000993298772 (0.999006689,4.99602699) tEnd=0.00104243869 windSum=? windValue=1 oppValue=0
2607SkOpSegment::debugShowActiveSpans id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0 (1,5) tEnd=0.000963086711 windSum=? windValue=1 oppValue=0
2608SkOpSegment::debugShowActiveSpans id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.000963086711 (0.999010324,4.99602461) tEnd=0.00101062542 windSum=? windValue=1 oppValue=0
2609SkOpSegment::debugShowActiveSpans id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.00101062542 (0.998959422,4.99582863) tEnd=1 windSum=-1 windValue=1 oppValue=0
2610SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0 (1.70591938,3.38288999) tEnd=0.441853762 windSum=-1 windValue=1 oppValue=0
2611SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.441853762 (1.50189435,4.63748884) tEnd=0.501700561 windSum=-1 windValue=1 oppValue=0
2612SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.501700561 (1.15735686,4.89566994) tEnd=0.524348945 windSum=? windValue=1 oppValue=0
2613SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524348945 (0.998959422,4.99582863) tEnd=0.524349463 windSum=? windValue=1 oppValue=0
2614SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524349463 (0.998957574,4.99583006) tEnd=0.526050901 windSum=? windValue=1 oppValue=0
2615SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526050901 (0.986407638,5.00339794) tEnd=0.526051613 windSum=? windValue=1 oppValue=0
2616SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526051613 (0.986402392,5.00340128) tEnd=0.547732168 windSum=? windValue=1 oppValue=0
2617SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.547732168 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
2618SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0 (-7,7) tEnd=0.998300955 windSum=? windValue=1 oppValue=0
2619SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0.998300955 (0.986407638,5.00339794) tEnd=0.998382791 windSum=? windValue=1 oppValue=0
2620SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0.998382791 (0.987062335,5.00323439) tEnd=1 windSum=? windValue=1 oppValue=0
2621SkOpSegment::activeOp id=2 t=0.441853762 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2622SkOpSegment::findNextOp simple
2623SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0 [3] (1.70591938,3.38288999) tEnd=0.441853762 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
2624bridgeOp current id=2 from=(1.50189435,4.63748884) to=(1.70591938,3.38288999)
2625path.moveTo(1.50189435,4.63748884);
2626path.cubicTo(2.22382402,4.01592445, 2.04853964,3.50851727, 1.70591938,3.38288999);
2627SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524348945 [32] (0.998959422,4.99582863) tEnd=0.524349463 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2628SkOpSegment::markAngle last segment=2 span=30 windSum=?
2629SkOpSegment::markWinding id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.000963086711 [18] (0.999010324,4.99602461) tEnd=0.00101062542 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2630SkOpSegment::markAngle last segment=1 span=18 windSum=1
2631SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.501700561 [22] (1.15735686,4.89566994) tEnd=0.524348945 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2632SkOpSegment::markAngle last segment=2 span=22 windSum=-1
2633SkOpSegment::findNextOp
2634SkOpAngle::dumpOne [1/29] next=2/35 sect=9/5 s=0.00101062542 [31] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
2635SkOpAngle::dumpOne [2/35] next=1/28 sect=17/17 s=0.524348945 [32] e=0.524349463 [30] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1
2636SkOpAngle::dumpOne [1/28] next=2/34 sect=25/25 s=0.00101062542 [31] e=0.000963086711 [18] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1
2637SkOpAngle::dumpOne [2/34] next=1/29 sect=1/1 s=0.524348945 [32] e=0.501700561 [22] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
2638SkOpSegment::activeOp id=2 t=0.524348945 tEnd=0.524349463 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2639SkOpSegment::findNextOp chase.append segment=2 span=30 windSum=-2147483647
2640SkOpSegment::activeOp id=1 t=0.00101062542 tEnd=0.000963086711 op=sect miFrom=1 miTo=0 suFrom=1 suTo=1 result=1
2641SkOpSegment::findNextOp chase.append segment=1 span=18 windSum=1
2642SkOpSegment::activeOp id=2 t=0.524348945 tEnd=0.501700561 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2643SkOpSegment::findNextOp chase.append segment=2 span=22 windSum=-1
2644SkOpSegment::markDone id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.00101062542 [31] (0.998959422,4.99582863) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
2645SkOpSegment::findNextOp from:[1] to:[2] start=3697004 end=3696812
2646bridgeOp current id=1 from=(1.70591938,3.38288999) to=(0.998959422,4.99582863)
2647path.cubicTo(1.29933083,3.23380756, 0.657089174,3.6223712, 0.998959422,4.99582863);
2648SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524349463 [30] (0.998957574,4.99583006) tEnd=0.526050901 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2649SkOpSegment::markAngle last segment=2 span=33 windSum=?
2650SkOpSegment::markWinding id=6 (1,5 0,1) t=0.000993298772 [16] (0.999006689,4.99602699) tEnd=0.00104243869 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
2651SkOpSegment::markAngle last segment=6 span=16 windSum=-1
2652SkOpSegment::findNextOp
2653SkOpAngle::dumpOne [2/36] next=6/24 sect=1/1 s=0.524349463 [30] e=0.524348945 [32] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1
2654SkOpAngle::dumpOne [6/24] next=2/37 sect=9/9 s=0.00104243869 [29] e=1 [12] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
2655SkOpAngle::dumpOne [2/37] next=6/23 sect=17/17 s=0.524349463 [30] e=0.526050901 [33] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
2656SkOpAngle::dumpOne [6/23] next=2/36 sect=25/25 s=0.00104243869 [29] e=0.000993298772 [16] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
2657SkOpSegment::activeOp id=6 t=0.00104243869 tEnd=1 op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
2658SkOpSegment::nextChase mismatched signs
2659SkOpSegment::activeOp id=2 t=0.524349463 tEnd=0.526050901 op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
2660SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524349463 [30] (0.998957574,4.99583006) tEnd=0.526050901 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2661SkOpSegment::findNextOp chase.append segment=2 span=33 windSum=-2147483647
2662SkOpSegment::activeOp id=6 t=0.00104243869 tEnd=0.000993298772 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
2663SkOpSegment::findNextOp chase.append segment=6 span=16 windSum=-1
2664SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.524348945 [32] (0.998959422,4.99582863) tEnd=0.524349463 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
2665SkOpSegment::findNextOp from:[2] to:[6] start=3696716 end=3695468
2666bridgeOp current id=2 from=(0.998959422,4.99582863) to=(0.998957574,4.99583006)
2667path.cubicTo(0.99895817,4.99582958, 0.998958826,4.99582911, 0.998957574,4.99583006);
2668SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.59493238 [15] (0.999006689,4.99602699) tEnd=0.596717201 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
2669SkOpSegment::markAngle last segment=4 span=25 windSum=?
2670SkOpSegment::markWinding id=6 (1,5 0,1) t=0 [11] (1,5) tEnd=0.000993298772 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
2671SkOpSegment::markAngle last segment=6 span=11 windSum=1
2672SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.594931837 [17] (0.999010324,4.99602461) tEnd=0.59493238 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
2673SkOpSegment::markAngle last segment=4 span=17 windSum=-1
2674SkOpSegment::findNextOp
2675SkOpAngle::dumpOne [6/22] next=4/8 sect=9/9 s=0.000993298772 [16] e=0.00104243869 [29] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
2676SkOpAngle::dumpOne [4/8] next=6/21 sect=17/17 s=0.59493238 [15] e=0.596717201 [25] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=1 operand
2677SkOpAngle::dumpOne [6/21] next=4/7 sect=25/25 s=0.000993298772 [16] e=0 [11] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=1 operand
2678SkOpAngle::dumpOne [4/7] next=6/22 sect=1/1 s=0.59493238 [15] e=0.594931837 [17] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
2679SkOpSegment::activeOp id=4 t=0.59493238 tEnd=0.596717201 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
2680SkOpSegment::findNextOp chase.append segment=4 span=25 windSum=-2147483647
2681SkOpSegment::activeOp id=6 t=0.000993298772 tEnd=0 op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
2682SkOpSegment::findNextOp chase.append segment=6 span=11 windSum=1
2683SkOpSegment::activeOp id=4 t=0.59493238 tEnd=0.594931837 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
2684SkOpSegment::findNextOp chase.append segment=4 span=17 windSum=-1
2685SkOpSegment::markDone id=6 (1,5 0,1) t=0.000993298772 [16] (0.999006689,4.99602699) tEnd=0.00104243869 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
2686SkOpSegment::findNextOp from:[6] to:[4] start=3695372 end=3696332
2687bridgeOp current id=6 from=(0.998957574,4.99583006) to=(0.999006689,4.99602699)
2688SkOpSegment::markWinding id=3 (-7,7 1,5) t=0.998300955 [34] (0.986407638,5.00339794) tEnd=0.998382791 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2689SkOpSegment::markAngle last segment=3 span=34 windSum=1
2690SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717201 [25] (0.987062335,5.00323439) tEnd=0.596717927 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2691SkOpSegment::markAngle last segment=4 span=13 windSum=?
2692SkOpSegment::markWinding id=3 (-7,7 1,5) t=0.998382791 [26] (0.987062335,5.00323439) tEnd=1 newWindSum=1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
2693SkOpSegment::markAngle last segment=3 span=6
2694SkOpSegment::findNextOp
2695SkOpAngle::dumpOne [4/9] next=3/46 sect=1/1 s=0.596717201 [25] e=0.59493238 [15] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=1 operand
2696SkOpAngle::dumpOne [3/46] next=4/10 sect=17/17 s=0.998382791 [26] e=0.998300955 [34] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0
2697SkOpAngle::dumpOne [4/10] next=3/47 sect=17/17 s=0.596717201 [25] e=0.596717927 [13] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 operand
2698SkOpAngle::dumpOne [3/47] next=4/9 sect=1/1 s=0.998382791 [26] e=1 [6] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=1
2699SkOpSegment::activeOp id=3 t=0.998382791 tEnd=0.998300955 op=sect miFrom=1 miTo=0 suFrom=0 suTo=0 result=0
2700SkOpSegment::markDone id=3 (-7,7 1,5) t=0.998300955 [34] (0.986407638,5.00339794) tEnd=0.998382791 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2701SkOpSegment::findNextOp chase.append segment=3 span=34 windSum=1
2702SkOpSegment::activeOp id=4 t=0.596717201 tEnd=0.596717927 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
2703SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717201 [25] (0.987062335,5.00323439) tEnd=0.596717927 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2704SkOpSegment::findNextOp chase.append segment=4 span=13 windSum=-2147483647
2705SkOpSegment::activeOp id=3 t=0.998382791 tEnd=1 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2706SkOpSegment::findNextOp chase.append segment=3 span=6
2707SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.59493238 [15] (0.999006689,4.99602699) tEnd=0.596717201 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1 oppValue=0
2708SkOpSegment::findNextOp from:[4] to:[3] start=3696428 end=3694284
2709bridgeOp current id=4 from=(0.999006689,4.99602699) to=(0.987062335,5.00323439)
2710path.lineTo(0.999006689,4.99602699);
2711path.cubicTo(0.995030105,4.99843454, 0.991048634,5.00083685, 0.987062335,5.00323439);
2712SkOpSegment::markWinding id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998123104 [14] (0.987057447,5.00323725) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2713SkOpSegment::markAngle last segment=5 span=14 windSum=1
2714SkOpSegment::markWinding id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0 [1] (1,5) tEnd=0.000963086711 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2715SkOpSegment::markAngle last segment=1 span=18 windSum=1
2716SkOpSegment::findNextOp
2717SkOpAngle::dumpOne [3/48] next=5/19 sect=17/17 s=1 [6] e=0.998382791 [26] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=1
2718SkOpAngle::dumpOne [5/19] next=1/25 sect=17/17 s=1 [10] e=0.998123104 [14] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0 operand
2719SkOpAngle::dumpOne [1/25] next=6/20 sect=9/9 s=0 [1] e=0.000963086711 [18] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
2720SkOpAngle::dumpOne [6/20] next=3/48 sect=9/9 s=0 [11] e=0.000993298772 [16] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=1 operand
2721SkOpSegment::activeOp id=5 t=1 tEnd=0.998123104 op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
2722SkOpSegment::markDone id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998123104 [14] (0.987057447,5.00323725) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2723SkOpSegment::findNextOp chase.append segment=5 span=14 windSum=1
2724SkOpSegment::activeOp id=1 t=0 tEnd=0.000963086711 op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
2725SkOpSegment::markDone id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0 [1] (1,5) tEnd=0.000963086711 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2726SkOpSegment::activeOp id=6 t=0 tEnd=0.000993298772 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
2727SkOpSegment::markDone id=3 (-7,7 1,5) t=0.998382791 [26] (0.987062335,5.00323439) tEnd=1 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1 oppValue=0
2728SkOpSegment::findNextOp from:[3] to:[6] start=3694964 end=3695468
2729bridgeOp current id=3 from=(0.987062335,5.00323439) to=(1,5)
2730SkOpSegment::findNextOp
2731SkOpAngle::dumpOne [6/21] next=4/7 sect=25/25 s=0.000993298772 [16] e=0 [11] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=1 operand
2732SkOpAngle::dumpOne [4/7] next=6/22 sect=1/1 s=0.59493238 [15] e=0.594931837 [17] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
2733SkOpAngle::dumpOne [6/22] next=4/8 sect=9/9 s=0.000993298772 [16] e=0.00104243869 [29] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 done operand
2734SkOpAngle::dumpOne [4/8] next=6/21 sect=17/17 s=0.59493238 [15] e=0.596717201 [25] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=1 done operand
2735SkOpSegment::activeOp id=4 t=0.59493238 tEnd=0.594931837 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
2736SkOpSegment::activeOp id=6 t=0.000993298772 tEnd=0.00104243869 op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
2737SkOpSegment::activeOp id=4 t=0.59493238 tEnd=0.596717201 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
2738SkOpSegment::markDone id=6 (1,5 0,1) t=0 [11] (1,5) tEnd=0.000993298772 newWindSum=1 newOppSum=1 oppSum=1 windSum=1 windValue=1 oppValue=0
2739SkOpSegment::findNextOp from:[6] to:[4] start=3695372 end=3695564
2740bridgeOp current id=6 from=(1,5) to=(0.999006689,4.99602699)
2741path.lineTo(1,5);
2742SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.570807669 [21] (1.15735686,4.89566994) tEnd=0.594931837 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2743SkOpSegment::markAngle last segment=4 span=21 windSum=-1
2744SkOpSegment::findNextOp
2745SkOpAngle::dumpOne [4/6] next=1/26 sect=17/17 s=0.594931837 [17] e=0.59493238 [15] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
2746SkOpAngle::dumpOne [1/26] next=4/5 sect=25/25 s=0.000963086711 [18] e=0 [1] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
2747SkOpAngle::dumpOne [4/5] next=1/27 sect=1/1 s=0.594931837 [17] e=0.570807669 [21] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
2748SkOpAngle::dumpOne [1/27] next=4/6 sect=9/9 s=0.000963086711 [18] e=0.00101062542 [31] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1
2749SkOpSegment::activeOp id=1 t=0.000963086711 tEnd=0 op=sect miFrom=1 miTo=0 suFrom=0 suTo=0 result=0
2750SkOpSegment::activeOp id=4 t=0.594931837 tEnd=0.570807669 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
2751SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.570807669 [21] (1.15735686,4.89566994) tEnd=0.594931837 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2752SkOpSegment::findNextOp chase.append segment=4 span=21 windSum=-1
2753SkOpSegment::activeOp id=1 t=0.000963086711 tEnd=0.00101062542 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2754SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.594931837 [17] (0.999010324,4.99602461) tEnd=0.59493238 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
2755SkOpSegment::findNextOp from:[4] to:[1] start=3695660 end=3696908
2756bridgeOp current id=4 from=(0.999006689,4.99602699) to=(0.999010324,4.99602461)
2757path.lineTo(0.999006689,4.99602699);
2758path.cubicTo(0.999007881,4.99602604, 0.999009132,4.99602556, 0.999010324,4.99602461);
2759SkOpSegment::findNextOp
2760SkOpAngle::dumpOne [1/28] next=2/34 sect=25/25 s=0.00101062542 [31] e=0.000963086711 [18] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1
2761SkOpAngle::dumpOne [2/34] next=1/29 sect=1/1 s=0.524348945 [32] e=0.501700561 [22] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
2762SkOpAngle::dumpOne [1/29] next=2/35 sect=9/5 s=0.00101062542 [31] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
2763SkOpAngle::dumpOne [2/35] next=1/28 sect=17/17 s=0.524348945 [32] e=0.524349463 [30] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 done
2764SkOpSegment::activeOp id=2 t=0.524348945 tEnd=0.501700561 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2765SkOpSegment::activeOp id=1 t=0.00101062542 tEnd=1 op=sect miFrom=1 miTo=0 suFrom=1 suTo=1 result=1
2766SkOpSegment::activeOp id=2 t=0.524348945 tEnd=0.524349463 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2767SkOpSegment::markDone id=1 (1,5 0.655789495,3.62315798 1.29891956,3.23365664 1.70591938,3.38288999) t=0.000963086711 [18] (0.999010324,4.99602461) tEnd=0.00101062542 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
2768SkOpSegment::findNextOp from:[1] to:[2] start=3697004 end=3696044
2769bridgeOp current id=1 from=(0.999010324,4.99602461) to=(0.998959422,4.99582863)
2770path.cubicTo(0.998994052,4.99595928, 0.998975694,4.99589396, 0.998959422,4.99582863);
2771SkOpSegment::findNextOp
2772SkOpAngle::dumpOne [2/33] next=4/4 sect=17/17 s=0.501700561 [22] e=0.524348945 [32] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
2773SkOpAngle::dumpOne [4/4] next=2/32 sect=17/17 s=0.570807669 [21] e=0.594931837 [17] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
2774SkOpAngle::dumpOne [2/32] next=4/3 sect=1/1 s=0.501700561 [22] e=0.441853762 [20] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
2775SkOpAngle::dumpOne [4/3] next=2/33 sect=1/1 s=0.570807669 [21] e=0.51391312 [19] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
2776SkOpSegment::activeOp id=4 t=0.570807669 tEnd=0.594931837 op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
2777SkOpSegment::activeOp id=2 t=0.501700561 tEnd=0.441853762 op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
2778SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.441853762 [20] (1.50189435,4.63748884) tEnd=0.501700561 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2779SkOpSegment::activeOp id=4 t=0.570807669 tEnd=0.51391312 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
2780SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.501700561 [22] (1.15735686,4.89566994) tEnd=0.524348945 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
2781SkOpSegment::findNextOp from:[2] to:[4] start=3695948 end=3695756
2782bridgeOp current id=2 from=(0.998959422,4.99582863) to=(1.15735686,4.89566994)
2783path.cubicTo(1.0544405,4.96226168, 1.10720813,4.92886353, 1.15735686,4.89566994);
2784SkOpSegment::findNextOp
2785SkOpAngle::dumpOne [4/2] next=2/31 sect=17/17 s=0.51391312 [19] e=0.570807669 [21] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
2786SkOpAngle::dumpOne [2/31] next=4/1 sect=17/17 s=0.441853762 [20] e=0.501700561 [22] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
2787SkOpAngle::dumpOne [4/1] next=2/30 sect=1/9 s=0.51391312 [19] e=0 [7] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
2788SkOpAngle::dumpOne [2/30] next=4/2 sect=1/5 s=0.441853762 [20] e=0 [3] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 done
2789SkOpSegment::activeOp id=2 t=0.441853762 tEnd=0.501700561 op=sect miFrom=1 miTo=0 suFrom=0 suTo=0 result=0
2790SkOpSegment::activeOp id=4 t=0.51391312 tEnd=0 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
2791SkOpSegment::nextChase mismatched signs
2792SkOpSegment::activeOp id=2 t=0.441853762 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2793SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.51391312 [19] (1.50189435,4.63748884) tEnd=0.570807669 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
2794SkOpSegment::findNextOp from:[4] to:[2] start=3695852 end=3693972
2795bridgeOp current id=4 from=(1.15735686,4.89566994) to=(1.50189435,4.63748884)
2796path.cubicTo(1.27938318,4.81463385, 1.39520502,4.72855091, 1.50189435,4.63748884);
2797path.close();
2798SkOpSegment::markWinding id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998028054 [27] (0.986402392,5.00340128) tEnd=0.998123104 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2799SkOpSegment::markAngle last segment=5 span=27 windSum=1
2800SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717927 [13] (0.987057447,5.00323725) tEnd=0.621522123 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2801SkOpSegment::markAngle last segment=4 span=23 windSum=?
2802SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717927 (0.987057447,5.00323725) tEnd=0.621522123 windSum=1 windValue=1 oppValue=0
2803SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
2804SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 (-1.40665555,5.83952332) tEnd=0.998028054 windSum=? windValue=1 oppValue=0
2805SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998028054 (0.986402392,5.00340128) tEnd=0.998123104 windSum=1 windValue=1 oppValue=0
2806SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526050901 (0.986407638,5.00339794) tEnd=0.526051613 windSum=? windValue=1 oppValue=0
2807SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526051613 (0.986402392,5.00340128) tEnd=0.547732168 windSum=? windValue=1 oppValue=0
2808SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.547732168 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
2809SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0 (-7,7) tEnd=0.998300955 windSum=? windValue=1 oppValue=0
2810SkOpSegment::activeOp id=5 t=0.998123104 tEnd=0.998028054 op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
2811SkOpSegment::markDone id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0.998028054 [27] (0.986402392,5.00340128) tEnd=0.998123104 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2812bridgeOp chase.append id=5 windSum=1
2813SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526050901 [33] (0.986407638,5.00339794) tEnd=0.526051613 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
2814SkOpSegment::markAngle last segment=2 span=33 windSum=-1
2815SkOpSegment::markWinding id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 [9] (-1.40665555,5.83952332) tEnd=0.998028054 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2816SkOpSegment::markWinding id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 [23] (0.818326533,5.10029507) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
2817SkOpSegment::markAngle last segment=4 span=23 windSum=1
2818SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526051613 [28] (0.986402392,5.00340128) tEnd=0.547732168 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2819SkOpSegment::markAngle last segment=2 span=24 windSum=?
2820SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717927 (0.987057447,5.00323725) tEnd=0.621522123 windSum=1 windValue=1 oppValue=0
2821SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 (0.818326533,5.10029507) tEnd=1 windSum=1 windValue=1 oppValue=0
2822SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 (-1.40665555,5.83952332) tEnd=0.998028054 windSum=1 windValue=1 oppValue=0
2823SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526050901 (0.986407638,5.00339794) tEnd=0.526051613 windSum=-1 windValue=1 oppValue=0
2824SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526051613 (0.986402392,5.00340128) tEnd=0.547732168 windSum=-1 windValue=1 oppValue=0
2825SkOpSegment::debugShowActiveSpans id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.547732168 (0.818326533,5.10029507) tEnd=1 windSum=? windValue=1 oppValue=0
2826SkOpSegment::debugShowActiveSpans id=3 (-7,7 1,5) t=0 (-7,7) tEnd=0.998300955 windSum=? windValue=1 oppValue=0
2827SkOpSegment::activeOp id=2 t=0.526051613 tEnd=0.526050901 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2828SkOpSegment::markWinding id=3 (-7,7 1,5) t=0 [5] (-7,7) tEnd=0.998300955 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2829SkOpSegment::markWinding id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.547732168 [24] (0.818326533,5.10029507) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
2830SkOpSegment::markAngle last segment=2 span=24 windSum=-1
2831SkOpSegment::findNextOp
2832SkOpAngle::dumpOne [2/39] next=3/45 sect=17/17 s=0.526050901 [33] e=0.526051613 [28] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1
2833SkOpAngle::dumpOne [3/45] next=2/38 sect=1/1 s=0.998300955 [34] e=0.998382791 [26] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
2834SkOpAngle::dumpOne [2/38] next=3/44 sect=1/1 s=0.526050901 [33] e=0.524349463 [30] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
2835SkOpAngle::dumpOne [3/44] next=2/39 sect=17/17 s=0.998300955 [34] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
2836SkOpSegment::activeOp id=3 t=0.998300955 tEnd=0.998382791 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2837SkOpSegment::activeOp id=2 t=0.526050901 tEnd=0.524349463 op=sect miFrom=1 miTo=0 suFrom=1 suTo=1 result=1
2838SkOpSegment::activeOp id=3 t=0.998300955 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2839SkOpSegment::findNextOp chase.append segment=2 span=24 windSum=-1
2840SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526050901 [33] (0.986407638,5.00339794) tEnd=0.526051613 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
2841SkOpSegment::findNextOp from:[2] to:[3] start=3697196 end=3694188
2842bridgeOp current id=2 from=(0.986402392,5.00340128) to=(0.986407638,5.00339794)
2843path.moveTo(0.986402392,5.00340128);
2844path.cubicTo(0.986404121,5.00340033, 0.986405909,5.0033989, 0.986407638,5.00339794);
2845SkOpSegment::findNextOp simple
2846SkOpSegment::markDone id=3 (-7,7 1,5) t=0 [5] (-7,7) tEnd=0.998300955 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2847bridgeOp current id=3 from=(0.986407638,5.00339794) to=(-7,7)
2848SkOpSegment::findNextOp
2849SkOpAngle::dumpOne [2/43] next=4/13 sect=17/17 s=0.547732168 [24] e=1 [4] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
2850SkOpAngle::dumpOne [4/13] next=2/42 sect=1/1 s=0.621522123 [23] e=0.596717927 [13] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0 operand
2851SkOpAngle::dumpOne [2/42] next=4/14 sect=1/1 s=0.547732168 [24] e=0.526051613 [28] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0
2852SkOpAngle::dumpOne [4/14] next=2/43 sect=17/17 s=0.621522123 [23] e=1 [8] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
2853SkOpSegment::activeOp id=4 t=0.621522123 tEnd=0.596717927 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
2854SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.596717927 [13] (0.987057447,5.00323725) tEnd=0.621522123 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2855SkOpSegment::activeOp id=2 t=0.547732168 tEnd=0.526051613 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2856SkOpSegment::activeOp id=4 t=0.621522123 tEnd=1 op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
2857SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.547732168 [24] (0.818326533,5.10029507) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2858SkOpSegment::findNextOp from:[2] to:[2] start=3696236 end=3696620
2859bridgeOp current id=2 from=(-7,7) to=(0.818326533,5.10029507)
2860path.lineTo(-7,7);
2861path.cubicTo(-2.74884105,6.50567913, -0.403636068,5.77677965, 0.818326533,5.10029507);
2862SkOpSegment::findNextOp
2863SkOpAngle::dumpOne [2/41] next=5/16 sect=17/17 s=0.526051613 [28] e=0.547732168 [24] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
2864SkOpAngle::dumpOne [5/16] next=2/40 sect=1/1 s=0.998028054 [27] e=0.998123104 [14] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done operand
2865SkOpAngle::dumpOne [2/40] next=5/15 sect=1/1 s=0.526051613 [28] e=0.526050901 [33] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 done
2866SkOpAngle::dumpOne [5/15] next=2/41 sect=17/17 s=0.998028054 [27] e=0 [9] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
2867SkOpSegment::activeOp id=5 t=0.998028054 tEnd=0.998123104 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
2868SkOpSegment::activeOp id=2 t=0.526051613 tEnd=0.526050901 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2869SkOpSegment::activeOp id=5 t=0.998028054 tEnd=0 op=sect miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
2870SkOpSegment::markDone id=2 (1.70591938,3.38288999 2.48133492,3.66720891 2.39964914,5.90701771 -7,7) t=0.526051613 [28] (0.986402392,5.00340128) tEnd=0.547732168 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
2871SkOpSegment::findNextOp from:[2] to:[2] start=3696620 end=3697100
2872bridgeOp current id=2 from=(0.818326533,5.10029507) to=(0.986402392,5.00340128)
2873path.cubicTo(0.876904249,5.06786633, 0.932900846,5.03555775, 0.986402392,5.00340128);
2874path.close();
2875SkOpSegment::debugShowActiveSpans id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 (0.818326533,5.10029507) tEnd=1 windSum=1 windValue=1 oppValue=0
2876SkOpSegment::debugShowActiveSpans id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 (-1.40665555,5.83952332) tEnd=0.998028054 windSum=1 windValue=1 oppValue=0
2877SkOpSegment::activeOp id=4 t=0.621522123 tEnd=1 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
2878SkOpSegment::findNextOp simple
2879SkOpSegment::markDone id=4 (0,1 5.22302151,4.08633089 -0.544847488,5.81993675 -1.40665555,5.83952332) t=0.621522123 [23] (0.818326533,5.10029507) tEnd=1 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
2880bridgeOp current id=4 from=(0.818326533,5.10029507) to=(-1.40665555,5.83952332)
2881path.moveTo(0.818326533,5.10029507);
2882path.cubicTo(-0.0515338294,5.57917166, -1.08048022,5.8321104, -1.40665555,5.83952332);
2883SkOpSegment::findNextOp
2884SkOpAngle::dumpOne [5/15] next=2/41 sect=17/17 s=0.998028054 [27] e=0 [9] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1 operand
2885SkOpAngle::dumpOne [2/41] next=5/16 sect=17/17 s=0.526051613 [28] e=0.547732168 [24] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
2886SkOpAngle::dumpOne [5/16] next=2/40 sect=1/1 s=0.998028054 [27] e=0.998123104 [14] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done operand
2887SkOpAngle::dumpOne [2/40] next=5/15 sect=1/1 s=0.526051613 [28] e=0.526050901 [33] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 done
2888SkOpSegment::activeOp id=2 t=0.526051613 tEnd=0.547732168 op=sect miFrom=1 miTo=0 suFrom=0 suTo=0 result=0
2889SkOpSegment::activeOp id=5 t=0.998028054 tEnd=0.998123104 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
2890SkOpSegment::activeOp id=2 t=0.526051613 tEnd=0.526050901 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
2891SkOpSegment::markDone id=5 (-1.40665555,5.83952332 -1.75486088,5.84743738 -1.30215836,5.57553959 1,5) t=0 [9] (-1.40665555,5.83952332) tEnd=0.998028054 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
2892SkOpSegment::findNextOp from:[5] to:[2] start=3696620 end=3697100
2893bridgeOp current id=5 from=(-1.40665555,5.83952332) to=(0.986402392,5.00340128)
2894path.cubicTo(-1.75417423,5.84742165, -1.30394065,5.57661104, 0.986402392,5.00340128);
2895</div>
2896
2897<div id="loop15">
2898seg=1 {{{2, 6}, {1.65952897f, 4.63811588f}, {2.14982176f, 4.28087616f}, {2.47761083f, 4.44151449f}}}
2899seg=2 {{{2.47761083f, 4.44151449f}, {3.11257339f, 4.75268841f}, {3.13775873f, 7.00713778f}, {-4.66666651f, 7.66666651f}}}
2900seg=3 {{{-4.66666651f, 7.66666651f}, {2, 6}}}
2901seg=4 {{{1, 2}, {5.36990452f, 5.30695486f}, {0.700912476f, 6.77265263f}, {-0.0185294151f, 6.75294161f}}}
2902seg=5 {{{-0.0185294151f, 6.75294161f}, {-0.314340472f, 6.74483728f}, {0.057554245f, 6.48561144f}, {2, 6}}}
2903seg=6 {{{2, 6}, {1, 2}}}
2904SkOpSegment::findTop id=6 s=0.00507799291 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
2905</div>
2906
2907<div id="loop14">
2908seg=1 {{{1, 6}, {0.659528971f, 4.63811588f}, {1.14982188f, 4.28087616f}, {1.47761095f, 4.44151449f}}}
2909seg=2 {{{1.47761095f, 4.44151449f}, {2.11257339f, 4.75268793f}, {2.13775921f, 7.00713778f}, {-5.66666651f, 7.66666651f}}}
2910seg=3 {{{-5.66666651f, 7.66666651f}, {1, 6}}}
2911seg=4 {{{0, 2}, {4.36990452f, 5.30695486f}, {-0.299087524f, 6.77265263f}, {-1.01852942f, 6.75294161f}}}
2912seg=5 {{{-1.01852942f, 6.75294161f}, {-1.31434047f, 6.74483728f}, {-0.942445755f, 6.48561144f}, {1, 6}}}
2913seg=6 {{{1, 6}, {0, 2}}}
2914SkOpSegment::findTop id=6 s=0.00507799945 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
2915</div>
2916
2917<div id="loop13">
2918seg=1 {{{1, 5}, {0.659528852f, 3.63811541f}, {1.149822f, 3.28087616f}, {1.47761106f, 3.44151473f}}}
2919seg=2 {{{1.47761106f, 3.44151473f}, {2.11257339f, 3.75268865f}, {2.13775826f, 6.00713778f}, {-5.66666651f, 6.66666651f}}}
2920seg=3 {{{-5.66666651f, 6.66666651f}, {1, 5}}}
2921seg=4 {{{0, 1}, {4.36990452f, 4.30695486f}, {-0.299087524f, 5.77265263f}, {-1.01852942f, 5.75294161f}}}
2922seg=5 {{{-1.01852942f, 5.75294161f}, {-1.31434047f, 5.74483728f}, {-0.942445755f, 5.48561144f}, {1, 5}}}
2923seg=6 {{{1, 5}, {0, 1}}}
2924SkOpSegment::findTop id=6 s=0.00507799266 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
2925</div>
2926
2927<div id="loop12">
2928seg=1 {{{1, 2}, {0.555084825f, 3.7796607f}, {-0.318720877f, 4.30564117f}, {-0.315034658f, 4.31186438f}}}
2929seg=2 {{{-0.315034658f, 4.31186438f}, {-0.310435653f, 4.31962824f}, {1.06002736f, 3.51836181f}, {6.33333349f, 3.33333349f}}}
2930seg=3 {{{6.33333349f, 3.33333349f}, {1, 2}}}
2931seg=4 {{{0, 6}, {-1.59502935f, 4.82471514f}, {0.0235646963f, 4.15684462f}, {1.34154034f, 3.61301661f}}}
2932seg=5 {{{1.34154034f, 3.61301661f}, {2.64018726f, 3.07716417f}, {3.64696836f, 2.66174221f}, {1, 2}}}
2933seg=6 {{{1, 2}, {0, 6}}}
2934SkOpSegment::findTop id=1 s=1 e=0 cw=0 swap=1 inflections=1 monotonic=1
2935</div>
2936
caryclark1049f122015-04-20 08:31:59 -07002937<div id="cubicOp132">
2938seg=1 {{{5, 6}, {3.38059044f, 4.38059044f}, {3.07242441f, 1.44993687f}, {3.01378202f, 1.45492136f}}}
2939seg=2 {{{3.01378202f, 1.45492136f}, {3, 1.45609283f}, {3, 1.61940968f}, {3, 2}}}
2940seg=3 {{{3, 2}, {5, 6}}}
caryclark1049f122015-04-20 08:31:59 -07002941seg=4 {{{0, 3}, {0.763932049f, 3}, {1.81966019f, 3.29179597f}, {2.72135973f, 3.54101968f}}}
2942seg=5 {{{2.72135973f, 3.54101968f}, {4.18033981f, 3.9442718f}, {5.23606777f, 4.23606777f}, {4, 3}}}
2943seg=6 {{{4, 3}, {0, 3}}}
caryclark03b03ca2015-04-23 09:13:37 -07002944SkOpSegment::findTop id=1 s=0.617509 e=1 cw=1 swap=0 inflections=1 monotonic=0
2945</div>
2946
2947<div id="loop11">
2948seg=1 {{{0, 1}, {0.320388377f, 1.64077675f}, {0.247290015f, 1.90517497f}, {0.191798091f, 1.89185679f}}}
2949seg=2 {{{0.191798091f, 1.89185679f}, {0.0740879625f, 1.86360621f}, {0.0355987549f, 0.585760415f}, {4, -1}}}
2950seg=3 {{{4, -1}, {0, 1}}}
2951seg=4 {{{1, 3}, {-1.0564518f, 1.79032254f}, {1.45265341f, 0.229448318f}, {1.45381773f, 0.22913377f}}}
2952seg=5 {{{1.45381773f, 0.22913377f}, {1.45425761f, 0.229014933f}, {1.0967741f, 0.451612949f}, {0, 1}}}
2953seg=6 {{{0, 1}, {1, 3}}}
2954SkOpSegment::findTop id=2 s=0.721621552 e=1 cw=1 swap=0 inflections=0 monotonic=1
2955</div>
2956
2957<div id="loop10">
2958seg=1 {{{5, 6}, {3.44873571f, 4.44873571f}, {2.4990766f, 3.4990766f}, {1.64551306f, 3.57876182f}}}
2959seg=2 {{{1.64551306f, 3.57876182f}, {0.298127174f, 3.70454836f}, {-0.809808373f, 6.39524937f}, {-3.66666651f, 13.333334f}}}
2960seg=3 {{{-3.66666651f, 13.333334f}, {5, 6}}}
2961seg=4 {{{1, 2}, {1, 2}, {-3.66666651f, 13.333334f}, {5, 6}}}
2962seg=5 {{{5, 6}, {1, 2}}}
2963SkOpSegment::findTop id=4 s=0.366025384 e=0 cw=1 swap=0 inflections=1 monotonic=1
2964</div>
2965
2966<div id="circlesOp3">
2967seg=1 {{{{2, 1}, {2, -1}, {0, -1}}}, 0.707106769f}
2968seg=2 {{{{0, -1}, {-2, -1}, {-2, 1}}}, 0.707106769f}
2969seg=3 {{{{-2, 1}, {-2, 3}, {0, 3}}}, 0.707106769f}
2970seg=4 {{{{0, 3}, {2, 3}, {2, 1}}}, 0.707106769f}
2971seg=5 {{{{6, 5}, {6, 8}, {3, 8}}}, 0.707106769f}
2972seg=6 {{{{3, 8}, {0, 8}, {0, 5}}}, 0.707106769f}
2973seg=7 {{{{0, 5}, {0, 2}, {3, 2}}}, 0.707106769f}
2974seg=8 {{{{3, 2}, {6, 2}, {6, 5}}}, 0.707106769f}
2975SkOpSegment::findTop id=2 s=1 e=0 cw=1 swap=0 inflections=0 monotonic=1
2976SkOpSegment::findTop id=7 s=0 e=1 cw=1 swap=0 inflections=0 monotonic=1
2977</div>
2978
2979<div id="loop9">
2980seg=1 {{{0, 1}, {0.294448644f, 1.58889723f}, {0.198747262f, 1.7442944f}, {0.0660428554f, 1.65340209f}}}
2981seg=2 {{{0.0660428554f, 1.65340209f}, {-0.251940489f, 1.43560803f}, {-0.782382965f, -0.196299091f}, {3.33333325f, -0.666666627f}}}
2982seg=3 {{{3.33333325f, -0.666666627f}, {0, 1}}}
2983seg=4 {{{1, 3}, {-1.22353387f, 1.09411383f}, {0.319867611f, 0.12996155f}, {0.886705518f, 0.107543148f}}}
2984seg=5 {{{0.886705518f, 0.107543148f}, {1.21211064f, 0.0946733952f}, {1.21568203f, 0.392158985f}, {0, 1}}}
2985seg=6 {{{0, 1}, {1, 3}}}
2986SkOpSegment::findTop id=2 s=0.481221389 e=1 cw=1 swap=0 inflections=0 monotonic=1
2987</div>
2988
2989<div id="loop8">
2990seg=1 {{{0, 1}, {0.307691187f, 1.92307353f}, {0.0631181896f, 2.19920897f}, {-0.13654758f, 2.10514426f}}}
2991seg=2 {{{-0.13654758f, 2.10514426f}, {-0.585797966f, 1.89349782f}, {-0.807703257f, -0.192306399f}, {6, -1}}}
2992seg=3 {{{6, -1}, {0, 1}}}
2993seg=4 {{{1, 4}, {-2.25000453f, 1.42241001f}, {1.1314013f, 0.0505309105f}, {1.87140274f, 0.0363764353f}}}
2994seg=5 {{{1.87140274f, 0.0363764353f}, {2.23191476f, 0.0294806957f}, {1.96551132f, 0.344829559f}, {0, 1}}}
2995seg=6 {{{0, 1}, {1, 4}}}
2996SkOpSegment::findTop id=2 s=0.471276477 e=1 cw=1 swap=0 inflections=0 monotonic=1
2997</div>
2998
2999<div id="rects5">
3000seg=1 {{{5, 5}, {6, 5}}}
3001seg=2 {{{6, 5}, {6, 6}}}
3002seg=3 {{{6, 6}, {5, 6}}}
3003seg=4 {{{5, 6}, {5, 5}}}
3004seg=5 {{{5, 5}, {6, 5}}}
3005seg=6 {{{6, 5}, {6, 6}}}
3006seg=7 {{{6, 6}, {5, 6}}}
3007seg=8 {{{5, 6}, {5, 5}}}
3008seg=9 {{{0, 0}, {6, 0}}}
3009seg=10 {{{6, 0}, {6, 6}}}
3010seg=11 {{{6, 6}, {0, 6}}}
3011seg=12 {{{0, 6}, {0, 0}}}
3012seg=13 {{{5, 5}, {6, 5}}}
3013seg=14 {{{6, 5}, {6, 6}}}
3014seg=15 {{{6, 6}, {5, 6}}}
3015seg=16 {{{5, 6}, {5, 5}}}
3016SkOpSegment::findTop id=12 s=0 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
3017SkOpSegment::findTop id=16 s=0 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
3018</div>
3019
3020<div id="loop7">
3021seg=1 {{{0, 1}, {0.824406445f, 1.82440639f}, {1.12019932f, 2.1201992f}, {1.31279516f, 2.06377077f}}}
3022seg=2 {{{1.31279516f, 2.06377077f}, {1.82105184f, 1.91485715f}, {1.6106205f, -0.687005401f}, {8.5f, -2.5f}}}
3023seg=3 {{{8.5f, -2.5f}, {0, 1}}}
3024seg=4 {{{3, 4}, {0.333333254f, 1.33333325f}, {3.66666675f, -0.666666746f}, {3.66666651f, -0.666666567f}}}
3025seg=5 {{{3.66666651f, -0.666666567f}, {3.66666651f, -0.666666508f}, {2.83333302f, -0.166666508f}, {0, 1}}}
3026seg=6 {{{0, 1}, {3, 4}}}
3027SkOpSegment::findTop id=2 s=0.655266494 e=1 cw=1 swap=0 inflections=0 monotonic=1
3028</div>
3029
3030<div id="cubicOp130a">
3031seg=1 {{{5, 6}, {4.30769253f, 5.68047333f}, {3.61538434f, 3.44378686f}}}
3032seg=2 {{{3.61538434f, 3.44378686f}, {2.80769205f, 0.69970417f}, {2, 1}}}
3033seg=3 {{{2, 1}, {5, 6}}}
3034seg=4 {{{5, 6}, {1.16057944f, 2.50466418f}, {3.69335032f, 3.61631155f}}}
3035seg=5 {{{3.69335032f, 3.61631155f}, {5.779459f, 4.49557161f}, {6, 4}}}
3036seg=6 {{{6, 4}, {5, 6}}}
3037SkOpSegment::findTop id=2 s=0 e=1 cw=0 swap=1 inflections=0 monotonic=0
3038</div>
3039
3040<div id="rRect1x">
3041seg=1 {{{{20.6499996f, 5.6500001f}, {20.6499996f, 1.13611996f}, {25.1403999f, 0.649999976f}}}, 0.888487995f}
3042seg=2 {{{25.1403999f, 0.649999976f}, {25.6499996f, 0.649999976f}}}
3043seg=3 {{{25.6499996f, 0.649999976f}, {26.1595993f, 0.676039994f}}}
3044seg=4 {{{{26.1595993f, 0.676039994f}, {30.6499996f, 1.13611996f}, {30.6499996f, 5.6500001f}}}, 0.888487995f}
3045seg=5 {{{30.6499996f, 5.6500001f}, {30.6499996f, 25.6499996f}}}
3046seg=6 {{{{30.6499996f, 25.6499996f}, {30.6499996f, 20.6499996f}, {25.6499996f, 20.6499996f}}}, 0.707107008f}
3047seg=7 {{{25.6499996f, 20.6499996f}, {20.6499996f, 20.6499996f}}}
3048seg=8 {{{20.6499996f, 20.6499996f}, {20.6499996f, 5.6500001f}}}
3049seg=9 {{{20.6499996f, 20.6499996f}, {5.6500001f, 20.6499996f}}}
3050seg=10 {{{{5.6500001f, 20.6499996f}, {0.649999976f, 20.6499996f}, {0.649999976f, 25.6499996f}}}, 0.707107008f}
3051seg=11 {{{0.649999976f, 25.6499996f}, {0.649999976f, 45.6500015f}}}
3052seg=12 {{{{0.649999976f, 45.6500015f}, {0.649999976f, 50.6500015f}, {5.6500001f, 50.6500015f}}}, 0.707107008f}
3053seg=13 {{{5.6500001f, 50.6500015f}, {25.6499996f, 50.6500015f}}}
3054seg=14 {{{{25.6499996f, 50.6500015f}, {30.6499996f, 50.6500015f}, {30.6499996f, 45.6500015f}}}, 0.707107008f}
3055seg=15 {{{30.6499996f, 45.6500015f}, {30.6499996f, 25.6499996f}}}
3056seg=16 {{{{30.6499996f, 25.6499996f}, {30.6499996f, 30.6499996f}, {25.6499996f, 30.6499996f}}}, 0.707107008f}
3057seg=17 {{{{25.6499996f, 30.6499996f}, {20.6499996f, 30.6499996f}, {20.6499996f, 25.6499996f}}}, 0.707107008f}
3058seg=18 {{{20.6499996f, 25.6499996f}, {20.6499996f, 20.6499996f}}}
3059seg=19 {{{20.6499996f, 45.6500015f}, {20.6499996f, 25.6499996f}}}
3060seg=20 {{{{20.6499996f, 25.6499996f}, {20.6499996f, 20.6499996f}, {25.6499996f, 20.6499996f}}}, 0.707107008f}
3061seg=21 {{{25.6499996f, 20.6499996f}, {45.6500015f, 20.6499996f}}}
3062seg=22 {{{{45.6500015f, 20.6499996f}, {50.6500015f, 20.6499996f}, {50.6500015f, 25.6499996f}}}, 0.707107008f}
3063seg=23 {{{50.6500015f, 25.6499996f}, {50.6500015f, 45.6500015f}}}
3064seg=24 {{{{50.6500015f, 45.6500015f}, {50.6500015f, 50.6500015f}, {45.6500015f, 50.6500015f}}}, 0.707107008f}
3065seg=25 {{{45.6500015f, 50.6500015f}, {25.6499996f, 50.6500015f}}}
3066seg=26 {{{{25.6499996f, 50.6500015f}, {20.6499996f, 50.6500015f}, {20.6499996f, 45.6500015f}}}, 0.707107008f}
3067SkOpSegment::findTop id=1 s=0 e=1 cw=1 swap=0 inflections=0 monotonic=1
3068</div>
3069
3070<div id="circlesOp2">
3071seg=1 {{{{4, 1}, {4, -3}, {0, -3}}}, 0.707106769f}
3072seg=2 {{{{0, -3}, {-4, -3}, {-4, 1}}}, 0.707106769f}
3073seg=3 {{{{-4, 1}, {-4, 5}, {0, 5}}}, 0.707106769f}
3074seg=4 {{{{0, 5}, {4, 5}, {4, 1}}}, 0.707106769f}
3075seg=5 {{{{3, 4}, {3, 7}, {0, 7}}}, 0.707106769f}
3076seg=6 {{{{0, 7}, {-3, 7}, {-3, 4}}}, 0.707106769f}
3077seg=7 {{{{-3, 4}, {-3, 1}, {0, 1}}}, 0.707106769f}
3078seg=8 {{{{0, 1}, {3, 1}, {3, 4}}}, 0.707106769f}
3079SkOpSegment::findTop id=2 s=1 e=0 cw=1 swap=0 inflections=0 monotonic=1
3080</div>
3081
3082<div id="circlesOp1">
3083seg=1 {{{{2, 1}, {2, -1}, {0, -1}}}, 0.707106769f}
3084seg=2 {{{{0, -1}, {-2, -1}, {-2, 1}}}, 0.707106769f}
3085seg=3 {{{{-2, 1}, {-2, 3}, {0, 3}}}, 0.707106769f}
3086seg=4 {{{{0, 3}, {2, 3}, {2, 1}}}, 0.707106769f}
3087seg=5 {{{{1, 1}, {1, 2}, {0, 2}}}, 0.707106769f}
3088seg=6 {{{{0, 2}, {-1, 2}, {-1, 1}}}, 0.707106769f}
3089seg=7 {{{{-1, 1}, {-1, 0}, {0, 0}}}, 0.707106769f}
3090seg=8 {{{{0, 0}, {1, 0}, {1, 1}}}, 0.707106769f}
3091SkOpSegment::findTop id=2 s=1 e=0 cw=1 swap=0 inflections=0 monotonic=1
3092SkOpSegment::findTop id=7 s=0 e=1 cw=1 swap=0 inflections=0 monotonic=1
3093</div>
3094
3095<div id="cubicOp131">
3096seg=1 {{{0, 1}, {1.59338665f, 2.59338665f}, {2.34047961f, 2.21208811f}, {3.14026093f, 1.80389869f}}}
3097seg=2 {{{3.14026093f, 1.80389869f}, {3.84629369f, 1.44355631f}, {4.59338665f, 1.06225777f}, {6, 2}}}
3098seg=3 {{{6, 2}, {0, 1}}}
3099seg=4 {{{0, 3}, {0.936749876f, 4.40512466f}, {1.21537447f, 3.83587384f}, {1.55512238f, 3.14174342f}}}
3100seg=5 {{{1.55512238f, 3.14174342f}, {1.94075036f, 2.35387659f}, {2.40512466f, 1.40512478f}, {4, 3}}}
3101seg=6 {{{4, 3}, {0, 3}}}
3102SkOpSegment::findTop id=1 s=1 e=0 cw=1 swap=0 inflections=1 monotonic=0
3103SkOpSegment::findTop id=5 s=0.0594875287 e=1 cw=1 swap=0 inflections=0 monotonic=0
3104</div>
3105
3106<div id="cubicOp130">
3107seg=1 {{{5, 6}, {4.53846169f, 6}, {4.07692289f, 4.72189331f}, {3.61538434f, 3.44378686f}}}
3108seg=2 {{{3.61538434f, 3.44378686f}, {3.07692289f, 1.95266271f}, {2.53846145f, 0.461538464f}, {2, 1}}}
3109seg=3 {{{2, 1}, {5, 6}}}
3110seg=4 {{{0, 3}, {0.538927794f, 2.46107221f}, {2.23962831f, 3.08391714f}, {3.69335032f, 3.61631155f}}}
3111seg=5 {{{3.69335032f, 3.61631155f}, {4.93706226f, 4.07179403f}, {6, 4.46107197f}, {6, 4}}}
3112seg=6 {{{6, 4}, {0, 3}}}
3113SkOpSegment::findTop id=2 s=0 e=1 cw=0 swap=1 inflections=1 monotonic=0
3114</div>
3115
3116<div id="cubicOp129">
3117seg=1 {{{5, 6}, {3.75592899f, 4.75592899f}, {2.89878607f, 2.73800159f}, {2.42857146f, 1.63099933f}}}
3118seg=2 {{{2.42857146f, 1.63099933f}, {2.14285707f, 0.958356798f}, {2, 0.622035503f}, {2, 1}}}
3119seg=3 {{{2, 1}, {5, 6}}}
3120seg=4 {{{0, 2}, {0.394448727f, 2}, {1.41125667f, 2.46676946f}, {2.37532973f, 2.90933061f}}}
3121seg=5 {{{2.37532973f, 2.90933061f}, {3.85535884f, 3.58874345f}, {5.21110249f, 4.21110249f}, {4, 3}}}
3122seg=6 {{{4, 3}, {0, 2}}}
3123SkOpSegment::findTop id=2 s=0 e=1 cw=0 swap=1 inflections=1 monotonic=0
3124</div>
3125
3126<div id="cubicOp128">
3127seg=1 {{{0, 1}, {0, 2.5f}, {1.6875f, 2.3125f}, {3.375f, 2.125f}}}
3128seg=2 {{{3.375f, 2.125f}, {3.9375f, 2.0625f}, {4.5f, 2}, {5, 2}}}
3129seg=3 {{{5, 2}, {0, 1}}}
3130seg=4 {{{2, 3}, {2, 3.68301272f}, {1.88337338f, 3.54963923f}, {1.80943513f, 3.07782435f}}}
3131seg=5 {{{1.80943513f, 3.07782435f}, {1.66686702f, 2.16806936f}, {1.68301272f, 0}, {3, 0}}}
3132seg=6 {{{3, 0}, {2, 3}}}
3133SkOpSegment::findTop id=5 s=0.458125233 e=1 cw=1 swap=0 inflections=0 monotonic=1
3134</div>
3135
3136<div id="cubicOp127">
3137seg=1 {{{0, 1}, {1, 5}, {6, 0}, {3, 0}}}
3138seg=2 {{{3, 0}, {0, 1}}}
3139seg=3 {{{0, 6}, {8.60313773e-013f, 5.99999571f}}}
3140seg=4 {{{0, 5.99999571f}, {0, 2.99999666f}, {1.00000215f, 0}, {5, 1}}}
3141seg=5 {{{5, 1}, {0, 6}}}
3142SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3143SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3144</div>
3145
3146<div id="cubicOp126">
3147seg=1 {{{0, 1}, {0, 2.11686611f}, {1.87108481f, 1.67449486f}, {2.82691956f, 1.24019969f}}}
3148seg=2 {{{2.82691956f, 1.24019969f}, {3.58272195f, 0.896791577f}, {3.76626778f, 0.558433056f}, {2, 1}}}
3149seg=3 {{{2, 1}, {0, 1}}}
3150seg=4 {{{0, 6}, {0.183503419f, 5.26598644f}, {0.333333343f, 4.59931993f}, {0.468027353f, 4}}}
3151seg=5 {{{0.468027353f, 4}, {1.06734705f, 1.33333337f}, {1.36700678f, 0}, {3, 0}}}
3152seg=6 {{{3, 0}, {0, 6}}}
3153SkOpSegment::findTop id=5 s=0.50000003 e=1 cw=1 swap=0 inflections=0 monotonic=1
3154</div>
3155
3156<div id="cubicOp125">
3157seg=1 {{{0, 1}, {1.78887355f, 3.9814558f}, {2.51105762f, 3.40727997f}, {3.4386673f, 2.66977954f}}}
3158seg=2 {{{3.4386673f, 2.66977954f}, {4.06668949f, 2.17046738f}, {4.78887367f, 1.59629118f}, {6, 2}}}
3159seg=3 {{{6, 2}, {0, 1}}}
3160seg=4 {{{1, 3}, {1.38379598f, 4.15138769f}, {1.47299325f, 3.97708178f}, {1.71985495f, 3.49467373f}}}
3161seg=5 {{{1.71985495f, 3.49467373f}, {2.11620402f, 2.7201426f}, {2.91897964f, 1.15138781f}, {6, 3}}}
3162seg=6 {{{6, 3}, {1, 3}}}
3163SkOpSegment::findTop id=1 s=0.361627626 e=0 cw=1 swap=0 inflections=0 monotonic=1
3164</div>
3165
3166<div id="cubicOp124">
3167seg=1 {{{0, 1}, {1, 5}, {6, 0}, {3, 0}}}
3168seg=2 {{{3, 0}, {0, 1}}}
3169seg=3 {{{0, 6}, {8.60313773e-013f, 5.99999571f}}}
3170seg=4 {{{0, 5.99999571f}, {0, 2.99999666f}, {1.00000215f, 0}, {5, 1}}}
3171seg=5 {{{5, 1}, {0, 6}}}
3172SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3173</div>
3174
3175<div id="loop6">
3176seg=1 {{{0, 1}, {0.392703831f, 1.78540766f}, {0.219947904f, 2.05676103f}, {0.218561709f, 2.05630541f}}}
3177seg=2 {{{0.218561709f, 2.05630541f}, {0.216418028f, 2.05560064f}, {0.624105453f, 1.40486407f}, {4.16666651f, 1.00000012f}}}
3178seg=3 {{{4.16666651f, 1.00000012f}, {0, 1}}}
3179seg=4 {{{1, 3}, {-0.401122808f, 2.29943848f}, {0.544325948f, 1.78292203f}, {1.15289307f, 1.45045042f}}}
3180seg=5 {{{1.15289307f, 1.45045042f}, {1.70257246f, 1.15015018f}, {1.97741222f, 1}, {0, 1}}}
3181seg=6 {{{0, 1}, {1, 3}}}
3182SkOpSegment::findTop id=1 s=0.924875102 e=0 cw=0 swap=0 inflections=0 monotonic=1
3183</div>
3184
3185<div id="loop5">
3186seg=1 {{{0, 2}, {1, 2}, {1, 1.66666663f}, {0.833333313f, 1.33333325f}}}
3187seg=2 {{{0.833333313f, 1.33333325f}, {0, 2}}}
3188seg=3 {{{1, 2}, {1, 1.66666663f}, {0.833333313f, 1.33333325f}, {0, 2}}}
3189seg=4 {{{0, 2}, {1, 2}}}
3190SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3191</div>
3192
3193<div id="cubicOp123">
3194seg=1 {{{0, 1}, {0.541499972f, 3.16599989f}, {1.08299994f, 2.69299984f}, {2.10083938f, 1.80391729f}}}
3195seg=2 {{{2.10083938f, 1.80391729f}, {2.96266651f, 1.05111134f}, {4.16599989f, 0}, {6, 0}}}
3196seg=3 {{{6, 0}, {0, 1}}}
3197seg=4 {{{0, 2}, {0, 3.81689167f}, {0.206318453f, 3.57059884f}, {0.806384504f, 2.85426903f}}}
3198seg=5 {{{0.806384504f, 2.85426903f}, {1.52740121f, 1.99355423f}, {2.81689167f, 0.454222918f}, {5, 1}}}
3199seg=6 {{{5, 1}, {0, 2}}}
3200SkOpSegment::findTop id=2 s=0.699168961 e=1 cw=1 swap=0 inflections=0 monotonic=1
3201</div>
3202
3203<div id="cubicOp122">
3204seg=1 {{{0, 1}, {2.36543417f, 4.15391207f}, {3.48747301f, 2.3342433f}, {3.85631156f, 0.933137774f}}}
3205seg=2 {{{3.85631156f, 0.933137774f}, {3.95525837f, 0.55726862f}, {4, 0.211521983f}, {4, 0}}}
3206seg=3 {{{4, 0}, {0, 1}}}
3207seg=4 {{{1, 4}, {0.608183205f, 4}, {0.523407221f, 3.38591838f}, {0.805823922f, 2.81942582f}}}
3208seg=5 {{{0.805823922f, 2.81942582f}, {1.24419475f, 1.94010842f}, {2.56726718f, 1.17545033f}, {5, 3}}}
3209seg=6 {{{5, 3}, {1, 4}}}
3210SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3211</div>
3212
3213<div id="cubicOp121">
3214seg=1 {{{0, 1}, {1.90192389f, 2.90192389f}, {2.59807634f, 2.79422879f}, {3.1076951f, 2.71539044f}}}
3215seg=2 {{{3.1076951f, 2.71539044f}, {3.40192366f, 2.669873f}, {3.63397455f, 2.63397455f}, {4, 3}}}
3216seg=3 {{{4, 3}, {0, 1}}}
3217seg=4 {{{2, 3}, {2.36602545f, 3.36602545f}, {2.330127f, 3.06217766f}, {2.28460979f, 2.67691422f}}}
3218seg=5 {{{2.28460979f, 2.67691422f}, {2.20577145f, 2.00961876f}, {2.09807634f, 1.09807622f}, {4, 3}}}
3219seg=6 {{{4, 3}, {2, 3}}}
3220SkOpSegment::findTop id=1 s=0.577350301 e=0 cw=1 swap=0 inflections=0 monotonic=1
3221</div>
3222
3223<div id="cubicOp120">
3224seg=1 {{{0, 1}, {1.30277562f, 2.95416355f}, {1.75693905f, 2.36249042f}, {2.46804166f, 1.43608332f}}}
3225seg=2 {{{2.46804166f, 1.43608332f}, {2.84861231f, 0.940285206f}, {3.30277562f, 0.348612189f}, {4, 0}}}
3226seg=3 {{{4, 0}, {0, 1}}}
3227seg=4 {{{1, 2}, {0.75f, 2.5f}, {0.625f, 2.625f}, {0.625f, 2.5625f}}}
3228seg=5 {{{0.625f, 2.5625f}, {0.625f, 2.375f}, {1.75f, 0.5f}, {4, 2}}}
3229seg=6 {{{4, 2}, {1, 2}}}
3230SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3231</div>
3232
3233<div id="cubicOp119">
3234seg=1 {{{0, 1}, {2, 3.66666675f}, {2.22222209f, 2.77777767f}, {2.44444442f, 1.88888884f}}}
3235seg=2 {{{2.44444442f, 1.88888884f}, {2.55555558f, 1.44444442f}, {2.66666675f, 1}, {3, 1}}}
3236seg=3 {{{3, 1}, {0, 1}}}
3237seg=4 {{{1, 2}, {1, 2.15061641f}, {1, 2.21049166f}, {1.01366711f, 2.21379328f}}}
3238seg=5 {{{1.01366711f, 2.21379328f}, {1.09074128f, 2.23241305f}, {1.60246587f, 0.451849401f}, {5, 3}}}
3239seg=6 {{{5, 3}, {1, 2}}}
3240SkOpSegment::findTop id=1 s=0.202188199 e=0 cw=1 swap=0 inflections=0 monotonic=1
3241</div>
3242
3243<div id="loop4">
3244seg=1 {{{0, 5}, {1, 5}, {1, 4}, {0.833333313f, 3}}}
3245seg=2 {{{0.833333313f, 3}, {0, 5}}}
3246seg=3 {{{1, 5}, {1, 4}, {0.833333313f, 3}, {0, 5}}}
3247seg=4 {{{0, 5}, {1, 5}}}
3248SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3249</div>
3250
3251<div id="loop3">
3252seg=1 {{{0, 1}, {0.821109116f, 2.09481215f}, {0.918055832f, 2.51540422f}, {0.916212499f, 2.51465869f}}}
3253seg=2 {{{0.916212499f, 2.51465869f}, {0.911321044f, 2.51268077f}, {0.210793018f, -0.456171691f}, {10.5f, -1.66666651f}}}
3254seg=3 {{{10.5f, -1.66666651f}, {0, 1}}}
3255seg=4 {{{3, 5}, {-1.52495909f, 1.60628057f}, {3.54785824f, -0.251794577f}, {3.99093199f, -0.261532843f}}}
3256seg=5 {{{3.99093199f, -0.261532843f}, {4.20064306f, -0.26614207f}, {3.37318897f, 0.143317103f}, {0, 1}}}
3257seg=6 {{{0, 1}, {3, 5}}}
3258SkOpSegment::findTop id=2 s=0.705435785 e=1 cw=1 swap=0 inflections=0 monotonic=1
3259</div>
3260
3261<div id="loop2">
3262seg=1 {{{0, 1}, {1.67274892f, 2.67274904f}, {2.4128015f, 3.4128015f}, {3.00024128f, 3.30683374f}}}
3263seg=2 {{{3.00024128f, 3.30683374f}, {3.46634817f, 3.22275305f}, {3.83637452f, 2.60604262f}, {4.5f, 1.5f}}}
3264seg=3 {{{4.5f, 1.5f}, {0, 1}}}
3265seg=4 {{{3, 4}, {3, 4}, {4.5f, 1.5f}, {0, 1}}}
3266seg=5 {{{0, 1}, {3, 4}}}
3267SkOpSegment::findTop id=1 s=0.000717644924 e=0 cw=0 swap=0 inflections=0 monotonic=1
3268</div>
3269
3270<div id="loop1asQuad">
3271seg=1 {{{0, 1}, {0.252181143f, 2.2899034f}, {-0.139477089f, 2.87209582f}}}
3272seg=2 {{{-0.139477089f, 2.87209582f}, {-0.933131516f, 3.75277662f}, {-0.4629125f, 3.49947596f}}}
3273seg=3 {{{-0.4629125f, 3.49947596f}, {-0.097509779f, 3.12475419f}, {8.83333302f, 2.33333349f}}}
3274seg=4 {{{8.83333302f, 2.33333349f}, {0, 1}}}
3275seg=5 {{{1, 5}, {-2.5842278f, 3.81228638f}, {1.17642736f, 2.92531323f}}}
3276seg=6 {{{1.17642736f, 2.92531323f}, {5.29706097f, 1.99295568f}, {0, 1}}}
3277seg=7 {{{0, 1}, {1, 5}}}
3278SkOpSegment::findTop id=1 s=1 e=0 cw=0 swap=0 inflections=0 monotonic=1
3279</div>
3280
3281<div id="loop1">
3282seg=1 {{{0, 1}, {0.461014599f, 2.84405851f}, {-0.707401514f, 3.48375487f}, {-0.680115759f, 3.53963876f}}}
3283seg=2 {{{-0.680115759f, 3.53963876f}, {-0.648215175f, 3.60497427f}, {1.01804495f, 2.87231898f}, {8.83333302f, 2.33333349f}}}
3284seg=3 {{{8.83333302f, 2.33333349f}, {0, 1}}}
3285seg=4 {{{1, 5}, {-2.24405169f, 4.18898726f}, {-0.476109624f, 3.53583241f}, {1.17642748f, 2.92531323f}}}
3286seg=5 {{{1.17642748f, 2.92531323f}, {2.91992569f, 2.28118896f}, {4.53496456f, 1.68452311f}, {0, 1}}}
3287seg=6 {{{0, 1}, {1, 5}}}
3288SkOpSegment::findTop id=1 s=1 e=0 cw=0 swap=0 inflections=1 monotonic=1
3289</div>
3290
3291<div id="issue3517">
3292seg=1 {{{31.3500004f, 57.75f}, {31.5277309f, 57.7495461f}, {31.7054615f, 57.7540665f}, {31.8831921f, 57.7585831f}}}
3293seg=2 {{{31.8831921f, 57.7585831f}, {32.2554626f, 57.7680473f}, {32.6277313f, 57.7775116f}, {33, 57.7412987f}}}
3294seg=3 {{{33, 57.7412987f}, {33.2959328f, 57.712513f}, {33.5918655f, 57.6452522f}, {33.8877983f, 57.5779915f}}}
3295seg=4 {{{33.8877983f, 57.5779915f}, {34.1418648f, 57.5202446f}, {34.3959312f, 57.4624977f}, {34.6500015f, 57.4291f}}}
3296seg=5 {{{34.6500015f, 57.4291f}, {35.2000008f, 57.3568993f}, {35.75f, 57.3223f}, {36.2999992f, 57.3078995f}}}
3297seg=6 {{{36.2999992f, 57.3078995f}, {36.8499985f, 57.293499f}, {37.4000015f, 57.3143005f}, {37.9500008f, 57.3428001f}}}
3298seg=7 {{{37.9500008f, 57.3428001f}, {38.5f, 57.3712006f}, {39.0499992f, 57.4112015f}, {39.5999985f, 57.4785995f}}}
3299seg=8 {{{39.5999985f, 57.4785995f}, {39.8435669f, 57.5084496f}, {40.0871315f, 57.5558472f}, {40.3306961f, 57.6032486f}}}
3300seg=9 {{{40.3306961f, 57.6032486f}, {40.6371307f, 57.6628838f}, {40.9435654f, 57.7225189f}, {41.25f, 57.7472f}}}
3301seg=10 {{{41.25f, 57.7472f}, {41.7999992f, 57.7915993f}, {42.3499985f, 57.7961998f}, {42.9000015f, 57.7444992f}}}
3302seg=11 {{{42.9000015f, 57.7444992f}, {43.2496109f, 57.7116356f}, {43.5992203f, 57.6357002f}, {43.9488297f, 57.5597649f}}}
3303seg=12 {{{43.9488297f, 57.5597649f}, {44.1492195f, 57.5162392f}, {44.3496094f, 57.4727173f}, {44.5499992f, 57.4373016f}}}
3304seg=13 {{{44.5499992f, 57.4373016f}, {44.7069931f, 57.4095268f}, {44.8639908f, 57.3792114f}, {45.0209846f, 57.348896f}}}
3305seg=14 {{{45.0209846f, 57.348896f}, {45.41399f, 57.2730026f}, {45.8069954f, 57.197113f}, {46.2000008f, 57.1610985f}}}
3306seg=15 {{{46.2000008f, 57.1610985f}, {46.60075f, 57.1243744f}, {47.0014992f, 57.1284256f}, {47.4022484f, 57.1324768f}}}
3307seg=16 {{{47.4022484f, 57.1324768f}, {47.5514984f, 57.1339874f}, {47.7007484f, 57.135498f}, {47.8499985f, 57.1348991f}}}
3308seg=17 {{{47.8499985f, 57.1348991f}, {48.2035446f, 57.1334877f}, {48.5570869f, 57.1376495f}, {48.9106293f, 57.1418114f}}}
3309seg=18 {{{48.9106293f, 57.1418114f}, {49.1070862f, 57.1441269f}, {49.3035431f, 57.1464424f}, {49.5f, 57.1478004f}}}
3310seg=19 {{{49.5f, 57.1478004f}, {50.0499992f, 57.1515999f}, {50.5999985f, 57.1553001f}, {51.1500015f, 57.1579018f}}}
3311seg=20 {{{51.1500015f, 57.1579018f}, {51.3961868f, 57.1590652f}, {51.6423721f, 57.159626f}, {51.8885574f, 57.1601868f}}}
3312seg=21 {{{51.8885574f, 57.1601868f}, {52.1923714f, 57.160881f}, {52.4961853f, 57.1615753f}, {52.7999992f, 57.1633987f}}}
3313seg=22 {{{52.7999992f, 57.1633987f}, {53.1410751f, 57.1654434f}, {53.4821548f, 57.1686859f}, {53.8232307f, 57.1719246f}}}
3314seg=23 {{{53.8232307f, 57.1719246f}, {54.0321541f, 57.1739082f}, {54.2410774f, 57.1758919f}, {54.4500008f, 57.1776009f}}}
3315seg=24 {{{54.4500008f, 57.1776009f}, {54.624424f, 57.178997f}, {54.7988472f, 57.1809158f}, {54.9732704f, 57.1828346f}}}
3316seg=25 {{{54.9732704f, 57.1828346f}, {55.3488464f, 57.1869621f}, {55.7244225f, 57.1910934f}, {56.0999985f, 57.1899986f}}}
3317seg=26 {{{56.0999985f, 57.1899986f}, {56.6262779f, 57.1884689f}, {57.1525536f, 57.1788826f}, {57.6788292f, 57.1692924f}}}
3318seg=27 {{{57.6788292f, 57.1692924f}, {57.75f, 57.1679993f}}}
3319seg=28 {{{57.75f, 57.1679993f}, {57.9838562f, 57.1637497f}, {58.2177124f, 57.157238f}, {58.4515724f, 57.1507263f}}}
3320seg=29 {{{58.4515724f, 57.1507263f}, {58.7677155f, 57.141922f}, {59.0838585f, 57.1331215f}, {59.4000015f, 57.1299019f}}}
3321seg=30 {{{59.4000015f, 57.1299019f}, {59.7474785f, 57.1263618f}, {60.0949554f, 57.1288528f}, {60.4424324f, 57.1313438f}}}
3322seg=31 {{{60.4424324f, 57.1313438f}, {60.6449547f, 57.1327934f}, {60.847477f, 57.134243f}, {61.0499992f, 57.1344986f}}}
3323seg=32 {{{61.0499992f, 57.1344986f}, {61.2477646f, 57.1347504f}, {61.4455299f, 57.1334648f}, {61.6432953f, 57.1321793f}}}
3324seg=33 {{{61.6432953f, 57.1321793f}, {61.9955292f, 57.1298866f}, {62.3477669f, 57.127594f}, {62.7000008f, 57.1339989f}}}
3325seg=34 {{{62.7000008f, 57.1339989f}, {63.0998077f, 57.1413422f}, {63.4996147f, 57.1586723f}, {63.8994217f, 57.1760025f}}}
3326seg=35 {{{63.8994217f, 57.1760025f}, {64.049614f, 57.1825104f}, {64.1998062f, 57.1890182f}, {64.3499985f, 57.1949997f}}}
3327seg=36 {{{64.3499985f, 57.1949997f}, {64.5562439f, 57.2032127f}, {64.7624893f, 57.2134476f}, {64.9687347f, 57.2236862f}}}
3328seg=37 {{{64.9687347f, 57.2236862f}, {65.3124924f, 57.2407494f}, {65.6562424f, 57.2578125f}, {66, 57.2654991f}}}
3329seg=38 {{{66, 57.2654991f}, {66.3287354f, 57.2728539f}, {66.6574707f, 57.2711296f}, {66.9862061f, 57.2694092f}}}
3330seg=39 {{{66.9862061f, 57.2694092f}, {67.2074738f, 57.2682495f}, {67.4287338f, 57.2670898f}, {67.6500015f, 57.2686996f}}}
3331seg=40 {{{67.6500015f, 57.2686996f}, {67.7921829f, 57.2697601f}, {67.9343643f, 57.2701569f}, {68.0765457f, 57.2705536f}}}
3332seg=41 {{{68.0765457f, 57.2705536f}, {68.4843597f, 57.271698f}, {68.8921814f, 57.2728424f}, {69.3000031f, 57.2896004f}}}
3333seg=42 {{{69.3000031f, 57.2896004f}, {69.62323f, 57.3028793f}, {69.9464645f, 57.3286667f}, {70.2696915f, 57.3544502f}}}
3334seg=43 {{{70.2696915f, 57.3544502f}, {70.49646f, 57.3725395f}, {70.7232285f, 57.3906288f}, {70.9499969f, 57.4043999f}}}
3335seg=44 {{{70.9499969f, 57.4043999f}, {71.5f, 57.4376984f}, {72.0500031f, 57.4668007f}, {72.5999985f, 57.4896011f}}}
3336seg=45 {{{72.5999985f, 57.4896011f}, {72.7172928f, 57.494442f}, {72.8345871f, 57.4997368f}, {72.9518814f, 57.5050316f}}}
3337seg=46 {{{72.9518814f, 57.5050316f}, {73.3845901f, 57.5245667f}, {73.8172913f, 57.5441017f}, {74.25f, 57.5407982f}}}
3338seg=47 {{{74.25f, 57.5407982f}, {74.8000031f, 57.536499f}, {75.3499985f, 57.5068016f}, {75.9000015f, 57.4640999f}}}
3339seg=48 {{{75.9000015f, 57.4640999f}, {76.1685486f, 57.443203f}, {76.4370956f, 57.4094048f}, {76.7056427f, 57.3756104f}}}
3340seg=49 {{{76.7056427f, 57.3756104f}, {76.9870911f, 57.3401909f}, {77.2685471f, 57.3047714f}, {77.5500031f, 57.2841988f}}}
3341seg=50 {{{77.5500031f, 57.2841988f}, {78.0999985f, 57.2439995f}, {78.6500015f, 57.216301f}, {79.1999969f, 57.2228012f}}}
3342seg=51 {{{79.1999969f, 57.2228012f}, {79.5648727f, 57.2271118f}, {79.9297485f, 57.2552795f}, {80.2946167f, 57.2834473f}}}
3343seg=52 {{{80.2946167f, 57.2834473f}, {80.479744f, 57.2977371f}, {80.6648712f, 57.312027f}, {80.8499985f, 57.3232002f}}}
3344seg=53 {{{80.8499985f, 57.3232002f}, {81.0279541f, 57.3339081f}, {81.2059097f, 57.3453102f}, {81.3838654f, 57.3567123f}}}
3345seg=54 {{{81.3838654f, 57.3567123f}, {81.7559128f, 57.3805466f}, {82.1279526f, 57.4043808f}, {82.5f, 57.4219017f}}}
3346seg=55 {{{82.5f, 57.4219017f}, {83.0500031f, 57.4477997f}, {83.5999985f, 57.4636993f}, {84.1500015f, 57.4786987f}}}
3347seg=56 {{{84.1500015f, 57.4786987f}, {84.5231628f, 57.4888763f}, {84.8963242f, 57.4955521f}, {85.2694855f, 57.5022316f}}}
3348seg=57 {{{85.2694855f, 57.5022316f}, {85.4463196f, 57.5053978f}, {85.6231613f, 57.508564f}, {85.8000031f, 57.5121002f}}}
3349seg=58 {{{85.8000031f, 57.5121002f}, {85.9800262f, 57.515667f}, {86.1600571f, 57.5200043f}, {86.3400803f, 57.5243416f}}}
3350seg=59 {{{86.3400803f, 57.5243416f}, {86.7100525f, 57.5332603f}, {87.0800247f, 57.5421791f}, {87.4499969f, 57.5443993f}}}
3351seg=60 {{{87.4499969f, 57.5443993f}, {87.5730286f, 57.5451355f}, {87.6960602f, 57.5466385f}, {87.8190918f, 57.5481415f}}}
3352seg=61 {{{87.8190918f, 57.5481415f}, {88.2460632f, 57.5533638f}, {88.6730347f, 57.5585823f}, {89.0999985f, 57.5317993f}}}
3353seg=62 {{{89.0999985f, 57.5317993f}, {89.3298035f, 57.5173416f}, {89.5596085f, 57.4766998f}, {89.7894135f, 57.4360542f}}}
3354seg=63 {{{89.7894135f, 57.4360542f}, {90.1096115f, 57.379425f}, {90.4298019f, 57.3227959f}, {90.75f, 57.3370018f}}}
3355seg=64 {{{90.75f, 57.3370018f}, {91.0554504f, 57.3504982f}, {91.3609009f, 57.4328346f}, {91.6663513f, 57.5151711f}}}
3356seg=65 {{{91.6663513f, 57.5151711f}, {91.9109039f, 57.581089f}, {92.1554489f, 57.6470108f}, {92.4000015f, 57.6776009f}}}
3357seg=66 {{{92.4000015f, 57.6776009f}, {92.8340607f, 57.7319756f}, {93.2681274f, 57.7380829f}, {93.7021942f, 57.7441902f}}}
3358seg=67 {{{93.7021942f, 57.7441902f}, {93.8181305f, 57.7458191f}, {93.9340668f, 57.747448f}, {94.0500031f, 57.75f}}}
3359seg=68 {{{94.0500031f, 57.75f}, {94.4166641f, 57.7580681f}, {94.7833328f, 57.7553787f}, {95.1499939f, 57.7526894f}}}
3360seg=69 {{{95.1499939f, 57.7526894f}, {95.3333282f, 57.7513428f}, {95.5166626f, 57.75f}, {95.6999969f, 57.75f}}}
3361seg=70 {{{95.6999969f, 57.75f}, {31.3500004f, 57.75f}}}
3362seg=71 {{{31.3500004f, 57.75f}, {31.5277309f, 57.7504539f}, {31.7054615f, 57.7459335f}, {31.8831921f, 57.7414169f}}}
3363seg=72 {{{31.8831921f, 57.7414169f}, {32.2554626f, 57.7319527f}, {32.6277313f, 57.7224884f}, {33, 57.7587013f}}}
3364seg=73 {{{33, 57.7587013f}, {33.2959328f, 57.787487f}, {33.5918655f, 57.8547478f}, {33.8877983f, 57.9220085f}}}
3365seg=74 {{{33.8877983f, 57.9220085f}, {34.1418648f, 57.9797554f}, {34.3959312f, 58.0375023f}, {34.6500015f, 58.0709f}}}
3366seg=75 {{{34.6500015f, 58.0709f}, {35.2000008f, 58.1431007f}, {35.75f, 58.1777f}, {36.2999992f, 58.1921005f}}}
3367seg=76 {{{36.2999992f, 58.1921005f}, {36.8499985f, 58.206501f}, {37.4000015f, 58.1856995f}, {37.9500008f, 58.1571999f}}}
3368seg=77 {{{37.9500008f, 58.1571999f}, {38.5f, 58.1287994f}, {39.0499992f, 58.0887985f}, {39.5999985f, 58.0214005f}}}
3369seg=78 {{{39.5999985f, 58.0214005f}, {39.8435669f, 57.9915504f}, {40.0871315f, 57.9441528f}, {40.3306961f, 57.8967514f}}}
3370seg=79 {{{40.3306961f, 57.8967514f}, {40.6371307f, 57.8371162f}, {40.9435654f, 57.7774811f}, {41.25f, 57.7528f}}}
3371seg=80 {{{41.25f, 57.7528f}, {41.7999992f, 57.7084007f}, {42.3499985f, 57.7038002f}, {42.9000015f, 57.7555008f}}}
3372seg=81 {{{42.9000015f, 57.7555008f}, {43.2496109f, 57.7883644f}, {43.5992203f, 57.8642998f}, {43.9488297f, 57.9402351f}}}
3373seg=82 {{{43.9488297f, 57.9402351f}, {44.1492195f, 57.9837608f}, {44.3496094f, 58.0272827f}, {44.5499992f, 58.0626984f}}}
3374seg=83 {{{44.5499992f, 58.0626984f}, {44.7069931f, 58.0904732f}, {44.8639908f, 58.1207886f}, {45.0209846f, 58.151104f}}}
3375seg=84 {{{45.0209846f, 58.151104f}, {45.41399f, 58.2269974f}, {45.8069954f, 58.302887f}, {46.2000008f, 58.3389015f}}}
3376seg=85 {{{46.2000008f, 58.3389015f}, {46.60075f, 58.3756256f}, {47.0014992f, 58.3715744f}, {47.4022484f, 58.3675232f}}}
3377seg=86 {{{47.4022484f, 58.3675232f}, {47.5514984f, 58.3660126f}, {47.7007484f, 58.364502f}, {47.8499985f, 58.3651009f}}}
3378seg=87 {{{47.8499985f, 58.3651009f}, {48.2035446f, 58.3665123f}, {48.5570869f, 58.3623505f}, {48.9106293f, 58.3581886f}}}
3379seg=88 {{{48.9106293f, 58.3581886f}, {49.1070862f, 58.3558731f}, {49.3035431f, 58.3535576f}, {49.5f, 58.3521996f}}}
3380seg=89 {{{49.5f, 58.3521996f}, {50.0499992f, 58.3484001f}, {50.5999985f, 58.3446999f}, {51.1500015f, 58.3420982f}}}
3381seg=90 {{{51.1500015f, 58.3420982f}, {51.3961868f, 58.3409348f}, {51.6423721f, 58.340374f}, {51.8885574f, 58.3398132f}}}
3382seg=91 {{{51.8885574f, 58.3398132f}, {52.1923714f, 58.339119f}, {52.4961853f, 58.3384247f}, {52.7999992f, 58.3366013f}}}
3383seg=92 {{{52.7999992f, 58.3366013f}, {53.1410751f, 58.3345566f}, {53.4821548f, 58.3313141f}, {53.8232307f, 58.3280754f}}}
3384seg=93 {{{53.8232307f, 58.3280754f}, {54.0321541f, 58.3260918f}, {54.2410774f, 58.3241081f}, {54.4500008f, 58.3223991f}}}
3385seg=94 {{{54.4500008f, 58.3223991f}, {54.624424f, 58.321003f}, {54.7988472f, 58.3190842f}, {54.9732704f, 58.3171654f}}}
3386seg=95 {{{54.9732704f, 58.3171654f}, {55.3488464f, 58.3130379f}, {55.7244225f, 58.3089066f}, {56.0999985f, 58.3100014f}}}
3387seg=96 {{{56.0999985f, 58.3100014f}, {56.6262779f, 58.3115311f}, {57.1525536f, 58.3211174f}, {57.6788292f, 58.3307076f}}}
3388seg=97 {{{57.6788292f, 58.3307076f}, {57.75f, 58.3320007f}}}
3389seg=98 {{{57.75f, 58.3320007f}, {57.9838562f, 58.3362503f}, {58.2177124f, 58.342762f}, {58.4515724f, 58.3492737f}}}
3390seg=99 {{{58.4515724f, 58.3492737f}, {58.7677155f, 58.358078f}, {59.0838585f, 58.3668785f}, {59.4000015f, 58.3700981f}}}
3391seg=100 {{{59.4000015f, 58.3700981f}, {59.7474785f, 58.3736382f}, {60.0949554f, 58.3711472f}, {60.4424324f, 58.3686562f}}}
3392seg=101 {{{60.4424324f, 58.3686562f}, {60.6449547f, 58.3672066f}, {60.847477f, 58.365757f}, {61.0499992f, 58.3655014f}}}
3393seg=102 {{{61.0499992f, 58.3655014f}, {61.2477646f, 58.3652496f}, {61.4455299f, 58.3665352f}, {61.6432953f, 58.3678207f}}}
3394seg=103 {{{61.6432953f, 58.3678207f}, {61.9955292f, 58.3701134f}, {62.3477669f, 58.372406f}, {62.7000008f, 58.3660011f}}}
3395seg=104 {{{62.7000008f, 58.3660011f}, {63.0998077f, 58.3586578f}, {63.4996147f, 58.3413277f}, {63.8994217f, 58.3239975f}}}
3396seg=105 {{{63.8994217f, 58.3239975f}, {64.049614f, 58.3174896f}, {64.1998062f, 58.3109818f}, {64.3499985f, 58.3050003f}}}
3397seg=106 {{{64.3499985f, 58.3050003f}, {64.5562439f, 58.2967873f}, {64.7624893f, 58.2865524f}, {64.9687347f, 58.2763138f}}}
3398seg=107 {{{64.9687347f, 58.2763138f}, {65.3124924f, 58.2592506f}, {65.6562424f, 58.2421875f}, {66, 58.2345009f}}}
3399seg=108 {{{66, 58.2345009f}, {66.3287354f, 58.2271461f}, {66.6574707f, 58.2288704f}, {66.9862061f, 58.2305908f}}}
3400seg=109 {{{66.9862061f, 58.2305908f}, {67.2074738f, 58.2317505f}, {67.4287338f, 58.2329102f}, {67.6500015f, 58.2313004f}}}
3401seg=110 {{{67.6500015f, 58.2313004f}, {67.7921829f, 58.2302399f}, {67.9343643f, 58.2298431f}, {68.0765457f, 58.2294464f}}}
3402seg=111 {{{68.0765457f, 58.2294464f}, {68.4843597f, 58.228302f}, {68.8921814f, 58.2271576f}, {69.3000031f, 58.2103996f}}}
3403seg=112 {{{69.3000031f, 58.2103996f}, {69.62323f, 58.1971207f}, {69.9464645f, 58.1713333f}, {70.2696915f, 58.1455498f}}}
3404seg=113 {{{70.2696915f, 58.1455498f}, {70.49646f, 58.1274605f}, {70.7232285f, 58.1093712f}, {70.9499969f, 58.0956001f}}}
3405seg=114 {{{70.9499969f, 58.0956001f}, {71.5f, 58.0623016f}, {72.0500031f, 58.0331993f}, {72.5999985f, 58.0103989f}}}
3406seg=115 {{{72.5999985f, 58.0103989f}, {72.7172928f, 58.005558f}, {72.8345871f, 58.0002632f}, {72.9518814f, 57.9949684f}}}
3407seg=116 {{{72.9518814f, 57.9949684f}, {73.3845901f, 57.9754333f}, {73.8172913f, 57.9558983f}, {74.25f, 57.9592018f}}}
3408seg=117 {{{74.25f, 57.9592018f}, {74.8000031f, 57.963501f}, {75.3499985f, 57.9931984f}, {75.9000015f, 58.0359001f}}}
3409seg=118 {{{75.9000015f, 58.0359001f}, {76.1685486f, 58.056797f}, {76.4370956f, 58.0905952f}, {76.7056427f, 58.1243896f}}}
3410seg=119 {{{76.7056427f, 58.1243896f}, {76.9870911f, 58.1598091f}, {77.2685471f, 58.1952286f}, {77.5500031f, 58.2158012f}}}
3411seg=120 {{{77.5500031f, 58.2158012f}, {78.0999985f, 58.2560005f}, {78.6500015f, 58.283699f}, {79.1999969f, 58.2771988f}}}
3412seg=121 {{{79.1999969f, 58.2771988f}, {79.5648727f, 58.2728882f}, {79.9297485f, 58.2447205f}, {80.2946167f, 58.2165527f}}}
3413seg=122 {{{80.2946167f, 58.2165527f}, {80.479744f, 58.2022629f}, {80.6648712f, 58.187973f}, {80.8499985f, 58.1767998f}}}
3414seg=123 {{{80.8499985f, 58.1767998f}, {81.0279541f, 58.1660919f}, {81.2059097f, 58.1546898f}, {81.3838654f, 58.1432877f}}}
3415seg=124 {{{81.3838654f, 58.1432877f}, {81.7559128f, 58.1194534f}, {82.1279526f, 58.0956192f}, {82.5f, 58.0780983f}}}
3416seg=125 {{{82.5f, 58.0780983f}, {83.0500031f, 58.0522003f}, {83.5999985f, 58.0363007f}, {84.1500015f, 58.0213013f}}}
3417seg=126 {{{84.1500015f, 58.0213013f}, {84.5231628f, 58.0111237f}, {84.8963242f, 58.0044479f}, {85.2694855f, 57.9977684f}}}
3418seg=127 {{{85.2694855f, 57.9977684f}, {85.4463196f, 57.9946022f}, {85.6231613f, 57.991436f}, {85.8000031f, 57.9878998f}}}
3419seg=128 {{{85.8000031f, 57.9878998f}, {85.9800262f, 57.984333f}, {86.1600571f, 57.9799957f}, {86.3400803f, 57.9756584f}}}
3420seg=129 {{{86.3400803f, 57.9756584f}, {86.7100525f, 57.9667397f}, {87.0800247f, 57.9578209f}, {87.4499969f, 57.9556007f}}}
3421seg=130 {{{87.4499969f, 57.9556007f}, {87.5730286f, 57.9548645f}, {87.6960602f, 57.9533615f}, {87.8190918f, 57.9518585f}}}
3422seg=131 {{{87.8190918f, 57.9518585f}, {88.2460632f, 57.9466362f}, {88.6730347f, 57.9414177f}, {89.0999985f, 57.9682007f}}}
3423seg=132 {{{89.0999985f, 57.9682007f}, {89.3298035f, 57.9826584f}, {89.5596085f, 58.0233002f}, {89.7894135f, 58.0639458f}}}
3424seg=133 {{{89.7894135f, 58.0639458f}, {90.1096115f, 58.120575f}, {90.4298019f, 58.1772041f}, {90.75f, 58.1629982f}}}
3425seg=134 {{{90.75f, 58.1629982f}, {91.0554504f, 58.1495018f}, {91.3609009f, 58.0671654f}, {91.6663513f, 57.9848289f}}}
3426seg=135 {{{91.6663513f, 57.9848289f}, {91.9109039f, 57.918911f}, {92.1554489f, 57.8529892f}, {92.4000015f, 57.8223991f}}}
3427seg=136 {{{92.4000015f, 57.8223991f}, {92.8340607f, 57.7680244f}, {93.2681274f, 57.7619171f}, {93.7021942f, 57.7558098f}}}
3428seg=137 {{{93.7021942f, 57.7558098f}, {93.8181305f, 57.7541809f}, {93.9340668f, 57.752552f}, {94.0500031f, 57.75f}}}
3429seg=138 {{{94.0500031f, 57.75f}, {94.4166641f, 57.7419319f}, {94.7833328f, 57.7446213f}, {95.1499939f, 57.7473106f}}}
3430seg=139 {{{95.1499939f, 57.7473106f}, {95.3333282f, 57.7486572f}, {95.5166626f, 57.75f}, {95.6999969f, 57.75f}}}
3431seg=140 {{{95.6999969f, 57.75f}, {31.3500004f, 57.75f}}}
3432SkOpSegment::findTop id=30 s=0 e=1 cw=1 swap=0 inflections=1 monotonic=0
3433SkOpSegment::findTop id=1 s=0 e=0.0941555322 cw=1 swap=0 inflections=0 monotonic=0
3434</div>
3435
3436<div id="cubicOp118">
3437seg=1 {{{0, 1}, {2.72052217f, 4.40065289f}, {4.05331135f, 3.17552996f}, {4.94220781f, 2.35844159f}}}
3438seg=2 {{{4.94220781f, 2.35844159f}, {5.36026096f, 1.97415996f}, {5.68013048f, 1.68013048f}, {6, 2}}}
3439seg=3 {{{6, 2}, {0, 1}}}
3440seg=4 {{{1, 5}, {1.31421423f, 5.31421423f}, {1.43096733f, 4.93731451f}, {1.59843969f, 4.39668417f}}}
3441seg=5 {{{1.59843969f, 4.39668417f}, {1.96395504f, 3.21673512f}, {2.57107115f, 1.2568568f}, {6, 4}}}
3442seg=6 {{{6, 4}, {1, 5}}}
3443SkOpSegment::findTop id=1 s=0.326039489 e=0 cw=1 swap=0 inflections=0 monotonic=1
3444</div>
3445
3446<div id="cubicOp117">
3447seg=1 {{{0, 1}, {4, 5}, {6, 0}, {1, 0}}}
3448seg=2 {{{1, 0}, {0, 1}}}
3449seg=3 {{{0, 6}, {0, 1}, {1, 0}, {5, 4}}}
3450seg=4 {{{5, 4}, {0, 6}}}
3451SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3452</div>
3453
3454<div id="cubicOp116">
3455seg=1 {{{0, 1}, {4, 6}, {2, 0}, {2, 0}}}
3456seg=2 {{{2, 0}, {0, 1}}}
3457seg=3 {{{0, 2}, {0, 2}, {1, 0}, {6, 4}}}
3458seg=4 {{{6, 4}, {0, 2}}}
3459SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3460</div>
3461
3462<div id="testRect2">
3463seg=1 {{{0, 0}, {1, 0}}}
3464seg=2 {{{1, 0}, {1, 1}}}
3465seg=3 {{{1, 1}, {0, 1}}}
3466seg=4 {{{0, 1}, {0, 0}}}
3467seg=5 {{{4, 4}, {5, 4}}}
3468seg=6 {{{5, 4}, {5, 5}}}
3469seg=7 {{{5, 5}, {4, 5}}}
3470seg=8 {{{4, 5}, {4, 4}}}
3471seg=9 {{{0, 0}, {2, 0}}}
3472seg=10 {{{2, 0}, {2, 2}}}
3473seg=11 {{{2, 2}, {0, 2}}}
3474seg=12 {{{0, 2}, {0, 0}}}
3475seg=13 {{{0, 0}, {6, 0}}}
3476seg=14 {{{6, 0}, {6, 6}}}
3477seg=15 {{{6, 6}, {0, 6}}}
3478seg=16 {{{0, 6}, {0, 0}}}
3479SkOpSegment::findTop id=4 s=0 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
3480SkOpSegment::findTop id=10 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3481SkOpSegment::findTop id=8 s=0 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
3482</div>
3483
3484<div id="testRect1">
3485seg=1 {{{0, 0}, {0, 60}}}
3486seg=2 {{{0, 60}, {60, 60}}}
3487seg=3 {{{60, 60}, {60, 0}}}
3488seg=4 {{{60, 0}, {0, 0}}}
3489seg=5 {{{30, 20}, {30, 50}}}
3490seg=6 {{{30, 50}, {50, 50}}}
3491seg=7 {{{50, 50}, {50, 20}}}
3492seg=8 {{{50, 20}, {30, 20}}}
3493seg=9 {{{24, 20}, {24, 30}}}
3494seg=10 {{{24, 30}, {36, 30}}}
3495seg=11 {{{36, 30}, {36, 20}}}
3496seg=12 {{{36, 20}, {24, 20}}}
3497SkOpSegment::findTop id=1 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3498SkOpSegment::findTop id=9 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3499</div>
3500
3501<div id="cubicOp115">
3502seg=1 {{{0, 1}, {1.61405063f, 2.61405063f}, {2.07025266f, 2.49132824f}, {2.61449003f, 2.34492373f}}}
3503seg=2 {{{2.61449003f, 2.34492373f}, {3.08181477f, 2.21920943f}, {3.61405063f, 2.07603359f}, {5, 3}}}
3504seg=3 {{{5, 3}, {0, 1}}}
3505seg=4 {{{1, 2}, {1.92116463f, 3.38174701f}, {1.99378502f, 3.0664053f}, {2.09721613f, 2.61727309f}}}
3506seg=5 {{{2.09721613f, 2.61727309f}, {2.21835113f, 2.09126544f}, {2.38174701f, 1.38174701f}, {4, 3}}}
3507seg=6 {{{4, 3}, {1, 2}}}
3508SkOpSegment::findTop id=1 s=0.326022598 e=0 cw=1 swap=0 inflections=0 monotonic=1
3509</div>
3510
3511<div id="issue2753">
3512seg=1 {{{142.701004f, 110.568001f}, {142.957001f, 100}}}
3513seg=2 {{{142.957001f, 100}, {153.835007f, 100}}}
3514seg=3 {{{153.835007f, 100}, {154.591995f, 108.188004f}}}
3515seg=4 {{{154.591995f, 108.188004f}, {154.591995f, 108.188004f}, {153.173004f, 108.483002f}, {152.830002f, 109.412003f}}}
3516seg=5 {{{152.830002f, 109.412003f}, {142.701004f, 110.568001f}}}
3517seg=6 {{{39, 124.000999f}, {50.5999985f, 117.000999f}}}
3518seg=7 {{{50.5999985f, 117.000999f}, {50.5999985f, 117.000999f}, {164.600998f, 85.1999969f}, {188.201004f, 117.600998f}}}
3519seg=8 {{{188.201004f, 117.600998f}, {188.201004f, 117.600998f}, {174.800995f, 93}, {39, 124.000999f}}}
3520SkOpSegment::findTop id=1 s=0.711321242 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
3521</div>
3522
3523<div id="cubicOp114">
3524seg=1 {{{0, 1}, {0.414792418f, 1.82958484f}, {0.313426584f, 2.14301133f}, {0.373881191f, 2.17816687f}}}
3525seg=2 {{{0.373881191f, 2.17816687f}, {0.459173232f, 2.22776604f}, {0.866565943f, 1.72347176f}, {3.5f, 1.33333337f}}}
3526seg=3 {{{3.5f, 1.33333337f}, {0, 1}}}
3527seg=4 {{{1, 3}, {0.0426487327f, 2.5213244f}, {0.574644804f, 2.11902547f}, {1.00564098f, 1.79310346f}}}
3528seg=5 {{{1.00564098f, 1.79310346f}, {1.47503781f, 1.43814266f}, {1.82463527f, 1.17377484f}, {0, 1}}}
3529seg=6 {{{0, 1}, {1, 3}}}
3530SkOpSegment::findTop id=1 s=1 e=0 cw=0 swap=0 inflections=1 monotonic=1
3531</div>
3532
3533<div id="issue2808">
3534seg=1 {{{509.203003f, 385.60199f}, {509.203003f, 415.688385f}, {487.928711f, 436.962708f}}}
3535seg=2 {{{487.928711f, 436.962708f}, {466.654388f, 458.237f}, {436.567993f, 458.237f}}}
3536seg=3 {{{436.567993f, 458.237f}, {406.481598f, 458.237f}, {385.207275f, 436.962708f}}}
3537seg=4 {{{385.207275f, 436.962708f}, {363.932983f, 415.688385f}, {363.932983f, 385.60199f}}}
3538seg=5 {{{363.932983f, 385.60199f}, {363.932983f, 355.515594f}, {385.207275f, 334.241272f}}}
3539seg=6 {{{385.207275f, 334.241272f}, {406.481598f, 312.96698f}, {436.567993f, 312.96698f}}}
3540seg=7 {{{436.567993f, 312.96698f}, {466.654388f, 312.96698f}, {487.928711f, 334.241272f}}}
3541seg=8 {{{487.928711f, 334.241272f}, {509.203003f, 355.515594f}, {509.203003f, 385.60199f}}}
3542seg=9 {{{449.033997f, 290.872986f}, {449.033997f, 301.028259f}, {441.853149f, 308.209106f}}}
3543seg=10 {{{441.853149f, 308.209106f}, {434.672272f, 315.389984f}, {424.516998f, 315.389984f}}}
3544seg=11 {{{424.516998f, 315.389984f}, {414.361725f, 315.389984f}, {407.180847f, 308.209106f}}}
3545seg=12 {{{407.180847f, 308.209106f}, {400, 301.028259f}, {400, 290.872986f}}}
3546seg=13 {{{400, 290.872986f}, {400, 280.717712f}, {407.180847f, 273.536865f}}}
3547seg=14 {{{407.180847f, 273.536865f}, {414.361725f, 266.355988f}, {424.516998f, 266.355988f}}}
3548seg=15 {{{424.516998f, 266.355988f}, {434.672272f, 266.355988f}, {441.853149f, 273.536865f}}}
3549seg=16 {{{441.853149f, 273.536865f}, {449.033997f, 280.717712f}, {449.033997f, 290.872986f}}}
3550SkOpSegment::findTop id=14 s=0 e=1 cw=1 swap=0 inflections=0 monotonic=1
3551</div>
3552
3553<div id="cubicOp114asQuad">
3554seg=1 {{{0, 1}, {0.379368573f, 1.85681283f}, {0.345243573f, 2.06850648f}}}
3555seg=2 {{{0.345243573f, 2.06850648f}, {0.351496071f, 2.16414928f}, {0.373881161f, 2.1781671f}}}
3556seg=3 {{{0.373881161f, 2.1781671f}, {0.397930771f, 2.19363928f}, {0.51556462f, 2.12826824f}}}
3557seg=4 {{{0.51556462f, 2.12826824f}, {0.687509f, 2.01822186f}, {1.35475695f, 1.79181767f}}}
3558seg=5 {{{1.35475695f, 1.79181767f}, {2.02200508f, 1.56541348f}, {3.5f, 1.33333337f}}}
3559seg=6 {{{3.5f, 1.33333337f}, {0, 1}}}
3560seg=7 {{{1, 3}, {0.536049783f, 2.76066208f}, {0.480196089f, 2.54678321f}}}
3561seg=8 {{{0.480196089f, 2.54678321f}, {0.424342394f, 2.33290434f}, {0.59987992f, 2.14448452f}}}
3562seg=9 {{{0.59987992f, 2.14448452f}, {0.775417507f, 1.95606446f}, {1.00564098f, 1.79310346f}}}
3563seg=10 {{{1.00564098f, 1.79310346f}, {1.25936198f, 1.615623f}, {1.35901463f, 1.46834028f}}}
3564seg=11 {{{1.35901463f, 1.46834028f}, {1.45866716f, 1.32105756f}, {1.17598116f, 1.20397246f}}}
3565seg=12 {{{1.17598116f, 1.20397246f}, {0.893295109f, 1.08688736f}, {0, 1}}}
3566seg=13 {{{0, 1}, {1, 3}}}
3567SkOpSegment::findTop id=1 s=1 e=0 cw=0 swap=0 inflections=0 monotonic=1
3568</div>
3569
3570<div id="rects4">
3571seg=1 {{{0, 0}, {1, 0}}}
3572seg=2 {{{1, 0}, {1, 1}}}
3573seg=3 {{{1, 1}, {0, 1}}}
3574seg=4 {{{0, 1}, {0, 0}}}
3575seg=5 {{{0, 0}, {2, 0}}}
3576seg=6 {{{2, 0}, {2, 2}}}
3577seg=7 {{{2, 2}, {0, 2}}}
3578seg=8 {{{0, 2}, {0, 0}}}
3579seg=9 {{{0, 0}, {2, 0}}}
3580seg=10 {{{2, 0}, {2, 2}}}
3581seg=11 {{{2, 2}, {0, 2}}}
3582seg=12 {{{0, 2}, {0, 0}}}
3583seg=13 {{{0, 0}, {3, 0}}}
3584seg=14 {{{3, 0}, {3, 3}}}
3585seg=15 {{{3, 3}, {0, 3}}}
3586seg=16 {{{0, 3}, {0, 0}}}
3587SkOpSegment::findTop id=16 s=0.666666667 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
3588</div>
3589
3590<div id="rects3">
3591seg=1 {{{0, 0}, {1, 0}}}
3592seg=2 {{{1, 0}, {1, 1}}}
3593seg=3 {{{1, 1}, {0, 1}}}
3594seg=4 {{{0, 1}, {0, 0}}}
3595seg=5 {{{0, 0}, {4, 0}}}
3596seg=6 {{{4, 0}, {4, 4}}}
3597seg=7 {{{4, 4}, {0, 4}}}
3598seg=8 {{{0, 4}, {0, 0}}}
3599seg=9 {{{0, 0}, {2, 0}}}
3600seg=10 {{{2, 0}, {2, 2}}}
3601seg=11 {{{2, 2}, {0, 2}}}
3602seg=12 {{{0, 2}, {0, 0}}}
3603seg=13 {{{0, 0}, {2, 0}}}
3604seg=14 {{{2, 0}, {2, 2}}}
3605seg=15 {{{2, 2}, {0, 2}}}
3606seg=16 {{{0, 2}, {0, 0}}}
3607SkOpSegment::findTop id=16 s=0.5 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
3608</div>
3609
3610<div id="rects2">
3611seg=1 {{{0, 0}, {4, 0}}}
3612seg=2 {{{4, 0}, {4, 4}}}
3613seg=3 {{{4, 4}, {0, 4}}}
3614seg=4 {{{0, 4}, {0, 0}}}
3615seg=5 {{{3, 3}, {4, 3}}}
3616seg=6 {{{4, 3}, {4, 4}}}
3617seg=7 {{{4, 4}, {3, 4}}}
3618seg=8 {{{3, 4}, {3, 3}}}
3619seg=9 {{{3, 3}, {6, 3}}}
3620seg=10 {{{6, 3}, {6, 6}}}
3621seg=11 {{{6, 6}, {3, 6}}}
3622seg=12 {{{3, 6}, {3, 3}}}
3623seg=13 {{{3, 3}, {4, 3}}}
3624seg=14 {{{4, 3}, {4, 4}}}
3625seg=15 {{{4, 4}, {3, 4}}}
3626seg=16 {{{3, 4}, {3, 3}}}
3627SkOpSegment::findTop id=4 s=0 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
3628</div>
3629
3630<div id="rects1">
3631seg=1 {{{0, 0}, {1, 0}}}
3632seg=2 {{{1, 0}, {1, 1}}}
3633seg=3 {{{1, 1}, {0, 1}}}
3634seg=4 {{{0, 1}, {0, 0}}}
3635seg=5 {{{0, 0}, {6, 0}}}
3636seg=6 {{{6, 0}, {6, 6}}}
3637seg=7 {{{6, 6}, {0, 6}}}
3638seg=8 {{{0, 6}, {0, 0}}}
3639seg=9 {{{0, 0}, {1, 0}}}
3640seg=10 {{{1, 0}, {1, 1}}}
3641seg=11 {{{1, 1}, {0, 1}}}
3642seg=12 {{{0, 1}, {0, 0}}}
3643seg=13 {{{0, 0}, {2, 0}}}
3644seg=14 {{{2, 0}, {2, 2}}}
3645seg=15 {{{2, 2}, {0, 2}}}
3646seg=16 {{{0, 2}, {0, 0}}}
3647SkOpSegment::findTop id=10 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3648</div>
3649
3650<div id="issue2540">
3651seg=1 {{{26.5054989f, 85.7396011f}, {55.534996f, 51.539257f}, {52.9281731f, 55.838932f}, {42.6237564f, 68.9841232f}}}
3652seg=2 {{{42.6237564f, 68.9841232f}, {32.449646f, 81.963089f}, {14.7713947f, 103.565269f}, {12.6310005f, 105.247002f}}}
3653seg=3 {{{12.6310005f, 105.247002f}, {11.0819998f, 106.463997f}, {11.526f, 104.464996f}, {11.526f, 104.464996f}}}
3654seg=4 {{{11.526f, 104.464996f}, {23.1654987f, 89.7287979f}}}
3655seg=5 {{{23.1654987f, 89.7287979f}, {23.1654987f, 89.7287979f}, {-10.1713009f, 119.916f}, {-17.1620007f, 120.824997f}}}
3656seg=6 {{{-17.1620007f, 120.824997f}, {-19.1149998f, 121.079002f}, {-18.0380001f, 119.792992f}, {-18.0380001f, 119.792992f}}}
3657seg=7 {{{-18.0380001f, 119.792992f}, {-18.0380001f, 119.792992f}, {14.2210007f, 90.6070023f}, {26.5054989f, 85.7396011f}}}
3658seg=8 {{{-25.0779991f, 124.912003f}, {-25.0779991f, 124.912003f}, {-25.9509983f, 125.954002f}, {-24.3689995f, 125.748001f}}}
3659seg=9 {{{-24.3689995f, 125.748001f}, {-21.9028339f, 125.427361f}, {-18.6384659f, 122.25f}, {-14.3234777f, 118.050026f}}}
3660seg=10 {{{-14.3234777f, 118.050026f}, {-4.11791182f, 108.116493f}, {11.9647217f, 92.462532f}, {37.2640038f, 95.3540039f}}}
3661seg=11 {{{37.2640038f, 95.3540039f}, {37.2640038f, 95.3540039f}, {11.3710003f, 83.7339935f}, {-25.0779991f, 124.912003f}}}
3662SkOpSegment::findTop id=1 s=0 e=1 cw=1 swap=0 inflections=0 monotonic=0
3663</div>
3664
3665<div id="issue2504">
3666seg=1 {{{34.2421875f, -5.97656298f}, {35.4531212f, 0}}}
3667seg=2 {{{35.4531212f, 0}, {31.9375f, 0}}}
3668seg=3 {{{31.9375f, 0}, {34.2421875f, -5.97656298f}}}
3669seg=4 {{{36.7184372f, 0.888650894f}, {36.7184372f, 0.888650894f}, {35.1233864f, 0.554015458f}, {34.5114098f, -0.115255356f}}}
3670seg=5 {{{34.5114098f, -0.115255356f}, {33.8994255f, -0.78452611f}, {34.5348434f, -5.67775536f}, {34.5348434f, -5.67775536f}}}
3671seg=6 {{{34.5348434f, -5.67775536f}, {36.7184372f, 0.888650894f}}}
3672SkOpSegment::findTop id=3 s=0 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
3673</div>
3674
3675<div id="kari1">
3676seg=1 {{{39.9375f, -5.8359375f}, {40.625f, -5.7890625f}}}
3677seg=2 {{{40.625f, -5.7890625f}, {37.7109375f, 1.3515625f}}}
3678seg=3 {{{37.7109375f, 1.3515625f}, {37.203125f, 0.9609375f}}}
3679seg=4 {{{37.203125f, 0.9609375f}, {39.9375f, -5.8359375f}}}
3680seg=5 {{{37.5273438f, -1.44140625f}, {37.8736992f, -1.69921875f}, {38.1640625f, -2.140625f}, {38.3984375f, -2.765625f}}}
3681seg=6 {{{38.3984375f, -2.765625f}, {38.640625f, -2.609375f}}}
3682seg=7 {{{38.640625f, -2.609375f}, {38.53125f, -1.89583337f}, {38.0664444f, -0.154893041f}, {38.0664444f, -0.154893041f}}}
3683seg=8 {{{38.0664444f, -0.154893041f}, {38.0664444f, -0.154893041f}, {37.1809883f, -1.18359375f}, {37.5273438f, -1.44140625f}}}
3684SkOpSegment::findTop id=4 s=0.525375331 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
3685</div>
3686
3687<div id="quadOp10i">
3688seg=1 {{{0, 0}, {1, 8}, {3, 5}}}
3689seg=2 {{{3, 5}, {8, 1}}}
3690seg=3 {{{8, 1}, {0, 0}}}
3691seg=4 {{{0, 0}, {8, 1}, {4, 8}}}
3692seg=5 {{{4, 8}, {0, 0}}}
3693SkOpSegment::findTop id=1 s=0.923076923 e=0 cw=1 swap=0 inflections=0 monotonic=0
3694</div>
3695
3696<div id="cubicOp113">
3697seg=1 {{{2, 4}, {2.4000001f, 4.4000001f}, {2.5333333f, 4.5333333f}, {2.64533329f, 4.51733351f}}}
3698seg=2 {{{2.64533329f, 4.51733351f}, {2.81333327f, 4.49333382f}, {2.9333334f, 4.13333368f}, {3.83333325f, 3.83333349f}}}
3699seg=3 {{{3.83333325f, 3.83333349f}, {2, 4}}}
3700seg=4 {{{3, 5}, {2.71823359f, 4.71823359f}, {2.82350469f, 4.46623945f}, {2.90056849f, 4.28176689f}}}
3701seg=5 {{{2.90056849f, 4.28176689f}, {3.00583982f, 4.02977228f}, {3.05847549f, 3.90377498f}, {2, 4}}}
3702seg=6 {{{2, 4}, {3, 5}}}
3703SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3704</div>
3705
3706<div id="skpcarrot_is24">
3707seg=1 {{{945, 597}, {913.93396f, 597}, {891.96698f, 618.96698f}}}
3708seg=2 {{{891.96698f, 618.96698f}, {870, 640.93396f}, {870, 672}}}
3709seg=3 {{{870, 672}, {870, 703.06604f}, {891.96698f, 725.03302f}}}
3710seg=4 {{{891.96698f, 725.03302f}, {913.93396f, 747}, {945, 747}}}
3711seg=5 {{{945, 747}, {976.06604f, 747}, {998.03302f, 725.03302f}}}
3712seg=6 {{{998.03302f, 725.03302f}, {1020, 703.06604f}, {1020, 672}}}
3713seg=7 {{{1020, 672}, {1020, 640.93396f}, {998.03302f, 618.96698f}}}
3714seg=8 {{{998.03302f, 618.96698f}, {976.06604f, 597}, {945, 597}}}
3715seg=9 {{{945.080994f, 597.161987f}, {903.659973f, 597.161987f}, {870.080994f, 630.73999f}, {870.080994f, 672.161987f}}}
3716seg=10 {{{870.080994f, 672.161987f}, {870.080994f, 676.096008f}, {870.387024f, 679.957031f}, {870.971008f, 683.726013f}}}
3717seg=11 {{{870.971008f, 683.726013f}, {876.53302f, 719.656006f}, {907.593994f, 747.161987f}, {945.080994f, 747.161987f}}}
3718seg=12 {{{945.080994f, 747.161987f}, {982.567993f, 747.161987f}, {1013.62903f, 719.656006f}, {1019.19104f, 683.726013f}}}
3719seg=13 {{{1019.19104f, 683.726013f}, {1019.77502f, 679.955017f}, {1020.08099f, 676.094971f}, {1020.08099f, 672.161987f}}}
3720seg=14 {{{1020.08099f, 672.161987f}, {1020.08002f, 630.73999f}, {986.502014f, 597.161987f}, {945.080994f, 597.161987f}}}
3721SkOpSegment::findTop id=1 s=1 e=0 cw=1 swap=0 inflections=0 monotonic=1
3722</div>
3723
3724<div id="issue1417">
3725seg=1 {{{122.589088f, 82.2836456f}, {129.821579f, 80}, {138, 80}}}
3726seg=2 {{{138, 80}, {147.156921f, 80}, {155.128036f, 82.862793f}}}
3727seg=3 {{{155.128036f, 82.862793f}, {161.176468f, 100}}}
3728seg=4 {{{161.176468f, 100}, {115.294121f, 100}}}
3729seg=5 {{{115.294121f, 100}, {122.589088f, 82.2836456f}}}
3730seg=6 {{{98.6819458f, 140.343842f}, {115.294121f, 100}}}
3731seg=7 {{{115.294121f, 100}, {97.9337616f, 100}}}
3732seg=8 {{{97.9337616f, 100}, {88, 112.94265f}, {88, 130}}}
3733seg=9 {{{88, 130}, {88, 131.54483f}, {88.0814896f, 133.05603f}}}
3734seg=10 {{{88.0814896f, 133.05603f}, {98.6819458f, 140.343842f}}}
3735seg=11 {{{136.969696f, 166.666672f}, {98.6819458f, 140.343842f}}}
3736seg=12 {{{98.6819458f, 140.343842f}, {93.4589462f, 153.028259f}}}
3737seg=13 {{{93.4589462f, 153.028259f}, {96.9411697f, 159.651855f}, {102.644661f, 165.355347f}}}
3738seg=14 {{{102.644661f, 165.355347f}, {110.792465f, 173.503143f}, {120.817978f, 177.117783f}}}
3739seg=15 {{{120.817978f, 177.117783f}, {136.969696f, 166.666672f}}}
3740seg=16 {{{175.830978f, 141.521133f}, {136.969696f, 166.666672f}}}
3741seg=17 {{{136.969696f, 166.666672f}, {153.157288f, 177.795639f}}}
3742seg=18 {{{153.157288f, 177.795639f}, {164.392426f, 174.318268f}, {173.355347f, 165.355347f}}}
3743seg=19 {{{173.355347f, 165.355347f}, {177.805817f, 160.904861f}, {180.903809f, 155.894165f}}}
3744seg=20 {{{180.903809f, 155.894165f}, {175.830978f, 141.521133f}}}
3745seg=21 {{{175.830978f, 141.521133f}, {187.878281f, 133.725815f}}}
3746seg=22 {{{187.878281f, 133.725815f}, {188, 131.888062f}, {188, 130}}}
3747seg=23 {{{188, 130}, {188, 112.942657f}, {178.066238f, 100}}}
3748seg=24 {{{178.066238f, 100}, {161.176468f, 100}}}
3749seg=25 {{{161.176468f, 100}, {175.830978f, 141.521133f}}}
3750seg=26 {{{174.117645f, 100}, {161.176468f, 100}}}
3751seg=27 {{{161.176468f, 100}, {155.128036f, 82.862793f}}}
3752seg=28 {{{155.128036f, 82.862793f}, {153.149719f, 82.1522903f}, {151.098419f, 81.6181335f}}}
3753seg=29 {{{151.098419f, 81.6181335f}, {143.529419f, 100}}}
3754seg=30 {{{143.529419f, 100}, {161.176468f, 100}}}
3755seg=31 {{{161.176468f, 100}, {168.235291f, 120}}}
3756seg=32 {{{168.235291f, 120}, {181.176468f, 120}}}
3757seg=33 {{{181.176468f, 120}, {186.366196f, 134.704224f}}}
3758seg=34 {{{186.366196f, 134.704224f}, {187.878281f, 133.725815f}}}
3759seg=35 {{{187.878281f, 133.725815f}, {188, 131.888062f}, {188, 130}}}
3760seg=36 {{{188, 130}, {188, 124.809471f}, {187.08017f, 120}}}
3761seg=37 {{{187.08017f, 120}, {181.176468f, 120}}}
3762seg=38 {{{181.176468f, 120}, {174.117645f, 100}}}
3763seg=39 {{{88.919838f, 120}, {107.058823f, 120}}}
3764seg=40 {{{107.058823f, 120}, {98.6819458f, 140.343842f}}}
3765seg=41 {{{98.6819458f, 140.343842f}, {88.0814896f, 133.05603f}}}
3766seg=42 {{{88.0814896f, 133.05603f}, {88, 131.54483f}, {88, 130}}}
3767seg=43 {{{88, 130}, {88, 124.809517f}, {88.919838f, 120}}}
3768seg=44 {{{96.6762161f, 145.214905f}, {98.6819458f, 140.343842f}}}
3769seg=45 {{{98.6819458f, 140.343842f}, {120.687675f, 155.472778f}}}
3770seg=46 {{{120.687675f, 155.472778f}, {118.681946f, 160.343842f}}}
3771seg=47 {{{118.681946f, 160.343842f}, {96.6762161f, 145.214905f}}}
3772seg=48 {{{113.232178f, 173.578995f}, {116.880264f, 175.698059f}, {120.817978f, 177.117783f}}}
3773seg=49 {{{120.817978f, 177.117783f}, {132.286499f, 169.696976f}}}
3774seg=50 {{{132.286499f, 169.696976f}, {118.681946f, 160.343842f}}}
3775seg=51 {{{118.681946f, 160.343842f}, {113.232178f, 173.578995f}}}
3776SkOpSegment::findTop id=1 s=0 e=1 cw=1 swap=0 inflections=0 monotonic=1
3777</div>
3778
3779<div id="cubicOp112">
3780seg=1 {{{2, 4}, {2, 3.70563841f}, {2.34659529f, 3.58457422f}, {2.70820665f, 3.45826507f}}}
3781seg=2 {{{2.70820665f, 3.45826507f}, {3.57505441f, 3.15547919f}, {4.52819157f, 2.82255316f}, {1, 0}}}
3782seg=3 {{{1, 0}, {2, 4}}}
3783seg=4 {{{4, 6}, {0.809847832f, 2.01230979f}, {2.70823097f, 1.84102118f}, {3.10041142f, 1.93512106f}}}
3784seg=5 {{{3.10041142f, 1.93512106f}, {3.19996977f, 1.95900917f}, {3.20246196f, 2}, {3, 2}}}
3785seg=6 {{{3, 2}, {4, 6}}}
3786SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3787</div>
3788
3789<div id="skpadspert_net23">
3790seg=1 {{{0, 483.5f}, {0, 482.5f}}}
3791seg=2 {{{0, 482.5f}, {30.5f, 482.5f}}}
3792seg=3 {{{30.5f, 482.5f}, {32.709137f, 482.5f}, {34.5f, 484.290863f}, {34.5f, 486.5f}}}
3793seg=4 {{{34.5f, 486.5f}, {34.5f, 678.5f}}}
3794seg=5 {{{34.5f, 678.5f}, {34.5f, 680.709167f}, {32.709137f, 682.5f}, {30.5f, 682.5f}}}
3795seg=6 {{{30.5f, 682.5f}, {0, 682.5f}}}
3796seg=7 {{{0, 682.5f}, {0, 681.5f}}}
3797seg=8 {{{0, 681.5f}, {30.5f, 681.5f}}}
3798seg=9 {{{30.5f, 681.5f}, {32.1568565f, 681.5f}, {33.5f, 680.15686f}, {33.5f, 678.5f}}}
3799seg=10 {{{33.5f, 678.5f}, {33.5f, 486.5f}}}
3800seg=11 {{{33.5f, 486.5f}, {33.5f, 484.84314f}, {32.1568565f, 483.5f}, {30.5f, 483.5f}}}
3801seg=12 {{{30.5f, 483.5f}, {0, 483.5f}}}
3802seg=13 {{{0, 482}, {35, 482}}}
3803seg=14 {{{35, 482}, {35, 683}}}
3804seg=15 {{{35, 683}, {0, 683}}}
3805seg=16 {{{0, 683}, {0, 482}}}
3806SkOpSegment::findTop id=16 s=0.997512438 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
3807</div>
3808
3809<div id="skpadspert_de11">
3810seg=1 {{{0, 682.5f}, {30.5f, 682.5f}}}
3811seg=2 {{{30.5f, 682.5f}, {32.709137f, 682.5f}, {34.5f, 680.709167f}, {34.5f, 678.5f}}}
3812seg=3 {{{34.5f, 678.5f}, {34.5f, 486.5f}}}
3813seg=4 {{{34.5f, 486.5f}, {34.5f, 484.290863f}, {32.709137f, 482.5f}, {30.5f, 482.5f}}}
3814seg=5 {{{30.5f, 482.5f}, {0, 482.5f}}}
3815seg=6 {{{0, 482.5f}, {0, 682.5f}}}
3816seg=7 {{{0, 482}, {35, 482}}}
3817seg=8 {{{35, 482}, {35, 683}}}
3818seg=9 {{{35, 683}, {0, 683}}}
3819seg=10 {{{0, 683}, {0, 482}}}
3820SkOpSegment::findTop id=10 s=0.997512438 e=1 cw=-1 swap=-1 inflections=-1 monotonic=1
3821</div>
3822
3823<div id="findFirst1">
3824seg=1 {{{0, 1}, {0.535714269f, 3.67857122f}, {1.93239796f, 3.20025516f}, {2.65260553f, 2.33245277f}}}
3825seg=2 {{{2.65260553f, 2.33245277f}, {3.27678561f, 1.58035731f}, {3.39285707f, 0.535714269f}, {2, 1}}}
3826seg=3 {{{2, 1}, {0, 1}}}
3827seg=4 {{{0, 5}, {0.104356073f, 4.68693161f}, {0.19782196f, 4.3847537f}, {0.287216395f, 4.09573889f}}}
3828seg=5 {{{0.287216395f, 4.09573889f}, {1.05445099f, 1.6152463f}, {1.52178037f, 0.104356073f}, {6, 1}}}
3829seg=6 {{{6, 1}, {0, 5}}}
3830SkOpSegment::findTop id=5 s=0.648442804 e=1 cw=1 swap=0 inflections=0 monotonic=0
3831</div>
3832
3833<div id="xOp2i">
3834seg=1 {{{1, 5}, {0, 4}, {3, 2}, {6, 1}}}
3835seg=2 {{{6, 1}, {1, 5}}}
3836seg=3 {{{2, 3}, {1, 6}, {5, 1}, {4, 0}}}
3837seg=4 {{{4, 0}, {2, 3}}}
3838SkOpSegment::findTop id=4 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3839</div>
3840
3841<div id="xOp3i">
3842seg=1 {{{1, 4}, {0.888116956f, 4.11188316f}, {0.838822961f, 4.16117716f}, {0.838112772f, 4.1604867f}}}
3843seg=2 {{{0.838112772f, 4.1604867f}, {0.832475185f, 4.15500689f}, {3.88811707f, 1}, {3, 1}}}
3844seg=3 {{{3, 1}, {1, 4}}}
3845seg=4 {{{1, 4}, {1, 3.30277562f}, {2.45836544f, 2.11942935f}, {3.68041658f, 1.12783337f}}}
3846seg=5 {{{3.68041658f, 1.12783337f}, {4.21110249f, 0.697224319f}, {4.69722462f, 0.302775621f}, {5, 0}}}
3847seg=6 {{{5, 0}, {1, 4}}}
3848SkOpSegment::findTop id=5 s=0 e=1 cw=0 swap=0 inflections=1 monotonic=1
3849</div>
3850
3851<div id="xOp1u">
3852seg=1 {{{1, 4}, {2.5f, 4.5f}, {3, 4}, {3.5f, 3.5f}}}
3853seg=2 {{{3.5f, 3.5f}, {4, 3}, {4.5f, 2.5f}, {6, 3}}}
3854seg=3 {{{6, 3}, {1, 4}}}
3855seg=4 {{{2, 3}, {2.5f, 4.5f}, {3, 4}, {3.5f, 3.5f}}}
3856seg=5 {{{3.5f, 3.5f}, {4, 3}, {4.5f, 2.5f}, {5, 4}}}
3857seg=6 {{{5, 4}, {2, 3}}}
3858SkOpSegment::findTop id=2 s=0 e=1 cw=1 swap=0 inflections=1 monotonic=0
3859</div>
3860
3861<div id="xOp1i">
3862seg=1 {{{1, 4}, {1, 4.90867758f}, {5.12847471f, 0.863185406f}, {5.13222885f, 0.867009521f}}}
3863seg=2 {{{5.13222885f, 0.867009521f}, {5.13260603f, 0.867393851f}, {5.09132242f, 0.908677578f}, {5, 1}}}
3864seg=3 {{{5, 1}, {1, 4}}}
3865seg=4 {{{0, 6}, {0.280776411f, 5.7192235f}, {0.719223619f, 5.20194101f}, {1.22680116f, 4.60309792f}}}
3866seg=5 {{{1.22680116f, 4.60309792f}, {2.52698779f, 3.06913042f}, {4.2807765f, 1}, {5, 1}}}
3867seg=6 {{{5, 1}, {0, 6}}}
3868SkOpSegment::findTop id=1 s=0.890295441 e=1 cw=0 swap=0 inflections=1 monotonic=0
3869</div>
3870
3871<div id="cubicOp111">
3872seg=1 {{{1, 4}, {0.888116956f, 4.11188316f}, {0.838822961f, 4.16117716f}, {0.838112772f, 4.1604867f}}}
3873seg=2 {{{0.838112772f, 4.1604867f}, {0.832475185f, 4.15500689f}, {3.88811707f, 1}, {3, 1}}}
3874seg=3 {{{3, 1}, {1, 4}}}
3875seg=4 {{{1, 4}, {1, 3.30277562f}, {2.45836544f, 2.11942935f}, {3.68041658f, 1.12783337f}}}
3876seg=5 {{{3.68041658f, 1.12783337f}, {4.21110249f, 0.697224319f}, {4.69722462f, 0.302775621f}, {5, 0}}}
3877seg=6 {{{5, 0}, {1, 4}}}
3878SkOpSegment::findTop id=5 s=0 e=1 cw=0 swap=0 inflections=1 monotonic=1
3879</div>
3880
3881<div id="cubicOp110">
3882seg=1 {{{0, 0}, {1, 0}}}
3883seg=2 {{{1, 0}, {1, 1}}}
3884seg=3 {{{1, 1}, {0, 1}}}
3885seg=4 {{{0, 1}, {0, 0}}}
3886seg=5 {{{0, 0}, {4, 0}}}
3887seg=6 {{{4, 0}, {4, 4}}}
3888seg=7 {{{4, 4}, {0, 4}}}
3889seg=8 {{{0, 4}, {0, 0}}}
3890seg=9 {{{0, 0}, {2, 0}}}
3891seg=10 {{{2, 0}, {2, 2}}}
3892seg=11 {{{2, 2}, {0, 2}}}
3893seg=12 {{{0, 2}, {0, 0}}}
3894seg=13 {{{0, 0}, {2, 0}}}
3895seg=14 {{{2, 0}, {2, 2}}}
3896seg=15 {{{2, 2}, {0, 2}}}
3897seg=16 {{{0, 2}, {0, 0}}}
3898SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3899</div>
3900
3901<div id="cubicOp109">
3902seg=1 {{{0, 1}, {3.25028038f, 4.25028038f}, {5.18002033f, 3.53893995f}, {5.25270414f, 3.69462037f}}}
3903seg=2 {{{5.25270414f, 3.69462037f}, {5.26946974f, 3.73053002f}, {5.1874299f, 3.8125701f}, {5, 4}}}
3904seg=3 {{{5, 4}, {0, 1}}}
3905seg=4 {{{3, 6}, {3.38196611f, 5.61803389f}, {3.18033981f, 4.65247583f}, {3.00813055f, 3.82779074f}}}
3906seg=5 {{{3.00813055f, 3.82779074f}, {2.72949004f, 2.49342203f}, {2.52786398f, 1.5278641f}, {5, 4}}}
3907seg=6 {{{5, 4}, {3, 6}}}
3908SkOpSegment::findTop id=1 s=0.346236497 e=0 cw=1 swap=0 inflections=0 monotonic=1
3909</div>
3910
3911<div id="cubicOp108">
3912seg=1 {{{0, 1}, {3.10102057f, 4.87627602f}, {2.5959177f, 2.74234605f}, {2.21224618f, 1.12143052f}}}
3913seg=2 {{{2.21224618f, 1.12143052f}, {2.10102057f, 0.651530623f}, {2, 0.224744856f}, {2, 0}}}
3914seg=3 {{{2, 0}, {0, 1}}}
3915seg=4 {{{1, 2}, {0.687867999f, 2}, {0.570588768f, 1.80514717f}, {0.70898211f, 1.65872073f}}}
3916seg=5 {{{0.70898211f, 1.65872073f}, {1.01396966f, 1.33603036f}, {2.56066012f, 1.24852812f}, {6, 4}}}
3917seg=6 {{{6, 4}, {1, 2}}}
3918SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3919</div>
3920
3921<div id="cubicOp107">
3922seg=1 {{{0, 1}, {3.10102057f, 4.87627602f}, {2.5959177f, 2.74234605f}, {2.21224618f, 1.12143052f}}}
3923seg=2 {{{2.21224618f, 1.12143052f}, {2.10102057f, 0.651530623f}, {2, 0.224744856f}, {2, 0}}}
3924seg=3 {{{2, 0}, {0, 1}}}
3925seg=4 {{{1, 2}, {0.687867999f, 2}, {0.570588768f, 1.80514717f}, {0.70898211f, 1.65872073f}}}
3926seg=5 {{{0.70898211f, 1.65872073f}, {1.01396966f, 1.33603036f}, {2.56066012f, 1.24852812f}, {6, 4}}}
3927seg=6 {{{6, 4}, {1, 2}}}
3928SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3929</div>
3930
3931<div id="cubicOp106">
3932seg=1 {{{0, 1}, {3.10102057f, 4.87627602f}, {2.5959177f, 2.74234605f}, {2.21224618f, 1.12143052f}}}
3933seg=2 {{{2.21224618f, 1.12143052f}, {2.10102057f, 0.651530623f}, {2, 0.224744856f}, {2, 0}}}
3934seg=3 {{{2, 0}, {0, 1}}}
3935seg=4 {{{1, 2}, {0.687867999f, 2}, {0.570588768f, 1.80514717f}, {0.70898211f, 1.65872073f}}}
3936seg=5 {{{0.70898211f, 1.65872073f}, {1.01396966f, 1.33603036f}, {2.56066012f, 1.24852812f}, {6, 4}}}
3937seg=6 {{{6, 4}, {1, 2}}}
3938SkOpSegment::findTop id=3 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3939</div>
3940
3941<div id="cubicOp105">
3942seg=1 {{{0, 1}, {0, 4}, {6, 5}, {2, 0}}}
3943seg=2 {{{2, 0}, {0, 1}}}
3944seg=3 {{{5, 6}, {0, 2}, {1, 0}, {4, 0}}}
3945seg=4 {{{4, 0}, {5, 6}}}
3946SkOpSegment::findTop id=2 s=1 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
3947</div>
3948
3949<div id="cubicOp104">
3950seg=1 {{{0, 1}, {0, 3.97847962f}, {1.41941452f, 3.05356932f}, {2.98993444f, 2.03019667f}}}
3951seg=2 {{{2.98993444f, 2.03019667f}, {4.05586004f, 1.33562446f}, {5.19139194f, 0.595695913f}, {6, 1}}}
3952seg=3 {{{6, 1}, {0, 1}}}
3953seg=4 {{{0, 4}, {0.391700625f, 4.78340149f}, {0.629971862f, 4.33936739f}, {1.07540405f, 3.50927591f}}}
3954seg=5 {{{1.07540405f, 3.50927591f}, {1.76714694f, 2.22016883f}, {2.95850325f, 0}, {6, 0}}}
3955seg=6 {{{6, 0}, {0, 4}}}
3956SkOpSegment::findTop id=5 s=0.565236568 e=1 cw=1 swap=0 inflections=0 monotonic=1
3957</div>
3958
3959<div id="cubicOp103">
3960seg=1 {{{0, 1}, {0.717624307f, 3.87049723f}, {1.43524861f, 2.10613275f}, {1.78330743f, 1.25038886f}}}
3961seg=2 {{{1.78330743f, 1.25038886f}, {1.92026401f, 0.913664818f}, {2, 0.717624307f}, {2, 1}}}
3962seg=3 {{{2, 1}, {0, 1}}}
3963seg=4 {{{0, 2}, {0.306225777f, 2}, {0.518677354f, 1.8124516f}, {0.780935109f, 1.58093512f}}}
3964seg=5 {{{0.780935109f, 1.58093512f}, {1.37509692f, 1.05641961f}, {2.22490311f, 0.306225777f}, {5, 1}}}
3965seg=6 {{{5, 1}, {0, 2}}}
3966SkOpSegment::findTop id=5 s=0.363276408 e=1 cw=1 swap=0 inflections=0 monotonic=0
3967</div>
3968
3969<div id="cubicOp102">
3970seg=1 {{{0, 1}, {0.5f, 1.5f}, {0.75f, 1.25f}, {1.125f, 0.875f}}}
3971seg=2 {{{1.125f, 0.875f}, {1.5f, 0.5f}, {2, 0}, {3, 0}}}
3972seg=3 {{{3, 0}, {0, 1}}}
3973seg=4 {{{0, 1}, {0, 2}, {0.25f, 1.75f}, {0.625f, 1.375f}}}
3974seg=5 {{{0.625f, 1.375f}, {1, 1}, {1.5f, 0.5f}, {2, 1}}}
3975seg=6 {{{2, 1}, {0, 1}}}
3976SkOpSegment::findTop id=2 s=0.333333333 e=1 cw=1 swap=0 inflections=0 monotonic=1
3977</div>
3978
3979<div id="cubicOp101">
3980seg=1 {{{0, 1}, {1, 2}, {1.5f, 2}, {2.125f, 2}}}
3981seg=2 {{{2.125f, 2}, {2.75f, 2}, {3.5f, 2}, {5, 3}}}
3982seg=3 {{{5, 3}, {0, 1}}}
3983seg=4 {{{1, 2}, {2, 3.5f}, {2, 3}, {2, 2.375f}}}
3984seg=5 {{{2, 2.375f}, {2, 1.75f}, {2, 1}, {3, 2}}}
3985seg=6 {{{3, 2}, {1, 2}}}
3986SkOpSegment::findTop id=1 s=0.936896287 e=0 cw=1 swap=0 inflections=0 monotonic=1
3987</div>
3988
3989<div id="cubicOp100">
3990seg=1 {{{0, 1}, {0, 1.5f}, {0.5f, 1.5f}, {1.25f, 1.5f}}}
3991seg=2 {{{1.25f, 1.5f}, {2, 1.5f}, {3, 1.5f}, {4, 2}}}
3992seg=3 {{{4, 2}, {0, 1}}}
3993seg=4 {{{1, 2}, {1.5f, 3}, {1.5f, 2.5f}, {1.5f, 1.75f}}}
3994seg=5 {{{1.5f, 1.75f}, {1.5f, 1}, {1.5f, 0}, {2, 0}}}
3995seg=6 {{{2, 0}, {1, 2}}}
3996SkOpSegment::findTop id=5 s=0.333333333 e=1 cw=1 swap=0 inflections=0 monotonic=1
3997</div>
3998
3999<div id="cubicOp99">
4000seg=1 {{{3, 6}, {1.09807611f, 4.09807587f}, {2.81346655f, 4.20577097f}, {4.06921959f, 4.28460979f}}}
4001seg=2 {{{4.06921959f, 4.28460979f}, {4.79422855f, 4.33012724f}, {5.36602545f, 4.36602545f}, {5, 4}}}
4002seg=3 {{{5, 4}, {3, 6}}}
4003seg=4 {{{5, 6}, {4.63397455f, 5.63397455f}, {4.66987276f, 5.13397455f}, {4.71539021f, 4.5f}}}
4004seg=5 {{{4.71539021f, 4.5f}, {4.79422855f, 3.40192366f}, {4.90192366f, 1.90192378f}, {3, 0}}}
4005seg=6 {{{3, 0}, {5, 6}}}
4006SkOpSegment::findTop id=6 s=0.717614994 e=0 cw=-1 swap=-1 inflections=-1 monotonic=1
4007</div>
4008
4009<div id="loops4i">
4010seg=1 {{{0, 3}, {0, 2.58243537f}, {0, 2.33923101f}, {-0.12134438f, 2.20971465f}}}
4011seg=2 {{{-0.12134438f, 2.20971465f}, {-0.29060027f, 2.02906013f}, {-0.695940912f, 2.06959414f}, {-1.66666663f, 2.16666675f}}}
4012seg=3 {{{-1.66666663f, 2.16666675f}, {0, 3}}}
4013seg=4 {{{0, 2}, {0, 2}, {-1.66666663f, 2.16666675f}, {0, 3}}}
4014seg=5 {{{0, 3}, {0, 2}}}
4015-SkOpSegment::findTop- baseAngle
4016SkOpAngle::dumpOne [4/10] next=5/9 sect=17/17 s=0 [7] e=0.366025448 [11] sgn=-1 windVal=1 windSum=? operand
4017SkOpAngle::dumpOne [5/9] next=4/10 sect=23/23 s=1 [10] e=0 [9] sgn=1 windVal=1 windSum=? operand stop
4018-SkOpSegment::findTop- firstAngle
4019SkOpAngle::dumpOne [4/10] next=5/9 sect=17/17 s=0 [7] e=0.366025448 [11] sgn=-1 windVal=1 windSum=? operand
4020SkOpAngle::dumpOne [5/9] next=4/10 sect=23/23 s=1 [10] e=0 [9] sgn=1 windVal=1 windSum=? operand stop
4021SkOpSegment::findTop id=4 s=0.366025448 e=0 (+) cw=0 swap=1 inflections=1 monotonic=0
4022</div>
4023
4024<div id="loops5i">
4025seg=1 {{{1, 2}, {0.442417026f, 2}, {0.195732832f, 2}, {0.115487516f, 2.11556792f}}}
4026seg=2 {{{0.115487516f, 2.11556792f}, {0.0518164635f, 2.20726585f}, {0.0929304957f, 2.37172198f}, {0.166666672f, 2.66666675f}}}
4027seg=3 {{{0.166666672f, 2.66666675f}, {1, 2}}}
4028seg=4 {{{0, 2}, {0, 2}, {0.166666672f, 2.66666675f}, {1, 2}}}
4029seg=5 {{{1, 2}, {0, 2}}}
4030-SkOpSegment::findTop- baseAngle
4031SkOpAngle::dumpOne [4/10] next=5/9 sect=25/25 s=0 [7] e=0.366024971 [11] sgn=-1 windVal=1 windSum=? operand
4032SkOpAngle::dumpOne [5/9] next=4/10 sect=31/31 s=1 [10] e=0 [9] sgn=1 windVal=1 windSum=? operand stop
4033-SkOpSegment::findTop- firstAngle
4034SkOpAngle::dumpOne [4/10] next=5/9 sect=25/25 s=0 [7] e=0.366024971 [11] sgn=-1 windVal=1 windSum=? operand
4035SkOpAngle::dumpOne [5/9] next=4/10 sect=31/31 s=1 [10] e=0 [9] sgn=1 windVal=1 windSum=? operand stop
4036SkOpSegment::findTop id=4 s=0.366024971 e=0 (+) cw=0 swap=1 inflections=1 monotonic=0
caryclarkdac1d172014-06-17 05:15:38 -07004037</div>
caryclark54359292015-03-26 07:52:43 -07004038
caryclarkdac1d172014-06-17 05:15:38 -07004039</div>
4040
4041<script type="text/javascript">
4042
4043var testDivs = [
caryclark03b03ca2015-04-23 09:13:37 -07004044 loops5i,
4045 loops4i,
4046 quadRect1,
4047 quadRect2,
4048 quadRect3,
4049 quadRect4,
4050 quadRect5,
4051 quadRect6,
4052 cubicOp141,
4053 cubicOp58d,
4054 issue3651_5,
4055 cubicOp142,
4056 cubicOp139,
4057 issue3651_4,
4058 cubics138,
4059 cubicOp136a,
4060 cubicOp136,
4061 loop16,
4062 loop15,
4063 loop14,
4064 loop13,
4065 loop12,
caryclark1049f122015-04-20 08:31:59 -07004066 cubicOp132,
caryclark03b03ca2015-04-23 09:13:37 -07004067 loop11,
4068 loop10,
4069 circlesOp3,
4070 loop9,
4071 loop8,
4072 rects5,
4073 loop7,
4074 cubicOp130a,
4075 rRect1x,
4076 circlesOp2,
4077 circlesOp1,
4078 cubicOp131,
4079 cubicOp130,
4080 cubicOp129,
4081 cubicOp128,
4082 cubicOp127,
4083 cubicOp126,
4084 cubicOp125,
4085 cubicOp124,
4086 loop6,
4087 loop5,
4088 cubicOp123,
4089 cubicOp122,
4090 cubicOp121,
4091 cubicOp120,
4092 cubicOp119,
4093 loop4,
4094 loop3,
4095 loop2,
4096 loop1asQuad,
4097 loop1,
4098 issue3517,
4099 cubicOp118,
4100 cubicOp117,
4101 cubicOp116,
4102 testRect2,
4103 testRect1,
4104 cubicOp115,
4105 issue2753,
4106 cubicOp114,
4107 issue2808,
4108 cubicOp114asQuad,
4109 rects4,
4110 rects3,
4111 rects2,
4112 rects1,
4113 issue2540,
4114 issue2504,
4115 kari1,
4116 quadOp10i,
4117 cubicOp113,
4118 skpcarrot_is24,
4119 issue1417,
4120 cubicOp112,
4121 skpadspert_net23,
4122 skpadspert_de11,
4123 findFirst1,
4124 xOp2i,
4125 xOp3i,
4126 xOp1u,
4127 xOp1i,
4128 cubicOp111,
4129 cubicOp110,
4130 cubicOp109,
4131 cubicOp108,
4132 cubicOp107,
4133 cubicOp106,
4134 cubicOp105,
4135 cubicOp104,
4136 cubicOp103,
4137 cubicOp102,
4138 cubicOp101,
4139 cubicOp100,
4140 cubicOp99,
4141
caryclarkdac1d172014-06-17 05:15:38 -07004142];
4143
4144var decimal_places = 3; // make this 3 to show more precision
4145
4146var tests = [];
4147var testLines = [];
4148var testTitles = [];
4149var testIndex = 0;
4150var ctx;
4151
4152var xmin, xmax, focusXmin, focusXmax;
4153var ymin, ymax, focusYmin, focusYmax;
4154var scale;
4155var mouseX, mouseY;
4156var srcLeft, srcTop;
4157var screenWidth, screenHeight;
caryclark1049f122015-04-20 08:31:59 -07004158var drawnPts, drawnLines, drawnQuads, drawnConics, drawnCubics;
caryclarkdac1d172014-06-17 05:15:38 -07004159var curveT = 0;
4160
4161var pt_labels = 2;
4162var collect_bounds = false;
4163var control_lines = 0;
4164var curve_t = false;
4165var debug_xy = 1;
4166var focus_enabled = false;
4167var focus_on_selection = false;
4168var step_limit = 0;
4169var draw_active = false;
4170var draw_add = false;
4171var draw_angle = 0;
4172var draw_deriviatives = 0;
4173var draw_hints = false;
caryclarkdac1d172014-06-17 05:15:38 -07004174var draw_id = false;
4175var draw_intersection = 0;
4176var draw_intersectT = false;
4177var draw_legend = true;
4178var draw_log = false;
4179var draw_mark = false;
4180var draw_midpoint = false;
4181var draw_op = 0;
4182var draw_sequence = false;
4183var draw_sort = 0;
caryclark03b03ca2015-04-23 09:13:37 -07004184var draw_top = false;
caryclarkdac1d172014-06-17 05:15:38 -07004185var draw_path = 3;
4186var draw_computed = 0;
4187var retina_scale = !!window.devicePixelRatio;
4188
4189var activeCount = 0;
4190var addCount = 0;
4191var angleCount = 0;
4192var opCount = 0;
4193var sectCount = 0;
4194var sortCount = 0;
caryclark03b03ca2015-04-23 09:13:37 -07004195var topCount = 0;
caryclarkdac1d172014-06-17 05:15:38 -07004196var markCount = 0;
4197var activeMax = 0;
4198var addMax = 0;
4199var angleMax = 0;
4200var sectMax = 0;
4201var sectMax2 = 0;
4202var sortMax = 0;
caryclark03b03ca2015-04-23 09:13:37 -07004203var topMax = 0;
caryclarkdac1d172014-06-17 05:15:38 -07004204var markMax = 0;
4205var opMax = 0;
4206var stepMax = 0;
4207var lastIndex = 0;
4208var hasPath = false;
4209var hasComputedPath = false;
caryclark54359292015-03-26 07:52:43 -07004210var angleBetween = false;
4211var afterIndex = 0;
caryclarkdac1d172014-06-17 05:15:38 -07004212
4213var firstActiveSpan = -1;
4214var logStart = -1;
4215var logRange = 0;
4216
4217var SPAN_ID = 0;
4218var SPAN_X1 = SPAN_ID + 1;
4219var SPAN_Y1 = SPAN_X1 + 1;
4220var SPAN_X2 = SPAN_Y1 + 1;
4221var SPAN_Y2 = SPAN_X2 + 1;
caryclark1049f122015-04-20 08:31:59 -07004222
caryclarkdac1d172014-06-17 05:15:38 -07004223var SPAN_L_T = SPAN_Y2 + 1;
4224var SPAN_L_TX = SPAN_L_T + 1;
4225var SPAN_L_TY = SPAN_L_TX + 1;
4226var SPAN_L_TEND = SPAN_L_TY + 1;
4227var SPAN_L_OTHER = SPAN_L_TEND + 1;
4228var SPAN_L_OTHERT = SPAN_L_OTHER + 1;
4229var SPAN_L_OTHERI = SPAN_L_OTHERT + 1;
4230var SPAN_L_SUM = SPAN_L_OTHERI + 1;
4231var SPAN_L_VAL = SPAN_L_SUM + 1;
4232var SPAN_L_OPP = SPAN_L_VAL + 1;
4233
4234var SPAN_X3 = SPAN_Y2 + 1;
4235var SPAN_Y3 = SPAN_X3 + 1;
caryclark1049f122015-04-20 08:31:59 -07004236
caryclarkdac1d172014-06-17 05:15:38 -07004237var SPAN_Q_T = SPAN_Y3 + 1;
4238var SPAN_Q_TX = SPAN_Q_T + 1;
4239var SPAN_Q_TY = SPAN_Q_TX + 1;
4240var SPAN_Q_TEND = SPAN_Q_TY + 1;
4241var SPAN_Q_OTHER = SPAN_Q_TEND + 1;
4242var SPAN_Q_OTHERT = SPAN_Q_OTHER + 1;
4243var SPAN_Q_OTHERI = SPAN_Q_OTHERT + 1;
4244var SPAN_Q_SUM = SPAN_Q_OTHERI + 1;
4245var SPAN_Q_VAL = SPAN_Q_SUM + 1;
4246var SPAN_Q_OPP = SPAN_Q_VAL + 1;
4247
caryclark1049f122015-04-20 08:31:59 -07004248var SPAN_K_W = SPAN_Y3 + 1;
4249var SPAN_K_T = SPAN_K_W + 1;
4250var SPAN_K_TX = SPAN_K_T + 1;
4251var SPAN_K_TY = SPAN_K_TX + 1;
4252var SPAN_K_TEND = SPAN_K_TY + 1;
4253var SPAN_K_OTHER = SPAN_K_TEND + 1;
4254var SPAN_K_OTHERT = SPAN_K_OTHER + 1;
4255var SPAN_K_OTHERI = SPAN_K_OTHERT + 1;
4256var SPAN_K_SUM = SPAN_K_OTHERI + 1;
4257var SPAN_K_VAL = SPAN_K_SUM + 1;
4258var SPAN_K_OPP = SPAN_K_VAL + 1;
4259
caryclarkdac1d172014-06-17 05:15:38 -07004260var SPAN_X4 = SPAN_Y3 + 1;
4261var SPAN_Y4 = SPAN_X4 + 1;
caryclark1049f122015-04-20 08:31:59 -07004262
caryclarkdac1d172014-06-17 05:15:38 -07004263var SPAN_C_T = SPAN_Y4 + 1;
4264var SPAN_C_TX = SPAN_C_T + 1;
4265var SPAN_C_TY = SPAN_C_TX + 1;
4266var SPAN_C_TEND = SPAN_C_TY + 1;
4267var SPAN_C_OTHER = SPAN_C_TEND + 1;
4268var SPAN_C_OTHERT = SPAN_C_OTHER + 1;
4269var SPAN_C_OTHERI = SPAN_C_OTHERT + 1;
4270var SPAN_C_SUM = SPAN_C_OTHERI + 1;
4271var SPAN_C_VAL = SPAN_C_SUM + 1;
4272var SPAN_C_OPP = SPAN_C_VAL + 1;
4273
4274var ACTIVE_LINE_SPAN = 1;
4275var ACTIVE_QUAD_SPAN = ACTIVE_LINE_SPAN + 1;
caryclark1049f122015-04-20 08:31:59 -07004276var ACTIVE_CONIC_SPAN = ACTIVE_QUAD_SPAN + 1;
4277var ACTIVE_CUBIC_SPAN = ACTIVE_CONIC_SPAN + 1;
caryclarkdac1d172014-06-17 05:15:38 -07004278
4279var ADD_MOVETO = ACTIVE_CUBIC_SPAN + 1;
4280var ADD_LINETO = ADD_MOVETO + 1;
4281var ADD_QUADTO = ADD_LINETO + 1;
caryclark1049f122015-04-20 08:31:59 -07004282var ADD_CONICTO = ADD_QUADTO + 1;
4283var ADD_CUBICTO = ADD_CONICTO + 1;
caryclarkdac1d172014-06-17 05:15:38 -07004284var ADD_CLOSE = ADD_CUBICTO + 1;
4285var ADD_FILL = ADD_CLOSE + 1;
4286
4287var PATH_LINE = ADD_FILL + 1;
4288var PATH_QUAD = PATH_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07004289var PATH_CONIC = PATH_QUAD + 1;
4290var PATH_CUBIC = PATH_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07004291
4292var INTERSECT_LINE = PATH_CUBIC + 1;
4293var INTERSECT_LINE_2 = INTERSECT_LINE + 1;
4294var INTERSECT_LINE_NO = INTERSECT_LINE_2 + 1;
4295var INTERSECT_QUAD_LINE = INTERSECT_LINE_NO + 1;
4296var INTERSECT_QUAD_LINE_2 = INTERSECT_QUAD_LINE + 1;
4297var INTERSECT_QUAD_LINE_NO = INTERSECT_QUAD_LINE_2 + 1;
4298var INTERSECT_QUAD = INTERSECT_QUAD_LINE_NO + 1;
4299var INTERSECT_QUAD_2 = INTERSECT_QUAD + 1;
4300var INTERSECT_QUAD_NO = INTERSECT_QUAD_2 + 1;
caryclark1049f122015-04-20 08:31:59 -07004301var INTERSECT_CONIC_LINE = INTERSECT_QUAD_NO + 1;
4302var INTERSECT_CONIC_LINE_2 = INTERSECT_CONIC_LINE + 1;
4303var INTERSECT_CONIC_LINE_NO = INTERSECT_CONIC_LINE_2 + 1;
4304var INTERSECT_CONIC = INTERSECT_CONIC_LINE_NO + 1;
4305var INTERSECT_CONIC_2 = INTERSECT_CONIC + 1;
4306var INTERSECT_CONIC_NO = INTERSECT_CONIC_2 + 1;
4307var INTERSECT_SELF_CUBIC = INTERSECT_CONIC_NO + 1;
caryclarkdac1d172014-06-17 05:15:38 -07004308var INTERSECT_SELF_CUBIC_NO = INTERSECT_SELF_CUBIC + 1;
4309var INTERSECT_CUBIC_LINE = INTERSECT_SELF_CUBIC_NO + 1;
4310var INTERSECT_CUBIC_LINE_2 = INTERSECT_CUBIC_LINE + 1;
4311var INTERSECT_CUBIC_LINE_3 = INTERSECT_CUBIC_LINE_2 + 1;
4312var INTERSECT_CUBIC_LINE_NO = INTERSECT_CUBIC_LINE_3 + 1;
4313var INTERSECT_CUBIC_QUAD = INTERSECT_CUBIC_LINE_NO + 1;
4314var INTERSECT_CUBIC_QUAD_2 = INTERSECT_CUBIC_QUAD + 1;
4315var INTERSECT_CUBIC_QUAD_3 = INTERSECT_CUBIC_QUAD_2 + 1;
4316var INTERSECT_CUBIC_QUAD_4 = INTERSECT_CUBIC_QUAD_3 + 1;
4317var INTERSECT_CUBIC_QUAD_NO = INTERSECT_CUBIC_QUAD_4 + 1;
4318var INTERSECT_CUBIC = INTERSECT_CUBIC_QUAD_NO + 1;
4319var INTERSECT_CUBIC_2 = INTERSECT_CUBIC + 1;
4320var INTERSECT_CUBIC_3 = INTERSECT_CUBIC_2 + 1;
4321var INTERSECT_CUBIC_4 = INTERSECT_CUBIC_3 + 1;
4322// FIXME: add cubic 5- 9
4323var INTERSECT_CUBIC_NO = INTERSECT_CUBIC_4 + 1;
4324
4325var SORT_UNARY = INTERSECT_CUBIC_NO + 1;
4326var SORT_BINARY = SORT_UNARY + 1;
4327
4328var OP_DIFFERENCE = SORT_BINARY + 1;
4329var OP_INTERSECT = OP_DIFFERENCE + 1;
4330var OP_UNION = OP_INTERSECT + 1;
4331var OP_XOR = OP_UNION + 1;
4332
4333var MARK_LINE = OP_XOR + 1;
4334var MARK_QUAD = MARK_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07004335var MARK_CONIC = MARK_QUAD + 1;
4336var MARK_CUBIC = MARK_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07004337var MARK_DONE_LINE = MARK_CUBIC + 1;
4338var MARK_DONE_QUAD = MARK_DONE_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07004339var MARK_DONE_CONIC = MARK_DONE_QUAD + 1;
4340var MARK_DONE_CUBIC = MARK_DONE_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07004341var MARK_UNSORTABLE_LINE = MARK_DONE_CUBIC + 1;
4342var MARK_UNSORTABLE_QUAD = MARK_UNSORTABLE_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07004343var MARK_UNSORTABLE_CONIC = MARK_UNSORTABLE_QUAD + 1;
4344var MARK_UNSORTABLE_CUBIC = MARK_UNSORTABLE_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07004345var MARK_SIMPLE_LINE = MARK_UNSORTABLE_CUBIC + 1;
4346var MARK_SIMPLE_QUAD = MARK_SIMPLE_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07004347var MARK_SIMPLE_CONIC = MARK_SIMPLE_QUAD + 1;
4348var MARK_SIMPLE_CUBIC = MARK_SIMPLE_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07004349var MARK_SIMPLE_DONE_LINE = MARK_SIMPLE_CUBIC + 1;
4350var MARK_SIMPLE_DONE_QUAD = MARK_SIMPLE_DONE_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07004351var MARK_SIMPLE_DONE_CONIC = MARK_SIMPLE_DONE_QUAD + 1;
4352var MARK_SIMPLE_DONE_CUBIC = MARK_SIMPLE_DONE_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07004353var MARK_DONE_UNARY_LINE = MARK_SIMPLE_DONE_CUBIC + 1;
4354var MARK_DONE_UNARY_QUAD = MARK_DONE_UNARY_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07004355var MARK_DONE_UNARY_CONIC = MARK_DONE_UNARY_QUAD + 1;
4356var MARK_DONE_UNARY_CUBIC = MARK_DONE_UNARY_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07004357var MARK_ANGLE_LAST = MARK_DONE_UNARY_CUBIC + 1;
4358
4359var COMPUTED_SET_1 = MARK_ANGLE_LAST + 1;
4360var COMPUTED_SET_2 = COMPUTED_SET_1 + 1;
4361
4362var ANGLE_AFTER = COMPUTED_SET_2;
caryclark54359292015-03-26 07:52:43 -07004363var ANGLE_AFTERPART = ANGLE_AFTER + 1;
caryclarkdac1d172014-06-17 05:15:38 -07004364
caryclark54359292015-03-26 07:52:43 -07004365var ACTIVE_OP = ANGLE_AFTERPART + 1;
caryclarkdac1d172014-06-17 05:15:38 -07004366
4367var FRAG_TYPE_LAST = ACTIVE_OP;
4368
4369var REC_TYPE_UNKNOWN = -1;
4370var REC_TYPE_PATH = 0;
caryclark54359292015-03-26 07:52:43 -07004371var REC_TYPE_PATH2 = 1;
4372var REC_TYPE_SECT = 2;
4373var REC_TYPE_ACTIVE = 3;
4374var REC_TYPE_ADD = 4;
4375var REC_TYPE_SORT = 5;
4376var REC_TYPE_OP = 6;
4377var REC_TYPE_MARK = 7;
4378var REC_TYPE_COMPUTED = 8;
4379var REC_TYPE_COIN = 9;
4380var REC_TYPE_ANGLE = 10;
4381var REC_TYPE_ACTIVE_OP = 11;
4382var REC_TYPE_AFTERPART = 12;
caryclark03b03ca2015-04-23 09:13:37 -07004383var REC_TYPE_TOP = 13;
4384var REC_TYPE_LAST = REC_TYPE_TOP;
caryclarkdac1d172014-06-17 05:15:38 -07004385
4386function strs_to_nums(strs) {
4387 var result = [];
4388 for (var idx = 1; idx < strs.length; ++idx) {
4389 var str = strs[idx];
4390 var num = parseFloat(str);
4391 if (isNaN(num)) {
4392 result.push(str);
4393 } else {
4394 result.push(num);
4395 }
4396 }
4397 return result;
4398}
4399
4400function filter_str_by(id, str, regex, array) {
4401 if (regex.test(str)) {
4402 var strs = regex.exec(str);
4403 var result = strs_to_nums(strs);
4404 array.push(id);
4405 array.push(result);
4406 return true;
4407 }
4408 return false;
4409}
4410
4411function construct_regexp2(pattern) {
4412 var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
4413 escape = escape.replace(/UNSORTABLE/g, "\\*\\*\\* UNSORTABLE \\*\\*\\*");
4414 escape = escape.replace(/CUBIC_VAL/g, "\\(P_VAL P_VAL P_VAL P_VAL\\)");
caryclark1049f122015-04-20 08:31:59 -07004415 escape = escape.replace(/CONIC_VAL/g, "\\(P_VAL P_VAL P_VAL W_VAL\\)");
caryclarkdac1d172014-06-17 05:15:38 -07004416 escape = escape.replace(/QUAD_VAL/g, "\\(P_VAL P_VAL P_VAL\\)");
4417 escape = escape.replace(/LINE_VAL/g, "\\(P_VAL P_VAL\\)");
4418 escape = escape.replace(/FILL_TYPE/g, "SkPath::k[a-zA-Z]+_FillType");
caryclark54359292015-03-26 07:52:43 -07004419 escape = escape.replace(/PTR_VAL/g, "0x[0-9A-F]+");
caryclarkdac1d172014-06-17 05:15:38 -07004420 escape = escape.replace(/PT_VAL/g, "\\(P_VAL\\)");
4421 escape = escape.replace(/P_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?, ?(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
4422 escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
caryclark1049f122015-04-20 08:31:59 -07004423 escape = escape.replace(/W_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
caryclarkdac1d172014-06-17 05:15:38 -07004424 escape = escape.replace(/PATH/g, "pathB?");
caryclark1049f122015-04-20 08:31:59 -07004425 escape = escape.replace(/IDX/g, "(-?\\d+)");
caryclarkdac1d172014-06-17 05:15:38 -07004426 escape = escape.replace(/NUM/g, "(-?\\d+)");
4427 escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
4428 return new RegExp(escape, 'i');
4429}
4430
4431function construct_regexp2c(pattern) {
4432 var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
4433 escape = escape.replace(/UNSORTABLE/g, "\\*\\*\\* UNSORTABLE \\*\\*\\*");
caryclark54359292015-03-26 07:52:43 -07004434 escape = escape.replace(/CUBIC_VAL/g, "(?:\\$\\d = )?\\{\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}\\}");
caryclark1049f122015-04-20 08:31:59 -07004435 escape = escape.replace(/CONIC_VAL/g, "(?:\\$\\d = )?\\{\\{\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}\\}, W_VAL\\}");
caryclark54359292015-03-26 07:52:43 -07004436 escape = escape.replace(/QUAD_VAL/g, "(?:\\$\\d = )?\\{\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}\\}");
4437 escape = escape.replace(/LINE_VAL/g, "(?:\\$\\d = )?\\{\\{\\{P_VAL\\}, \\{P_VAL\\}\\}\\}");
caryclarkdac1d172014-06-17 05:15:38 -07004438 escape = escape.replace(/FILL_TYPE/g, "SkPath::k[a-zA-Z]+_FillType");
caryclark54359292015-03-26 07:52:43 -07004439 escape = escape.replace(/PTR_VAL/g, "0x[0-9A-F]+");
caryclarkdac1d172014-06-17 05:15:38 -07004440 escape = escape.replace(/PT_VAL/g, "\\{\\{P_VAL\\}\\}");
caryclark54359292015-03-26 07:52:43 -07004441 escape = escape.replace(/P_VAL/g, "(?:f?[xX] = )?(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?, *(?: f?[yY] = )?(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
caryclarkdac1d172014-06-17 05:15:38 -07004442 escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
caryclark1049f122015-04-20 08:31:59 -07004443 escape = escape.replace(/W_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
caryclarkdac1d172014-06-17 05:15:38 -07004444 escape = escape.replace(/OPER/g, "[a-z]+");
4445 escape = escape.replace(/PATH/g, "pathB?");
4446 escape = escape.replace(/T_F/g, "([TF])");
caryclark1049f122015-04-20 08:31:59 -07004447 escape = escape.replace(/IDX/g, "(-?\\d+)");
caryclarkdac1d172014-06-17 05:15:38 -07004448 escape = escape.replace(/NUM/g, "(-?\\d+)");
4449 escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
4450 return new RegExp(escape, 'i');
4451}
4452
4453function match_regexp(str, lineNo, array, id, pattern) {
4454 var regex = construct_regexp2(pattern);
4455 if (filter_str_by(id, str, regex, array)) {
4456 return true;
4457 }
4458 regex = construct_regexp2c(pattern);
4459 return filter_str_by(id, str, regex, array);
4460}
4461
4462function endsWith(str, suffix) {
4463 return str.indexOf(suffix, str.length - suffix.length) !== -1;
4464}
4465
4466function parse_all(test) {
4467 var lines = test.match(/[^\r\n]+/g);
4468 var records = []; // a rec can be the original paths, a set of intersections, a set of active spans, a sort, or a path add
4469 var record = [];
4470 var recType = REC_TYPE_UNKNOWN;
4471 var lastLineNo;
4472 var moveX, moveY;
4473 for (var lineNo = 0; lineNo < lines.length; ++lineNo) {
4474 var line = lines[lineNo];
4475 if (line.length == 0) {
4476 continue;
4477 }
4478 var opStart = "SkOpSegment::";
4479 if (line.lastIndexOf(opStart, 0) === 0) {
4480 line = line.substr(opStart.length);
4481 }
4482 var angleStart = "SkOpAngle::";
4483 if (line.lastIndexOf(angleStart, 0) === 0) {
4484 line = line.substr(angleStart.length);
4485 }
caryclark54359292015-03-26 07:52:43 -07004486 var type = line.lastIndexOf("debugShowActiveSpans", 0) === 0 ? REC_TYPE_ACTIVE
4487 : line.lastIndexOf("((SkOpSegment*)", 0) === 0 ? REC_TYPE_PATH2
caryclarkdac1d172014-06-17 05:15:38 -07004488 : line.lastIndexOf("debugShowTs", 0) === 0 ? REC_TYPE_COIN
caryclark54359292015-03-26 07:52:43 -07004489 : line.lastIndexOf("afterPart", 0) === 0 ? REC_TYPE_AFTERPART
caryclarkdac1d172014-06-17 05:15:38 -07004490 : line.lastIndexOf("debugShow", 0) === 0 ? REC_TYPE_SECT
4491 : line.lastIndexOf("activeOp", 0) === 0 ? REC_TYPE_ACTIVE_OP
4492 : line.lastIndexOf("computed", 0) === 0 ? REC_TYPE_COMPUTED
4493 : line.lastIndexOf("debugOne", 0) === 0 ? REC_TYPE_SORT
4494 : line.lastIndexOf("dumpOne", 0) === 0 ? REC_TYPE_SORT
caryclark03b03ca2015-04-23 09:13:37 -07004495 : line.lastIndexOf("findTop", 0) === 0 ? REC_TYPE_TOP
caryclarkdac1d172014-06-17 05:15:38 -07004496 : line.lastIndexOf("pathB.", 0) === 0 ? REC_TYPE_ADD
4497 : line.lastIndexOf("path.", 0) === 0 ? REC_TYPE_ADD
4498 : line.lastIndexOf("after", 0) === 0 ? REC_TYPE_ANGLE
4499 : line.lastIndexOf("mark", 0) === 0 ? REC_TYPE_MARK
4500 : line.lastIndexOf(" {{", 0) === 0 ? REC_TYPE_COMPUTED
caryclark54359292015-03-26 07:52:43 -07004501 : line.lastIndexOf("seg=", 0) === 0 ? REC_TYPE_PATH
caryclarkdac1d172014-06-17 05:15:38 -07004502 : line.lastIndexOf("op", 0) === 0 ? REC_TYPE_OP
4503 : line.lastIndexOf("$", 0) === 0 ? REC_TYPE_PATH
4504 : REC_TYPE_UNKNOWN;
4505 if (recType != type || recType == REC_TYPE_ADD || recType == REC_TYPE_SECT
4506 || recType == REC_TYPE_ACTIVE_OP || recType == REC_TYPE_ANGLE) {
4507 if (recType != REC_TYPE_UNKNOWN) {
4508 records.push(recType);
4509 records.push(lastLineNo);
4510 records.push(record);
4511 }
4512 record = [];
4513 recType = type;
4514 lastLineNo = lineNo;
4515 }
4516 var found = false;
4517 switch (recType) {
4518 case REC_TYPE_ACTIVE:
4519 found = match_regexp(line, lineNo, record, ACTIVE_LINE_SPAN, "debugShowActiveSpans" +
caryclark54359292015-03-26 07:52:43 -07004520" id=IDX LINE_VAL t=T_VAL PT_VAL tEnd=T_VAL windSum=OPT windValue=IDX oppValue=NUM"
caryclarkdac1d172014-06-17 05:15:38 -07004521 ) || match_regexp(line, lineNo, record, ACTIVE_QUAD_SPAN, "debugShowActiveSpans" +
caryclark54359292015-03-26 07:52:43 -07004522" id=IDX QUAD_VAL t=T_VAL PT_VAL tEnd=T_VAL windSum=OPT windValue=IDX oppValue=NUM"
caryclark1049f122015-04-20 08:31:59 -07004523 ) || match_regexp(line, lineNo, record, ACTIVE_CONIC_SPAN, "debugShowActiveSpans" +
4524" id=IDX CONIC_VAL t=T_VAL PT_VAL tEnd=T_VAL windSum=OPT windValue=IDX oppValue=NUM"
caryclarkdac1d172014-06-17 05:15:38 -07004525 ) || match_regexp(line, lineNo, record, ACTIVE_CUBIC_SPAN, "debugShowActiveSpans" +
caryclark54359292015-03-26 07:52:43 -07004526" id=IDX CUBIC_VAL t=T_VAL PT_VAL tEnd=T_VAL windSum=OPT windValue=IDX oppValue=NUM"
caryclarkdac1d172014-06-17 05:15:38 -07004527 );
4528 break;
4529 case REC_TYPE_ACTIVE_OP:
4530 found = match_regexp(line, lineNo, record, ACTIVE_OP, "activeOp" +
4531" id=IDX t=T_VAL tEnd=T_VAL op=OPER miFrom=NUM miTo=NUM suFrom=NUM suTo=NUM result=IDX"
4532 );
4533 break;
4534 case REC_TYPE_ADD:
4535 if (match_regexp(line, lineNo, record, ADD_MOVETO, "PATH.moveTo(P_VAL);")) {
4536 moveX = record[1][0];
4537 moveY = record[1][1];
4538 found = true;
4539 } else if (match_regexp(line, lineNo, record, ADD_LINETO, "PATH.lineTo(P_VAL);")) {
4540 record[1].unshift(moveY);
4541 record[1].unshift(moveX);
4542 moveX = record[1][2];
4543 moveY = record[1][3];
4544 found = true;
4545 } else if (match_regexp(line, lineNo, record, ADD_QUADTO, "PATH.quadTo(P_VAL, P_VAL);")) {
4546 record[1].unshift(moveY);
4547 record[1].unshift(moveX);
4548 moveX = record[1][4];
4549 moveY = record[1][5];
4550 found = true;
caryclark1049f122015-04-20 08:31:59 -07004551 } else if (match_regexp(line, lineNo, record, ADD_CONICTO, "PATH.conicTo(P_VAL, P_VAL, T_VAL);")) {
4552 record[1].unshift(moveY);
4553 record[1].unshift(moveX);
4554 moveX = record[1][4];
4555 moveY = record[1][5];
4556 found = true;
caryclarkdac1d172014-06-17 05:15:38 -07004557 } else if (match_regexp(line, lineNo, record, ADD_CUBICTO, "PATH.cubicTo(P_VAL, P_VAL, P_VAL);")) {
4558 record[1].unshift(moveY);
4559 record[1].unshift(moveX);
4560 moveX = record[1][6];
4561 moveY = record[1][7];
4562 found = true;
4563 } else if (match_regexp(line, lineNo, record, ADD_FILL, "PATH.setFillType(FILL_TYPE);")) {
4564 found = true;
4565 } else {
4566 found = match_regexp(line, lineNo, record, ADD_CLOSE, "PATH.close();");
4567 }
4568 break;
caryclark54359292015-03-26 07:52:43 -07004569 case REC_TYPE_AFTERPART:
4570 found = match_regexp(line, lineNo, record, PATH_LINE, "afterPart LINE_VAL")
4571 || match_regexp(line, lineNo, record, PATH_QUAD, "afterPart QUAD_VAL")
caryclark1049f122015-04-20 08:31:59 -07004572 || match_regexp(line, lineNo, record, PATH_CONIC, "afterPart CONIC_VAL")
caryclark54359292015-03-26 07:52:43 -07004573 || match_regexp(line, lineNo, record, PATH_CUBIC, "afterPart CUBIC_VAL")
4574 break;
caryclarkdac1d172014-06-17 05:15:38 -07004575 case REC_TYPE_ANGLE:
4576 found = match_regexp(line, lineNo, record, ANGLE_AFTER, "after " +
caryclarkdac1d172014-06-17 05:15:38 -07004577"[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");
4578 break;
4579 case REC_TYPE_COIN:
4580 found = true;
4581 break;
4582 case REC_TYPE_COMPUTED:
4583 found = line == "computed quadratics given"
4584 || match_regexp(line, lineNo, record, COMPUTED_SET_1, "computed quadratics set 1"
4585 ) || match_regexp(line, lineNo, record, COMPUTED_SET_2, "computed quadratics set 2"
4586 ) || match_regexp(line, lineNo, record, PATH_QUAD, " QUAD_VAL,"
caryclark1049f122015-04-20 08:31:59 -07004587 ) || match_regexp(line, lineNo, record, PATH_CONIC, " CONIC_VAL,"
caryclarkdac1d172014-06-17 05:15:38 -07004588 ) || match_regexp(line, lineNo, record, PATH_CUBIC, " CUBIC_VAL,"
4589 );
4590 break;
4591 case REC_TYPE_PATH:
caryclark54359292015-03-26 07:52:43 -07004592 found = match_regexp(line, lineNo, record, PATH_LINE, "seg=IDX LINE_VAL"
4593 ) || match_regexp(line, lineNo, record, PATH_QUAD, "seg=IDX QUAD_VAL"
caryclark1049f122015-04-20 08:31:59 -07004594 ) || match_regexp(line, lineNo, record, PATH_CONIC, "seg=IDX CONIC_VAL"
caryclark54359292015-03-26 07:52:43 -07004595 ) || match_regexp(line, lineNo, record, PATH_CUBIC, "seg=IDX CUBIC_VAL"
4596 );
4597 break;
4598 case REC_TYPE_PATH2:
4599 found = match_regexp(line, lineNo, record, PATH_LINE, "((SkOpSegment*) PTR_VAL) [IDX] {LINE_VAL}"
4600 ) || match_regexp(line, lineNo, record, PATH_QUAD, "((SkOpSegment*) PTR_VAL) [IDX] {QUAD_VAL}"
caryclark1049f122015-04-20 08:31:59 -07004601 ) || match_regexp(line, lineNo, record, PATH_CONIC, "((SkOpSegment*) PTR_VAL) [IDX] {CONIC_VAL}"
caryclark54359292015-03-26 07:52:43 -07004602 ) || match_regexp(line, lineNo, record, PATH_CUBIC, "((SkOpSegment*) PTR_VAL) [IDX] {CUBIC_VAL}"
caryclarkdac1d172014-06-17 05:15:38 -07004603 );
4604 break;
4605 case REC_TYPE_SECT:
4606 found = match_regexp(line, lineNo, record, INTERSECT_LINE, "debugShowLineIntersection" +
4607" wtTs[0]=T_VAL LINE_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
4608 ) || match_regexp(line, lineNo, record, INTERSECT_LINE_2, "debugShowLineIntersection" +
4609" wtTs[0]=T_VAL LINE_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
4610 ) || match_regexp(line, lineNo, record, INTERSECT_LINE_NO, "debugShowLineIntersection" +
4611" no intersect LINE_VAL LINE_VAL"
4612 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE, "debugShowQuadLineIntersection" +
4613" wtTs[0]=T_VAL QUAD_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
4614 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE_2, "debugShowQuadLineIntersection" +
4615" wtTs[0]=T_VAL QUAD_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
4616 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE_NO, "debugShowQuadLineIntersection" +
4617" no intersect QUAD_VAL LINE_VAL"
4618 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD, "debugShowQuadIntersection" +
4619" wtTs[0]=T_VAL QUAD_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL"
4620 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_2, "debugShowQuadIntersection" +
4621" wtTs[0]=T_VAL QUAD_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL"
4622 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_NO, "debugShowQuadIntersection" +
4623" no intersect QUAD_VAL QUAD_VAL"
caryclark1049f122015-04-20 08:31:59 -07004624 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_LINE, "debugShowConicLineIntersection" +
4625" wtTs[0]=T_VAL CONIC_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
4626 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_LINE_2, "debugShowConicLineIntersection" +
4627" wtTs[0]=T_VAL CONIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
4628 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_LINE_NO, "debugShowConicLineIntersection" +
4629" no intersect CONIC_VAL LINE_VAL"
4630 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC, "debugShowConicIntersection" +
4631" wtTs[0]=T_VAL CONIC_VAL PT_VAL wnTs[0]=T_VAL CONIC_VAL"
4632 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_2, "debugShowConicIntersection" +
4633" wtTs[0]=T_VAL CONIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL CONIC_VAL wnTs[1]=T_VAL"
4634 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_NO, "debugShowConicIntersection" +
4635" no intersect CONIC_VAL CONIC_VAL"
caryclarkdac1d172014-06-17 05:15:38 -07004636 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE, "debugShowCubicLineIntersection" +
4637" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
4638 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_2, "debugShowCubicLineIntersection" +
4639" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
4640 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_3, "debugShowCubicLineIntersection" +
4641" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
4642 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_NO, "debugShowCubicLineIntersection" +
4643" no intersect CUBIC_VAL LINE_VAL"
4644 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD, "debugShowCubicQuadIntersection" +
4645" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL"
4646 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_2, "debugShowCubicQuadIntersection" +
4647" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL"
4648 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_3, "debugShowCubicQuadIntersection" +
4649" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
4650 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_4, "debugShowCubicQuadIntersection" +
4651" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL wtTs[3]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL wnTs[3]=T_VAL"
4652 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_NO, "debugShowCubicQuadIntersection" +
4653" no intersect CUBIC_VAL QUAD_VAL"
4654 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC, "debugShowCubicIntersection" +
4655" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL"
4656 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_2, "debugShowCubicIntersection" +
4657" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL"
4658 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_3, "debugShowCubicIntersection" +
4659" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL"
4660 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_4, "debugShowCubicIntersection" +
4661" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wtTs[2]=T_VAL PT_VAL wtTs[3]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL wnTs[2]=T_VAL wnTs[3]=T_VAL"
4662 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_NO, "debugShowCubicIntersection" +
4663" no intersect CUBIC_VAL CUBIC_VAL"
4664 ) || match_regexp(line, lineNo, record, INTERSECT_SELF_CUBIC, "debugShowCubicIntersection" +
4665" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL"
4666 ) || match_regexp(line, lineNo, record, INTERSECT_SELF_CUBIC_NO, "debugShowCubicIntersection" +
4667" no self intersect CUBIC_VAL"
4668 );
4669 break;
4670 case REC_TYPE_SORT:
4671 var hasDone = / done/.test(line);
4672 var hasUnorderable = / unorderable/.test(line);
4673 var hasSmall = / small/.test(line);
4674 var hasTiny = / tiny/.test(line);
4675 var hasOperand = / operand/.test(line);
4676 var hasStop = / stop/.test(line);
4677 line.replace(/[ a-z]+$/, "");
4678 found = match_regexp(line, lineNo, record, SORT_UNARY, "debugOne" +
4679" [IDX/IDX] next=IDX/IDX sect=IDX/IDX s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT"
4680 ) || match_regexp(line, lineNo, record, SORT_BINARY, "debugOne" +
4681" [IDX/IDX] next=IDX/IDX sect=IDX/IDX s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT oppVal=IDX oppSum=OPT"
4682 ) || match_regexp(line, lineNo, record, SORT_UNARY, "dumpOne" +
4683" [IDX/IDX] next=IDX/IDX sect=NUM/NUM s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT"
4684 ) || match_regexp(line, lineNo, record, SORT_BINARY, "dumpOne" +
4685" [IDX/IDX] next=IDX/IDX sect=NUM/NUM s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT oppVal=IDX oppSum=OPT"
4686 );
4687 if (found) {
4688 record[1].push(hasDone);
4689 record[1].push(hasUnorderable);
4690 record[1].push(hasSmall);
4691 record[1].push(hasTiny);
4692 record[1].push(hasOperand);
4693 record[1].push(hasStop);
4694 }
4695 break;
caryclark03b03ca2015-04-23 09:13:37 -07004696 case REC_TYPE_TOP:
4697 found = match_regexp(line, lineNo, record, ACTIVE_OP, "findTop" +
4698" id=IDX s=T_VAL e=T_VAL cw=NUM swap=NUM inflections=NUM monotonic=NUM"
4699 ) || match_regexp(line, lineNo, record, ACTIVE_OP, "findTop" +
4700" id=IDX s=T_VAL e=T_VAL (-) cw=NUM swap=NUM inflections=NUM monotonic=NUM"
4701 ) || match_regexp(line, lineNo, record, ACTIVE_OP, "findTop" +
4702" id=IDX s=T_VAL e=T_VAL (+) cw=NUM swap=NUM inflections=NUM monotonic=NUM"
4703 );
4704 break;
caryclarkdac1d172014-06-17 05:15:38 -07004705 case REC_TYPE_MARK:
4706 found = match_regexp(line, lineNo, record, MARK_LINE, "markWinding" +
caryclark54359292015-03-26 07:52:43 -07004707" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX"
caryclarkdac1d172014-06-17 05:15:38 -07004708 ) || match_regexp(line, lineNo, record, MARK_QUAD, "markWinding" +
caryclark54359292015-03-26 07:52:43 -07004709" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX"
caryclark1049f122015-04-20 08:31:59 -07004710 ) || match_regexp(line, lineNo, record, MARK_CONIC, "markWinding" +
4711" id=IDX CONIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX"
caryclarkdac1d172014-06-17 05:15:38 -07004712 ) || match_regexp(line, lineNo, record, MARK_CUBIC, "markWinding" +
caryclark54359292015-03-26 07:52:43 -07004713" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX"
4714 ) || match_regexp(line, lineNo, record, MARK_DONE_LINE, "markDone" +
4715" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=OPT newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX oppValue=OPT"
4716 ) || match_regexp(line, lineNo, record, MARK_DONE_QUAD, "markDone" +
4717" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=OPT newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX oppValue=OPT"
caryclark1049f122015-04-20 08:31:59 -07004718 ) || match_regexp(line, lineNo, record, MARK_DONE_CONIC, "markDone" +
4719" id=IDX CONIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=OPT newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX oppValue=OPT"
caryclark54359292015-03-26 07:52:43 -07004720 ) || match_regexp(line, lineNo, record, MARK_DONE_CUBIC, "markDone" +
4721" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=OPT newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX oppValue=OPT"
caryclarkdac1d172014-06-17 05:15:38 -07004722 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_LINE, "markWinding" +
4723" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
4724 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_QUAD, "markWinding" +
4725" id=IDX QUAD_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
caryclark1049f122015-04-20 08:31:59 -07004726 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_CONIC, "markWinding" +
4727" id=IDX CONIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
caryclarkdac1d172014-06-17 05:15:38 -07004728 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_CUBIC, "markWinding" +
4729" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
caryclarkdac1d172014-06-17 05:15:38 -07004730 ) || match_regexp(line, lineNo, record, MARK_ANGLE_LAST, "markAngle" +
caryclark1049f122015-04-20 08:31:59 -07004731" last segment=IDX span=IDX"
caryclark54359292015-03-26 07:52:43 -07004732 ) || match_regexp(line, lineNo, record, MARK_ANGLE_LAST, "markAngle" +
4733" last segment=IDX span=IDX windSum=OPT");
caryclarkdac1d172014-06-17 05:15:38 -07004734 break;
4735 case REC_TYPE_OP:
4736 if (line.lastIndexOf("oppSign oppSign=", 0) === 0
4737 || line.lastIndexOf("operator<", 0) === 0) {
4738 found = true;
4739 break;
4740 }
caryclark54359292015-03-26 07:52:43 -07004741 found = match_regexp(line, lineNo, record, OP_DIFFERENCE, "op diff"
caryclarkdac1d172014-06-17 05:15:38 -07004742 ) || match_regexp(line, lineNo, record, OP_INTERSECT, "op intersect"
caryclark54359292015-03-26 07:52:43 -07004743 ) || match_regexp(line, lineNo, record, OP_INTERSECT, "op sect"
caryclarkdac1d172014-06-17 05:15:38 -07004744 ) || match_regexp(line, lineNo, record, OP_UNION, "op union"
4745 ) || match_regexp(line, lineNo, record, OP_XOR, "op xor"
4746 );
4747 break;
4748 case REC_TYPE_UNKNOWN:
4749 found = true;
4750 break;
4751 }
4752 if (!found) {
4753 console.log(line + " [" + lineNo + "] of type " + type + " not found");
4754 }
4755 }
4756 if (recType != REC_TYPE_UNKNOWN) {
4757 records.push(recType);
4758 records.push(lastLineNo);
4759 records.push(record);
4760 }
4761 if (records.length >= 1) {
4762 tests[testIndex] = records;
4763 testLines[testIndex] = lines;
4764 }
4765}
4766
4767function init(test) {
4768 var canvas = document.getElementById('canvas');
4769 if (!canvas.getContext) return;
4770 ctx = canvas.getContext('2d');
4771 var resScale = retina_scale && window.devicePixelRatio ? window.devicePixelRatio : 1;
4772 var unscaledWidth = window.innerWidth - 20;
4773 var unscaledHeight = window.innerHeight - 20;
4774 screenWidth = unscaledWidth;
4775 screenHeight = unscaledHeight;
4776 canvas.width = unscaledWidth * resScale;
4777 canvas.height = unscaledHeight * resScale;
4778 canvas.style.width = unscaledWidth + 'px';
4779 canvas.style.height = unscaledHeight + 'px';
4780 if (resScale != 1) {
4781 ctx.scale(resScale, resScale);
4782 }
4783 xmin = Infinity;
4784 xmax = -Infinity;
4785 ymin = Infinity;
4786 ymax = -Infinity;
4787 hasPath = hasComputedPath = false;
4788 firstActiveSpan = -1;
4789 for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
4790 var recType = test[tIndex];
4791 if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
4792 console.log("unknown rec type: " + recType);
4793 throw "stop execution";
4794 }
4795 var records = test[tIndex + 2];
4796 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
4797 var fragType = records[recordIndex];
4798 if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_TYPE_LAST) {
4799 console.log("unknown in range frag type: " + fragType);
4800 throw "stop execution";
4801 }
4802 var frags = records[recordIndex + 1];
4803 var first = 0;
4804 var last = -1;
4805 var first2 = 0;
4806 var last2 = 0;
4807 switch (recType) {
4808 case REC_TYPE_COMPUTED:
4809 if (fragType == COMPUTED_SET_1 || fragType == COMPUTED_SET_2) {
4810 break;
4811 }
4812 hasComputedPath = true;
4813 case REC_TYPE_PATH:
caryclark54359292015-03-26 07:52:43 -07004814 first = 1;
caryclarkdac1d172014-06-17 05:15:38 -07004815 switch (fragType) {
4816 case PATH_LINE:
caryclark54359292015-03-26 07:52:43 -07004817 last = 5;
caryclarkdac1d172014-06-17 05:15:38 -07004818 break;
caryclark1049f122015-04-20 08:31:59 -07004819 case PATH_CONIC:
caryclarkdac1d172014-06-17 05:15:38 -07004820 case PATH_QUAD:
caryclark54359292015-03-26 07:52:43 -07004821 last = 7;
caryclarkdac1d172014-06-17 05:15:38 -07004822 break;
4823 case PATH_CUBIC:
caryclark54359292015-03-26 07:52:43 -07004824 last = 9;
caryclarkdac1d172014-06-17 05:15:38 -07004825 break;
4826 default:
4827 console.log("unknown " + (recType == REC_TYPE_PATH ? "REC_TYPE_PATH"
4828 : "REC_TYPE_COMPUTED") + " frag type:" + fragType);
4829 throw "stop execution";
4830 }
4831 if (recType == REC_TYPE_PATH) {
4832 hasPath = true;
4833 }
4834 break;
caryclark54359292015-03-26 07:52:43 -07004835 case REC_TYPE_PATH2:
4836 first = 1;
4837 switch (fragType) {
4838 case PATH_LINE:
4839 last = 5;
4840 break;
caryclark1049f122015-04-20 08:31:59 -07004841 case PATH_CONIC:
caryclark54359292015-03-26 07:52:43 -07004842 case PATH_QUAD:
4843 last = 7;
4844 break;
4845 case PATH_CUBIC:
4846 last = 9;
4847 break;
4848 default:
4849 console.log("unknown " + (recType == REC_TYPE_PATH2 ? "REC_TYPE_PATH2"
4850 : "REC_TYPE_COMPUTED") + " frag type:" + fragType);
4851 throw "stop execution";
4852 }
4853 if (recType == REC_TYPE_PATH2) {
4854 hasPath = true;
4855 }
4856 break;
caryclarkdac1d172014-06-17 05:15:38 -07004857 case REC_TYPE_ACTIVE:
4858 if (firstActiveSpan < 0) {
4859 firstActiveSpan = tIndex;
4860 }
4861 first = 1;
4862 switch (fragType) {
4863 case ACTIVE_LINE_SPAN:
4864 last = 5;
4865 break;
caryclark1049f122015-04-20 08:31:59 -07004866 case ACTIVE_CONIC_SPAN:
caryclarkdac1d172014-06-17 05:15:38 -07004867 case ACTIVE_QUAD_SPAN:
4868 last = 7;
4869 break;
4870 case ACTIVE_CUBIC_SPAN:
4871 last = 9;
4872 break;
4873 default:
4874 console.log("unknown REC_TYPE_ACTIVE frag type: " + fragType);
4875 throw "stop execution";
4876 }
4877 break;
4878 case REC_TYPE_ADD:
4879 switch (fragType) {
4880 case ADD_MOVETO:
4881 break;
4882 case ADD_LINETO:
4883 last = 4;
4884 break;
caryclark1049f122015-04-20 08:31:59 -07004885 case ADD_CONICTO:
caryclarkdac1d172014-06-17 05:15:38 -07004886 case ADD_QUADTO:
4887 last = 6;
4888 break;
4889 case ADD_CUBICTO:
4890 last = 8;
4891 break;
4892 case ADD_CLOSE:
4893 case ADD_FILL:
4894 break;
4895 default:
4896 console.log("unknown REC_TYPE_ADD frag type: " + fragType);
4897 throw "stop execution";
4898 }
4899 break;
caryclark54359292015-03-26 07:52:43 -07004900 case REC_TYPE_AFTERPART:
4901 switch (fragType) {
4902 case PATH_LINE:
4903 last = 4;
4904 break;
caryclark1049f122015-04-20 08:31:59 -07004905 case PATH_CONIC:
caryclark54359292015-03-26 07:52:43 -07004906 case PATH_QUAD:
4907 last = 6;
4908 break;
4909 case PATH_CUBIC:
4910 last = 8;
4911 break;
4912 default:
4913 console.log("unknown REC_TYPE_ACTIVEPART frag type: " + fragType);
4914 throw "stop execution";
4915 }
4916 break;
caryclarkdac1d172014-06-17 05:15:38 -07004917 case REC_TYPE_SECT:
4918 switch (fragType) {
4919 case INTERSECT_LINE:
4920 first = 1; last = 5; first2 = 8; last2 = 12;
4921 break;
4922 case INTERSECT_LINE_2:
4923 first = 1; last = 5; first2 = 11; last2 = 15;
4924 break;
4925 case INTERSECT_LINE_NO:
4926 first = 0; last = 4; first2 = 4; last2 = 8;
4927 break;
caryclark1049f122015-04-20 08:31:59 -07004928 case INTERSECT_CONIC_LINE:
4929 first = 1; last = 7; first2 = 11; last2 = 15;
4930 break;
caryclarkdac1d172014-06-17 05:15:38 -07004931 case INTERSECT_QUAD_LINE:
4932 first = 1; last = 7; first2 = 10; last2 = 14;
4933 break;
caryclark1049f122015-04-20 08:31:59 -07004934 case INTERSECT_CONIC_LINE_2:
4935 first = 1; last = 7; first2 = 14; last2 = 18;
4936 break;
caryclarkdac1d172014-06-17 05:15:38 -07004937 case INTERSECT_QUAD_LINE_2:
4938 first = 1; last = 7; first2 = 13; last2 = 17;
4939 break;
caryclark1049f122015-04-20 08:31:59 -07004940 case INTERSECT_CONIC_LINE_NO:
4941 first = 0; last = 6; first2 = 7; last2 = 11;
4942 break;
caryclarkdac1d172014-06-17 05:15:38 -07004943 case INTERSECT_QUAD_LINE_NO:
4944 first = 0; last = 6; first2 = 6; last2 = 10;
4945 break;
caryclark1049f122015-04-20 08:31:59 -07004946 case INTERSECT_CONIC:
4947 first = 1; last = 7; first2 = 11; last2 = 17;
4948 break;
caryclarkdac1d172014-06-17 05:15:38 -07004949 case INTERSECT_QUAD:
4950 first = 1; last = 7; first2 = 10; last2 = 16;
4951 break;
caryclark1049f122015-04-20 08:31:59 -07004952 case INTERSECT_CONIC_2:
4953 first = 1; last = 7; first2 = 14; last2 = 20;
4954 break;
caryclarkdac1d172014-06-17 05:15:38 -07004955 case INTERSECT_QUAD_2:
4956 first = 1; last = 7; first2 = 13; last2 = 19;
4957 break;
caryclark1049f122015-04-20 08:31:59 -07004958 case INTERSECT_CONIC_NO:
4959 first = 0; last = 6; first2 = 7; last2 = 13;
4960 break;
caryclarkdac1d172014-06-17 05:15:38 -07004961 case INTERSECT_QUAD_NO:
4962 first = 0; last = 6; first2 = 6; last2 = 12;
4963 break;
4964 case INTERSECT_SELF_CUBIC:
4965 first = 1; last = 9;
4966 break;
4967 case INTERSECT_SELF_CUBIC_NO:
4968 first = 0; last = 8;
4969 break;
4970 case INTERSECT_CUBIC_LINE:
4971 first = 1; last = 9; first2 = 12; last2 = 16;
4972 break;
4973 case INTERSECT_CUBIC_LINE_2:
4974 first = 1; last = 9; first2 = 15; last2 = 19;
4975 break;
4976 case INTERSECT_CUBIC_LINE_3:
4977 first = 1; last = 9; first2 = 18; last2 = 22;
4978 break;
4979 case INTERSECT_CUBIC_LINE_NO:
4980 first = 0; last = 8; first2 = 8; last2 = 12;
4981 break;
4982 case INTERSECT_CUBIC_QUAD:
4983 first = 1; last = 9; first2 = 12; last2 = 18;
4984 break;
4985 case INTERSECT_CUBIC_QUAD_2:
4986 first = 1; last = 9; first2 = 15; last2 = 21;
4987 break;
4988 case INTERSECT_CUBIC_QUAD_3:
4989 first = 1; last = 9; first2 = 18; last2 = 24;
4990 break;
4991 case INTERSECT_CUBIC_QUAD_4:
4992 first = 1; last = 9; first2 = 21; last2 = 27;
4993 break;
4994 case INTERSECT_CUBIC_QUAD_NO:
4995 first = 0; last = 8; first2 = 8; last2 = 14;
4996 break;
4997 case INTERSECT_CUBIC:
4998 first = 1; last = 9; first2 = 12; last2 = 20;
4999 break;
5000 case INTERSECT_CUBIC_2:
5001 first = 1; last = 9; first2 = 15; last2 = 23;
5002 break;
5003 case INTERSECT_CUBIC_3:
5004 first = 1; last = 9; first2 = 18; last2 = 26;
5005 break;
5006 case INTERSECT_CUBIC_4:
5007 first = 1; last = 9; first2 = 21; last2 = 29;
5008 break;
5009 case INTERSECT_CUBIC_NO:
5010 first = 0; last = 8; first2 = 8; last2 = 16;
5011 break;
5012 default:
5013 console.log("unknown REC_TYPE_SECT frag type: " + fragType);
5014 throw "stop execution";
5015 }
5016 break;
5017 default:
5018 continue;
5019 }
5020 for (var idx = first; idx < last; idx += 2) {
5021 xmin = Math.min(xmin, frags[idx]);
5022 xmax = Math.max(xmax, frags[idx]);
5023 ymin = Math.min(ymin, frags[idx + 1]);
5024 ymax = Math.max(ymax, frags[idx + 1]);
5025 }
5026 for (var idx = first2; idx < last2; idx += 2) {
5027 xmin = Math.min(xmin, frags[idx]);
5028 xmax = Math.max(xmax, frags[idx]);
5029 ymin = Math.min(ymin, frags[idx + 1]);
5030 ymax = Math.max(ymax, frags[idx + 1]);
5031 }
5032 }
5033 }
5034 var angleBounds = [Infinity, Infinity, -Infinity, -Infinity];
5035 for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
5036 var recType = test[tIndex];
5037 var records = test[tIndex + 2];
5038 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
5039 var fragType = records[recordIndex];
5040 var frags = records[recordIndex + 1];
5041 switch (recType) {
5042 case REC_TYPE_ACTIVE_OP:
5043 if (!draw_op) {
5044 break;
5045 }
5046 {
5047 var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
5048 curve_extremes(curve, angleBounds);
5049 }
5050 break;
5051 case REC_TYPE_ANGLE:
5052 if (!draw_angle) {
5053 break;
5054 }
caryclark54359292015-03-26 07:52:43 -07005055 {
caryclarkdac1d172014-06-17 05:15:38 -07005056 var curve = curvePartialByID(test, frags[0], frags[4], frags[5]);
5057 curve_extremes(curve, angleBounds);
5058 curve = curvePartialByID(test, frags[6], frags[10], frags[11]);
5059 curve_extremes(curve, angleBounds);
5060 curve = curvePartialByID(test, frags[12], frags[16], frags[17]);
5061 }
5062 break;
5063 case REC_TYPE_SORT:
5064 if (!draw_sort) {
5065 break;
5066 }
5067 if (fragType == SORT_UNARY || fragType == SORT_BINARY) {
5068 var curve = curvePartialByID(test, frags[0], frags[6], frags[8]);
5069 curve_extremes(curve, angleBounds);
5070 }
5071 break;
caryclark03b03ca2015-04-23 09:13:37 -07005072 case REC_TYPE_TOP:
5073 if (!draw_top) {
5074 break;
5075 }
5076 {
5077 var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
5078 curve_extremes(curve, angleBounds);
5079 }
5080 break;
caryclarkdac1d172014-06-17 05:15:38 -07005081 }
5082 }
5083 }
5084 xmin = Math.min(xmin, angleBounds[0]);
5085 ymin = Math.min(ymin, angleBounds[1]);
5086 xmax = Math.max(xmax, angleBounds[2]);
5087 ymax = Math.max(ymax, angleBounds[3]);
5088 setScale(xmin, xmax, ymin, ymax);
5089 if (hasPath == false && hasComputedPath == true && !draw_computed) {
caryclark1049f122015-04-20 08:31:59 -07005090 draw_computed = 7; // show quadratics, conics, and cubics
caryclarkdac1d172014-06-17 05:15:38 -07005091 }
5092 if (hasPath == true && hasComputedPath == false && draw_computed) {
5093 draw_computed = 0;
5094 }
5095}
5096
5097function curveByID(test, id) {
caryclark54359292015-03-26 07:52:43 -07005098 var tIndex = -3;
5099 while ((tIndex += 3) < test.length) {
caryclarkdac1d172014-06-17 05:15:38 -07005100 var recType = test[tIndex];
caryclark54359292015-03-26 07:52:43 -07005101 if (recType == REC_TYPE_OP) {
5102 continue;
5103 }
5104 if (recType != REC_TYPE_PATH) {
caryclarkdac1d172014-06-17 05:15:38 -07005105 return [];
5106 }
5107 var records = test[tIndex + 2];
5108 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
5109 var fragType = records[recordIndex];
5110 var frags = records[recordIndex + 1];
5111 if (frags[0] == id) {
5112 switch (fragType) {
caryclark54359292015-03-26 07:52:43 -07005113 case PATH_LINE:
caryclarkdac1d172014-06-17 05:15:38 -07005114 return [frags[1], frags[2], frags[3], frags[4]];
caryclark54359292015-03-26 07:52:43 -07005115 case PATH_QUAD:
caryclarkdac1d172014-06-17 05:15:38 -07005116 return [frags[1], frags[2], frags[3], frags[4],
5117 frags[5], frags[6]];
caryclark1049f122015-04-20 08:31:59 -07005118 case PATH_CONIC:
5119 return [frags[1], frags[2], frags[3], frags[4],
5120 frags[5], frags[6], frags[7]];
caryclark54359292015-03-26 07:52:43 -07005121 case PATH_CUBIC:
caryclarkdac1d172014-06-17 05:15:38 -07005122 return [frags[1], frags[2], frags[3], frags[4],
5123 frags[5], frags[6], frags[7], frags[8]];
5124 }
5125 }
5126 }
caryclarkdac1d172014-06-17 05:15:38 -07005127 }
5128 return [];
5129}
5130
5131function curvePartialByID(test, id, t0, t1) {
caryclark54359292015-03-26 07:52:43 -07005132 var tIndex = -3;
5133 while ((tIndex += 3) < test.length) {
caryclarkdac1d172014-06-17 05:15:38 -07005134 var recType = test[tIndex];
caryclark54359292015-03-26 07:52:43 -07005135 if (recType == REC_TYPE_OP) {
5136 continue;
5137 }
5138 if (recType != REC_TYPE_PATH) {
caryclarkdac1d172014-06-17 05:15:38 -07005139 return [];
5140 }
5141 var records = test[tIndex + 2];
5142 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
5143 var fragType = records[recordIndex];
5144 var frags = records[recordIndex + 1];
5145 if (frags[0] == id) {
5146 switch (fragType) {
caryclark54359292015-03-26 07:52:43 -07005147 case PATH_LINE:
caryclarkdac1d172014-06-17 05:15:38 -07005148 return linePartial(frags[1], frags[2], frags[3], frags[4], t0, t1);
caryclark54359292015-03-26 07:52:43 -07005149 case PATH_QUAD:
caryclarkdac1d172014-06-17 05:15:38 -07005150 return quadPartial(frags[1], frags[2], frags[3], frags[4],
5151 frags[5], frags[6], t0, t1);
caryclark1049f122015-04-20 08:31:59 -07005152 case PATH_CONIC:
5153 return conicPartial(frags[1], frags[2], frags[3], frags[4],
5154 frags[5], frags[6], frags[7], t0, t1);
caryclark54359292015-03-26 07:52:43 -07005155 case PATH_CUBIC:
caryclarkdac1d172014-06-17 05:15:38 -07005156 return cubicPartial(frags[1], frags[2], frags[3], frags[4],
5157 frags[5], frags[6], frags[7], frags[8], t0, t1);
5158 }
5159 }
5160 }
caryclarkdac1d172014-06-17 05:15:38 -07005161 }
5162 return [];
5163}
5164
5165function idByCurve(test, frag, type) {
caryclark54359292015-03-26 07:52:43 -07005166 var tIndex = 0;
caryclarkdac1d172014-06-17 05:15:38 -07005167 while (tIndex < test.length) {
5168 var recType = test[tIndex];
caryclark54359292015-03-26 07:52:43 -07005169 if (recType != REC_TYPE_PATH) {
5170 ++tIndex;
5171 continue;
caryclarkdac1d172014-06-17 05:15:38 -07005172 }
5173 var records = test[tIndex + 2];
5174 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
5175 var fragType = records[recordIndex];
5176 var frags = records[recordIndex + 1];
caryclark54359292015-03-26 07:52:43 -07005177 if (frag.length != frags.length - 1) {
5178 continue;
5179 }
caryclarkdac1d172014-06-17 05:15:38 -07005180 switch (fragType) {
caryclark54359292015-03-26 07:52:43 -07005181 case PATH_LINE:
caryclarkdac1d172014-06-17 05:15:38 -07005182 if (frag[0] != frags[1] || frag[1] != frags[2]
5183 || frag[2] != frags[3] || frag[3] != frags[4]) {
5184 continue;
5185 }
5186 return frags[0];
caryclark54359292015-03-26 07:52:43 -07005187 case PATH_QUAD:
caryclarkdac1d172014-06-17 05:15:38 -07005188 if (frag[0] != frags[1] || frag[1] != frags[2]
5189 || frag[2] != frags[3] || frag[3] != frags[4]
5190 || frag[4] != frags[5] || frag[5] != frags[6]) {
5191 continue;
5192 }
5193 return frags[0];
caryclark1049f122015-04-20 08:31:59 -07005194 case PATH_CONIC:
5195 if (frag[0] != frags[1] || frag[1] != frags[2]
5196 || frag[2] != frags[3] || frag[3] != frags[4]
5197 || frag[4] != frags[5] || frag[5] != frags[6]
5198 || frag[6] != frags[7]) {
5199 continue;
5200 }
5201 return frags[0];
caryclark54359292015-03-26 07:52:43 -07005202 case PATH_CUBIC:
caryclarkdac1d172014-06-17 05:15:38 -07005203 if (frag[0] != frags[1] || frag[1] != frags[2]
5204 || frag[2] != frags[3] || frag[3] != frags[4]
5205 || frag[4] != frags[5] || frag[5] != frags[6]
5206 || frag[6] != frags[7] || frag[7] != frags[8]) {
5207 continue;
5208 }
5209 return frags[0];
5210 }
5211 }
5212 ++tIndex;
5213 }
5214 return -1;
5215}
5216
5217function curve_extremes(curve, bounds) {
caryclark1049f122015-04-20 08:31:59 -07005218 var length = curve.length == 7 ? 6 : curve.length;
caryclarkdac1d172014-06-17 05:15:38 -07005219 for (var index = 0; index < curve.length; index += 2) {
5220 var x = curve[index];
5221 var y = curve[index + 1];
5222 bounds[0] = Math.min(bounds[0], x);
5223 bounds[1] = Math.min(bounds[1], y);
5224 bounds[2] = Math.max(bounds[2], x);
5225 bounds[3] = Math.max(bounds[3], y);
5226 }
5227}
5228
5229function setScale(x0, x1, y0, y1) {
5230 var srcWidth = x1 - x0;
5231 var srcHeight = y1 - y0;
5232 var usableWidth = screenWidth;
5233 var xDigits = Math.ceil(Math.log(Math.abs(xmax)) / Math.log(10));
5234 var yDigits = Math.ceil(Math.log(Math.abs(ymax)) / Math.log(10));
5235 usableWidth -= (xDigits + yDigits) * 10;
5236 usableWidth -= decimal_places * 10;
5237 if (draw_legend) {
5238 usableWidth -= 40;
5239 }
5240 var hscale = usableWidth / srcWidth;
5241 var vscale = screenHeight / srcHeight;
5242 scale = Math.min(hscale, vscale);
5243 var invScale = 1 / scale;
5244 var sxmin = x0 - invScale * 5;
5245 var symin = y0 - invScale * 10;
5246 var sxmax = x1 + invScale * (6 * decimal_places + 10);
5247 var symax = y1 + invScale * 10;
5248 srcWidth = sxmax - sxmin;
5249 srcHeight = symax - symin;
5250 hscale = usableWidth / srcWidth;
5251 vscale = screenHeight / srcHeight;
5252 scale = Math.min(hscale, vscale);
5253 srcLeft = sxmin;
5254 srcTop = symin;
5255}
5256
5257function drawArc(curve, op, from, to) {
5258 var type = PATH_LINE + (curve.length / 2 - 2);
5259 var pt = pointAtT(curve, type, op ? 0.4 : 0.6);
5260 var dy = pt.y - curve[1];
5261 var dx = pt.x - curve[0];
5262 var dist = Math.sqrt(dy * dy + dx * dx);
5263 var _dist = dist * scale;
5264 var angle = Math.atan2(dy, dx);
5265 var _px = (curve[0] - srcLeft) * scale;
5266 var _py = (curve[1] - srcTop) * scale;
5267 var divisor = 4;
5268 var endDist;
5269 do {
5270 var ends = [];
5271 for (var index = -1; index <= 1; index += 2) {
5272 var px = Math.cos(index * Math.PI / divisor);
5273 var py = Math.sin(index * Math.PI / divisor);
5274 ends.push(px);
5275 ends.push(py);
5276 }
5277 var endDx = (ends[2] - ends[0]) * scale * dist;
5278 var endDy = (ends[3] - ends[1]) * scale * dist;
5279 endDist = Math.sqrt(endDx * endDx + endDy * endDy);
5280 if (endDist < 100) {
5281 break;
5282 }
5283 divisor *= 2;
5284 } while (true);
5285 if (endDist < 30) {
5286 return;
5287 }
5288 if (op) {
5289 divisor *= 2;
5290 }
5291 ctx.strokeStyle = op ? "rgba(210,0,45, 0.4)" : "rgba(90,90,90, 0.5)";
5292 ctx.beginPath();
5293 ctx.arc(_px, _py, _dist, angle - Math.PI / divisor, angle + Math.PI / divisor, false);
5294 ctx.stroke();
5295 var saveAlign = ctx.textAlign;
5296 var saveStyle = ctx.fillStyle;
5297 var saveFont = ctx.font;
5298 ctx.textAlign = "center";
5299 ctx.fillStyle = "black";
5300 ctx.font = "normal 24px Arial";
5301 divisor *= 0.8;
5302 for (var index = -1; index <= 1; index += 2) {
5303 var px = curve[0] + Math.cos(angle + index * Math.PI / divisor) * dist;
5304 var py = curve[1] + Math.sin(angle + index * Math.PI / divisor) * dist;
5305 var _px = (px - srcLeft) * scale;
5306 var _py = (py - srcTop) * scale;
5307 ctx.fillText(index < 0 ? to.toString() : from.toString(), _px, _py + 8);
5308 }
5309 ctx.textAlign = saveAlign;
5310 ctx.fillStyle = saveStyle;
5311 ctx.font = saveFont;
5312}
5313
5314function drawPoint(px, py, end) {
caryclark1049f122015-04-20 08:31:59 -07005315 var length = drawnPts.length == 7 ? 6 : drawnPts.length;
5316 for (var pts = 0; pts < length; pts += 2) {
caryclarkdac1d172014-06-17 05:15:38 -07005317 var x = drawnPts[pts];
5318 var y = drawnPts[pts + 1];
5319 if (px == x && py == y) {
5320 return;
5321 }
5322 }
5323 drawnPts.push(px);
5324 drawnPts.push(py);
5325 var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
5326 var _px = (px - srcLeft) * scale;
5327 var _py = (py - srcTop) * scale;
5328 ctx.beginPath();
5329 ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
5330 ctx.closePath();
5331 if (end) {
5332 ctx.fill();
5333 } else {
5334 ctx.stroke();
5335 }
5336 if (debug_xy) {
5337 ctx.textAlign = "left";
5338 ctx.fillText(label, _px + 5, _py);
5339 }
5340}
5341
caryclark1049f122015-04-20 08:31:59 -07005342function coordCount(curveType) {
5343 switch (curveType) {
5344 case PATH_LINE:
5345 return 4;
5346 case PATH_QUAD:
5347 return 6;
5348 case PATH_CONIC:
5349 return 6;
5350 case PATH_CUBIC:
5351 return 8;
5352 }
5353 return -1;
5354}
5355
caryclarkdac1d172014-06-17 05:15:38 -07005356function drawPoints(ptArray, curveType, drawControls) {
caryclark1049f122015-04-20 08:31:59 -07005357 var count = coordCount(curveType);
caryclarkdac1d172014-06-17 05:15:38 -07005358 for (var idx = 0; idx < count; idx += 2) {
5359 if (!drawControls && idx != 0 && idx != count - 2) {
5360 continue;
5361 }
5362 drawPoint(ptArray[idx], ptArray[idx + 1], idx == 0 || idx == count - 2);
5363 }
5364}
5365
5366function drawControlLines(curve, curveType, drawEnd) {
5367 if (curveType == PATH_LINE) {
5368 return;
5369 }
5370 ctx.strokeStyle = "rgba(0,0,0, 0.3)";
5371 drawLine(curve[0], curve[1], curve[2], curve[3]);
5372 drawLine(curve[2], curve[3], curve[4], curve[5]);
5373 if (curveType == PATH_CUBIC) {
5374 drawLine(curve[4], curve[5], curve[6], curve[7]);
5375 if (drawEnd > 1) {
5376 drawLine(curve[6], curve[7], curve[0], curve[1]);
5377 if (drawEnd > 2) {
5378 drawLine(curve[0], curve[1], curve[4], curve[5]);
5379 drawLine(curve[6], curve[7], curve[2], curve[3]);
5380 }
5381 }
5382 } else if (drawEnd > 1) {
5383 drawLine(curve[4], curve[5], curve[0], curve[1]);
5384 }
5385}
5386
5387function pointAtT(curve, curveType, t) {
5388 var xy = {};
5389 switch (curveType) {
5390 case PATH_LINE:
5391 var a = 1 - t;
5392 var b = t;
5393 xy.x = a * curve[0] + b * curve[2];
5394 xy.y = a * curve[1] + b * curve[3];
5395 break;
5396 case PATH_QUAD:
5397 var one_t = 1 - t;
5398 var a = one_t * one_t;
5399 var b = 2 * one_t * t;
5400 var c = t * t;
5401 xy.x = a * curve[0] + b * curve[2] + c * curve[4];
5402 xy.y = a * curve[1] + b * curve[3] + c * curve[5];
5403 break;
caryclark1049f122015-04-20 08:31:59 -07005404 case PATH_CONIC:
5405 var one_t = 1 - t;
5406 var a = one_t * one_t;
5407 var b = 2 * one_t * t;
5408 var c = t * t;
5409 xy.x = a * curve[0] + b * curve[2] * curve[6] + c * curve[4];
5410 xy.y = a * curve[1] + b * curve[3] * curve[6] + c * curve[5];
5411 var d = a + b * curve[6] + c;
5412 xy.x /= d;
5413 xy.y /= d;
5414 break;
caryclarkdac1d172014-06-17 05:15:38 -07005415 case PATH_CUBIC:
5416 var one_t = 1 - t;
5417 var one_t2 = one_t * one_t;
5418 var a = one_t2 * one_t;
5419 var b = 3 * one_t2 * t;
5420 var t2 = t * t;
5421 var c = 3 * one_t * t2;
5422 var d = t2 * t;
5423 xy.x = a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
5424 xy.y = a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
5425 break;
5426 }
5427 return xy;
5428}
5429
5430function drawPointAtT(curve, curveType) {
5431 var x, y;
5432 var xy = pointAtT(curve, curveType, curveT);
5433 drawPoint(xy.x, xy.y, true);
5434 if (!draw_intersectT) {
5435 return;
5436 }
5437 ctx.fillStyle = "red";
5438 drawTAtPointUp(xy.x, xy.y, curveT);
5439}
5440
5441function drawTAtPointUp(px, py, t) {
5442 var label = t.toFixed(decimal_places);
5443 var _px = (px - srcLeft)* scale;
5444 var _py = (py - srcTop) * scale;
5445 ctx.fillText(label, _px + 5, _py - 10);
5446}
5447
5448function drawTAtPointDown(px, py, t) {
5449 var label = t.toFixed(decimal_places);
5450 var _px = (px - srcLeft)* scale;
5451 var _py = (py - srcTop) * scale;
5452 ctx.fillText(label, _px + 5, _py + 10);
5453}
5454
5455function alreadyDrawnLine(x1, y1, x2, y2) {
5456 if (collect_bounds) {
5457 if (focus_enabled) {
5458 focusXmin = Math.min(focusXmin, x1, x2);
5459 focusYmin = Math.min(focusYmin, y1, y2);
5460 focusXmax = Math.max(focusXmax, x1, x2);
5461 focusYmax = Math.max(focusYmax, y1, y2);
5462 }
5463 return true;
5464 }
5465 for (var pts = 0; pts < drawnLines.length; pts += 4) {
5466 if (x1 == drawnLines[pts] && y1 == drawnLines[pts + 1]
5467 && x2 == drawnLines[pts + 2] && y2 == drawnLines[pts + 3]) {
5468 return true;
5469 }
5470 }
5471 drawnLines.push(x1);
5472 drawnLines.push(y1);
5473 drawnLines.push(x2);
5474 drawnLines.push(y2);
5475 return false;
5476}
5477
5478function drawLine(x1, y1, x2, y2) {
5479 if (alreadyDrawnLine(x1, y1, x2, y2)) {
5480 return;
5481 }
5482 ctx.beginPath();
5483 ctx.moveTo((x1 - srcLeft) * scale,
5484 (y1 - srcTop) * scale);
5485 ctx.lineTo((x2 - srcLeft) * scale,
5486 (y2 - srcTop) * scale);
5487 ctx.stroke();
5488}
5489
5490function linePartial(x1, y1, x2, y2, t1, t2) {
5491 var dx = x1 - x2;
5492 var dy = y1 - y2;
5493 var array = [
5494 x1 - t1 * dx,
5495 y1 - t1 * dy,
5496 x1 - t2 * dx,
5497 y1 - t2 * dy
5498 ];
5499 return array;
5500}
5501
5502function drawLinePartial(x1, y1, x2, y2, t1, t2) {
5503 var a = linePartial(x1, y1, x2, y2, t1, t2);
5504 var ax = a[0];
5505 var ay = a[1];
5506 var bx = a[2];
5507 var by = a[3];
5508 if (alreadyDrawnLine(ax, ay, bx, by)) {
5509 return;
5510 }
5511 ctx.beginPath();
5512 ctx.moveTo((ax - srcLeft) * scale,
5513 (ay - srcTop) * scale);
5514 ctx.lineTo((bx - srcLeft) * scale,
5515 (by - srcTop) * scale);
5516 ctx.stroke();
5517}
5518
5519function alreadyDrawnQuad(x1, y1, x2, y2, x3, y3) {
5520 if (collect_bounds) {
5521 if (focus_enabled) {
5522 focusXmin = Math.min(focusXmin, x1, x2, x3);
5523 focusYmin = Math.min(focusYmin, y1, y2, y3);
5524 focusXmax = Math.max(focusXmax, x1, x2, x3);
5525 focusYmax = Math.max(focusYmax, y1, y2, y3);
5526 }
5527 return true;
5528 }
5529 for (var pts = 0; pts < drawnQuads.length; pts += 6) {
5530 if (x1 == drawnQuads[pts] && y1 == drawnQuads[pts + 1]
5531 && x2 == drawnQuads[pts + 2] && y2 == drawnQuads[pts + 3]
5532 && x3 == drawnQuads[pts + 4] && y3 == drawnQuads[pts + 5]) {
5533 return true;
5534 }
5535 }
5536 drawnQuads.push(x1);
5537 drawnQuads.push(y1);
5538 drawnQuads.push(x2);
5539 drawnQuads.push(y2);
5540 drawnQuads.push(x3);
5541 drawnQuads.push(y3);
5542 return false;
5543}
5544
5545function drawQuad(x1, y1, x2, y2, x3, y3) {
5546 if (alreadyDrawnQuad(x1, y1, x2, y2, x3, y3)) {
5547 return;
5548 }
5549 ctx.beginPath();
5550 ctx.moveTo((x1 - srcLeft) * scale,
5551 (y1 - srcTop) * scale);
5552 ctx.quadraticCurveTo((x2 - srcLeft) * scale,
5553 (y2 - srcTop) * scale,
5554 (x3 - srcLeft) * scale,
5555 (y3 - srcTop) * scale);
5556 ctx.stroke();
5557}
5558
5559function interp(A, B, t) {
5560 return A + (B - A) * t;
5561}
5562
5563function interp_quad_coords(x1, x2, x3, t)
5564{
5565 var ab = interp(x1, x2, t);
5566 var bc = interp(x2, x3, t);
5567 var abc = interp(ab, bc, t);
5568 return abc;
5569}
5570
5571function quadPartial(x1, y1, x2, y2, x3, y3, t1, t2) {
5572 var ax = interp_quad_coords(x1, x2, x3, t1);
5573 var ay = interp_quad_coords(y1, y2, y3, t1);
5574 var dx = interp_quad_coords(x1, x2, x3, (t1 + t2) / 2);
5575 var dy = interp_quad_coords(y1, y2, y3, (t1 + t2) / 2);
5576 var cx = interp_quad_coords(x1, x2, x3, t2);
5577 var cy = interp_quad_coords(y1, y2, y3, t2);
5578 var bx = 2*dx - (ax + cx)/2;
5579 var by = 2*dy - (ay + cy)/2;
5580 var array = [
5581 ax, ay, bx, by, cx, cy
5582 ];
5583 return array;
5584}
5585
5586function drawQuadPartial(x1, y1, x2, y2, x3, y3, t1, t2) {
5587 var a = quadPartial(x1, y1, x2, y2, x3, y3, t1, t2);
5588 var ax = a[0];
5589 var ay = a[1];
5590 var bx = a[2];
5591 var by = a[3];
5592 var cx = a[4];
5593 var cy = a[5];
5594 if (alreadyDrawnQuad(ax, ay, bx, by, cx, cy)) {
5595 return;
5596 }
5597 ctx.beginPath();
5598 ctx.moveTo((ax - srcLeft) * scale,
5599 (ay - srcTop) * scale);
5600 ctx.quadraticCurveTo((bx - srcLeft) * scale,
5601 (by - srcTop) * scale,
5602 (cx - srcLeft) * scale,
5603 (cy - srcTop) * scale);
5604 ctx.stroke();
5605}
5606
caryclark1049f122015-04-20 08:31:59 -07005607function alreadyDrawnConic(x1, y1, x2, y2, x3, y3, w) {
5608 if (collect_bounds) {
5609 if (focus_enabled) {
5610 focusXmin = Math.min(focusXmin, x1, x2, x3);
5611 focusYmin = Math.min(focusYmin, y1, y2, y3);
5612 focusXmax = Math.max(focusXmax, x1, x2, x3);
5613 focusYmax = Math.max(focusYmax, y1, y2, y3);
5614 }
5615 return true;
5616 }
5617 for (var pts = 0; pts < drawnConics.length; pts += 8) {
5618 if (x1 == drawnConics[pts] && y1 == drawnCubics[pts + 1]
5619 && x2 == drawnCubics[pts + 2] && y2 == drawnCubics[pts + 3]
5620 && x3 == drawnCubics[pts + 4] && y3 == drawnCubics[pts + 5]
5621 && w == drawnCubics[pts + 6]) {
5622 return true;
5623 }
5624 }
5625 drawnConics.push(x1);
5626 drawnConics.push(y1);
5627 drawnConics.push(x2);
5628 drawnConics.push(y2);
5629 drawnConics.push(x3);
5630 drawnConics.push(y3);
5631 drawnCubics.push(w);
5632 return false;
5633}
5634
5635var kMaxConicToQuadPOW2 = 5;
5636
5637function computeQuadPOW2(curve, tol) {
5638 var a = curve[6] - 1;
5639 var k = a / (4 * (2 + a));
5640 var x = k * (curve[0] - 2 * curve[2] + curve[4]);
5641 var y = k * (curve[1] - 2 * curve[3] + curve[5]);
5642
5643 var error = Math.sqrt(x * x + y * y);
5644 var pow2;
5645 for (pow2 = 0; pow2 < kMaxConicToQuadPOW2; ++pow2) {
5646 if (error <= tol) {
5647 break;
5648 }
5649 error *= 0.25;
5650 }
5651 return pow2;
5652}
5653
5654function subdivide_w_value(w) {
5655 return Math.sqrt(0.5 + w * 0.5);
5656}
5657
5658function chop(curve, part1, part2) {
5659 var w = curve[6];
5660 var scale = 1 / (1 + w);
5661 part1[0] = curve[0];
5662 part1[1] = curve[1];
5663 part1[2] = (curve[0] + curve[2] * w) * scale;
5664 part1[3] = (curve[1] + curve[3] * w) * scale;
5665 part1[4] = part2[0] = (curve[0] + (curve[2] * w) * 2 + curve[4]) * scale * 0.5;
5666 part1[5] = part2[1] = (curve[1] + (curve[3] * w) * 2 + curve[5]) * scale * 0.5;
5667 part2[2] = (curve[2] * w + curve[4]) * scale;
5668 part2[3] = (curve[3] * w + curve[5]) * scale;
5669 part2[4] = curve[4];
5670 part2[5] = curve[5];
5671 part1[6] = part2[6] = subdivide_w_value(w);
5672}
5673
5674function subdivide(curve, level, pts) {
5675 if (0 == level) {
5676 pts.push(curve[2]);
5677 pts.push(curve[3]);
5678 pts.push(curve[4]);
5679 pts.push(curve[5]);
5680 } else {
5681 var part1 = [], part2 = [];
5682 chop(curve, part1, part2);
5683 --level;
5684 subdivide(part1, level, pts);
5685 subdivide(part2, level, pts);
5686 }
5687}
5688
5689function chopIntoQuadsPOW2(curve, pow2, pts) {
5690 subdivide(curve, pow2, pts);
5691 return 1 << pow2;
5692}
5693
5694function drawConicWithQuads(x1, y1, x2, y2, x3, y3, w) {
5695 if (alreadyDrawnConic(x1, y1, x2, y2, x3, y3, w)) {
5696 return;
5697 }
5698 ctx.beginPath();
5699 ctx.moveTo((x1 - srcLeft) * scale,
5700 (y1 - srcTop) * scale);
5701 var tol = 1 / scale;
5702 var curve = [x1, y1, x2, y2, x3, y3, w];
5703 var pow2 = computeQuadPOW2(curve, tol);
5704 var pts = [];
5705 chopIntoQuadsPOW2(curve, pow2, pts);
5706 for (var i = 0; i < pts.length; i += 4) {
5707 ctx.quadraticCurveTo(
5708 (pts[i + 0] - srcLeft) * scale, (pts[i + 1] - srcTop) * scale,
5709 (pts[i + 2] - srcLeft) * scale, (pts[i + 3] - srcTop) * scale);
5710 }
5711 ctx.stroke();
5712}
5713
5714function conic_eval_numerator(x1, x2, x3, w, t) {
5715 var src2w = x2 * w;
5716 var C = x1;
5717 var A = x3 - 2 * src2w + C;
5718 var B = 2 * (src2w - C);
5719 return (A * t + B) * t + C;
5720}
5721
5722
5723function conic_eval_denominator(w, t) {
5724 var B = 2 * (w - 1);
5725 var C = 1;
5726 var A = -B;
5727 return (A * t + B) * t + C;
5728}
5729
5730function conicPartial(x1, y1, x2, y2, x3, y3, w, t1, t2) {
5731 var ax = conic_eval_numerator(x1, x2, x3, w, t1);
5732 var ay = conic_eval_numerator(y1, y2, y3, w, t1);
5733 var az = conic_eval_denominator(w, t1);
5734 var midT = (t1 + t2) / 2;
5735 var dx = conic_eval_numerator(x1, x2, x3, w, midT);
5736 var dy = conic_eval_numerator(y1, y2, y3, w, midT);
5737 var dz = conic_eval_denominator(w, midT);
5738 var cx = conic_eval_numerator(x1, x2, x3, w, t2);
5739 var cy = conic_eval_numerator(y1, y2, y3, w, t2);
5740 var cz = conic_eval_denominator(w, t2);
5741 var bx = 2 * dx - (ax + cx) / 2;
5742 var by = 2 * dy - (ay + cy) / 2;
5743 var bz = 2 * dz - (az + cz) / 2;
5744 var dt = t2 - t1;
5745 var dt_1 = 1 - dt;
5746 var partW = (1 + dt * (w - 1)) / Math.sqrt(dt * dt + 2 * dt * dt_1 * w + dt_1 * dt_1);
5747 var array = [
5748 ax / az, ay / az, bx / bz, by / bz, cx / cz, cy / cz, partW
5749 ];
5750 return array;
5751}
5752
5753function drawConicPartial(x1, y1, x2, y2, x3, y3, w, t1, t2) {
5754 var a = conicPartial(x1, y1, x2, y2, x3, y3, w, t1, t2);
5755 var ax = a[0];
5756 var ay = a[1];
5757 var bx = a[2];
5758 var by = a[3];
5759 var cx = a[4];
5760 var cy = a[5];
5761 var w_ = a[6];
5762 drawConicWithQuads(ax, ay, bx, by, cx, cy, w_);
5763}
5764
caryclarkdac1d172014-06-17 05:15:38 -07005765function alreadyDrawnCubic(x1, y1, x2, y2, x3, y3, x4, y4) {
5766 if (collect_bounds) {
5767 if (focus_enabled) {
5768 focusXmin = Math.min(focusXmin, x1, x2, x3, x4);
5769 focusYmin = Math.min(focusYmin, y1, y2, y3, y4);
5770 focusXmax = Math.max(focusXmax, x1, x2, x3, x4);
5771 focusYmax = Math.max(focusYmax, y1, y2, y3, y4);
5772 }
5773 return true;
5774 }
5775 for (var pts = 0; pts < drawnCubics.length; pts += 8) {
5776 if (x1 == drawnCubics[pts] && y1 == drawnCubics[pts + 1]
5777 && x2 == drawnCubics[pts + 2] && y2 == drawnCubics[pts + 3]
5778 && x3 == drawnCubics[pts + 4] && y3 == drawnCubics[pts + 5]
5779 && x4 == drawnCubics[pts + 6] && y4 == drawnCubics[pts + 7]) {
5780 return true;
5781 }
5782 }
5783 drawnCubics.push(x1);
5784 drawnCubics.push(y1);
5785 drawnCubics.push(x2);
5786 drawnCubics.push(y2);
5787 drawnCubics.push(x3);
5788 drawnCubics.push(y3);
5789 drawnCubics.push(x4);
5790 drawnCubics.push(y4);
5791 return false;
5792}
5793
5794function drawCubic(x1, y1, x2, y2, x3, y3, x4, y4) {
5795 if (alreadyDrawnCubic(x1, y1, x2, y2, x3, y3, x4, y4)) {
5796 return;
5797 }
5798 ctx.beginPath();
5799 ctx.moveTo((x1 - srcLeft) * scale,
5800 (y1 - srcTop) * scale);
5801 ctx.bezierCurveTo((x2 - srcLeft) * scale,
5802 (y2 - srcTop) * scale,
5803 (x3 - srcLeft) * scale,
5804 (y3 - srcTop) * scale,
5805 (x4 - srcLeft) * scale,
5806 (y4 - srcTop) * scale);
5807 ctx.stroke();
5808}
5809
5810function interp_cubic_coords(x1, x2, x3, x4, t)
5811{
5812 var ab = interp(x1, x2, t);
5813 var bc = interp(x2, x3, t);
5814 var cd = interp(x3, x4, t);
5815 var abc = interp(ab, bc, t);
5816 var bcd = interp(bc, cd, t);
5817 var abcd = interp(abc, bcd, t);
5818 return abcd;
5819}
5820
5821function cubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
5822 var ax = interp_cubic_coords(x1, x2, x3, x4, t1);
5823 var ay = interp_cubic_coords(y1, y2, y3, y4, t1);
5824 var ex = interp_cubic_coords(x1, x2, x3, x4, (t1*2+t2)/3);
5825 var ey = interp_cubic_coords(y1, y2, y3, y4, (t1*2+t2)/3);
5826 var fx = interp_cubic_coords(x1, x2, x3, x4, (t1+t2*2)/3);
5827 var fy = interp_cubic_coords(y1, y2, y3, y4, (t1+t2*2)/3);
5828 var dx = interp_cubic_coords(x1, x2, x3, x4, t2);
5829 var dy = interp_cubic_coords(y1, y2, y3, y4, t2);
5830 var mx = ex * 27 - ax * 8 - dx;
5831 var my = ey * 27 - ay * 8 - dy;
5832 var nx = fx * 27 - ax - dx * 8;
5833 var ny = fy * 27 - ay - dy * 8;
5834 var bx = (mx * 2 - nx) / 18;
5835 var by = (my * 2 - ny) / 18;
5836 var cx = (nx * 2 - mx) / 18;
5837 var cy = (ny * 2 - my) / 18;
5838 var array = [
5839 ax, ay, bx, by, cx, cy, dx, dy
5840 ];
5841 return array;
5842}
5843
5844function drawCubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
5845 var a = cubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
5846 var ax = a[0];
5847 var ay = a[1];
5848 var bx = a[2];
5849 var by = a[3];
5850 var cx = a[4];
5851 var cy = a[5];
5852 var dx = a[6];
5853 var dy = a[7];
5854 if (alreadyDrawnCubic(ax, ay, bx, by, cx, cy, dx, dy)) {
5855 return;
5856 }
5857 ctx.beginPath();
5858 ctx.moveTo((ax - srcLeft) * scale,
5859 (ay - srcTop) * scale);
5860 ctx.bezierCurveTo((bx - srcLeft) * scale,
5861 (by - srcTop) * scale,
5862 (cx - srcLeft) * scale,
5863 (cy - srcTop) * scale,
5864 (dx - srcLeft) * scale,
5865 (dy - srcTop) * scale);
5866 ctx.stroke();
5867}
5868
5869function drawCurve(c) {
5870 switch (c.length) {
5871 case 4:
5872 drawLine(c[0], c[1], c[2], c[3]);
5873 break;
5874 case 6:
5875 drawQuad(c[0], c[1], c[2], c[3], c[4], c[5]);
5876 break;
caryclark1049f122015-04-20 08:31:59 -07005877 case 7:
5878 drawConicWithQuads(c[0], c[1], c[2], c[3], c[4], c[5], c[6]);
5879 break;
caryclarkdac1d172014-06-17 05:15:38 -07005880 case 8:
5881 drawCubic(c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7]);
5882 break;
5883 }
5884}
5885
5886function boundsWidth(pts) {
5887 var min = pts[0];
5888 var max = pts[0];
caryclark1049f122015-04-20 08:31:59 -07005889 var length = pts.length == 7 ? 6 : pts.length;
5890 for (var idx = 2; idx < length; idx += 2) {
caryclarkdac1d172014-06-17 05:15:38 -07005891 min = Math.min(min, pts[idx]);
5892 max = Math.max(max, pts[idx]);
5893 }
5894 return max - min;
5895}
5896
5897function boundsHeight(pts) {
5898 var min = pts[1];
5899 var max = pts[1];
caryclark1049f122015-04-20 08:31:59 -07005900 var length = pts.length == 7 ? 6 : pts.length;
5901 for (var idx = 3; idx < length; idx += 2) {
caryclarkdac1d172014-06-17 05:15:38 -07005902 min = Math.min(min, pts[idx]);
5903 max = Math.max(max, pts[idx]);
5904 }
5905 return max - min;
5906}
5907
5908function tangent(pts) {
5909 var dx = pts[2] - pts[0];
5910 var dy = pts[3] - pts[1];
5911 if (dx == 0 && dy == 0 && pts.length > 4) {
5912 dx = pts[4] - pts[0];
5913 dy = pts[5] - pts[1];
caryclark1049f122015-04-20 08:31:59 -07005914 if (dx == 0 && dy == 0 && pts.length == 8) {
caryclarkdac1d172014-06-17 05:15:38 -07005915 dx = pts[6] - pts[0];
5916 dy = pts[7] - pts[1];
5917 }
5918 }
5919 return Math.atan2(-dy, dx);
5920}
5921
5922function hodograph(cubic) {
5923 var hodo = [];
5924 hodo[0] = 3 * (cubic[2] - cubic[0]);
5925 hodo[1] = 3 * (cubic[3] - cubic[1]);
5926 hodo[2] = 3 * (cubic[4] - cubic[2]);
5927 hodo[3] = 3 * (cubic[5] - cubic[3]);
5928 hodo[4] = 3 * (cubic[6] - cubic[4]);
5929 hodo[5] = 3 * (cubic[7] - cubic[5]);
5930 return hodo;
5931}
5932
5933function hodograph2(cubic) {
5934 var quad = hodograph(cubic);
5935 var hodo = [];
5936 hodo[0] = 2 * (quad[2] - quad[0]);
5937 hodo[1] = 2 * (quad[3] - quad[1]);
5938 hodo[2] = 2 * (quad[4] - quad[2]);
5939 hodo[3] = 2 * (quad[5] - quad[3]);
5940 return hodo;
5941}
5942
5943function quadraticRootsReal(A, B, C, s) {
5944 if (A == 0) {
5945 if (B == 0) {
5946 s[0] = 0;
5947 return C == 0;
5948 }
5949 s[0] = -C / B;
5950 return 1;
5951 }
5952 /* normal form: x^2 + px + q = 0 */
5953 var p = B / (2 * A);
5954 var q = C / A;
5955 var p2 = p * p;
5956 if (p2 < q) {
5957 return 0;
5958 }
5959 var sqrt_D = 0;
5960 if (p2 > q) {
5961 sqrt_D = sqrt(p2 - q);
5962 }
5963 s[0] = sqrt_D - p;
5964 s[1] = -sqrt_D - p;
5965 return 1 + s[0] != s[1];
5966}
5967
5968function add_valid_ts(s, realRoots, t) {
5969 var foundRoots = 0;
5970 for (var index = 0; index < realRoots; ++index) {
5971 var tValue = s[index];
5972 if (tValue >= 0 && tValue <= 1) {
5973 for (var idx2 = 0; idx2 < foundRoots; ++idx2) {
5974 if (t[idx2] != tValue) {
5975 t[foundRoots++] = tValue;
5976 }
5977 }
5978 }
5979 }
5980 return foundRoots;
5981}
5982
5983function quadraticRootsValidT(a, b, c, t) {
5984 var s = [];
5985 var realRoots = quadraticRootsReal(A, B, C, s);
5986 var foundRoots = add_valid_ts(s, realRoots, t);
5987 return foundRoots != 0;
5988}
5989
5990function find_cubic_inflections(cubic, tValues) {
5991 var Ax = src[2] - src[0];
5992 var Ay = src[3] - src[1];
5993 var Bx = src[4] - 2 * src[2] + src[0];
5994 var By = src[5] - 2 * src[3] + src[1];
5995 var Cx = src[6] + 3 * (src[2] - src[4]) - src[0];
5996 var Cy = src[7] + 3 * (src[3] - src[5]) - src[1];
5997 return quadraticRootsValidT(Bx * Cy - By * Cx, (Ax * Cy - Ay * Cx),
5998 Ax * By - Ay * Bx, tValues);
5999}
6000
6001function dxy_at_t(curve, type, t) {
6002 var dxy = {};
6003 if (type == PATH_QUAD) {
6004 var a = t - 1;
6005 var b = 1 - 2 * t;
6006 var c = t;
6007 dxy.x = a * curve[0] + b * curve[2] + c * curve[4];
6008 dxy.y = a * curve[1] + b * curve[3] + c * curve[5];
caryclark1049f122015-04-20 08:31:59 -07006009 } else if (type == PATH_CONIC) {
6010 var p20x = curve[4] - curve[0];
6011 var p20y = curve[5] - curve[1];
6012 var p10xw = (curve[2] - curve[0]) * curve[6];
6013 var p10yw = (curve[3] - curve[1]) * curve[6];
6014 var coeff0x = curve[6] * p20x - p20x;
6015 var coeff0y = curve[6] * p20y - p20y;
6016 var coeff1x = p20x - 2 * p10xw;
6017 var coeff1y = p20y - 2 * p10yw;
6018 dxy.x = t * (t * coeff0x + coeff1x) + p10xw;
6019 dxy.y = t * (t * coeff0y + coeff1y) + p10yw;
caryclarkdac1d172014-06-17 05:15:38 -07006020 } else if (type == PATH_CUBIC) {
6021 var one_t = 1 - t;
6022 var a = curve[0];
6023 var b = curve[2];
6024 var c = curve[4];
6025 var d = curve[6];
6026 dxy.x = 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
6027 a = curve[1];
6028 b = curve[3];
6029 c = curve[5];
6030 d = curve[7];
6031 dxy.y = 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
6032 }
6033 return dxy;
6034}
6035
6036function drawLabel(num, px, py) {
6037 ctx.beginPath();
6038 ctx.arc(px, py, 8, 0, Math.PI*2, true);
6039 ctx.closePath();
6040 ctx.strokeStyle = "rgba(0,0,0, 0.4)";
6041 ctx.lineWidth = num == 0 || num == 3 ? 2 : 1;
6042 ctx.stroke();
6043 ctx.fillStyle = "black";
6044 ctx.font = "normal 10px Arial";
6045 // ctx.rotate(0.001);
6046 ctx.fillText(num, px - 2, py + 3);
6047 // ctx.rotate(-0.001);
6048}
6049
6050function drawLabelX(ymin, num, loc) {
6051 var px = (loc - srcLeft) * scale;
6052 var py = (ymin - srcTop) * scale - 20;
6053 drawLabel(num, px, py);
6054}
6055
6056function drawLabelY(xmin, num, loc) {
6057 var px = (xmin - srcLeft) * scale - 20;
6058 var py = (loc - srcTop) * scale;
6059 drawLabel(num, px, py);
6060}
6061
6062function drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY) {
6063 ctx.beginPath();
6064 ctx.moveTo(hx, hy - 100);
6065 ctx.lineTo(hx, hy);
6066 ctx.strokeStyle = hMinY < 0 ? "green" : "blue";
6067 ctx.stroke();
6068 ctx.beginPath();
6069 ctx.moveTo(hx, hy);
6070 ctx.lineTo(hx, hy + 100);
6071 ctx.strokeStyle = hMaxY > 0 ? "green" : "blue";
6072 ctx.stroke();
6073 ctx.beginPath();
6074 ctx.moveTo(hx - 100, hy);
6075 ctx.lineTo(hx, hy);
6076 ctx.strokeStyle = hMinX < 0 ? "green" : "blue";
6077 ctx.stroke();
6078 ctx.beginPath();
6079 ctx.moveTo(hx, hy);
6080 ctx.lineTo(hx + 100, hy);
6081 ctx.strokeStyle = hMaxX > 0 ? "green" : "blue";
6082 ctx.stroke();
6083}
6084
6085function scalexy(x, y, mag) {
6086 var length = Math.sqrt(x * x + y * y);
6087 return mag / length;
6088}
6089
caryclark03b03ca2015-04-23 09:13:37 -07006090function drawArrow(x, y, dx, dy, s) {
6091 var dscale = scalexy(dx, dy, 1 / scale * 100 * s);
caryclarkdac1d172014-06-17 05:15:38 -07006092 dx *= dscale;
6093 dy *= dscale;
6094 ctx.beginPath();
6095 ctx.moveTo((x - srcLeft) * scale, (y - srcTop) * scale);
6096 x += dx;
6097 y += dy;
6098 ctx.lineTo((x - srcLeft) * scale, (y - srcTop) * scale);
6099 dx /= 10;
6100 dy /= 10;
6101 ctx.lineTo((x - dy - srcLeft) * scale, (y + dx - srcTop) * scale);
6102 ctx.lineTo((x + dx * 2 - srcLeft) * scale, (y + dy * 2 - srcTop) * scale);
6103 ctx.lineTo((x + dy - srcLeft) * scale, (y - dx - srcTop) * scale);
6104 ctx.lineTo((x - srcLeft) * scale, (y - srcTop) * scale);
6105 ctx.strokeStyle = "rgba(0,75,0, 0.4)";
6106 ctx.stroke();
6107}
6108
6109function x_at_t(curve, t) {
6110 var one_t = 1 - t;
6111 if (curve.length == 4) {
6112 return one_t * curve[0] + t * curve[2];
6113 }
6114 var one_t2 = one_t * one_t;
6115 var t2 = t * t;
6116 if (curve.length == 6) {
6117 return one_t2 * curve[0] + 2 * one_t * t * curve[2] + t2 * curve[4];
6118 }
caryclark1049f122015-04-20 08:31:59 -07006119 if (curve.length == 7) {
6120 return (one_t2 * curve[0] + 2 * one_t * t * curve[2] * curve[6] + t2 * curve[4])
6121 / (one_t2 +2 * one_t * t * curve[6] + t2);
6122 }
caryclarkdac1d172014-06-17 05:15:38 -07006123 var a = one_t2 * one_t;
6124 var b = 3 * one_t2 * t;
6125 var c = 3 * one_t * t2;
6126 var d = t2 * t;
6127 return a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
6128}
6129
6130function y_at_t(curve, t) {
6131 var one_t = 1 - t;
6132 if (curve.length == 4) {
6133 return one_t * curve[1] + t * curve[3];
6134 }
6135 var one_t2 = one_t * one_t;
6136 var t2 = t * t;
6137 if (curve.length == 6) {
6138 return one_t2 * curve[1] + 2 * one_t * t * curve[3] + t2 * curve[5];
6139 }
caryclark1049f122015-04-20 08:31:59 -07006140 if (curve.length == 7) {
6141 return (one_t2 * curve[1] + 2 * one_t * t * curve[3] * curve[6] + t2 * curve[5])
6142 / (one_t2 +2 * one_t * t * curve[6] + t2);
6143 }
caryclarkdac1d172014-06-17 05:15:38 -07006144 var a = one_t2 * one_t;
6145 var b = 3 * one_t2 * t;
6146 var c = 3 * one_t * t2;
6147 var d = t2 * t;
6148 return a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
6149}
6150
6151function drawOrder(curve, label) {
6152 var px = x_at_t(curve, 0.75);
6153 var py = y_at_t(curve, 0.75);
6154 var _px = (px - srcLeft) * scale;
6155 var _py = (py - srcTop) * scale;
6156 ctx.beginPath();
6157 ctx.arc(_px, _py, 15, 0, Math.PI * 2, true);
6158 ctx.closePath();
6159 ctx.fillStyle = "white";
6160 ctx.fill();
6161 if (label == 'L') {
6162 ctx.strokeStyle = "rgba(255,0,0, 1)";
6163 ctx.fillStyle = "rgba(255,0,0, 1)";
6164 } else {
6165 ctx.strokeStyle = "rgba(0,0,255, 1)";
6166 ctx.fillStyle = "rgba(0,0,255, 1)";
6167 }
6168 ctx.stroke();
6169 ctx.font = "normal 16px Arial";
6170 ctx.textAlign = "center";
6171 ctx.fillText(label, _px, _py + 5);
6172 ctx.font = "normal 10px Arial";
6173}
6174
6175function drawID(curve, id) {
6176 var px = x_at_t(curve, 0.5);
6177 var py = y_at_t(curve, 0.5);
6178 var _px = (px - srcLeft) * scale;
6179 var _py = (py - srcTop) * scale;
6180 draw_id_at(id, _px, _py);
6181}
6182
6183function draw_id_at(id, _px, _py) {
6184 ctx.beginPath();
6185 ctx.arc(_px, _py, 15, 0, Math.PI * 2, true);
6186 ctx.closePath();
6187 ctx.fillStyle = "white";
6188 ctx.fill();
6189 ctx.strokeStyle = "rgba(127,127,0, 1)";
6190 ctx.fillStyle = "rgba(127,127,0, 1)";
6191 ctx.stroke();
6192 ctx.font = "normal 16px Arial";
6193 ctx.textAlign = "center";
6194 ctx.fillText(id, _px, _py + 5);
6195 ctx.font = "normal 10px Arial";
6196}
6197
6198function drawLinePartialID(id, x1, y1, x2, y2, t1, t2) {
6199 var curve = [x1, y1, x2, y2];
6200 drawCurvePartialID(id, curve, t1, t2);
6201}
6202
6203function drawQuadPartialID(id, x1, y1, x2, y2, x3, y3, t1, t2) {
6204 var curve = [x1, y1, x2, y2, x3, y3];
6205 drawCurvePartialID(id, curve, t1, t2);
6206}
6207
caryclark1049f122015-04-20 08:31:59 -07006208function drawConicPartialID(id, x1, y1, x2, y2, x3, y3, w, t1, t2) {
6209 var curve = [x1, y1, x2, y2, x3, y3, w];
6210 drawCurvePartialID(id, curve, t1, t2);
6211}
6212
caryclarkdac1d172014-06-17 05:15:38 -07006213function drawCubicPartialID(id, x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
6214 var curve = [x1, y1, x2, y2, x3, y3, x4, y4];
6215 drawCurvePartialID(id, curve, t1, t2);
6216}
6217
6218function drawCurvePartialID(id, curve, t1, t2) {
6219 var px = x_at_t(curve, (t1 + t2) / 2);
6220 var py = y_at_t(curve, (t1 + t2) / 2);
6221 var _px = (px - srcLeft) * scale;
6222 var _py = (py - srcTop) * scale;
6223 draw_id_at(id, _px, _py);
6224}
6225
6226function drawCurveSpecials(test, curve, type) {
6227 if (pt_labels) {
6228 drawPoints(curve, type, pt_labels == 2);
6229 }
6230 if (control_lines != 0) {
6231 drawControlLines(curve, type, control_lines);
6232 }
6233 if (curve_t) {
6234 drawPointAtT(curve, type);
6235 }
6236 if (draw_midpoint) {
6237 var mid = pointAtT(curve, type, 0.5);
6238 drawPoint(mid.x, mid.y, true);
6239 }
6240 if (draw_id) {
6241 var id = idByCurve(test, curve, type);
6242 if (id >= 0) {
6243 drawID(curve, id);
6244 }
6245 }
6246 if (type == PATH_LINE) {
6247 return;
6248 }
6249 if (draw_deriviatives > 0) {
6250 var d = dxy_at_t(curve, type, 0);
caryclark03b03ca2015-04-23 09:13:37 -07006251 drawArrow(curve[0], curve[1], d.x, d.y, 1);
caryclarkdac1d172014-06-17 05:15:38 -07006252 if (draw_deriviatives == 2) {
6253 d = dxy_at_t(curve, type, 1);
6254 if (type == PATH_CUBIC) {
caryclark03b03ca2015-04-23 09:13:37 -07006255 drawArrow(curve[6], curve[7], d.x, d.y, 1);
caryclarkdac1d172014-06-17 05:15:38 -07006256 } else {
caryclark03b03ca2015-04-23 09:13:37 -07006257 drawArrow(curve[4], curve[5], d.x, d.y, 1);
caryclarkdac1d172014-06-17 05:15:38 -07006258 }
6259 }
6260 if (draw_midpoint) {
6261 var mid = pointAtT(curve, type, 0.5);
6262 d = dxy_at_t(curve, type, 0.5);
caryclark03b03ca2015-04-23 09:13:37 -07006263 drawArrow(mid.x, mid.y, d.x, d.y, 1);
caryclarkdac1d172014-06-17 05:15:38 -07006264 }
6265 }
6266 if (type != PATH_CUBIC) {
6267 return;
6268 }
caryclarkdac1d172014-06-17 05:15:38 -07006269 if (draw_sequence) {
6270 var ymin = Math.min(curve[1], curve[3], curve[5], curve[7]);
6271 for (var i = 0; i < 8; i+= 2) {
6272 drawLabelX(ymin, i >> 1, curve[i]);
6273 }
6274 var xmin = Math.min(curve[0], curve[2], curve[4], curve[6]);
6275 for (var i = 1; i < 8; i+= 2) {
6276 drawLabelY(xmin, i >> 1, curve[i]);
6277 }
6278 }
6279}
6280
6281function logCurves(test) {
6282 for (curves in test) {
6283 var curve = test[curves];
6284 dumpCurve(curve);
6285 }
6286}
6287
6288function curveToString(curve) {
6289 var str = "{{";
caryclark1049f122015-04-20 08:31:59 -07006290 var length = curve.length == 7 ? 6 : curve.length;
6291 if (curve.length == 7) {
6292 str += "{";
6293 }
6294 for (i = 0; i < length; i += 2) {
caryclarkdac1d172014-06-17 05:15:38 -07006295 str += curve[i].toFixed(decimal_places) + "," + curve[i + 1].toFixed(decimal_places);
6296 if (i < curve.length - 2) {
6297 str += "}, {";
6298 }
6299 }
caryclark1049f122015-04-20 08:31:59 -07006300 str += "}";
6301 if (curve.length == 7) {
6302 str += "}, " + curve[6].toFixed(decimal_places);
6303 }
6304 str += "}";
caryclarkdac1d172014-06-17 05:15:38 -07006305 return str;
6306}
6307
6308function dumpCurve(curve) {
6309 console.log(curveToString(curve));
6310}
6311
6312function draw(test, lines, title) {
6313 ctx.fillStyle = "rgba(0,0,0, 0.1)";
6314 ctx.font = "normal 50px Arial";
6315 ctx.textAlign = "left";
6316 ctx.fillText(title, 50, 50);
6317 ctx.font = "normal 10px Arial";
6318 ctx.lineWidth = "1.001"; "0.999";
6319 var secondPath = test.length;
6320 var closeCount = 0;
6321 logStart = -1;
6322 logRange = 0;
6323 // find last active rec type at this step
6324 var curType = test[0];
6325 var curStep = 0;
6326 var hasOp = false;
6327 var lastActive = 0;
6328 var lastAdd = 0;
6329 var lastSect = 0;
6330 var lastSort = 0;
6331 var lastMark = 0;
caryclark03b03ca2015-04-23 09:13:37 -07006332 var lastTop = 0;
caryclarkdac1d172014-06-17 05:15:38 -07006333 activeCount = 0;
6334 addCount = 0;
6335 angleCount = 0;
6336 opCount = 0;
6337 sectCount = 0;
6338 sortCount = 0;
caryclark03b03ca2015-04-23 09:13:37 -07006339 topCount = 0;
caryclarkdac1d172014-06-17 05:15:38 -07006340 markCount = 0;
6341 activeMax = 0;
6342 addMax = 0;
6343 angleMax = 0;
6344 opMax = 0;
6345 sectMax = 0;
6346 sectMax2 = 0;
6347 sortMax = 0;
caryclark03b03ca2015-04-23 09:13:37 -07006348 topMax = 0;
caryclarkdac1d172014-06-17 05:15:38 -07006349 markMax = 0;
6350 lastIndex = test.length - 3;
6351 for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
6352 var recType = test[tIndex];
6353 if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
6354 console.log("unknown rec type: " + recType);
6355 throw "stop execution";
6356 }
6357 // if (curType == recType && curType != REC_TYPE_ADD) {
6358 // continue;
6359 // }
6360 var inStepRange = step_limit == 0 || curStep < step_limit;
6361 curType = recType;
6362 if (recType == REC_TYPE_OP) {
6363 hasOp = true;
6364 continue;
6365 }
6366 if (recType == REC_TYPE_UNKNOWN) {
6367 // these types do not advance step
6368 continue;
6369 }
6370 var bumpStep = false;
6371 var records = test[tIndex + 2];
6372 var fragType = records[0];
6373 if (recType == REC_TYPE_ADD) {
6374 if (records.length != 2) {
6375 console.log("expect only two elements: " + records.length);
6376 throw "stop execution";
6377 }
6378 if (fragType == ADD_MOVETO || fragType == ADD_CLOSE) {
6379 continue;
6380 }
6381 ++addMax;
6382 if (!draw_add || !inStepRange) {
6383 continue;
6384 }
6385 lastAdd = tIndex;
6386 ++addCount;
6387 bumpStep = true;
6388 }
6389 if (recType == REC_TYPE_PATH && hasOp) {
6390 secondPath = tIndex;
6391 }
caryclark54359292015-03-26 07:52:43 -07006392 if (recType == REC_TYPE_PATH2 && hasOp) {
6393 secondPath = tIndex;
6394 }
caryclarkdac1d172014-06-17 05:15:38 -07006395 if (recType == REC_TYPE_ACTIVE) {
6396 ++activeMax;
6397 if (!draw_active || !inStepRange) {
6398 continue;
6399 }
6400 lastActive = tIndex;
6401 ++activeCount;
6402 bumpStep = true;
6403 }
6404 if (recType == REC_TYPE_ACTIVE_OP) {
6405 ++opMax;
6406 if (!draw_op || !inStepRange) {
6407 continue;
6408 }
6409 lastOp = tIndex;
6410 ++opCount;
6411 bumpStep = true;
6412 }
caryclark54359292015-03-26 07:52:43 -07006413 if (recType == REC_TYPE_AFTERPART) {
6414 if (draw_angle != 3 || !inStepRange) {
6415 continue;
6416 }
6417 lastAngle = tIndex;
6418 ++angleCount;
6419 bumpStep = true;
6420 }
caryclarkdac1d172014-06-17 05:15:38 -07006421 if (recType == REC_TYPE_ANGLE) {
6422 ++angleMax;
caryclark54359292015-03-26 07:52:43 -07006423 if (draw_angle == 0 || draw_angle == 3 || !inStepRange) {
caryclarkdac1d172014-06-17 05:15:38 -07006424 continue;
6425 }
6426 lastAngle = tIndex;
6427 ++angleCount;
6428 bumpStep = true;
6429 }
6430 if (recType == REC_TYPE_SECT) {
6431 if (records.length != 2) {
6432 console.log("expect only two elements: " + records.length);
6433 throw "stop execution";
6434 }
6435 ++sectMax;
6436 var sectBump = 1;
6437 switch (fragType) {
6438 case INTERSECT_LINE:
6439 case INTERSECT_QUAD_LINE:
6440 case INTERSECT_QUAD:
caryclark1049f122015-04-20 08:31:59 -07006441 case INTERSECT_CONIC_LINE:
6442 case INTERSECT_CONIC:
caryclarkdac1d172014-06-17 05:15:38 -07006443 case INTERSECT_SELF_CUBIC:
6444 case INTERSECT_CUBIC_LINE:
6445 case INTERSECT_CUBIC_QUAD:
6446 case INTERSECT_CUBIC:
6447 sectBump = 1;
6448 break;
6449 case INTERSECT_LINE_2:
6450 case INTERSECT_QUAD_LINE_2:
6451 case INTERSECT_QUAD_2:
caryclark1049f122015-04-20 08:31:59 -07006452 case INTERSECT_CONIC_LINE_2:
6453 case INTERSECT_CONIC_2:
caryclarkdac1d172014-06-17 05:15:38 -07006454 case INTERSECT_CUBIC_LINE_2:
6455 case INTERSECT_CUBIC_QUAD_2:
6456 case INTERSECT_CUBIC_2:
6457 sectBump = 2;
6458 break;
6459 case INTERSECT_LINE_NO:
6460 case INTERSECT_QUAD_LINE_NO:
6461 case INTERSECT_QUAD_NO:
caryclark1049f122015-04-20 08:31:59 -07006462 case INTERSECT_CONIC_LINE_NO:
6463 case INTERSECT_CONIC_NO:
caryclarkdac1d172014-06-17 05:15:38 -07006464 case INTERSECT_SELF_CUBIC_NO:
6465 case INTERSECT_CUBIC_LINE_NO:
6466 case INTERSECT_CUBIC_QUAD_NO:
6467 case INTERSECT_CUBIC_NO:
6468 sectBump = 0;
6469 break;
6470 case INTERSECT_CUBIC_LINE_3:
6471 case INTERSECT_CUBIC_QUAD_3:
6472 case INTERSECT_CUBIC_3:
6473 sectBump = 3;
6474 break;
6475 case INTERSECT_CUBIC_QUAD_4:
6476 case INTERSECT_CUBIC_4:
6477 sectBump = 4;
6478 break;
6479 default:
6480 console.log("missing case " + records.length);
6481 throw "stop execution";
6482 }
6483 sectMax2 += sectBump;
6484 if (draw_intersection <= 1 || !inStepRange) {
6485 continue;
6486 }
6487 lastSect = tIndex;
6488 sectCount += sectBump;
6489 bumpStep = true;
6490 }
6491 if (recType == REC_TYPE_SORT) {
6492 ++sortMax;
6493 if (!draw_sort || !inStepRange) {
6494 continue;
6495 }
6496 lastSort = tIndex;
6497 ++sortCount;
6498 bumpStep = true;
6499 }
caryclark03b03ca2015-04-23 09:13:37 -07006500 if (recType == REC_TYPE_TOP) {
6501 ++topMax;
6502 if (!draw_top || !inStepRange) {
6503 continue;
6504 }
6505 lastTop = tIndex;
6506 ++topCount;
6507 bumpStep = true;
6508 }
caryclarkdac1d172014-06-17 05:15:38 -07006509 if (recType == REC_TYPE_MARK) {
6510 ++markMax;
6511 if (!draw_mark || !inStepRange) {
6512 continue;
6513 }
6514 lastMark = tIndex;
6515 ++markCount;
6516 bumpStep = true;
6517 }
6518 if (bumpStep) {
6519 lastIndex = tIndex;
6520 logStart = test[tIndex + 1];
6521 logRange = records.length / 2;
6522 ++curStep;
6523 }
6524 }
6525 stepMax = (draw_add ? addMax : 0)
6526 + (draw_active ? activeMax : 0)
reed0dc4dd62015-03-24 13:55:33 -07006527 + (draw_angle ? angleMax : 0)
caryclark54359292015-03-26 07:52:43 -07006528 + (draw_op ? opMax : 0)
caryclarkdac1d172014-06-17 05:15:38 -07006529 + (draw_sort ? sortMax : 0)
caryclark03b03ca2015-04-23 09:13:37 -07006530 + (draw_top ? topMax : 0)
caryclarkdac1d172014-06-17 05:15:38 -07006531 + (draw_mark ? markMax : 0)
6532 + (draw_intersection == 2 ? sectMax : draw_intersection == 3 ? sectMax2 : 0);
6533 if (stepMax == 0) {
caryclark03b03ca2015-04-23 09:13:37 -07006534 stepMax = addMax + activeMax + angleMax + opMax + sortMax + topMax + markMax;
caryclarkdac1d172014-06-17 05:15:38 -07006535 }
6536 drawnPts = [];
6537 drawnLines = [];
6538 drawnQuads = [];
caryclark1049f122015-04-20 08:31:59 -07006539 drawnConics = [];
caryclarkdac1d172014-06-17 05:15:38 -07006540 drawnCubics = [];
6541 focusXmin = focusYmin = Infinity;
6542 focusXmax = focusYmax = -Infinity;
6543 var pathIndex = 0;
6544 var opLetter = 'S';
6545 for (var tIndex = lastIndex; tIndex >= 0; tIndex -= 3) {
6546 var recType = test[tIndex];
6547 var records = test[tIndex + 2];
6548 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
6549 var fragType = records[recordIndex];
6550 if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_TYPE_LAST) {
6551 console.log("unknown in range frag type: " + fragType);
6552 throw "stop execution";
6553 }
6554 var frags = records[recordIndex + 1];
6555 focus_enabled = false;
6556 switch (recType) {
6557 case REC_TYPE_COMPUTED:
6558 if (draw_computed == 0) {
6559 continue;
6560 }
6561 ctx.lineWidth = 1;
6562 ctx.strokeStyle = pathIndex == 0 ? "black" : "red";
6563 ctx.fillStyle = "blue";
6564 var drawThis = false;
6565 switch (fragType) {
6566 case PATH_QUAD:
caryclark1049f122015-04-20 08:31:59 -07006567 if ((draw_computed & 0x9) == 1 || ((draw_computed & 8) != 0
6568 && (draw_computed & 7) == pathIndex)) {
caryclarkdac1d172014-06-17 05:15:38 -07006569 drawQuad(frags[0], frags[1], frags[2], frags[3],
6570 frags[4], frags[5]);
6571 drawThis = true;
6572 }
6573 break;
caryclark1049f122015-04-20 08:31:59 -07006574 case PATH_CONIC:
6575 if ((draw_computed & 0xA) == 2 || ((draw_computed & 8) != 0
6576 && (draw_computed & 7) == pathIndex)) {
6577 drawConicWithQuads(frags[0], frags[1], frags[2], frags[3],
6578 frags[4], frags[5], frags[6]);
6579 drawThis = true;
6580 }
6581 break;
caryclarkdac1d172014-06-17 05:15:38 -07006582 case PATH_CUBIC:
caryclark1049f122015-04-20 08:31:59 -07006583 if ((draw_computed & 0xC) == 4 || ((draw_computed & 8) != 0
6584 && (draw_computed & 7) == pathIndex)) {
caryclarkdac1d172014-06-17 05:15:38 -07006585 drawCubic(frags[0], frags[1], frags[2], frags[3],
6586 frags[4], frags[5], frags[6], frags[7]);
6587 drawThis = true;
6588 }
6589 ++pathIndex;
6590 break;
6591 case COMPUTED_SET_1:
6592 pathIndex = 0;
6593 break;
6594 case COMPUTED_SET_2:
6595 pathIndex = 1;
6596 break;
6597 default:
6598 console.log("unknown REC_TYPE_COMPUTED frag type: " + fragType);
6599 throw "stop execution";
6600 }
6601 if (!drawThis || collect_bounds) {
6602 break;
6603 }
6604 drawCurveSpecials(test, frags, fragType);
6605 break;
6606 case REC_TYPE_PATH:
caryclark54359292015-03-26 07:52:43 -07006607 case REC_TYPE_PATH2:
caryclarkdac1d172014-06-17 05:15:38 -07006608 if (!draw_path) {
6609 continue;
6610 }
6611 var firstPath = tIndex < secondPath;
6612 if ((draw_path & (firstPath ? 1 : 2)) == 0) {
6613 continue;
6614 }
6615 ctx.lineWidth = 1;
6616 ctx.strokeStyle = firstPath ? "black" : "red";
6617 ctx.fillStyle = "blue";
caryclark54359292015-03-26 07:52:43 -07006618 var frags2 = [];
caryclarkdac1d172014-06-17 05:15:38 -07006619 switch (fragType) {
6620 case PATH_LINE:
caryclark54359292015-03-26 07:52:43 -07006621 for (var i = 0; i < 4; ++ i) { frags2[i] = frags[i + 1]; }
6622 drawLine(frags2[0], frags2[1], frags2[2], frags2[3]);
caryclarkdac1d172014-06-17 05:15:38 -07006623 break;
6624 case PATH_QUAD:
caryclark54359292015-03-26 07:52:43 -07006625 for (var i = 0; i < 6; ++ i) { frags2[i] = frags[i + 1]; }
6626 drawQuad(frags2[0], frags2[1], frags2[2], frags2[3],
6627 frags2[4], frags2[5]);
caryclarkdac1d172014-06-17 05:15:38 -07006628 break;
caryclark1049f122015-04-20 08:31:59 -07006629 case PATH_CONIC:
6630 for (var i = 0; i < 7; ++ i) { frags2[i] = frags[i + 1]; }
6631 drawConicWithQuads(frags2[0], frags2[1], frags2[2], frags2[3],
6632 frags2[4], frags2[5], frags2[6]);
6633 break;
caryclarkdac1d172014-06-17 05:15:38 -07006634 case PATH_CUBIC:
caryclark54359292015-03-26 07:52:43 -07006635 for (var i = 0; i < 8; ++ i) { frags2[i] = frags[i + 1]; }
6636 drawCubic(frags2[0], frags2[1], frags2[2], frags2[3],
6637 frags2[4], frags2[5], frags2[6], frags2[7]);
caryclarkdac1d172014-06-17 05:15:38 -07006638 break;
6639 default:
caryclark54359292015-03-26 07:52:43 -07006640 console.log("unknown REC_TYPE_PATH2 frag type: " + fragType);
caryclarkdac1d172014-06-17 05:15:38 -07006641 throw "stop execution";
6642 }
6643 if (collect_bounds) {
6644 break;
6645 }
caryclark54359292015-03-26 07:52:43 -07006646 drawCurveSpecials(test, frags2, fragType);
caryclarkdac1d172014-06-17 05:15:38 -07006647 break;
6648 case REC_TYPE_OP:
6649 switch (fragType) {
6650 case OP_INTERSECT: opLetter = 'I'; break;
6651 case OP_DIFFERENCE: opLetter = 'D'; break;
6652 case OP_UNION: opLetter = 'U'; break;
6653 case OP_XOR: opLetter = 'X'; break;
6654 default:
6655 console.log("unknown REC_TYPE_OP frag type: " + fragType);
6656 throw "stop execution";
6657 }
6658 break;
6659 case REC_TYPE_ACTIVE:
6660 if (!draw_active || (step_limit > 0 && tIndex < lastActive)) {
6661 continue;
6662 }
6663 var x1 = frags[SPAN_X1];
6664 var y1 = frags[SPAN_Y1];
6665 var x2 = frags[SPAN_X2];
6666 var y2 = frags[SPAN_Y2];
caryclark1049f122015-04-20 08:31:59 -07006667 var x3, y3, x3, y4, t1, t2, w;
caryclarkdac1d172014-06-17 05:15:38 -07006668 ctx.lineWidth = 3;
6669 ctx.strokeStyle = "rgba(0,0,255, 0.3)";
6670 focus_enabled = true;
6671 switch (fragType) {
6672 case ACTIVE_LINE_SPAN:
6673 t1 = frags[SPAN_L_T];
6674 t2 = frags[SPAN_L_TEND];
6675 drawLinePartial(x1, y1, x2, y2, t1, t2);
6676 if (draw_id) {
6677 drawLinePartialID(frags[0], x1, y1, x2, y2, t1, t2);
6678 }
6679 break;
6680 case ACTIVE_QUAD_SPAN:
6681 x3 = frags[SPAN_X3];
6682 y3 = frags[SPAN_Y3];
6683 t1 = frags[SPAN_Q_T];
6684 t2 = frags[SPAN_Q_TEND];
6685 drawQuadPartial(x1, y1, x2, y2, x3, y3, t1, t2);
6686 if (draw_id) {
6687 drawQuadPartialID(frags[0], x1, y1, x2, y2, x3, y3, t1, t2);
6688 }
6689 break;
caryclark1049f122015-04-20 08:31:59 -07006690 case ACTIVE_CONIC_SPAN:
6691 x3 = frags[SPAN_X3];
6692 y3 = frags[SPAN_Y3];
6693 t1 = frags[SPAN_K_T];
6694 t2 = frags[SPAN_K_TEND];
6695 w = frags[SPAN_K_W];
6696 drawConicPartial(x1, y1, x2, y2, x3, y3, w, t1, t2);
6697 if (draw_id) {
6698 drawConicPartialID(frags[0], x1, y1, x2, y2, x3, y3, w, t1, t2);
6699 }
6700 break;
caryclarkdac1d172014-06-17 05:15:38 -07006701 case ACTIVE_CUBIC_SPAN:
6702 x3 = frags[SPAN_X3];
6703 y3 = frags[SPAN_Y3];
6704 x4 = frags[SPAN_X4];
6705 y4 = frags[SPAN_Y4];
6706 t1 = frags[SPAN_C_T];
6707 t2 = frags[SPAN_C_TEND];
6708 drawCubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
6709 if (draw_id) {
6710 drawCubicPartialID(frags[0], x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
6711 }
6712 break;
6713 default:
6714 console.log("unknown REC_TYPE_ACTIVE frag type: " + fragType);
6715 throw "stop execution";
6716 }
6717 break;
6718 case REC_TYPE_ACTIVE_OP:
6719 if (!draw_op || (step_limit > 0 && tIndex < lastOp)) {
6720 continue;
6721 }
6722 focus_enabled = true;
6723 ctx.lineWidth = 3;
6724 var activeSpan = frags[7] == "1";
6725 ctx.strokeStyle = activeSpan ? "rgba(45,160,0, 0.3)" : "rgba(255,45,0, 0.5)";
6726 var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
6727 drawCurve(curve);
6728 if (draw_op > 1) {
6729 drawArc(curve, false, frags[3], frags[4]);
6730 drawArc(curve, true, frags[5], frags[6]);
6731 }
6732 break;
6733 case REC_TYPE_ADD:
6734 if (!draw_add) {
6735 continue;
6736 }
6737 ctx.lineWidth = 3;
6738 ctx.strokeStyle = closeCount == 0 ? "rgba(0,0,255, 0.3)"
6739 : closeCount == 1 ? "rgba(0,127,0, 0.3)"
6740 : closeCount == 2 ? "rgba(0,127,127, 0.3)"
6741 : closeCount == 3 ? "rgba(127,127,0, 0.3)"
6742 : "rgba(127,0,127, 0.3)";
6743 focus_enabled = true;
6744 switch (fragType) {
6745 case ADD_MOVETO:
6746 break;
6747 case ADD_LINETO:
6748 if (step_limit == 0 || tIndex >= lastAdd) {
6749 drawLine(frags[0], frags[1], frags[2], frags[3]);
6750 }
6751 break;
6752 case ADD_QUADTO:
6753 if (step_limit == 0 || tIndex >= lastAdd) {
6754 drawQuad(frags[0], frags[1], frags[2], frags[3], frags[4], frags[5]);
6755 }
6756 break;
caryclark1049f122015-04-20 08:31:59 -07006757 case ADD_CONICTO:
6758 if (step_limit == 0 || tIndex >= lastAdd) {
6759 drawConicWithQuads(frags[0], frags[1], frags[2], frags[3],
6760 frags[4], frags[5], frags[6]);
6761 }
6762 break;
caryclarkdac1d172014-06-17 05:15:38 -07006763 case ADD_CUBICTO:
6764 if (step_limit == 0 || tIndex >= lastAdd) {
6765 drawCubic(frags[0], frags[1], frags[2], frags[3],
6766 frags[4], frags[5], frags[6], frags[7]);
6767 }
6768 break;
6769 case ADD_CLOSE:
6770 ++closeCount;
6771 break;
6772 case ADD_FILL:
6773 break;
6774 default:
6775 console.log("unknown REC_TYPE_ADD frag type: " + fragType);
6776 throw "stop execution";
6777 }
6778 break;
6779 case REC_TYPE_ANGLE:
caryclark54359292015-03-26 07:52:43 -07006780 angleBetween = frags[18] == "T";
6781 afterIndex = 0;
6782 if (draw_angle == 0 || draw_angle == 3 || (step_limit > 0 && tIndex < lastAngle)) {
caryclarkdac1d172014-06-17 05:15:38 -07006783 continue;
6784 }
6785 focus_enabled = true;
6786 ctx.lineWidth = 3;
6787 ctx.strokeStyle = "rgba(127,45,127, 0.3)";
caryclark54359292015-03-26 07:52:43 -07006788 var leftCurve = curvePartialByID(test, frags[0], frags[4], frags[5]);
6789 var midCurve = curvePartialByID(test, frags[6], frags[10], frags[11]);
6790 var rightCurve = curvePartialByID(test, frags[12], frags[16], frags[17]);
caryclarkdac1d172014-06-17 05:15:38 -07006791 drawCurve(leftCurve);
6792 drawCurve(rightCurve);
caryclark54359292015-03-26 07:52:43 -07006793 ctx.strokeStyle = angleBetween ? "rgba(0,160,45, 0.3)" : "rgba(255,0,45, 0.5)";
caryclarkdac1d172014-06-17 05:15:38 -07006794 drawCurve(midCurve);
6795 if (draw_angle > 1) {
6796 drawOrder(leftCurve, 'L');
6797 drawOrder(rightCurve, 'R');
6798 }
6799 break;
caryclark54359292015-03-26 07:52:43 -07006800 case REC_TYPE_AFTERPART:
6801 if (draw_angle != 3 || (step_limit > 0 && tIndex < lastAngle)) {
6802 continue;
6803 }
6804 ctx.strokeStyle = afterIndex == 0 ? "rgba(255,0,0, 1.0)"
6805 : (afterIndex == 1) == angleBetween ? "rgba(0,128,0, 1.0)"
6806 : "rgba(0,0,255, 1.0)";
6807 switch (fragType) {
6808 case PATH_LINE:
6809 drawLine(frags[0], frags[1], frags[2], frags[3]);
6810 break;
6811 case PATH_QUAD:
6812 drawQuad(frags[0], frags[1], frags[2], frags[3],
6813 frags[4], frags[5]);
6814 break;
caryclark1049f122015-04-20 08:31:59 -07006815 case PATH_CONIC:
6816 drawConicWithQuads(frags[0], frags[1], frags[2], frags[3],
6817 frags[4], frags[5], frags[6]);
6818 break;
caryclark54359292015-03-26 07:52:43 -07006819 case PATH_CUBIC:
6820 drawCubic(frags[0], frags[1], frags[2], frags[3],
caryclark1049f122015-04-20 08:31:59 -07006821 frags[4], frags[5], frags[6], frags[7]);
caryclark54359292015-03-26 07:52:43 -07006822 break;
6823 default:
6824 console.log("unknown REC_TYPE_AFTERPART frag type: " + fragType);
6825 throw "stop execution";
6826 }
6827 ++afterIndex;
6828 break;
caryclarkdac1d172014-06-17 05:15:38 -07006829 case REC_TYPE_SECT:
6830 if (!draw_intersection) {
6831 continue;
6832 }
6833 if (draw_intersection != 1 && (step_limit > 0 && tIndex < lastSect)) {
6834 continue;
6835 }
6836 // draw_intersection == 1 : show all
6837 // draw_intersection == 2 : step == 0 ? show all : show intersection line #step
6838 // draw_intersection == 3 : step == 0 ? show all : show intersection #step
6839 ctx.lineWidth = 1;
6840 ctx.strokeStyle = "rgba(0,0,255, 0.3)";
6841 ctx.fillStyle = "blue";
6842 focus_enabled = true;
6843 var f = [];
6844 var c1s;
6845 var c1l;
6846 var c2s;
6847 var c2l;
6848 switch (fragType) {
6849 case INTERSECT_LINE:
6850 f.push(5, 6, 0, 7);
6851 c1s = 1; c1l = 4; c2s = 8; c2l = 4;
6852 break;
6853 case INTERSECT_LINE_2:
6854 f.push(5, 6, 0, 10);
6855 f.push(8, 9, 7, 15);
6856 c1s = 1; c1l = 4; c2s = 11; c2l = 4;
6857 break;
6858 case INTERSECT_LINE_NO:
6859 c1s = 0; c1l = 4; c2s = 4; c2l = 4;
6860 break;
6861 case INTERSECT_QUAD_LINE:
6862 f.push(7, 8, 0, 9);
6863 c1s = 1; c1l = 6; c2s = 10; c2l = 4;
6864 break;
6865 case INTERSECT_QUAD_LINE_2:
6866 f.push(7, 8, 0, 12);
6867 f.push(10, 11, 9, 17);
6868 c1s = 1; c1l = 6; c2s = 13; c2l = 4;
6869 break;
6870 case INTERSECT_QUAD_LINE_NO:
6871 c1s = 0; c1l = 6; c2s = 6; c2l = 4;
6872 break;
6873 case INTERSECT_QUAD:
6874 f.push(7, 8, 0, 9);
6875 c1s = 1; c1l = 6; c2s = 10; c2l = 6;
6876 break;
6877 case INTERSECT_QUAD_2:
6878 f.push(7, 8, 0, 12);
6879 f.push(10, 11, 9, 19);
6880 c1s = 1; c1l = 6; c2s = 13; c2l = 6;
6881 break;
6882 case INTERSECT_QUAD_NO:
6883 c1s = 0; c1l = 6; c2s = 6; c2l = 6;
6884 break;
caryclark1049f122015-04-20 08:31:59 -07006885 case INTERSECT_CONIC_LINE:
6886 f.push(8, 9, 0, 10);
6887 c1s = 1; c1l = 7; c2s = 11; c2l = 4;
6888 break;
6889 case INTERSECT_CONIC_LINE_2:
6890 f.push(8, 9, 0, 12);
6891 f.push(11, 12, 10, 18);
6892 c1s = 1; c1l = 7; c2s = 14; c2l = 4;
6893 break;
6894 case INTERSECT_CONIC_LINE_NO:
6895 c1s = 0; c1l = 7; c2s = 7; c2l = 4;
6896 break;
6897 case INTERSECT_CONIC:
6898 f.push(8, 9, 0, 10);
6899 c1s = 1; c1l = 7; c2s = 11; c2l = 7;
6900 break;
6901 case INTERSECT_CONIC_2:
6902 f.push(8, 9, 0, 13);
6903 f.push(11, 12, 10, 21);
6904 c1s = 1; c1l = 7; c2s = 14; c2l = 7;
6905 break;
6906 case INTERSECT_CONIC_NO:
6907 c1s = 0; c1l = 7; c2s = 7; c2l = 7;
6908 break;
caryclarkdac1d172014-06-17 05:15:38 -07006909 case INTERSECT_SELF_CUBIC:
6910 f.push(9, 10, 0, 11);
6911 c1s = 1; c1l = 8; c2s = 0; c2l = 0;
6912 break;
6913 case INTERSECT_SELF_CUBIC_NO:
6914 c1s = 0; c1l = 8; c2s = 0; c2l = 0;
6915 break;
6916 case INTERSECT_CUBIC_LINE:
6917 f.push(9, 10, 0, 11);
6918 c1s = 1; c1l = 8; c2s = 12; c2l = 4;
6919 break;
6920 case INTERSECT_CUBIC_LINE_2:
6921 f.push(9, 10, 0, 14);
6922 f.push(12, 13, 11, 19);
6923 c1s = 1; c1l = 8; c2s = 15; c2l = 4;
6924 break;
6925 case INTERSECT_CUBIC_LINE_3:
6926 f.push(9, 10, 0, 17);
6927 f.push(12, 13, 11, 22);
6928 f.push(15, 16, 14, 23);
6929 c1s = 1; c1l = 8; c2s = 18; c2l = 4;
6930 break;
6931 case INTERSECT_CUBIC_QUAD_NO:
6932 c1s = 0; c1l = 8; c2s = 8; c2l = 6;
6933 break;
6934 case INTERSECT_CUBIC_QUAD:
6935 f.push(9, 10, 0, 11);
6936 c1s = 1; c1l = 8; c2s = 12; c2l = 6;
6937 break;
6938 case INTERSECT_CUBIC_QUAD_2:
6939 f.push(9, 10, 0, 14);
6940 f.push(12, 13, 11, 21);
6941 c1s = 1; c1l = 8; c2s = 15; c2l = 6;
6942 break;
6943 case INTERSECT_CUBIC_QUAD_3:
6944 f.push(9, 10, 0, 17);
6945 f.push(12, 13, 11, 24);
6946 f.push(15, 16, 14, 25);
6947 c1s = 1; c1l = 8; c2s = 18; c2l = 6;
6948 break;
6949 case INTERSECT_CUBIC_QUAD_4:
6950 f.push(9, 10, 0, 20);
6951 f.push(12, 13, 11, 27);
6952 f.push(15, 16, 14, 28);
6953 f.push(18, 19, 17, 29);
6954 c1s = 1; c1l = 8; c2s = 21; c2l = 6;
6955 break;
6956 case INTERSECT_CUBIC_LINE_NO:
6957 c1s = 0; c1l = 8; c2s = 8; c2l = 4;
6958 break;
6959 case INTERSECT_CUBIC:
6960 f.push(9, 10, 0, 11);
6961 c1s = 1; c1l = 8; c2s = 12; c2l = 8;
6962 break;
6963 case INTERSECT_CUBIC_2:
6964 f.push(9, 10, 0, 14);
6965 f.push(12, 13, 11, 23);
6966 c1s = 1; c1l = 8; c2s = 15; c2l = 8;
6967 break;
6968 case INTERSECT_CUBIC_3:
6969 f.push(9, 10, 0, 17);
6970 f.push(12, 13, 11, 26);
6971 f.push(15, 16, 14, 27);
6972 c1s = 1; c1l = 8; c2s = 18; c2l = 8;
6973 break;
6974 case INTERSECT_CUBIC_4:
6975 f.push(9, 10, 0, 20);
6976 f.push(12, 13, 11, 29);
6977 f.push(15, 16, 14, 30);
6978 f.push(18, 19, 17, 31);
6979 c1s = 1; c1l = 8; c2s = 21; c2l = 8;
6980 break;
6981 case INTERSECT_CUBIC_NO:
6982 c1s = 0; c1l = 8; c2s = 8; c2l = 8;
6983 break;
6984 default:
6985 console.log("unknown REC_TYPE_SECT frag type: " + fragType);
6986 throw "stop execution";
6987 }
6988 if (draw_intersection != 1) {
6989 var id = -1;
6990 var curve;
6991 switch (c1l) {
6992 case 4:
6993 drawLine(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3]);
6994 if (draw_id) {
6995 curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3]];
6996 id = idByCurve(test, curve, PATH_LINE);
6997 }
6998 break;
6999 case 6:
7000 drawQuad(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
7001 frags[c1s + 4], frags[c1s + 5]);
7002 if (draw_id) {
7003 curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
7004 frags[c1s + 4], frags[c1s + 5]];
7005 id = idByCurve(test, curve, PATH_QUAD);
7006 }
7007 break;
caryclark1049f122015-04-20 08:31:59 -07007008 case 7:
7009 drawConicWithQuads(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
7010 frags[c1s + 4], frags[c1s + 5], frags[c1s + 6]);
7011 if (draw_id) {
7012 curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
7013 frags[c1s + 4], frags[c1s + 5], frags[c1s + 6]];
7014 id = idByCurve(test, curve, PATH_CONIC);
7015 }
7016 break;
caryclarkdac1d172014-06-17 05:15:38 -07007017 case 8:
7018 drawCubic(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
7019 frags[c1s + 4], frags[c1s + 5], frags[c1s + 6], frags[c1s + 7]);
7020 if (draw_id) {
7021 curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
7022 frags[c1s + 4], frags[c1s + 5], frags[c1s + 6], frags[c1s + 7]];
7023 id = idByCurve(test, curve, PATH_CUBIC);
7024 }
7025 break;
7026 }
7027 if (id >= 0) {
7028 drawID(curve, id);
7029 }
7030 id = -1;
7031 switch (c2l) {
7032 case 0:
7033 break;
7034 case 4:
7035 drawLine(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3]);
7036 if (draw_id) {
7037 curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3]];
7038 id = idByCurve(test, curve, PATH_LINE);
7039 }
7040 break;
7041 case 6:
7042 drawQuad(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
7043 frags[c2s + 4], frags[c2s + 5]);
7044 if (draw_id) {
7045 curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
7046 frags[c2s + 4], frags[c2s + 5]];
7047 id = idByCurve(test, curve, PATH_QUAD);
7048 }
7049 break;
caryclark1049f122015-04-20 08:31:59 -07007050 case 7:
7051 drawConicWithQuads(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
7052 frags[c2s + 4], frags[c2s + 5], frags[c2s + 6]);
7053 if (draw_id) {
7054 curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
7055 frags[c2s + 4], frags[c2s + 5], frags[c2s + 6]];
7056 id = idByCurve(test, curve, PATH_CONIC);
7057 }
7058 break;
caryclarkdac1d172014-06-17 05:15:38 -07007059 case 8:
7060 drawCubic(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
7061 frags[c2s + 4], frags[c2s + 5], frags[c2s + 6], frags[c2s + 7]);
7062 if (draw_id) {
7063 curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
7064 frags[c2s + 4], frags[c2s + 5], frags[c2s + 6], frags[c2s + 7]];
7065 id = idByCurve(test, curve, PATH_CUBIC);
7066 }
7067 break;
7068 }
7069 if (id >= 0) {
7070 drawID(curve, id);
7071 }
7072 }
7073 if (collect_bounds) {
7074 break;
7075 }
caryclark54359292015-03-26 07:52:43 -07007076 if (draw_intersection != 3 || step_limit == 0 || tIndex >= lastSect) {
7077 for (var idx = 0; idx < f.length; idx += 4) {
caryclarkdac1d172014-06-17 05:15:38 -07007078 drawPoint(frags[f[idx]], frags[f[idx + 1]], true);
7079 }
7080 }
7081 if (!draw_intersectT) {
7082 break;
7083 }
7084 ctx.fillStyle = "red";
caryclark54359292015-03-26 07:52:43 -07007085 if (draw_intersection != 3 || step_limit == 0 || tIndex >= lastSect) {
7086 for (var idx = 0; idx < f.length; idx += 4) {
caryclarkdac1d172014-06-17 05:15:38 -07007087 drawTAtPointUp(frags[f[idx]], frags[f[idx + 1]], frags[f[idx + 2]]);
7088 drawTAtPointDown(frags[f[idx]], frags[f[idx + 1]], frags[f[idx + 3]]);
7089 }
7090 }
7091 break;
7092 case REC_TYPE_SORT:
7093 if (!draw_sort || (step_limit > 0 && tIndex < lastSort)) {
7094 continue;
7095 }
7096 ctx.lineWidth = 3;
7097 ctx.strokeStyle = "rgba(127,127,0, 0.5)";
7098 focus_enabled = true;
7099 switch (fragType) {
7100 case SORT_UNARY:
7101 case SORT_BINARY:
7102 var curve = curvePartialByID(test, frags[0], frags[6], frags[8]);
7103 drawCurve(curve);
7104 break;
7105 default:
7106 console.log("unknown REC_TYPE_SORT frag type: " + fragType);
7107 throw "stop execution";
7108 }
7109 break;
caryclark03b03ca2015-04-23 09:13:37 -07007110 case REC_TYPE_TOP:
7111 if (!draw_top || (step_limit > 0 && tIndex < lastTop)) {
7112 continue;
7113 }
7114 ctx.lineWidth = 3;
7115 ctx.strokeStyle = "rgba(127,127,0, 0.5)";
7116 focus_enabled = true;
7117 {
7118 var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
7119 drawCurve(curve);
7120 var type = PATH_LINE + (curve.length / 2 - 2);
7121 var mid = pointAtT(curve, type, 0.5);
7122 var d = dxy_at_t(curve, type, 0.5);
7123 drawArrow(mid.x, mid.y, d.x, d.y, 0.3);
7124 }
7125 break;
caryclarkdac1d172014-06-17 05:15:38 -07007126 case REC_TYPE_MARK:
7127 if (!draw_mark || (step_limit > 0 && tIndex < lastMark)) {
7128 continue;
7129 }
7130 ctx.lineWidth = 3;
7131 ctx.strokeStyle = fragType >= MARK_DONE_LINE ?
7132 "rgba(127,0,127, 0.5)" : "rgba(127,127,0, 0.5)";
7133 focus_enabled = true;
7134 switch (fragType) {
7135 case MARK_LINE:
7136 case MARK_DONE_LINE:
7137 case MARK_UNSORTABLE_LINE:
7138 case MARK_SIMPLE_LINE:
7139 case MARK_SIMPLE_DONE_LINE:
7140 case MARK_DONE_UNARY_LINE:
7141 drawLinePartial(frags[1], frags[2], frags[3], frags[4],
7142 frags[5], frags[9]);
7143 if (draw_id) {
7144 drawLinePartialID(frags[0], frags[1], frags[2], frags[3], frags[4],
7145 frags[5], frags[9]);
7146 }
7147 break;
7148 case MARK_QUAD:
7149 case MARK_DONE_QUAD:
7150 case MARK_UNSORTABLE_QUAD:
7151 case MARK_SIMPLE_QUAD:
7152 case MARK_SIMPLE_DONE_QUAD:
7153 case MARK_DONE_UNARY_QUAD:
7154 drawQuadPartial(frags[1], frags[2], frags[3], frags[4],
7155 frags[5], frags[6], frags[7], frags[11]);
7156 if (draw_id) {
7157 drawQuadPartialID(frags[0], frags[1], frags[2], frags[3], frags[4],
7158 frags[5], frags[6], frags[7], frags[11]);
7159 }
7160 break;
7161 case MARK_CUBIC:
7162 case MARK_DONE_CUBIC:
7163 case MARK_UNSORTABLE_CUBIC:
7164 case MARK_SIMPLE_CUBIC:
7165 case MARK_SIMPLE_DONE_CUBIC:
7166 case MARK_DONE_UNARY_CUBIC:
7167 drawCubicPartial(frags[1], frags[2], frags[3], frags[4],
7168 frags[5], frags[6], frags[7], frags[8], frags[9], frags[13]);
7169 if (draw_id) {
7170 drawCubicPartialID(frags[0], frags[1], frags[2], frags[3], frags[4],
7171 frags[5], frags[6], frags[7], frags[8], frags[9], frags[13]);
7172 }
7173 break;
7174 case MARK_ANGLE_LAST:
7175 // FIXME: ignored for now
7176 break;
7177 default:
7178 console.log("unknown REC_TYPE_MARK frag type: " + fragType);
7179 throw "stop execution";
7180 }
7181 break;
7182 default:
7183 continue;
7184 }
7185 }
7186 switch (recType) {
7187 case REC_TYPE_SORT:
7188 if (!draw_sort || (step_limit > 0 && tIndex < lastSort)) {
7189 break;
7190 }
7191 var angles = []; // use tangent lines to describe arcs
7192 var windFrom = [];
7193 var windTo = [];
7194 var opp = [];
7195 var minXY = Number.MAX_VALUE;
7196 var partial;
7197 focus_enabled = true;
7198 var someUnsortable = false;
7199 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
7200 var fragType = records[recordIndex];
7201 var frags = records[recordIndex + 1];
7202 var unsortable = (fragType == SORT_UNARY && frags[14]) ||
7203 (fragType == SORT_BINARY && frags[16]);
7204 someUnsortable |= unsortable;
7205 switch (fragType) {
7206 case SORT_UNARY:
7207 case SORT_BINARY:
7208 partial = curvePartialByID(test, frags[0], frags[6], frags[8]);
7209 break;
7210 default:
7211 console.log("unknown REC_TYPE_SORT frag type: " + fragType);
7212 throw "stop execution";
7213 }
7214 var dx = boundsWidth(partial);
7215 var dy = boundsHeight(partial);
7216 minXY = Math.min(minXY, dx * dx + dy * dy);
7217 if (collect_bounds) {
7218 continue;
7219 }
7220 angles.push(tangent(partial));
7221 var from = frags[12];
7222 var to = frags[12];
7223 var sgn = frags[10];
7224 if (sgn < 0) {
7225 from -= frags[11];
7226 } else if (sgn > 0) {
7227 to -= frags[11];
7228 }
7229 windFrom.push(from + (unsortable ? "!" : ""));
7230 windTo.push(to + (unsortable ? "!" : ""));
7231 opp.push(fragType == SORT_BINARY);
7232 if (draw_sort == 1) {
7233 drawOrder(partial, frags[12]);
7234 } else {
7235 drawOrder(partial, (recordIndex / 2) + 1);
7236 }
7237 }
7238 var radius = Math.sqrt(minXY) / 2 * scale;
7239 radius = Math.min(50, radius);
7240 var scaledRadius = radius / scale;
7241 var centerX = partial[0];
7242 var centerY = partial[1];
7243 if (collect_bounds) {
7244 if (focus_enabled) {
7245 focusXmin = Math.min(focusXmin, centerX - scaledRadius);
7246 focusYmin = Math.min(focusYmin, centerY - scaledRadius);
7247 focusXmax = Math.max(focusXmax, centerX + scaledRadius);
7248 focusYmax = Math.max(focusYmax, centerY + scaledRadius);
7249 }
7250 break;
7251 }
7252 break;
7253 default:
7254 break;
7255 }
7256 }
7257 if (collect_bounds) {
7258 return;
7259 }
7260 if (draw_log && logStart >= 0) {
7261 ctx.font = "normal 10px Arial";
7262 ctx.textAlign = "left";
7263 ctx.beginPath();
7264 var top = screenHeight - 20 - (logRange + 2) * 10;
7265 ctx.rect(50, top, screenWidth - 100, (logRange + 2) * 10);
7266 ctx.fillStyle = "white";
7267 ctx.fill();
7268 ctx.fillStyle = "rgba(0,0,0, 0.5)";
7269 if (logStart > 0) {
7270 ctx.fillText(lines[logStart - 1], 50, top + 8);
7271 }
7272 ctx.fillStyle = "black";
7273 for (var idx = 0; idx < logRange; ++idx) {
7274 ctx.fillText(lines[logStart + idx], 50, top + 18 + 10 * idx);
7275 }
7276 ctx.fillStyle = "rgba(0,0,0, 0.5)";
7277 if (logStart + logRange < lines.length) {
7278 ctx.fillText(lines[logStart + logRange], 50, top + 18 + 10 * logRange);
7279 }
7280 }
7281 if (draw_legend) {
7282 var pos = 0;
caryclark54359292015-03-26 07:52:43 -07007283 var drawSomething = draw_add | draw_active | draw_angle | draw_sort | draw_mark;
caryclarkdac1d172014-06-17 05:15:38 -07007284 // drawBox(pos++, "yellow", "black", opLetter, true, '');
7285 drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_intersection > 1 ? sectCount : sectMax2, draw_intersection, intersectionKey);
7286 drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_add ? addCount : addMax, draw_add, addKey);
7287 drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_active ? activeCount : activeMax, draw_active, activeKey);
7288 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_angle ? angleCount : angleMax, draw_angle, angleKey);
7289 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_op ? opCount : opMax, draw_op, opKey);
7290 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_sort ? sortCount : sortMax, draw_sort, sortKey);
caryclark03b03ca2015-04-23 09:13:37 -07007291 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_top ? topCount : topMax, draw_top, topKey);
caryclarkdac1d172014-06-17 05:15:38 -07007292 drawBox(pos++, "rgba(127,0,127, 0.3)", "black", draw_mark ? markCount : markMax, draw_mark, markKey);
7293 drawBox(pos++, "black", "white",
7294 (new Array('P', 'P1', 'P2', 'P'))[draw_path], draw_path != 0, pathKey);
7295 drawBox(pos++, "rgba(0,63,0, 0.7)", "white",
7296 (new Array('Q', 'Q', 'C', 'QC', 'Qc', 'Cq'))[draw_computed],
7297 draw_computed != 0, computedKey);
7298 drawBox(pos++, "green", "black", step_limit, drawSomething, '');
7299 drawBox(pos++, "green", "black", stepMax, drawSomething, '');
7300 drawBox(pos++, "rgba(255,0,0, 0.6)", "black", lastIndex, drawSomething & draw_log, '');
7301 drawBox(pos++, "rgba(255,0,0, 0.6)", "black", test.length - 1, drawSomething & draw_log, '');
7302 if (curve_t) {
7303 drawCurveTControl();
7304 }
7305 ctx.font = "normal 20px Arial";
7306 ctx.fillStyle = "rgba(0,0,0, 0.3)";
7307 ctx.textAlign = "right";
7308 ctx.fillText(scale.toFixed(decimal_places) + 'x' , screenWidth - 10, screenHeight - 5);
7309 }
7310 if (draw_hints) {
7311 ctx.font = "normal 10px Arial";
7312 ctx.fillStyle = "rgba(0,0,0, 0.5)";
7313 ctx.textAlign = "right";
7314 var y = 4;
7315 ctx.fillText("control lines : " + controlLinesKey, ctx.screenWidthwidth - 10, pos * 50 + y++ * 10);
7316 ctx.fillText("curve t : " + curveTKey, screenWidth - 10, pos * 50 + y++ * 10);
7317 ctx.fillText("deriviatives : " + deriviativesKey, screenWidth - 10, pos * 50 + y++ * 10);
7318 ctx.fillText("intersect t : " + intersectTKey, screenWidth - 10, pos * 50 + y++ * 10);
caryclarkdac1d172014-06-17 05:15:38 -07007319 ctx.fillText("log : " + logKey, screenWidth - 10, pos * 50 + y++ * 10);
7320 ctx.fillText("log curve : " + logCurvesKey, screenWidth - 10, pos * 50 + y++ * 10);
7321 ctx.fillText("mid point : " + midpointKey, screenWidth - 10, pos * 50 + y++ * 10);
7322 ctx.fillText("points : " + ptsKey, screenWidth - 10, pos * 50 + y++ * 10);
7323 ctx.fillText("sequence : " + sequenceKey, screenWidth - 10, pos * 50 + y++ * 10);
7324 ctx.fillText("xy : " + xyKey, screenWidth - 10, pos * 50 + y++ * 10);
7325 }
7326}
7327
7328function drawBox(y, backC, foreC, str, enable, label) {
7329 ctx.beginPath();
7330 ctx.fillStyle = backC;
7331 ctx.rect(screenWidth - 40, y * 50 + 10, 40, 30);
7332 ctx.fill();
7333 ctx.font = "normal 16px Arial";
7334 ctx.fillStyle = foreC;
7335 ctx.textAlign = "center";
7336 ctx.fillText(str, screenWidth - 20, y * 50 + 32);
7337 if (!enable) {
7338 ctx.fillStyle = "rgba(255,255,255, 0.5)";
7339 ctx.fill();
7340 }
7341 if (label != '') {
7342 ctx.font = "normal 9px Arial";
7343 ctx.fillStyle = "black";
7344 ctx.fillText(label, screenWidth - 47, y * 50 + 40);
7345 }
7346}
7347
7348function drawCurveTControl() {
7349 ctx.lineWidth = 2;
7350 ctx.strokeStyle = "rgba(0,0,0, 0.3)";
7351 ctx.beginPath();
7352 ctx.rect(screenWidth - 80, 40, 28, screenHeight - 80);
7353 ctx.stroke();
7354 var ty = 40 + curveT * (screenHeight - 80);
7355 ctx.beginPath();
7356 ctx.moveTo(screenWidth - 80, ty);
7357 ctx.lineTo(screenWidth - 85, ty - 5);
7358 ctx.lineTo(screenWidth - 85, ty + 5);
7359 ctx.lineTo(screenWidth - 80, ty);
7360 ctx.fillStyle = "rgba(0,0,0, 0.6)";
7361 ctx.fill();
7362 var num = curveT.toFixed(decimal_places);
7363 ctx.font = "normal 10px Arial";
7364 ctx.textAlign = "left";
7365 ctx.fillText(num, screenWidth - 78, ty);
7366}
7367
7368function ptInTControl() {
7369 var e = window.event;
7370 var tgt = e.target || e.srcElement;
7371 var left = tgt.offsetLeft;
7372 var top = tgt.offsetTop;
7373 var x = (e.clientX - left);
7374 var y = (e.clientY - top);
7375 if (x < screenWidth - 80 || x > screenWidth - 50) {
7376 return false;
7377 }
7378 if (y < 40 || y > screenHeight - 80) {
7379 return false;
7380 }
7381 curveT = (y - 40) / (screenHeight - 120);
7382 if (curveT < 0 || curveT > 1) {
7383 throw "stop execution";
7384 }
7385 return true;
7386}
7387
7388function drawTop() {
7389 if (tests[testIndex] == null) {
7390 var str = testDivs[testIndex].textContent;
7391 parse_all(str);
7392 var title = testDivs[testIndex].id.toString();
7393 testTitles[testIndex] = title;
7394 }
7395 init(tests[testIndex]);
7396 redraw();
7397}
7398
7399function redraw() {
7400 if (focus_on_selection) {
7401 collect_bounds = true;
7402 draw(tests[testIndex], testLines[testIndex], testTitles[testIndex]);
7403 collect_bounds = false;
7404 if (focusXmin < focusXmax && focusYmin < focusYmax) {
7405 setScale(focusXmin, focusXmax, focusYmin, focusYmax);
7406 }
7407 }
7408 ctx.beginPath();
7409 ctx.fillStyle = "white";
7410 ctx.rect(0, 0, screenWidth, screenHeight);
7411 ctx.fill();
7412 draw(tests[testIndex], testLines[testIndex], testTitles[testIndex]);
7413}
7414
7415function dumpCurvePartial(test, id, t0, t1) {
7416 var curve = curveByID(test, id);
7417 var name = ["line", "quad", "cubic"][curve.length / 2 - 2];
7418 console.log("id=" + id + " " + name + "=" + curveToString(curve)
7419 + " t0=" + t0 + " t1=" + t1
7420 + " partial=" + curveToString(curvePartialByID(test, id, t0, t1)));
7421}
7422
7423function dumpAngleTest(test, id, t0, t1) {
7424 var curve = curveByID(test, id);
7425 console.log(" { {" + curveToString(curve) + "}, "
7426 + curve.length / 2 + ", " + t0 + ", " + t1 + ", {} }, //");
7427}
7428
7429function dumpLogToConsole() {
7430 if (logStart < 0) {
7431 return;
7432 }
7433 var test = tests[testIndex];
7434 var recType = REC_TYPE_UNKNOWN;
7435 var records;
7436 for (var index = 0; index < test.length; index += 3) {
7437 var lastLineNo = test[index + 1];
7438 if (lastLineNo >= logStart && lastLineNo < logStart + logRange) {
7439 recType = test[index];
7440 records = test[index + 2];
7441 break;
7442 }
7443 }
7444 if (recType == REC_TYPE_UNKNOWN) {
7445 return;
7446 }
7447 var lines = testLines[testIndex];
7448 for (var idx = 0; idx < logRange; ++idx) {
7449 var line = lines[logStart + idx];
7450 console.log(line);
7451 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
7452 var fragType = records[recordIndex];
7453 var frags = records[recordIndex + 1];
7454 if (recType == REC_TYPE_ANGLE && fragType == ANGLE_AFTER) {
caryclarkdac1d172014-06-17 05:15:38 -07007455 dumpCurvePartial(test, frags[0], frags[4], frags[5]);
7456 dumpCurvePartial(test, frags[6], frags[10], frags[11]);
7457 dumpCurvePartial(test, frags[12], frags[16], frags[17]);
7458 console.log("\nstatic IntersectData intersectDataSet[] = { //");
7459 dumpAngleTest(test, frags[0], frags[4], frags[5]);
7460 dumpAngleTest(test, frags[6], frags[10], frags[11]);
7461 dumpAngleTest(test, frags[12], frags[16], frags[17]);
7462 console.log("}; //");
7463 }
7464 }
7465 }
7466}
7467
7468var activeKey = 'a';
7469var pathKey = 'b';
7470var pathBackKey = 'B';
7471var centerKey = 'c';
7472var addKey = 'd';
7473var deriviativesKey = 'f';
7474var angleKey = 'g';
7475var angleBackKey = 'G';
caryclarkdac1d172014-06-17 05:15:38 -07007476var intersectionKey = 'i';
7477var intersectionBackKey = 'I';
7478var sequenceKey = 'j';
7479var midpointKey = 'k';
7480var logKey = 'l';
7481var logToConsoleKey = 'L';
7482var markKey = 'm';
7483var sortKey = 'o';
7484var opKey = 'p';
7485var opBackKey = 'P';
7486var computedKey = 'q';
7487var computedBackKey = 'Q';
7488var stepKey = 's';
7489var stepBackKey = 'S';
7490var intersectTKey = 't';
caryclark03b03ca2015-04-23 09:13:37 -07007491var topKey = 'T';
caryclarkdac1d172014-06-17 05:15:38 -07007492var curveTKey = 'u';
7493var controlLinesBackKey = 'V';
7494var controlLinesKey = 'v';
7495var ptsKey = 'x';
7496var xyKey = 'y';
7497var logCurvesKey = 'z';
7498var focusKey = '`';
7499var idKey = '.';
7500var retinaKey = '\\';
7501
7502function doKeyPress(evt) {
7503 var char = String.fromCharCode(evt.charCode);
7504 var focusWasOn = false;
7505 switch (char) {
7506 case '0':
7507 case '1':
7508 case '2':
7509 case '3':
7510 case '4':
7511 case '5':
7512 case '6':
7513 case '7':
7514 case '8':
7515 case '9':
7516 decimal_places = char - '0';
7517 redraw();
7518 break;
7519 case activeKey:
7520 draw_active ^= true;
7521 redraw();
7522 break;
7523 case addKey:
7524 draw_add ^= true;
7525 redraw();
7526 break;
7527 case angleKey:
caryclark54359292015-03-26 07:52:43 -07007528 draw_angle = (draw_angle + 1) % 4;
caryclarkdac1d172014-06-17 05:15:38 -07007529 redraw();
7530 break;
7531 case angleBackKey:
7532 draw_angle = (draw_angle + 2) % 3;
7533 redraw();
7534 break;
7535 case centerKey:
7536 setScale(xmin, xmax, ymin, ymax);
7537 redraw();
7538 break;
7539 case controlLinesBackKey:
7540 control_lines = (control_lines + 3) % 4;
7541 redraw();
7542 break;
7543 case controlLinesKey:
7544 control_lines = (control_lines + 1) % 4;
7545 redraw();
7546 break;
7547 case computedBackKey:
7548 draw_computed = (draw_computed + 5) % 6;
7549 redraw();
7550 break;
7551 case computedKey:
7552 draw_computed = (draw_computed + 1) % 6;
7553 redraw();
7554 break;
7555 case curveTKey:
7556 curve_t ^= true;
7557 if (curve_t) {
7558 draw_legend = true;
7559 }
7560 redraw();
7561 break;
7562 case deriviativesKey:
7563 draw_deriviatives = (draw_deriviatives + 1) % 3;
7564 redraw();
7565 break;
7566 case focusKey:
7567 focus_on_selection ^= true;
7568 setScale(xmin, xmax, ymin, ymax);
7569 redraw();
7570 break;
caryclarkdac1d172014-06-17 05:15:38 -07007571 case idKey:
7572 draw_id ^= true;
7573 redraw();
7574 break;
7575 case intersectionBackKey:
7576 draw_intersection = (draw_intersection + 3) % 4;
7577 redraw();
7578 break;
7579 case intersectionKey:
7580 draw_intersection = (draw_intersection + 1) % 4;
7581 redraw();
7582 break;
7583 case intersectTKey:
7584 draw_intersectT ^= true;
7585 redraw();
7586 break;
7587 case logCurvesKey:
7588 logCurves(tests[testIndex]);
7589 break;
7590 case logKey:
7591 draw_log ^= true;
7592 redraw();
7593 break;
7594 case logToConsoleKey:
7595 if (draw_log) {
7596 dumpLogToConsole();
7597 }
7598 break;
7599 case markKey:
7600 draw_mark ^= true;
7601 redraw();
7602 break;
7603 case midpointKey:
7604 draw_midpoint ^= true;
7605 redraw();
7606 break;
7607 case opKey:
7608 draw_op = (draw_op + 1) % 3;
7609 redraw();
7610 break;
7611 case opBackKey:
7612 draw_op = (draw_op + 2) % 3;
7613 redraw();
7614 break;
7615 case pathKey:
7616 draw_path = (draw_path + 1) % 4;
7617 redraw();
7618 break;
7619 case pathBackKey:
7620 draw_path = (draw_path + 3) % 4;
7621 redraw();
7622 break;
7623 case ptsKey:
7624 pt_labels = (pt_labels + 1) % 3;
7625 redraw();
7626 break;
7627 case retinaKey:
7628 retina_scale ^= true;
7629 drawTop();
7630 break;
7631 case sequenceKey:
7632 draw_sequence ^= true;
7633 redraw();
7634 break;
7635 case sortKey:
7636 draw_sort = (draw_sort + 1) % 3;
7637 drawTop();
7638 break;
7639 case stepKey:
7640 step_limit++;
7641 if (step_limit > stepMax) {
7642 step_limit = stepMax;
7643 }
7644 redraw();
7645 break;
7646 case stepBackKey:
7647 step_limit--;
7648 if (step_limit < 0) {
7649 step_limit = 0;
7650 }
7651 redraw();
7652 break;
caryclark03b03ca2015-04-23 09:13:37 -07007653 case topKey:
7654 draw_top ^= true;
7655 redraw();
7656 break;
caryclarkdac1d172014-06-17 05:15:38 -07007657 case xyKey:
7658 debug_xy = (debug_xy + 1) % 3;
7659 redraw();
7660 break;
7661 case '-':
7662 focusWasOn = focus_on_selection;
7663 if (focusWasOn) {
7664 focus_on_selection = false;
7665 scale /= 1.2;
7666 } else {
7667 scale /= 2;
7668 calcLeftTop();
7669 }
7670 redraw();
7671 focus_on_selection = focusWasOn;
7672 break;
7673 case '=':
7674 case '+':
7675 focusWasOn = focus_on_selection;
7676 if (focusWasOn) {
7677 focus_on_selection = false;
7678 scale *= 1.2;
7679 } else {
7680 scale *= 2;
7681 calcLeftTop();
7682 }
7683 redraw();
7684 focus_on_selection = focusWasOn;
7685 break;
7686 case '?':
7687 draw_hints ^= true;
7688 if (draw_hints && !draw_legend) {
7689 draw_legend = true;
7690 }
7691 redraw();
7692 break;
7693 case '/':
7694 draw_legend ^= true;
7695 redraw();
7696 break;
7697 }
7698}
7699
7700function doKeyDown(evt) {
7701 var char = evt.keyCode;
7702 var preventDefault = false;
7703 switch (char) {
7704 case 37: // left arrow
7705 if (evt.shiftKey) {
7706 testIndex -= 9;
7707 }
7708 if (--testIndex < 0)
7709 testIndex = tests.length - 1;
7710 drawTop();
7711 preventDefault = true;
7712 break;
7713 case 39: // right arrow
7714 if (evt.shiftKey) {
7715 testIndex += 9;
7716 }
7717 if (++testIndex >= tests.length)
7718 testIndex = 0;
7719 drawTop();
7720 preventDefault = true;
7721 break;
7722 }
7723 if (preventDefault) {
7724 evt.preventDefault();
7725 return false;
7726 }
7727 return true;
7728}
7729
7730(function() {
7731 var hidden = "hidden";
7732
7733 // Standards:
7734 if (hidden in document)
7735 document.addEventListener("visibilitychange", onchange);
7736 else if ((hidden = "mozHidden") in document)
7737 document.addEventListener("mozvisibilitychange", onchange);
7738 else if ((hidden = "webkitHidden") in document)
7739 document.addEventListener("webkitvisibilitychange", onchange);
7740 else if ((hidden = "msHidden") in document)
7741 document.addEventListener("msvisibilitychange", onchange);
7742 // IE 9 and lower:
7743 else if ('onfocusin' in document)
7744 document.onfocusin = document.onfocusout = onchange;
7745 // All others:
7746 else
7747 window.onpageshow = window.onpagehide
7748 = window.onfocus = window.onblur = onchange;
7749
7750 function onchange (evt) {
7751 var v = 'visible', h = 'hidden',
7752 evtMap = {
7753 focus:v, focusin:v, pageshow:v, blur:h, focusout:h, pagehide:h
7754 };
7755
7756 evt = evt || window.event;
7757 if (evt.type in evtMap)
7758 document.body.className = evtMap[evt.type];
7759 else
7760 document.body.className = this[hidden] ? "hidden" : "visible";
7761 }
7762})();
7763
7764function calcXY() {
7765 var e = window.event;
7766 var tgt = e.target || e.srcElement;
7767 var left = tgt.offsetLeft;
7768 var top = tgt.offsetTop;
7769 mouseX = (e.clientX - left) / scale + srcLeft;
7770 mouseY = (e.clientY - top) / scale + srcTop;
7771}
7772
7773function calcLeftTop() {
7774 srcLeft = mouseX - screenWidth / 2 / scale;
7775 srcTop = mouseY - screenHeight / 2 / scale;
7776}
7777
7778var disableClick = false;
7779
7780function handleMouseClick() {
7781 if (disableClick) {
7782 return;
7783 }
7784 if (!curve_t || !ptInTControl()) {
7785 calcXY();
7786 calcLeftTop();
7787 }
7788 redraw();
7789// if (!curve_t || !ptInTControl()) {
7790// mouseX = screenWidth / 2 / scale + srcLeft;
7791// mouseY = screenHeight / 2 / scale + srcTop;
7792// }
7793}
7794
7795function handleMouseOver() {
7796 calcXY();
7797 if (debug_xy != 2) {
7798 return;
7799 }
7800 var num = mouseX.toFixed(decimal_places) + ", " + mouseY.toFixed(decimal_places);
7801 ctx.beginPath();
7802 ctx.rect(300,100,num.length * 6,10);
7803 ctx.fillStyle="white";
7804 ctx.fill();
7805 ctx.font = "normal 10px Arial";
7806 ctx.fillStyle="black";
7807 ctx.textAlign = "left";
7808 ctx.fillText(num, 300, 108);
7809}
7810
7811function start() {
7812 for (var i = 0; i < testDivs.length; ++i) {
7813 tests[i] = null;
7814 }
7815 testIndex = 0;
7816 drawTop();
7817 window.addEventListener('keypress', doKeyPress, true);
7818 window.addEventListener('keydown', doKeyDown, true);
7819 window.onresize = function() {
7820 drawTop();
7821 }
7822 /*
7823 window.onpagehide = function() {
7824 disableClick = true;
7825 }
7826 */
7827 window.onpageshow = function () {
7828 disableClick = false;
7829 }
7830}
7831
7832</script>
7833</head>
7834
7835<body onLoad="start();">
7836<canvas id="canvas" width="750" height="500"
7837 onmousemove="handleMouseOver()"
7838 onclick="handleMouseClick()"
7839 ></canvas >
7840</body>
7841</html>