|
|
|
@ -1,217 +1,217 @@
|
|
|
|
|
<html>
|
|
|
|
|
<head>
|
|
|
|
|
<div height="0" hidden="true">
|
|
|
|
|
|
|
|
|
|
Skia UnitTests: --match PathOpsOp$ --resourcePath resources\ SK_DEBUG
|
|
|
|
|
<div id="android1">
|
|
|
|
|
seg=1 {{{-5, 0}, {1075, 0}}}
|
|
|
|
|
seg=2 {{{1075, 0}, {1075, 242}}}
|
|
|
|
|
seg=3 {{{1075, 242}, {-5, 242}}}
|
|
|
|
|
seg=4 {{{-5, 242}, {-5, 0}}}
|
|
|
|
|
op sect
|
|
|
|
|
seg=5 {{{0, 0}, {1080, 0}}}
|
|
|
|
|
seg=6 {{{1080, 0}, {1080, 242}}}
|
|
|
|
|
seg=7 {{{1080, 242}, {0, 242}}}
|
|
|
|
|
seg=8 {{{0, 242}, {0, 0}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{1075,0}, {1075,242}}} {{1075,0}} wnTs[0]=1 {{{-5,0}, {1075,0}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=1 {{{-5,242}, {-5,0}}} {{-5,0}} wnTs[0]=0 {{{-5,0}, {1075,0}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{1075,242}, {-5,242}}} {{1075,242}} wnTs[0]=1 {{{1075,0}, {1075,242}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{-5,242}, {-5,0}}} {{-5,242}} wnTs[0]=1 {{{1075,242}, {-5,242}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{0,0}, {1080,0}}} {{0,0}} wtTs[1]=0.99537037 {{1075,0}} wnTs[0]=0.00462963 {{{-5,0}, {1075,0}}} wnTs[1]=1
|
|
|
|
|
SkOpSegment::addT insert t=0.00462962963 segID=1 spanID=17
|
|
|
|
|
SkOpSegment::addT insert t=0.99537037 segID=5 spanID=18
|
|
|
|
|
debugShowLineIntersection wtTs[0]=1 {{{0,242}, {0,0}}} {{0,0}} wnTs[0]=0.00462963 {{{-5,0}, {1075,0}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0.99537037 {{{0,0}, {1080,0}}} {{1075,0}} wnTs[0]=0 {{{1075,0}, {1075,242}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0.00462962963 {{{1080,242}, {0,242}}} {{1075,242}} wnTs[0]=1 {{{1075,0}, {1075,242}}}
|
|
|
|
|
SkOpSegment::addT insert t=0.00462962963 segID=7 spanID=19
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0.00462962963 {{{1080,242}, {0,242}}} {{1075,242}} wtTs[1]=1 {{0,242}} wnTs[0]=0 {{{1075,242}, {-5,242}}} wnTs[1]=0.99537037
|
|
|
|
|
SkOpSegment::addT insert t=0.99537037 segID=3 spanID=20
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{0,242}, {0,0}}} {{0,242}} wnTs[0]=0.99537 {{{1075,242}, {-5,242}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{1080,0}, {1080,242}}} {{1080,0}} wnTs[0]=1 {{{0,0}, {1080,0}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=1 {{{0,242}, {0,0}}} {{0,0}} wnTs[0]=0 {{{0,0}, {1080,0}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{1080,242}, {0,242}}} {{1080,242}} wnTs[0]=1 {{{1080,0}, {1080,242}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{0,242}, {0,0}}} {{0,242}} wnTs[0]=1 {{{1080,242}, {0,242}}}
|
|
|
|
|
------------------x--x---------------- addExpanded
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=1 (-5,0 -8.8817842e-16,0) t=0 tEnd=0.00462962963 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=1 (-8.8817842e-16,0 1075,0) t=0.00462962963 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=2 (1075,0 1075,242) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=3 (1075,242 2.22044605e-14,242) t=0 tEnd=0.99537037 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=3 (2.22044605e-14,242 -5,242) t=0.99537037 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=4 (-5,242 -5,0) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=5 (0,0 1075,0) t=0 tEnd=0.99537037 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=5 (1075,0 1080,0) t=0.99537037 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=6 (1080,0 1080,242) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=7 (1080,242 1075,242) t=0 tEnd=0.00462962963 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=7 (1075,242 0,242) t=0.00462962963 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=8 (0,242 0,0) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
------------------x--x---------------- move_multiples
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
------------------x--x---------------- move_nearby
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
------------------x--x---------------- correctEnds
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
------------------x--x---------------- addEndMovedSpans
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
------------------x--x---------------- expand
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
------------------x--x---------------- addExpanded
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
------------------x--x---------------- mark
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
-------------------------------------- missing_coincidence
|
|
|
|
|
-------------------------------------- expand
|
|
|
|
|
-------------------------------------- expand
|
|
|
|
|
-------------------------------------- apply
|
|
|
|
|
SkOpSegment::markDone id=7 (1080,242 0,242) t=0.00462962963 [19] (1075,242) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
|
|
|
|
|
SkOpSegment::markDone id=5 (0,0 1080,0) t=0 [9] (0,0) tEnd=0.99537037 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
|
|
|
|
|
-------------------------------------- findOverlaps
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=1 (-5,0 -8.8817842e-16,0) t=0 tEnd=0.00462962963 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=1 (-8.8817842e-16,0 1075,0) t=0.00462962963 tEnd=1 windSum=? oppSum=? windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=2 (1075,0 1075,242) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=3 (1075,242 2.22044605e-14,242) t=0 tEnd=0.99537037 windSum=? oppSum=? windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=3 (2.22044605e-14,242 -5,242) t=0.99537037 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=4 (-5,242 -5,0) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=5 (1075,0 1080,0) t=0.99537037 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=6 (1080,0 1080,242) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=7 (1080,242 1075,242) t=0 tEnd=0.00462962963 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=8 (0,242 0,0) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
-------------------------------------- calc_angles
|
|
|
|
|
SkOpSegment::sortAngles [1] tStart=0.00462962963 [17]
|
|
|
|
|
SkOpAngle::after [1/1] 15/15 tStart=0.00462962963 tEnd=0 < [8/12] 23/23 tStart=1 tEnd=0 < [1/2] 31/31 tStart=0.00462962963 tEnd=1 T 4
|
|
|
|
|
SkOpAngle::afterPart {{{0,0}, {-5,0}}} id=1
|
|
|
|
|
SkOpAngle::afterPart {{{0,0}, {0,242}}} id=8
|
|
|
|
|
SkOpAngle::afterPart {{{0,0}, {1075,0}}} id=1
|
|
|
|
|
SkOpSegment::sortAngles [1] tStart=1 [2]
|
|
|
|
|
SkOpAngle::after [1/3] 15/15 tStart=1 tEnd=0.00462962963 < [2/4] 23/23 tStart=0 tEnd=1 < [5/9] 31/31 tStart=0.99537037 tEnd=1 T 4
|
|
|
|
|
SkOpAngle::afterPart {{{1075,0}, {-8.8817842e-16,0}}} id=1
|
|
|
|
|
SkOpAngle::afterPart {{{1075,0}, {1075,242}}} id=2
|
|
|
|
|
SkOpAngle::afterPart {{{1075,0}, {1080,0}}} id=5
|
|
|
|
|
SkOpSegment::sortAngles [2] tStart=0 [3]
|
|
|
|
|
SkOpSegment::sortAngles [2] tStart=1 [4]
|
|
|
|
|
SkOpAngle::after [2/5] 7/7 tStart=1 tEnd=0 < [3/6] 15/15 tStart=0 tEnd=0.99537037 < [7/10] 31/31 tStart=0.00462962963 tEnd=0 T 4
|
|
|
|
|
SkOpAngle::afterPart {{{1075,242}, {1075,0}}} id=2
|
|
|
|
|
SkOpAngle::afterPart {{{1075,242}, {2.22044605e-14,242}}} id=3
|
|
|
|
|
SkOpAngle::afterPart {{{1075,242}, {1080,242}}} id=7
|
|
|
|
|
SkOpSegment::sortAngles [3] tStart=0 [5]
|
|
|
|
|
SkOpSegment::sortAngles [3] tStart=0.99537037 [20]
|
|
|
|
|
SkOpAngle::after [3/7] 31/31 tStart=0.99537037 tEnd=0 < [8/11] 7/7 tStart=0 tEnd=1 < [3/8] 15/15 tStart=0.99537037 tEnd=1 T 4
|
|
|
|
|
SkOpAngle::afterPart {{{0,242}, {1075,242}}} id=3
|
|
|
|
|
SkOpAngle::afterPart {{{0,242}, {0,0}}} id=8
|
|
|
|
|
SkOpAngle::afterPart {{{0,242}, {-5,242}}} id=3
|
|
|
|
|
SkOpSegment::sortAngles [5] tStart=0.99537037 [18]
|
|
|
|
|
SkOpSegment::sortAngles [7] tStart=0.00462962963 [19]
|
|
|
|
|
SkOpSegment::sortAngles [8] tStart=0 [15]
|
|
|
|
|
SkOpSegment::sortAngles [8] tStart=1 [16]
|
|
|
|
|
coinSpan - id=3 t=0 tEnd=0.99537037
|
|
|
|
|
coinSpan + id=7 t=0.00462962963 tEnd=1
|
|
|
|
|
coinSpan - id=1 t=0.00462962963 tEnd=1
|
|
|
|
|
coinSpan + id=5 t=0 tEnd=0.99537037
|
|
|
|
|
SkOpSpan::sortableTop dir=kTop seg=1 t=0.00231481481 pt=(-2.5,0)
|
|
|
|
|
SkOpSpan::sortableTop [0] valid=1 operand=0 span=1 ccw=1 seg=1 {{{-5, 0}, {1075, 0}}} t=0.00231481481 pt=(-2.5,0) slope=(1080,0)
|
|
|
|
|
SkOpSegment::markWinding id=1 (-5,0 1075,0) t=0 [1] (-5,0) tEnd=0.00462962963 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markWinding id=1 (-5,0 1075,0) t=0 [1] (-5,0) tEnd=0.00462962963 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markWinding id=4 (-5,242 -5,0) t=0 [7] (-5,242) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markWinding id=3 (1075,242 -5,242) t=0.99537037 [20] (2.22044605e-14,242) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::activeOp id=1 t=0.00462962963 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
|
|
|
|
|
SkOpSegment::markDone id=1 (-5,0 1075,0) t=0 [1] (-5,0) tEnd=0.00462962963 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markDone id=4 (-5,242 -5,0) t=0 [7] (-5,242) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markDone id=3 (1075,242 -5,242) t=0.99537037 [20] (2.22044605e-14,242) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
bridgeOp chase.append id=3 windSum=-1
|
|
|
|
|
SkOpSegment::markWinding id=3 (1075,242 -5,242) t=0 [5] (1075,242) tEnd=0.99537037 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::markAngle last segment=3 span=5 windSum=-1
|
|
|
|
|
SkOpSegment::markWinding id=8 (0,242 0,0) t=0 [15] (0,242) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markAngle last segment=8 span=16
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=1 (-8.8817842e-16,0 1075,0) t=0.00462962963 tEnd=1 windSum=? oppSum=? windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=2 (1075,0 1075,242) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=3 (1075,242 2.22044605e-14,242) t=0 tEnd=0.99537037 windSum=-1 oppSum=-1 windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=5 (1075,0 1080,0) t=0.99537037 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=6 (1080,0 1080,242) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=7 (1080,242 1075,242) t=0 tEnd=0.00462962963 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=8 (0,242 0,0) t=0 tEnd=1 windSum=-1 oppSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::activeOp id=3 t=0.99537037 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=0 suTo=1 result=1
|
|
|
|
|
SkOpSegment::markWinding id=7 (1080,242 0,242) t=0 [13] (1080,242) tEnd=0.00462962963 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markWinding id=6 (1080,0 1080,242) t=0 [11] (1080,0) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markWinding id=5 (0,0 1080,0) t=0.99537037 [18] (1075,0) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markAngle last segment=5 span=18 windSum=-1
|
|
|
|
|
SkOpSegment::markWinding id=2 (1075,0 1075,242) t=0 [3] (1075,0) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markAngle last segment=2 span=3 windSum=-1
|
|
|
|
|
SkOpSegment::findNextOp
|
|
|
|
|
SkOpAngle::dumpOne [3/6] next=7/10 sect=15/15 s=0 [5] e=0.99537037 [20] sgn=-1 windVal=1 windSum=-1 oppVal=1 oppSum=-1
|
|
|
|
|
SkOpAngle::dumpOne [7/10] next=2/5 sect=31/31 s=0.00462962963 [19] e=0 [13] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
|
|
|
|
|
SkOpAngle::dumpOne [2/5] next=3/6 sect=7/7 s=1 [4] e=0 [3] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
|
|
|
|
|
SkOpSegment::activeOp id=7 t=0.00462962963 tEnd=0 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
|
|
|
|
|
SkOpSegment::markDone id=7 (1080,242 0,242) t=0 [13] (1080,242) tEnd=0.00462962963 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markDone id=6 (1080,0 1080,242) t=0 [11] (1080,0) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markDone id=5 (0,0 1080,0) t=0.99537037 [18] (1075,0) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::findNextOp chase.append segment=5 span=18 windSum=-1
|
|
|
|
|
SkOpSegment::activeOp id=2 t=1 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
|
|
|
|
|
SkOpSegment::findNextOp chase.append segment=2 span=3 windSum=-1
|
|
|
|
|
SkOpSegment::markDone id=3 (1075,242 -5,242) t=0 [5] (1075,242) tEnd=0.99537037 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::findNextOp from:[3] to:[2] start=90366152 end=90366008
|
|
|
|
|
bridgeOp current id=3 from=(2.22044605e-14,242) to=(1075,242)
|
|
|
|
|
SkOpSegment::markWinding id=1 (-5,0 1075,0) t=0.00462962963 [17] (-8.8817842e-16,0) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::markAngle last segment=1 span=17 windSum=-1
|
|
|
|
|
SkOpSegment::findNextOp
|
|
|
|
|
SkOpAngle::dumpOne [2/4] next=5/9 sect=23/23 s=0 [3] e=1 [4] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
|
|
|
|
|
SkOpAngle::dumpOne [5/9] next=1/3 sect=31/31 s=0.99537037 [18] e=1 [10] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
|
|
|
|
|
SkOpAngle::dumpOne [1/3] next=2/4 sect=15/15 s=1 [2] e=0.00462962963 [17] sgn=1 windVal=1 windSum=-1 oppVal=1 oppSum=-1
|
|
|
|
|
SkOpSegment::activeOp id=5 t=0.99537037 tEnd=1 op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
|
|
|
|
|
SkOpSegment::activeOp id=1 t=1 tEnd=0.00462962963 op=sect miFrom=0 miTo=1 suFrom=0 suTo=1 result=1
|
|
|
|
|
SkOpSegment::findNextOp chase.append segment=1 span=17 windSum=-1
|
|
|
|
|
SkOpSegment::markDone id=2 (1075,0 1075,242) t=0 [3] (1075,0) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::findNextOp from:[2] to:[1] start=90365736 end=90368360
|
|
|
|
|
bridgeOp current id=2 from=(1075,242) to=(1075,0)
|
|
|
|
|
path.moveTo(2.22044605e-14,242);
|
|
|
|
|
path.lineTo(1075,242);
|
|
|
|
|
SkOpSegment::findNextOp
|
|
|
|
|
SkOpAngle::dumpOne [1/2] next=1/1 sect=31/31 s=0.00462962963 [17] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=1 oppSum=-1
|
|
|
|
|
SkOpAngle::dumpOne [1/1] next=8/12 sect=15/15 s=0.00462962963 [17] e=0 [1] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
|
|
|
|
|
SkOpAngle::dumpOne [8/12] next=1/2 sect=23/23 s=1 [16] e=0 [15] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
|
|
|
|
|
SkOpSegment::activeOp id=1 t=0.00462962963 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
|
|
|
|
|
SkOpSegment::activeOp id=8 t=1 tEnd=0 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
|
|
|
|
|
SkOpSegment::markDone id=1 (-5,0 1075,0) t=0.00462962963 [17] (-8.8817842e-16,0) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::findNextOp from:[1] to:[8] start=90368192 end=90368048
|
|
|
|
|
bridgeOp current id=1 from=(1075,0) to=(-8.8817842e-16,0)
|
|
|
|
|
path.lineTo(1075,0);
|
|
|
|
|
SkOpSegment::findNextOp
|
|
|
|
|
SkOpAngle::dumpOne [8/11] next=3/8 sect=7/7 s=0 [15] e=1 [16] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
|
|
|
|
|
SkOpAngle::dumpOne [3/8] next=3/7 sect=15/15 s=0.99537037 [20] e=1 [6] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
|
|
|
|
|
SkOpAngle::dumpOne [3/7] next=8/11 sect=31/31 s=0.99537037 [20] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=1 oppSum=-1 done
|
|
|
|
|
SkOpSegment::activeOp id=3 t=0.99537037 tEnd=1 op=sect miFrom=1 miTo=0 suFrom=0 suTo=0 result=0
|
|
|
|
|
SkOpSegment::activeOp id=3 t=0.99537037 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=0 suTo=1 result=1
|
|
|
|
|
SkOpSegment::markDone id=8 (0,242 0,0) t=0 [15] (0,242) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::findNextOp from:[8] to:[3] start=90368840 end=90366336
|
|
|
|
|
bridgeOp current id=8 from=(0,0) to=(0,242)
|
|
|
|
|
path.lineTo(-8.8817842e-16,0);
|
|
|
|
|
path.lineTo(0,242);
|
|
|
|
|
path.close();
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Skia UnitTests: --match PathOpsOp$ --resourcePath resources\ SK_DEBUG
|
|
|
|
|
<div id="android1">
|
|
|
|
|
seg=1 {{{-5, 0}, {1075, 0}}}
|
|
|
|
|
seg=2 {{{1075, 0}, {1075, 242}}}
|
|
|
|
|
seg=3 {{{1075, 242}, {-5, 242}}}
|
|
|
|
|
seg=4 {{{-5, 242}, {-5, 0}}}
|
|
|
|
|
op sect
|
|
|
|
|
seg=5 {{{0, 0}, {1080, 0}}}
|
|
|
|
|
seg=6 {{{1080, 0}, {1080, 242}}}
|
|
|
|
|
seg=7 {{{1080, 242}, {0, 242}}}
|
|
|
|
|
seg=8 {{{0, 242}, {0, 0}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{1075,0}, {1075,242}}} {{1075,0}} wnTs[0]=1 {{{-5,0}, {1075,0}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=1 {{{-5,242}, {-5,0}}} {{-5,0}} wnTs[0]=0 {{{-5,0}, {1075,0}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{1075,242}, {-5,242}}} {{1075,242}} wnTs[0]=1 {{{1075,0}, {1075,242}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{-5,242}, {-5,0}}} {{-5,242}} wnTs[0]=1 {{{1075,242}, {-5,242}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{0,0}, {1080,0}}} {{0,0}} wtTs[1]=0.99537037 {{1075,0}} wnTs[0]=0.00462963 {{{-5,0}, {1075,0}}} wnTs[1]=1
|
|
|
|
|
SkOpSegment::addT insert t=0.00462962963 segID=1 spanID=17
|
|
|
|
|
SkOpSegment::addT insert t=0.99537037 segID=5 spanID=18
|
|
|
|
|
debugShowLineIntersection wtTs[0]=1 {{{0,242}, {0,0}}} {{0,0}} wnTs[0]=0.00462963 {{{-5,0}, {1075,0}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0.99537037 {{{0,0}, {1080,0}}} {{1075,0}} wnTs[0]=0 {{{1075,0}, {1075,242}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0.00462962963 {{{1080,242}, {0,242}}} {{1075,242}} wnTs[0]=1 {{{1075,0}, {1075,242}}}
|
|
|
|
|
SkOpSegment::addT insert t=0.00462962963 segID=7 spanID=19
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0.00462962963 {{{1080,242}, {0,242}}} {{1075,242}} wtTs[1]=1 {{0,242}} wnTs[0]=0 {{{1075,242}, {-5,242}}} wnTs[1]=0.99537037
|
|
|
|
|
SkOpSegment::addT insert t=0.99537037 segID=3 spanID=20
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{0,242}, {0,0}}} {{0,242}} wnTs[0]=0.99537 {{{1075,242}, {-5,242}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{1080,0}, {1080,242}}} {{1080,0}} wnTs[0]=1 {{{0,0}, {1080,0}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=1 {{{0,242}, {0,0}}} {{0,0}} wnTs[0]=0 {{{0,0}, {1080,0}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{1080,242}, {0,242}}} {{1080,242}} wnTs[0]=1 {{{1080,0}, {1080,242}}}
|
|
|
|
|
debugShowLineIntersection wtTs[0]=0 {{{0,242}, {0,0}}} {{0,242}} wnTs[0]=1 {{{1080,242}, {0,242}}}
|
|
|
|
|
------------------x--x---------------- addExpanded
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=1 (-5,0 -8.8817842e-16,0) t=0 tEnd=0.00462962963 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=1 (-8.8817842e-16,0 1075,0) t=0.00462962963 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=2 (1075,0 1075,242) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=3 (1075,242 2.22044605e-14,242) t=0 tEnd=0.99537037 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=3 (2.22044605e-14,242 -5,242) t=0.99537037 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=4 (-5,242 -5,0) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=5 (0,0 1075,0) t=0 tEnd=0.99537037 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=5 (1075,0 1080,0) t=0.99537037 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=6 (1080,0 1080,242) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=7 (1080,242 1075,242) t=0 tEnd=0.00462962963 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=7 (1075,242 0,242) t=0.00462962963 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=8 (0,242 0,0) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
------------------x--x---------------- move_multiples
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
------------------x--x---------------- move_nearby
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
------------------x--x---------------- correctEnds
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
------------------x--x---------------- addEndMovedSpans
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
------------------x--x---------------- expand
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
------------------x--x---------------- addExpanded
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
------------------x--x---------------- mark
|
|
|
|
|
00: seg/base=3/5 seg/base=7/19 MarkCoinStart
|
|
|
|
|
01: seg/base=3/20 seg/base=7/14 MarkCoinEnd
|
|
|
|
|
02: seg/base=1/17 seg/base=5/9 MarkCoinStart
|
|
|
|
|
03: seg/base=1/2 seg/base=5/18 MarkCoinEnd
|
|
|
|
|
-------------------------------------- missing_coincidence
|
|
|
|
|
-------------------------------------- expand
|
|
|
|
|
-------------------------------------- expand
|
|
|
|
|
-------------------------------------- apply
|
|
|
|
|
SkOpSegment::markDone id=7 (1080,242 0,242) t=0.00462962963 [19] (1075,242) tEnd=1 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
|
|
|
|
|
SkOpSegment::markDone id=5 (0,0 1080,0) t=0 [9] (0,0) tEnd=0.99537037 newWindSum=? newOppSum=? oppSum=? windSum=? windValue=0 oppValue=0
|
|
|
|
|
-------------------------------------- findOverlaps
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=1 (-5,0 -8.8817842e-16,0) t=0 tEnd=0.00462962963 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=1 (-8.8817842e-16,0 1075,0) t=0.00462962963 tEnd=1 windSum=? oppSum=? windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=2 (1075,0 1075,242) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=3 (1075,242 2.22044605e-14,242) t=0 tEnd=0.99537037 windSum=? oppSum=? windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=3 (2.22044605e-14,242 -5,242) t=0.99537037 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=4 (-5,242 -5,0) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=5 (1075,0 1080,0) t=0.99537037 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=6 (1080,0 1080,242) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=7 (1080,242 1075,242) t=0 tEnd=0.00462962963 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=8 (0,242 0,0) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
-------------------------------------- calc_angles
|
|
|
|
|
SkOpSegment::sortAngles [1] tStart=0.00462962963 [17]
|
|
|
|
|
SkOpAngle::after [1/1] 15/15 tStart=0.00462962963 tEnd=0 < [8/12] 23/23 tStart=1 tEnd=0 < [1/2] 31/31 tStart=0.00462962963 tEnd=1 T 4
|
|
|
|
|
SkOpAngle::afterPart {{{0,0}, {-5,0}}} id=1
|
|
|
|
|
SkOpAngle::afterPart {{{0,0}, {0,242}}} id=8
|
|
|
|
|
SkOpAngle::afterPart {{{0,0}, {1075,0}}} id=1
|
|
|
|
|
SkOpSegment::sortAngles [1] tStart=1 [2]
|
|
|
|
|
SkOpAngle::after [1/3] 15/15 tStart=1 tEnd=0.00462962963 < [2/4] 23/23 tStart=0 tEnd=1 < [5/9] 31/31 tStart=0.99537037 tEnd=1 T 4
|
|
|
|
|
SkOpAngle::afterPart {{{1075,0}, {-8.8817842e-16,0}}} id=1
|
|
|
|
|
SkOpAngle::afterPart {{{1075,0}, {1075,242}}} id=2
|
|
|
|
|
SkOpAngle::afterPart {{{1075,0}, {1080,0}}} id=5
|
|
|
|
|
SkOpSegment::sortAngles [2] tStart=0 [3]
|
|
|
|
|
SkOpSegment::sortAngles [2] tStart=1 [4]
|
|
|
|
|
SkOpAngle::after [2/5] 7/7 tStart=1 tEnd=0 < [3/6] 15/15 tStart=0 tEnd=0.99537037 < [7/10] 31/31 tStart=0.00462962963 tEnd=0 T 4
|
|
|
|
|
SkOpAngle::afterPart {{{1075,242}, {1075,0}}} id=2
|
|
|
|
|
SkOpAngle::afterPart {{{1075,242}, {2.22044605e-14,242}}} id=3
|
|
|
|
|
SkOpAngle::afterPart {{{1075,242}, {1080,242}}} id=7
|
|
|
|
|
SkOpSegment::sortAngles [3] tStart=0 [5]
|
|
|
|
|
SkOpSegment::sortAngles [3] tStart=0.99537037 [20]
|
|
|
|
|
SkOpAngle::after [3/7] 31/31 tStart=0.99537037 tEnd=0 < [8/11] 7/7 tStart=0 tEnd=1 < [3/8] 15/15 tStart=0.99537037 tEnd=1 T 4
|
|
|
|
|
SkOpAngle::afterPart {{{0,242}, {1075,242}}} id=3
|
|
|
|
|
SkOpAngle::afterPart {{{0,242}, {0,0}}} id=8
|
|
|
|
|
SkOpAngle::afterPart {{{0,242}, {-5,242}}} id=3
|
|
|
|
|
SkOpSegment::sortAngles [5] tStart=0.99537037 [18]
|
|
|
|
|
SkOpSegment::sortAngles [7] tStart=0.00462962963 [19]
|
|
|
|
|
SkOpSegment::sortAngles [8] tStart=0 [15]
|
|
|
|
|
SkOpSegment::sortAngles [8] tStart=1 [16]
|
|
|
|
|
coinSpan - id=3 t=0 tEnd=0.99537037
|
|
|
|
|
coinSpan + id=7 t=0.00462962963 tEnd=1
|
|
|
|
|
coinSpan - id=1 t=0.00462962963 tEnd=1
|
|
|
|
|
coinSpan + id=5 t=0 tEnd=0.99537037
|
|
|
|
|
SkOpSpan::sortableTop dir=kTop seg=1 t=0.00231481481 pt=(-2.5,0)
|
|
|
|
|
SkOpSpan::sortableTop [0] valid=1 operand=0 span=1 ccw=1 seg=1 {{{-5, 0}, {1075, 0}}} t=0.00231481481 pt=(-2.5,0) slope=(1080,0)
|
|
|
|
|
SkOpSegment::markWinding id=1 (-5,0 1075,0) t=0 [1] (-5,0) tEnd=0.00462962963 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markWinding id=1 (-5,0 1075,0) t=0 [1] (-5,0) tEnd=0.00462962963 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markWinding id=4 (-5,242 -5,0) t=0 [7] (-5,242) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markWinding id=3 (1075,242 -5,242) t=0.99537037 [20] (2.22044605e-14,242) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::activeOp id=1 t=0.00462962963 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
|
|
|
|
|
SkOpSegment::markDone id=1 (-5,0 1075,0) t=0 [1] (-5,0) tEnd=0.00462962963 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markDone id=4 (-5,242 -5,0) t=0 [7] (-5,242) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markDone id=3 (1075,242 -5,242) t=0.99537037 [20] (2.22044605e-14,242) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
bridgeOp chase.append id=3 windSum=-1
|
|
|
|
|
SkOpSegment::markWinding id=3 (1075,242 -5,242) t=0 [5] (1075,242) tEnd=0.99537037 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::markAngle last segment=3 span=5 windSum=-1
|
|
|
|
|
SkOpSegment::markWinding id=8 (0,242 0,0) t=0 [15] (0,242) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markAngle last segment=8 span=16
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=1 (-8.8817842e-16,0 1075,0) t=0.00462962963 tEnd=1 windSum=? oppSum=? windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=2 (1075,0 1075,242) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=3 (1075,242 2.22044605e-14,242) t=0 tEnd=0.99537037 windSum=-1 oppSum=-1 windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=5 (1075,0 1080,0) t=0.99537037 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=6 (1080,0 1080,242) t=0 tEnd=1 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=7 (1080,242 1075,242) t=0 tEnd=0.00462962963 windSum=? windValue=1
|
|
|
|
|
SkOpSegment::debugShowActiveSpans id=8 (0,242 0,0) t=0 tEnd=1 windSum=-1 oppSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::activeOp id=3 t=0.99537037 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=0 suTo=1 result=1
|
|
|
|
|
SkOpSegment::markWinding id=7 (1080,242 0,242) t=0 [13] (1080,242) tEnd=0.00462962963 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markWinding id=6 (1080,0 1080,242) t=0 [11] (1080,0) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markWinding id=5 (0,0 1080,0) t=0.99537037 [18] (1075,0) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markAngle last segment=5 span=18 windSum=-1
|
|
|
|
|
SkOpSegment::markWinding id=2 (1075,0 1075,242) t=0 [3] (1075,0) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markAngle last segment=2 span=3 windSum=-1
|
|
|
|
|
SkOpSegment::findNextOp
|
|
|
|
|
SkOpAngle::dumpOne [3/6] next=7/10 sect=15/15 s=0 [5] e=0.99537037 [20] sgn=-1 windVal=1 windSum=-1 oppVal=1 oppSum=-1
|
|
|
|
|
SkOpAngle::dumpOne [7/10] next=2/5 sect=31/31 s=0.00462962963 [19] e=0 [13] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 operand
|
|
|
|
|
SkOpAngle::dumpOne [2/5] next=3/6 sect=7/7 s=1 [4] e=0 [3] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
|
|
|
|
|
SkOpSegment::activeOp id=7 t=0.00462962963 tEnd=0 op=sect miFrom=0 miTo=0 suFrom=0 suTo=1 result=0
|
|
|
|
|
SkOpSegment::markDone id=7 (1080,242 0,242) t=0 [13] (1080,242) tEnd=0.00462962963 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markDone id=6 (1080,0 1080,242) t=0 [11] (1080,0) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::markDone id=5 (0,0 1080,0) t=0.99537037 [18] (1075,0) tEnd=1 newWindSum=-1 newOppSum=0 oppSum=0 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::findNextOp chase.append segment=5 span=18 windSum=-1
|
|
|
|
|
SkOpSegment::activeOp id=2 t=1 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=1 suTo=1 result=1
|
|
|
|
|
SkOpSegment::findNextOp chase.append segment=2 span=3 windSum=-1
|
|
|
|
|
SkOpSegment::markDone id=3 (1075,242 -5,242) t=0 [5] (1075,242) tEnd=0.99537037 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::findNextOp from:[3] to:[2] start=90366152 end=90366008
|
|
|
|
|
bridgeOp current id=3 from=(2.22044605e-14,242) to=(1075,242)
|
|
|
|
|
SkOpSegment::markWinding id=1 (-5,0 1075,0) t=0.00462962963 [17] (-8.8817842e-16,0) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=? windSum=? windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::markAngle last segment=1 span=17 windSum=-1
|
|
|
|
|
SkOpSegment::findNextOp
|
|
|
|
|
SkOpAngle::dumpOne [2/4] next=5/9 sect=23/23 s=0 [3] e=1 [4] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1
|
|
|
|
|
SkOpAngle::dumpOne [5/9] next=1/3 sect=31/31 s=0.99537037 [18] e=1 [10] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done operand
|
|
|
|
|
SkOpAngle::dumpOne [1/3] next=2/4 sect=15/15 s=1 [2] e=0.00462962963 [17] sgn=1 windVal=1 windSum=-1 oppVal=1 oppSum=-1
|
|
|
|
|
SkOpSegment::activeOp id=5 t=0.99537037 tEnd=1 op=sect miFrom=0 miTo=0 suFrom=1 suTo=0 result=0
|
|
|
|
|
SkOpSegment::activeOp id=1 t=1 tEnd=0.00462962963 op=sect miFrom=0 miTo=1 suFrom=0 suTo=1 result=1
|
|
|
|
|
SkOpSegment::findNextOp chase.append segment=1 span=17 windSum=-1
|
|
|
|
|
SkOpSegment::markDone id=2 (1075,0 1075,242) t=0 [3] (1075,0) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::findNextOp from:[2] to:[1] start=90365736 end=90368360
|
|
|
|
|
bridgeOp current id=2 from=(1075,242) to=(1075,0)
|
|
|
|
|
path.moveTo(2.22044605e-14,242);
|
|
|
|
|
path.lineTo(1075,242);
|
|
|
|
|
SkOpSegment::findNextOp
|
|
|
|
|
SkOpAngle::dumpOne [1/2] next=1/1 sect=31/31 s=0.00462962963 [17] e=1 [2] sgn=-1 windVal=1 windSum=-1 oppVal=1 oppSum=-1
|
|
|
|
|
SkOpAngle::dumpOne [1/1] next=8/12 sect=15/15 s=0.00462962963 [17] e=0 [1] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
|
|
|
|
|
SkOpAngle::dumpOne [8/12] next=1/2 sect=23/23 s=1 [16] e=0 [15] sgn=1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
|
|
|
|
|
SkOpSegment::activeOp id=1 t=0.00462962963 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=0 suTo=0 result=0
|
|
|
|
|
SkOpSegment::activeOp id=8 t=1 tEnd=0 op=sect miFrom=1 miTo=1 suFrom=0 suTo=1 result=1
|
|
|
|
|
SkOpSegment::markDone id=1 (-5,0 1075,0) t=0.00462962963 [17] (-8.8817842e-16,0) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=1
|
|
|
|
|
SkOpSegment::findNextOp from:[1] to:[8] start=90368192 end=90368048
|
|
|
|
|
bridgeOp current id=1 from=(1075,0) to=(-8.8817842e-16,0)
|
|
|
|
|
path.lineTo(1075,0);
|
|
|
|
|
SkOpSegment::findNextOp
|
|
|
|
|
SkOpAngle::dumpOne [8/11] next=3/8 sect=7/7 s=0 [15] e=1 [16] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=-1 operand
|
|
|
|
|
SkOpAngle::dumpOne [3/8] next=3/7 sect=15/15 s=0.99537037 [20] e=1 [6] sgn=-1 windVal=1 windSum=-1 oppVal=0 oppSum=0 done
|
|
|
|
|
SkOpAngle::dumpOne [3/7] next=8/11 sect=31/31 s=0.99537037 [20] e=0 [5] sgn=1 windVal=1 windSum=-1 oppVal=1 oppSum=-1 done
|
|
|
|
|
SkOpSegment::activeOp id=3 t=0.99537037 tEnd=1 op=sect miFrom=1 miTo=0 suFrom=0 suTo=0 result=0
|
|
|
|
|
SkOpSegment::activeOp id=3 t=0.99537037 tEnd=0 op=sect miFrom=0 miTo=1 suFrom=0 suTo=1 result=1
|
|
|
|
|
SkOpSegment::markDone id=8 (0,242 0,0) t=0 [15] (0,242) tEnd=1 newWindSum=-1 newOppSum=-1 oppSum=-1 windSum=-1 windValue=1 oppValue=0
|
|
|
|
|
SkOpSegment::findNextOp from:[8] to:[3] start=90368840 end=90366336
|
|
|
|
|
bridgeOp current id=8 from=(0,0) to=(0,242)
|
|
|
|
|
path.lineTo(-8.8817842e-16,0);
|
|
|
|
|
path.lineTo(0,242);
|
|
|
|
|
path.close();
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<script type="text/javascript">
|
|
|
|
@ -2226,9 +2226,9 @@ function dxy_at_t(curve, type, t) {
|
|
|
|
|
return dxy;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function dpt_at_t(curve, t) {
|
|
|
|
|
function dpt_at_t(curve, t) {
|
|
|
|
|
var type = PATH_LINE + (curve.length / 2 - 2);
|
|
|
|
|
return dxy_at_t(curve, type, t);
|
|
|
|
|
return dxy_at_t(curve, type, t);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function drawLabel(num, px, py) {
|
|
|
|
@ -2346,11 +2346,11 @@ function y_at_t(curve, t) {
|
|
|
|
|
return a * curve[1] + b * curve[3] + c * curve[5] + d * curve[7];
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function pt_at_t(curve, t) {
|
|
|
|
|
var pt = {};
|
|
|
|
|
pt.x = x_at_t(curve, t);
|
|
|
|
|
pt.y = y_at_t(curve, t);
|
|
|
|
|
return pt;
|
|
|
|
|
function pt_at_t(curve, t) {
|
|
|
|
|
var pt = {};
|
|
|
|
|
pt.x = x_at_t(curve, t);
|
|
|
|
|
pt.y = y_at_t(curve, t);
|
|
|
|
|
return pt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function drawOrder(curve, t, label) {
|
|
|
|
@ -2377,59 +2377,59 @@ function drawOrder(curve, t, label) {
|
|
|
|
|
ctx.font = "normal 10px Arial";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function drawVisibleOrder(curve, label) {
|
|
|
|
|
var s = pt_at_t(curve, 0);
|
|
|
|
|
var e = pt_at_t(curve, 1);
|
|
|
|
|
var sOn = ptOnScreen(s);
|
|
|
|
|
var eOn = ptOnScreen(e);
|
|
|
|
|
var defaultT = 0.85;
|
|
|
|
|
if (sOn && eOn)
|
|
|
|
|
return drawOrder(curve, defaultT, label);
|
|
|
|
|
if (sOn || eOn) {
|
|
|
|
|
if (eOn) {
|
|
|
|
|
defaultT = 1 - defaultT;
|
|
|
|
|
}
|
|
|
|
|
var step = sOn ? -defaultT / 2 : (1 - defaultT) / 2;
|
|
|
|
|
var t = defaultT;
|
|
|
|
|
var tries = 16;
|
|
|
|
|
do {
|
|
|
|
|
var mid = pt_at_t(curve, t);
|
|
|
|
|
if (ptOnScreen(mid))
|
|
|
|
|
return drawOrder(curve, t, label);
|
|
|
|
|
t += step;
|
|
|
|
|
step /= 2;
|
|
|
|
|
} while (--tries > 0);
|
|
|
|
|
drawOrder(curve, defaultT, label);
|
|
|
|
|
}
|
|
|
|
|
// scattershot until we find a visible point
|
|
|
|
|
var denom = 2; // visit odd number num / denom to hit unique pts
|
|
|
|
|
var tries = 6; // tries 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, 1/16 ...
|
|
|
|
|
do {
|
|
|
|
|
for (var numer = 1; numer < denom; numer += 2) {
|
|
|
|
|
var t = numer / denom + 0.1;
|
|
|
|
|
if (t >= 1) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
var mid = pt_at_t(curve, t);
|
|
|
|
|
if (ptOnScreen(mid))
|
|
|
|
|
return drawOrder(curve, t, label);
|
|
|
|
|
}
|
|
|
|
|
denom *= 2;
|
|
|
|
|
} while (--tries > 0);
|
|
|
|
|
drawOrder(curve, defaultT, label);
|
|
|
|
|
function drawVisibleOrder(curve, label) {
|
|
|
|
|
var s = pt_at_t(curve, 0);
|
|
|
|
|
var e = pt_at_t(curve, 1);
|
|
|
|
|
var sOn = ptOnScreen(s);
|
|
|
|
|
var eOn = ptOnScreen(e);
|
|
|
|
|
var defaultT = 0.85;
|
|
|
|
|
if (sOn && eOn)
|
|
|
|
|
return drawOrder(curve, defaultT, label);
|
|
|
|
|
if (sOn || eOn) {
|
|
|
|
|
if (eOn) {
|
|
|
|
|
defaultT = 1 - defaultT;
|
|
|
|
|
}
|
|
|
|
|
var step = sOn ? -defaultT / 2 : (1 - defaultT) / 2;
|
|
|
|
|
var t = defaultT;
|
|
|
|
|
var tries = 16;
|
|
|
|
|
do {
|
|
|
|
|
var mid = pt_at_t(curve, t);
|
|
|
|
|
if (ptOnScreen(mid))
|
|
|
|
|
return drawOrder(curve, t, label);
|
|
|
|
|
t += step;
|
|
|
|
|
step /= 2;
|
|
|
|
|
} while (--tries > 0);
|
|
|
|
|
drawOrder(curve, defaultT, label);
|
|
|
|
|
}
|
|
|
|
|
// scattershot until we find a visible point
|
|
|
|
|
var denom = 2; // visit odd number num / denom to hit unique pts
|
|
|
|
|
var tries = 6; // tries 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, 1/16 ...
|
|
|
|
|
do {
|
|
|
|
|
for (var numer = 1; numer < denom; numer += 2) {
|
|
|
|
|
var t = numer / denom + 0.1;
|
|
|
|
|
if (t >= 1) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
var mid = pt_at_t(curve, t);
|
|
|
|
|
if (ptOnScreen(mid))
|
|
|
|
|
return drawOrder(curve, t, label);
|
|
|
|
|
}
|
|
|
|
|
denom *= 2;
|
|
|
|
|
} while (--tries > 0);
|
|
|
|
|
drawOrder(curve, defaultT, label);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function set_length(pt, newLen) {
|
|
|
|
|
var len = Math.sqrt(pt.x * pt.x + pt.y * pt.y);
|
|
|
|
|
var scale = newLen / len;
|
|
|
|
|
var newPt = { x: pt.x * scale, y: pt.y * scale };
|
|
|
|
|
return newPt;
|
|
|
|
|
function set_length(pt, newLen) {
|
|
|
|
|
var len = Math.sqrt(pt.x * pt.x + pt.y * pt.y);
|
|
|
|
|
var scale = newLen / len;
|
|
|
|
|
var newPt = { x: pt.x * scale, y: pt.y * scale };
|
|
|
|
|
return newPt;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function drawDirection(curve, t) {
|
|
|
|
|
function drawDirection(curve, t) {
|
|
|
|
|
var d = dpt_at_t(curve, t);
|
|
|
|
|
d = set_length(d, 16);
|
|
|
|
|
var pt = localToGlobal(pt_at_t(curve, t));
|
|
|
|
|
var pt = localToGlobal(pt_at_t(curve, t));
|
|
|
|
|
ctx.beginPath();
|
|
|
|
|
ctx.moveTo(pt.x - d.y, pt.y + d.x);
|
|
|
|
|
ctx.lineTo(pt.x + d.x, pt.y + d.y);
|
|
|
|
@ -2438,47 +2438,47 @@ function drawDirection(curve, t) {
|
|
|
|
|
ctx.stroke();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function drawVisibleDirection(curve) {
|
|
|
|
|
var s = pt_at_t(curve, 0);
|
|
|
|
|
var e = pt_at_t(curve, 1);
|
|
|
|
|
var sOn = ptOnScreen(s);
|
|
|
|
|
var eOn = ptOnScreen(e);
|
|
|
|
|
var defaultT = 0.65;
|
|
|
|
|
if (sOn && eOn) {
|
|
|
|
|
return drawDirection(curve, defaultT);
|
|
|
|
|
}
|
|
|
|
|
if (sOn || eOn) {
|
|
|
|
|
if (eOn) {
|
|
|
|
|
defaultT = 1 - defaultT;
|
|
|
|
|
}
|
|
|
|
|
var step = sOn ? -defaultT / 2 : (1 - defaultT) / 2;
|
|
|
|
|
var t = defaultT;
|
|
|
|
|
var tries = 16;
|
|
|
|
|
do {
|
|
|
|
|
var mid = pt_at_t(curve, t);
|
|
|
|
|
if (ptOnScreen(mid))
|
|
|
|
|
return drawDirection(curve, t);
|
|
|
|
|
t += step;
|
|
|
|
|
step /= 2;
|
|
|
|
|
} while (--tries > 0);
|
|
|
|
|
drawDirection(curve, defaultT);
|
|
|
|
|
}
|
|
|
|
|
// scattershot until we find a visible point
|
|
|
|
|
var denom = 2; // visit odd number num / denom to hit unique pts
|
|
|
|
|
var tries = 6; // tries 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, 1/16 ...
|
|
|
|
|
do {
|
|
|
|
|
for (var numer = 1; numer < denom; numer += 2) {
|
|
|
|
|
var t = numer / denom + 0.1;
|
|
|
|
|
if (t >= 1) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
var mid = pt_at_t(curve, t);
|
|
|
|
|
if (ptOnScreen(mid))
|
|
|
|
|
return drawDirection(curve, t);
|
|
|
|
|
}
|
|
|
|
|
denom *= 2;
|
|
|
|
|
} while (--tries > 0);
|
|
|
|
|
drawDirection(curve, defaultT);
|
|
|
|
|
function drawVisibleDirection(curve) {
|
|
|
|
|
var s = pt_at_t(curve, 0);
|
|
|
|
|
var e = pt_at_t(curve, 1);
|
|
|
|
|
var sOn = ptOnScreen(s);
|
|
|
|
|
var eOn = ptOnScreen(e);
|
|
|
|
|
var defaultT = 0.65;
|
|
|
|
|
if (sOn && eOn) {
|
|
|
|
|
return drawDirection(curve, defaultT);
|
|
|
|
|
}
|
|
|
|
|
if (sOn || eOn) {
|
|
|
|
|
if (eOn) {
|
|
|
|
|
defaultT = 1 - defaultT;
|
|
|
|
|
}
|
|
|
|
|
var step = sOn ? -defaultT / 2 : (1 - defaultT) / 2;
|
|
|
|
|
var t = defaultT;
|
|
|
|
|
var tries = 16;
|
|
|
|
|
do {
|
|
|
|
|
var mid = pt_at_t(curve, t);
|
|
|
|
|
if (ptOnScreen(mid))
|
|
|
|
|
return drawDirection(curve, t);
|
|
|
|
|
t += step;
|
|
|
|
|
step /= 2;
|
|
|
|
|
} while (--tries > 0);
|
|
|
|
|
drawDirection(curve, defaultT);
|
|
|
|
|
}
|
|
|
|
|
// scattershot until we find a visible point
|
|
|
|
|
var denom = 2; // visit odd number num / denom to hit unique pts
|
|
|
|
|
var tries = 6; // tries 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, 1/16 ...
|
|
|
|
|
do {
|
|
|
|
|
for (var numer = 1; numer < denom; numer += 2) {
|
|
|
|
|
var t = numer / denom + 0.1;
|
|
|
|
|
if (t >= 1) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
var mid = pt_at_t(curve, t);
|
|
|
|
|
if (ptOnScreen(mid))
|
|
|
|
|
return drawDirection(curve, t);
|
|
|
|
|
}
|
|
|
|
|
denom *= 2;
|
|
|
|
|
} while (--tries > 0);
|
|
|
|
|
drawDirection(curve, defaultT);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function drawID(curve, t, id) {
|
|
|
|
@ -2489,53 +2489,53 @@ function drawID(curve, t, id) {
|
|
|
|
|
draw_id_at(id, _px, _py);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function localToGlobal(local) {
|
|
|
|
|
var global = {};
|
|
|
|
|
global.x = (local.x - srcLeft) * scale;
|
|
|
|
|
global.y = (local.y - srcTop) * scale;
|
|
|
|
|
return global;
|
|
|
|
|
function localToGlobal(local) {
|
|
|
|
|
var global = {};
|
|
|
|
|
global.x = (local.x - srcLeft) * scale;
|
|
|
|
|
global.y = (local.y - srcTop) * scale;
|
|
|
|
|
return global;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function ptOnScreen(local) {
|
|
|
|
|
var pt = localToGlobal(local);
|
|
|
|
|
return 10 <= pt.x && pt.x <= screenWidth - 10
|
|
|
|
|
&& 10 <= pt.y && pt.y <= screenHeight - 10;
|
|
|
|
|
function ptOnScreen(local) {
|
|
|
|
|
var pt = localToGlobal(local);
|
|
|
|
|
return 10 <= pt.x && pt.x <= screenWidth - 10
|
|
|
|
|
&& 10 <= pt.y && pt.y <= screenHeight - 10;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function drawVisibleID(curve, defaultT, id) {
|
|
|
|
|
// determine if either or both ends are visible
|
|
|
|
|
var s = pt_at_t(curve, 0);
|
|
|
|
|
var e = pt_at_t(curve, 1);
|
|
|
|
|
var sOn = ptOnScreen(s);
|
|
|
|
|
var eOn = ptOnScreen(e);
|
|
|
|
|
if (sOn && eOn)
|
|
|
|
|
return drawID(curve, defaultT, id);
|
|
|
|
|
if (sOn || eOn) {
|
|
|
|
|
var step = sOn ? -defaultT / 2 : (1 - defaultT) / 2;
|
|
|
|
|
var t = defaultT;
|
|
|
|
|
var tries = 16;
|
|
|
|
|
do {
|
|
|
|
|
var mid = pt_at_t(curve, t);
|
|
|
|
|
if (ptOnScreen(mid))
|
|
|
|
|
return drawID(curve, t, id);
|
|
|
|
|
t += step;
|
|
|
|
|
step /= 2;
|
|
|
|
|
} while (--tries > 0);
|
|
|
|
|
drawID(curve, defaultT, id);
|
|
|
|
|
}
|
|
|
|
|
// scattershot until we find a visible point
|
|
|
|
|
var denom = 2; // visit odd number num / denom to hit unique pts
|
|
|
|
|
var tries = 6; // tries 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, 1/16 ...
|
|
|
|
|
do {
|
|
|
|
|
for (var numer = 1; numer < denom; numer += 2) {
|
|
|
|
|
var t = numer / denom;
|
|
|
|
|
var mid = pt_at_t(curve, t);
|
|
|
|
|
if (ptOnScreen(mid))
|
|
|
|
|
return drawID(curve, t, id);
|
|
|
|
|
}
|
|
|
|
|
denom *= 2;
|
|
|
|
|
} while (--tries > 0);
|
|
|
|
|
drawID(curve, defaultT, id);
|
|
|
|
|
function drawVisibleID(curve, defaultT, id) {
|
|
|
|
|
// determine if either or both ends are visible
|
|
|
|
|
var s = pt_at_t(curve, 0);
|
|
|
|
|
var e = pt_at_t(curve, 1);
|
|
|
|
|
var sOn = ptOnScreen(s);
|
|
|
|
|
var eOn = ptOnScreen(e);
|
|
|
|
|
if (sOn && eOn)
|
|
|
|
|
return drawID(curve, defaultT, id);
|
|
|
|
|
if (sOn || eOn) {
|
|
|
|
|
var step = sOn ? -defaultT / 2 : (1 - defaultT) / 2;
|
|
|
|
|
var t = defaultT;
|
|
|
|
|
var tries = 16;
|
|
|
|
|
do {
|
|
|
|
|
var mid = pt_at_t(curve, t);
|
|
|
|
|
if (ptOnScreen(mid))
|
|
|
|
|
return drawID(curve, t, id);
|
|
|
|
|
t += step;
|
|
|
|
|
step /= 2;
|
|
|
|
|
} while (--tries > 0);
|
|
|
|
|
drawID(curve, defaultT, id);
|
|
|
|
|
}
|
|
|
|
|
// scattershot until we find a visible point
|
|
|
|
|
var denom = 2; // visit odd number num / denom to hit unique pts
|
|
|
|
|
var tries = 6; // tries 1/2, 1/4, 3/4, 1/8, 3/8, 5/8, 7/8, 1/16 ...
|
|
|
|
|
do {
|
|
|
|
|
for (var numer = 1; numer < denom; numer += 2) {
|
|
|
|
|
var t = numer / denom;
|
|
|
|
|
var mid = pt_at_t(curve, t);
|
|
|
|
|
if (ptOnScreen(mid))
|
|
|
|
|
return drawID(curve, t, id);
|
|
|
|
|
}
|
|
|
|
|
denom *= 2;
|
|
|
|
|
} while (--tries > 0);
|
|
|
|
|
drawID(curve, defaultT, id);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function draw_id_at(id, _px, _py) {
|
|
|
|
@ -2613,8 +2613,8 @@ function drawCurveSpecials(test, curve, type) {
|
|
|
|
|
drawVisibleID(curve, 0.5, id);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (draw_direction) {
|
|
|
|
|
drawVisibleDirection(curve);
|
|
|
|
|
if (draw_direction) {
|
|
|
|
|
drawVisibleDirection(curve);
|
|
|
|
|
}
|
|
|
|
|
if (type == PATH_LINE) {
|
|
|
|
|
return;
|
|
|
|
@ -3205,10 +3205,10 @@ function draw(test, lines, title) {
|
|
|
|
|
drawVisibleOrder(leftCurve, 'L');
|
|
|
|
|
drawVisibleOrder(rightCurve, 'R');
|
|
|
|
|
}
|
|
|
|
|
if (draw_id) {
|
|
|
|
|
drawVisibleID(leftCurve, 0.5, frags[0]);
|
|
|
|
|
drawVisibleID(midCurve, 0.5, frags[6]);
|
|
|
|
|
drawVisibleID(rightCurve, 0.5, frags[12]);
|
|
|
|
|
if (draw_id) {
|
|
|
|
|
drawVisibleID(leftCurve, 0.5, frags[0]);
|
|
|
|
|
drawVisibleID(midCurve, 0.5, frags[6]);
|
|
|
|
|
drawVisibleID(rightCurve, 0.5, frags[12]);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
|
case REC_TYPE_AFTERPART:
|
|
|
|
@ -3245,8 +3245,8 @@ function draw(test, lines, title) {
|
|
|
|
|
throw "stop execution";
|
|
|
|
|
}
|
|
|
|
|
drawCurve(curve);
|
|
|
|
|
if (draw_id) {
|
|
|
|
|
drawVisibleID(curve, 0.5, id);
|
|
|
|
|
if (draw_id) {
|
|
|
|
|
drawVisibleID(curve, 0.5, id);
|
|
|
|
|
}
|
|
|
|
|
++afterIndex;
|
|
|
|
|
break;
|
|
|
|
|