blob: 6fc5566441cf5aafe2b1950e6cfb1cb503e3025b [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
caryclark30b9fdd2016-08-31 14:36:29 -07005Skia UnitTests: --match PathOpsOp$ --resourcePath resources\ SK_DEBUG
6
7<div id="cubicOp158">
8seg=1 {{{0, 1}, {2, 4}, {2, 0}, {2, 0}}}
9seg=2 {{{2, 0}, {0, 1}}}
caryclark55888e42016-07-18 10:01:36 -070010op diff
caryclark30b9fdd2016-08-31 14:36:29 -070011seg=3 {{{0, 2}, {0, 2}, {1, 0}, {4, 2}}}
12seg=4 {{{4, 2}, {0, 2}}}
13debugShowCubicLineIntersection wtTs[0]=0 {{{0,1}, {2,4}, {2,0}, {2,0}}} {{0,1}} wtTs[1]=1 {{2,0}} wnTs[0]=1 {{{2,0}, {0,1}}} wnTs[1]=0
14debugShowCubicIntersection wtTs[0]=0.0706687377 {{{0,1}, {2,4}, {2,0}, {2,0}}} {{0.394753844,1.53502536}} wtTs[1]=0.620977139 {{1.89110041,1.1249522}} wnTs[0]=0.343603 {{{0,2}, {0,2}, {1,0}, {4,2}}} wnTs[1]=0.713607334
15SkOpSegment::addT insert t=0.0706687377 segID=1 spanID=9
16SkOpSegment::addT insert t=0.343602514 segID=3 spanID=10
17SkOpSegment::addT insert t=0.620977139 segID=1 spanID=11
18SkOpSegment::addT insert t=0.713607334 segID=3 spanID=12
19debugShowCubicLineIntersection wtTs[0]=0.178517901 {{{0,1}, {2,4}, {2,0}, {2,0}}} {{0.891273797,2}} wtTs[1]=0.375922451 {{1.51387751,2}} wnTs[0]=0.777182 {{{4,2}, {0,2}}} wnTs[1]=0.621530611
20SkOpSegment::addT insert t=0.178517901 segID=1 spanID=13
21SkOpSegment::addT insert t=0.777181549 segID=4 spanID=14
22SkOpSegment::addT insert t=0.375922451 segID=1 spanID=15
23SkOpSegment::addT insert t=0.621530611 segID=4 spanID=16
24debugShowCubicLineIntersection wtTs[0]=0 {{{0,2}, {0,2}, {1,0}, {4,2}}} {{0,2}} wtTs[1]=1 {{4,2}} wnTs[0]=1 {{{4,2}, {0,2}}} wnTs[1]=0
25---------------------------------- start
26active after start:
27SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
28SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
29SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
30SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
31SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
32SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
33SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
34SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
35SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
36SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
37SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
38SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
39---------------------------------- addExpanded
40active after addExpanded:
41SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
42SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
43SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
44SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
45SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
46SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
47SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
48SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
49SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
50SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
51SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
52SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
53---------------------------------- moveMultiples
54active after moveMultiples:
55SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
56SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
57SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
58SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
59SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
60SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
61SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
62SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
63SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
64SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
65SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
66SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
67---------------------------------- moveNearby
68active after moveNearby:
69SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
70SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
71SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
72SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
73SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
74SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
75SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
76SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
77SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
78SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
79SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
80SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
81---------------------------------- addEndMovedSpans
82active after addEndMovedSpans:
83SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
84SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
85SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
86SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
87SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
88SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
89SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
90SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
91SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
92SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
93SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
94SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
95---------------------------------- addMissing2
96active after addMissing2:
97SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
98SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
99SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
100SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
101SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
102SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
103SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
104SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
105SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
106SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
107SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
108SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
109---------------------------------- moveNearby2
110active after moveNearby2:
111SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
112SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
113SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
114SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
115SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
116SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
117SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
118SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
119SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
120SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
121SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
122SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
123---------------------------------- expand2
124active after expand2:
125SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
126SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
127SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
128SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
129SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
130SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
131SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
132SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
133SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
134SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
135SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
136SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
137---------------------------------- addExpanded3
138active after addExpanded3:
139SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
140SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
141SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
142SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
143SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
144SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
145SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
146SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
147SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
148SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
149SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
150SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
151---------------------------------- mark1
152active after mark1:
153SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
154SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
155SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
156SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
157SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
158SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
159SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
160SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
161SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
162SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
163SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
164SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
165---------------------------------- missingCoincidence2
166active after missingCoincidence2:
167SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
168SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
169SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
170SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
171SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
172SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
173SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
174SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
175SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
176SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
177SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
178SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
179---------------------------------- missingCoincidence3
180active after missingCoincidence3:
181SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
182SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
183SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
184SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
185SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
186SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
187SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
188SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
189SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
190SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
191SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
192SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
193---------------------------------- coincidence.reorder
194active after coincidence.reorder:
195SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
196SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
197SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
198SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
199SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
200SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
201SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
202SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
203SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
204SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
205SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
206SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
207---------------------------------- pairs->apply
208active after pairs->apply:
209SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
210SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
211SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
212SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
213SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
214SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
215SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
216SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
217SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
218SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
219SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
220SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
221---------------------------------- pairs->findOverlaps
222active after pairs->findOverlaps:
223SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
224SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
225SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
226SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
227SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
228SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
229SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
230SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
231SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
232SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
233SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
234SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
235SkOpSegment::sortAngles [1] tStart=0.0706687377 [9]
236SkOpAngle::after [1/1] 9/9 tStart=0.0706687377 tEnd=0 < [3/9] 17/21 tStart=0.343602514 tEnd=0 < [1/2] 25/29 tStart=0.0706687377 tEnd=0.178517901 T 4
237SkOpAngle::afterPart {{{0.394754708,1.53502369}, {0.272687665,1.38905229}, {0.14133834,1.21200454}, {0,1}}} id=1
238SkOpAngle::afterPart {{{0.394754708,1.53502369}, {0.118062696,1.76387462}, {0,2}, {0,2}}} id=3
239SkOpAngle::afterPart {{{0.394754708,1.53502369}, {0.58104399,1.75779395}, {0.745714347,1.90818586}, {0.891273797,2}}} id=1
240SkOpAngle::after [1/1] 9/9 tStart=0.0706687377 tEnd=0 < [3/10] 1/1 tStart=0.343602514 tEnd=0.713607334 < [3/9] 17/21 tStart=0.343602514 tEnd=0 F 4
241SkOpAngle::afterPart {{{0.394754708,1.53502369}, {0.272687665,1.38905229}, {0.14133834,1.21200454}, {0,1}}} id=1
242SkOpAngle::afterPart {{{0.394754708,1.53502369}, {0.692707644,1.28858792}, {1.17460454,1.05058743}, {1.89110041,1.1249522}}} id=3
243SkOpAngle::afterPart {{{0.394754708,1.53502369}, {0.118062696,1.76387462}, {0,2}, {0,2}}} id=3
244SkOpAngle::after [3/9] 17/21 tStart=0.343602514 tEnd=0 < [3/10] 1/1 tStart=0.343602514 tEnd=0.713607334 < [1/2] 25/29 tStart=0.0706687377 tEnd=0.178517901 F 4
245SkOpAngle::afterPart {{{0.394754708,1.53502369}, {0.118062696,1.76387462}, {0,2}, {0,2}}} id=3
246SkOpAngle::afterPart {{{0.394754708,1.53502369}, {0.692707644,1.28858792}, {1.17460454,1.05058743}, {1.89110041,1.1249522}}} id=3
247SkOpAngle::afterPart {{{0.394754708,1.53502369}, {0.58104399,1.75779395}, {0.745714347,1.90818586}, {0.891273797,2}}} id=1
248SkOpAngle::after [1/2] 25/29 tStart=0.0706687377 tEnd=0.178517901 < [3/10] 1/1 tStart=0.343602514 tEnd=0.713607334 < [1/1] 9/9 tStart=0.0706687377 tEnd=0 T 4
249SkOpAngle::afterPart {{{0.394754708,1.53502369}, {0.58104399,1.75779395}, {0.745714347,1.90818586}, {0.891273797,2}}} id=1
250SkOpAngle::afterPart {{{0.394754708,1.53502369}, {0.692707644,1.28858792}, {1.17460454,1.05058743}, {1.89110041,1.1249522}}} id=3
251SkOpAngle::afterPart {{{0.394754708,1.53502369}, {0.272687665,1.38905229}, {0.14133834,1.21200454}, {0,1}}} id=1
252SkOpSegment::sortAngles [1] tStart=0.178517901 [13]
253SkOpAngle::after [1/3] 13/13 tStart=0.178517901 tEnd=0.0706687377 < [4/15] 31/31 tStart=0.777181549 tEnd=0.621530611 < [1/4] 29/30 tStart=0.178517901 tEnd=0.375922451 F 4
254SkOpAngle::afterPart {{{0.891273797,2}, {0.745713483,1.90818753}, {0.581043126,1.75779562}, {0.394753844,1.53502536}}} id=1
255SkOpAngle::afterPart {{{0.891273797,2}, {1.51387751,2}}} id=4
256SkOpAngle::afterPart {{{0.891273797,2}, {1.15770394,2.16805137}, {1.36011011,2.13984528}, {1.51387751,2}}} id=1
257SkOpAngle::after [1/3] 13/13 tStart=0.178517901 tEnd=0.0706687377 < [4/16] 15/15 tStart=0.777181549 tEnd=1 < [1/4] 29/30 tStart=0.178517901 tEnd=0.375922451 T 4
258SkOpAngle::afterPart {{{0.891273797,2}, {0.745713483,1.90818753}, {0.581043126,1.75779562}, {0.394753844,1.53502536}}} id=1
259SkOpAngle::afterPart {{{0.891273797,2}, {0,2}}} id=4
260SkOpAngle::afterPart {{{0.891273797,2}, {1.15770394,2.16805137}, {1.36011011,2.13984528}, {1.51387751,2}}} id=1
261SkOpSegment::sortAngles [1] tStart=0.375922451 [15]
262SkOpAngle::after [1/5] 17/16 tStart=0.375922451 tEnd=0.178517901 < [4/13] 31/31 tStart=0.621530611 tEnd=0 < [1/6] 1/5 tStart=0.375922451 tEnd=0.620977139 T 4
263SkOpAngle::afterPart {{{1.51387751,2}, {1.36011011,2.13984528}, {1.15770394,2.16805137}, {0.891273797,2}}} id=1
264SkOpAngle::afterPart {{{1.51387751,2}, {4,2}}} id=4
265SkOpAngle::afterPart {{{1.51387751,2}, {1.70476178,1.82639842}, {1.82069211,1.48075721}, {1.89110041,1.1249522}}} id=1
266SkOpAngle::after [1/5] 17/16 tStart=0.375922451 tEnd=0.178517901 < [4/14] 15/15 tStart=0.621530611 tEnd=0.777181549 < [4/13] 31/31 tStart=0.621530611 tEnd=0 F 4
267SkOpAngle::afterPart {{{1.51387751,2}, {1.36011011,2.13984528}, {1.15770394,2.16805137}, {0.891273797,2}}} id=1
268SkOpAngle::afterPart {{{1.51387751,2}, {0.891273797,2}}} id=4
269SkOpAngle::afterPart {{{1.51387751,2}, {4,2}}} id=4
270SkOpAngle::after [4/13] 31/31 tStart=0.621530611 tEnd=0 < [4/14] 15/15 tStart=0.621530611 tEnd=0.777181549 < [1/6] 1/5 tStart=0.375922451 tEnd=0.620977139 F 4
271SkOpAngle::afterPart {{{1.51387751,2}, {4,2}}} id=4
272SkOpAngle::afterPart {{{1.51387751,2}, {0.891273797,2}}} id=4
273SkOpAngle::afterPart {{{1.51387751,2}, {1.70476178,1.82639842}, {1.82069211,1.48075721}, {1.89110041,1.1249522}}} id=1
274SkOpAngle::after [1/6] 1/5 tStart=0.375922451 tEnd=0.620977139 < [4/14] 15/15 tStart=0.621530611 tEnd=0.777181549 < [1/5] 17/16 tStart=0.375922451 tEnd=0.178517901 T 4
275SkOpAngle::afterPart {{{1.51387751,2}, {1.70476178,1.82639842}, {1.82069211,1.48075721}, {1.89110041,1.1249522}}} id=1
276SkOpAngle::afterPart {{{1.51387751,2}, {0.891273797,2}}} id=4
277SkOpAngle::afterPart {{{1.51387751,2}, {1.36011011,2.13984528}, {1.15770394,2.16805137}, {0.891273797,2}}} id=1
278SkOpSegment::sortAngles [1] tStart=0.620977139 [11]
279SkOpAngle::after [1/7] 21/21 tStart=0.620977139 tEnd=0.375922451 < [3/11] 13/17 tStart=0.713607334 tEnd=0.343602514 < [1/8] 5/5 tStart=0.620977139 tEnd=1 F 4
280SkOpAngle::afterPart {{{1.89110041,1.1249522}, {1.82069211,1.48075721}, {1.70476178,1.82639842}, {1.51387751,2}}} id=1
281SkOpAngle::afterPart {{{1.89110041,1.1249522}, {1.17460454,1.05058743}, {0.692707644,1.28858792}, {0.394754708,1.53502369}}} id=3
282SkOpAngle::afterPart {{{1.89110041,1.1249522}, {1.99999999,0.574633264}, {2,0}, {2,0}}} id=1
283SkOpAngle::after [1/7] 21/21 tStart=0.620977139 tEnd=0.375922451 < [3/12] 29/29 tStart=0.713607334 tEnd=1 < [1/8] 5/5 tStart=0.620977139 tEnd=1 T 4
284SkOpAngle::afterPart {{{1.89110041,1.1249522}, {1.82069211,1.48075721}, {1.70476178,1.82639842}, {1.51387751,2}}} id=1
285SkOpAngle::afterPart {{{1.89110041,1.1249522}, {2.44568551,1.18251232}, {3.140822,1.42721467}, {4,2}}} id=3
286SkOpAngle::afterPart {{{1.89110041,1.1249522}, {1.99999999,0.574633264}, {2,0}, {2,0}}} id=1
287SkOpSegment::sortAngles [3] tStart=0.343602514 [10]
288SkOpSegment::sortAngles [3] tStart=0.713607334 [12]
289SkOpSegment::sortAngles [4] tStart=0.621530611 [16]
290SkOpSegment::sortAngles [4] tStart=0.777181549 [14]
291SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337475,1.21200621 0.272686801,1.38905396 0.394753844,1.53502536) t=0 tEnd=0.0706687377 windSum=? windValue=1
292SkOpSegment::debugShowActiveSpans id=1 (0.394753844,1.53502536 0.581043126,1.75779562 0.745713483,1.90818753 0.891273797,2) t=0.0706687377 tEnd=0.178517901 windSum=? windValue=1
293SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
294SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
295SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
296SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
297SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062696,1.76387462 0.394754708,1.53502369) t=0 tEnd=0.343602514 windSum=? windValue=1
298SkOpSegment::debugShowActiveSpans id=3 (0.394754708,1.53502369 0.692707644,1.28858792 1.17460454,1.05058743 1.89110041,1.1249522) t=0.343602514 tEnd=0.713607334 windSum=? windValue=1
299SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
300SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
301SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
302SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
303SkOpSpan::sortableTop dir=kLeft seg=1 t=0.0353343689 pt=(0.204603344,1.29227567)
304SkOpSpan::sortableTop [0] valid=1 operand=0 span=1 ccw=0 seg=1 {{{0, 1}, {2, 4}, {2, 0}, {2, 0}}} t=0.0353343689 pt=(0.204603344,1.29227567) slope=(5.58347868,7.55715759)
305SkOpSegment::markWinding id=1 (0,1 2,4 2,0 2,0) t=0 [1] (0,1) tEnd=0.0706687377 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
306SkOpSegment::markWinding id=1 (0,1 2,4 2,0 2,0) t=0 [1] (0,1) tEnd=0.0706687377 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
307SkOpSegment::markWinding id=2 (2,0 0,1) t=0 [3] (2,0) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
308SkOpSegment::markWinding id=1 (0,1 2,4 2,0 2,0) t=0.620977139 [11] (1.89110041,1.1249522) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
309SkOpSegment::activeOp id=1 t=0.0706687377 tEnd=0 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
310SkOpSegment::findNextOp simple
311SkOpSegment::markDone id=1 (0,1 2,4 2,0 2,0) t=0 [1] (0,1) tEnd=0.0706687377 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
312bridgeOp current id=1 from=(0.394753844,1.53502536) to=(0,1)
313path.moveTo(0.394753844,1.53502536);
314path.cubicTo(0.272686809,1.38905394, 0.141337469,1.21200621, 0,1);
315SkOpSegment::findNextOp simple
316SkOpSegment::markDone id=2 (2,0 0,1) t=0 [3] (2,0) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
317bridgeOp current id=2 from=(0,1) to=(2,0)
318SkOpSegment::markWinding id=3 (0,2 0,2 1,0 4,2) t=0.343602514 [10] (0.394754708,1.53502369) tEnd=0.713607334 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
319SkOpSegment::markAngle last segment=3 span=10 windSum=-1
320SkOpSegment::markWinding id=1 (0,1 2,4 2,0 2,0) t=0.375922451 [15] (1.51387751,2) tEnd=0.620977139 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
321SkOpSegment::markAngle last segment=1 span=15 windSum=1
322SkOpSegment::markWinding id=3 (0,2 0,2 1,0 4,2) t=0.713607334 [12] (1.89110041,1.1249522) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
323SkOpSegment::markWinding id=4 (4,2 0,2) t=0 [7] (4,2) tEnd=0.621530611 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
324SkOpSegment::markAngle last segment=4 span=16 windSum=?
325SkOpSegment::findNextOp
326SkOpAngle::dumpOne [1/8] next=3/11 sect=5/5 s=0.620977139 [11] e=1 [2] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
327SkOpAngle::dumpOne [3/11] next=1/7 sect=13/17 s=0.713607334 [12] e=0.343602514 [10] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
328SkOpAngle::dumpOne [1/7] next=3/12 sect=21/21 s=0.620977139 [11] e=0.375922451 [15] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1
329SkOpAngle::dumpOne [3/12] next=1/8 sect=29/29 s=0.713607334 [12] e=1 [6] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
330SkOpSegment::activeOp id=3 t=0.713607334 tEnd=0.343602514 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
331SkOpSegment::findNextOp chase.append segment=3 span=10 windSum=-1
332SkOpSegment::activeOp id=1 t=0.620977139 tEnd=0.375922451 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
333SkOpSegment::markDone id=1 (0,1 2,4 2,0 2,0) t=0.375922451 [15] (1.51387751,2) tEnd=0.620977139 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
334SkOpSegment::findNextOp chase.append segment=1 span=15 windSum=1
335SkOpSegment::activeOp id=3 t=0.713607334 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
336SkOpSegment::markDone id=3 (0,2 0,2 1,0 4,2) t=0.713607334 [12] (1.89110041,1.1249522) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
337SkOpSegment::markDone id=4 (4,2 0,2) t=0 [7] (4,2) tEnd=0.621530611 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
338SkOpSegment::findNextOp chase.append segment=4 span=16 windSum=-2147483647
339SkOpSegment::markDone id=1 (0,1 2,4 2,0 2,0) t=0.620977139 [11] (1.89110041,1.1249522) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
340SkOpSegment::findNextOp from:[1] to:[3] start=18149624 end=18149400
341bridgeOp current id=1 from=(2,0) to=(1.89110041,1.1249522)
342path.lineTo(2,0);
343path.cubicTo(2,0, 2,0.574633241, 1.89110041,1.1249522);
344SkOpSegment::markWinding id=3 (0,2 0,2 1,0 4,2) t=0 [5] (0,2) tEnd=0.343602514 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
345SkOpSegment::markWinding id=4 (4,2 0,2) t=0.777181549 [14] (0.891273797,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
346SkOpSegment::markAngle last segment=4 span=14 windSum=-1
347SkOpSegment::markWinding id=1 (0,1 2,4 2,0 2,0) t=0.0706687377 [9] (0.394753844,1.53502536) tEnd=0.178517901 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
348SkOpSegment::markAngle last segment=1 span=13 windSum=?
349SkOpSegment::findNextOp
350SkOpAngle::dumpOne [3/10] next=1/1 sect=1/1 s=0.343602514 [10] e=0.713607334 [12] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
351SkOpAngle::dumpOne [1/1] next=3/9 sect=9/9 s=0.0706687377 [9] e=0 [1] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
352SkOpAngle::dumpOne [3/9] next=1/2 sect=17/21 s=0.343602514 [10] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
353SkOpAngle::dumpOne [1/2] next=3/10 sect=25/29 s=0.0706687377 [9] e=0.178517901 [13] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1
354SkOpSegment::activeOp id=1 t=0.0706687377 tEnd=0 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
355SkOpSegment::activeOp id=3 t=0.343602514 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
356SkOpSegment::markDone id=3 (0,2 0,2 1,0 4,2) t=0 [5] (0,2) tEnd=0.343602514 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
357SkOpSegment::markDone id=4 (4,2 0,2) t=0.777181549 [14] (0.891273797,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
358SkOpSegment::findNextOp chase.append segment=4 span=14 windSum=-1
359SkOpSegment::activeOp id=1 t=0.0706687377 tEnd=0.178517901 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
360SkOpSegment::markDone id=1 (0,1 2,4 2,0 2,0) t=0.0706687377 [9] (0.394753844,1.53502536) tEnd=0.178517901 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
361SkOpSegment::findNextOp chase.append segment=1 span=13 windSum=-2147483647
362SkOpSegment::markDone id=3 (0,2 0,2 1,0 4,2) t=0.343602514 [10] (0.394754708,1.53502369) tEnd=0.713607334 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
363SkOpSegment::findNextOp from:[3] to:[1] start=18149288 end=129364480
364bridgeOp current id=3 from=(1.89110041,1.1249522) to=(0.394754708,1.53502369)
365path.cubicTo(1.17460454,1.05058742, 0.692707658,1.28858793, 0.394754708,1.53502369);
366SkOpSegment::findNextOp simple
367c:\puregit\src\pathops\skopsegment.cpp:164: fatal error: "assert((this->globalState() && (this->globalState()->debugCheckHealth() || this->globalState()->debugSkipAssert())) || (!fail))"
368pathops_unittest.exe has triggered a breakpoint.
369</div>
370
371<div id="cubicOp158ref">
372seg=1 {{{0, 1}, {2, 4}, {2, 0}, {2, 0}}}
373seg=2 {{{2, 0}, {0, 1}}}
374op diff
375seg=3 {{{0, 2}, {0, 2}, {1, 0}, {4, 2}}}
376seg=4 {{{4, 2}, {0, 2}}}
377debugShowCubicLineIntersection wtTs[0]=0 {{{0,1}, {2,4}, {2,0}, {2,0}}} {{0,1}} wtTs[1]=1 {{2,0}} wnTs[0]=1 {{{2,0}, {0,1}}} wnTs[1]=0
378debugShowCubicIntersection wtTs[0]=0.0706686482 {{{0,1}, {2,4}, {2,0}, {2,0}}} {{0.394753397,1.53502476}} wtTs[1]=0.620977139 {{1.89110041,1.1249522}} wnTs[0]=0.343602 {{{0,2}, {0,2}, {1,0}, {4,2}}} wnTs[1]=0.713607334
379SkOpSegment::addT insert t=0.0706686482 segID=1 spanID=9
380SkOpSegment::addT insert t=0.343601972 segID=3 spanID=10
381SkOpSegment::addT insert t=0.620977139 segID=1 spanID=11
382SkOpSegment::addT insert t=0.713607334 segID=3 spanID=12
383debugShowCubicLineIntersection wtTs[0]=0.178517901 {{{0,1}, {2,4}, {2,0}, {2,0}}} {{0.891273797,2}} wtTs[1]=0.375922451 {{1.51387751,2}} wnTs[0]=0.777182 {{{4,2}, {0,2}}} wnTs[1]=0.621530611
384SkOpSegment::addT insert t=0.178517901 segID=1 spanID=13
385SkOpSegment::addT insert t=0.777181549 segID=4 spanID=14
386SkOpSegment::addT insert t=0.375922451 segID=1 spanID=15
387SkOpSegment::addT insert t=0.621530611 segID=4 spanID=16
388debugShowCubicLineIntersection wtTs[0]=0 {{{0,2}, {0,2}, {1,0}, {4,2}}} {{0,2}} wtTs[1]=1 {{4,2}} wnTs[0]=1 {{{4,2}, {0,2}}} wnTs[1]=0
caryclark55888e42016-07-18 10:01:36 -0700389--------------------------------- start
390active after start:
caryclark30b9fdd2016-08-31 14:36:29 -0700391SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
392SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
393SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
394SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
395SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
396SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
397SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
398SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
399SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
400SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
401SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
402SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700403--------------------------------- addExpanded
404active after addExpanded:
caryclark30b9fdd2016-08-31 14:36:29 -0700405SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
406SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
407SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
408SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
409SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
410SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
411SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
412SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
413SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
414SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
415SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
416SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700417--------------------------------- moveMultiples
418active after moveMultiples:
caryclark30b9fdd2016-08-31 14:36:29 -0700419SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
420SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
421SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
422SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
423SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
424SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
425SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
426SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
427SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
428SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
429SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
430SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700431--------------------------------- moveNearby
432active after moveNearby:
caryclark30b9fdd2016-08-31 14:36:29 -0700433SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
434SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
435SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
436SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
437SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
438SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
439SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
440SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
441SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
442SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
443SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
444SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700445--------------------------------- addEndMovedSpans
446active after addEndMovedSpans:
caryclark30b9fdd2016-08-31 14:36:29 -0700447SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
448SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
449SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
450SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
451SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
452SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
453SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
454SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
455SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
456SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
457SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
458SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700459--------------------------------- addMissing2
460active after addMissing2:
caryclark30b9fdd2016-08-31 14:36:29 -0700461SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
462SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
463SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
464SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
465SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
466SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
467SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
468SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
469SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
470SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
471SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
472SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700473--------------------------------- moveNearby2
474active after moveNearby2:
caryclark30b9fdd2016-08-31 14:36:29 -0700475SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
476SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
477SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
478SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
479SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
480SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
481SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
482SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
483SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
484SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
485SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
486SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700487--------------------------------- expand2
488active after expand2:
caryclark30b9fdd2016-08-31 14:36:29 -0700489SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
490SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
491SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
492SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
493SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
494SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
495SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
496SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
497SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
498SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
499SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
500SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700501--------------------------------- addExpanded3
502active after addExpanded3:
caryclark30b9fdd2016-08-31 14:36:29 -0700503SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
504SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
505SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
506SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
507SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
508SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
509SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
510SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
511SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
512SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
513SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
514SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700515--------------------------------- mark1
516active after mark1:
caryclark30b9fdd2016-08-31 14:36:29 -0700517SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
518SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
519SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
520SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
521SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
522SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
523SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
524SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
525SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
526SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
527SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
528SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700529--------------------------------- missingCoincidence2
530active after missingCoincidence2:
caryclark30b9fdd2016-08-31 14:36:29 -0700531SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
532SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
533SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
534SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
535SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
536SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
537SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
538SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
539SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
540SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
541SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
542SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700543--------------------------------- missingCoincidence3
544active after missingCoincidence3:
caryclark30b9fdd2016-08-31 14:36:29 -0700545SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
546SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
547SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
548SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
549SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
550SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
551SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
552SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
553SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
554SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
555SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
556SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700557--------------------------------- coincidence.reorder
558active after coincidence.reorder:
caryclark30b9fdd2016-08-31 14:36:29 -0700559SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
560SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
561SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
562SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
563SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
564SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
565SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
566SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
567SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
568SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
569SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
570SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700571--------------------------------- pairs->apply
572active after pairs->apply:
caryclark30b9fdd2016-08-31 14:36:29 -0700573SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
574SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
575SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
576SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
577SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
578SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
579SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
580SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
581SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
582SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
583SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
584SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
caryclark55888e42016-07-18 10:01:36 -0700585--------------------------------- pairs->findOverlaps
586active after pairs->findOverlaps:
caryclark30b9fdd2016-08-31 14:36:29 -0700587SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
588SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
589SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
590SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
591SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
592SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
593SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
594SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
595SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
596SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
597SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
598SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
599SkOpSegment::sortAngles [1] tStart=0.0706686482 [9]
600SkOpAngle::after [1/1] 9/9 tStart=0.0706686482 tEnd=0 < [3/9] 17/21 tStart=0.343601972 tEnd=0 < [1/2] 25/29 tStart=0.0706686482 tEnd=0.178517901 T 4
601SkOpAngle::afterPart {{{0.394753397,1.53502476}, {0.272686485,1.38905347}, {0.141337296,1.21200594}, {0,1}}} id=1
602SkOpAngle::afterPart {{{0.394753397,1.53502476}, {0.118062323,1.76387536}, {0,2}, {0,2}}} id=3
603SkOpAngle::afterPart {{{0.394753397,1.53502476}, {0.581042869,1.75779533}, {0.745713362,1.90818745}, {0.891273797,2}}} id=1
604SkOpAngle::after [1/1] 9/9 tStart=0.0706686482 tEnd=0 < [3/10] 1/1 tStart=0.343601972 tEnd=0.713607334 < [3/9] 17/21 tStart=0.343601972 tEnd=0 F 4
605SkOpAngle::afterPart {{{0.394753397,1.53502476}, {0.272686485,1.38905347}, {0.141337296,1.21200594}, {0,1}}} id=1
606SkOpAngle::afterPart {{{0.394753397,1.53502476}, {0.69270623,1.28858861}, {1.17460349,1.05058733}, {1.89110041,1.1249522}}} id=3
607SkOpAngle::afterPart {{{0.394753397,1.53502476}, {0.118062323,1.76387536}, {0,2}, {0,2}}} id=3
608SkOpAngle::after [3/9] 17/21 tStart=0.343601972 tEnd=0 < [3/10] 1/1 tStart=0.343601972 tEnd=0.713607334 < [1/2] 25/29 tStart=0.0706686482 tEnd=0.178517901 F 4
609SkOpAngle::afterPart {{{0.394753397,1.53502476}, {0.118062323,1.76387536}, {0,2}, {0,2}}} id=3
610SkOpAngle::afterPart {{{0.394753397,1.53502476}, {0.69270623,1.28858861}, {1.17460349,1.05058733}, {1.89110041,1.1249522}}} id=3
611SkOpAngle::afterPart {{{0.394753397,1.53502476}, {0.581042869,1.75779533}, {0.745713362,1.90818745}, {0.891273797,2}}} id=1
612SkOpAngle::after [1/2] 25/29 tStart=0.0706686482 tEnd=0.178517901 < [3/10] 1/1 tStart=0.343601972 tEnd=0.713607334 < [1/1] 9/9 tStart=0.0706686482 tEnd=0 T 4
613SkOpAngle::afterPart {{{0.394753397,1.53502476}, {0.581042869,1.75779533}, {0.745713362,1.90818745}, {0.891273797,2}}} id=1
614SkOpAngle::afterPart {{{0.394753397,1.53502476}, {0.69270623,1.28858861}, {1.17460349,1.05058733}, {1.89110041,1.1249522}}} id=3
615SkOpAngle::afterPart {{{0.394753397,1.53502476}, {0.272686485,1.38905347}, {0.141337296,1.21200594}, {0,1}}} id=1
616SkOpSegment::sortAngles [1] tStart=0.178517901 [13]
617SkOpAngle::after [1/3] 13/13 tStart=0.178517901 tEnd=0.0706686482 < [4/15] 31/31 tStart=0.777181549 tEnd=0.621530611 < [1/4] 29/30 tStart=0.178517901 tEnd=0.375922451 F 4
618SkOpAngle::afterPart {{{0.891273797,2}, {0.745713362,1.90818745}, {0.581042869,1.75779533}, {0.394753397,1.53502476}}} id=1
619SkOpAngle::afterPart {{{0.891273797,2}, {1.51387751,2}}} id=4
620SkOpAngle::afterPart {{{0.891273797,2}, {1.15770394,2.16805137}, {1.36011011,2.13984528}, {1.51387751,2}}} id=1
621SkOpAngle::after [1/3] 13/13 tStart=0.178517901 tEnd=0.0706686482 < [4/16] 15/15 tStart=0.777181549 tEnd=1 < [1/4] 29/30 tStart=0.178517901 tEnd=0.375922451 T 4
622SkOpAngle::afterPart {{{0.891273797,2}, {0.745713362,1.90818745}, {0.581042869,1.75779533}, {0.394753397,1.53502476}}} id=1
623SkOpAngle::afterPart {{{0.891273797,2}, {0,2}}} id=4
624SkOpAngle::afterPart {{{0.891273797,2}, {1.15770394,2.16805137}, {1.36011011,2.13984528}, {1.51387751,2}}} id=1
625SkOpSegment::sortAngles [1] tStart=0.375922451 [15]
626SkOpAngle::after [1/5] 17/16 tStart=0.375922451 tEnd=0.178517901 < [4/13] 31/31 tStart=0.621530611 tEnd=0 < [1/6] 1/5 tStart=0.375922451 tEnd=0.620977139 T 4
627SkOpAngle::afterPart {{{1.51387751,2}, {1.36011011,2.13984528}, {1.15770394,2.16805137}, {0.891273797,2}}} id=1
628SkOpAngle::afterPart {{{1.51387751,2}, {4,2}}} id=4
629SkOpAngle::afterPart {{{1.51387751,2}, {1.70476178,1.82639842}, {1.82069211,1.48075721}, {1.89110041,1.1249522}}} id=1
630SkOpAngle::after [1/5] 17/16 tStart=0.375922451 tEnd=0.178517901 < [4/14] 15/15 tStart=0.621530611 tEnd=0.777181549 < [4/13] 31/31 tStart=0.621530611 tEnd=0 F 4
631SkOpAngle::afterPart {{{1.51387751,2}, {1.36011011,2.13984528}, {1.15770394,2.16805137}, {0.891273797,2}}} id=1
632SkOpAngle::afterPart {{{1.51387751,2}, {0.891273797,2}}} id=4
633SkOpAngle::afterPart {{{1.51387751,2}, {4,2}}} id=4
634SkOpAngle::after [4/13] 31/31 tStart=0.621530611 tEnd=0 < [4/14] 15/15 tStart=0.621530611 tEnd=0.777181549 < [1/6] 1/5 tStart=0.375922451 tEnd=0.620977139 F 4
635SkOpAngle::afterPart {{{1.51387751,2}, {4,2}}} id=4
636SkOpAngle::afterPart {{{1.51387751,2}, {0.891273797,2}}} id=4
637SkOpAngle::afterPart {{{1.51387751,2}, {1.70476178,1.82639842}, {1.82069211,1.48075721}, {1.89110041,1.1249522}}} id=1
638SkOpAngle::after [1/6] 1/5 tStart=0.375922451 tEnd=0.620977139 < [4/14] 15/15 tStart=0.621530611 tEnd=0.777181549 < [1/5] 17/16 tStart=0.375922451 tEnd=0.178517901 T 4
639SkOpAngle::afterPart {{{1.51387751,2}, {1.70476178,1.82639842}, {1.82069211,1.48075721}, {1.89110041,1.1249522}}} id=1
640SkOpAngle::afterPart {{{1.51387751,2}, {0.891273797,2}}} id=4
641SkOpAngle::afterPart {{{1.51387751,2}, {1.36011011,2.13984528}, {1.15770394,2.16805137}, {0.891273797,2}}} id=1
642SkOpSegment::sortAngles [1] tStart=0.620977139 [11]
643SkOpAngle::after [1/7] 21/21 tStart=0.620977139 tEnd=0.375922451 < [3/11] 13/17 tStart=0.713607334 tEnd=0.343601972 < [1/8] 5/5 tStart=0.620977139 tEnd=1 F 4
644SkOpAngle::afterPart {{{1.89110041,1.1249522}, {1.82069211,1.48075721}, {1.70476178,1.82639842}, {1.51387751,2}}} id=1
645SkOpAngle::afterPart {{{1.89110041,1.1249522}, {1.17460349,1.05058733}, {0.69270623,1.28858861}, {0.394753397,1.53502476}}} id=3
646SkOpAngle::afterPart {{{1.89110041,1.1249522}, {1.99999999,0.574633264}, {2,0}, {2,0}}} id=1
647SkOpAngle::after [1/7] 21/21 tStart=0.620977139 tEnd=0.375922451 < [3/12] 29/29 tStart=0.713607334 tEnd=1 < [1/8] 5/5 tStart=0.620977139 tEnd=1 T 4
648SkOpAngle::afterPart {{{1.89110041,1.1249522}, {1.82069211,1.48075721}, {1.70476178,1.82639842}, {1.51387751,2}}} id=1
649SkOpAngle::afterPart {{{1.89110041,1.1249522}, {2.44568551,1.18251232}, {3.140822,1.42721467}, {4,2}}} id=3
650SkOpAngle::afterPart {{{1.89110041,1.1249522}, {1.99999999,0.574633264}, {2,0}, {2,0}}} id=1
651SkOpSegment::sortAngles [3] tStart=0.343601972 [10]
652SkOpSegment::sortAngles [3] tStart=0.713607334 [12]
653SkOpSegment::sortAngles [4] tStart=0.621530611 [16]
654SkOpSegment::sortAngles [4] tStart=0.777181549 [14]
655SkOpSegment::debugShowActiveSpans id=1 (0,1 0.141337296,1.21200594 0.272686485,1.38905347 0.394753397,1.53502476) t=0 tEnd=0.0706686482 windSum=? windValue=1
656SkOpSegment::debugShowActiveSpans id=1 (0.394753397,1.53502476 0.581042869,1.75779533 0.745713362,1.90818745 0.891273797,2) t=0.0706686482 tEnd=0.178517901 windSum=? windValue=1
657SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=? windValue=1
658SkOpSegment::debugShowActiveSpans id=1 (1.51387751,2 1.70476178,1.82639842 1.82069211,1.48075721 1.89110041,1.1249522) t=0.375922451 tEnd=0.620977139 windSum=? windValue=1
659SkOpSegment::debugShowActiveSpans id=1 (1.89110041,1.1249522 1.99999999,0.574633264 2,0 2,0) t=0.620977139 tEnd=1 windSum=? windValue=1
660SkOpSegment::debugShowActiveSpans id=2 (2,0 0,1) t=0 tEnd=1 windSum=? windValue=1
661SkOpSegment::debugShowActiveSpans id=3 (0,2 0,2 0.118062323,1.76387536 0.394753397,1.53502476) t=0 tEnd=0.343601972 windSum=? windValue=1
662SkOpSegment::debugShowActiveSpans id=3 (0.394753397,1.53502476 0.69270623,1.28858861 1.17460349,1.05058733 1.89110041,1.1249522) t=0.343601972 tEnd=0.713607334 windSum=? windValue=1
663SkOpSegment::debugShowActiveSpans id=3 (1.89110041,1.1249522 2.44568551,1.18251232 3.140822,1.42721467 4,2) t=0.713607334 tEnd=1 windSum=? windValue=1
664SkOpSegment::debugShowActiveSpans id=4 (4,2 1.51387751,2) t=0 tEnd=0.621530611 windSum=? windValue=1
665SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=? windValue=1
666SkOpSegment::debugShowActiveSpans id=4 (0.891273797,2 0,2) t=0.777181549 tEnd=1 windSum=? windValue=1
667SkOpSpan::sortableTop dir=kLeft seg=1 t=0.0353343241 pt=(0.204603091,1.29227543)
668SkOpSpan::sortableTop [0] valid=1 operand=0 span=1 ccw=0 seg=1 {{{0, 1}, {2, 4}, {2, 0}, {2, 0}}} t=0.0353343241 pt=(0.204603091,1.29227543) slope=(5.5834792,7.55715936)
669SkOpSegment::markWinding id=1 (0,1 2,4 2,0 2,0) t=0 [1] (0,1) tEnd=0.0706686482 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
670SkOpSegment::markWinding id=1 (0,1 2,4 2,0 2,0) t=0 [1] (0,1) tEnd=0.0706686482 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
671SkOpSegment::markWinding id=2 (2,0 0,1) t=0 [3] (2,0) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
672SkOpSegment::markWinding id=1 (0,1 2,4 2,0 2,0) t=0.620977139 [11] (1.89110041,1.1249522) tEnd=1 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
673SkOpSegment::activeOp id=1 t=0.0706686482 tEnd=0 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
caryclark55888e42016-07-18 10:01:36 -0700674SkOpSegment::findNextOp simple
caryclark30b9fdd2016-08-31 14:36:29 -0700675SkOpSegment::markDone id=1 (0,1 2,4 2,0 2,0) t=0 [1] (0,1) tEnd=0.0706686482 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
676bridgeOp current id=1 from=(0.394753397,1.53502476) to=(0,1)
677path.moveTo(0.394753397,1.53502476);
678path.cubicTo(0.272686481,1.38905346, 0.14133729,1.21200597, 0,1);
679SkOpSegment::findNextOp simple
680SkOpSegment::markDone id=2 (2,0 0,1) t=0 [3] (2,0) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
681bridgeOp current id=2 from=(0,1) to=(2,0)
682SkOpSegment::markWinding id=3 (0,2 0,2 1,0 4,2) t=0.343601972 [10] (0.394753397,1.53502476) tEnd=0.713607334 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
683SkOpSegment::markAngle last segment=3 span=10 windSum=-1
684SkOpSegment::markWinding id=1 (0,1 2,4 2,0 2,0) t=0.375922451 [15] (1.51387751,2) tEnd=0.620977139 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
685SkOpSegment::markAngle last segment=1 span=15 windSum=1
686SkOpSegment::markWinding id=3 (0,2 0,2 1,0 4,2) t=0.713607334 [12] (1.89110041,1.1249522) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
687SkOpSegment::markWinding id=4 (4,2 0,2) t=0 [7] (4,2) tEnd=0.621530611 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
688SkOpSegment::markAngle last segment=4 span=16 windSum=?
caryclark55888e42016-07-18 10:01:36 -0700689SkOpSegment::findNextOp
caryclark30b9fdd2016-08-31 14:36:29 -0700690SkOpAngle::dumpOne [1/8] next=3/11 sect=5/5 s=0.620977139 [11] e=1 [2] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
691SkOpAngle::dumpOne [3/11] next=1/7 sect=13/17 s=0.713607334 [12] e=0.343601972 [10] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
692SkOpAngle::dumpOne [1/7] next=3/12 sect=21/21 s=0.620977139 [11] e=0.375922451 [15] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1
693SkOpAngle::dumpOne [3/12] next=1/8 sect=29/29 s=0.713607334 [12] e=1 [6] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
694SkOpSegment::activeOp id=3 t=0.713607334 tEnd=0.343601972 op=diff miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
695SkOpSegment::findNextOp chase.append segment=3 span=10 windSum=-1
696SkOpSegment::activeOp id=1 t=0.620977139 tEnd=0.375922451 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
697SkOpSegment::markDone id=1 (0,1 2,4 2,0 2,0) t=0.375922451 [15] (1.51387751,2) tEnd=0.620977139 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
698SkOpSegment::findNextOp chase.append segment=1 span=15 windSum=1
699SkOpSegment::activeOp id=3 t=0.713607334 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
700SkOpSegment::markDone id=3 (0,2 0,2 1,0 4,2) t=0.713607334 [12] (1.89110041,1.1249522) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
701SkOpSegment::markDone id=4 (4,2 0,2) t=0 [7] (4,2) tEnd=0.621530611 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
702SkOpSegment::findNextOp chase.append segment=4 span=16 windSum=-2147483647
703SkOpSegment::markDone id=1 (0,1 2,4 2,0 2,0) t=0.620977139 [11] (1.89110041,1.1249522) tEnd=1 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
704SkOpSegment::findNextOp from:[1] to:[3] start=2300120 end=2299896
705bridgeOp current id=1 from=(2,0) to=(1.89110041,1.1249522)
706path.lineTo(2,0);
707path.cubicTo(2,0, 2,0.574633241, 1.89110041,1.1249522);
708SkOpSegment::markWinding id=3 (0,2 0,2 1,0 4,2) t=0 [5] (0,2) tEnd=0.343601972 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
709SkOpSegment::markWinding id=4 (4,2 0,2) t=0.777181549 [14] (0.891273797,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
710SkOpSegment::markAngle last segment=4 span=14 windSum=-1
711SkOpSegment::markWinding id=1 (0,1 2,4 2,0 2,0) t=0.0706686482 [9] (0.394753397,1.53502476) tEnd=0.178517901 newWindSum=1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
712SkOpSegment::markAngle last segment=1 span=13 windSum=?
caryclark55888e42016-07-18 10:01:36 -0700713SkOpSegment::findNextOp
caryclark30b9fdd2016-08-31 14:36:29 -0700714SkOpAngle::dumpOne [3/10] next=1/1 sect=1/1 s=0.343601972 [10] e=0.713607334 [12] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
715SkOpAngle::dumpOne [1/1] next=3/9 sect=9/9 s=0.0706686482 [9] e=0 [1] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
716SkOpAngle::dumpOne [3/9] next=1/2 sect=17/21 s=0.343601972 [10] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
717SkOpAngle::dumpOne [1/2] next=3/10 sect=25/29 s=0.0706686482 [9] e=0.178517901 [13] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1
718SkOpSegment::activeOp id=1 t=0.0706686482 tEnd=0 op=diff miFrom=1 miTo=0 suFrom=0 suTo=0 result=1
719SkOpSegment::activeOp id=3 t=0.343601972 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
720SkOpSegment::markDone id=3 (0,2 0,2 1,0 4,2) t=0 [5] (0,2) tEnd=0.343601972 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
721SkOpSegment::markDone id=4 (4,2 0,2) t=0.777181549 [14] (0.891273797,2) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
722SkOpSegment::findNextOp chase.append segment=4 span=14 windSum=-1
723SkOpSegment::activeOp id=1 t=0.0706686482 tEnd=0.178517901 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
724SkOpSegment::markDone id=1 (0,1 2,4 2,0 2,0) t=0.0706686482 [9] (0.394753397,1.53502476) tEnd=0.178517901 newWindSum=1 newOppSum=-1 oppSum=-1 windSum=1 windValue=1 oppValue=0
725SkOpSegment::findNextOp chase.append segment=1 span=13 windSum=-2147483647
726SkOpSegment::markDone id=3 (0,2 0,2 1,0 4,2) t=0.343601972 [10] (0.394753397,1.53502476) tEnd=0.713607334 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
727SkOpSegment::findNextOp from:[3] to:[1] start=2299784 end=123531816
728bridgeOp current id=3 from=(1.89110041,1.1249522) to=(0.394753397,1.53502476)
729path.cubicTo(1.17460346,1.0505873, 0.692706227,1.28858864, 0.394753397,1.53502476);
caryclark2bec26a2016-05-26 09:01:47 -0700730path.close();
caryclark30b9fdd2016-08-31 14:36:29 -0700731SkOpSegment::markWinding id=1 (0,1 2,4 2,0 2,0) t=0.178517901 [13] (0.891273797,2) tEnd=0.375922451 newWindSum=1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
732SkOpSegment::markAngle last segment=1 span=15 windSum=1
733SkOpSegment::markWinding id=4 (4,2 0,2) t=0.621530611 [16] (1.51387751,2) tEnd=0.777181549 newWindSum=-1 newOppSum=1 oppSum=? windSum=? windValue=1 oppValue=0
734SkOpSegment::markAngle last segment=4 span=16 windSum=-1
735SkOpSegment::debugShowActiveSpans id=1 (0.891273797,2 1.15770394,2.16805137 1.36011011,2.13984528 1.51387751,2) t=0.178517901 tEnd=0.375922451 windSum=1 oppSum=0 windValue=1 oppValue=0
736SkOpSegment::debugShowActiveSpans id=4 (1.51387751,2 0.891273797,2) t=0.621530611 tEnd=0.777181549 windSum=-1 oppSum=1 windValue=1 oppValue=0
737SkOpSegment::activeOp id=1 t=0.178517901 tEnd=0.375922451 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
caryclark55888e42016-07-18 10:01:36 -0700738SkOpSegment::findNextOp
caryclark30b9fdd2016-08-31 14:36:29 -0700739SkOpAngle::dumpOne [1/5] next=4/13 sect=17/16 s=0.375922451 [15] e=0.178517901 [13] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0
740SkOpAngle::dumpOne [4/13] next=1/6 sect=31/31 s=0.621530611 [16] e=0 [7] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
741SkOpAngle::dumpOne [1/6] next=4/14 sect=1/5 s=0.375922451 [15] e=0.620977139 [11] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=-1 done
742SkOpAngle::dumpOne [4/14] next=1/5 sect=15/15 s=0.621530611 [16] e=0.777181549 [14] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
743SkOpSegment::activeOp id=4 t=0.621530611 tEnd=0 op=diff miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
744SkOpSegment::activeOp id=1 t=0.375922451 tEnd=0.620977139 op=diff miFrom=0 miTo=1 suFrom=1 suTo=1 result=0
745SkOpSegment::activeOp id=4 t=0.621530611 tEnd=0.777181549 op=diff miFrom=1 miTo=1 suFrom=1 suTo=0 result=1
746SkOpSegment::markDone id=1 (0,1 2,4 2,0 2,0) t=0.178517901 [13] (0.891273797,2) tEnd=0.375922451 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
747SkOpSegment::findNextOp from:[1] to:[4] start=2300568 end=2300344
748bridgeOp current id=1 from=(0.891273797,2) to=(1.51387751,2)
749path.moveTo(0.891273797,2);
750path.cubicTo(1.157704,2.16805148, 1.36011016,2.13984537, 1.51387751,2);
caryclark55888e42016-07-18 10:01:36 -0700751SkOpSegment::findNextOp
caryclark30b9fdd2016-08-31 14:36:29 -0700752SkOpAngle::dumpOne [4/15] next=1/3 sect=31/31 s=0.777181549 [14] e=0.621530611 [16] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=1 operand
753SkOpAngle::dumpOne [1/3] next=4/16 sect=13/13 s=0.178517901 [13] e=0.0706686482 [9] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=-1 done
754SkOpAngle::dumpOne [4/16] next=1/4 sect=15/15 s=0.777181549 [14] e=1 [8] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
755SkOpAngle::dumpOne [1/4] next=4/15 sect=29/30 s=0.178517901 [13] e=0.375922451 [15] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
756SkOpSegment::activeOp id=1 t=0.178517901 tEnd=0.0706686482 op=diff miFrom=1 miTo=0 suFrom=1 suTo=1 result=0
757SkOpSegment::activeOp id=4 t=0.777181549 tEnd=1 op=diff miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
758SkOpSegment::activeOp id=1 t=0.178517901 tEnd=0.375922451 op=diff miFrom=0 miTo=1 suFrom=0 suTo=0 result=1
759SkOpSegment::markDone id=4 (4,2 0,2) t=0.621530611 [16] (1.51387751,2) tEnd=0.777181549 newWindSum=-1 newOppSum=1 oppSum=1 windSum=-1 windValue=1 oppValue=0
760SkOpSegment::findNextOp from:[4] to:[1] start=2300232 end=2300456
761bridgeOp current id=4 from=(1.51387751,2) to=(0.891273797,2)
762path.lineTo(0.891273797,2);
caryclark2bec26a2016-05-26 09:01:47 -0700763path.close();
caryclark30b9fdd2016-08-31 14:36:29 -0700764</div>
765
766<div id="tiger8a_h_1ref">
767seg=1 {{{{492.451324f, 225.216217f}, {510.633392f, 210.095627f}, {511.418884f, 210.714493f}}}, 0.707106769f}
768seg=2 {{{511.418884f, 210.714493f}, {494.350159f, 228.773712f}, {493.19165f, 226.887451f}}}
769seg=3 {{{493.19165f, 226.887451f}, {492.451447f, 225.22908f}, {492.437775f, 225.175201f}}}
770seg=4 {{{492.437775f, 225.175201f}, {492.42984f, 225.142548f}}}
771seg=5 {{{492.42984f, 225.142548f}, {492.465088f, 225.261765f}, {492.495178f, 225.325806f}}}
772seg=6 {{{492.495178f, 225.325806f}, {494.272919f, 225.581543f}, {494.37619f, 225.116943f}}}
773seg=7 {{{494.37619f, 225.116943f}, {492.451324f, 225.216217f}}}
774debugShowConicQuadIntersection wtTs[0]=1 {{{{492.451324,225.216217}, {510.633392,210.095627}, {511.418884,210.714493}}}, 0.707106769} {{511.418884,210.714493}} wnTs[0]=0 {{{511.418884,210.714493}, {494.350159,228.773712}, {493.19165,226.887451}}}
775debugShowConicQuadIntersection wtTs[0]=6.50647037e-05 {{{{492.451324,225.216217}, {510.633392,210.095627}, {511.418884,210.714493}}}, 0.707106769} {{492.453003,225.214828}} wnTs[0]=0.872874 {{{493.19165,226.887451}, {492.451447,225.22908}, {492.437775,225.175201}}}
776SkOpSegment::addT insert t=6.50647037e-05 segID=1 spanID=15
777SkOpSegment::addT insert t=0.872874414 segID=3 spanID=16
778debugShowConicQuadIntersection wtTs[0]=5.27409915e-05 {{{{492.451324,225.216217}, {510.633392,210.095627}, {511.418884,210.714493}}}, 0.707106769} {{492.452667,225.215088}} wnTs[0]=0.329932 {{{492.42984,225.142548}, {492.465088,225.261765}, {492.495178,225.325806}}}
779SkOpSegment::addT insert t=0.32993192 segID=5 spanID=17
780debugShowConicQuadIntersection no intersect {{{{492.451324,225.216217}, {510.633392,210.095627}, {511.418884,210.714493}}}, 0.707106769} {{{492.495178,225.325806}, {494.272919,225.581543}, {494.37619,225.116943}}}
781debugShowConicLineIntersection wtTs[0]=0 {{{{492.451324,225.216217}, {510.633392,210.095627}, {511.418884,210.714493}}}, 0.707106769} {{492.451324,225.216217}} wnTs[0]=1 {{{494.37619,225.116943}, {492.451324,225.216217}}}
782debugShowQuadIntersection wtTs[0]=1 {{{511.418884,210.714493}, {494.350159,228.773712}, {493.19165,226.887451}}} {{493.19165,226.887451}} wnTs[0]=0 {{{493.19165,226.887451}, {492.451447,225.22908}, {492.437775,225.175201}}}
783debugShowQuadIntersection no intersect {{{511.418884,210.714493}, {494.350159,228.773712}, {493.19165,226.887451}}} {{{492.495178,225.325806}, {494.272919,225.581543}, {494.37619,225.116943}}}
784debugShowQuadLineIntersection no intersect {{{511.418884,210.714493}, {494.350159,228.773712}, {493.19165,226.887451}}} {{{494.37619,225.116943}, {492.451324,225.216217}}}
785debugShowQuadLineIntersection wtTs[0]=1 {{{493.19165,226.887451}, {492.451447,225.22908}, {492.437775,225.175201}}} {{492.437775,225.175201}} wnTs[0]=0 {{{492.437775,225.175201}, {492.42984,225.142548}}}
786debugShowQuadIntersection wtTs[0]=0.887605755 {{{493.19165,226.887451}, {492.451447,225.22908}, {492.437775,225.175201}}} {{492.450012,225.207581}} wnTs[0]=0.292225 {{{492.42984,225.142548}, {492.465088,225.261765}, {492.495178,225.325806}}}
787SkOpSegment::addT insert t=0.887605755 segID=3 spanID=18
788SkOpSegment::addT insert t=0.292224891 segID=5 spanID=19
789debugShowQuadIntersection wtTs[0]=0.724616587 {{{493.19165,226.887451}, {492.451447,225.22908}, {492.437775,225.175201}}} {{492.500397,225.326553}} wnTs[0]=0.00147105 {{{492.495178,225.325806}, {494.272919,225.581543}, {494.37619,225.116943}}}
790SkOpSegment::addT insert t=0.724616587 segID=3 spanID=20
791SkOpSegment::addT insert t=0.00147105082 segID=6 spanID=21
792debugShowQuadLineIntersection wtTs[0]=0.870423127 {{{493.19165,226.887451}, {492.451447,225.22908}, {492.437775,225.175201}}} {{492.453522,225.21611}} wnTs[0]=0.998861 {{{494.37619,225.116943}, {492.451324,225.216217}}}
793SkOpSegment::addT insert t=0.870423127 segID=3 spanID=22
794SkOpSegment::addT insert t=0.998861268 segID=7 spanID=23
795debugShowQuadLineIntersection wtTs[0]=0 {{{492.42984,225.142548}, {492.465088,225.261765}, {492.495178,225.325806}}} {{492.42984,225.142548}} wnTs[0]=1 {{{492.437775,225.175201}, {492.42984,225.142548}}}
796debugShowQuadIntersection wtTs[0]=1 {{{492.42984,225.142548}, {492.465088,225.261765}, {492.495178,225.325806}}} {{492.495178,225.325806}} wnTs[0]=0 {{{492.495178,225.325806}, {494.272919,225.581543}, {494.37619,225.116943}}}
797debugShowQuadLineIntersection wtTs[0]=0.334541898 {{{492.42984,225.142548}, {492.465088,225.261765}, {492.495178,225.325806}}} {{492.45285,225.216141}} wnTs[0]=0.999209 {{{494.37619,225.116943}, {492.451324,225.216217}}}
798SkOpSegment::addT insert t=0.334541898 segID=5 spanID=24
799SkOpSegment::addT insert t=0.999209221 segID=7 spanID=25
800debugShowQuadLineIntersection wtTs[0]=1 {{{492.495178,225.325806}, {494.272919,225.581543}, {494.37619,225.116943}}} {{494.37619,225.116943}} wnTs[0]=0 {{{494.37619,225.116943}, {492.451324,225.216217}}}
801--------------------x------------- start
80200: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
80301: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
80402: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
80503: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
806active after start:
807SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
808SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
809SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
810SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
811SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
812SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
813SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
814SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
815SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
816SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
817SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
818SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
819SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
820SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
821SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
822SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
823SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
824SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
825--------------------x------------- addExpanded
82600: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
82701: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
82802: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
82903: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
830active after addExpanded:
831SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
832SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
833SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
834SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
835SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
836SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
837SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
838SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
839SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
840SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
841SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
842SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
843SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
844SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
845SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
846SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
847SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
848SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
849--------------------x------------- moveMultiples
85000: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
85101: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
85202: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
85303: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
854active after moveMultiples:
855SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
856SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
857SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
858SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
859SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
860SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
861SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
862SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
863SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
864SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
865SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
866SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
867SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
868SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
869SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
870SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
871SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
872SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
873--------------------x------------- moveNearby
87400: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
87501: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
87602: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
87703: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
878active after moveNearby:
879SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
880SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
881SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
882SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
883SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
884SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
885SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
886SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
887SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
888SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
889SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
890SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
891SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
892SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
893SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
894SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
895SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
896SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
897--------------------x------------- addEndMovedSpans
89800: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
89901: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
90002: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
90103: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
902active after addEndMovedSpans:
903SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
904SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
905SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
906SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
907SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
908SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
909SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
910SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
911SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
912SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
913SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
914SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
915SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
916SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
917SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
918SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
919SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
920SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
921--------------------x------------- addMissing2
92200: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
92301: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
92402: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
92503: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
926active after addMissing2:
927SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
928SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
929SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
930SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
931SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
932SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
933SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
934SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
935SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
936SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
937SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
938SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
939SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
940SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
941SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
942SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
943SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
944SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
945--------------------x------------- moveNearby2
94600: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
94701: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
94802: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
94903: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
950active after moveNearby2:
951SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
952SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
953SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
954SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
955SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
956SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
957SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
958SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
959SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
960SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
961SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
962SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
963SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
964SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
965SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
966SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
967SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
968SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
969--------------------x------------- expand2
97000: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
97101: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
97202: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
97303: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
974active after expand2:
975SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
976SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
977SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
978SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
979SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
980SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
981SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
982SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
983SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
984SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
985SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
986SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
987SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
988SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
989SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
990SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
991SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
992SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
993--------------------x------------- addExpanded3
99400: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
99501: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
99602: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
99703: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
998active after addExpanded3:
999SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1000SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1001SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1002SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1003SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1004SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1005SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1006SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1007SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1008SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1009SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1010SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1011SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1012SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1013SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1014SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1015SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1016SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1017--------------------x------------- mark1
101800: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
101901: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
102002: coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16 MissingCoin
102103: coinSpan=16 endSpan=18 oppSpan=17 oppEndSpan=19 MissingCoin
1022active after mark1:
1023SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1024SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1025SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1026SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1027SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1028SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1029SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1030SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1031SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1032SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1033SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1034SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1035SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1036SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1037SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1038SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1039SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1040SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1041SkOpSegment::missingCoincidence coinSpan=19 endSpan=17 oppSpan=18 oppEndSpan=16
1042--------------x--x---------------- missingCoincidence1
104300: base=19 base=16 MarkCoinStart
104401: base=17 base=18 MarkCoinEnd
1045active after missingCoincidence1:
1046SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1047SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1048SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1049SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1050SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1051SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1052SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1053SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1054SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1055SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1056SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1057SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1058SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1059SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1060SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1061SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1062SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1063SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1064--------------x--x---------------- expand3
106500: base=19 base=16 MarkCoinStart
106601: base=17 base=18 MarkCoinEnd
1067active after expand3:
1068SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1069SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1070SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1071SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1072SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1073SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1074SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1075SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1076SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1077SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1078SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1079SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1080SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1081SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1082SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1083SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1084SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1085SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1086--------------x--x---------------- addExpanded3
108700: base=19 base=16 MarkCoinStart
108801: base=17 base=18 MarkCoinEnd
1089active after addExpanded3:
1090SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1091SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1092SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1093SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1094SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1095SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1096SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1097SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1098SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1099SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1100SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1101SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1102SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1103SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1104SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1105SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1106SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1107SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1108---------------------------------- missingCoincidence3
1109active after missingCoincidence3:
1110SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1111SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1112SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1113SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1114SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1115SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1116SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1117SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1118SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1119SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1120SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1121SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1122SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1123SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1124SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1125SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1126SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1127SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1128---------------------------------- coincidence.reorder
1129active after coincidence.reorder:
1130SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1131SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1132SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1133SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1134SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1135SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1136SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1137SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1138SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1139SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1140SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1141SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1142SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1143SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1144SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1145SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1146SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1147SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1148seg=5 span=19 windValue=0 oppValue=0
1149seg=3 span=16 windValue=0 oppValue=0
1150SkOpSegment::markDone id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0.292224891 [19] (492.450012,225.20752) tEnd=0.32993192 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
1151SkOpSegment::markDone id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.872874414 [16] (492.453003,225.214828) tEnd=0.887605755 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
1152---------------------------------- pairs->apply
1153active after pairs->apply:
1154SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1155SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1156SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1157SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1158SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1159SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1160SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1161SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1162SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1163SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1164SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1165SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1166SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1167SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1168SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1169SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1170---------------------------------- pairs->findOverlaps
1171active after pairs->findOverlaps:
1172SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1173SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1174SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1175SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1176SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1177SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1178SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1179SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1180SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1181SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1182SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1183SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1184SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1185SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1186SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1187SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1188SkOpSegment::sortAngles [1] tStart=6.50647037e-05 [15]
1189SkOpAngle::after [1/1] 17/17 tStart=6.50647037e-05 tEnd=0 < [5/10] 25/25 tStart=0.32993192 tEnd=0.334541898 < [1/2] 1/1 tStart=6.50647037e-05 tEnd=1 T 4
1190SkOpAngle::afterPart {{{{492.452545,225.21521}, {492.451703,225.215903}, {492.451324,225.216217}}}, 1} id=1
1191SkOpAngle::afterPart {{{492.452545,225.21521}, {492.452698,225.215676}, {492.45285,225.216141}}} id=5
1192SkOpAngle::afterPart {{{{492.452545,225.21521}, {510.633007,210.096065}, {511.418884,210.714493}}}, 0.707139313} id=1
1193SkOpAngle::after [1/1] 17/17 tStart=6.50647037e-05 tEnd=0 < [3/7] 25/25 tStart=0.872874414 tEnd=0.870423127 < [5/10] 25/25 tStart=0.32993192 tEnd=0.334541898 F 7
1194SkOpAngle::afterPart {{{{492.453003,225.214828}, {492.452161,225.215521}, {492.451324,225.216217}}}, 1} id=1
1195SkOpAngle::afterPart {{{492.453003,225.214828}, {492.45326,225.215465}, {492.453522,225.21611}}} id=3
1196SkOpAngle::afterPart {{{492.453003,225.214828}, {492.453156,225.215294}, {492.45285,225.216141}}} id=5
1197SkOpAngle::after [5/10] 25/25 tStart=0.32993192 tEnd=0.334541898 < [3/7] 25/25 tStart=0.872874414 tEnd=0.870423127 < [1/2] 1/1 tStart=6.50647037e-05 tEnd=1 T 7
1198SkOpAngle::afterPart {{{492.453003,225.214828}, {492.453156,225.215294}, {492.45285,225.216141}}} id=5
1199SkOpAngle::afterPart {{{492.453003,225.214828}, {492.45326,225.215465}, {492.453522,225.21611}}} id=3
1200SkOpAngle::afterPart {{{{492.453003,225.214828}, {510.633465,210.095684}, {511.418884,210.714493}}}, 0.707139313} id=1
1201SkOpSegment::sortAngles [3] tStart=0.724616587 [20]
1202SkOpAngle::after [3/3] 25/25 tStart=0.724616587 tEnd=0 < [6/13] 13/13 tStart=0.00147105082 tEnd=0 < [3/4] 9/9 tStart=0.724616587 tEnd=0.870423127 F 4
1203SkOpAngle::afterPart {{{492.500397,225.326553}, {492.655145,225.685452}, {493.19165,226.887451}}} id=3
1204SkOpAngle::afterPart {{{492.500397,225.326553}, {492.497789,225.32618}, {492.495178,225.325806}}} id=6
1205SkOpAngle::afterPart {{{492.500397,225.326553}, {492.469401,225.254666}, {492.453522,225.21611}}} id=3
1206SkOpAngle::after [3/3] 25/25 tStart=0.724616587 tEnd=0 < [6/14] 29/1 tStart=0.00147105082 tEnd=1 < [3/4] 9/9 tStart=0.724616587 tEnd=0.870423127 T 4
1207SkOpAngle::afterPart {{{492.500397,225.326553}, {492.655145,225.685452}, {493.19165,226.887451}}} id=3
1208SkOpAngle::afterPart {{{492.500397,225.326553}, {494.273071,225.580858}, {494.37619,225.116943}}} id=6
1209SkOpAngle::afterPart {{{492.500397,225.326553}, {492.469401,225.254666}, {492.453522,225.21611}}} id=3
1210SkOpSegment::sortAngles [3] tStart=0.870423127 [22]
1211SkOpAngle::after [3/5] 25/25 tStart=0.870423127 tEnd=0.724616587 < [7/15] 1/1 tStart=0.998861268 tEnd=0 < [3/6] 9/9 tStart=0.870423127 tEnd=0.872874414 T 4
1212SkOpAngle::afterPart {{{492.453522,225.21611}, {492.469401,225.254666}, {492.500397,225.326553}}} id=3
1213SkOpAngle::afterPart {{{492.453522,225.21611}, {494.37619,225.116943}}} id=7
1214SkOpAngle::afterPart {{{492.453522,225.21611}, {492.45326,225.215465}, {492.453003,225.214828}}} id=3
1215SkOpAngle::after [3/5] 25/25 tStart=0.870423127 tEnd=0.724616587 < [7/16] 17/17 tStart=0.998861268 tEnd=0.999209221 < [7/15] 1/1 tStart=0.998861268 tEnd=0 F 4
1216SkOpAngle::afterPart {{{492.453522,225.21611}, {492.469401,225.254666}, {492.500397,225.326553}}} id=3
1217SkOpAngle::afterPart {{{492.453522,225.21611}, {492.45285,225.216141}}} id=7
1218SkOpAngle::afterPart {{{492.453522,225.21611}, {494.37619,225.116943}}} id=7
1219SkOpAngle::after [7/15] 1/1 tStart=0.998861268 tEnd=0 < [7/16] 17/17 tStart=0.998861268 tEnd=0.999209221 < [3/6] 9/9 tStart=0.870423127 tEnd=0.872874414 F 4
1220SkOpAngle::afterPart {{{492.453522,225.21611}, {494.37619,225.116943}}} id=7
1221SkOpAngle::afterPart {{{492.453522,225.21611}, {492.45285,225.216141}}} id=7
1222SkOpAngle::afterPart {{{492.453522,225.21611}, {492.45326,225.215465}, {492.453003,225.214828}}} id=3
1223SkOpAngle::after [3/6] 9/9 tStart=0.870423127 tEnd=0.872874414 < [7/16] 17/17 tStart=0.998861268 tEnd=0.999209221 < [3/5] 25/25 tStart=0.870423127 tEnd=0.724616587 T 4
1224SkOpAngle::afterPart {{{492.453522,225.21611}, {492.45326,225.215465}, {492.453003,225.214828}}} id=3
1225SkOpAngle::afterPart {{{492.453522,225.21611}, {492.45285,225.216141}}} id=7
1226SkOpAngle::afterPart {{{492.453522,225.21611}, {492.469401,225.254666}, {492.500397,225.326553}}} id=3
1227SkOpSegment::sortAngles [3] tStart=0.872874414 [16]
1228SkOpSegment::sortAngles [3] tStart=0.887605755 [18]
1229SkOpSegment::sortAngles [5] tStart=0.292224891 [19]
1230SkOpSegment::sortAngles [5] tStart=0.32993192 [17]
1231SkOpSegment::sortAngles [5] tStart=0.334541898 [24]
1232SkOpAngle::after [5/11] 9/9 tStart=0.334541898 tEnd=0.32993192 < [7/17] 1/1 tStart=0.999209221 tEnd=0.998861268 < [5/12] 25/25 tStart=0.334541898 tEnd=1 F 4
1233SkOpAngle::afterPart {{{492.45285,225.216141}, {492.452698,225.215676}, {492.452545,225.21521}}} id=5
1234SkOpAngle::afterPart {{{492.45285,225.216141}, {492.453522,225.21611}}} id=7
1235SkOpAngle::afterPart {{{492.45285,225.216141}, {492.475165,225.283211}, {492.495178,225.325806}}} id=5
1236SkOpAngle::after [5/11] 9/9 tStart=0.334541898 tEnd=0.32993192 < [7/18] 17/17 tStart=0.999209221 tEnd=1 < [5/12] 25/25 tStart=0.334541898 tEnd=1 T 4
1237SkOpAngle::afterPart {{{492.45285,225.216141}, {492.452698,225.215676}, {492.452545,225.21521}}} id=5
1238SkOpAngle::afterPart {{{492.45285,225.216141}, {492.451324,225.216217}}} id=7
1239SkOpAngle::afterPart {{{492.45285,225.216141}, {492.475165,225.283211}, {492.495178,225.325806}}} id=5
1240SkOpSegment::sortAngles [6] tStart=0.00147105082 [21]
1241SkOpSegment::sortAngles [7] tStart=0.998861268 [23]
1242SkOpSegment::sortAngles [7] tStart=0.999209221 [25]
1243SkCoincidentSpans::debugShow - id=5 t=0.292224891 tEnd=0.32993192
1244SkCoincidentSpans::debugShow + id=3 t=0.887605755 tEnd=0.872874414
1245SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1246SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1247SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1248SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1249SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1250SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1251SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1252SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1253SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1254SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1255SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1256SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1257SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1258SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1259SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1260SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1261SkOpSpan::sortableTop dir=kTop seg=1 t=3.25323518e-05 pt=(492.452148,225.215515)
1262SkOpSpan::sortableTop [0] valid=1 operand=0 span=1 ccw=1 seg=1 {{{{492.451324f, 225.216217f}, {510.633392f, 210.095627f}, {511.418884f, 210.714493f}}}, 0.707106769f} t=3.25323518e-05 pt=(492.452148,225.215515) slope=(12.8564438,-10.6916478)
1263SkOpSegment::markWinding id=1 (492.451324,225.216217 510.633392,210.095627 511.418884,210.714493) t=0 [1] (492.451324,225.216217) tEnd=6.50647037e-05 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1264SkOpSegment::markWinding id=1 (492.451324,225.216217 510.633392,210.095627 511.418884,210.714493) t=0 [1] (492.451324,225.216217) tEnd=6.50647037e-05 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1265SkOpSegment::markWinding id=7 (494.37619,225.116943 492.451324,225.216217) t=0.999209221 [25] (492.45285,225.216141) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1266SkOpSegment::findNextWinding simple
1267SkOpSegment::markDone id=1 (492.451324,225.216217 510.633392,210.095627 511.418884,210.714493) t=0 [1] (492.451324,225.216217) tEnd=6.50647037e-05 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1268bridgeWinding current id=1 from=(492.453003,225.214828) to=(492.451324,225.216217)
1269path.moveTo(492.453003,225.214828);
1270path.conicTo(492.452148,225.215515, 492.451324,225.216217, 1);
1271SkOpSegment::markWinding id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0.334541898 [24] (492.45285,225.216141) tEnd=1 newWindSum=1 windSum=? windValue=1
1272SkOpSegment::markWinding id=6 (492.495178,225.325806 494.272919,225.581543 494.37619,225.116943) t=0 [11] (492.495178,225.325806) tEnd=0.00147105082 newWindSum=1 windSum=? windValue=1
1273SkOpSegment::markAngle last seg=6 span=21 windSum=?
1274SkOpSegment::markWinding id=7 (494.37619,225.116943 492.451324,225.216217) t=0.998861268 [23] (492.453522,225.21611) tEnd=0.999209221 newWindSum=1 windSum=? windValue=1
1275SkOpSegment::markAngle last seg=7 span=23 windSum=1
1276SkOpSegment::markWinding id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0.32993192 [17] (492.452545,225.21521) tEnd=0.334541898 newWindSum=-1 windSum=? windValue=1
1277SkOpSegment::markAngle last seg=5 span=17 windSum=-1
1278SkOpSegment::findNextWinding
1279SkOpAngle::dumpOne [7/18] next=5/12 sect=17/17 s=0.999209221 [25] e=1 [14] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
1280SkOpAngle::dumpOne [5/12] next=7/17 sect=25/25 s=0.334541898 [24] e=1 [10] sgn=-1 windVal=1 windSum=1
1281SkOpAngle::dumpOne [7/17] next=5/11 sect=1/1 s=0.999209221 [25] e=0.998861268 [23] sgn=1 windVal=1 windSum=1
1282SkOpAngle::dumpOne [5/11] next=7/18 sect=9/9 s=0.334541898 [24] e=0.32993192 [17] sgn=1 windVal=1 windSum=-1
1283SkOpSegment::findNextWinding chase.append segment=6 span=21 windSum=-2147483647
1284SkOpSegment::findNextWinding chase.append segment=7 span=23 windSum=1
1285SkOpSegment::findNextWinding chase.append segment=5 span=17 windSum=-1
1286SkOpSegment::markDone id=7 (494.37619,225.116943 492.451324,225.216217) t=0.999209221 [25] (492.45285,225.216141) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1287SkOpSegment::findNextWinding from:[7] to:[5] start=18609264 end=18607576
1288bridgeWinding current id=7 from=(492.451324,225.216217) to=(492.45285,225.216141)
1289SkOpSegment::findNextWinding simple
1290SkOpSegment::markDone id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0.334541898 [24] (492.45285,225.216141) tEnd=1 newWindSum=1 newOppSum=? oppSum=? windSum=1 windValue=1 oppValue=0
1291bridgeWinding current id=5 from=(492.45285,225.216141) to=(492.495178,225.325806)
1292path.lineTo(492.45285,225.216141);
1293path.quadTo(492.475159,225.283218, 492.495178,225.325806);
1294SkOpSegment::markWinding id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0 [5] (493.19165,226.887451) tEnd=0.724616587 newWindSum=-1 windSum=? windValue=1
1295SkOpSegment::markWinding id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 [3] (511.418884,210.714493) tEnd=1 newWindSum=-1 windSum=? windValue=1
1296SkOpSegment::markWinding id=1 (492.451324,225.216217 510.633392,210.095627 511.418884,210.714493) t=6.50647037e-05 [15] (492.453003,225.214828) tEnd=1 newWindSum=-1 windSum=? windValue=1
1297SkOpSegment::markAngle last seg=1 span=15 windSum=-1
1298SkOpSegment::markWinding id=6 (492.495178,225.325806 494.272919,225.581543 494.37619,225.116943) t=0.00147105082 [21] (492.500397,225.326553) tEnd=1 newWindSum=-1 windSum=? windValue=1
1299SkOpSegment::markWinding id=7 (494.37619,225.116943 492.451324,225.216217) t=0 [13] (494.37619,225.116943) tEnd=0.998861268 newWindSum=-1 windSum=? windValue=1
1300SkOpSegment::markAngle last seg=7 span=23 windSum=1
1301SkOpSegment::markWinding id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.724616587 [20] (492.500397,225.326553) tEnd=0.870423127 newWindSum=1 windSum=? windValue=1
1302SkOpSegment::markAngle last seg=3 span=22 windSum=?
1303SkOpSegment::findNextWinding
1304SkOpAngle::dumpOne [6/13] next=3/3 sect=13/13 s=0.00147105082 [21] e=0 [11] sgn=1 windVal=1 windSum=1
1305SkOpAngle::dumpOne [3/3] next=6/14 sect=25/25 s=0.724616587 [20] e=0 [5] sgn=1 windVal=1 windSum=-1
1306SkOpAngle::dumpOne [6/14] next=3/4 sect=29/1 s=0.00147105082 [21] e=1 [12] sgn=-1 windVal=1 windSum=-1
1307SkOpAngle::dumpOne [3/4] next=6/13 sect=9/9 s=0.724616587 [20] e=0.870423127 [22] sgn=-1 windVal=1 windSum=1
1308SkOpSegment::findNextWinding chase.append segment=1 span=15 windSum=-1
1309SkOpSegment::findNextWinding chase.append segment=3 span=22 windSum=-2147483647
1310SkOpSegment::markDone id=6 (492.495178,225.325806 494.272919,225.581543 494.37619,225.116943) t=0 [11] (492.495178,225.325806) tEnd=0.00147105082 newWindSum=1 newOppSum=? oppSum=? windSum=1 windValue=1 oppValue=0
1311SkOpSegment::findNextWinding from:[6] to:[3] start=18608816 end=18606936
1312bridgeWinding current id=6 from=(492.495178,225.325806) to=(492.500397,225.326553)
1313path.quadTo(492.497803,225.326187, 492.500397,225.326553);
1314SkOpSegment::findNextWinding simple
1315SkOpSegment::markDone id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0 [5] (493.19165,226.887451) tEnd=0.724616587 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
1316bridgeWinding current id=3 from=(492.500397,225.326553) to=(493.19165,226.887451)
1317path.quadTo(492.655151,225.685455, 493.19165,226.887451);
1318SkOpSegment::findNextWinding simple
1319SkOpSegment::markDone id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 [3] (511.418884,210.714493) tEnd=1 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
1320bridgeWinding current id=2 from=(493.19165,226.887451) to=(511.418884,210.714493)
1321path.quadTo(494.350159,228.773712, 511.418884,210.714493);
1322SkOpSegment::markWinding id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.870423127 [22] (492.453522,225.21611) tEnd=0.872874414 newWindSum=-1 windSum=? windValue=1
1323SkOpSegment::markAngle last seg=3 span=22 windSum=-1
1324SkOpSegment::findNextWinding
1325SkOpAngle::dumpOne [1/2] next=1/1 sect=1/1 s=6.50647037e-05 [15] e=1 [2] sgn=-1 windVal=1 windSum=-1
1326SkOpAngle::dumpOne [1/1] next=5/10 sect=17/17 s=6.50647037e-05 [15] e=0 [1] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
1327SkOpAngle::dumpOne [5/10] next=3/7 sect=25/25 s=0.32993192 [17] e=0.334541898 [24] sgn=-1 windVal=1 windSum=-1
1328SkOpAngle::dumpOne [3/7] next=1/2 sect=25/25 s=0.872874414 [16] e=0.870423127 [22] sgn=1 windVal=1 windSum=-1
1329SkOpSegment::markDone id=1 (492.451324,225.216217 510.633392,210.095627 511.418884,210.714493) t=6.50647037e-05 [15] (492.453003,225.214828) tEnd=1 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
1330SkOpSegment::findNextWinding from:[1] to:[3] start=18608368 end=18609040
1331bridgeWinding current id=1 from=(511.418884,210.714493) to=(492.453003,225.214828)
1332path.conicTo(510.633453,210.095688, 492.453003,225.214828, 0.707139313);
1333path.close();
1334SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=1 windValue=1
1335SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=-1 windValue=1
1336SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1337SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1338SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1339SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=-1 windValue=1
1340SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=-1 windValue=1
1341SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=-1 windValue=1
1342SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=1 windValue=1
1343SkOpSegment::findNextWinding
1344SkOpAngle::dumpOne [7/17] next=5/11 sect=1/1 s=0.999209221 [25] e=0.998861268 [23] sgn=1 windVal=1 windSum=1
1345SkOpAngle::dumpOne [5/11] next=7/18 sect=9/9 s=0.334541898 [24] e=0.32993192 [17] sgn=1 windVal=1 windSum=-1
1346SkOpAngle::dumpOne [7/18] next=5/12 sect=17/17 s=0.999209221 [25] e=1 [14] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
1347SkOpAngle::dumpOne [5/12] next=7/17 sect=25/25 s=0.334541898 [24] e=1 [10] sgn=-1 windVal=1 windSum=1 done
1348SkOpSegment::markDone id=7 (494.37619,225.116943 492.451324,225.216217) t=0.998861268 [23] (492.453522,225.21611) tEnd=0.999209221 newWindSum=1 newOppSum=? oppSum=? windSum=1 windValue=1 oppValue=0
1349SkOpSegment::findNextWinding from:[7] to:[5] start=18609264 end=18608480
1350bridgeWinding current id=7 from=(492.453522,225.21611) to=(492.45285,225.216141)
1351SkOpSegment::findNextWinding
1352SkOpAngle::dumpOne [5/10] next=3/7 sect=25/25 s=0.32993192 [17] e=0.334541898 [24] sgn=-1 windVal=1 windSum=-1
1353SkOpAngle::dumpOne [3/7] next=1/2 sect=25/25 s=0.872874414 [16] e=0.870423127 [22] sgn=1 windVal=1 windSum=-1
1354SkOpAngle::dumpOne [1/2] next=1/1 sect=1/1 s=6.50647037e-05 [15] e=1 [2] sgn=-1 windVal=1 windSum=-1 done
1355SkOpAngle::dumpOne [1/1] next=5/10 sect=17/17 s=6.50647037e-05 [15] e=0 [1] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
1356SkOpSegment::markDone id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0.32993192 [17] (492.452545,225.21521) tEnd=0.334541898 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
1357SkOpSegment::findNextWinding from:[5] to:[3] start=18608368 end=18609040
1358bridgeWinding current id=5 from=(492.45285,225.216141) to=(492.452545,225.21521)
1359path.moveTo(492.453522,225.21611);
1360path.lineTo(492.45285,225.216141);
1361path.quadTo(492.452698,225.215683, 492.452545,225.21521);
1362SkOpSegment::findNextWinding
1363SkOpAngle::dumpOne [3/6] next=7/16 sect=9/9 s=0.870423127 [22] e=0.872874414 [16] sgn=-1 windVal=1 windSum=-1
1364SkOpAngle::dumpOne [7/16] next=3/5 sect=17/17 s=0.998861268 [23] e=0.999209221 [25] sgn=-1 windVal=1 windSum=1 done
1365SkOpAngle::dumpOne [3/5] next=7/15 sect=25/25 s=0.870423127 [22] e=0.724616587 [20] sgn=1 windVal=1 windSum=1
1366SkOpAngle::dumpOne [7/15] next=3/6 sect=1/1 s=0.998861268 [23] e=0 [13] sgn=1 windVal=1 windSum=-1
1367SkOpSegment::markDone id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.870423127 [22] (492.453522,225.21611) tEnd=0.872874414 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
1368SkOpSegment::findNextWinding from:[3] to:[7] start=18609152 end=18607992
1369bridgeWinding current id=3 from=(492.453003,225.214828) to=(492.453522,225.21611)
1370path.lineTo(492.453003,225.214828);
1371path.quadTo(492.453247,225.215469, 492.453522,225.21611);
1372path.close();
1373SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=1 windValue=1
1374SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1375SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1376SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1377SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=-1 windValue=1
1378SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=-1 windValue=1
1379SkOpSegment::findNextWinding simple
1380SkOpSegment::markDone id=7 (494.37619,225.116943 492.451324,225.216217) t=0 [13] (494.37619,225.116943) tEnd=0.998861268 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
1381bridgeWinding current id=7 from=(492.453522,225.21611) to=(494.37619,225.116943)
1382SkOpSegment::findNextWinding
1383SkOpAngle::dumpOne [6/14] next=3/4 sect=29/1 s=0.00147105082 [21] e=1 [12] sgn=-1 windVal=1 windSum=-1
1384SkOpAngle::dumpOne [3/4] next=6/13 sect=9/9 s=0.724616587 [20] e=0.870423127 [22] sgn=-1 windVal=1 windSum=1
1385SkOpAngle::dumpOne [6/13] next=3/3 sect=13/13 s=0.00147105082 [21] e=0 [11] sgn=1 windVal=1 windSum=1 done
1386SkOpAngle::dumpOne [3/3] next=6/14 sect=25/25 s=0.724616587 [20] e=0 [5] sgn=1 windVal=1 windSum=-1 done
1387SkOpSegment::markDone id=6 (492.495178,225.325806 494.272919,225.581543 494.37619,225.116943) t=0.00147105082 [21] (492.500397,225.326553) tEnd=1 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
1388SkOpSegment::findNextWinding from:[6] to:[3] start=18608816 end=18609040
1389bridgeWinding current id=6 from=(494.37619,225.116943) to=(492.500397,225.326553)
1390path.moveTo(492.453522,225.21611);
1391path.lineTo(494.37619,225.116943);
1392path.quadTo(494.273071,225.580856, 492.500397,225.326553);
1393SkOpSegment::findNextWinding
1394SkOpAngle::dumpOne [3/5] next=7/15 sect=25/25 s=0.870423127 [22] e=0.724616587 [20] sgn=1 windVal=1 windSum=1
1395SkOpAngle::dumpOne [7/15] next=3/6 sect=1/1 s=0.998861268 [23] e=0 [13] sgn=1 windVal=1 windSum=-1 done
1396SkOpAngle::dumpOne [3/6] next=7/16 sect=9/9 s=0.870423127 [22] e=0.872874414 [16] sgn=-1 windVal=1 windSum=-1 done
1397SkOpAngle::dumpOne [7/16] next=3/5 sect=17/17 s=0.998861268 [23] e=0.999209221 [25] sgn=-1 windVal=1 windSum=1 done
1398SkOpSegment::markDone id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.724616587 [20] (492.500397,225.326553) tEnd=0.870423127 newWindSum=1 newOppSum=? oppSum=? windSum=1 windValue=1 oppValue=0
1399SkOpSegment::findNextWinding from:[3] to:[7] start=18609152 end=18609376
1400bridgeWinding current id=3 from=(492.500397,225.326553) to=(492.453522,225.21611)
1401path.quadTo(492.469391,225.254669, 492.453522,225.21611);
1402path.close();
1403SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1404SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1405SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1406SkOpSpan::sortableTop dir=kLeft seg=3 t=0.943802877 pt=(492.44162,225.186325)
1407SkOpSpan::sortableTop [0] valid=1 operand=0 span=18 ccw=1 seg=3 {{{493.19165f, 226.887451f}, {492.451447f, 225.22908f}, {492.437775f, 225.175201f}}} t=0.943802877 pt=(492.44162,225.186325) slope=(-0.0545008819,-0.144046628)
1408SkOpSegment::markWinding id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.887605755 [18] (492.450012,225.207581) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1409SkOpSegment::markWinding id=4 (492.437775,225.175201 492.42984,225.142548) t=0 [7] (492.437775,225.175201) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1410SkOpSegment::markWinding id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0 [9] (492.42984,225.142548) tEnd=0.292224891 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1411SkOpSegment::nextChase mismatched signs
1412SkOpSegment::markWinding id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.887605755 [18] (492.450012,225.207581) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1413SkOpSegment::nextChase mismatched signs
1414SkOpSegment::nextChase mismatched signs
1415SkOpSegment::findNextWinding simple
1416SkOpSegment::markDone id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.887605755 [18] (492.450012,225.207581) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1417bridgeWinding current id=3 from=(492.437775,225.175201) to=(492.450012,225.207581)
1418path.moveTo(492.437775,225.175201);
1419path.quadTo(492.439331,225.181351, 492.450012,225.207581);
1420SkOpSegment::findNextWinding simple
1421SkOpSegment::markDone id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0 [9] (492.42984,225.142548) tEnd=0.292224891 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1422bridgeWinding current id=5 from=(492.450012,225.20752) to=(492.42984,225.142548)
1423path.lineTo(492.450012,225.20752);
1424path.quadTo(492.440063,225.177078, 492.42984,225.142548);
1425SkOpSegment::findNextWinding simple
1426SkOpSegment::markDone id=4 (492.437775,225.175201 492.42984,225.142548) t=0 [7] (492.437775,225.175201) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1427bridgeWinding current id=4 from=(492.42984,225.142548) to=(492.437775,225.175201)
1428path.lineTo(492.437775,225.175201);
1429path.close();
1430</div>
1431
1432<div id="tiger8a_h_1">
1433seg=1 {{{{492.451324f, 225.216217f}, {510.633392f, 210.095627f}, {511.418884f, 210.714493f}}}, 0.707106769f}
1434seg=2 {{{511.418884f, 210.714493f}, {494.350159f, 228.773712f}, {493.19165f, 226.887451f}}}
1435seg=3 {{{493.19165f, 226.887451f}, {492.451447f, 225.22908f}, {492.437775f, 225.175201f}}}
1436seg=4 {{{492.437775f, 225.175201f}, {492.42984f, 225.142548f}}}
1437seg=5 {{{492.42984f, 225.142548f}, {492.465088f, 225.261765f}, {492.495178f, 225.325806f}}}
1438seg=6 {{{492.495178f, 225.325806f}, {494.272919f, 225.581543f}, {494.37619f, 225.116943f}}}
1439seg=7 {{{494.37619f, 225.116943f}, {492.451324f, 225.216217f}}}
1440debugShowConicQuadIntersection wtTs[0]=1 {{{{492.451324,225.216217}, {510.633392,210.095627}, {511.418884,210.714493}}}, 0.707106769} {{511.418884,210.714493}} wnTs[0]=0 {{{511.418884,210.714493}, {494.350159,228.773712}, {493.19165,226.887451}}}
1441debugShowConicQuadIntersection wtTs[0]=6.50647037e-05 {{{{492.451324,225.216217}, {510.633392,210.095627}, {511.418884,210.714493}}}, 0.707106769} {{492.453003,225.214828}} wnTs[0]=0.872874 {{{493.19165,226.887451}, {492.451447,225.22908}, {492.437775,225.175201}}}
1442SkOpSegment::addT insert t=6.50647037e-05 segID=1 spanID=15
1443SkOpSegment::addT insert t=0.872874414 segID=3 spanID=16
1444debugShowConicQuadIntersection wtTs[0]=5.27409915e-05 {{{{492.451324,225.216217}, {510.633392,210.095627}, {511.418884,210.714493}}}, 0.707106769} {{492.452667,225.215088}} wnTs[0]=0.329932 {{{492.42984,225.142548}, {492.465088,225.261765}, {492.495178,225.325806}}}
1445SkOpSegment::addT insert t=0.32993192 segID=5 spanID=17
1446debugShowConicQuadIntersection no intersect {{{{492.451324,225.216217}, {510.633392,210.095627}, {511.418884,210.714493}}}, 0.707106769} {{{492.495178,225.325806}, {494.272919,225.581543}, {494.37619,225.116943}}}
1447debugShowConicLineIntersection wtTs[0]=0 {{{{492.451324,225.216217}, {510.633392,210.095627}, {511.418884,210.714493}}}, 0.707106769} {{492.451324,225.216217}} wnTs[0]=1 {{{494.37619,225.116943}, {492.451324,225.216217}}}
1448debugShowQuadIntersection wtTs[0]=1 {{{511.418884,210.714493}, {494.350159,228.773712}, {493.19165,226.887451}}} {{493.19165,226.887451}} wnTs[0]=0 {{{493.19165,226.887451}, {492.451447,225.22908}, {492.437775,225.175201}}}
1449debugShowQuadIntersection no intersect {{{511.418884,210.714493}, {494.350159,228.773712}, {493.19165,226.887451}}} {{{492.495178,225.325806}, {494.272919,225.581543}, {494.37619,225.116943}}}
1450debugShowQuadLineIntersection no intersect {{{511.418884,210.714493}, {494.350159,228.773712}, {493.19165,226.887451}}} {{{494.37619,225.116943}, {492.451324,225.216217}}}
1451debugShowQuadLineIntersection wtTs[0]=1 {{{493.19165,226.887451}, {492.451447,225.22908}, {492.437775,225.175201}}} {{492.437775,225.175201}} wnTs[0]=0 {{{492.437775,225.175201}, {492.42984,225.142548}}}
1452debugShowQuadIntersection wtTs[0]=0.887605755 {{{493.19165,226.887451}, {492.451447,225.22908}, {492.437775,225.175201}}} {{492.450012,225.207581}} wnTs[0]=0.292225 {{{492.42984,225.142548}, {492.465088,225.261765}, {492.495178,225.325806}}}
1453SkOpSegment::addT insert t=0.887605755 segID=3 spanID=18
1454SkOpSegment::addT insert t=0.292224891 segID=5 spanID=19
1455debugShowQuadIntersection wtTs[0]=0.724616587 {{{493.19165,226.887451}, {492.451447,225.22908}, {492.437775,225.175201}}} {{492.500397,225.326553}} wnTs[0]=0.00147105 {{{492.495178,225.325806}, {494.272919,225.581543}, {494.37619,225.116943}}}
1456SkOpSegment::addT insert t=0.724616587 segID=3 spanID=20
1457SkOpSegment::addT insert t=0.00147105082 segID=6 spanID=21
1458debugShowQuadLineIntersection wtTs[0]=0.870423127 {{{493.19165,226.887451}, {492.451447,225.22908}, {492.437775,225.175201}}} {{492.453522,225.21611}} wnTs[0]=0.998861 {{{494.37619,225.116943}, {492.451324,225.216217}}}
1459SkOpSegment::addT insert t=0.870423127 segID=3 spanID=22
1460SkOpSegment::addT insert t=0.998861268 segID=7 spanID=23
1461debugShowQuadLineIntersection wtTs[0]=0 {{{492.42984,225.142548}, {492.465088,225.261765}, {492.495178,225.325806}}} {{492.42984,225.142548}} wnTs[0]=1 {{{492.437775,225.175201}, {492.42984,225.142548}}}
1462debugShowQuadIntersection wtTs[0]=1 {{{492.42984,225.142548}, {492.465088,225.261765}, {492.495178,225.325806}}} {{492.495178,225.325806}} wnTs[0]=0 {{{492.495178,225.325806}, {494.272919,225.581543}, {494.37619,225.116943}}}
1463debugShowQuadLineIntersection wtTs[0]=0.334541898 {{{492.42984,225.142548}, {492.465088,225.261765}, {492.495178,225.325806}}} {{492.45285,225.216141}} wnTs[0]=0.999209 {{{494.37619,225.116943}, {492.451324,225.216217}}}
1464SkOpSegment::addT insert t=0.334541898 segID=5 spanID=24
1465SkOpSegment::addT insert t=0.999209221 segID=7 spanID=25
1466debugShowQuadLineIntersection wtTs[0]=1 {{{492.495178,225.325806}, {494.272919,225.581543}, {494.37619,225.116943}}} {{494.37619,225.116943}} wnTs[0]=0 {{{494.37619,225.116943}, {492.451324,225.216217}}}
1467---------------------------------- start
1468active after start:
1469SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1470SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1471SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1472SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1473SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1474SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1475SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1476SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1477SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1478SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1479SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1480SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1481SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1482SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1483SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1484SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1485SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1486SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1487---------------------------------- addExpanded
1488active after addExpanded:
1489SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1490SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1491SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1492SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1493SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1494SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1495SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1496SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1497SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1498SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1499SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1500SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1501SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1502SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1503SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1504SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1505SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1506SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1507---------------------------------- moveMultiples
1508active after moveMultiples:
1509SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1510SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1511SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1512SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1513SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1514SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1515SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1516SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1517SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1518SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1519SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1520SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1521SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1522SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1523SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1524SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1525SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1526SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1527---------------------------------- moveNearby
1528active after moveNearby:
1529SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1530SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1531SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1532SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1533SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1534SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1535SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1536SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1537SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1538SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1539SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1540SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1541SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1542SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1543SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1544SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1545SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1546SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1547---------------------------------- addEndMovedSpans
1548active after addEndMovedSpans:
1549SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1550SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1551SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1552SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1553SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1554SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1555SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1556SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1557SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1558SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1559SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1560SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1561SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1562SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1563SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1564SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1565SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1566SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1567---------------------------------- addMissing2
1568active after addMissing2:
1569SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1570SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1571SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1572SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1573SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1574SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1575SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1576SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1577SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1578SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1579SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1580SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1581SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1582SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1583SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1584SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1585SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1586SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1587---------------------------------- moveNearby2
1588active after moveNearby2:
1589SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1590SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1591SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1592SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1593SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1594SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1595SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1596SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1597SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1598SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1599SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1600SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1601SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1602SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1603SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1604SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1605SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1606SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1607---------------------------------- expand2
1608active after expand2:
1609SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1610SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1611SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1612SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1613SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1614SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1615SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1616SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1617SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1618SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1619SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1620SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1621SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1622SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1623SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1624SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1625SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1626SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1627---------------------------------- addExpanded3
1628active after addExpanded3:
1629SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1630SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1631SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1632SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1633SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1634SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1635SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1636SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1637SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1638SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1639SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1640SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1641SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1642SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1643SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1644SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1645SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1646SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1647---------------------------------- mark1
1648active after mark1:
1649SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1650SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1651SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1652SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1653SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1654SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1655SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1656SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1657SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1658SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1659SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1660SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1661SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1662SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1663SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1664SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1665SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1666SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1667---------------------------------- missingCoincidence2
1668active after missingCoincidence2:
1669SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1670SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1671SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1672SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1673SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1674SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1675SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1676SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1677SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1678SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1679SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1680SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1681SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1682SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1683SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1684SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1685SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1686SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1687---------------------------------- missingCoincidence3
1688active after missingCoincidence3:
1689SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1690SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1691SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1692SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1693SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1694SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1695SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1696SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1697SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1698SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1699SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1700SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1701SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1702SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1703SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1704SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1705SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1706SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1707---------------------------------- coincidence.reorder
1708active after coincidence.reorder:
1709SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1710SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1711SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1712SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1713SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1714SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1715SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1716SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1717SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1718SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1719SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1720SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1721SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1722SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1723SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1724SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1725SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1726SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1727---------------------------------- pairs->apply
1728active after pairs->apply:
1729SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1730SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1731SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1732SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1733SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1734SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1735SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1736SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1737SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1738SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1739SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1740SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1741SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1742SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1743SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1744SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1745SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1746SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1747---------------------------------- pairs->findOverlaps
1748active after pairs->findOverlaps:
1749SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1750SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1751SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1752SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1753SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1754SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1755SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1756SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1757SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1758SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1759SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1760SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1761SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1762SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1763SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1764SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1765SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1766SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1767SkOpSegment::sortAngles [1] tStart=6.50647037e-05 [15]
1768SkOpAngle::after [1/1] 17/17 tStart=6.50647037e-05 tEnd=0 < [5/13] 9/9 tStart=0.32993192 tEnd=0.292224891 < [1/2] 1/1 tStart=6.50647037e-05 tEnd=1 F 4
1769SkOpAngle::afterPart {{{{492.452545,225.21521}, {492.450867,225.216599}, {492.451324,225.216217}}}, 1} id=1
1770SkOpAngle::afterPart {{{492.452545,225.21521}, {492.451282,225.211404}, {492.450012,225.20752}}} id=5
1771SkOpAngle::afterPart {{{{492.452545,225.21521}, {510.633007,210.096065}, {511.418884,210.714493}}}, 0.707139313} id=1
1772SkOpAngle::after [1/1] 17/17 tStart=6.50647037e-05 tEnd=0 < [5/14] 25/25 tStart=0.32993192 tEnd=0.334541898 < [1/2] 1/1 tStart=6.50647037e-05 tEnd=1 T 4
1773SkOpAngle::afterPart {{{{492.452545,225.21521}, {492.450867,225.216599}, {492.451324,225.216217}}}, 1} id=1
1774SkOpAngle::afterPart {{{492.452545,225.21521}, {492.45285,225.216141}, {492.45285,225.216141}}} id=5
1775SkOpAngle::afterPart {{{{492.452545,225.21521}, {510.633007,210.096065}, {511.418884,210.714493}}}, 0.707139313} id=1
1776SkOpAngle::after [1/1] 17/17 tStart=6.50647037e-05 tEnd=0 < [3/7] 25/25 tStart=0.872874414 tEnd=0.870423127 < [5/14] 25/25 tStart=0.32993192 tEnd=0.334541898 F 7
1777SkOpAngle::afterPart {{{{492.453003,225.214828}, {492.451324,225.216217}, {492.451324,225.216217}}}, 1} id=1
1778SkOpAngle::afterPart {{{492.453003,225.214828}, {492.453522,225.21611}, {492.453522,225.21611}}} id=3
1779SkOpAngle::afterPart {{{492.453003,225.214828}, {492.453308,225.215759}, {492.45285,225.216141}}} id=5
1780SkOpAngle::after [5/14] 25/25 tStart=0.32993192 tEnd=0.334541898 < [3/7] 25/25 tStart=0.872874414 tEnd=0.870423127 < [1/2] 1/1 tStart=6.50647037e-05 tEnd=1 T 7
1781SkOpAngle::afterPart {{{492.453003,225.214828}, {492.453308,225.215759}, {492.45285,225.216141}}} id=5
1782SkOpAngle::afterPart {{{492.453003,225.214828}, {492.453522,225.21611}, {492.453522,225.21611}}} id=3
1783SkOpAngle::afterPart {{{{492.453003,225.214828}, {510.633465,210.095684}, {511.418884,210.714493}}}, 0.707139313} id=1
1784SkOpAngle::after [1/1] 17/17 tStart=6.50647037e-05 tEnd=0 < [3/8] 9/9 tStart=0.872874414 tEnd=0.887605755 < [5/14] 25/25 tStart=0.32993192 tEnd=0.334541898 F 4
1785SkOpAngle::afterPart {{{{492.453003,225.214828}, {492.451324,225.216217}, {492.451324,225.216217}}}, 1} id=1
1786SkOpAngle::afterPart {{{492.453003,225.214828}, {492.451429,225.21103}, {492.450012,225.207581}}} id=3
1787SkOpAngle::afterPart {{{492.453003,225.214828}, {492.453308,225.215759}, {492.45285,225.216141}}} id=5
1788SkOpAngle::after [5/14] 25/25 tStart=0.32993192 tEnd=0.334541898 < [3/8] 9/9 tStart=0.872874414 tEnd=0.887605755 < [3/7] 25/25 tStart=0.872874414 tEnd=0.870423127 F 5
1789SkOpAngle::afterPart {{{492.453003,225.214828}, {492.453308,225.215759}, {492.45285,225.216141}}} id=5
1790SkOpAngle::afterPart {{{492.453003,225.214828}, {492.451429,225.21103}, {492.450012,225.207581}}} id=3
1791SkOpAngle::afterPart {{{492.453003,225.214828}, {492.453522,225.21611}, {492.453522,225.21611}}} id=3
1792SkOpAngle::after [3/7] 25/25 tStart=0.872874414 tEnd=0.870423127 < [3/8] 9/9 tStart=0.872874414 tEnd=0.887605755 < [1/2] 1/1 tStart=6.50647037e-05 tEnd=1 F 4
1793SkOpAngle::afterPart {{{492.453003,225.214828}, {492.453522,225.21611}, {492.453522,225.21611}}} id=3
1794SkOpAngle::afterPart {{{492.453003,225.214828}, {492.451429,225.21103}, {492.450012,225.207581}}} id=3
1795SkOpAngle::afterPart {{{{492.453003,225.214828}, {510.633465,210.095684}, {511.418884,210.714493}}}, 0.707139313} id=1
1796SkOpAngle::after [1/2] 1/1 tStart=6.50647037e-05 tEnd=1 < [3/8] 9/9 tStart=0.872874414 tEnd=0.887605755 < [5/13] 9/9 tStart=0.32993192 tEnd=0.292224891 F 7
1797SkOpAngle::afterPart {{{{492.453003,225.214828}, {510.633465,210.095684}, {511.418884,210.714493}}}, 0.707139313} id=1
1798SkOpAngle::afterPart {{{492.453003,225.214828}, {492.451429,225.21103}, {492.450012,225.207581}}} id=3
1799SkOpAngle::afterPart {{{492.453003,225.214828}, {492.45174,225.211023}, {492.450012,225.20752}}} id=5
1800SkOpAngle::after [5/13] 9/9 tStart=0.32993192 tEnd=0.292224891 < [3/8] 9/9 tStart=0.872874414 tEnd=0.887605755 < [1/1] 17/17 tStart=6.50647037e-05 tEnd=0 T 7
1801SkOpAngle::afterPart {{{492.453003,225.214828}, {492.45174,225.211023}, {492.450012,225.20752}}} id=5
1802SkOpAngle::afterPart {{{492.453003,225.214828}, {492.451429,225.21103}, {492.450012,225.207581}}} id=3
1803SkOpAngle::afterPart {{{{492.453003,225.214828}, {492.451324,225.216217}, {492.451324,225.216217}}}, 1} id=1
1804SkOpSegment::sortAngles [3] tStart=0.724616587 [20]
1805SkOpAngle::after [3/3] 25/25 tStart=0.724616587 tEnd=0 < [6/17] 13/13 tStart=0.00147105082 tEnd=0 < [3/4] 9/9 tStart=0.724616587 tEnd=0.870423127 F 4
1806SkOpAngle::afterPart {{{492.500397,225.326553}, {492.655145,225.685452}, {493.19165,226.887451}}} id=3
1807SkOpAngle::afterPart {{{492.500397,225.326553}, {492.495178,225.325806}, {492.495178,225.325806}}} id=6
1808SkOpAngle::afterPart {{{492.500397,225.326553}, {492.469401,225.254666}, {492.453522,225.21611}}} id=3
1809SkOpAngle::after [3/3] 25/25 tStart=0.724616587 tEnd=0 < [6/18] 29/1 tStart=0.00147105082 tEnd=1 < [3/4] 9/9 tStart=0.724616587 tEnd=0.870423127 T 4
1810SkOpAngle::afterPart {{{492.500397,225.326553}, {492.655145,225.685452}, {493.19165,226.887451}}} id=3
1811SkOpAngle::afterPart {{{492.500397,225.326553}, {494.273071,225.580858}, {494.37619,225.116943}}} id=6
1812SkOpAngle::afterPart {{{492.500397,225.326553}, {492.469401,225.254666}, {492.453522,225.21611}}} id=3
1813SkOpSegment::sortAngles [3] tStart=0.870423127 [22]
1814SkOpAngle::after [3/5] 25/25 tStart=0.870423127 tEnd=0.724616587 < [7/19] 1/1 tStart=0.998861268 tEnd=0 < [3/6] 9/9 tStart=0.870423127 tEnd=0.872874414 T 4
1815SkOpAngle::afterPart {{{492.453522,225.21611}, {492.469401,225.254666}, {492.500397,225.326553}}} id=3
1816SkOpAngle::afterPart {{{492.453522,225.21611}, {494.37619,225.116943}}} id=7
1817SkOpAngle::afterPart {{{492.453522,225.21611}, {492.453003,225.214828}, {492.453003,225.214828}}} id=3
1818SkOpAngle::after [3/5] 25/25 tStart=0.870423127 tEnd=0.724616587 < [7/20] 17/17 tStart=0.998861268 tEnd=0.999209221 < [7/19] 1/1 tStart=0.998861268 tEnd=0 F 4
1819SkOpAngle::afterPart {{{492.453522,225.21611}, {492.469401,225.254666}, {492.500397,225.326553}}} id=3
1820SkOpAngle::afterPart {{{492.453522,225.21611}, {492.45285,225.216141}}} id=7
1821SkOpAngle::afterPart {{{492.453522,225.21611}, {494.37619,225.116943}}} id=7
1822SkOpAngle::after [7/19] 1/1 tStart=0.998861268 tEnd=0 < [7/20] 17/17 tStart=0.998861268 tEnd=0.999209221 < [3/6] 9/9 tStart=0.870423127 tEnd=0.872874414 F 4
1823SkOpAngle::afterPart {{{492.453522,225.21611}, {494.37619,225.116943}}} id=7
1824SkOpAngle::afterPart {{{492.453522,225.21611}, {492.45285,225.216141}}} id=7
1825SkOpAngle::afterPart {{{492.453522,225.21611}, {492.453003,225.214828}, {492.453003,225.214828}}} id=3
1826SkOpAngle::after [3/6] 9/9 tStart=0.870423127 tEnd=0.872874414 < [7/20] 17/17 tStart=0.998861268 tEnd=0.999209221 < [3/5] 25/25 tStart=0.870423127 tEnd=0.724616587 T 4
1827SkOpAngle::afterPart {{{492.453522,225.21611}, {492.453003,225.214828}, {492.453003,225.214828}}} id=3
1828SkOpAngle::afterPart {{{492.453522,225.21611}, {492.45285,225.216141}}} id=7
1829SkOpAngle::afterPart {{{492.453522,225.21611}, {492.469401,225.254666}, {492.500397,225.326553}}} id=3
1830SkOpSegment::sortAngles [3] tStart=0.872874414 [16]
1831SkOpSegment::sortAngles [3] tStart=0.887605755 [18]
1832SkOpAngle::after [3/9] 25/25 tStart=0.887605755 tEnd=0.872874414 < [5/11] 9/9 tStart=0.292224891 tEnd=0 < [3/10] 9/9 tStart=0.887605755 tEnd=1 T 11
1833SkOpAngle::afterPart {{{492.450012,225.20752}, {492.453003,225.214767}, {492.453003,225.214828}}} id=3
1834SkOpAngle::afterPart {{{492.450012,225.20752}, {492.440051,225.177084}, {492.42984,225.142548}}} id=5
1835SkOpAngle::afterPart {{{492.450012,225.20752}, {492.439333,225.181283}, {492.437775,225.175201}}} id=3
1836SkOpAngle::after [3/9] 25/25 tStart=0.887605755 tEnd=0.872874414 < [5/12] 25/25 tStart=0.292224891 tEnd=0.32993192 < [5/11] 9/9 tStart=0.292224891 tEnd=0 F 12
1837SkOpAngle::afterPart {{{492.450012,225.20752}, {492.453003,225.214767}, {492.453003,225.214828}}} id=3
1838SkOpAngle::afterPart {{{492.450012,225.20752}, {492.451282,225.211404}, {492.452545,225.21521}}} id=5
1839SkOpAngle::afterPart {{{492.450012,225.20752}, {492.440051,225.177084}, {492.42984,225.142548}}} id=5
1840SkOpAngle::after [5/11] 9/9 tStart=0.292224891 tEnd=0 < [5/12] 25/25 tStart=0.292224891 tEnd=0.32993192 < [3/10] 9/9 tStart=0.887605755 tEnd=1 F 5
1841SkOpAngle::afterPart {{{492.450012,225.20752}, {492.440051,225.177084}, {492.42984,225.142548}}} id=5
1842SkOpAngle::afterPart {{{492.450012,225.20752}, {492.451282,225.211404}, {492.452545,225.21521}}} id=5
1843SkOpAngle::afterPart {{{492.450012,225.20752}, {492.439333,225.181283}, {492.437775,225.175201}}} id=3
1844SkOpAngle::after [3/10] 9/9 tStart=0.887605755 tEnd=1 < [5/12] 25/25 tStart=0.292224891 tEnd=0.32993192 < [3/9] 25/25 tStart=0.887605755 tEnd=0.872874414 T 11
1845SkOpAngle::afterPart {{{492.450012,225.20752}, {492.439333,225.181283}, {492.437775,225.175201}}} id=3
1846SkOpAngle::afterPart {{{492.450012,225.20752}, {492.451282,225.211404}, {492.452545,225.21521}}} id=5
1847SkOpAngle::afterPart {{{492.450012,225.20752}, {492.453003,225.214767}, {492.453003,225.214828}}} id=3
1848SkOpSegment::sortAngles [5] tStart=0.292224891 [19]
1849SkOpSegment::sortAngles [5] tStart=0.32993192 [17]
1850SkOpSegment::sortAngles [5] tStart=0.334541898 [24]
1851SkOpAngle::after [5/15] 9/9 tStart=0.334541898 tEnd=0.32993192 < [7/21] 1/1 tStart=0.999209221 tEnd=0.998861268 < [5/16] 25/25 tStart=0.334541898 tEnd=1 F 4
1852SkOpAngle::afterPart {{{492.45285,225.216141}, {492.452545,225.21521}, {492.452545,225.21521}}} id=5
1853SkOpAngle::afterPart {{{492.45285,225.216141}, {492.453522,225.21611}}} id=7
1854SkOpAngle::afterPart {{{492.45285,225.216141}, {492.475165,225.283211}, {492.495178,225.325806}}} id=5
1855SkOpAngle::after [5/15] 9/9 tStart=0.334541898 tEnd=0.32993192 < [7/22] 17/17 tStart=0.999209221 tEnd=1 < [5/16] 25/25 tStart=0.334541898 tEnd=1 T 4
1856SkOpAngle::afterPart {{{492.45285,225.216141}, {492.452545,225.21521}, {492.452545,225.21521}}} id=5
1857SkOpAngle::afterPart {{{492.45285,225.216141}, {492.451324,225.216217}}} id=7
1858SkOpAngle::afterPart {{{492.45285,225.216141}, {492.475165,225.283211}, {492.495178,225.325806}}} id=5
1859SkOpSegment::sortAngles [6] tStart=0.00147105082 [21]
1860SkOpSegment::sortAngles [7] tStart=0.998861268 [23]
1861SkOpSegment::sortAngles [7] tStart=0.999209221 [25]
1862SkOpSegment::debugShowActiveSpans id=1 (492.451324,225.216217 492.452161,225.215521 492.453003,225.214828 1f) t=0 tEnd=6.50647037e-05 windSum=? windValue=1
1863SkOpSegment::debugShowActiveSpans id=1 (492.453003,225.214828 510.633465,210.095684 511.418884,210.714493 0.707139313f) t=6.50647037e-05 tEnd=1 windSum=? windValue=1
1864SkOpSegment::debugShowActiveSpans id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 tEnd=1 windSum=? windValue=1
1865SkOpSegment::debugShowActiveSpans id=3 (493.19165,226.887451 492.655145,225.685452 492.500397,225.326553) t=0 tEnd=0.724616587 windSum=? windValue=1
1866SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=? windValue=1
1867SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=? windValue=1
1868SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=? windValue=1
1869SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1870SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1871SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1872SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=? windValue=1
1873SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=? windValue=1
1874SkOpSegment::debugShowActiveSpans id=5 (492.45285,225.216141 492.475165,225.283211 492.495178,225.325806) t=0.334541898 tEnd=1 windSum=? windValue=1
1875SkOpSegment::debugShowActiveSpans id=6 (492.495178,225.325806 492.497789,225.32618 492.500397,225.326553) t=0 tEnd=0.00147105082 windSum=? windValue=1
1876SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=? windValue=1
1877SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=? windValue=1
1878SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=? windValue=1
1879SkOpSegment::debugShowActiveSpans id=7 (492.45285,225.216141 492.451324,225.216217) t=0.999209221 tEnd=1 windSum=? windValue=1
1880SkOpSpan::sortableTop dir=kTop seg=1 t=3.25323518e-05 pt=(492.452148,225.215515)
1881SkOpSpan::sortableTop [0] valid=1 operand=0 span=16 ccw=0 seg=3 {{{493.19165f, 226.887451f}, {492.451447f, 225.22908f}, {492.437775f, 225.175201f}}} t=0.876908819 pt=(492.452148,225.212769) slope=(-0.103101554,-0.251377622)
1882SkOpSpan::sortableTop [1] valid=1 operand=0 span=19 ccw=1 seg=5 {{{492.42984f, 225.142548f}, {492.465088f, 225.261765f}, {492.495178f, 225.325806f}}} t=0.324136764 pt=(492.452148,225.214035) slope=(0.0335760769,0.10133242)
1883SkOpSpan::sortableTop [2] valid=1 operand=0 span=1 ccw=1 seg=1 {{{{492.451324f, 225.216217f}, {510.633392f, 210.095627f}, {511.418884f, 210.714493f}}}, 0.707106769f} t=3.25323518e-05 pt=(492.452148,225.215515) slope=(12.8564438,-10.6916478)
1884SkOpSegment::markWinding id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.872874414 [16] (492.453003,225.214828) tEnd=0.887605755 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
1885SkOpSegment::markWinding id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.872874414 [16] (492.453003,225.214828) tEnd=0.887605755 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
1886SkOpSegment::markWinding id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0.292224891 [19] (492.450012,225.20752) tEnd=0.32993192 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
1887SkOpSegment::markWinding id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0.292224891 [19] (492.450012,225.20752) tEnd=0.32993192 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
1888SkOpSegment::markWinding id=1 (492.451324,225.216217 510.633392,210.095627 511.418884,210.714493) t=0 [1] (492.451324,225.216217) tEnd=6.50647037e-05 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1889SkOpSegment::markWinding id=1 (492.451324,225.216217 510.633392,210.095627 511.418884,210.714493) t=0 [1] (492.451324,225.216217) tEnd=6.50647037e-05 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1890SkOpSegment::markWinding id=7 (494.37619,225.116943 492.451324,225.216217) t=0.999209221 [25] (492.45285,225.216141) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
1891SkOpSegment::findNextWinding simple
1892SkOpSegment::markDone id=1 (492.451324,225.216217 510.633392,210.095627 511.418884,210.714493) t=0 [1] (492.451324,225.216217) tEnd=6.50647037e-05 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1893bridgeWinding current id=1 from=(492.453003,225.214828) to=(492.451324,225.216217)
1894path.moveTo(492.453003,225.214828);
1895path.conicTo(492.452148,225.215515, 492.451324,225.216217, 1);
1896SkOpSegment::markWinding id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0.334541898 [24] (492.45285,225.216141) tEnd=1 newWindSum=1 windSum=? windValue=1
1897SkOpSegment::markWinding id=6 (492.495178,225.325806 494.272919,225.581543 494.37619,225.116943) t=0 [11] (492.495178,225.325806) tEnd=0.00147105082 newWindSum=1 windSum=? windValue=1
1898SkOpSegment::markAngle last seg=6 span=21 windSum=?
1899SkOpSegment::markWinding id=7 (494.37619,225.116943 492.451324,225.216217) t=0.998861268 [23] (492.453522,225.21611) tEnd=0.999209221 newWindSum=1 windSum=? windValue=1
1900SkOpSegment::markAngle last seg=7 span=23 windSum=1
1901SkOpSegment::markWinding id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0.32993192 [17] (492.452545,225.21521) tEnd=0.334541898 newWindSum=-1 windSum=? windValue=1
1902SkOpSegment::markAngle last seg=5 span=17 windSum=-1
1903SkOpSegment::findNextWinding
1904SkOpAngle::dumpOne [7/22] next=5/16 sect=17/17 s=0.999209221 [25] e=1 [14] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0
1905SkOpAngle::dumpOne [5/16] next=7/21 sect=25/25 s=0.334541898 [24] e=1 [10] sgn=-1 windVal=1 windSum=1
1906SkOpAngle::dumpOne [7/21] next=5/15 sect=1/1 s=0.999209221 [25] e=0.998861268 [23] sgn=1 windVal=1 windSum=1
1907SkOpAngle::dumpOne [5/15] next=7/22 sect=9/9 s=0.334541898 [24] e=0.32993192 [17] sgn=1 windVal=1 windSum=-1
1908SkOpSegment::findNextWinding chase.append segment=6 span=21 windSum=-2147483647
1909SkOpSegment::findNextWinding chase.append segment=7 span=23 windSum=1
1910SkOpSegment::findNextWinding chase.append segment=5 span=17 windSum=-1
1911SkOpSegment::markDone id=7 (494.37619,225.116943 492.451324,225.216217) t=0.999209221 [25] (492.45285,225.216141) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
1912SkOpSegment::findNextWinding from:[7] to:[5] start=7393664 end=7391976
1913bridgeWinding current id=7 from=(492.451324,225.216217) to=(492.45285,225.216141)
1914SkOpSegment::findNextWinding simple
1915SkOpSegment::markDone id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0.334541898 [24] (492.45285,225.216141) tEnd=1 newWindSum=1 newOppSum=? oppSum=? windSum=1 windValue=1 oppValue=0
1916bridgeWinding current id=5 from=(492.45285,225.216141) to=(492.495178,225.325806)
1917path.lineTo(492.45285,225.216141);
1918path.quadTo(492.475159,225.283218, 492.495178,225.325806);
1919SkOpSegment::markWinding id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0 [5] (493.19165,226.887451) tEnd=0.724616587 newWindSum=-1 windSum=? windValue=1
1920SkOpSegment::markWinding id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 [3] (511.418884,210.714493) tEnd=1 newWindSum=-1 windSum=? windValue=1
1921SkOpSegment::markWinding id=1 (492.451324,225.216217 510.633392,210.095627 511.418884,210.714493) t=6.50647037e-05 [15] (492.453003,225.214828) tEnd=1 newWindSum=-1 windSum=? windValue=1
1922SkOpSegment::markAngle last seg=1 span=15 windSum=-1
1923SkOpSegment::markWinding id=6 (492.495178,225.325806 494.272919,225.581543 494.37619,225.116943) t=0.00147105082 [21] (492.500397,225.326553) tEnd=1 newWindSum=-1 windSum=? windValue=1
1924SkOpSegment::markWinding id=7 (494.37619,225.116943 492.451324,225.216217) t=0 [13] (494.37619,225.116943) tEnd=0.998861268 newWindSum=-1 windSum=? windValue=1
1925SkOpSegment::markAngle last seg=7 span=23 windSum=1
1926SkOpSegment::markWinding id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.724616587 [20] (492.500397,225.326553) tEnd=0.870423127 newWindSum=1 windSum=? windValue=1
1927SkOpSegment::markAngle last seg=3 span=22 windSum=?
1928SkOpSegment::findNextWinding
1929SkOpAngle::dumpOne [6/17] next=3/3 sect=13/13 s=0.00147105082 [21] e=0 [11] sgn=1 windVal=1 windSum=1
1930SkOpAngle::dumpOne [3/3] next=6/18 sect=25/25 s=0.724616587 [20] e=0 [5] sgn=1 windVal=1 windSum=-1
1931SkOpAngle::dumpOne [6/18] next=3/4 sect=29/1 s=0.00147105082 [21] e=1 [12] sgn=-1 windVal=1 windSum=-1
1932SkOpAngle::dumpOne [3/4] next=6/17 sect=9/9 s=0.724616587 [20] e=0.870423127 [22] sgn=-1 windVal=1 windSum=1
1933SkOpSegment::findNextWinding chase.append segment=1 span=15 windSum=-1
1934SkOpSegment::findNextWinding chase.append segment=3 span=22 windSum=-2147483647
1935SkOpSegment::markDone id=6 (492.495178,225.325806 494.272919,225.581543 494.37619,225.116943) t=0 [11] (492.495178,225.325806) tEnd=0.00147105082 newWindSum=1 newOppSum=? oppSum=? windSum=1 windValue=1 oppValue=0
1936SkOpSegment::findNextWinding from:[6] to:[3] start=7393216 end=7391336
1937bridgeWinding current id=6 from=(492.495178,225.325806) to=(492.500397,225.326553)
1938path.quadTo(492.497803,225.326187, 492.500397,225.326553);
1939SkOpSegment::findNextWinding simple
1940SkOpSegment::markDone id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0 [5] (493.19165,226.887451) tEnd=0.724616587 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
1941bridgeWinding current id=3 from=(492.500397,225.326553) to=(493.19165,226.887451)
1942path.quadTo(492.655151,225.685455, 493.19165,226.887451);
1943SkOpSegment::findNextWinding simple
1944SkOpSegment::markDone id=2 (511.418884,210.714493 494.350159,228.773712 493.19165,226.887451) t=0 [3] (511.418884,210.714493) tEnd=1 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
1945bridgeWinding current id=2 from=(493.19165,226.887451) to=(511.418884,210.714493)
1946path.quadTo(494.350159,228.773712, 511.418884,210.714493);
1947SkOpSegment::markWinding id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.870423127 [22] (492.453522,225.21611) tEnd=0.872874414 newWindSum=-1 windSum=? windValue=1
1948SkOpSegment::markAngle last seg=3 span=22 windSum=-1
1949SkOpSegment::findNextWinding
1950SkOpAngle::dumpOne [1/2] next=5/13 sect=1/1 s=6.50647037e-05 [15] e=1 [2] sgn=-1 windVal=1 windSum=-1
1951SkOpAngle::dumpOne [5/13] next=3/8 sect=9/9 s=0.32993192 [17] e=0.292224891 [19] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0
1952SkOpAngle::dumpOne [3/8] next=1/1 sect=9/9 s=0.872874414 [16] e=0.887605755 [18] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
1953SkOpAngle::dumpOne [1/1] next=5/14 sect=17/17 s=6.50647037e-05 [15] e=0 [1] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
1954SkOpAngle::dumpOne [5/14] next=3/7 sect=25/25 s=0.32993192 [17] e=0.334541898 [24] sgn=-1 windVal=1 windSum=-1
1955SkOpAngle::dumpOne [3/7] next=1/2 sect=25/25 s=0.872874414 [16] e=0.870423127 [22] sgn=1 windVal=1 windSum=-1
1956SkOpSegment::markDone id=1 (492.451324,225.216217 510.633392,210.095627 511.418884,210.714493) t=6.50647037e-05 [15] (492.453003,225.214828) tEnd=1 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
1957SkOpSegment::findNextWinding from:[1] to:[5] start=7392880 end=7393104
1958bridgeWinding current id=1 from=(511.418884,210.714493) to=(492.453003,225.214828)
1959path.conicTo(510.633453,210.095688, 492.453003,225.214828, 0.707139313);
1960path.close();
1961SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=1 windValue=1
1962SkOpSegment::debugShowActiveSpans id=3 (492.453522,225.21611 492.45326,225.215465 492.453003,225.214828) t=0.870423127 tEnd=0.872874414 windSum=-1 windValue=1
1963SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=1 oppSum=0 windValue=1 oppValue=0
1964SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
1965SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
1966SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
1967SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=1 oppSum=0 windValue=1 oppValue=0
1968SkOpSegment::debugShowActiveSpans id=5 (492.452545,225.21521 492.452698,225.215676 492.45285,225.216141) t=0.32993192 tEnd=0.334541898 windSum=-1 windValue=1
1969SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=-1 windValue=1
1970SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=-1 windValue=1
1971SkOpSegment::debugShowActiveSpans id=7 (492.453522,225.21611 492.45285,225.216141) t=0.998861268 tEnd=0.999209221 windSum=1 windValue=1
1972SkOpSegment::findNextWinding
1973SkOpAngle::dumpOne [7/21] next=5/15 sect=1/1 s=0.999209221 [25] e=0.998861268 [23] sgn=1 windVal=1 windSum=1
1974SkOpAngle::dumpOne [5/15] next=7/22 sect=9/9 s=0.334541898 [24] e=0.32993192 [17] sgn=1 windVal=1 windSum=-1
1975SkOpAngle::dumpOne [7/22] next=5/16 sect=17/17 s=0.999209221 [25] e=1 [14] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
1976SkOpAngle::dumpOne [5/16] next=7/21 sect=25/25 s=0.334541898 [24] e=1 [10] sgn=-1 windVal=1 windSum=1 done
1977SkOpSegment::markDone id=7 (494.37619,225.116943 492.451324,225.216217) t=0.998861268 [23] (492.453522,225.21611) tEnd=0.999209221 newWindSum=1 newOppSum=? oppSum=? windSum=1 windValue=1 oppValue=0
1978SkOpSegment::findNextWinding from:[7] to:[5] start=7393664 end=7392880
1979bridgeWinding current id=7 from=(492.453522,225.21611) to=(492.45285,225.216141)
1980SkOpSegment::findNextWinding
1981SkOpAngle::dumpOne [5/14] next=3/7 sect=25/25 s=0.32993192 [17] e=0.334541898 [24] sgn=-1 windVal=1 windSum=-1
1982SkOpAngle::dumpOne [3/7] next=1/2 sect=25/25 s=0.872874414 [16] e=0.870423127 [22] sgn=1 windVal=1 windSum=-1
1983SkOpAngle::dumpOne [1/2] next=5/13 sect=1/1 s=6.50647037e-05 [15] e=1 [2] sgn=-1 windVal=1 windSum=-1 done
1984SkOpAngle::dumpOne [5/13] next=3/8 sect=9/9 s=0.32993192 [17] e=0.292224891 [19] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0
1985SkOpAngle::dumpOne [3/8] next=1/1 sect=9/9 s=0.872874414 [16] e=0.887605755 [18] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
1986SkOpAngle::dumpOne [1/1] next=5/14 sect=17/17 s=6.50647037e-05 [15] e=0 [1] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
1987SkOpSegment::markDone id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0.32993192 [17] (492.452545,225.21521) tEnd=0.334541898 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
1988SkOpSegment::findNextWinding from:[5] to:[3] start=7392768 end=7393440
1989bridgeWinding current id=5 from=(492.45285,225.216141) to=(492.452545,225.21521)
1990path.moveTo(492.453522,225.21611);
1991path.lineTo(492.45285,225.216141);
1992path.quadTo(492.452698,225.215683, 492.452545,225.21521);
1993SkOpSegment::findNextWinding
1994SkOpAngle::dumpOne [3/6] next=7/20 sect=9/9 s=0.870423127 [22] e=0.872874414 [16] sgn=-1 windVal=1 windSum=-1
1995SkOpAngle::dumpOne [7/20] next=3/5 sect=17/17 s=0.998861268 [23] e=0.999209221 [25] sgn=-1 windVal=1 windSum=1 done
1996SkOpAngle::dumpOne [3/5] next=7/19 sect=25/25 s=0.870423127 [22] e=0.724616587 [20] sgn=1 windVal=1 windSum=1
1997SkOpAngle::dumpOne [7/19] next=3/6 sect=1/1 s=0.998861268 [23] e=0 [13] sgn=1 windVal=1 windSum=-1
1998SkOpSegment::markDone id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.870423127 [22] (492.453522,225.21611) tEnd=0.872874414 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
1999SkOpSegment::findNextWinding from:[3] to:[7] start=7393552 end=7392392
2000bridgeWinding current id=3 from=(492.453003,225.214828) to=(492.453522,225.21611)
2001path.lineTo(492.453003,225.214828);
2002path.quadTo(492.453247,225.215469, 492.453522,225.21611);
2003path.close();
2004SkOpSegment::debugShowActiveSpans id=3 (492.500397,225.326553 492.469401,225.254666 492.453522,225.21611) t=0.724616587 tEnd=0.870423127 windSum=1 windValue=1
2005SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=1 oppSum=0 windValue=1 oppValue=0
2006SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
2007SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
2008SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
2009SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=1 oppSum=0 windValue=1 oppValue=0
2010SkOpSegment::debugShowActiveSpans id=6 (492.500397,225.326553 494.273071,225.580858 494.37619,225.116943) t=0.00147105082 tEnd=1 windSum=-1 windValue=1
2011SkOpSegment::debugShowActiveSpans id=7 (494.37619,225.116943 492.453522,225.21611) t=0 tEnd=0.998861268 windSum=-1 windValue=1
2012SkOpSegment::findNextWinding simple
2013SkOpSegment::markDone id=7 (494.37619,225.116943 492.451324,225.216217) t=0 [13] (494.37619,225.116943) tEnd=0.998861268 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
2014bridgeWinding current id=7 from=(492.453522,225.21611) to=(494.37619,225.116943)
2015SkOpSegment::findNextWinding
2016SkOpAngle::dumpOne [6/18] next=3/4 sect=29/1 s=0.00147105082 [21] e=1 [12] sgn=-1 windVal=1 windSum=-1
2017SkOpAngle::dumpOne [3/4] next=6/17 sect=9/9 s=0.724616587 [20] e=0.870423127 [22] sgn=-1 windVal=1 windSum=1
2018SkOpAngle::dumpOne [6/17] next=3/3 sect=13/13 s=0.00147105082 [21] e=0 [11] sgn=1 windVal=1 windSum=1 done
2019SkOpAngle::dumpOne [3/3] next=6/18 sect=25/25 s=0.724616587 [20] e=0 [5] sgn=1 windVal=1 windSum=-1 done
2020SkOpSegment::markDone id=6 (492.495178,225.325806 494.272919,225.581543 494.37619,225.116943) t=0.00147105082 [21] (492.500397,225.326553) tEnd=1 newWindSum=-1 newOppSum=? oppSum=? windSum=-1 windValue=1 oppValue=0
2021SkOpSegment::findNextWinding from:[6] to:[3] start=7393216 end=7393440
2022bridgeWinding current id=6 from=(494.37619,225.116943) to=(492.500397,225.326553)
2023path.moveTo(492.453522,225.21611);
2024path.lineTo(494.37619,225.116943);
2025path.quadTo(494.273071,225.580856, 492.500397,225.326553);
2026SkOpSegment::findNextWinding
2027SkOpAngle::dumpOne [3/5] next=7/19 sect=25/25 s=0.870423127 [22] e=0.724616587 [20] sgn=1 windVal=1 windSum=1
2028SkOpAngle::dumpOne [7/19] next=3/6 sect=1/1 s=0.998861268 [23] e=0 [13] sgn=1 windVal=1 windSum=-1 done
2029SkOpAngle::dumpOne [3/6] next=7/20 sect=9/9 s=0.870423127 [22] e=0.872874414 [16] sgn=-1 windVal=1 windSum=-1 done
2030SkOpAngle::dumpOne [7/20] next=3/5 sect=17/17 s=0.998861268 [23] e=0.999209221 [25] sgn=-1 windVal=1 windSum=1 done
2031SkOpSegment::markDone id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.724616587 [20] (492.500397,225.326553) tEnd=0.870423127 newWindSum=1 newOppSum=? oppSum=? windSum=1 windValue=1 oppValue=0
2032SkOpSegment::findNextWinding from:[3] to:[7] start=7393552 end=7393776
2033bridgeWinding current id=3 from=(492.500397,225.326553) to=(492.453522,225.21611)
2034path.quadTo(492.469391,225.254669, 492.453522,225.21611);
2035path.close();
2036SkOpSegment::debugShowActiveSpans id=3 (492.453003,225.214828 492.451429,225.21103 492.450012,225.207581) t=0.872874414 tEnd=0.887605755 windSum=1 oppSum=0 windValue=1 oppValue=0
2037SkOpSegment::debugShowActiveSpans id=3 (492.450012,225.207581 492.439333,225.181344 492.437775,225.175201) t=0.887605755 tEnd=1 windSum=? windValue=1
2038SkOpSegment::debugShowActiveSpans id=4 (492.437775,225.175201 492.42984,225.142548) t=0 tEnd=1 windSum=? windValue=1
2039SkOpSegment::debugShowActiveSpans id=5 (492.42984,225.142548 492.440051,225.177084 492.450012,225.20752) t=0 tEnd=0.292224891 windSum=? windValue=1
2040SkOpSegment::debugShowActiveSpans id=5 (492.450012,225.20752 492.451282,225.211404 492.452545,225.21521) t=0.292224891 tEnd=0.32993192 windSum=1 oppSum=0 windValue=1 oppValue=0
2041SkOpSegment::markWinding id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0 [9] (492.42984,225.142548) tEnd=0.292224891 newWindSum=-1 windSum=? windValue=1
2042SkOpSegment::markWinding id=4 (492.437775,225.175201 492.42984,225.142548) t=0 [7] (492.437775,225.175201) tEnd=1 newWindSum=-1 windSum=? windValue=1
2043SkOpSegment::markWinding id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.887605755 [18] (492.450012,225.207581) tEnd=1 newWindSum=-1 windSum=? windValue=1
2044SkOpSegment::markAngle last seg=3 span=18 windSum=-1
2045SkOpSegment::findNextWinding
2046SkOpAngle::dumpOne [5/12] next=3/9 sect=25/25 s=0.292224891 [19] e=0.32993192 [17] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
2047SkOpAngle::dumpOne [3/9] next=5/11 sect=25/25 s=0.887605755 [18] e=0.872874414 [16] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0
2048SkOpAngle::dumpOne [5/11] next=3/10 sect=9/9 s=0.292224891 [19] e=0 [9] sgn=1 windVal=1 windSum=-1
2049SkOpAngle::dumpOne [3/10] next=5/12 sect=9/9 s=0.887605755 [18] e=1 [6] sgn=-1 windVal=1 windSum=-1
2050SkOpSegment::findNextWinding chase.append segment=3 span=18 windSum=-1
2051SkOpSegment::markDone id=5 (492.42984,225.142548 492.465088,225.261765 492.495178,225.325806) t=0.292224891 [19] (492.450012,225.20752) tEnd=0.32993192 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2052SkOpSegment::findNextWinding from:[5] to:[3] start=7392992 end=7392768
2053bridgeWinding current id=5 from=(492.452545,225.21521) to=(492.450012,225.20752)
2054path.moveTo(492.452545,225.21521);
2055path.quadTo(492.451294,225.211411, 492.450012,225.20752);
2056SkOpSegment::findNextWinding
2057SkOpAngle::dumpOne [3/8] next=1/1 sect=9/9 s=0.872874414 [16] e=0.887605755 [18] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0
2058SkOpAngle::dumpOne [1/1] next=5/14 sect=17/17 s=6.50647037e-05 [15] e=0 [1] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
2059SkOpAngle::dumpOne [5/14] next=3/7 sect=25/25 s=0.32993192 [17] e=0.334541898 [24] sgn=-1 windVal=1 windSum=-1 done
2060SkOpAngle::dumpOne [3/7] next=1/2 sect=25/25 s=0.872874414 [16] e=0.870423127 [22] sgn=1 windVal=1 windSum=-1 done
2061SkOpAngle::dumpOne [1/2] next=5/13 sect=1/1 s=6.50647037e-05 [15] e=1 [2] sgn=-1 windVal=1 windSum=-1 done
2062SkOpAngle::dumpOne [5/13] next=3/8 sect=9/9 s=0.32993192 [17] e=0.292224891 [19] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
2063SkOpSegment::markDone id=3 (493.19165,226.887451 492.451447,225.22908 492.437775,225.175201) t=0.872874414 [16] (492.453003,225.214828) tEnd=0.887605755 newWindSum=1 newOppSum=0 oppSum=0 windSum=1 windValue=1 oppValue=0
2064SkOpSegment::findNextWinding from:[3] to:[5] start=7392880 end=7393104
2065bridgeWinding current id=3 from=(492.450012,225.207581) to=(492.453003,225.214828)
2066path.lineTo(492.450012,225.207581);
2067path.quadTo(492.451416,225.211029, 492.453003,225.214828);
2068SkOpSegment::findNextWinding
2069SkOpAngle::dumpOne [5/12] next=3/9 sect=25/25 s=0.292224891 [19] e=0.32993192 [17] sgn=-1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
2070SkOpAngle::dumpOne [3/9] next=5/11 sect=25/25 s=0.887605755 [18] e=0.872874414 [16] sgn=1 windVal=1 windSum=1 oppVal=0 oppSum=0 done
2071SkOpAngle::dumpOne [5/11] next=3/10 sect=9/9 s=0.292224891 [19] e=0 [9] sgn=1 windVal=1 windSum=-1
2072SkOpAngle::dumpOne [3/10] next=5/12 sect=9/9 s=0.887605755 [18] e=1 [6] sgn=-1 windVal=1 windSum=-1
2073SkOpSegment::findNextWinding from:[5] to:[3] start=7392992 end=7391448
2074bridgeWinding current id=5 from=(492.452545,225.21521) to=(492.450012,225.20752)
2075c:\puregit\src\pathops\skopsegment.cpp:164: fatal error: "assert((this->globalState() && (this->globalState()->debugCheckHealth() || this->globalState()->debugSkipAssert())) || (!fail))"
2076pathops_unittest.exe has triggered a breakpoint.
caryclarkdac1d172014-06-17 05:15:38 -07002077</div>
caryclark26ad22a2015-10-16 09:03:38 -07002078
caryclarkdac1d172014-06-17 05:15:38 -07002079</div>
2080
2081<script type="text/javascript">
2082
caryclark55888e42016-07-18 10:01:36 -07002083 var testDivs = [
caryclark30b9fdd2016-08-31 14:36:29 -07002084 cubicOp158,
2085 cubicOp158ref,
2086 tiger8a_h_1,
2087 tiger8a_h_1ref,
2088 ];
caryclarkdac1d172014-06-17 05:15:38 -07002089
2090var decimal_places = 3; // make this 3 to show more precision
2091
2092var tests = [];
2093var testLines = [];
2094var testTitles = [];
2095var testIndex = 0;
2096var ctx;
2097
2098var xmin, xmax, focusXmin, focusXmax;
2099var ymin, ymax, focusYmin, focusYmax;
2100var scale;
2101var mouseX, mouseY;
2102var srcLeft, srcTop;
2103var screenWidth, screenHeight;
caryclark1049f122015-04-20 08:31:59 -07002104var drawnPts, drawnLines, drawnQuads, drawnConics, drawnCubics;
caryclarkdac1d172014-06-17 05:15:38 -07002105var curveT = 0;
2106
2107var pt_labels = 2;
2108var collect_bounds = false;
2109var control_lines = 0;
2110var curve_t = false;
2111var debug_xy = 1;
2112var focus_enabled = false;
2113var focus_on_selection = false;
2114var step_limit = 0;
2115var draw_active = false;
2116var draw_add = false;
2117var draw_angle = 0;
caryclark624637c2015-05-11 07:21:27 -07002118var draw_coincidence = false;
caryclarkdac1d172014-06-17 05:15:38 -07002119var draw_deriviatives = 0;
2120var draw_hints = false;
caryclarkdac1d172014-06-17 05:15:38 -07002121var draw_id = false;
2122var draw_intersection = 0;
2123var draw_intersectT = false;
2124var draw_legend = true;
2125var draw_log = false;
2126var draw_mark = false;
2127var draw_midpoint = false;
2128var draw_op = 0;
2129var draw_sequence = false;
2130var draw_sort = 0;
caryclark03b03ca2015-04-23 09:13:37 -07002131var draw_top = false;
caryclarkdac1d172014-06-17 05:15:38 -07002132var draw_path = 3;
2133var draw_computed = 0;
2134var retina_scale = !!window.devicePixelRatio;
2135
2136var activeCount = 0;
2137var addCount = 0;
2138var angleCount = 0;
caryclark624637c2015-05-11 07:21:27 -07002139var coinCount = 0;
caryclarkdac1d172014-06-17 05:15:38 -07002140var opCount = 0;
2141var sectCount = 0;
2142var sortCount = 0;
caryclark03b03ca2015-04-23 09:13:37 -07002143var topCount = 0;
caryclarkdac1d172014-06-17 05:15:38 -07002144var markCount = 0;
2145var activeMax = 0;
2146var addMax = 0;
2147var angleMax = 0;
caryclark624637c2015-05-11 07:21:27 -07002148var coinMax = 0;
caryclarkdac1d172014-06-17 05:15:38 -07002149var sectMax = 0;
2150var sectMax2 = 0;
2151var sortMax = 0;
caryclark03b03ca2015-04-23 09:13:37 -07002152var topMax = 0;
caryclarkdac1d172014-06-17 05:15:38 -07002153var markMax = 0;
2154var opMax = 0;
2155var stepMax = 0;
2156var lastIndex = 0;
2157var hasPath = false;
caryclark26ad22a2015-10-16 09:03:38 -07002158var hasAlignedPath = false;
caryclarkdac1d172014-06-17 05:15:38 -07002159var hasComputedPath = false;
caryclark54359292015-03-26 07:52:43 -07002160var angleBetween = false;
2161var afterIndex = 0;
caryclarkdac1d172014-06-17 05:15:38 -07002162
2163var firstActiveSpan = -1;
2164var logStart = -1;
2165var logRange = 0;
2166
2167var SPAN_ID = 0;
2168var SPAN_X1 = SPAN_ID + 1;
2169var SPAN_Y1 = SPAN_X1 + 1;
2170var SPAN_X2 = SPAN_Y1 + 1;
2171var SPAN_Y2 = SPAN_X2 + 1;
caryclark1049f122015-04-20 08:31:59 -07002172
caryclark55888e42016-07-18 10:01:36 -07002173var SPAN_L_TX = SPAN_Y2 + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002174var SPAN_L_TY = SPAN_L_TX + 1;
caryclark55888e42016-07-18 10:01:36 -07002175var SPAN_L_OTHER = SPAN_L_TY + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002176var SPAN_L_OTHERT = SPAN_L_OTHER + 1;
2177var SPAN_L_OTHERI = SPAN_L_OTHERT + 1;
2178var SPAN_L_SUM = SPAN_L_OTHERI + 1;
2179var SPAN_L_VAL = SPAN_L_SUM + 1;
2180var SPAN_L_OPP = SPAN_L_VAL + 1;
2181
2182var SPAN_X3 = SPAN_Y2 + 1;
2183var SPAN_Y3 = SPAN_X3 + 1;
caryclark1049f122015-04-20 08:31:59 -07002184
caryclark55888e42016-07-18 10:01:36 -07002185var SPAN_Q_TX = SPAN_Y3 + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002186var SPAN_Q_TY = SPAN_Q_TX + 1;
caryclark55888e42016-07-18 10:01:36 -07002187var SPAN_Q_OTHER = SPAN_Q_TY + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002188var SPAN_Q_OTHERT = SPAN_Q_OTHER + 1;
2189var SPAN_Q_OTHERI = SPAN_Q_OTHERT + 1;
2190var SPAN_Q_SUM = SPAN_Q_OTHERI + 1;
2191var SPAN_Q_VAL = SPAN_Q_SUM + 1;
2192var SPAN_Q_OPP = SPAN_Q_VAL + 1;
2193
caryclark1049f122015-04-20 08:31:59 -07002194var SPAN_K_W = SPAN_Y3 + 1;
caryclark55888e42016-07-18 10:01:36 -07002195var SPAN_K_TX = SPAN_K_W + 1;
caryclark1049f122015-04-20 08:31:59 -07002196var SPAN_K_TY = SPAN_K_TX + 1;
caryclark55888e42016-07-18 10:01:36 -07002197var SPAN_K_OTHER = SPAN_K_TY + 1;
caryclark1049f122015-04-20 08:31:59 -07002198var SPAN_K_OTHERT = SPAN_K_OTHER + 1;
2199var SPAN_K_OTHERI = SPAN_K_OTHERT + 1;
2200var SPAN_K_SUM = SPAN_K_OTHERI + 1;
2201var SPAN_K_VAL = SPAN_K_SUM + 1;
2202var SPAN_K_OPP = SPAN_K_VAL + 1;
2203
caryclarkdac1d172014-06-17 05:15:38 -07002204var SPAN_X4 = SPAN_Y3 + 1;
2205var SPAN_Y4 = SPAN_X4 + 1;
caryclark1049f122015-04-20 08:31:59 -07002206
caryclark55888e42016-07-18 10:01:36 -07002207var SPAN_C_TX = SPAN_Y4 + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002208var SPAN_C_TY = SPAN_C_TX + 1;
caryclark55888e42016-07-18 10:01:36 -07002209var SPAN_C_OTHER = SPAN_C_TY + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002210var SPAN_C_OTHERT = SPAN_C_OTHER + 1;
2211var SPAN_C_OTHERI = SPAN_C_OTHERT + 1;
2212var SPAN_C_SUM = SPAN_C_OTHERI + 1;
2213var SPAN_C_VAL = SPAN_C_SUM + 1;
2214var SPAN_C_OPP = SPAN_C_VAL + 1;
2215
2216var ACTIVE_LINE_SPAN = 1;
2217var ACTIVE_QUAD_SPAN = ACTIVE_LINE_SPAN + 1;
caryclark1049f122015-04-20 08:31:59 -07002218var ACTIVE_CONIC_SPAN = ACTIVE_QUAD_SPAN + 1;
2219var ACTIVE_CUBIC_SPAN = ACTIVE_CONIC_SPAN + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002220
2221var ADD_MOVETO = ACTIVE_CUBIC_SPAN + 1;
2222var ADD_LINETO = ADD_MOVETO + 1;
2223var ADD_QUADTO = ADD_LINETO + 1;
caryclark1049f122015-04-20 08:31:59 -07002224var ADD_CONICTO = ADD_QUADTO + 1;
2225var ADD_CUBICTO = ADD_CONICTO + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002226var ADD_CLOSE = ADD_CUBICTO + 1;
2227var ADD_FILL = ADD_CLOSE + 1;
2228
2229var PATH_LINE = ADD_FILL + 1;
2230var PATH_QUAD = PATH_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07002231var PATH_CONIC = PATH_QUAD + 1;
2232var PATH_CUBIC = PATH_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002233
2234var INTERSECT_LINE = PATH_CUBIC + 1;
2235var INTERSECT_LINE_2 = INTERSECT_LINE + 1;
2236var INTERSECT_LINE_NO = INTERSECT_LINE_2 + 1;
2237var INTERSECT_QUAD_LINE = INTERSECT_LINE_NO + 1;
2238var INTERSECT_QUAD_LINE_2 = INTERSECT_QUAD_LINE + 1;
2239var INTERSECT_QUAD_LINE_NO = INTERSECT_QUAD_LINE_2 + 1;
2240var INTERSECT_QUAD = INTERSECT_QUAD_LINE_NO + 1;
2241var INTERSECT_QUAD_2 = INTERSECT_QUAD + 1;
2242var INTERSECT_QUAD_NO = INTERSECT_QUAD_2 + 1;
caryclark1049f122015-04-20 08:31:59 -07002243var INTERSECT_CONIC_LINE = INTERSECT_QUAD_NO + 1;
2244var INTERSECT_CONIC_LINE_2 = INTERSECT_CONIC_LINE + 1;
2245var INTERSECT_CONIC_LINE_NO = INTERSECT_CONIC_LINE_2 + 1;
caryclark55888e42016-07-18 10:01:36 -07002246var INTERSECT_CONIC_QUAD = INTERSECT_CONIC_LINE_NO + 1;
2247var INTERSECT_CONIC_QUAD_2 = INTERSECT_CONIC_QUAD + 1;
2248var INTERSECT_CONIC_QUAD_NO = INTERSECT_CONIC_QUAD_2 + 1;
2249var INTERSECT_CONIC = INTERSECT_CONIC_QUAD_NO + 1;
caryclark1049f122015-04-20 08:31:59 -07002250var INTERSECT_CONIC_2 = INTERSECT_CONIC + 1;
2251var INTERSECT_CONIC_NO = INTERSECT_CONIC_2 + 1;
2252var INTERSECT_SELF_CUBIC = INTERSECT_CONIC_NO + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002253var INTERSECT_SELF_CUBIC_NO = INTERSECT_SELF_CUBIC + 1;
2254var INTERSECT_CUBIC_LINE = INTERSECT_SELF_CUBIC_NO + 1;
2255var INTERSECT_CUBIC_LINE_2 = INTERSECT_CUBIC_LINE + 1;
2256var INTERSECT_CUBIC_LINE_3 = INTERSECT_CUBIC_LINE_2 + 1;
2257var INTERSECT_CUBIC_LINE_NO = INTERSECT_CUBIC_LINE_3 + 1;
2258var INTERSECT_CUBIC_QUAD = INTERSECT_CUBIC_LINE_NO + 1;
2259var INTERSECT_CUBIC_QUAD_2 = INTERSECT_CUBIC_QUAD + 1;
2260var INTERSECT_CUBIC_QUAD_3 = INTERSECT_CUBIC_QUAD_2 + 1;
2261var INTERSECT_CUBIC_QUAD_4 = INTERSECT_CUBIC_QUAD_3 + 1;
2262var INTERSECT_CUBIC_QUAD_NO = INTERSECT_CUBIC_QUAD_4 + 1;
2263var INTERSECT_CUBIC = INTERSECT_CUBIC_QUAD_NO + 1;
2264var INTERSECT_CUBIC_2 = INTERSECT_CUBIC + 1;
2265var INTERSECT_CUBIC_3 = INTERSECT_CUBIC_2 + 1;
2266var INTERSECT_CUBIC_4 = INTERSECT_CUBIC_3 + 1;
2267// FIXME: add cubic 5- 9
2268var INTERSECT_CUBIC_NO = INTERSECT_CUBIC_4 + 1;
2269
2270var SORT_UNARY = INTERSECT_CUBIC_NO + 1;
2271var SORT_BINARY = SORT_UNARY + 1;
2272
2273var OP_DIFFERENCE = SORT_BINARY + 1;
2274var OP_INTERSECT = OP_DIFFERENCE + 1;
2275var OP_UNION = OP_INTERSECT + 1;
2276var OP_XOR = OP_UNION + 1;
2277
2278var MARK_LINE = OP_XOR + 1;
2279var MARK_QUAD = MARK_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07002280var MARK_CONIC = MARK_QUAD + 1;
2281var MARK_CUBIC = MARK_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002282var MARK_DONE_LINE = MARK_CUBIC + 1;
2283var MARK_DONE_QUAD = MARK_DONE_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07002284var MARK_DONE_CONIC = MARK_DONE_QUAD + 1;
2285var MARK_DONE_CUBIC = MARK_DONE_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002286var MARK_UNSORTABLE_LINE = MARK_DONE_CUBIC + 1;
2287var MARK_UNSORTABLE_QUAD = MARK_UNSORTABLE_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07002288var MARK_UNSORTABLE_CONIC = MARK_UNSORTABLE_QUAD + 1;
2289var MARK_UNSORTABLE_CUBIC = MARK_UNSORTABLE_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002290var MARK_SIMPLE_LINE = MARK_UNSORTABLE_CUBIC + 1;
2291var MARK_SIMPLE_QUAD = MARK_SIMPLE_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07002292var MARK_SIMPLE_CONIC = MARK_SIMPLE_QUAD + 1;
2293var MARK_SIMPLE_CUBIC = MARK_SIMPLE_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002294var MARK_SIMPLE_DONE_LINE = MARK_SIMPLE_CUBIC + 1;
2295var MARK_SIMPLE_DONE_QUAD = MARK_SIMPLE_DONE_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07002296var MARK_SIMPLE_DONE_CONIC = MARK_SIMPLE_DONE_QUAD + 1;
2297var MARK_SIMPLE_DONE_CUBIC = MARK_SIMPLE_DONE_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002298var MARK_DONE_UNARY_LINE = MARK_SIMPLE_DONE_CUBIC + 1;
2299var MARK_DONE_UNARY_QUAD = MARK_DONE_UNARY_LINE + 1;
caryclark1049f122015-04-20 08:31:59 -07002300var MARK_DONE_UNARY_CONIC = MARK_DONE_UNARY_QUAD + 1;
2301var MARK_DONE_UNARY_CUBIC = MARK_DONE_UNARY_CONIC + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002302var MARK_ANGLE_LAST = MARK_DONE_UNARY_CUBIC + 1;
2303
2304var COMPUTED_SET_1 = MARK_ANGLE_LAST + 1;
2305var COMPUTED_SET_2 = COMPUTED_SET_1 + 1;
2306
caryclark624637c2015-05-11 07:21:27 -07002307var ANGLE_AFTER = COMPUTED_SET_2 + 1;
caryclark54359292015-03-26 07:52:43 -07002308var ANGLE_AFTERPART = ANGLE_AFTER + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002309
caryclark54359292015-03-26 07:52:43 -07002310var ACTIVE_OP = ANGLE_AFTERPART + 1;
caryclarkdac1d172014-06-17 05:15:38 -07002311
caryclark624637c2015-05-11 07:21:27 -07002312var COIN_MAIN_SPAN = ACTIVE_OP + 1;
2313var COIN_OPP_SPAN = COIN_MAIN_SPAN + 1;
2314
2315var FRAG_TYPE_LAST = COIN_OPP_SPAN;
caryclarkdac1d172014-06-17 05:15:38 -07002316
2317var REC_TYPE_UNKNOWN = -1;
2318var REC_TYPE_PATH = 0;
caryclark54359292015-03-26 07:52:43 -07002319var REC_TYPE_PATH2 = 1;
2320var REC_TYPE_SECT = 2;
2321var REC_TYPE_ACTIVE = 3;
2322var REC_TYPE_ADD = 4;
2323var REC_TYPE_SORT = 5;
2324var REC_TYPE_OP = 6;
2325var REC_TYPE_MARK = 7;
2326var REC_TYPE_COMPUTED = 8;
2327var REC_TYPE_COIN = 9;
2328var REC_TYPE_ANGLE = 10;
2329var REC_TYPE_ACTIVE_OP = 11;
2330var REC_TYPE_AFTERPART = 12;
caryclark03b03ca2015-04-23 09:13:37 -07002331var REC_TYPE_TOP = 13;
caryclark624637c2015-05-11 07:21:27 -07002332var REC_TYPE_COINCIDENCE = 14;
caryclark26ad22a2015-10-16 09:03:38 -07002333var REC_TYPE_ALIGNED = 15;
2334var REC_TYPE_LAST = REC_TYPE_ALIGNED;
caryclarkdac1d172014-06-17 05:15:38 -07002335
2336function strs_to_nums(strs) {
2337 var result = [];
2338 for (var idx = 1; idx < strs.length; ++idx) {
2339 var str = strs[idx];
2340 var num = parseFloat(str);
2341 if (isNaN(num)) {
2342 result.push(str);
2343 } else {
2344 result.push(num);
2345 }
2346 }
2347 return result;
2348}
2349
2350function filter_str_by(id, str, regex, array) {
2351 if (regex.test(str)) {
2352 var strs = regex.exec(str);
2353 var result = strs_to_nums(strs);
2354 array.push(id);
2355 array.push(result);
2356 return true;
2357 }
2358 return false;
2359}
2360
2361function construct_regexp2(pattern) {
2362 var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
2363 escape = escape.replace(/UNSORTABLE/g, "\\*\\*\\* UNSORTABLE \\*\\*\\*");
2364 escape = escape.replace(/CUBIC_VAL/g, "\\(P_VAL P_VAL P_VAL P_VAL\\)");
caryclark1049f122015-04-20 08:31:59 -07002365 escape = escape.replace(/CONIC_VAL/g, "\\(P_VAL P_VAL P_VAL W_VAL\\)");
caryclarkdac1d172014-06-17 05:15:38 -07002366 escape = escape.replace(/QUAD_VAL/g, "\\(P_VAL P_VAL P_VAL\\)");
2367 escape = escape.replace(/LINE_VAL/g, "\\(P_VAL P_VAL\\)");
2368 escape = escape.replace(/FILL_TYPE/g, "SkPath::k[a-zA-Z]+_FillType");
caryclark54359292015-03-26 07:52:43 -07002369 escape = escape.replace(/PTR_VAL/g, "0x[0-9A-F]+");
caryclarkdac1d172014-06-17 05:15:38 -07002370 escape = escape.replace(/PT_VAL/g, "\\(P_VAL\\)");
2371 escape = escape.replace(/P_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?, ?(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
2372 escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
caryclark1049f122015-04-20 08:31:59 -07002373 escape = escape.replace(/W_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
caryclarkdac1d172014-06-17 05:15:38 -07002374 escape = escape.replace(/PATH/g, "pathB?");
caryclark1049f122015-04-20 08:31:59 -07002375 escape = escape.replace(/IDX/g, "(-?\\d+)");
caryclarkdac1d172014-06-17 05:15:38 -07002376 escape = escape.replace(/NUM/g, "(-?\\d+)");
2377 escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
2378 return new RegExp(escape, 'i');
2379}
2380
2381function construct_regexp2c(pattern) {
2382 var escape = pattern.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
2383 escape = escape.replace(/UNSORTABLE/g, "\\*\\*\\* UNSORTABLE \\*\\*\\*");
caryclark54359292015-03-26 07:52:43 -07002384 escape = escape.replace(/CUBIC_VAL/g, "(?:\\$\\d = )?\\{\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}\\}");
caryclark1049f122015-04-20 08:31:59 -07002385 escape = escape.replace(/CONIC_VAL/g, "(?:\\$\\d = )?\\{\\{\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}\\}, W_VAL\\}");
caryclark54359292015-03-26 07:52:43 -07002386 escape = escape.replace(/QUAD_VAL/g, "(?:\\$\\d = )?\\{\\{\\{P_VAL\\}, \\{P_VAL\\}, \\{P_VAL\\}\\}\\}");
2387 escape = escape.replace(/LINE_VAL/g, "(?:\\$\\d = )?\\{\\{\\{P_VAL\\}, \\{P_VAL\\}\\}\\}");
caryclarkdac1d172014-06-17 05:15:38 -07002388 escape = escape.replace(/FILL_TYPE/g, "SkPath::k[a-zA-Z]+_FillType");
caryclark54359292015-03-26 07:52:43 -07002389 escape = escape.replace(/PTR_VAL/g, "0x[0-9A-F]+");
caryclarkdac1d172014-06-17 05:15:38 -07002390 escape = escape.replace(/PT_VAL/g, "\\{\\{P_VAL\\}\\}");
caryclark54359292015-03-26 07:52:43 -07002391 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 -07002392 escape = escape.replace(/T_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)");
caryclark1049f122015-04-20 08:31:59 -07002393 escape = escape.replace(/W_VAL/g, "(-?\\d+\\.?\\d*(?:e-?\\d+)?)[Ff]?");
caryclarkdac1d172014-06-17 05:15:38 -07002394 escape = escape.replace(/OPER/g, "[a-z]+");
2395 escape = escape.replace(/PATH/g, "pathB?");
2396 escape = escape.replace(/T_F/g, "([TF])");
caryclark1049f122015-04-20 08:31:59 -07002397 escape = escape.replace(/IDX/g, "(-?\\d+)");
caryclarkdac1d172014-06-17 05:15:38 -07002398 escape = escape.replace(/NUM/g, "(-?\\d+)");
2399 escape = escape.replace(/OPT/g, "(\\?|-?\\d+)");
2400 return new RegExp(escape, 'i');
2401}
2402
2403function match_regexp(str, lineNo, array, id, pattern) {
2404 var regex = construct_regexp2(pattern);
2405 if (filter_str_by(id, str, regex, array)) {
2406 return true;
2407 }
2408 regex = construct_regexp2c(pattern);
2409 return filter_str_by(id, str, regex, array);
2410}
2411
2412function endsWith(str, suffix) {
2413 return str.indexOf(suffix, str.length - suffix.length) !== -1;
2414}
2415
2416function parse_all(test) {
2417 var lines = test.match(/[^\r\n]+/g);
2418 var records = []; // a rec can be the original paths, a set of intersections, a set of active spans, a sort, or a path add
2419 var record = [];
2420 var recType = REC_TYPE_UNKNOWN;
2421 var lastLineNo;
2422 var moveX, moveY;
2423 for (var lineNo = 0; lineNo < lines.length; ++lineNo) {
2424 var line = lines[lineNo];
2425 if (line.length == 0) {
2426 continue;
2427 }
2428 var opStart = "SkOpSegment::";
2429 if (line.lastIndexOf(opStart, 0) === 0) {
2430 line = line.substr(opStart.length);
2431 }
2432 var angleStart = "SkOpAngle::";
2433 if (line.lastIndexOf(angleStart, 0) === 0) {
2434 line = line.substr(angleStart.length);
2435 }
caryclark624637c2015-05-11 07:21:27 -07002436 var coinStart = "SkOpCoincidence::";
2437 if (line.lastIndexOf(coinStart, 0) === 0) {
2438 line = line.substr(coinStart.length);
2439 }
caryclark54359292015-03-26 07:52:43 -07002440 var type = line.lastIndexOf("debugShowActiveSpans", 0) === 0 ? REC_TYPE_ACTIVE
caryclark624637c2015-05-11 07:21:27 -07002441 : line.lastIndexOf("debugShowCoincidence", 0) === 0 ? REC_TYPE_COINCIDENCE
caryclark54359292015-03-26 07:52:43 -07002442 : line.lastIndexOf("((SkOpSegment*)", 0) === 0 ? REC_TYPE_PATH2
caryclark55888e42016-07-18 10:01:36 -07002443 : line.lastIndexOf("debugShowTs", 0) === 0 ? REC_TYPE_COIN
caryclark54359292015-03-26 07:52:43 -07002444 : line.lastIndexOf("afterPart", 0) === 0 ? REC_TYPE_AFTERPART
caryclarkdac1d172014-06-17 05:15:38 -07002445 : line.lastIndexOf("debugShow", 0) === 0 ? REC_TYPE_SECT
2446 : line.lastIndexOf("activeOp", 0) === 0 ? REC_TYPE_ACTIVE_OP
2447 : line.lastIndexOf("computed", 0) === 0 ? REC_TYPE_COMPUTED
2448 : line.lastIndexOf("debugOne", 0) === 0 ? REC_TYPE_SORT
caryclark26ad22a2015-10-16 09:03:38 -07002449 : line.lastIndexOf("aligned=", 0) === 0 ? REC_TYPE_ALIGNED
caryclarkdac1d172014-06-17 05:15:38 -07002450 : line.lastIndexOf("dumpOne", 0) === 0 ? REC_TYPE_SORT
caryclark03b03ca2015-04-23 09:13:37 -07002451 : line.lastIndexOf("findTop", 0) === 0 ? REC_TYPE_TOP
caryclarkdac1d172014-06-17 05:15:38 -07002452 : line.lastIndexOf("pathB.", 0) === 0 ? REC_TYPE_ADD
2453 : line.lastIndexOf("path.", 0) === 0 ? REC_TYPE_ADD
2454 : line.lastIndexOf("after", 0) === 0 ? REC_TYPE_ANGLE
2455 : line.lastIndexOf("mark", 0) === 0 ? REC_TYPE_MARK
2456 : line.lastIndexOf(" {{", 0) === 0 ? REC_TYPE_COMPUTED
caryclark54359292015-03-26 07:52:43 -07002457 : line.lastIndexOf("seg=", 0) === 0 ? REC_TYPE_PATH
caryclarkdac1d172014-06-17 05:15:38 -07002458 : line.lastIndexOf("op", 0) === 0 ? REC_TYPE_OP
2459 : line.lastIndexOf("$", 0) === 0 ? REC_TYPE_PATH
2460 : REC_TYPE_UNKNOWN;
2461 if (recType != type || recType == REC_TYPE_ADD || recType == REC_TYPE_SECT
2462 || recType == REC_TYPE_ACTIVE_OP || recType == REC_TYPE_ANGLE) {
2463 if (recType != REC_TYPE_UNKNOWN) {
2464 records.push(recType);
2465 records.push(lastLineNo);
2466 records.push(record);
2467 }
2468 record = [];
2469 recType = type;
2470 lastLineNo = lineNo;
2471 }
2472 var found = false;
2473 switch (recType) {
2474 case REC_TYPE_ACTIVE:
2475 found = match_regexp(line, lineNo, record, ACTIVE_LINE_SPAN, "debugShowActiveSpans" +
caryclark55888e42016-07-18 10:01:36 -07002476" id=IDX LINE_VAL t=T_VAL tEnd=T_VAL windSum=OPT windValue=IDX"
caryclarkdac1d172014-06-17 05:15:38 -07002477 ) || match_regexp(line, lineNo, record, ACTIVE_QUAD_SPAN, "debugShowActiveSpans" +
caryclark55888e42016-07-18 10:01:36 -07002478" id=IDX QUAD_VAL t=T_VAL tEnd=T_VAL windSum=OPT windValue=IDX"
caryclark1049f122015-04-20 08:31:59 -07002479 ) || match_regexp(line, lineNo, record, ACTIVE_CONIC_SPAN, "debugShowActiveSpans" +
caryclark55888e42016-07-18 10:01:36 -07002480" id=IDX CONIC_VAL t=T_VAL tEnd=T_VAL windSum=OPT windValue=IDX"
caryclarkdac1d172014-06-17 05:15:38 -07002481 ) || match_regexp(line, lineNo, record, ACTIVE_CUBIC_SPAN, "debugShowActiveSpans" +
caryclark55888e42016-07-18 10:01:36 -07002482" id=IDX CUBIC_VAL t=T_VAL tEnd=T_VAL windSum=OPT windValue=IDX"
caryclark624637c2015-05-11 07:21:27 -07002483 ) || match_regexp(line, lineNo, record, ACTIVE_LINE_SPAN, "debugShowActiveSpans" +
caryclark55888e42016-07-18 10:01:36 -07002484" id=IDX LINE_VAL t=T_VAL tEnd=T_VAL windSum=OPT oppSum=OPT windValue=IDX oppValue=NUM"
caryclark624637c2015-05-11 07:21:27 -07002485 ) || match_regexp(line, lineNo, record, ACTIVE_QUAD_SPAN, "debugShowActiveSpans" +
caryclark55888e42016-07-18 10:01:36 -07002486" id=IDX QUAD_VAL t=T_VAL tEnd=T_VAL windSum=OPT oppSum=OPT windValue=IDX oppValue=NUM"
caryclark624637c2015-05-11 07:21:27 -07002487 ) || match_regexp(line, lineNo, record, ACTIVE_CONIC_SPAN, "debugShowActiveSpans" +
caryclark55888e42016-07-18 10:01:36 -07002488" id=IDX CONIC_VAL t=T_VAL tEnd=T_VAL windSum=OPT oppSum=OPT windValue=IDX oppValue=NUM"
caryclark624637c2015-05-11 07:21:27 -07002489 ) || match_regexp(line, lineNo, record, ACTIVE_CUBIC_SPAN, "debugShowActiveSpans" +
caryclark55888e42016-07-18 10:01:36 -07002490" id=IDX CUBIC_VAL t=T_VAL tEnd=T_VAL windSum=OPT oppSum=OPT windValue=IDX oppValue=NUM"
caryclarkdac1d172014-06-17 05:15:38 -07002491 );
2492 break;
2493 case REC_TYPE_ACTIVE_OP:
2494 found = match_regexp(line, lineNo, record, ACTIVE_OP, "activeOp" +
2495" id=IDX t=T_VAL tEnd=T_VAL op=OPER miFrom=NUM miTo=NUM suFrom=NUM suTo=NUM result=IDX"
2496 );
2497 break;
2498 case REC_TYPE_ADD:
2499 if (match_regexp(line, lineNo, record, ADD_MOVETO, "PATH.moveTo(P_VAL);")) {
2500 moveX = record[1][0];
2501 moveY = record[1][1];
2502 found = true;
2503 } else if (match_regexp(line, lineNo, record, ADD_LINETO, "PATH.lineTo(P_VAL);")) {
2504 record[1].unshift(moveY);
2505 record[1].unshift(moveX);
2506 moveX = record[1][2];
2507 moveY = record[1][3];
2508 found = true;
2509 } else if (match_regexp(line, lineNo, record, ADD_QUADTO, "PATH.quadTo(P_VAL, P_VAL);")) {
2510 record[1].unshift(moveY);
2511 record[1].unshift(moveX);
2512 moveX = record[1][4];
2513 moveY = record[1][5];
2514 found = true;
caryclark1049f122015-04-20 08:31:59 -07002515 } else if (match_regexp(line, lineNo, record, ADD_CONICTO, "PATH.conicTo(P_VAL, P_VAL, T_VAL);")) {
2516 record[1].unshift(moveY);
2517 record[1].unshift(moveX);
2518 moveX = record[1][4];
2519 moveY = record[1][5];
2520 found = true;
caryclarkdac1d172014-06-17 05:15:38 -07002521 } else if (match_regexp(line, lineNo, record, ADD_CUBICTO, "PATH.cubicTo(P_VAL, P_VAL, P_VAL);")) {
2522 record[1].unshift(moveY);
2523 record[1].unshift(moveX);
2524 moveX = record[1][6];
2525 moveY = record[1][7];
2526 found = true;
2527 } else if (match_regexp(line, lineNo, record, ADD_FILL, "PATH.setFillType(FILL_TYPE);")) {
2528 found = true;
2529 } else {
2530 found = match_regexp(line, lineNo, record, ADD_CLOSE, "PATH.close();");
2531 }
2532 break;
caryclark54359292015-03-26 07:52:43 -07002533 case REC_TYPE_AFTERPART:
2534 found = match_regexp(line, lineNo, record, PATH_LINE, "afterPart LINE_VAL")
2535 || match_regexp(line, lineNo, record, PATH_QUAD, "afterPart QUAD_VAL")
caryclark1049f122015-04-20 08:31:59 -07002536 || match_regexp(line, lineNo, record, PATH_CONIC, "afterPart CONIC_VAL")
caryclark54359292015-03-26 07:52:43 -07002537 || match_regexp(line, lineNo, record, PATH_CUBIC, "afterPart CUBIC_VAL")
2538 break;
caryclark26ad22a2015-10-16 09:03:38 -07002539 case REC_TYPE_ALIGNED:
2540 found = match_regexp(line, lineNo, record, PATH_LINE, "aligned=IDX LINE_VAL"
2541 ) || match_regexp(line, lineNo, record, PATH_QUAD, "aligned=IDX QUAD_VAL"
2542 ) || match_regexp(line, lineNo, record, PATH_CONIC, "aligned=IDX CONIC_VAL"
2543 ) || match_regexp(line, lineNo, record, PATH_CUBIC, "aligned=IDX CUBIC_VAL"
2544 );
2545 break;
caryclarkdac1d172014-06-17 05:15:38 -07002546 case REC_TYPE_ANGLE:
2547 found = match_regexp(line, lineNo, record, ANGLE_AFTER, "after " +
caryclarkdac1d172014-06-17 05:15:38 -07002548"[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");
2549 break;
2550 case REC_TYPE_COIN:
2551 found = true;
2552 break;
caryclark624637c2015-05-11 07:21:27 -07002553 case REC_TYPE_COINCIDENCE:
2554 found = match_regexp(line, lineNo, record, COIN_MAIN_SPAN, "debugShowCoincidence" +
2555" + id=IDX t=T_VAL tEnd=T_VAL"
2556 ) || match_regexp(line, lineNo, record, COIN_OPP_SPAN, "debugShowCoincidence" +
2557" - id=IDX t=T_VAL tEnd=T_VAL"
2558 );
2559 break;
caryclarkdac1d172014-06-17 05:15:38 -07002560 case REC_TYPE_COMPUTED:
2561 found = line == "computed quadratics given"
2562 || match_regexp(line, lineNo, record, COMPUTED_SET_1, "computed quadratics set 1"
2563 ) || match_regexp(line, lineNo, record, COMPUTED_SET_2, "computed quadratics set 2"
2564 ) || match_regexp(line, lineNo, record, PATH_QUAD, " QUAD_VAL,"
caryclark1049f122015-04-20 08:31:59 -07002565 ) || match_regexp(line, lineNo, record, PATH_CONIC, " CONIC_VAL,"
caryclarkdac1d172014-06-17 05:15:38 -07002566 ) || match_regexp(line, lineNo, record, PATH_CUBIC, " CUBIC_VAL,"
2567 );
2568 break;
2569 case REC_TYPE_PATH:
caryclark54359292015-03-26 07:52:43 -07002570 found = match_regexp(line, lineNo, record, PATH_LINE, "seg=IDX LINE_VAL"
2571 ) || match_regexp(line, lineNo, record, PATH_QUAD, "seg=IDX QUAD_VAL"
caryclark1049f122015-04-20 08:31:59 -07002572 ) || match_regexp(line, lineNo, record, PATH_CONIC, "seg=IDX CONIC_VAL"
caryclark54359292015-03-26 07:52:43 -07002573 ) || match_regexp(line, lineNo, record, PATH_CUBIC, "seg=IDX CUBIC_VAL"
2574 );
2575 break;
2576 case REC_TYPE_PATH2:
2577 found = match_regexp(line, lineNo, record, PATH_LINE, "((SkOpSegment*) PTR_VAL) [IDX] {LINE_VAL}"
2578 ) || match_regexp(line, lineNo, record, PATH_QUAD, "((SkOpSegment*) PTR_VAL) [IDX] {QUAD_VAL}"
caryclark1049f122015-04-20 08:31:59 -07002579 ) || match_regexp(line, lineNo, record, PATH_CONIC, "((SkOpSegment*) PTR_VAL) [IDX] {CONIC_VAL}"
caryclark54359292015-03-26 07:52:43 -07002580 ) || match_regexp(line, lineNo, record, PATH_CUBIC, "((SkOpSegment*) PTR_VAL) [IDX] {CUBIC_VAL}"
caryclarkdac1d172014-06-17 05:15:38 -07002581 );
2582 break;
2583 case REC_TYPE_SECT:
2584 found = match_regexp(line, lineNo, record, INTERSECT_LINE, "debugShowLineIntersection" +
2585" wtTs[0]=T_VAL LINE_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
2586 ) || match_regexp(line, lineNo, record, INTERSECT_LINE_2, "debugShowLineIntersection" +
2587" wtTs[0]=T_VAL LINE_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
2588 ) || match_regexp(line, lineNo, record, INTERSECT_LINE_NO, "debugShowLineIntersection" +
2589" no intersect LINE_VAL LINE_VAL"
2590 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE, "debugShowQuadLineIntersection" +
2591" wtTs[0]=T_VAL QUAD_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
2592 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE_2, "debugShowQuadLineIntersection" +
2593" wtTs[0]=T_VAL QUAD_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
2594 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_LINE_NO, "debugShowQuadLineIntersection" +
2595" no intersect QUAD_VAL LINE_VAL"
2596 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD, "debugShowQuadIntersection" +
2597" wtTs[0]=T_VAL QUAD_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL"
2598 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_2, "debugShowQuadIntersection" +
2599" wtTs[0]=T_VAL QUAD_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL"
2600 ) || match_regexp(line, lineNo, record, INTERSECT_QUAD_NO, "debugShowQuadIntersection" +
2601" no intersect QUAD_VAL QUAD_VAL"
caryclark55888e42016-07-18 10:01:36 -07002602
caryclark1049f122015-04-20 08:31:59 -07002603 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_LINE, "debugShowConicLineIntersection" +
2604" wtTs[0]=T_VAL CONIC_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
2605 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_LINE_2, "debugShowConicLineIntersection" +
2606" wtTs[0]=T_VAL CONIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
2607 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_LINE_NO, "debugShowConicLineIntersection" +
2608" no intersect CONIC_VAL LINE_VAL"
caryclark55888e42016-07-18 10:01:36 -07002609
2610 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_QUAD, "debugShowConicQuadIntersection" +
2611" wtTs[0]=T_VAL CONIC_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL"
2612 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_QUAD_2, "debugShowConicQuadIntersection" +
2613" wtTs[0]=T_VAL CONIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL"
2614 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_QUAD_NO, "debugShowConicQuadIntersection" +
2615" no intersect CONIC_VAL QUAD_VAL"
2616
caryclark1049f122015-04-20 08:31:59 -07002617 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC, "debugShowConicIntersection" +
2618" wtTs[0]=T_VAL CONIC_VAL PT_VAL wnTs[0]=T_VAL CONIC_VAL"
2619 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_2, "debugShowConicIntersection" +
2620" wtTs[0]=T_VAL CONIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL CONIC_VAL wnTs[1]=T_VAL"
2621 ) || match_regexp(line, lineNo, record, INTERSECT_CONIC_NO, "debugShowConicIntersection" +
2622" no intersect CONIC_VAL CONIC_VAL"
caryclarkdac1d172014-06-17 05:15:38 -07002623 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE, "debugShowCubicLineIntersection" +
2624" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL"
2625 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_2, "debugShowCubicLineIntersection" +
2626" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL LINE_VAL wnTs[1]=T_VAL"
2627 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_3, "debugShowCubicLineIntersection" +
2628" 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"
2629 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_LINE_NO, "debugShowCubicLineIntersection" +
2630" no intersect CUBIC_VAL LINE_VAL"
2631 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD, "debugShowCubicQuadIntersection" +
2632" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL"
2633 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_2, "debugShowCubicQuadIntersection" +
2634" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL QUAD_VAL wnTs[1]=T_VAL"
2635 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_3, "debugShowCubicQuadIntersection" +
2636" 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"
2637 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_4, "debugShowCubicQuadIntersection" +
2638" 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"
2639 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_QUAD_NO, "debugShowCubicQuadIntersection" +
2640" no intersect CUBIC_VAL QUAD_VAL"
2641 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC, "debugShowCubicIntersection" +
2642" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL"
2643 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_2, "debugShowCubicIntersection" +
2644" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL PT_VAL wnTs[0]=T_VAL CUBIC_VAL wnTs[1]=T_VAL"
2645 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_3, "debugShowCubicIntersection" +
2646" 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"
2647 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_4, "debugShowCubicIntersection" +
2648" 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"
2649 ) || match_regexp(line, lineNo, record, INTERSECT_CUBIC_NO, "debugShowCubicIntersection" +
2650" no intersect CUBIC_VAL CUBIC_VAL"
2651 ) || match_regexp(line, lineNo, record, INTERSECT_SELF_CUBIC, "debugShowCubicIntersection" +
2652" wtTs[0]=T_VAL CUBIC_VAL PT_VAL wtTs[1]=T_VAL"
2653 ) || match_regexp(line, lineNo, record, INTERSECT_SELF_CUBIC_NO, "debugShowCubicIntersection" +
2654" no self intersect CUBIC_VAL"
2655 );
2656 break;
2657 case REC_TYPE_SORT:
2658 var hasDone = / done/.test(line);
2659 var hasUnorderable = / unorderable/.test(line);
2660 var hasSmall = / small/.test(line);
2661 var hasTiny = / tiny/.test(line);
2662 var hasOperand = / operand/.test(line);
2663 var hasStop = / stop/.test(line);
2664 line.replace(/[ a-z]+$/, "");
2665 found = match_regexp(line, lineNo, record, SORT_UNARY, "debugOne" +
2666" [IDX/IDX] next=IDX/IDX sect=IDX/IDX s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT"
2667 ) || match_regexp(line, lineNo, record, SORT_BINARY, "debugOne" +
2668" [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"
2669 ) || match_regexp(line, lineNo, record, SORT_UNARY, "dumpOne" +
2670" [IDX/IDX] next=IDX/IDX sect=NUM/NUM s=T_VAL [IDX] e=T_VAL [IDX] sgn=NUM windVal=IDX windSum=OPT"
2671 ) || match_regexp(line, lineNo, record, SORT_BINARY, "dumpOne" +
2672" [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"
2673 );
2674 if (found) {
2675 record[1].push(hasDone);
2676 record[1].push(hasUnorderable);
2677 record[1].push(hasSmall);
2678 record[1].push(hasTiny);
2679 record[1].push(hasOperand);
2680 record[1].push(hasStop);
2681 }
2682 break;
caryclark03b03ca2015-04-23 09:13:37 -07002683 case REC_TYPE_TOP:
2684 found = match_regexp(line, lineNo, record, ACTIVE_OP, "findTop" +
2685" id=IDX s=T_VAL e=T_VAL cw=NUM swap=NUM inflections=NUM monotonic=NUM"
2686 ) || match_regexp(line, lineNo, record, ACTIVE_OP, "findTop" +
2687" id=IDX s=T_VAL e=T_VAL (-) cw=NUM swap=NUM inflections=NUM monotonic=NUM"
2688 ) || match_regexp(line, lineNo, record, ACTIVE_OP, "findTop" +
2689" id=IDX s=T_VAL e=T_VAL (+) cw=NUM swap=NUM inflections=NUM monotonic=NUM"
2690 );
2691 break;
caryclarkdac1d172014-06-17 05:15:38 -07002692 case REC_TYPE_MARK:
2693 found = match_regexp(line, lineNo, record, MARK_LINE, "markWinding" +
caryclark54359292015-03-26 07:52:43 -07002694" 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 -07002695 ) || match_regexp(line, lineNo, record, MARK_QUAD, "markWinding" +
caryclark54359292015-03-26 07:52:43 -07002696" 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 -07002697 ) || match_regexp(line, lineNo, record, MARK_CONIC, "markWinding" +
2698" 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 -07002699 ) || match_regexp(line, lineNo, record, MARK_CUBIC, "markWinding" +
caryclark54359292015-03-26 07:52:43 -07002700" id=IDX CUBIC_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM newOppSum=OPT oppSum=OPT windSum=OPT windValue=IDX"
2701 ) || match_regexp(line, lineNo, record, MARK_DONE_LINE, "markDone" +
2702" 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"
2703 ) || match_regexp(line, lineNo, record, MARK_DONE_QUAD, "markDone" +
2704" 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 -07002705 ) || match_regexp(line, lineNo, record, MARK_DONE_CONIC, "markDone" +
2706" 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 -07002707 ) || match_regexp(line, lineNo, record, MARK_DONE_CUBIC, "markDone" +
2708" 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 -07002709 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_LINE, "markWinding" +
2710" id=IDX LINE_VAL t=T_VAL [IDX] PT_VAL tEnd=T_VAL newWindSum=NUM windSum=OPT windValue=IDX"
2711 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_QUAD, "markWinding" +
2712" 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 -07002713 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_CONIC, "markWinding" +
2714" 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 -07002715 ) || match_regexp(line, lineNo, record, MARK_SIMPLE_CUBIC, "markWinding" +
2716" 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 -07002717 ) || match_regexp(line, lineNo, record, MARK_ANGLE_LAST, "markAngle" +
caryclark1049f122015-04-20 08:31:59 -07002718" last segment=IDX span=IDX"
caryclark54359292015-03-26 07:52:43 -07002719 ) || match_regexp(line, lineNo, record, MARK_ANGLE_LAST, "markAngle" +
caryclark55888e42016-07-18 10:01:36 -07002720" last seg=IDX span=IDX"
2721 ) || match_regexp(line, lineNo, record, MARK_ANGLE_LAST, "markAngle" +
2722" last segment=IDX span=IDX windSum=OPT"
2723 ) || match_regexp(line, lineNo, record, MARK_ANGLE_LAST, "markAngle" +
2724" last seg=IDX span=IDX windSum=OPT"
2725 );
caryclarkdac1d172014-06-17 05:15:38 -07002726 break;
2727 case REC_TYPE_OP:
2728 if (line.lastIndexOf("oppSign oppSign=", 0) === 0
2729 || line.lastIndexOf("operator<", 0) === 0) {
2730 found = true;
2731 break;
2732 }
caryclark54359292015-03-26 07:52:43 -07002733 found = match_regexp(line, lineNo, record, OP_DIFFERENCE, "op diff"
caryclarkdac1d172014-06-17 05:15:38 -07002734 ) || match_regexp(line, lineNo, record, OP_INTERSECT, "op intersect"
caryclark54359292015-03-26 07:52:43 -07002735 ) || match_regexp(line, lineNo, record, OP_INTERSECT, "op sect"
caryclarkdac1d172014-06-17 05:15:38 -07002736 ) || match_regexp(line, lineNo, record, OP_UNION, "op union"
2737 ) || match_regexp(line, lineNo, record, OP_XOR, "op xor"
2738 );
2739 break;
2740 case REC_TYPE_UNKNOWN:
2741 found = true;
2742 break;
2743 }
2744 if (!found) {
2745 console.log(line + " [" + lineNo + "] of type " + type + " not found");
2746 }
2747 }
2748 if (recType != REC_TYPE_UNKNOWN) {
2749 records.push(recType);
2750 records.push(lastLineNo);
2751 records.push(record);
2752 }
2753 if (records.length >= 1) {
2754 tests[testIndex] = records;
2755 testLines[testIndex] = lines;
2756 }
2757}
2758
2759function init(test) {
2760 var canvas = document.getElementById('canvas');
2761 if (!canvas.getContext) return;
2762 ctx = canvas.getContext('2d');
2763 var resScale = retina_scale && window.devicePixelRatio ? window.devicePixelRatio : 1;
2764 var unscaledWidth = window.innerWidth - 20;
2765 var unscaledHeight = window.innerHeight - 20;
2766 screenWidth = unscaledWidth;
2767 screenHeight = unscaledHeight;
2768 canvas.width = unscaledWidth * resScale;
2769 canvas.height = unscaledHeight * resScale;
2770 canvas.style.width = unscaledWidth + 'px';
2771 canvas.style.height = unscaledHeight + 'px';
2772 if (resScale != 1) {
2773 ctx.scale(resScale, resScale);
2774 }
2775 xmin = Infinity;
2776 xmax = -Infinity;
2777 ymin = Infinity;
2778 ymax = -Infinity;
caryclark26ad22a2015-10-16 09:03:38 -07002779 hasPath = hasAlignedPath = hasComputedPath = false;
caryclarkdac1d172014-06-17 05:15:38 -07002780 firstActiveSpan = -1;
2781 for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
2782 var recType = test[tIndex];
2783 if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
2784 console.log("unknown rec type: " + recType);
2785 throw "stop execution";
2786 }
2787 var records = test[tIndex + 2];
2788 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
2789 var fragType = records[recordIndex];
2790 if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_TYPE_LAST) {
2791 console.log("unknown in range frag type: " + fragType);
2792 throw "stop execution";
2793 }
2794 var frags = records[recordIndex + 1];
2795 var first = 0;
2796 var last = -1;
2797 var first2 = 0;
2798 var last2 = 0;
2799 switch (recType) {
caryclark26ad22a2015-10-16 09:03:38 -07002800 case REC_TYPE_ALIGNED:
2801 hasAlignedPath = true;
caryclarkdac1d172014-06-17 05:15:38 -07002802 case REC_TYPE_COMPUTED:
2803 if (fragType == COMPUTED_SET_1 || fragType == COMPUTED_SET_2) {
2804 break;
2805 }
caryclark26ad22a2015-10-16 09:03:38 -07002806 if (REC_TYPE_COMPUTED == recType) {
2807 hasComputedPath = true;
2808 }
caryclarkdac1d172014-06-17 05:15:38 -07002809 case REC_TYPE_PATH:
caryclark54359292015-03-26 07:52:43 -07002810 first = 1;
caryclarkdac1d172014-06-17 05:15:38 -07002811 switch (fragType) {
2812 case PATH_LINE:
caryclark54359292015-03-26 07:52:43 -07002813 last = 5;
caryclarkdac1d172014-06-17 05:15:38 -07002814 break;
caryclark1049f122015-04-20 08:31:59 -07002815 case PATH_CONIC:
caryclarkdac1d172014-06-17 05:15:38 -07002816 case PATH_QUAD:
caryclark54359292015-03-26 07:52:43 -07002817 last = 7;
caryclarkdac1d172014-06-17 05:15:38 -07002818 break;
2819 case PATH_CUBIC:
caryclark54359292015-03-26 07:52:43 -07002820 last = 9;
caryclarkdac1d172014-06-17 05:15:38 -07002821 break;
2822 default:
caryclark55888e42016-07-18 10:01:36 -07002823 console.log("unknown " + (recType == REC_TYPE_PATH ? "REC_TYPE_PATH"
caryclarkdac1d172014-06-17 05:15:38 -07002824 : "REC_TYPE_COMPUTED") + " frag type:" + fragType);
2825 throw "stop execution";
2826 }
2827 if (recType == REC_TYPE_PATH) {
2828 hasPath = true;
2829 }
2830 break;
caryclark54359292015-03-26 07:52:43 -07002831 case REC_TYPE_PATH2:
2832 first = 1;
2833 switch (fragType) {
2834 case PATH_LINE:
2835 last = 5;
2836 break;
caryclark1049f122015-04-20 08:31:59 -07002837 case PATH_CONIC:
caryclark54359292015-03-26 07:52:43 -07002838 case PATH_QUAD:
2839 last = 7;
2840 break;
2841 case PATH_CUBIC:
2842 last = 9;
2843 break;
2844 default:
caryclark55888e42016-07-18 10:01:36 -07002845 console.log("unknown " + (recType == REC_TYPE_PATH2 ? "REC_TYPE_PATH2"
caryclark54359292015-03-26 07:52:43 -07002846 : "REC_TYPE_COMPUTED") + " frag type:" + fragType);
2847 throw "stop execution";
2848 }
2849 if (recType == REC_TYPE_PATH2) {
2850 hasPath = true;
2851 }
2852 break;
caryclarkdac1d172014-06-17 05:15:38 -07002853 case REC_TYPE_ACTIVE:
2854 if (firstActiveSpan < 0) {
2855 firstActiveSpan = tIndex;
2856 }
2857 first = 1;
2858 switch (fragType) {
2859 case ACTIVE_LINE_SPAN:
2860 last = 5;
2861 break;
caryclark1049f122015-04-20 08:31:59 -07002862 case ACTIVE_CONIC_SPAN:
caryclarkdac1d172014-06-17 05:15:38 -07002863 case ACTIVE_QUAD_SPAN:
2864 last = 7;
2865 break;
2866 case ACTIVE_CUBIC_SPAN:
2867 last = 9;
2868 break;
2869 default:
2870 console.log("unknown REC_TYPE_ACTIVE frag type: " + fragType);
2871 throw "stop execution";
2872 }
2873 break;
2874 case REC_TYPE_ADD:
2875 switch (fragType) {
2876 case ADD_MOVETO:
2877 break;
2878 case ADD_LINETO:
2879 last = 4;
2880 break;
caryclark1049f122015-04-20 08:31:59 -07002881 case ADD_CONICTO:
caryclarkdac1d172014-06-17 05:15:38 -07002882 case ADD_QUADTO:
2883 last = 6;
2884 break;
2885 case ADD_CUBICTO:
2886 last = 8;
2887 break;
2888 case ADD_CLOSE:
2889 case ADD_FILL:
2890 break;
2891 default:
2892 console.log("unknown REC_TYPE_ADD frag type: " + fragType);
2893 throw "stop execution";
2894 }
2895 break;
caryclark54359292015-03-26 07:52:43 -07002896 case REC_TYPE_AFTERPART:
2897 switch (fragType) {
2898 case PATH_LINE:
2899 last = 4;
2900 break;
caryclark1049f122015-04-20 08:31:59 -07002901 case PATH_CONIC:
caryclark54359292015-03-26 07:52:43 -07002902 case PATH_QUAD:
2903 last = 6;
2904 break;
2905 case PATH_CUBIC:
2906 last = 8;
2907 break;
2908 default:
2909 console.log("unknown REC_TYPE_ACTIVEPART frag type: " + fragType);
2910 throw "stop execution";
2911 }
2912 break;
caryclarkdac1d172014-06-17 05:15:38 -07002913 case REC_TYPE_SECT:
2914 switch (fragType) {
2915 case INTERSECT_LINE:
2916 first = 1; last = 5; first2 = 8; last2 = 12;
2917 break;
2918 case INTERSECT_LINE_2:
2919 first = 1; last = 5; first2 = 11; last2 = 15;
2920 break;
2921 case INTERSECT_LINE_NO:
2922 first = 0; last = 4; first2 = 4; last2 = 8;
2923 break;
caryclark1049f122015-04-20 08:31:59 -07002924 case INTERSECT_CONIC_LINE:
2925 first = 1; last = 7; first2 = 11; last2 = 15;
2926 break;
caryclarkdac1d172014-06-17 05:15:38 -07002927 case INTERSECT_QUAD_LINE:
2928 first = 1; last = 7; first2 = 10; last2 = 14;
2929 break;
caryclark1049f122015-04-20 08:31:59 -07002930 case INTERSECT_CONIC_LINE_2:
2931 first = 1; last = 7; first2 = 14; last2 = 18;
2932 break;
caryclarkdac1d172014-06-17 05:15:38 -07002933 case INTERSECT_QUAD_LINE_2:
2934 first = 1; last = 7; first2 = 13; last2 = 17;
2935 break;
caryclark1049f122015-04-20 08:31:59 -07002936 case INTERSECT_CONIC_LINE_NO:
2937 first = 0; last = 6; first2 = 7; last2 = 11;
2938 break;
caryclarkdac1d172014-06-17 05:15:38 -07002939 case INTERSECT_QUAD_LINE_NO:
2940 first = 0; last = 6; first2 = 6; last2 = 10;
2941 break;
caryclark1049f122015-04-20 08:31:59 -07002942 case INTERSECT_CONIC:
2943 first = 1; last = 7; first2 = 11; last2 = 17;
2944 break;
caryclarkdac1d172014-06-17 05:15:38 -07002945 case INTERSECT_QUAD:
2946 first = 1; last = 7; first2 = 10; last2 = 16;
2947 break;
caryclark1049f122015-04-20 08:31:59 -07002948 case INTERSECT_CONIC_2:
2949 first = 1; last = 7; first2 = 14; last2 = 20;
2950 break;
caryclarkdac1d172014-06-17 05:15:38 -07002951 case INTERSECT_QUAD_2:
2952 first = 1; last = 7; first2 = 13; last2 = 19;
2953 break;
caryclark1049f122015-04-20 08:31:59 -07002954 case INTERSECT_CONIC_NO:
2955 first = 0; last = 6; first2 = 7; last2 = 13;
2956 break;
caryclarkdac1d172014-06-17 05:15:38 -07002957 case INTERSECT_QUAD_NO:
2958 first = 0; last = 6; first2 = 6; last2 = 12;
2959 break;
2960 case INTERSECT_SELF_CUBIC:
2961 first = 1; last = 9;
2962 break;
2963 case INTERSECT_SELF_CUBIC_NO:
2964 first = 0; last = 8;
2965 break;
2966 case INTERSECT_CUBIC_LINE:
2967 first = 1; last = 9; first2 = 12; last2 = 16;
2968 break;
2969 case INTERSECT_CUBIC_LINE_2:
2970 first = 1; last = 9; first2 = 15; last2 = 19;
2971 break;
2972 case INTERSECT_CUBIC_LINE_3:
2973 first = 1; last = 9; first2 = 18; last2 = 22;
2974 break;
2975 case INTERSECT_CUBIC_LINE_NO:
2976 first = 0; last = 8; first2 = 8; last2 = 12;
2977 break;
caryclark55888e42016-07-18 10:01:36 -07002978 case INTERSECT_CONIC_QUAD:
2979 first = 1; last = 7; first2 = 11; last2 = 17;
2980 break;
2981 case INTERSECT_CONIC_QUAD_2:
2982 first = 1; last = 7; first2 = 14; last2 = 20;
2983 break;
2984 case INTERSECT_CONIC_QUAD_NO:
2985 first = 0; last = 6; first2 = 7; last2 = 13;
2986 break;
caryclarkdac1d172014-06-17 05:15:38 -07002987 case INTERSECT_CUBIC_QUAD:
2988 first = 1; last = 9; first2 = 12; last2 = 18;
2989 break;
2990 case INTERSECT_CUBIC_QUAD_2:
2991 first = 1; last = 9; first2 = 15; last2 = 21;
2992 break;
2993 case INTERSECT_CUBIC_QUAD_3:
2994 first = 1; last = 9; first2 = 18; last2 = 24;
2995 break;
2996 case INTERSECT_CUBIC_QUAD_4:
2997 first = 1; last = 9; first2 = 21; last2 = 27;
2998 break;
2999 case INTERSECT_CUBIC_QUAD_NO:
3000 first = 0; last = 8; first2 = 8; last2 = 14;
3001 break;
3002 case INTERSECT_CUBIC:
3003 first = 1; last = 9; first2 = 12; last2 = 20;
3004 break;
3005 case INTERSECT_CUBIC_2:
3006 first = 1; last = 9; first2 = 15; last2 = 23;
3007 break;
3008 case INTERSECT_CUBIC_3:
3009 first = 1; last = 9; first2 = 18; last2 = 26;
3010 break;
3011 case INTERSECT_CUBIC_4:
3012 first = 1; last = 9; first2 = 21; last2 = 29;
3013 break;
3014 case INTERSECT_CUBIC_NO:
3015 first = 0; last = 8; first2 = 8; last2 = 16;
3016 break;
3017 default:
3018 console.log("unknown REC_TYPE_SECT frag type: " + fragType);
3019 throw "stop execution";
3020 }
3021 break;
3022 default:
3023 continue;
3024 }
3025 for (var idx = first; idx < last; idx += 2) {
3026 xmin = Math.min(xmin, frags[idx]);
3027 xmax = Math.max(xmax, frags[idx]);
3028 ymin = Math.min(ymin, frags[idx + 1]);
3029 ymax = Math.max(ymax, frags[idx + 1]);
3030 }
3031 for (var idx = first2; idx < last2; idx += 2) {
3032 xmin = Math.min(xmin, frags[idx]);
3033 xmax = Math.max(xmax, frags[idx]);
3034 ymin = Math.min(ymin, frags[idx + 1]);
3035 ymax = Math.max(ymax, frags[idx + 1]);
3036 }
3037 }
3038 }
3039 var angleBounds = [Infinity, Infinity, -Infinity, -Infinity];
3040 for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
3041 var recType = test[tIndex];
3042 var records = test[tIndex + 2];
3043 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
3044 var fragType = records[recordIndex];
3045 var frags = records[recordIndex + 1];
3046 switch (recType) {
3047 case REC_TYPE_ACTIVE_OP:
3048 if (!draw_op) {
3049 break;
3050 }
3051 {
3052 var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
3053 curve_extremes(curve, angleBounds);
3054 }
3055 break;
3056 case REC_TYPE_ANGLE:
3057 if (!draw_angle) {
3058 break;
3059 }
caryclark54359292015-03-26 07:52:43 -07003060 {
caryclarkdac1d172014-06-17 05:15:38 -07003061 var curve = curvePartialByID(test, frags[0], frags[4], frags[5]);
3062 curve_extremes(curve, angleBounds);
3063 curve = curvePartialByID(test, frags[6], frags[10], frags[11]);
3064 curve_extremes(curve, angleBounds);
3065 curve = curvePartialByID(test, frags[12], frags[16], frags[17]);
3066 }
3067 break;
caryclark624637c2015-05-11 07:21:27 -07003068 case REC_TYPE_COINCIDENCE:
3069 if (!draw_coincidence) {
3070 break;
3071 }
3072 {
3073 var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
3074 curve_extremes(curve, angleBounds);
3075 }
3076 break;
caryclarkdac1d172014-06-17 05:15:38 -07003077 case REC_TYPE_SORT:
3078 if (!draw_sort) {
3079 break;
3080 }
3081 if (fragType == SORT_UNARY || fragType == SORT_BINARY) {
3082 var curve = curvePartialByID(test, frags[0], frags[6], frags[8]);
3083 curve_extremes(curve, angleBounds);
3084 }
3085 break;
caryclark03b03ca2015-04-23 09:13:37 -07003086 case REC_TYPE_TOP:
3087 if (!draw_top) {
3088 break;
3089 }
3090 {
3091 var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
3092 curve_extremes(curve, angleBounds);
3093 }
3094 break;
caryclarkdac1d172014-06-17 05:15:38 -07003095 }
3096 }
3097 }
3098 xmin = Math.min(xmin, angleBounds[0]);
3099 ymin = Math.min(ymin, angleBounds[1]);
3100 xmax = Math.max(xmax, angleBounds[2]);
3101 ymax = Math.max(ymax, angleBounds[3]);
3102 setScale(xmin, xmax, ymin, ymax);
3103 if (hasPath == false && hasComputedPath == true && !draw_computed) {
caryclark1049f122015-04-20 08:31:59 -07003104 draw_computed = 7; // show quadratics, conics, and cubics
caryclarkdac1d172014-06-17 05:15:38 -07003105 }
3106 if (hasPath == true && hasComputedPath == false && draw_computed) {
3107 draw_computed = 0;
3108 }
3109}
3110
caryclark26ad22a2015-10-16 09:03:38 -07003111function curveByIDMatch(test, id, recMatch) {
caryclark54359292015-03-26 07:52:43 -07003112 var tIndex = -3;
3113 while ((tIndex += 3) < test.length) {
caryclarkdac1d172014-06-17 05:15:38 -07003114 var recType = test[tIndex];
caryclark54359292015-03-26 07:52:43 -07003115 if (recType == REC_TYPE_OP) {
3116 continue;
3117 }
caryclark26ad22a2015-10-16 09:03:38 -07003118 if (recType != recMatch) {
caryclarkdac1d172014-06-17 05:15:38 -07003119 return [];
3120 }
3121 var records = test[tIndex + 2];
3122 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
3123 var fragType = records[recordIndex];
3124 var frags = records[recordIndex + 1];
3125 if (frags[0] == id) {
3126 switch (fragType) {
caryclark54359292015-03-26 07:52:43 -07003127 case PATH_LINE:
caryclarkdac1d172014-06-17 05:15:38 -07003128 return [frags[1], frags[2], frags[3], frags[4]];
caryclark54359292015-03-26 07:52:43 -07003129 case PATH_QUAD:
caryclarkdac1d172014-06-17 05:15:38 -07003130 return [frags[1], frags[2], frags[3], frags[4],
3131 frags[5], frags[6]];
caryclark1049f122015-04-20 08:31:59 -07003132 case PATH_CONIC:
3133 return [frags[1], frags[2], frags[3], frags[4],
3134 frags[5], frags[6], frags[7]];
caryclark54359292015-03-26 07:52:43 -07003135 case PATH_CUBIC:
caryclarkdac1d172014-06-17 05:15:38 -07003136 return [frags[1], frags[2], frags[3], frags[4],
3137 frags[5], frags[6], frags[7], frags[8]];
3138 }
3139 }
3140 }
caryclarkdac1d172014-06-17 05:15:38 -07003141 }
3142 return [];
3143}
3144
caryclark26ad22a2015-10-16 09:03:38 -07003145function curveByID(test, id) {
3146 var result = draw_path >= 4 ? curveByIDMatch(test, id, REC_TYPE_ALIGNED) : [];
3147 if (!result.length) {
3148 result = curveByIDMatch(test, id, REC_TYPE_PATH);
3149 }
3150 return result;
3151}
3152
3153function curvePartialByIDMatch(test, id, t0, t1, recMatch) {
caryclark54359292015-03-26 07:52:43 -07003154 var tIndex = -3;
3155 while ((tIndex += 3) < test.length) {
caryclarkdac1d172014-06-17 05:15:38 -07003156 var recType = test[tIndex];
caryclark54359292015-03-26 07:52:43 -07003157 if (recType == REC_TYPE_OP) {
3158 continue;
3159 }
caryclark26ad22a2015-10-16 09:03:38 -07003160 if (recType != recMatch) {
caryclarkdac1d172014-06-17 05:15:38 -07003161 return [];
3162 }
3163 var records = test[tIndex + 2];
3164 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
3165 var fragType = records[recordIndex];
3166 var frags = records[recordIndex + 1];
3167 if (frags[0] == id) {
3168 switch (fragType) {
caryclark54359292015-03-26 07:52:43 -07003169 case PATH_LINE:
caryclarkdac1d172014-06-17 05:15:38 -07003170 return linePartial(frags[1], frags[2], frags[3], frags[4], t0, t1);
caryclark54359292015-03-26 07:52:43 -07003171 case PATH_QUAD:
caryclarkdac1d172014-06-17 05:15:38 -07003172 return quadPartial(frags[1], frags[2], frags[3], frags[4],
3173 frags[5], frags[6], t0, t1);
caryclark1049f122015-04-20 08:31:59 -07003174 case PATH_CONIC:
3175 return conicPartial(frags[1], frags[2], frags[3], frags[4],
3176 frags[5], frags[6], frags[7], t0, t1);
caryclark54359292015-03-26 07:52:43 -07003177 case PATH_CUBIC:
caryclarkdac1d172014-06-17 05:15:38 -07003178 return cubicPartial(frags[1], frags[2], frags[3], frags[4],
3179 frags[5], frags[6], frags[7], frags[8], t0, t1);
3180 }
3181 }
3182 }
caryclarkdac1d172014-06-17 05:15:38 -07003183 }
3184 return [];
3185}
3186
caryclark26ad22a2015-10-16 09:03:38 -07003187function curvePartialByID(test, id, t0, t1) {
3188 var result = draw_path >= 4 ? curvePartialByIDMatch(test, id, t0, t1, REC_TYPE_ALIGNED) : [];
3189 if (!result.length) {
3190 result = curvePartialByIDMatch(test, id, t0, t1, REC_TYPE_PATH);
3191 }
3192 return result;
3193}
3194
3195function idByCurveIDMatch(test, frag, type, recMatch) {
caryclark54359292015-03-26 07:52:43 -07003196 var tIndex = 0;
caryclarkdac1d172014-06-17 05:15:38 -07003197 while (tIndex < test.length) {
3198 var recType = test[tIndex];
caryclark26ad22a2015-10-16 09:03:38 -07003199 if (recType != recMatch) {
caryclark54359292015-03-26 07:52:43 -07003200 ++tIndex;
3201 continue;
caryclarkdac1d172014-06-17 05:15:38 -07003202 }
3203 var records = test[tIndex + 2];
3204 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
3205 var fragType = records[recordIndex];
3206 var frags = records[recordIndex + 1];
caryclark54359292015-03-26 07:52:43 -07003207 if (frag.length != frags.length - 1) {
3208 continue;
3209 }
caryclarkdac1d172014-06-17 05:15:38 -07003210 switch (fragType) {
caryclark54359292015-03-26 07:52:43 -07003211 case PATH_LINE:
caryclarkdac1d172014-06-17 05:15:38 -07003212 if (frag[0] != frags[1] || frag[1] != frags[2]
3213 || frag[2] != frags[3] || frag[3] != frags[4]) {
3214 continue;
3215 }
3216 return frags[0];
caryclark54359292015-03-26 07:52:43 -07003217 case PATH_QUAD:
caryclarkdac1d172014-06-17 05:15:38 -07003218 if (frag[0] != frags[1] || frag[1] != frags[2]
3219 || frag[2] != frags[3] || frag[3] != frags[4]
3220 || frag[4] != frags[5] || frag[5] != frags[6]) {
3221 continue;
3222 }
3223 return frags[0];
caryclark1049f122015-04-20 08:31:59 -07003224 case PATH_CONIC:
3225 if (frag[0] != frags[1] || frag[1] != frags[2]
3226 || frag[2] != frags[3] || frag[3] != frags[4]
3227 || frag[4] != frags[5] || frag[5] != frags[6]
3228 || frag[6] != frags[7]) {
3229 continue;
3230 }
3231 return frags[0];
caryclark54359292015-03-26 07:52:43 -07003232 case PATH_CUBIC:
caryclarkdac1d172014-06-17 05:15:38 -07003233 if (frag[0] != frags[1] || frag[1] != frags[2]
3234 || frag[2] != frags[3] || frag[3] != frags[4]
3235 || frag[4] != frags[5] || frag[5] != frags[6]
3236 || frag[6] != frags[7] || frag[7] != frags[8]) {
3237 continue;
3238 }
3239 return frags[0];
3240 }
3241 }
3242 ++tIndex;
3243 }
3244 return -1;
3245}
3246
caryclark26ad22a2015-10-16 09:03:38 -07003247function idByCurve(test, frag, type) {
3248 var result = draw_path >= 4 ? idByCurveIDMatch(test, frag, type, REC_TYPE_ALIGNED) : [];
3249 if (!result.length) {
3250 result = idByCurveIDMatch(test, frag, type, REC_TYPE_PATH);
3251 }
3252 return result;
3253}
3254
caryclarkdac1d172014-06-17 05:15:38 -07003255function curve_extremes(curve, bounds) {
caryclark1049f122015-04-20 08:31:59 -07003256 var length = curve.length == 7 ? 6 : curve.length;
caryclarked0935a2015-10-22 07:23:52 -07003257 for (var index = 0; index < length; index += 2) {
caryclarkdac1d172014-06-17 05:15:38 -07003258 var x = curve[index];
3259 var y = curve[index + 1];
3260 bounds[0] = Math.min(bounds[0], x);
3261 bounds[1] = Math.min(bounds[1], y);
3262 bounds[2] = Math.max(bounds[2], x);
3263 bounds[3] = Math.max(bounds[3], y);
3264 }
3265}
3266
3267function setScale(x0, x1, y0, y1) {
3268 var srcWidth = x1 - x0;
3269 var srcHeight = y1 - y0;
3270 var usableWidth = screenWidth;
3271 var xDigits = Math.ceil(Math.log(Math.abs(xmax)) / Math.log(10));
3272 var yDigits = Math.ceil(Math.log(Math.abs(ymax)) / Math.log(10));
3273 usableWidth -= (xDigits + yDigits) * 10;
3274 usableWidth -= decimal_places * 10;
3275 if (draw_legend) {
3276 usableWidth -= 40;
3277 }
3278 var hscale = usableWidth / srcWidth;
3279 var vscale = screenHeight / srcHeight;
3280 scale = Math.min(hscale, vscale);
3281 var invScale = 1 / scale;
3282 var sxmin = x0 - invScale * 5;
3283 var symin = y0 - invScale * 10;
3284 var sxmax = x1 + invScale * (6 * decimal_places + 10);
3285 var symax = y1 + invScale * 10;
3286 srcWidth = sxmax - sxmin;
3287 srcHeight = symax - symin;
3288 hscale = usableWidth / srcWidth;
3289 vscale = screenHeight / srcHeight;
3290 scale = Math.min(hscale, vscale);
3291 srcLeft = sxmin;
3292 srcTop = symin;
3293}
3294
3295function drawArc(curve, op, from, to) {
3296 var type = PATH_LINE + (curve.length / 2 - 2);
3297 var pt = pointAtT(curve, type, op ? 0.4 : 0.6);
3298 var dy = pt.y - curve[1];
3299 var dx = pt.x - curve[0];
3300 var dist = Math.sqrt(dy * dy + dx * dx);
3301 var _dist = dist * scale;
3302 var angle = Math.atan2(dy, dx);
3303 var _px = (curve[0] - srcLeft) * scale;
3304 var _py = (curve[1] - srcTop) * scale;
3305 var divisor = 4;
3306 var endDist;
3307 do {
3308 var ends = [];
3309 for (var index = -1; index <= 1; index += 2) {
3310 var px = Math.cos(index * Math.PI / divisor);
3311 var py = Math.sin(index * Math.PI / divisor);
3312 ends.push(px);
3313 ends.push(py);
3314 }
3315 var endDx = (ends[2] - ends[0]) * scale * dist;
3316 var endDy = (ends[3] - ends[1]) * scale * dist;
3317 endDist = Math.sqrt(endDx * endDx + endDy * endDy);
3318 if (endDist < 100) {
3319 break;
3320 }
3321 divisor *= 2;
3322 } while (true);
3323 if (endDist < 30) {
3324 return;
3325 }
3326 if (op) {
3327 divisor *= 2;
3328 }
3329 ctx.strokeStyle = op ? "rgba(210,0,45, 0.4)" : "rgba(90,90,90, 0.5)";
3330 ctx.beginPath();
3331 ctx.arc(_px, _py, _dist, angle - Math.PI / divisor, angle + Math.PI / divisor, false);
3332 ctx.stroke();
3333 var saveAlign = ctx.textAlign;
3334 var saveStyle = ctx.fillStyle;
3335 var saveFont = ctx.font;
3336 ctx.textAlign = "center";
3337 ctx.fillStyle = "black";
3338 ctx.font = "normal 24px Arial";
3339 divisor *= 0.8;
3340 for (var index = -1; index <= 1; index += 2) {
3341 var px = curve[0] + Math.cos(angle + index * Math.PI / divisor) * dist;
3342 var py = curve[1] + Math.sin(angle + index * Math.PI / divisor) * dist;
3343 var _px = (px - srcLeft) * scale;
3344 var _py = (py - srcTop) * scale;
3345 ctx.fillText(index < 0 ? to.toString() : from.toString(), _px, _py + 8);
3346 }
3347 ctx.textAlign = saveAlign;
3348 ctx.fillStyle = saveStyle;
3349 ctx.font = saveFont;
3350}
3351
3352function drawPoint(px, py, end) {
caryclark1049f122015-04-20 08:31:59 -07003353 var length = drawnPts.length == 7 ? 6 : drawnPts.length;
3354 for (var pts = 0; pts < length; pts += 2) {
caryclarkdac1d172014-06-17 05:15:38 -07003355 var x = drawnPts[pts];
3356 var y = drawnPts[pts + 1];
3357 if (px == x && py == y) {
3358 return;
3359 }
3360 }
3361 drawnPts.push(px);
3362 drawnPts.push(py);
3363 var label = px.toFixed(decimal_places) + ", " + py.toFixed(decimal_places);
3364 var _px = (px - srcLeft) * scale;
3365 var _py = (py - srcTop) * scale;
3366 ctx.beginPath();
3367 ctx.arc(_px, _py, 3, 0, Math.PI*2, true);
3368 ctx.closePath();
3369 if (end) {
3370 ctx.fill();
3371 } else {
3372 ctx.stroke();
3373 }
3374 if (debug_xy) {
3375 ctx.textAlign = "left";
3376 ctx.fillText(label, _px + 5, _py);
3377 }
3378}
3379
caryclark1049f122015-04-20 08:31:59 -07003380function coordCount(curveType) {
3381 switch (curveType) {
3382 case PATH_LINE:
3383 return 4;
3384 case PATH_QUAD:
3385 return 6;
3386 case PATH_CONIC:
3387 return 6;
3388 case PATH_CUBIC:
3389 return 8;
3390 }
3391 return -1;
3392}
3393
caryclarkdac1d172014-06-17 05:15:38 -07003394function drawPoints(ptArray, curveType, drawControls) {
caryclark1049f122015-04-20 08:31:59 -07003395 var count = coordCount(curveType);
caryclarkdac1d172014-06-17 05:15:38 -07003396 for (var idx = 0; idx < count; idx += 2) {
3397 if (!drawControls && idx != 0 && idx != count - 2) {
3398 continue;
3399 }
3400 drawPoint(ptArray[idx], ptArray[idx + 1], idx == 0 || idx == count - 2);
3401 }
3402}
3403
3404function drawControlLines(curve, curveType, drawEnd) {
3405 if (curveType == PATH_LINE) {
3406 return;
3407 }
3408 ctx.strokeStyle = "rgba(0,0,0, 0.3)";
3409 drawLine(curve[0], curve[1], curve[2], curve[3]);
3410 drawLine(curve[2], curve[3], curve[4], curve[5]);
3411 if (curveType == PATH_CUBIC) {
3412 drawLine(curve[4], curve[5], curve[6], curve[7]);
3413 if (drawEnd > 1) {
3414 drawLine(curve[6], curve[7], curve[0], curve[1]);
3415 if (drawEnd > 2) {
3416 drawLine(curve[0], curve[1], curve[4], curve[5]);
3417 drawLine(curve[6], curve[7], curve[2], curve[3]);
3418 }
3419 }
3420 } else if (drawEnd > 1) {
3421 drawLine(curve[4], curve[5], curve[0], curve[1]);
3422 }
3423}
3424
3425function pointAtT(curve, curveType, t) {
3426 var xy = {};
3427 switch (curveType) {
3428 case PATH_LINE:
3429 var a = 1 - t;
3430 var b = t;
3431 xy.x = a * curve[0] + b * curve[2];
3432 xy.y = a * curve[1] + b * curve[3];
3433 break;
3434 case PATH_QUAD:
3435 var one_t = 1 - t;
3436 var a = one_t * one_t;
3437 var b = 2 * one_t * t;
3438 var c = t * t;
3439 xy.x = a * curve[0] + b * curve[2] + c * curve[4];
3440 xy.y = a * curve[1] + b * curve[3] + c * curve[5];
3441 break;
caryclark1049f122015-04-20 08:31:59 -07003442 case PATH_CONIC:
3443 var one_t = 1 - t;
3444 var a = one_t * one_t;
3445 var b = 2 * one_t * t;
3446 var c = t * t;
3447 xy.x = a * curve[0] + b * curve[2] * curve[6] + c * curve[4];
3448 xy.y = a * curve[1] + b * curve[3] * curve[6] + c * curve[5];
3449 var d = a + b * curve[6] + c;
3450 xy.x /= d;
3451 xy.y /= d;
3452 break;
caryclarkdac1d172014-06-17 05:15:38 -07003453 case PATH_CUBIC:
3454 var one_t = 1 - t;
3455 var one_t2 = one_t * one_t;
3456 var a = one_t2 * one_t;
3457 var b = 3 * one_t2 * t;
3458 var t2 = t * t;
3459 var c = 3 * one_t * t2;
3460 var d = t2 * t;
3461 xy.x = a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
3462 xy.y = a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
3463 break;
3464 }
3465 return xy;
3466}
caryclark55888e42016-07-18 10:01:36 -07003467
caryclarkdac1d172014-06-17 05:15:38 -07003468function drawPointAtT(curve, curveType) {
3469 var x, y;
3470 var xy = pointAtT(curve, curveType, curveT);
3471 drawPoint(xy.x, xy.y, true);
3472 if (!draw_intersectT) {
3473 return;
3474 }
3475 ctx.fillStyle = "red";
3476 drawTAtPointUp(xy.x, xy.y, curveT);
3477}
3478
3479function drawTAtPointUp(px, py, t) {
3480 var label = t.toFixed(decimal_places);
3481 var _px = (px - srcLeft)* scale;
3482 var _py = (py - srcTop) * scale;
3483 ctx.fillText(label, _px + 5, _py - 10);
3484}
3485
3486function drawTAtPointDown(px, py, t) {
3487 var label = t.toFixed(decimal_places);
3488 var _px = (px - srcLeft)* scale;
3489 var _py = (py - srcTop) * scale;
3490 ctx.fillText(label, _px + 5, _py + 10);
3491}
3492
3493function alreadyDrawnLine(x1, y1, x2, y2) {
3494 if (collect_bounds) {
3495 if (focus_enabled) {
3496 focusXmin = Math.min(focusXmin, x1, x2);
3497 focusYmin = Math.min(focusYmin, y1, y2);
3498 focusXmax = Math.max(focusXmax, x1, x2);
3499 focusYmax = Math.max(focusYmax, y1, y2);
3500 }
3501 return true;
3502 }
3503 for (var pts = 0; pts < drawnLines.length; pts += 4) {
3504 if (x1 == drawnLines[pts] && y1 == drawnLines[pts + 1]
3505 && x2 == drawnLines[pts + 2] && y2 == drawnLines[pts + 3]) {
3506 return true;
3507 }
3508 }
3509 drawnLines.push(x1);
3510 drawnLines.push(y1);
3511 drawnLines.push(x2);
3512 drawnLines.push(y2);
3513 return false;
3514}
3515
3516function drawLine(x1, y1, x2, y2) {
3517 if (alreadyDrawnLine(x1, y1, x2, y2)) {
3518 return;
3519 }
3520 ctx.beginPath();
3521 ctx.moveTo((x1 - srcLeft) * scale,
3522 (y1 - srcTop) * scale);
3523 ctx.lineTo((x2 - srcLeft) * scale,
3524 (y2 - srcTop) * scale);
3525 ctx.stroke();
3526}
3527
3528function linePartial(x1, y1, x2, y2, t1, t2) {
3529 var dx = x1 - x2;
3530 var dy = y1 - y2;
3531 var array = [
3532 x1 - t1 * dx,
3533 y1 - t1 * dy,
3534 x1 - t2 * dx,
3535 y1 - t2 * dy
3536 ];
3537 return array;
3538}
3539
3540function drawLinePartial(x1, y1, x2, y2, t1, t2) {
3541 var a = linePartial(x1, y1, x2, y2, t1, t2);
3542 var ax = a[0];
3543 var ay = a[1];
3544 var bx = a[2];
3545 var by = a[3];
3546 if (alreadyDrawnLine(ax, ay, bx, by)) {
3547 return;
3548 }
3549 ctx.beginPath();
3550 ctx.moveTo((ax - srcLeft) * scale,
3551 (ay - srcTop) * scale);
3552 ctx.lineTo((bx - srcLeft) * scale,
3553 (by - srcTop) * scale);
3554 ctx.stroke();
3555}
3556
3557function alreadyDrawnQuad(x1, y1, x2, y2, x3, y3) {
3558 if (collect_bounds) {
3559 if (focus_enabled) {
3560 focusXmin = Math.min(focusXmin, x1, x2, x3);
3561 focusYmin = Math.min(focusYmin, y1, y2, y3);
3562 focusXmax = Math.max(focusXmax, x1, x2, x3);
3563 focusYmax = Math.max(focusYmax, y1, y2, y3);
3564 }
3565 return true;
3566 }
3567 for (var pts = 0; pts < drawnQuads.length; pts += 6) {
3568 if (x1 == drawnQuads[pts] && y1 == drawnQuads[pts + 1]
3569 && x2 == drawnQuads[pts + 2] && y2 == drawnQuads[pts + 3]
3570 && x3 == drawnQuads[pts + 4] && y3 == drawnQuads[pts + 5]) {
3571 return true;
3572 }
3573 }
3574 drawnQuads.push(x1);
3575 drawnQuads.push(y1);
3576 drawnQuads.push(x2);
3577 drawnQuads.push(y2);
3578 drawnQuads.push(x3);
3579 drawnQuads.push(y3);
3580 return false;
3581}
3582
3583function drawQuad(x1, y1, x2, y2, x3, y3) {
3584 if (alreadyDrawnQuad(x1, y1, x2, y2, x3, y3)) {
3585 return;
3586 }
3587 ctx.beginPath();
3588 ctx.moveTo((x1 - srcLeft) * scale,
3589 (y1 - srcTop) * scale);
3590 ctx.quadraticCurveTo((x2 - srcLeft) * scale,
3591 (y2 - srcTop) * scale,
3592 (x3 - srcLeft) * scale,
3593 (y3 - srcTop) * scale);
3594 ctx.stroke();
3595}
3596
3597function interp(A, B, t) {
3598 return A + (B - A) * t;
3599}
3600
3601function interp_quad_coords(x1, x2, x3, t)
3602{
3603 var ab = interp(x1, x2, t);
3604 var bc = interp(x2, x3, t);
3605 var abc = interp(ab, bc, t);
3606 return abc;
3607}
3608
3609function quadPartial(x1, y1, x2, y2, x3, y3, t1, t2) {
3610 var ax = interp_quad_coords(x1, x2, x3, t1);
3611 var ay = interp_quad_coords(y1, y2, y3, t1);
3612 var dx = interp_quad_coords(x1, x2, x3, (t1 + t2) / 2);
3613 var dy = interp_quad_coords(y1, y2, y3, (t1 + t2) / 2);
3614 var cx = interp_quad_coords(x1, x2, x3, t2);
3615 var cy = interp_quad_coords(y1, y2, y3, t2);
3616 var bx = 2*dx - (ax + cx)/2;
3617 var by = 2*dy - (ay + cy)/2;
3618 var array = [
3619 ax, ay, bx, by, cx, cy
3620 ];
3621 return array;
3622}
3623
3624function drawQuadPartial(x1, y1, x2, y2, x3, y3, t1, t2) {
3625 var a = quadPartial(x1, y1, x2, y2, x3, y3, t1, t2);
3626 var ax = a[0];
3627 var ay = a[1];
3628 var bx = a[2];
3629 var by = a[3];
3630 var cx = a[4];
3631 var cy = a[5];
3632 if (alreadyDrawnQuad(ax, ay, bx, by, cx, cy)) {
3633 return;
3634 }
3635 ctx.beginPath();
3636 ctx.moveTo((ax - srcLeft) * scale,
3637 (ay - srcTop) * scale);
3638 ctx.quadraticCurveTo((bx - srcLeft) * scale,
3639 (by - srcTop) * scale,
3640 (cx - srcLeft) * scale,
3641 (cy - srcTop) * scale);
3642 ctx.stroke();
3643}
3644
caryclark1049f122015-04-20 08:31:59 -07003645function alreadyDrawnConic(x1, y1, x2, y2, x3, y3, w) {
3646 if (collect_bounds) {
3647 if (focus_enabled) {
3648 focusXmin = Math.min(focusXmin, x1, x2, x3);
3649 focusYmin = Math.min(focusYmin, y1, y2, y3);
3650 focusXmax = Math.max(focusXmax, x1, x2, x3);
3651 focusYmax = Math.max(focusYmax, y1, y2, y3);
3652 }
3653 return true;
3654 }
3655 for (var pts = 0; pts < drawnConics.length; pts += 8) {
3656 if (x1 == drawnConics[pts] && y1 == drawnCubics[pts + 1]
caryclark55888e42016-07-18 10:01:36 -07003657 && x2 == drawnCubics[pts + 2] && y2 == drawnCubics[pts + 3]
3658 && x3 == drawnCubics[pts + 4] && y3 == drawnCubics[pts + 5]
caryclark1049f122015-04-20 08:31:59 -07003659 && w == drawnCubics[pts + 6]) {
3660 return true;
3661 }
3662 }
3663 drawnConics.push(x1);
3664 drawnConics.push(y1);
3665 drawnConics.push(x2);
3666 drawnConics.push(y2);
3667 drawnConics.push(x3);
3668 drawnConics.push(y3);
3669 drawnCubics.push(w);
3670 return false;
3671}
3672
3673var kMaxConicToQuadPOW2 = 5;
3674
3675function computeQuadPOW2(curve, tol) {
3676 var a = curve[6] - 1;
3677 var k = a / (4 * (2 + a));
3678 var x = k * (curve[0] - 2 * curve[2] + curve[4]);
3679 var y = k * (curve[1] - 2 * curve[3] + curve[5]);
3680
3681 var error = Math.sqrt(x * x + y * y);
3682 var pow2;
3683 for (pow2 = 0; pow2 < kMaxConicToQuadPOW2; ++pow2) {
3684 if (error <= tol) {
3685 break;
3686 }
3687 error *= 0.25;
3688 }
3689 return pow2;
3690}
3691
3692function subdivide_w_value(w) {
3693 return Math.sqrt(0.5 + w * 0.5);
3694}
3695
3696function chop(curve, part1, part2) {
3697 var w = curve[6];
3698 var scale = 1 / (1 + w);
3699 part1[0] = curve[0];
3700 part1[1] = curve[1];
3701 part1[2] = (curve[0] + curve[2] * w) * scale;
3702 part1[3] = (curve[1] + curve[3] * w) * scale;
3703 part1[4] = part2[0] = (curve[0] + (curve[2] * w) * 2 + curve[4]) * scale * 0.5;
3704 part1[5] = part2[1] = (curve[1] + (curve[3] * w) * 2 + curve[5]) * scale * 0.5;
3705 part2[2] = (curve[2] * w + curve[4]) * scale;
3706 part2[3] = (curve[3] * w + curve[5]) * scale;
3707 part2[4] = curve[4];
3708 part2[5] = curve[5];
3709 part1[6] = part2[6] = subdivide_w_value(w);
3710}
3711
3712function subdivide(curve, level, pts) {
3713 if (0 == level) {
3714 pts.push(curve[2]);
3715 pts.push(curve[3]);
3716 pts.push(curve[4]);
3717 pts.push(curve[5]);
3718 } else {
3719 var part1 = [], part2 = [];
3720 chop(curve, part1, part2);
3721 --level;
3722 subdivide(part1, level, pts);
3723 subdivide(part2, level, pts);
3724 }
3725}
3726
3727function chopIntoQuadsPOW2(curve, pow2, pts) {
3728 subdivide(curve, pow2, pts);
3729 return 1 << pow2;
3730}
3731
3732function drawConicWithQuads(x1, y1, x2, y2, x3, y3, w) {
3733 if (alreadyDrawnConic(x1, y1, x2, y2, x3, y3, w)) {
3734 return;
3735 }
3736 ctx.beginPath();
3737 ctx.moveTo((x1 - srcLeft) * scale,
3738 (y1 - srcTop) * scale);
3739 var tol = 1 / scale;
3740 var curve = [x1, y1, x2, y2, x3, y3, w];
3741 var pow2 = computeQuadPOW2(curve, tol);
3742 var pts = [];
3743 chopIntoQuadsPOW2(curve, pow2, pts);
3744 for (var i = 0; i < pts.length; i += 4) {
3745 ctx.quadraticCurveTo(
3746 (pts[i + 0] - srcLeft) * scale, (pts[i + 1] - srcTop) * scale,
3747 (pts[i + 2] - srcLeft) * scale, (pts[i + 3] - srcTop) * scale);
3748 }
3749 ctx.stroke();
3750}
3751
3752function conic_eval_numerator(x1, x2, x3, w, t) {
3753 var src2w = x2 * w;
3754 var C = x1;
3755 var A = x3 - 2 * src2w + C;
3756 var B = 2 * (src2w - C);
3757 return (A * t + B) * t + C;
3758}
3759
3760
3761function conic_eval_denominator(w, t) {
3762 var B = 2 * (w - 1);
3763 var C = 1;
3764 var A = -B;
3765 return (A * t + B) * t + C;
3766}
3767
3768function conicPartial(x1, y1, x2, y2, x3, y3, w, t1, t2) {
3769 var ax = conic_eval_numerator(x1, x2, x3, w, t1);
3770 var ay = conic_eval_numerator(y1, y2, y3, w, t1);
3771 var az = conic_eval_denominator(w, t1);
3772 var midT = (t1 + t2) / 2;
3773 var dx = conic_eval_numerator(x1, x2, x3, w, midT);
3774 var dy = conic_eval_numerator(y1, y2, y3, w, midT);
3775 var dz = conic_eval_denominator(w, midT);
3776 var cx = conic_eval_numerator(x1, x2, x3, w, t2);
3777 var cy = conic_eval_numerator(y1, y2, y3, w, t2);
3778 var cz = conic_eval_denominator(w, t2);
3779 var bx = 2 * dx - (ax + cx) / 2;
3780 var by = 2 * dy - (ay + cy) / 2;
3781 var bz = 2 * dz - (az + cz) / 2;
3782 var dt = t2 - t1;
3783 var dt_1 = 1 - dt;
caryclark1049f122015-04-20 08:31:59 -07003784 var array = [
caryclarked0935a2015-10-22 07:23:52 -07003785 ax / az, ay / az, bx / bz, by / bz, cx / cz, cy / cz, 0
caryclark1049f122015-04-20 08:31:59 -07003786 ];
caryclarked0935a2015-10-22 07:23:52 -07003787 var dMidAC = { x:(array[0] + array[4]) / 2, y:(array[1] + array[5]) / 2 };
3788 var dMid = { x:dx / dz, y:dy / dz };
3789 var dWNumer = { x:dMidAC.x - dMid.x, y:dMidAC.y - dMid.y };
3790 var dWDenom = { x:dMid.x - array[2], y:dMid.y - array[3] };
3791 var partW = Math.sqrt(dWNumer.x * dWNumer.x + dWNumer.y * dWNumer.y)
3792 / Math.sqrt(dWDenom.x * dWDenom.x + dWDenom.y * dWDenom.y);
3793 array[6] = partW;
caryclark1049f122015-04-20 08:31:59 -07003794 return array;
3795}
caryclark55888e42016-07-18 10:01:36 -07003796
caryclark1049f122015-04-20 08:31:59 -07003797function drawConicPartial(x1, y1, x2, y2, x3, y3, w, t1, t2) {
3798 var a = conicPartial(x1, y1, x2, y2, x3, y3, w, t1, t2);
3799 var ax = a[0];
3800 var ay = a[1];
3801 var bx = a[2];
3802 var by = a[3];
3803 var cx = a[4];
3804 var cy = a[5];
3805 var w_ = a[6];
3806 drawConicWithQuads(ax, ay, bx, by, cx, cy, w_);
3807}
3808
caryclarkdac1d172014-06-17 05:15:38 -07003809function alreadyDrawnCubic(x1, y1, x2, y2, x3, y3, x4, y4) {
3810 if (collect_bounds) {
3811 if (focus_enabled) {
3812 focusXmin = Math.min(focusXmin, x1, x2, x3, x4);
3813 focusYmin = Math.min(focusYmin, y1, y2, y3, y4);
3814 focusXmax = Math.max(focusXmax, x1, x2, x3, x4);
3815 focusYmax = Math.max(focusYmax, y1, y2, y3, y4);
3816 }
3817 return true;
3818 }
3819 for (var pts = 0; pts < drawnCubics.length; pts += 8) {
3820 if (x1 == drawnCubics[pts] && y1 == drawnCubics[pts + 1]
caryclark55888e42016-07-18 10:01:36 -07003821 && x2 == drawnCubics[pts + 2] && y2 == drawnCubics[pts + 3]
3822 && x3 == drawnCubics[pts + 4] && y3 == drawnCubics[pts + 5]
caryclarkdac1d172014-06-17 05:15:38 -07003823 && x4 == drawnCubics[pts + 6] && y4 == drawnCubics[pts + 7]) {
3824 return true;
3825 }
3826 }
3827 drawnCubics.push(x1);
3828 drawnCubics.push(y1);
3829 drawnCubics.push(x2);
3830 drawnCubics.push(y2);
3831 drawnCubics.push(x3);
3832 drawnCubics.push(y3);
3833 drawnCubics.push(x4);
3834 drawnCubics.push(y4);
3835 return false;
3836}
3837
3838function drawCubic(x1, y1, x2, y2, x3, y3, x4, y4) {
3839 if (alreadyDrawnCubic(x1, y1, x2, y2, x3, y3, x4, y4)) {
3840 return;
3841 }
3842 ctx.beginPath();
3843 ctx.moveTo((x1 - srcLeft) * scale,
3844 (y1 - srcTop) * scale);
3845 ctx.bezierCurveTo((x2 - srcLeft) * scale,
3846 (y2 - srcTop) * scale,
3847 (x3 - srcLeft) * scale,
3848 (y3 - srcTop) * scale,
3849 (x4 - srcLeft) * scale,
3850 (y4 - srcTop) * scale);
3851 ctx.stroke();
3852}
3853
3854function interp_cubic_coords(x1, x2, x3, x4, t)
3855{
3856 var ab = interp(x1, x2, t);
3857 var bc = interp(x2, x3, t);
3858 var cd = interp(x3, x4, t);
3859 var abc = interp(ab, bc, t);
3860 var bcd = interp(bc, cd, t);
3861 var abcd = interp(abc, bcd, t);
3862 return abcd;
3863}
3864
3865function cubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
3866 var ax = interp_cubic_coords(x1, x2, x3, x4, t1);
3867 var ay = interp_cubic_coords(y1, y2, y3, y4, t1);
3868 var ex = interp_cubic_coords(x1, x2, x3, x4, (t1*2+t2)/3);
3869 var ey = interp_cubic_coords(y1, y2, y3, y4, (t1*2+t2)/3);
3870 var fx = interp_cubic_coords(x1, x2, x3, x4, (t1+t2*2)/3);
3871 var fy = interp_cubic_coords(y1, y2, y3, y4, (t1+t2*2)/3);
3872 var dx = interp_cubic_coords(x1, x2, x3, x4, t2);
3873 var dy = interp_cubic_coords(y1, y2, y3, y4, t2);
3874 var mx = ex * 27 - ax * 8 - dx;
3875 var my = ey * 27 - ay * 8 - dy;
3876 var nx = fx * 27 - ax - dx * 8;
3877 var ny = fy * 27 - ay - dy * 8;
3878 var bx = (mx * 2 - nx) / 18;
3879 var by = (my * 2 - ny) / 18;
3880 var cx = (nx * 2 - mx) / 18;
3881 var cy = (ny * 2 - my) / 18;
3882 var array = [
3883 ax, ay, bx, by, cx, cy, dx, dy
3884 ];
3885 return array;
3886}
caryclark55888e42016-07-18 10:01:36 -07003887
caryclarkdac1d172014-06-17 05:15:38 -07003888function drawCubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
3889 var a = cubicPartial(x1, y1, x2, y2, x3, y3, x4, y4, t1, t2);
3890 var ax = a[0];
3891 var ay = a[1];
3892 var bx = a[2];
3893 var by = a[3];
3894 var cx = a[4];
3895 var cy = a[5];
3896 var dx = a[6];
3897 var dy = a[7];
3898 if (alreadyDrawnCubic(ax, ay, bx, by, cx, cy, dx, dy)) {
3899 return;
3900 }
3901 ctx.beginPath();
3902 ctx.moveTo((ax - srcLeft) * scale,
3903 (ay - srcTop) * scale);
3904 ctx.bezierCurveTo((bx - srcLeft) * scale,
3905 (by - srcTop) * scale,
3906 (cx - srcLeft) * scale,
3907 (cy - srcTop) * scale,
3908 (dx - srcLeft) * scale,
3909 (dy - srcTop) * scale);
3910 ctx.stroke();
3911}
3912
3913function drawCurve(c) {
3914 switch (c.length) {
3915 case 4:
3916 drawLine(c[0], c[1], c[2], c[3]);
3917 break;
3918 case 6:
3919 drawQuad(c[0], c[1], c[2], c[3], c[4], c[5]);
3920 break;
caryclark1049f122015-04-20 08:31:59 -07003921 case 7:
3922 drawConicWithQuads(c[0], c[1], c[2], c[3], c[4], c[5], c[6]);
3923 break;
caryclarkdac1d172014-06-17 05:15:38 -07003924 case 8:
3925 drawCubic(c[0], c[1], c[2], c[3], c[4], c[5], c[6], c[7]);
3926 break;
3927 }
3928}
3929
3930function boundsWidth(pts) {
3931 var min = pts[0];
3932 var max = pts[0];
caryclark1049f122015-04-20 08:31:59 -07003933 var length = pts.length == 7 ? 6 : pts.length;
3934 for (var idx = 2; idx < length; idx += 2) {
caryclarkdac1d172014-06-17 05:15:38 -07003935 min = Math.min(min, pts[idx]);
3936 max = Math.max(max, pts[idx]);
3937 }
3938 return max - min;
3939}
3940
3941function boundsHeight(pts) {
3942 var min = pts[1];
3943 var max = pts[1];
caryclark1049f122015-04-20 08:31:59 -07003944 var length = pts.length == 7 ? 6 : pts.length;
3945 for (var idx = 3; idx < length; idx += 2) {
caryclarkdac1d172014-06-17 05:15:38 -07003946 min = Math.min(min, pts[idx]);
3947 max = Math.max(max, pts[idx]);
3948 }
3949 return max - min;
3950}
3951
3952function tangent(pts) {
3953 var dx = pts[2] - pts[0];
3954 var dy = pts[3] - pts[1];
3955 if (dx == 0 && dy == 0 && pts.length > 4) {
3956 dx = pts[4] - pts[0];
3957 dy = pts[5] - pts[1];
caryclark1049f122015-04-20 08:31:59 -07003958 if (dx == 0 && dy == 0 && pts.length == 8) {
caryclarkdac1d172014-06-17 05:15:38 -07003959 dx = pts[6] - pts[0];
3960 dy = pts[7] - pts[1];
3961 }
3962 }
3963 return Math.atan2(-dy, dx);
3964}
3965
3966function hodograph(cubic) {
3967 var hodo = [];
3968 hodo[0] = 3 * (cubic[2] - cubic[0]);
3969 hodo[1] = 3 * (cubic[3] - cubic[1]);
3970 hodo[2] = 3 * (cubic[4] - cubic[2]);
3971 hodo[3] = 3 * (cubic[5] - cubic[3]);
3972 hodo[4] = 3 * (cubic[6] - cubic[4]);
3973 hodo[5] = 3 * (cubic[7] - cubic[5]);
3974 return hodo;
3975}
3976
3977function hodograph2(cubic) {
3978 var quad = hodograph(cubic);
3979 var hodo = [];
3980 hodo[0] = 2 * (quad[2] - quad[0]);
3981 hodo[1] = 2 * (quad[3] - quad[1]);
3982 hodo[2] = 2 * (quad[4] - quad[2]);
3983 hodo[3] = 2 * (quad[5] - quad[3]);
3984 return hodo;
3985}
3986
3987function quadraticRootsReal(A, B, C, s) {
3988 if (A == 0) {
3989 if (B == 0) {
3990 s[0] = 0;
3991 return C == 0;
3992 }
3993 s[0] = -C / B;
3994 return 1;
3995 }
3996 /* normal form: x^2 + px + q = 0 */
3997 var p = B / (2 * A);
3998 var q = C / A;
3999 var p2 = p * p;
4000 if (p2 < q) {
4001 return 0;
4002 }
4003 var sqrt_D = 0;
4004 if (p2 > q) {
4005 sqrt_D = sqrt(p2 - q);
4006 }
4007 s[0] = sqrt_D - p;
4008 s[1] = -sqrt_D - p;
4009 return 1 + s[0] != s[1];
4010}
4011
4012function add_valid_ts(s, realRoots, t) {
4013 var foundRoots = 0;
4014 for (var index = 0; index < realRoots; ++index) {
4015 var tValue = s[index];
4016 if (tValue >= 0 && tValue <= 1) {
4017 for (var idx2 = 0; idx2 < foundRoots; ++idx2) {
4018 if (t[idx2] != tValue) {
4019 t[foundRoots++] = tValue;
4020 }
4021 }
4022 }
4023 }
4024 return foundRoots;
4025}
4026
4027function quadraticRootsValidT(a, b, c, t) {
4028 var s = [];
4029 var realRoots = quadraticRootsReal(A, B, C, s);
4030 var foundRoots = add_valid_ts(s, realRoots, t);
4031 return foundRoots != 0;
4032}
4033
4034function find_cubic_inflections(cubic, tValues) {
4035 var Ax = src[2] - src[0];
4036 var Ay = src[3] - src[1];
4037 var Bx = src[4] - 2 * src[2] + src[0];
4038 var By = src[5] - 2 * src[3] + src[1];
4039 var Cx = src[6] + 3 * (src[2] - src[4]) - src[0];
4040 var Cy = src[7] + 3 * (src[3] - src[5]) - src[1];
4041 return quadraticRootsValidT(Bx * Cy - By * Cx, (Ax * Cy - Ay * Cx),
4042 Ax * By - Ay * Bx, tValues);
4043}
4044
4045function dxy_at_t(curve, type, t) {
4046 var dxy = {};
4047 if (type == PATH_QUAD) {
4048 var a = t - 1;
4049 var b = 1 - 2 * t;
4050 var c = t;
4051 dxy.x = a * curve[0] + b * curve[2] + c * curve[4];
4052 dxy.y = a * curve[1] + b * curve[3] + c * curve[5];
caryclark1049f122015-04-20 08:31:59 -07004053 } else if (type == PATH_CONIC) {
4054 var p20x = curve[4] - curve[0];
4055 var p20y = curve[5] - curve[1];
4056 var p10xw = (curve[2] - curve[0]) * curve[6];
4057 var p10yw = (curve[3] - curve[1]) * curve[6];
4058 var coeff0x = curve[6] * p20x - p20x;
4059 var coeff0y = curve[6] * p20y - p20y;
4060 var coeff1x = p20x - 2 * p10xw;
4061 var coeff1y = p20y - 2 * p10yw;
4062 dxy.x = t * (t * coeff0x + coeff1x) + p10xw;
4063 dxy.y = t * (t * coeff0y + coeff1y) + p10yw;
caryclarkdac1d172014-06-17 05:15:38 -07004064 } else if (type == PATH_CUBIC) {
4065 var one_t = 1 - t;
4066 var a = curve[0];
4067 var b = curve[2];
4068 var c = curve[4];
4069 var d = curve[6];
4070 dxy.x = 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
4071 a = curve[1];
4072 b = curve[3];
4073 c = curve[5];
4074 d = curve[7];
4075 dxy.y = 3 * ((b - a) * one_t * one_t + 2 * (c - b) * t * one_t + (d - c) * t * t);
4076 }
4077 return dxy;
4078}
4079
4080function drawLabel(num, px, py) {
4081 ctx.beginPath();
4082 ctx.arc(px, py, 8, 0, Math.PI*2, true);
4083 ctx.closePath();
4084 ctx.strokeStyle = "rgba(0,0,0, 0.4)";
4085 ctx.lineWidth = num == 0 || num == 3 ? 2 : 1;
4086 ctx.stroke();
4087 ctx.fillStyle = "black";
4088 ctx.font = "normal 10px Arial";
4089 // ctx.rotate(0.001);
4090 ctx.fillText(num, px - 2, py + 3);
4091 // ctx.rotate(-0.001);
4092}
4093
4094function drawLabelX(ymin, num, loc) {
4095 var px = (loc - srcLeft) * scale;
4096 var py = (ymin - srcTop) * scale - 20;
4097 drawLabel(num, px, py);
4098}
4099
4100function drawLabelY(xmin, num, loc) {
4101 var px = (xmin - srcLeft) * scale - 20;
4102 var py = (loc - srcTop) * scale;
4103 drawLabel(num, px, py);
4104}
4105
4106function drawHodoOrigin(hx, hy, hMinX, hMinY, hMaxX, hMaxY) {
4107 ctx.beginPath();
4108 ctx.moveTo(hx, hy - 100);
4109 ctx.lineTo(hx, hy);
4110 ctx.strokeStyle = hMinY < 0 ? "green" : "blue";
4111 ctx.stroke();
4112 ctx.beginPath();
4113 ctx.moveTo(hx, hy);
4114 ctx.lineTo(hx, hy + 100);
4115 ctx.strokeStyle = hMaxY > 0 ? "green" : "blue";
4116 ctx.stroke();
4117 ctx.beginPath();
4118 ctx.moveTo(hx - 100, hy);
4119 ctx.lineTo(hx, hy);
4120 ctx.strokeStyle = hMinX < 0 ? "green" : "blue";
4121 ctx.stroke();
4122 ctx.beginPath();
4123 ctx.moveTo(hx, hy);
4124 ctx.lineTo(hx + 100, hy);
4125 ctx.strokeStyle = hMaxX > 0 ? "green" : "blue";
4126 ctx.stroke();
4127}
4128
4129function scalexy(x, y, mag) {
4130 var length = Math.sqrt(x * x + y * y);
4131 return mag / length;
4132}
4133
caryclark03b03ca2015-04-23 09:13:37 -07004134function drawArrow(x, y, dx, dy, s) {
4135 var dscale = scalexy(dx, dy, 1 / scale * 100 * s);
caryclarkdac1d172014-06-17 05:15:38 -07004136 dx *= dscale;
4137 dy *= dscale;
4138 ctx.beginPath();
4139 ctx.moveTo((x - srcLeft) * scale, (y - srcTop) * scale);
4140 x += dx;
4141 y += dy;
4142 ctx.lineTo((x - srcLeft) * scale, (y - srcTop) * scale);
4143 dx /= 10;
4144 dy /= 10;
4145 ctx.lineTo((x - dy - srcLeft) * scale, (y + dx - srcTop) * scale);
4146 ctx.lineTo((x + dx * 2 - srcLeft) * scale, (y + dy * 2 - srcTop) * scale);
4147 ctx.lineTo((x + dy - srcLeft) * scale, (y - dx - srcTop) * scale);
4148 ctx.lineTo((x - srcLeft) * scale, (y - srcTop) * scale);
4149 ctx.strokeStyle = "rgba(0,75,0, 0.4)";
4150 ctx.stroke();
4151}
4152
4153function x_at_t(curve, t) {
4154 var one_t = 1 - t;
4155 if (curve.length == 4) {
4156 return one_t * curve[0] + t * curve[2];
4157 }
4158 var one_t2 = one_t * one_t;
4159 var t2 = t * t;
4160 if (curve.length == 6) {
4161 return one_t2 * curve[0] + 2 * one_t * t * curve[2] + t2 * curve[4];
4162 }
caryclark1049f122015-04-20 08:31:59 -07004163 if (curve.length == 7) {
4164 return (one_t2 * curve[0] + 2 * one_t * t * curve[2] * curve[6] + t2 * curve[4])
4165 / (one_t2 +2 * one_t * t * curve[6] + t2);
4166 }
caryclarkdac1d172014-06-17 05:15:38 -07004167 var a = one_t2 * one_t;
4168 var b = 3 * one_t2 * t;
4169 var c = 3 * one_t * t2;
4170 var d = t2 * t;
4171 return a * curve[0] + b * curve[2] + c * curve[4] + d * curve[6];
4172}
4173
4174function y_at_t(curve, t) {
4175 var one_t = 1 - t;
4176 if (curve.length == 4) {
4177 return one_t * curve[1] + t * curve[3];
4178 }
4179 var one_t2 = one_t * one_t;
4180 var t2 = t * t;
4181 if (curve.length == 6) {
4182 return one_t2 * curve[1] + 2 * one_t * t * curve[3] + t2 * curve[5];
4183 }
caryclark1049f122015-04-20 08:31:59 -07004184 if (curve.length == 7) {
4185 return (one_t2 * curve[1] + 2 * one_t * t * curve[3] * curve[6] + t2 * curve[5])
4186 / (one_t2 +2 * one_t * t * curve[6] + t2);
4187 }
caryclarkdac1d172014-06-17 05:15:38 -07004188 var a = one_t2 * one_t;
4189 var b = 3 * one_t2 * t;
4190 var c = 3 * one_t * t2;
4191 var d = t2 * t;
4192 return a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
4193}
4194
4195function drawOrder(curve, label) {
4196 var px = x_at_t(curve, 0.75);
4197 var py = y_at_t(curve, 0.75);
4198 var _px = (px - srcLeft) * scale;
4199 var _py = (py - srcTop) * scale;
4200 ctx.beginPath();
4201 ctx.arc(_px, _py, 15, 0, Math.PI * 2, true);
4202 ctx.closePath();
4203 ctx.fillStyle = "white";
4204 ctx.fill();
4205 if (label == 'L') {
4206 ctx.strokeStyle = "rgba(255,0,0, 1)";
4207 ctx.fillStyle = "rgba(255,0,0, 1)";
4208 } else {
4209 ctx.strokeStyle = "rgba(0,0,255, 1)";
4210 ctx.fillStyle = "rgba(0,0,255, 1)";
4211 }
4212 ctx.stroke();
4213 ctx.font = "normal 16px Arial";
4214 ctx.textAlign = "center";
4215 ctx.fillText(label, _px, _py + 5);
4216 ctx.font = "normal 10px Arial";
4217}
4218
4219function drawID(curve, id) {
4220 var px = x_at_t(curve, 0.5);
4221 var py = y_at_t(curve, 0.5);
4222 var _px = (px - srcLeft) * scale;
4223 var _py = (py - srcTop) * scale;
4224 draw_id_at(id, _px, _py);
4225}
4226
4227function draw_id_at(id, _px, _py) {
4228 ctx.beginPath();
4229 ctx.arc(_px, _py, 15, 0, Math.PI * 2, true);
4230 ctx.closePath();
4231 ctx.fillStyle = "white";
4232 ctx.fill();
4233 ctx.strokeStyle = "rgba(127,127,0, 1)";
4234 ctx.fillStyle = "rgba(127,127,0, 1)";
4235 ctx.stroke();
4236 ctx.font = "normal 16px Arial";
4237 ctx.textAlign = "center";
4238 ctx.fillText(id, _px, _py + 5);
4239 ctx.font = "normal 10px Arial";
4240}
4241
4242function drawLinePartialID(id, x1, y1, x2, y2, t1, t2) {
4243 var curve = [x1, y1, x2, y2];
4244 drawCurvePartialID(id, curve, t1, t2);
4245}
4246
caryclark55888e42016-07-18 10:01:36 -07004247function drawLineID(id, x1, y1, x2, y2) {
4248 drawLinePartialID(id, x1, y1, x2, y2, 0, 1);
4249}
4250
caryclarkdac1d172014-06-17 05:15:38 -07004251function drawQuadPartialID(id, x1, y1, x2, y2, x3, y3, t1, t2) {
4252 var curve = [x1, y1, x2, y2, x3, y3];
4253 drawCurvePartialID(id, curve, t1, t2);
4254}
4255
caryclark55888e42016-07-18 10:01:36 -07004256function drawQuadID(id, x1, y1, x2, y2, x3, y3) {
4257 drawQuadPartialID(id, x1, y1, x2, y2, x3, y3, 0, 1);
4258}
4259
caryclark1049f122015-04-20 08:31:59 -07004260function drawConicPartialID(id, x1, y1, x2, y2, x3, y3, w, t1, t2) {
4261 var curve = [x1, y1, x2, y2, x3, y3, w];
4262 drawCurvePartialID(id, curve, t1, t2);
4263}
4264
caryclark55888e42016-07-18 10:01:36 -07004265function drawConicID(id, x1, y1, x2, y2, x3, y3, w) {
4266 drawConicPartialID(id, x1, y1, x2, y2, x3, y3, w, 0, 1);
4267}
4268
caryclarkdac1d172014-06-17 05:15:38 -07004269function drawCubicPartialID(id, x1, y1, x2, y2, x3, y3, x4, y4, t1, t2) {
4270 var curve = [x1, y1, x2, y2, x3, y3, x4, y4];
4271 drawCurvePartialID(id, curve, t1, t2);
4272}
4273
caryclark55888e42016-07-18 10:01:36 -07004274function drawCubicID(id, x1, y1, x2, y2, x3, y3, x4, y4) {
4275 drawCubicPartialID(id, x1, y1, x2, y2, x3, y3, x4, y4, 0, 1);
4276}
4277
caryclarkdac1d172014-06-17 05:15:38 -07004278function drawCurvePartialID(id, curve, t1, t2) {
4279 var px = x_at_t(curve, (t1 + t2) / 2);
4280 var py = y_at_t(curve, (t1 + t2) / 2);
4281 var _px = (px - srcLeft) * scale;
4282 var _py = (py - srcTop) * scale;
4283 draw_id_at(id, _px, _py);
4284}
4285
4286function drawCurveSpecials(test, curve, type) {
4287 if (pt_labels) {
4288 drawPoints(curve, type, pt_labels == 2);
4289 }
4290 if (control_lines != 0) {
4291 drawControlLines(curve, type, control_lines);
4292 }
4293 if (curve_t) {
4294 drawPointAtT(curve, type);
4295 }
4296 if (draw_midpoint) {
4297 var mid = pointAtT(curve, type, 0.5);
4298 drawPoint(mid.x, mid.y, true);
4299 }
4300 if (draw_id) {
4301 var id = idByCurve(test, curve, type);
4302 if (id >= 0) {
4303 drawID(curve, id);
4304 }
4305 }
4306 if (type == PATH_LINE) {
4307 return;
4308 }
4309 if (draw_deriviatives > 0) {
4310 var d = dxy_at_t(curve, type, 0);
caryclark03b03ca2015-04-23 09:13:37 -07004311 drawArrow(curve[0], curve[1], d.x, d.y, 1);
caryclarkdac1d172014-06-17 05:15:38 -07004312 if (draw_deriviatives == 2) {
4313 d = dxy_at_t(curve, type, 1);
4314 if (type == PATH_CUBIC) {
caryclark03b03ca2015-04-23 09:13:37 -07004315 drawArrow(curve[6], curve[7], d.x, d.y, 1);
caryclarkdac1d172014-06-17 05:15:38 -07004316 } else {
caryclark03b03ca2015-04-23 09:13:37 -07004317 drawArrow(curve[4], curve[5], d.x, d.y, 1);
caryclarkdac1d172014-06-17 05:15:38 -07004318 }
4319 }
4320 if (draw_midpoint) {
4321 var mid = pointAtT(curve, type, 0.5);
4322 d = dxy_at_t(curve, type, 0.5);
caryclark03b03ca2015-04-23 09:13:37 -07004323 drawArrow(mid.x, mid.y, d.x, d.y, 1);
caryclarkdac1d172014-06-17 05:15:38 -07004324 }
4325 }
4326 if (type != PATH_CUBIC) {
4327 return;
4328 }
caryclarkdac1d172014-06-17 05:15:38 -07004329 if (draw_sequence) {
4330 var ymin = Math.min(curve[1], curve[3], curve[5], curve[7]);
4331 for (var i = 0; i < 8; i+= 2) {
4332 drawLabelX(ymin, i >> 1, curve[i]);
4333 }
4334 var xmin = Math.min(curve[0], curve[2], curve[4], curve[6]);
4335 for (var i = 1; i < 8; i+= 2) {
4336 drawLabelY(xmin, i >> 1, curve[i]);
4337 }
4338 }
4339}
4340
4341function logCurves(test) {
4342 for (curves in test) {
4343 var curve = test[curves];
4344 dumpCurve(curve);
4345 }
4346}
4347
4348function curveToString(curve) {
4349 var str = "{{";
caryclark1049f122015-04-20 08:31:59 -07004350 var length = curve.length == 7 ? 6 : curve.length;
4351 if (curve.length == 7) {
4352 str += "{";
4353 }
4354 for (i = 0; i < length; i += 2) {
caryclarkdac1d172014-06-17 05:15:38 -07004355 str += curve[i].toFixed(decimal_places) + "," + curve[i + 1].toFixed(decimal_places);
4356 if (i < curve.length - 2) {
4357 str += "}, {";
4358 }
4359 }
caryclark1049f122015-04-20 08:31:59 -07004360 str += "}";
4361 if (curve.length == 7) {
4362 str += "}, " + curve[6].toFixed(decimal_places);
4363 }
4364 str += "}";
caryclarkdac1d172014-06-17 05:15:38 -07004365 return str;
4366}
4367
4368function dumpCurve(curve) {
4369 console.log(curveToString(curve));
4370}
4371
4372function draw(test, lines, title) {
4373 ctx.fillStyle = "rgba(0,0,0, 0.1)";
4374 ctx.font = "normal 50px Arial";
4375 ctx.textAlign = "left";
4376 ctx.fillText(title, 50, 50);
4377 ctx.font = "normal 10px Arial";
4378 ctx.lineWidth = "1.001"; "0.999";
4379 var secondPath = test.length;
4380 var closeCount = 0;
4381 logStart = -1;
4382 logRange = 0;
4383 // find last active rec type at this step
4384 var curType = test[0];
4385 var curStep = 0;
4386 var hasOp = false;
4387 var lastActive = 0;
4388 var lastAdd = 0;
caryclark624637c2015-05-11 07:21:27 -07004389 var lastCoin = 0;
caryclarkdac1d172014-06-17 05:15:38 -07004390 var lastSect = 0;
4391 var lastSort = 0;
4392 var lastMark = 0;
caryclark03b03ca2015-04-23 09:13:37 -07004393 var lastTop = 0;
caryclarkdac1d172014-06-17 05:15:38 -07004394 activeCount = 0;
4395 addCount = 0;
4396 angleCount = 0;
4397 opCount = 0;
4398 sectCount = 0;
4399 sortCount = 0;
caryclark03b03ca2015-04-23 09:13:37 -07004400 topCount = 0;
caryclarkdac1d172014-06-17 05:15:38 -07004401 markCount = 0;
4402 activeMax = 0;
4403 addMax = 0;
4404 angleMax = 0;
caryclark624637c2015-05-11 07:21:27 -07004405 coinMax = 0;
caryclarkdac1d172014-06-17 05:15:38 -07004406 opMax = 0;
4407 sectMax = 0;
4408 sectMax2 = 0;
4409 sortMax = 0;
caryclark03b03ca2015-04-23 09:13:37 -07004410 topMax = 0;
caryclarkdac1d172014-06-17 05:15:38 -07004411 markMax = 0;
4412 lastIndex = test.length - 3;
4413 for (var tIndex = 0; tIndex < test.length; tIndex += 3) {
4414 var recType = test[tIndex];
4415 if (!typeof recType == 'number' || recType < REC_TYPE_UNKNOWN || recType > REC_TYPE_LAST) {
4416 console.log("unknown rec type: " + recType);
4417 throw "stop execution";
4418 }
4419 // if (curType == recType && curType != REC_TYPE_ADD) {
4420 // continue;
4421 // }
4422 var inStepRange = step_limit == 0 || curStep < step_limit;
4423 curType = recType;
4424 if (recType == REC_TYPE_OP) {
4425 hasOp = true;
4426 continue;
4427 }
4428 if (recType == REC_TYPE_UNKNOWN) {
4429 // these types do not advance step
4430 continue;
4431 }
4432 var bumpStep = false;
4433 var records = test[tIndex + 2];
4434 var fragType = records[0];
4435 if (recType == REC_TYPE_ADD) {
4436 if (records.length != 2) {
4437 console.log("expect only two elements: " + records.length);
4438 throw "stop execution";
4439 }
4440 if (fragType == ADD_MOVETO || fragType == ADD_CLOSE) {
4441 continue;
4442 }
4443 ++addMax;
4444 if (!draw_add || !inStepRange) {
4445 continue;
4446 }
4447 lastAdd = tIndex;
4448 ++addCount;
4449 bumpStep = true;
4450 }
4451 if (recType == REC_TYPE_PATH && hasOp) {
4452 secondPath = tIndex;
4453 }
caryclark54359292015-03-26 07:52:43 -07004454 if (recType == REC_TYPE_PATH2 && hasOp) {
4455 secondPath = tIndex;
4456 }
caryclarkdac1d172014-06-17 05:15:38 -07004457 if (recType == REC_TYPE_ACTIVE) {
4458 ++activeMax;
4459 if (!draw_active || !inStepRange) {
4460 continue;
4461 }
4462 lastActive = tIndex;
4463 ++activeCount;
4464 bumpStep = true;
4465 }
4466 if (recType == REC_TYPE_ACTIVE_OP) {
4467 ++opMax;
4468 if (!draw_op || !inStepRange) {
4469 continue;
4470 }
4471 lastOp = tIndex;
4472 ++opCount;
4473 bumpStep = true;
4474 }
caryclark54359292015-03-26 07:52:43 -07004475 if (recType == REC_TYPE_AFTERPART) {
4476 if (draw_angle != 3 || !inStepRange) {
4477 continue;
4478 }
4479 lastAngle = tIndex;
4480 ++angleCount;
4481 bumpStep = true;
4482 }
caryclarkdac1d172014-06-17 05:15:38 -07004483 if (recType == REC_TYPE_ANGLE) {
4484 ++angleMax;
caryclark54359292015-03-26 07:52:43 -07004485 if (draw_angle == 0 || draw_angle == 3 || !inStepRange) {
caryclarkdac1d172014-06-17 05:15:38 -07004486 continue;
4487 }
4488 lastAngle = tIndex;
4489 ++angleCount;
4490 bumpStep = true;
4491 }
caryclark624637c2015-05-11 07:21:27 -07004492 if (recType == REC_TYPE_COINCIDENCE) {
4493 ++coinMax;
4494 if (!draw_coincidence || !inStepRange) {
4495 continue;
4496 }
4497 lastCoin = tIndex;
4498 ++coinCount;
4499 bumpStep = true;
4500 }
caryclarkdac1d172014-06-17 05:15:38 -07004501 if (recType == REC_TYPE_SECT) {
4502 if (records.length != 2) {
4503 console.log("expect only two elements: " + records.length);
4504 throw "stop execution";
4505 }
4506 ++sectMax;
4507 var sectBump = 1;
4508 switch (fragType) {
4509 case INTERSECT_LINE:
4510 case INTERSECT_QUAD_LINE:
4511 case INTERSECT_QUAD:
caryclark1049f122015-04-20 08:31:59 -07004512 case INTERSECT_CONIC_LINE:
caryclark55888e42016-07-18 10:01:36 -07004513 case INTERSECT_CONIC_QUAD:
caryclark1049f122015-04-20 08:31:59 -07004514 case INTERSECT_CONIC:
caryclarkdac1d172014-06-17 05:15:38 -07004515 case INTERSECT_SELF_CUBIC:
4516 case INTERSECT_CUBIC_LINE:
4517 case INTERSECT_CUBIC_QUAD:
4518 case INTERSECT_CUBIC:
4519 sectBump = 1;
4520 break;
4521 case INTERSECT_LINE_2:
4522 case INTERSECT_QUAD_LINE_2:
4523 case INTERSECT_QUAD_2:
caryclark1049f122015-04-20 08:31:59 -07004524 case INTERSECT_CONIC_LINE_2:
caryclark55888e42016-07-18 10:01:36 -07004525 case INTERSECT_CONIC_QUAD_2:
caryclark1049f122015-04-20 08:31:59 -07004526 case INTERSECT_CONIC_2:
caryclarkdac1d172014-06-17 05:15:38 -07004527 case INTERSECT_CUBIC_LINE_2:
4528 case INTERSECT_CUBIC_QUAD_2:
4529 case INTERSECT_CUBIC_2:
4530 sectBump = 2;
4531 break;
4532 case INTERSECT_LINE_NO:
4533 case INTERSECT_QUAD_LINE_NO:
4534 case INTERSECT_QUAD_NO:
caryclark1049f122015-04-20 08:31:59 -07004535 case INTERSECT_CONIC_LINE_NO:
caryclark55888e42016-07-18 10:01:36 -07004536 case INTERSECT_CONIC_QUAD_NO:
caryclark1049f122015-04-20 08:31:59 -07004537 case INTERSECT_CONIC_NO:
caryclarkdac1d172014-06-17 05:15:38 -07004538 case INTERSECT_SELF_CUBIC_NO:
4539 case INTERSECT_CUBIC_LINE_NO:
4540 case INTERSECT_CUBIC_QUAD_NO:
4541 case INTERSECT_CUBIC_NO:
4542 sectBump = 0;
4543 break;
4544 case INTERSECT_CUBIC_LINE_3:
4545 case INTERSECT_CUBIC_QUAD_3:
4546 case INTERSECT_CUBIC_3:
4547 sectBump = 3;
4548 break;
4549 case INTERSECT_CUBIC_QUAD_4:
4550 case INTERSECT_CUBIC_4:
4551 sectBump = 4;
4552 break;
4553 default:
4554 console.log("missing case " + records.length);
4555 throw "stop execution";
4556 }
4557 sectMax2 += sectBump;
4558 if (draw_intersection <= 1 || !inStepRange) {
4559 continue;
4560 }
4561 lastSect = tIndex;
4562 sectCount += sectBump;
4563 bumpStep = true;
4564 }
4565 if (recType == REC_TYPE_SORT) {
4566 ++sortMax;
4567 if (!draw_sort || !inStepRange) {
4568 continue;
4569 }
4570 lastSort = tIndex;
4571 ++sortCount;
4572 bumpStep = true;
4573 }
caryclark03b03ca2015-04-23 09:13:37 -07004574 if (recType == REC_TYPE_TOP) {
4575 ++topMax;
4576 if (!draw_top || !inStepRange) {
4577 continue;
4578 }
4579 lastTop = tIndex;
4580 ++topCount;
4581 bumpStep = true;
4582 }
caryclarkdac1d172014-06-17 05:15:38 -07004583 if (recType == REC_TYPE_MARK) {
4584 ++markMax;
4585 if (!draw_mark || !inStepRange) {
4586 continue;
4587 }
4588 lastMark = tIndex;
4589 ++markCount;
4590 bumpStep = true;
4591 }
4592 if (bumpStep) {
4593 lastIndex = tIndex;
4594 logStart = test[tIndex + 1];
4595 logRange = records.length / 2;
4596 ++curStep;
4597 }
4598 }
4599 stepMax = (draw_add ? addMax : 0)
4600 + (draw_active ? activeMax : 0)
reed0dc4dd62015-03-24 13:55:33 -07004601 + (draw_angle ? angleMax : 0)
caryclark624637c2015-05-11 07:21:27 -07004602 + (draw_coincidence ? coinMax : 0)
caryclark54359292015-03-26 07:52:43 -07004603 + (draw_op ? opMax : 0)
caryclarkdac1d172014-06-17 05:15:38 -07004604 + (draw_sort ? sortMax : 0)
caryclark03b03ca2015-04-23 09:13:37 -07004605 + (draw_top ? topMax : 0)
caryclarkdac1d172014-06-17 05:15:38 -07004606 + (draw_mark ? markMax : 0)
4607 + (draw_intersection == 2 ? sectMax : draw_intersection == 3 ? sectMax2 : 0);
4608 if (stepMax == 0) {
caryclark624637c2015-05-11 07:21:27 -07004609 stepMax = addMax + activeMax + angleMax + coinMax + opMax + sortMax + topMax + markMax;
caryclarkdac1d172014-06-17 05:15:38 -07004610 }
4611 drawnPts = [];
4612 drawnLines = [];
4613 drawnQuads = [];
caryclark1049f122015-04-20 08:31:59 -07004614 drawnConics = [];
caryclarkdac1d172014-06-17 05:15:38 -07004615 drawnCubics = [];
4616 focusXmin = focusYmin = Infinity;
4617 focusXmax = focusYmax = -Infinity;
4618 var pathIndex = 0;
4619 var opLetter = 'S';
4620 for (var tIndex = lastIndex; tIndex >= 0; tIndex -= 3) {
4621 var recType = test[tIndex];
4622 var records = test[tIndex + 2];
4623 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
4624 var fragType = records[recordIndex];
4625 if (!typeof fragType == 'number' || fragType < 1 || fragType > FRAG_TYPE_LAST) {
4626 console.log("unknown in range frag type: " + fragType);
4627 throw "stop execution";
4628 }
4629 var frags = records[recordIndex + 1];
4630 focus_enabled = false;
4631 switch (recType) {
4632 case REC_TYPE_COMPUTED:
4633 if (draw_computed == 0) {
4634 continue;
4635 }
4636 ctx.lineWidth = 1;
4637 ctx.strokeStyle = pathIndex == 0 ? "black" : "red";
4638 ctx.fillStyle = "blue";
4639 var drawThis = false;
4640 switch (fragType) {
4641 case PATH_QUAD:
caryclark1049f122015-04-20 08:31:59 -07004642 if ((draw_computed & 0x9) == 1 || ((draw_computed & 8) != 0
4643 && (draw_computed & 7) == pathIndex)) {
caryclarkdac1d172014-06-17 05:15:38 -07004644 drawQuad(frags[0], frags[1], frags[2], frags[3],
4645 frags[4], frags[5]);
4646 drawThis = true;
4647 }
4648 break;
caryclark1049f122015-04-20 08:31:59 -07004649 case PATH_CONIC:
4650 if ((draw_computed & 0xA) == 2 || ((draw_computed & 8) != 0
4651 && (draw_computed & 7) == pathIndex)) {
4652 drawConicWithQuads(frags[0], frags[1], frags[2], frags[3],
4653 frags[4], frags[5], frags[6]);
4654 drawThis = true;
4655 }
4656 break;
caryclarkdac1d172014-06-17 05:15:38 -07004657 case PATH_CUBIC:
caryclark1049f122015-04-20 08:31:59 -07004658 if ((draw_computed & 0xC) == 4 || ((draw_computed & 8) != 0
4659 && (draw_computed & 7) == pathIndex)) {
caryclarkdac1d172014-06-17 05:15:38 -07004660 drawCubic(frags[0], frags[1], frags[2], frags[3],
4661 frags[4], frags[5], frags[6], frags[7]);
4662 drawThis = true;
4663 }
4664 ++pathIndex;
4665 break;
4666 case COMPUTED_SET_1:
4667 pathIndex = 0;
4668 break;
4669 case COMPUTED_SET_2:
4670 pathIndex = 1;
4671 break;
4672 default:
4673 console.log("unknown REC_TYPE_COMPUTED frag type: " + fragType);
4674 throw "stop execution";
4675 }
4676 if (!drawThis || collect_bounds) {
4677 break;
4678 }
4679 drawCurveSpecials(test, frags, fragType);
4680 break;
caryclark26ad22a2015-10-16 09:03:38 -07004681 case REC_TYPE_ALIGNED:
4682 if (draw_path < 4) {
4683 continue;
4684 }
caryclarkdac1d172014-06-17 05:15:38 -07004685 case REC_TYPE_PATH:
caryclark54359292015-03-26 07:52:43 -07004686 case REC_TYPE_PATH2:
caryclark26ad22a2015-10-16 09:03:38 -07004687 if (REC_TYPE_ALIGNED != recType && draw_path >= 4) {
4688 continue;
4689 }
caryclarkdac1d172014-06-17 05:15:38 -07004690 if (!draw_path) {
4691 continue;
4692 }
4693 var firstPath = tIndex < secondPath;
4694 if ((draw_path & (firstPath ? 1 : 2)) == 0) {
4695 continue;
4696 }
4697 ctx.lineWidth = 1;
4698 ctx.strokeStyle = firstPath ? "black" : "red";
4699 ctx.fillStyle = "blue";
caryclark55888e42016-07-18 10:01:36 -07004700 var frags2 = [];
caryclarkdac1d172014-06-17 05:15:38 -07004701 switch (fragType) {
4702 case PATH_LINE:
caryclark54359292015-03-26 07:52:43 -07004703 for (var i = 0; i < 4; ++ i) { frags2[i] = frags[i + 1]; }
4704 drawLine(frags2[0], frags2[1], frags2[2], frags2[3]);
caryclarkdac1d172014-06-17 05:15:38 -07004705 break;
4706 case PATH_QUAD:
caryclark54359292015-03-26 07:52:43 -07004707 for (var i = 0; i < 6; ++ i) { frags2[i] = frags[i + 1]; }
4708 drawQuad(frags2[0], frags2[1], frags2[2], frags2[3],
4709 frags2[4], frags2[5]);
caryclarkdac1d172014-06-17 05:15:38 -07004710 break;
caryclark1049f122015-04-20 08:31:59 -07004711 case PATH_CONIC:
4712 for (var i = 0; i < 7; ++ i) { frags2[i] = frags[i + 1]; }
4713 drawConicWithQuads(frags2[0], frags2[1], frags2[2], frags2[3],
4714 frags2[4], frags2[5], frags2[6]);
4715 break;
caryclarkdac1d172014-06-17 05:15:38 -07004716 case PATH_CUBIC:
caryclark54359292015-03-26 07:52:43 -07004717 for (var i = 0; i < 8; ++ i) { frags2[i] = frags[i + 1]; }
4718 drawCubic(frags2[0], frags2[1], frags2[2], frags2[3],
4719 frags2[4], frags2[5], frags2[6], frags2[7]);
caryclarkdac1d172014-06-17 05:15:38 -07004720 break;
4721 default:
caryclark26ad22a2015-10-16 09:03:38 -07004722 console.log("unknown " + recType + " frag type: " + fragType);
caryclarkdac1d172014-06-17 05:15:38 -07004723 throw "stop execution";
4724 }
4725 if (collect_bounds) {
4726 break;
4727 }
caryclark54359292015-03-26 07:52:43 -07004728 drawCurveSpecials(test, frags2, fragType);
caryclarkdac1d172014-06-17 05:15:38 -07004729 break;
4730 case REC_TYPE_OP:
4731 switch (fragType) {
4732 case OP_INTERSECT: opLetter = 'I'; break;
4733 case OP_DIFFERENCE: opLetter = 'D'; break;
4734 case OP_UNION: opLetter = 'U'; break;
4735 case OP_XOR: opLetter = 'X'; break;
4736 default:
4737 console.log("unknown REC_TYPE_OP frag type: " + fragType);
4738 throw "stop execution";
4739 }
4740 break;
4741 case REC_TYPE_ACTIVE:
4742 if (!draw_active || (step_limit > 0 && tIndex < lastActive)) {
4743 continue;
4744 }
4745 var x1 = frags[SPAN_X1];
4746 var y1 = frags[SPAN_Y1];
4747 var x2 = frags[SPAN_X2];
4748 var y2 = frags[SPAN_Y2];
caryclark55888e42016-07-18 10:01:36 -07004749 var x3, y3, x3, y4, w;
caryclarkdac1d172014-06-17 05:15:38 -07004750 ctx.lineWidth = 3;
4751 ctx.strokeStyle = "rgba(0,0,255, 0.3)";
4752 focus_enabled = true;
4753 switch (fragType) {
4754 case ACTIVE_LINE_SPAN:
caryclark55888e42016-07-18 10:01:36 -07004755 drawLine(x1, y1, x2, y2);
caryclarkdac1d172014-06-17 05:15:38 -07004756 if (draw_id) {
caryclark55888e42016-07-18 10:01:36 -07004757 drawLineID(frags[0], x1, y1, x2, y2);
4758 }
4759 if (pt_labels) {
4760 var curve = [x1, y1, x2, y2];
4761 ctx.fillStyle = "blue";
4762 drawPoints(curve, PATH_LINE, pt_labels == 2);
caryclarkdac1d172014-06-17 05:15:38 -07004763 }
4764 break;
4765 case ACTIVE_QUAD_SPAN:
4766 x3 = frags[SPAN_X3];
4767 y3 = frags[SPAN_Y3];
caryclark55888e42016-07-18 10:01:36 -07004768 drawQuad(x1, y1, x2, y2, x3, y3);
caryclarkdac1d172014-06-17 05:15:38 -07004769 if (draw_id) {
caryclark55888e42016-07-18 10:01:36 -07004770 drawQuadID(frags[0], x1, y1, x2, y2, x3, y3);
4771 }
4772 if (pt_labels) {
4773 var curve = [x1, y1, x2, y2, x3, y3];
4774 ctx.fillStyle = "blue";
4775 drawPoints(curve, PATH_QUAD, pt_labels == 2);
caryclarkdac1d172014-06-17 05:15:38 -07004776 }
4777 break;
caryclark1049f122015-04-20 08:31:59 -07004778 case ACTIVE_CONIC_SPAN:
4779 x3 = frags[SPAN_X3];
4780 y3 = frags[SPAN_Y3];
caryclark1049f122015-04-20 08:31:59 -07004781 w = frags[SPAN_K_W];
caryclark55888e42016-07-18 10:01:36 -07004782 drawConicWithQuads(x1, y1, x2, y2, x3, y3, w);
caryclark1049f122015-04-20 08:31:59 -07004783 if (draw_id) {
caryclark55888e42016-07-18 10:01:36 -07004784 drawConicID(frags[0], x1, y1, x2, y2, x3, y3, w);
4785 }
4786 if (pt_labels) {
4787 var curve = [x1, y1, x2, y2, x3, y3, w];
4788 ctx.fillStyle = "blue";
4789 drawPoints(curve, PATH_CONIC, pt_labels == 2);
caryclark1049f122015-04-20 08:31:59 -07004790 }
4791 break;
caryclarkdac1d172014-06-17 05:15:38 -07004792 case ACTIVE_CUBIC_SPAN:
4793 x3 = frags[SPAN_X3];
4794 y3 = frags[SPAN_Y3];
4795 x4 = frags[SPAN_X4];
4796 y4 = frags[SPAN_Y4];
caryclark55888e42016-07-18 10:01:36 -07004797 drawCubic(x1, y1, x2, y2, x3, y3, x4, y4);
caryclarkdac1d172014-06-17 05:15:38 -07004798 if (draw_id) {
caryclark55888e42016-07-18 10:01:36 -07004799 drawCubicID(frags[0], x1, y1, x2, y2, x3, y3, x4, y4);
4800 }
4801 if (pt_labels) {
4802 var curve = [x1, y1, x2, y2, x3, y3, x4, y4];
4803 ctx.fillStyle = "blue";
4804 drawPoints(curve, PATH_CUBIC, pt_labels == 2);
caryclarkdac1d172014-06-17 05:15:38 -07004805 }
4806 break;
4807 default:
4808 console.log("unknown REC_TYPE_ACTIVE frag type: " + fragType);
4809 throw "stop execution";
4810 }
4811 break;
4812 case REC_TYPE_ACTIVE_OP:
4813 if (!draw_op || (step_limit > 0 && tIndex < lastOp)) {
4814 continue;
4815 }
4816 focus_enabled = true;
4817 ctx.lineWidth = 3;
4818 var activeSpan = frags[7] == "1";
4819 ctx.strokeStyle = activeSpan ? "rgba(45,160,0, 0.3)" : "rgba(255,45,0, 0.5)";
4820 var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
4821 drawCurve(curve);
4822 if (draw_op > 1) {
4823 drawArc(curve, false, frags[3], frags[4]);
4824 drawArc(curve, true, frags[5], frags[6]);
4825 }
4826 break;
4827 case REC_TYPE_ADD:
4828 if (!draw_add) {
4829 continue;
4830 }
4831 ctx.lineWidth = 3;
4832 ctx.strokeStyle = closeCount == 0 ? "rgba(0,0,255, 0.3)"
4833 : closeCount == 1 ? "rgba(0,127,0, 0.3)"
4834 : closeCount == 2 ? "rgba(0,127,127, 0.3)"
4835 : closeCount == 3 ? "rgba(127,127,0, 0.3)"
4836 : "rgba(127,0,127, 0.3)";
4837 focus_enabled = true;
4838 switch (fragType) {
4839 case ADD_MOVETO:
4840 break;
4841 case ADD_LINETO:
4842 if (step_limit == 0 || tIndex >= lastAdd) {
4843 drawLine(frags[0], frags[1], frags[2], frags[3]);
4844 }
4845 break;
4846 case ADD_QUADTO:
4847 if (step_limit == 0 || tIndex >= lastAdd) {
4848 drawQuad(frags[0], frags[1], frags[2], frags[3], frags[4], frags[5]);
4849 }
4850 break;
caryclark1049f122015-04-20 08:31:59 -07004851 case ADD_CONICTO:
4852 if (step_limit == 0 || tIndex >= lastAdd) {
4853 drawConicWithQuads(frags[0], frags[1], frags[2], frags[3],
4854 frags[4], frags[5], frags[6]);
4855 }
4856 break;
caryclarkdac1d172014-06-17 05:15:38 -07004857 case ADD_CUBICTO:
4858 if (step_limit == 0 || tIndex >= lastAdd) {
4859 drawCubic(frags[0], frags[1], frags[2], frags[3],
4860 frags[4], frags[5], frags[6], frags[7]);
4861 }
4862 break;
4863 case ADD_CLOSE:
4864 ++closeCount;
4865 break;
4866 case ADD_FILL:
4867 break;
4868 default:
4869 console.log("unknown REC_TYPE_ADD frag type: " + fragType);
4870 throw "stop execution";
4871 }
4872 break;
4873 case REC_TYPE_ANGLE:
caryclark54359292015-03-26 07:52:43 -07004874 angleBetween = frags[18] == "T";
4875 afterIndex = 0;
4876 if (draw_angle == 0 || draw_angle == 3 || (step_limit > 0 && tIndex < lastAngle)) {
caryclarkdac1d172014-06-17 05:15:38 -07004877 continue;
4878 }
4879 focus_enabled = true;
4880 ctx.lineWidth = 3;
4881 ctx.strokeStyle = "rgba(127,45,127, 0.3)";
caryclark54359292015-03-26 07:52:43 -07004882 var leftCurve = curvePartialByID(test, frags[0], frags[4], frags[5]);
4883 var midCurve = curvePartialByID(test, frags[6], frags[10], frags[11]);
4884 var rightCurve = curvePartialByID(test, frags[12], frags[16], frags[17]);
caryclarkdac1d172014-06-17 05:15:38 -07004885 drawCurve(leftCurve);
4886 drawCurve(rightCurve);
caryclark54359292015-03-26 07:52:43 -07004887 ctx.strokeStyle = angleBetween ? "rgba(0,160,45, 0.3)" : "rgba(255,0,45, 0.5)";
caryclarkdac1d172014-06-17 05:15:38 -07004888 drawCurve(midCurve);
4889 if (draw_angle > 1) {
4890 drawOrder(leftCurve, 'L');
4891 drawOrder(rightCurve, 'R');
4892 }
4893 break;
caryclark54359292015-03-26 07:52:43 -07004894 case REC_TYPE_AFTERPART:
4895 if (draw_angle != 3 || (step_limit > 0 && tIndex < lastAngle)) {
4896 continue;
4897 }
4898 ctx.strokeStyle = afterIndex == 0 ? "rgba(255,0,0, 1.0)"
4899 : (afterIndex == 1) == angleBetween ? "rgba(0,128,0, 1.0)"
4900 : "rgba(0,0,255, 1.0)";
4901 switch (fragType) {
4902 case PATH_LINE:
4903 drawLine(frags[0], frags[1], frags[2], frags[3]);
4904 break;
4905 case PATH_QUAD:
4906 drawQuad(frags[0], frags[1], frags[2], frags[3],
4907 frags[4], frags[5]);
4908 break;
caryclark1049f122015-04-20 08:31:59 -07004909 case PATH_CONIC:
4910 drawConicWithQuads(frags[0], frags[1], frags[2], frags[3],
4911 frags[4], frags[5], frags[6]);
4912 break;
caryclark54359292015-03-26 07:52:43 -07004913 case PATH_CUBIC:
4914 drawCubic(frags[0], frags[1], frags[2], frags[3],
caryclark1049f122015-04-20 08:31:59 -07004915 frags[4], frags[5], frags[6], frags[7]);
caryclark54359292015-03-26 07:52:43 -07004916 break;
4917 default:
4918 console.log("unknown REC_TYPE_AFTERPART frag type: " + fragType);
4919 throw "stop execution";
4920 }
4921 ++afterIndex;
4922 break;
caryclark624637c2015-05-11 07:21:27 -07004923 case REC_TYPE_COINCIDENCE:
4924 if (!draw_coincidence || (step_limit > 0 && tIndex < lastCoin)) {
4925 continue;
4926 }
4927 focus_enabled = true;
4928 ctx.lineWidth = 3;
4929 ctx.strokeStyle = "rgba(127,45,63, 0.3)";
4930 var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
4931 drawCurve(curve);
4932 break;
caryclarkdac1d172014-06-17 05:15:38 -07004933 case REC_TYPE_SECT:
4934 if (!draw_intersection) {
4935 continue;
4936 }
4937 if (draw_intersection != 1 && (step_limit > 0 && tIndex < lastSect)) {
4938 continue;
4939 }
4940 // draw_intersection == 1 : show all
4941 // draw_intersection == 2 : step == 0 ? show all : show intersection line #step
4942 // draw_intersection == 3 : step == 0 ? show all : show intersection #step
4943 ctx.lineWidth = 1;
4944 ctx.strokeStyle = "rgba(0,0,255, 0.3)";
4945 ctx.fillStyle = "blue";
4946 focus_enabled = true;
4947 var f = [];
4948 var c1s;
4949 var c1l;
4950 var c2s;
4951 var c2l;
4952 switch (fragType) {
4953 case INTERSECT_LINE:
4954 f.push(5, 6, 0, 7);
4955 c1s = 1; c1l = 4; c2s = 8; c2l = 4;
4956 break;
4957 case INTERSECT_LINE_2:
4958 f.push(5, 6, 0, 10);
4959 f.push(8, 9, 7, 15);
4960 c1s = 1; c1l = 4; c2s = 11; c2l = 4;
4961 break;
4962 case INTERSECT_LINE_NO:
4963 c1s = 0; c1l = 4; c2s = 4; c2l = 4;
4964 break;
4965 case INTERSECT_QUAD_LINE:
4966 f.push(7, 8, 0, 9);
4967 c1s = 1; c1l = 6; c2s = 10; c2l = 4;
4968 break;
4969 case INTERSECT_QUAD_LINE_2:
4970 f.push(7, 8, 0, 12);
4971 f.push(10, 11, 9, 17);
4972 c1s = 1; c1l = 6; c2s = 13; c2l = 4;
4973 break;
4974 case INTERSECT_QUAD_LINE_NO:
4975 c1s = 0; c1l = 6; c2s = 6; c2l = 4;
4976 break;
4977 case INTERSECT_QUAD:
4978 f.push(7, 8, 0, 9);
4979 c1s = 1; c1l = 6; c2s = 10; c2l = 6;
4980 break;
4981 case INTERSECT_QUAD_2:
4982 f.push(7, 8, 0, 12);
4983 f.push(10, 11, 9, 19);
4984 c1s = 1; c1l = 6; c2s = 13; c2l = 6;
4985 break;
4986 case INTERSECT_QUAD_NO:
4987 c1s = 0; c1l = 6; c2s = 6; c2l = 6;
4988 break;
caryclark1049f122015-04-20 08:31:59 -07004989 case INTERSECT_CONIC_LINE:
4990 f.push(8, 9, 0, 10);
4991 c1s = 1; c1l = 7; c2s = 11; c2l = 4;
4992 break;
4993 case INTERSECT_CONIC_LINE_2:
4994 f.push(8, 9, 0, 12);
4995 f.push(11, 12, 10, 18);
4996 c1s = 1; c1l = 7; c2s = 14; c2l = 4;
4997 break;
4998 case INTERSECT_CONIC_LINE_NO:
4999 c1s = 0; c1l = 7; c2s = 7; c2l = 4;
5000 break;
caryclark55888e42016-07-18 10:01:36 -07005001 case INTERSECT_CONIC_QUAD:
5002 f.push(8, 9, 0, 10);
5003 c1s = 1; c1l = 7; c2s = 11; c2l = 6;
5004 break;
5005 case INTERSECT_CONIC_QUAD_2:
5006 f.push(8, 9, 0, 12);
5007 f.push(11, 12, 10, 18);
5008 c1s = 1; c1l = 7; c2s = 14; c2l = 6;
5009 break;
5010 case INTERSECT_CONIC_QUAD_NO:
5011 c1s = 0; c1l = 7; c2s = 7; c2l = 6;
5012 break;
caryclark1049f122015-04-20 08:31:59 -07005013 case INTERSECT_CONIC:
5014 f.push(8, 9, 0, 10);
5015 c1s = 1; c1l = 7; c2s = 11; c2l = 7;
5016 break;
5017 case INTERSECT_CONIC_2:
5018 f.push(8, 9, 0, 13);
5019 f.push(11, 12, 10, 21);
5020 c1s = 1; c1l = 7; c2s = 14; c2l = 7;
5021 break;
5022 case INTERSECT_CONIC_NO:
5023 c1s = 0; c1l = 7; c2s = 7; c2l = 7;
5024 break;
caryclarkdac1d172014-06-17 05:15:38 -07005025 case INTERSECT_SELF_CUBIC:
5026 f.push(9, 10, 0, 11);
5027 c1s = 1; c1l = 8; c2s = 0; c2l = 0;
5028 break;
5029 case INTERSECT_SELF_CUBIC_NO:
5030 c1s = 0; c1l = 8; c2s = 0; c2l = 0;
5031 break;
5032 case INTERSECT_CUBIC_LINE:
5033 f.push(9, 10, 0, 11);
5034 c1s = 1; c1l = 8; c2s = 12; c2l = 4;
5035 break;
5036 case INTERSECT_CUBIC_LINE_2:
5037 f.push(9, 10, 0, 14);
5038 f.push(12, 13, 11, 19);
5039 c1s = 1; c1l = 8; c2s = 15; c2l = 4;
5040 break;
5041 case INTERSECT_CUBIC_LINE_3:
5042 f.push(9, 10, 0, 17);
5043 f.push(12, 13, 11, 22);
5044 f.push(15, 16, 14, 23);
5045 c1s = 1; c1l = 8; c2s = 18; c2l = 4;
5046 break;
5047 case INTERSECT_CUBIC_QUAD_NO:
5048 c1s = 0; c1l = 8; c2s = 8; c2l = 6;
5049 break;
5050 case INTERSECT_CUBIC_QUAD:
5051 f.push(9, 10, 0, 11);
5052 c1s = 1; c1l = 8; c2s = 12; c2l = 6;
5053 break;
5054 case INTERSECT_CUBIC_QUAD_2:
5055 f.push(9, 10, 0, 14);
5056 f.push(12, 13, 11, 21);
5057 c1s = 1; c1l = 8; c2s = 15; c2l = 6;
5058 break;
5059 case INTERSECT_CUBIC_QUAD_3:
5060 f.push(9, 10, 0, 17);
5061 f.push(12, 13, 11, 24);
5062 f.push(15, 16, 14, 25);
5063 c1s = 1; c1l = 8; c2s = 18; c2l = 6;
5064 break;
5065 case INTERSECT_CUBIC_QUAD_4:
5066 f.push(9, 10, 0, 20);
5067 f.push(12, 13, 11, 27);
5068 f.push(15, 16, 14, 28);
5069 f.push(18, 19, 17, 29);
5070 c1s = 1; c1l = 8; c2s = 21; c2l = 6;
5071 break;
5072 case INTERSECT_CUBIC_LINE_NO:
5073 c1s = 0; c1l = 8; c2s = 8; c2l = 4;
5074 break;
5075 case INTERSECT_CUBIC:
5076 f.push(9, 10, 0, 11);
5077 c1s = 1; c1l = 8; c2s = 12; c2l = 8;
5078 break;
5079 case INTERSECT_CUBIC_2:
5080 f.push(9, 10, 0, 14);
5081 f.push(12, 13, 11, 23);
5082 c1s = 1; c1l = 8; c2s = 15; c2l = 8;
5083 break;
5084 case INTERSECT_CUBIC_3:
5085 f.push(9, 10, 0, 17);
5086 f.push(12, 13, 11, 26);
5087 f.push(15, 16, 14, 27);
5088 c1s = 1; c1l = 8; c2s = 18; c2l = 8;
5089 break;
5090 case INTERSECT_CUBIC_4:
5091 f.push(9, 10, 0, 20);
5092 f.push(12, 13, 11, 29);
5093 f.push(15, 16, 14, 30);
5094 f.push(18, 19, 17, 31);
5095 c1s = 1; c1l = 8; c2s = 21; c2l = 8;
5096 break;
5097 case INTERSECT_CUBIC_NO:
5098 c1s = 0; c1l = 8; c2s = 8; c2l = 8;
5099 break;
5100 default:
5101 console.log("unknown REC_TYPE_SECT frag type: " + fragType);
5102 throw "stop execution";
5103 }
5104 if (draw_intersection != 1) {
5105 var id = -1;
5106 var curve;
5107 switch (c1l) {
caryclark55888e42016-07-18 10:01:36 -07005108 case 4:
caryclarkdac1d172014-06-17 05:15:38 -07005109 drawLine(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3]);
5110 if (draw_id) {
5111 curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3]];
5112 id = idByCurve(test, curve, PATH_LINE);
5113 }
5114 break;
5115 case 6:
5116 drawQuad(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
5117 frags[c1s + 4], frags[c1s + 5]);
5118 if (draw_id) {
5119 curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
5120 frags[c1s + 4], frags[c1s + 5]];
5121 id = idByCurve(test, curve, PATH_QUAD);
5122 }
5123 break;
caryclark1049f122015-04-20 08:31:59 -07005124 case 7:
5125 drawConicWithQuads(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
5126 frags[c1s + 4], frags[c1s + 5], frags[c1s + 6]);
5127 if (draw_id) {
5128 curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
5129 frags[c1s + 4], frags[c1s + 5], frags[c1s + 6]];
5130 id = idByCurve(test, curve, PATH_CONIC);
5131 }
5132 break;
caryclarkdac1d172014-06-17 05:15:38 -07005133 case 8:
5134 drawCubic(frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
5135 frags[c1s + 4], frags[c1s + 5], frags[c1s + 6], frags[c1s + 7]);
5136 if (draw_id) {
5137 curve = [frags[c1s], frags[c1s + 1], frags[c1s + 2], frags[c1s + 3],
5138 frags[c1s + 4], frags[c1s + 5], frags[c1s + 6], frags[c1s + 7]];
5139 id = idByCurve(test, curve, PATH_CUBIC);
5140 }
5141 break;
5142 }
5143 if (id >= 0) {
5144 drawID(curve, id);
5145 }
5146 id = -1;
5147 switch (c2l) {
5148 case 0:
5149 break;
caryclark55888e42016-07-18 10:01:36 -07005150 case 4:
caryclarkdac1d172014-06-17 05:15:38 -07005151 drawLine(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3]);
5152 if (draw_id) {
5153 curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3]];
5154 id = idByCurve(test, curve, PATH_LINE);
5155 }
5156 break;
5157 case 6:
5158 drawQuad(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
5159 frags[c2s + 4], frags[c2s + 5]);
5160 if (draw_id) {
5161 curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
5162 frags[c2s + 4], frags[c2s + 5]];
5163 id = idByCurve(test, curve, PATH_QUAD);
5164 }
5165 break;
caryclark1049f122015-04-20 08:31:59 -07005166 case 7:
5167 drawConicWithQuads(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
5168 frags[c2s + 4], frags[c2s + 5], frags[c2s + 6]);
5169 if (draw_id) {
5170 curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
5171 frags[c2s + 4], frags[c2s + 5], frags[c2s + 6]];
5172 id = idByCurve(test, curve, PATH_CONIC);
5173 }
5174 break;
caryclarkdac1d172014-06-17 05:15:38 -07005175 case 8:
5176 drawCubic(frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
5177 frags[c2s + 4], frags[c2s + 5], frags[c2s + 6], frags[c2s + 7]);
5178 if (draw_id) {
5179 curve = [frags[c2s], frags[c2s + 1], frags[c2s + 2], frags[c2s + 3],
5180 frags[c2s + 4], frags[c2s + 5], frags[c2s + 6], frags[c2s + 7]];
5181 id = idByCurve(test, curve, PATH_CUBIC);
5182 }
5183 break;
5184 }
5185 if (id >= 0) {
5186 drawID(curve, id);
5187 }
5188 }
5189 if (collect_bounds) {
5190 break;
5191 }
caryclark54359292015-03-26 07:52:43 -07005192 if (draw_intersection != 3 || step_limit == 0 || tIndex >= lastSect) {
5193 for (var idx = 0; idx < f.length; idx += 4) {
caryclarkdac1d172014-06-17 05:15:38 -07005194 drawPoint(frags[f[idx]], frags[f[idx + 1]], true);
5195 }
5196 }
5197 if (!draw_intersectT) {
5198 break;
5199 }
5200 ctx.fillStyle = "red";
caryclark54359292015-03-26 07:52:43 -07005201 if (draw_intersection != 3 || step_limit == 0 || tIndex >= lastSect) {
5202 for (var idx = 0; idx < f.length; idx += 4) {
caryclarkdac1d172014-06-17 05:15:38 -07005203 drawTAtPointUp(frags[f[idx]], frags[f[idx + 1]], frags[f[idx + 2]]);
5204 drawTAtPointDown(frags[f[idx]], frags[f[idx + 1]], frags[f[idx + 3]]);
5205 }
5206 }
5207 break;
5208 case REC_TYPE_SORT:
5209 if (!draw_sort || (step_limit > 0 && tIndex < lastSort)) {
5210 continue;
5211 }
5212 ctx.lineWidth = 3;
5213 ctx.strokeStyle = "rgba(127,127,0, 0.5)";
5214 focus_enabled = true;
5215 switch (fragType) {
5216 case SORT_UNARY:
5217 case SORT_BINARY:
5218 var curve = curvePartialByID(test, frags[0], frags[6], frags[8]);
5219 drawCurve(curve);
5220 break;
5221 default:
5222 console.log("unknown REC_TYPE_SORT frag type: " + fragType);
5223 throw "stop execution";
5224 }
5225 break;
caryclark03b03ca2015-04-23 09:13:37 -07005226 case REC_TYPE_TOP:
5227 if (!draw_top || (step_limit > 0 && tIndex < lastTop)) {
5228 continue;
5229 }
5230 ctx.lineWidth = 3;
5231 ctx.strokeStyle = "rgba(127,127,0, 0.5)";
5232 focus_enabled = true;
5233 {
5234 var curve = curvePartialByID(test, frags[0], frags[1], frags[2]);
5235 drawCurve(curve);
5236 var type = PATH_LINE + (curve.length / 2 - 2);
5237 var mid = pointAtT(curve, type, 0.5);
5238 var d = dxy_at_t(curve, type, 0.5);
5239 drawArrow(mid.x, mid.y, d.x, d.y, 0.3);
5240 }
5241 break;
caryclarkdac1d172014-06-17 05:15:38 -07005242 case REC_TYPE_MARK:
5243 if (!draw_mark || (step_limit > 0 && tIndex < lastMark)) {
5244 continue;
5245 }
5246 ctx.lineWidth = 3;
5247 ctx.strokeStyle = fragType >= MARK_DONE_LINE ?
5248 "rgba(127,0,127, 0.5)" : "rgba(127,127,0, 0.5)";
5249 focus_enabled = true;
5250 switch (fragType) {
5251 case MARK_LINE:
5252 case MARK_DONE_LINE:
5253 case MARK_UNSORTABLE_LINE:
5254 case MARK_SIMPLE_LINE:
5255 case MARK_SIMPLE_DONE_LINE:
5256 case MARK_DONE_UNARY_LINE:
5257 drawLinePartial(frags[1], frags[2], frags[3], frags[4],
5258 frags[5], frags[9]);
5259 if (draw_id) {
5260 drawLinePartialID(frags[0], frags[1], frags[2], frags[3], frags[4],
5261 frags[5], frags[9]);
5262 }
5263 break;
5264 case MARK_QUAD:
5265 case MARK_DONE_QUAD:
5266 case MARK_UNSORTABLE_QUAD:
5267 case MARK_SIMPLE_QUAD:
5268 case MARK_SIMPLE_DONE_QUAD:
5269 case MARK_DONE_UNARY_QUAD:
5270 drawQuadPartial(frags[1], frags[2], frags[3], frags[4],
5271 frags[5], frags[6], frags[7], frags[11]);
5272 if (draw_id) {
5273 drawQuadPartialID(frags[0], frags[1], frags[2], frags[3], frags[4],
5274 frags[5], frags[6], frags[7], frags[11]);
5275 }
5276 break;
5277 case MARK_CUBIC:
5278 case MARK_DONE_CUBIC:
5279 case MARK_UNSORTABLE_CUBIC:
5280 case MARK_SIMPLE_CUBIC:
5281 case MARK_SIMPLE_DONE_CUBIC:
5282 case MARK_DONE_UNARY_CUBIC:
5283 drawCubicPartial(frags[1], frags[2], frags[3], frags[4],
5284 frags[5], frags[6], frags[7], frags[8], frags[9], frags[13]);
5285 if (draw_id) {
5286 drawCubicPartialID(frags[0], frags[1], frags[2], frags[3], frags[4],
5287 frags[5], frags[6], frags[7], frags[8], frags[9], frags[13]);
5288 }
5289 break;
5290 case MARK_ANGLE_LAST:
5291 // FIXME: ignored for now
5292 break;
5293 default:
5294 console.log("unknown REC_TYPE_MARK frag type: " + fragType);
5295 throw "stop execution";
5296 }
5297 break;
5298 default:
5299 continue;
5300 }
5301 }
5302 switch (recType) {
5303 case REC_TYPE_SORT:
5304 if (!draw_sort || (step_limit > 0 && tIndex < lastSort)) {
5305 break;
5306 }
5307 var angles = []; // use tangent lines to describe arcs
5308 var windFrom = [];
5309 var windTo = [];
5310 var opp = [];
5311 var minXY = Number.MAX_VALUE;
5312 var partial;
5313 focus_enabled = true;
5314 var someUnsortable = false;
5315 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
5316 var fragType = records[recordIndex];
5317 var frags = records[recordIndex + 1];
5318 var unsortable = (fragType == SORT_UNARY && frags[14]) ||
5319 (fragType == SORT_BINARY && frags[16]);
5320 someUnsortable |= unsortable;
5321 switch (fragType) {
5322 case SORT_UNARY:
5323 case SORT_BINARY:
5324 partial = curvePartialByID(test, frags[0], frags[6], frags[8]);
5325 break;
5326 default:
5327 console.log("unknown REC_TYPE_SORT frag type: " + fragType);
5328 throw "stop execution";
5329 }
5330 var dx = boundsWidth(partial);
5331 var dy = boundsHeight(partial);
5332 minXY = Math.min(minXY, dx * dx + dy * dy);
5333 if (collect_bounds) {
5334 continue;
5335 }
5336 angles.push(tangent(partial));
5337 var from = frags[12];
5338 var to = frags[12];
5339 var sgn = frags[10];
5340 if (sgn < 0) {
5341 from -= frags[11];
5342 } else if (sgn > 0) {
5343 to -= frags[11];
5344 }
5345 windFrom.push(from + (unsortable ? "!" : ""));
5346 windTo.push(to + (unsortable ? "!" : ""));
5347 opp.push(fragType == SORT_BINARY);
5348 if (draw_sort == 1) {
5349 drawOrder(partial, frags[12]);
5350 } else {
5351 drawOrder(partial, (recordIndex / 2) + 1);
5352 }
5353 }
5354 var radius = Math.sqrt(minXY) / 2 * scale;
5355 radius = Math.min(50, radius);
5356 var scaledRadius = radius / scale;
5357 var centerX = partial[0];
5358 var centerY = partial[1];
5359 if (collect_bounds) {
5360 if (focus_enabled) {
5361 focusXmin = Math.min(focusXmin, centerX - scaledRadius);
5362 focusYmin = Math.min(focusYmin, centerY - scaledRadius);
5363 focusXmax = Math.max(focusXmax, centerX + scaledRadius);
5364 focusYmax = Math.max(focusYmax, centerY + scaledRadius);
5365 }
5366 break;
5367 }
5368 break;
5369 default:
5370 break;
5371 }
5372 }
5373 if (collect_bounds) {
5374 return;
5375 }
5376 if (draw_log && logStart >= 0) {
5377 ctx.font = "normal 10px Arial";
5378 ctx.textAlign = "left";
5379 ctx.beginPath();
5380 var top = screenHeight - 20 - (logRange + 2) * 10;
5381 ctx.rect(50, top, screenWidth - 100, (logRange + 2) * 10);
5382 ctx.fillStyle = "white";
5383 ctx.fill();
5384 ctx.fillStyle = "rgba(0,0,0, 0.5)";
5385 if (logStart > 0) {
5386 ctx.fillText(lines[logStart - 1], 50, top + 8);
5387 }
5388 ctx.fillStyle = "black";
5389 for (var idx = 0; idx < logRange; ++idx) {
5390 ctx.fillText(lines[logStart + idx], 50, top + 18 + 10 * idx);
5391 }
5392 ctx.fillStyle = "rgba(0,0,0, 0.5)";
5393 if (logStart + logRange < lines.length) {
5394 ctx.fillText(lines[logStart + logRange], 50, top + 18 + 10 * logRange);
5395 }
5396 }
5397 if (draw_legend) {
5398 var pos = 0;
caryclark624637c2015-05-11 07:21:27 -07005399 var drawSomething = draw_add | draw_active | draw_angle | draw_coincidence | draw_sort | draw_mark;
caryclarkdac1d172014-06-17 05:15:38 -07005400 // drawBox(pos++, "yellow", "black", opLetter, true, '');
5401 drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_intersection > 1 ? sectCount : sectMax2, draw_intersection, intersectionKey);
5402 drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_add ? addCount : addMax, draw_add, addKey);
5403 drawBox(pos++, "rgba(0,0,255, 0.3)", "black", draw_active ? activeCount : activeMax, draw_active, activeKey);
5404 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_angle ? angleCount : angleMax, draw_angle, angleKey);
caryclark624637c2015-05-11 07:21:27 -07005405 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_coincidence ? coinCount : coinMax, draw_coincidence, coincidenceKey);
caryclarkdac1d172014-06-17 05:15:38 -07005406 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_op ? opCount : opMax, draw_op, opKey);
5407 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_sort ? sortCount : sortMax, draw_sort, sortKey);
caryclark03b03ca2015-04-23 09:13:37 -07005408 drawBox(pos++, "rgba(127,127,0, 0.3)", "black", draw_top ? topCount : topMax, draw_top, topKey);
caryclarkdac1d172014-06-17 05:15:38 -07005409 drawBox(pos++, "rgba(127,0,127, 0.3)", "black", draw_mark ? markCount : markMax, draw_mark, markKey);
caryclark55888e42016-07-18 10:01:36 -07005410 drawBox(pos++, "black", "white",
caryclark26ad22a2015-10-16 09:03:38 -07005411 (new Array('P', 'P1', 'P2', 'P', 'p', 'p1', 'p2'))[draw_path], draw_path != 0, pathKey);
caryclarkdac1d172014-06-17 05:15:38 -07005412 drawBox(pos++, "rgba(0,63,0, 0.7)", "white",
5413 (new Array('Q', 'Q', 'C', 'QC', 'Qc', 'Cq'))[draw_computed],
5414 draw_computed != 0, computedKey);
5415 drawBox(pos++, "green", "black", step_limit, drawSomething, '');
5416 drawBox(pos++, "green", "black", stepMax, drawSomething, '');
5417 drawBox(pos++, "rgba(255,0,0, 0.6)", "black", lastIndex, drawSomething & draw_log, '');
5418 drawBox(pos++, "rgba(255,0,0, 0.6)", "black", test.length - 1, drawSomething & draw_log, '');
5419 if (curve_t) {
5420 drawCurveTControl();
5421 }
5422 ctx.font = "normal 20px Arial";
5423 ctx.fillStyle = "rgba(0,0,0, 0.3)";
5424 ctx.textAlign = "right";
5425 ctx.fillText(scale.toFixed(decimal_places) + 'x' , screenWidth - 10, screenHeight - 5);
5426 }
5427 if (draw_hints) {
5428 ctx.font = "normal 10px Arial";
5429 ctx.fillStyle = "rgba(0,0,0, 0.5)";
5430 ctx.textAlign = "right";
5431 var y = 4;
5432 ctx.fillText("control lines : " + controlLinesKey, ctx.screenWidthwidth - 10, pos * 50 + y++ * 10);
5433 ctx.fillText("curve t : " + curveTKey, screenWidth - 10, pos * 50 + y++ * 10);
5434 ctx.fillText("deriviatives : " + deriviativesKey, screenWidth - 10, pos * 50 + y++ * 10);
5435 ctx.fillText("intersect t : " + intersectTKey, screenWidth - 10, pos * 50 + y++ * 10);
caryclarkdac1d172014-06-17 05:15:38 -07005436 ctx.fillText("log : " + logKey, screenWidth - 10, pos * 50 + y++ * 10);
5437 ctx.fillText("log curve : " + logCurvesKey, screenWidth - 10, pos * 50 + y++ * 10);
5438 ctx.fillText("mid point : " + midpointKey, screenWidth - 10, pos * 50 + y++ * 10);
5439 ctx.fillText("points : " + ptsKey, screenWidth - 10, pos * 50 + y++ * 10);
5440 ctx.fillText("sequence : " + sequenceKey, screenWidth - 10, pos * 50 + y++ * 10);
5441 ctx.fillText("xy : " + xyKey, screenWidth - 10, pos * 50 + y++ * 10);
5442 }
5443}
5444
5445function drawBox(y, backC, foreC, str, enable, label) {
5446 ctx.beginPath();
5447 ctx.fillStyle = backC;
5448 ctx.rect(screenWidth - 40, y * 50 + 10, 40, 30);
5449 ctx.fill();
5450 ctx.font = "normal 16px Arial";
5451 ctx.fillStyle = foreC;
5452 ctx.textAlign = "center";
5453 ctx.fillText(str, screenWidth - 20, y * 50 + 32);
5454 if (!enable) {
5455 ctx.fillStyle = "rgba(255,255,255, 0.5)";
5456 ctx.fill();
5457 }
5458 if (label != '') {
5459 ctx.font = "normal 9px Arial";
5460 ctx.fillStyle = "black";
5461 ctx.fillText(label, screenWidth - 47, y * 50 + 40);
5462 }
5463}
5464
5465function drawCurveTControl() {
5466 ctx.lineWidth = 2;
5467 ctx.strokeStyle = "rgba(0,0,0, 0.3)";
5468 ctx.beginPath();
5469 ctx.rect(screenWidth - 80, 40, 28, screenHeight - 80);
5470 ctx.stroke();
5471 var ty = 40 + curveT * (screenHeight - 80);
5472 ctx.beginPath();
5473 ctx.moveTo(screenWidth - 80, ty);
5474 ctx.lineTo(screenWidth - 85, ty - 5);
5475 ctx.lineTo(screenWidth - 85, ty + 5);
5476 ctx.lineTo(screenWidth - 80, ty);
5477 ctx.fillStyle = "rgba(0,0,0, 0.6)";
5478 ctx.fill();
5479 var num = curveT.toFixed(decimal_places);
5480 ctx.font = "normal 10px Arial";
5481 ctx.textAlign = "left";
5482 ctx.fillText(num, screenWidth - 78, ty);
5483}
5484
5485function ptInTControl() {
5486 var e = window.event;
caryclark55888e42016-07-18 10:01:36 -07005487 var tgt = e.target || e.srcElement;
caryclarkdac1d172014-06-17 05:15:38 -07005488 var left = tgt.offsetLeft;
5489 var top = tgt.offsetTop;
5490 var x = (e.clientX - left);
5491 var y = (e.clientY - top);
5492 if (x < screenWidth - 80 || x > screenWidth - 50) {
5493 return false;
5494 }
5495 if (y < 40 || y > screenHeight - 80) {
5496 return false;
5497 }
5498 curveT = (y - 40) / (screenHeight - 120);
5499 if (curveT < 0 || curveT > 1) {
5500 throw "stop execution";
5501 }
5502 return true;
5503}
5504
5505function drawTop() {
5506 if (tests[testIndex] == null) {
5507 var str = testDivs[testIndex].textContent;
5508 parse_all(str);
5509 var title = testDivs[testIndex].id.toString();
5510 testTitles[testIndex] = title;
5511 }
5512 init(tests[testIndex]);
5513 redraw();
5514}
5515
5516function redraw() {
5517 if (focus_on_selection) {
5518 collect_bounds = true;
5519 draw(tests[testIndex], testLines[testIndex], testTitles[testIndex]);
5520 collect_bounds = false;
5521 if (focusXmin < focusXmax && focusYmin < focusYmax) {
5522 setScale(focusXmin, focusXmax, focusYmin, focusYmax);
5523 }
5524 }
5525 ctx.beginPath();
5526 ctx.fillStyle = "white";
5527 ctx.rect(0, 0, screenWidth, screenHeight);
5528 ctx.fill();
5529 draw(tests[testIndex], testLines[testIndex], testTitles[testIndex]);
5530}
5531
5532function dumpCurvePartial(test, id, t0, t1) {
5533 var curve = curveByID(test, id);
5534 var name = ["line", "quad", "cubic"][curve.length / 2 - 2];
5535 console.log("id=" + id + " " + name + "=" + curveToString(curve)
5536 + " t0=" + t0 + " t1=" + t1
5537 + " partial=" + curveToString(curvePartialByID(test, id, t0, t1)));
5538}
5539
5540function dumpAngleTest(test, id, t0, t1) {
5541 var curve = curveByID(test, id);
caryclark55888e42016-07-18 10:01:36 -07005542 console.log(" { {" + curveToString(curve) + "}, "
caryclarkdac1d172014-06-17 05:15:38 -07005543 + curve.length / 2 + ", " + t0 + ", " + t1 + ", {} }, //");
5544}
5545
5546function dumpLogToConsole() {
5547 if (logStart < 0) {
5548 return;
5549 }
5550 var test = tests[testIndex];
5551 var recType = REC_TYPE_UNKNOWN;
5552 var records;
5553 for (var index = 0; index < test.length; index += 3) {
5554 var lastLineNo = test[index + 1];
5555 if (lastLineNo >= logStart && lastLineNo < logStart + logRange) {
5556 recType = test[index];
5557 records = test[index + 2];
5558 break;
5559 }
5560 }
5561 if (recType == REC_TYPE_UNKNOWN) {
5562 return;
5563 }
5564 var lines = testLines[testIndex];
5565 for (var idx = 0; idx < logRange; ++idx) {
5566 var line = lines[logStart + idx];
5567 console.log(line);
5568 for (var recordIndex = 0; recordIndex < records.length; recordIndex += 2) {
5569 var fragType = records[recordIndex];
5570 var frags = records[recordIndex + 1];
5571 if (recType == REC_TYPE_ANGLE && fragType == ANGLE_AFTER) {
caryclarkdac1d172014-06-17 05:15:38 -07005572 dumpCurvePartial(test, frags[0], frags[4], frags[5]);
5573 dumpCurvePartial(test, frags[6], frags[10], frags[11]);
5574 dumpCurvePartial(test, frags[12], frags[16], frags[17]);
5575 console.log("\nstatic IntersectData intersectDataSet[] = { //");
5576 dumpAngleTest(test, frags[0], frags[4], frags[5]);
5577 dumpAngleTest(test, frags[6], frags[10], frags[11]);
5578 dumpAngleTest(test, frags[12], frags[16], frags[17]);
5579 console.log("}; //");
5580 }
5581 }
5582 }
5583}
5584
5585var activeKey = 'a';
5586var pathKey = 'b';
5587var pathBackKey = 'B';
5588var centerKey = 'c';
caryclark624637c2015-05-11 07:21:27 -07005589var coincidenceKey = 'C';
caryclarkdac1d172014-06-17 05:15:38 -07005590var addKey = 'd';
5591var deriviativesKey = 'f';
5592var angleKey = 'g';
5593var angleBackKey = 'G';
caryclarkdac1d172014-06-17 05:15:38 -07005594var intersectionKey = 'i';
5595var intersectionBackKey = 'I';
5596var sequenceKey = 'j';
5597var midpointKey = 'k';
5598var logKey = 'l';
5599var logToConsoleKey = 'L';
5600var markKey = 'm';
5601var sortKey = 'o';
5602var opKey = 'p';
5603var opBackKey = 'P';
5604var computedKey = 'q';
5605var computedBackKey = 'Q';
5606var stepKey = 's';
5607var stepBackKey = 'S';
5608var intersectTKey = 't';
caryclark03b03ca2015-04-23 09:13:37 -07005609var topKey = 'T';
caryclarkdac1d172014-06-17 05:15:38 -07005610var curveTKey = 'u';
5611var controlLinesBackKey = 'V';
5612var controlLinesKey = 'v';
5613var ptsKey = 'x';
5614var xyKey = 'y';
5615var logCurvesKey = 'z';
5616var focusKey = '`';
5617var idKey = '.';
5618var retinaKey = '\\';
5619
5620function doKeyPress(evt) {
5621 var char = String.fromCharCode(evt.charCode);
5622 var focusWasOn = false;
5623 switch (char) {
5624 case '0':
5625 case '1':
5626 case '2':
5627 case '3':
5628 case '4':
5629 case '5':
5630 case '6':
5631 case '7':
5632 case '8':
5633 case '9':
5634 decimal_places = char - '0';
5635 redraw();
5636 break;
5637 case activeKey:
5638 draw_active ^= true;
caryclark55888e42016-07-18 10:01:36 -07005639 redraw();
caryclarkdac1d172014-06-17 05:15:38 -07005640 break;
5641 case addKey:
5642 draw_add ^= true;
caryclark55888e42016-07-18 10:01:36 -07005643 redraw();
caryclarkdac1d172014-06-17 05:15:38 -07005644 break;
5645 case angleKey:
caryclark54359292015-03-26 07:52:43 -07005646 draw_angle = (draw_angle + 1) % 4;
caryclarkdac1d172014-06-17 05:15:38 -07005647 redraw();
5648 break;
5649 case angleBackKey:
5650 draw_angle = (draw_angle + 2) % 3;
5651 redraw();
5652 break;
5653 case centerKey:
5654 setScale(xmin, xmax, ymin, ymax);
caryclark55888e42016-07-18 10:01:36 -07005655 redraw();
caryclarkdac1d172014-06-17 05:15:38 -07005656 break;
caryclark624637c2015-05-11 07:21:27 -07005657 case coincidenceKey:
5658 draw_coincidence ^= true;
5659 redraw();
5660 break;
caryclarkdac1d172014-06-17 05:15:38 -07005661 case controlLinesBackKey:
5662 control_lines = (control_lines + 3) % 4;
caryclark55888e42016-07-18 10:01:36 -07005663 redraw();
caryclarkdac1d172014-06-17 05:15:38 -07005664 break;
5665 case controlLinesKey:
5666 control_lines = (control_lines + 1) % 4;
caryclark55888e42016-07-18 10:01:36 -07005667 redraw();
caryclarkdac1d172014-06-17 05:15:38 -07005668 break;
5669 case computedBackKey:
5670 draw_computed = (draw_computed + 5) % 6;
caryclark55888e42016-07-18 10:01:36 -07005671 redraw();
caryclarkdac1d172014-06-17 05:15:38 -07005672 break;
5673 case computedKey:
5674 draw_computed = (draw_computed + 1) % 6;
caryclark55888e42016-07-18 10:01:36 -07005675 redraw();
caryclarkdac1d172014-06-17 05:15:38 -07005676 break;
5677 case curveTKey:
5678 curve_t ^= true;
5679 if (curve_t) {
5680 draw_legend = true;
5681 }
5682 redraw();
5683 break;
5684 case deriviativesKey:
5685 draw_deriviatives = (draw_deriviatives + 1) % 3;
5686 redraw();
5687 break;
5688 case focusKey:
5689 focus_on_selection ^= true;
5690 setScale(xmin, xmax, ymin, ymax);
5691 redraw();
5692 break;
caryclarkdac1d172014-06-17 05:15:38 -07005693 case idKey:
5694 draw_id ^= true;
5695 redraw();
5696 break;
5697 case intersectionBackKey:
5698 draw_intersection = (draw_intersection + 3) % 4;
caryclark55888e42016-07-18 10:01:36 -07005699 redraw();
caryclarkdac1d172014-06-17 05:15:38 -07005700 break;
5701 case intersectionKey:
5702 draw_intersection = (draw_intersection + 1) % 4;
caryclark55888e42016-07-18 10:01:36 -07005703 redraw();
caryclarkdac1d172014-06-17 05:15:38 -07005704 break;
5705 case intersectTKey:
5706 draw_intersectT ^= true;
5707 redraw();
5708 break;
5709 case logCurvesKey:
5710 logCurves(tests[testIndex]);
5711 break;
5712 case logKey:
5713 draw_log ^= true;
5714 redraw();
5715 break;
5716 case logToConsoleKey:
5717 if (draw_log) {
5718 dumpLogToConsole();
5719 }
5720 break;
5721 case markKey:
5722 draw_mark ^= true;
5723 redraw();
5724 break;
5725 case midpointKey:
5726 draw_midpoint ^= true;
5727 redraw();
5728 break;
5729 case opKey:
5730 draw_op = (draw_op + 1) % 3;
5731 redraw();
5732 break;
5733 case opBackKey:
5734 draw_op = (draw_op + 2) % 3;
5735 redraw();
5736 break;
5737 case pathKey:
caryclark26ad22a2015-10-16 09:03:38 -07005738 draw_path = (draw_path + 1) % (4 + (hasAlignedPath ? 3 : 0));
caryclark55888e42016-07-18 10:01:36 -07005739 redraw();
caryclarkdac1d172014-06-17 05:15:38 -07005740 break;
5741 case pathBackKey:
caryclark26ad22a2015-10-16 09:03:38 -07005742 draw_path = (draw_path + 3 + (hasAlignedPath ? 3 : 0)) % (4 + (hasAlignedPath ? 3 : 0));
caryclark55888e42016-07-18 10:01:36 -07005743 redraw();
caryclarkdac1d172014-06-17 05:15:38 -07005744 break;
5745 case ptsKey:
5746 pt_labels = (pt_labels + 1) % 3;
5747 redraw();
5748 break;
5749 case retinaKey:
5750 retina_scale ^= true;
5751 drawTop();
5752 break;
5753 case sequenceKey:
5754 draw_sequence ^= true;
5755 redraw();
5756 break;
5757 case sortKey:
5758 draw_sort = (draw_sort + 1) % 3;
5759 drawTop();
5760 break;
5761 case stepKey:
5762 step_limit++;
5763 if (step_limit > stepMax) {
5764 step_limit = stepMax;
5765 }
5766 redraw();
5767 break;
5768 case stepBackKey:
5769 step_limit--;
5770 if (step_limit < 0) {
5771 step_limit = 0;
5772 }
5773 redraw();
5774 break;
caryclark03b03ca2015-04-23 09:13:37 -07005775 case topKey:
5776 draw_top ^= true;
5777 redraw();
5778 break;
caryclarkdac1d172014-06-17 05:15:38 -07005779 case xyKey:
5780 debug_xy = (debug_xy + 1) % 3;
5781 redraw();
5782 break;
5783 case '-':
5784 focusWasOn = focus_on_selection;
5785 if (focusWasOn) {
5786 focus_on_selection = false;
5787 scale /= 1.2;
5788 } else {
5789 scale /= 2;
5790 calcLeftTop();
5791 }
5792 redraw();
5793 focus_on_selection = focusWasOn;
5794 break;
5795 case '=':
5796 case '+':
5797 focusWasOn = focus_on_selection;
5798 if (focusWasOn) {
5799 focus_on_selection = false;
5800 scale *= 1.2;
5801 } else {
5802 scale *= 2;
5803 calcLeftTop();
5804 }
5805 redraw();
5806 focus_on_selection = focusWasOn;
5807 break;
5808 case '?':
5809 draw_hints ^= true;
5810 if (draw_hints && !draw_legend) {
5811 draw_legend = true;
5812 }
5813 redraw();
5814 break;
5815 case '/':
5816 draw_legend ^= true;
5817 redraw();
5818 break;
5819 }
5820}
5821
5822function doKeyDown(evt) {
5823 var char = evt.keyCode;
5824 var preventDefault = false;
5825 switch (char) {
5826 case 37: // left arrow
5827 if (evt.shiftKey) {
5828 testIndex -= 9;
5829 }
5830 if (--testIndex < 0)
5831 testIndex = tests.length - 1;
5832 drawTop();
5833 preventDefault = true;
5834 break;
5835 case 39: // right arrow
5836 if (evt.shiftKey) {
5837 testIndex += 9;
5838 }
5839 if (++testIndex >= tests.length)
5840 testIndex = 0;
5841 drawTop();
5842 preventDefault = true;
5843 break;
5844 }
5845 if (preventDefault) {
5846 evt.preventDefault();
5847 return false;
5848 }
5849 return true;
5850}
5851
5852(function() {
5853 var hidden = "hidden";
5854
5855 // Standards:
5856 if (hidden in document)
5857 document.addEventListener("visibilitychange", onchange);
5858 else if ((hidden = "mozHidden") in document)
5859 document.addEventListener("mozvisibilitychange", onchange);
5860 else if ((hidden = "webkitHidden") in document)
5861 document.addEventListener("webkitvisibilitychange", onchange);
5862 else if ((hidden = "msHidden") in document)
5863 document.addEventListener("msvisibilitychange", onchange);
5864 // IE 9 and lower:
5865 else if ('onfocusin' in document)
5866 document.onfocusin = document.onfocusout = onchange;
5867 // All others:
5868 else
caryclark55888e42016-07-18 10:01:36 -07005869 window.onpageshow = window.onpagehide
caryclarkdac1d172014-06-17 05:15:38 -07005870 = window.onfocus = window.onblur = onchange;
5871
5872 function onchange (evt) {
5873 var v = 'visible', h = 'hidden',
caryclark55888e42016-07-18 10:01:36 -07005874 evtMap = {
5875 focus:v, focusin:v, pageshow:v, blur:h, focusout:h, pagehide:h
caryclarkdac1d172014-06-17 05:15:38 -07005876 };
5877
5878 evt = evt || window.event;
5879 if (evt.type in evtMap)
5880 document.body.className = evtMap[evt.type];
caryclark55888e42016-07-18 10:01:36 -07005881 else
caryclarkdac1d172014-06-17 05:15:38 -07005882 document.body.className = this[hidden] ? "hidden" : "visible";
5883 }
5884})();
5885
5886function calcXY() {
5887 var e = window.event;
caryclark55888e42016-07-18 10:01:36 -07005888 var tgt = e.target || e.srcElement;
caryclarkdac1d172014-06-17 05:15:38 -07005889 var left = tgt.offsetLeft;
5890 var top = tgt.offsetTop;
5891 mouseX = (e.clientX - left) / scale + srcLeft;
5892 mouseY = (e.clientY - top) / scale + srcTop;
5893}
5894
5895function calcLeftTop() {
5896 srcLeft = mouseX - screenWidth / 2 / scale;
5897 srcTop = mouseY - screenHeight / 2 / scale;
5898}
5899
5900var disableClick = false;
5901
5902function handleMouseClick() {
5903 if (disableClick) {
5904 return;
5905 }
5906 if (!curve_t || !ptInTControl()) {
5907 calcXY();
5908 calcLeftTop();
5909 }
5910 redraw();
5911// if (!curve_t || !ptInTControl()) {
5912// mouseX = screenWidth / 2 / scale + srcLeft;
5913// mouseY = screenHeight / 2 / scale + srcTop;
5914// }
5915}
5916
5917function handleMouseOver() {
5918 calcXY();
5919 if (debug_xy != 2) {
5920 return;
5921 }
5922 var num = mouseX.toFixed(decimal_places) + ", " + mouseY.toFixed(decimal_places);
5923 ctx.beginPath();
5924 ctx.rect(300,100,num.length * 6,10);
5925 ctx.fillStyle="white";
5926 ctx.fill();
5927 ctx.font = "normal 10px Arial";
5928 ctx.fillStyle="black";
5929 ctx.textAlign = "left";
5930 ctx.fillText(num, 300, 108);
5931}
5932
5933function start() {
5934 for (var i = 0; i < testDivs.length; ++i) {
5935 tests[i] = null;
5936 }
5937 testIndex = 0;
5938 drawTop();
5939 window.addEventListener('keypress', doKeyPress, true);
5940 window.addEventListener('keydown', doKeyDown, true);
5941 window.onresize = function() {
5942 drawTop();
5943 }
5944 /*
5945 window.onpagehide = function() {
5946 disableClick = true;
5947 }
5948 */
5949 window.onpageshow = function () {
5950 disableClick = false;
5951 }
5952}
5953
5954</script>
5955</head>
5956
5957<body onLoad="start();">
5958<canvas id="canvas" width="750" height="500"
5959 onmousemove="handleMouseOver()"
5960 onclick="handleMouseClick()"
5961 ></canvas >
5962</body>
5963</html>