@@ -11,9 +11,9 @@ public class ScanEdgeCollectionTests
1111{
1212 private static MemoryAllocator MemoryAllocator => Configuration . Default . MemoryAllocator ;
1313
14- private static readonly DebugDraw DebugDraw = new DebugDraw ( nameof ( ScanEdgeCollectionTests ) ) ;
14+ private static readonly DebugDraw DebugDraw = new ( nameof ( ScanEdgeCollectionTests ) ) ;
1515
16- private void VerifyEdge (
16+ private static void VerifyEdge (
1717 ScanEdgeCollection edges ,
1818 float y0 ,
1919 float y1 ,
@@ -46,60 +46,65 @@ private void VerifyEdge(
4646 [ ValidateDisposedMemoryAllocations ]
4747 public void SimplePolygon_AllEmitCases ( )
4848 {
49- // see: SimplePolygon_AllEmitCases.png
50- Polygon polygon = PolygonFactory . CreatePolygon (
51- ( 1 , 2 ) ,
52- ( 2 , 2 ) ,
53- ( 3 , 1 ) ,
54- ( 4 , 3 ) ,
55- ( 6 , 1 ) ,
56- ( 7 , 2 ) ,
57- ( 8 , 2 ) ,
58- ( 9 , 3 ) ,
59- ( 9 , 4 ) ,
60- ( 10 , 5 ) ,
61- ( 9 , 6 ) ,
62- ( 8 , 6 ) ,
63- ( 8 , 7 ) ,
64- ( 9 , 7 ) ,
65- ( 9 , 8 ) ,
66- ( 7 , 8 ) ,
67- ( 6 , 7 ) ,
68- ( 5 , 8 ) ,
69- ( 4 , 7 ) ,
70- ( 3 , 8 ) ,
71- ( 2 , 8 ) ,
72- ( 2 , 6 ) ,
73- ( 3 , 5 ) ,
74- ( 2 , 5 ) ,
75- ( 2 , 4 ) ,
76- ( 1 , 3 ) ) ;
77-
78- DebugDraw . Polygon ( polygon , 1 , 100 ) ;
49+ static void RunTest ( )
50+ {
51+ // see: SimplePolygon_AllEmitCases.png
52+ Polygon polygon = PolygonFactory . CreatePolygon (
53+ ( 1 , 2 ) ,
54+ ( 2 , 2 ) ,
55+ ( 3 , 1 ) ,
56+ ( 4 , 3 ) ,
57+ ( 6 , 1 ) ,
58+ ( 7 , 2 ) ,
59+ ( 8 , 2 ) ,
60+ ( 9 , 3 ) ,
61+ ( 9 , 4 ) ,
62+ ( 10 , 5 ) ,
63+ ( 9 , 6 ) ,
64+ ( 8 , 6 ) ,
65+ ( 8 , 7 ) ,
66+ ( 9 , 7 ) ,
67+ ( 9 , 8 ) ,
68+ ( 7 , 8 ) ,
69+ ( 6 , 7 ) ,
70+ ( 5 , 8 ) ,
71+ ( 4 , 7 ) ,
72+ ( 3 , 8 ) ,
73+ ( 2 , 8 ) ,
74+ ( 2 , 6 ) ,
75+ ( 3 , 5 ) ,
76+ ( 2 , 5 ) ,
77+ ( 2 , 4 ) ,
78+ ( 1 , 3 ) ) ;
79+
80+ DebugDraw . Polygon ( polygon , 1 , 100 ) ;
81+
82+ using ScanEdgeCollection edges = ScanEdgeCollection . Create ( polygon , MemoryAllocator , 16 ) ;
83+
84+ Assert . Equal ( 19 , edges . Edges . Length ) ;
85+
86+ VerifyEdge ( edges , 1f , 2f , ( 2.5f , 1.5f ) , 1 , 2 , true ) ;
87+ VerifyEdge ( edges , 1f , 3f , ( 3.5f , 2f ) , 1 , 1 , false ) ;
88+ VerifyEdge ( edges , 1f , 3f , ( 5f , 2f ) , 1 , 1 , true ) ;
89+ VerifyEdge ( edges , 1f , 2f , ( 6.5f , 1.5f ) , 1 , 2 , false ) ;
90+ VerifyEdge ( edges , 2f , 3f , ( 8.5f , 2.5f ) , 1 , 0 , false ) ;
91+ VerifyEdge ( edges , 3f , 4f , ( 9f , 3.5f ) , 1 , 0 , false ) ;
92+ VerifyEdge ( edges , 4f , 5f , ( 9.5f , 4.5f ) , 1 , 0 , false ) ;
93+ VerifyEdge ( edges , 5f , 6f , ( 9.5f , 5.5f ) , 1 , 1 , false ) ;
94+ VerifyEdge ( edges , 6f , 7f , ( 8f , 6.5f ) , 2 , 2 , false ) ;
95+ VerifyEdge ( edges , 7f , 8f , ( 9f , 7.5f ) , 1 , 1 , false ) ;
96+ VerifyEdge ( edges , 7f , 8f , ( 6.5f , 7.5f ) , 1 , 1 , true ) ;
97+ VerifyEdge ( edges , 7f , 8f , ( 5.5f , 7.5f ) , 1 , 1 , false ) ;
98+ VerifyEdge ( edges , 7f , 8f , ( 4.5f , 7.5f ) , 1 , 1 , true ) ;
99+ VerifyEdge ( edges , 7f , 8f , ( 3.5f , 7.5f ) , 1 , 1 , false ) ;
100+ VerifyEdge ( edges , 6f , 8f , ( 2f , 7f ) , 0 , 1 , true ) ;
101+ VerifyEdge ( edges , 5f , 6f , ( 2.5f , 5.5f ) , 2 , 1 , true ) ;
102+ VerifyEdge ( edges , 4f , 5f , ( 2f , 4.5f ) , 0 , 1 , true ) ;
103+ VerifyEdge ( edges , 3f , 4f , ( 1.5f , 3.5f ) , 0 , 1 , true ) ;
104+ VerifyEdge ( edges , 2f , 3f , ( 1f , 1.5f ) , 1 , 1 , true ) ;
105+ }
79106
80- using var edges = ScanEdgeCollection . Create ( polygon , MemoryAllocator , 16 ) ;
81-
82- Assert . Equal ( 19 , edges . Edges . Length ) ;
83-
84- this . VerifyEdge ( edges , 1f , 2f , ( 2.5f , 1.5f ) , 1 , 2 , true ) ;
85- this . VerifyEdge ( edges , 1f , 3f , ( 3.5f , 2f ) , 1 , 1 , false ) ;
86- this . VerifyEdge ( edges , 1f , 3f , ( 5f , 2f ) , 1 , 1 , true ) ;
87- this . VerifyEdge ( edges , 1f , 2f , ( 6.5f , 1.5f ) , 1 , 2 , false ) ;
88- this . VerifyEdge ( edges , 2f , 3f , ( 8.5f , 2.5f ) , 1 , 0 , false ) ;
89- this . VerifyEdge ( edges , 3f , 4f , ( 9f , 3.5f ) , 1 , 0 , false ) ;
90- this . VerifyEdge ( edges , 4f , 5f , ( 9.5f , 4.5f ) , 1 , 0 , false ) ;
91- this . VerifyEdge ( edges , 5f , 6f , ( 9.5f , 5.5f ) , 1 , 1 , false ) ;
92- this . VerifyEdge ( edges , 6f , 7f , ( 8f , 6.5f ) , 2 , 2 , false ) ;
93- this . VerifyEdge ( edges , 7f , 8f , ( 9f , 7.5f ) , 1 , 1 , false ) ;
94- this . VerifyEdge ( edges , 7f , 8f , ( 6.5f , 7.5f ) , 1 , 1 , true ) ;
95- this . VerifyEdge ( edges , 7f , 8f , ( 5.5f , 7.5f ) , 1 , 1 , false ) ;
96- this . VerifyEdge ( edges , 7f , 8f , ( 4.5f , 7.5f ) , 1 , 1 , true ) ;
97- this . VerifyEdge ( edges , 7f , 8f , ( 3.5f , 7.5f ) , 1 , 1 , false ) ;
98- this . VerifyEdge ( edges , 6f , 8f , ( 2f , 7f ) , 0 , 1 , true ) ;
99- this . VerifyEdge ( edges , 5f , 6f , ( 2.5f , 5.5f ) , 2 , 1 , true ) ;
100- this . VerifyEdge ( edges , 4f , 5f , ( 2f , 4.5f ) , 0 , 1 , true ) ;
101- this . VerifyEdge ( edges , 3f , 4f , ( 1.5f , 3.5f ) , 0 , 1 , true ) ;
102- this . VerifyEdge ( edges , 2f , 3f , ( 1f , 1.5f ) , 1 , 1 , true ) ;
107+ FeatureTestRunner . RunWithHwIntrinsicsFeature ( RunTest , HwIntrinsics . AllowAll | HwIntrinsics . DisableAVX | HwIntrinsics . DisableSSE41 ) ;
103108 }
104109
105110 [ Fact ]
@@ -113,55 +118,55 @@ public void ComplexPolygon()
113118 IPath polygon = contour . Clip ( hole ) ;
114119 DebugDraw . Polygon ( polygon , 1 , 100 ) ;
115120
116- using var edges = ScanEdgeCollection . Create ( polygon , MemoryAllocator , 16 ) ;
121+ using ScanEdgeCollection edges = ScanEdgeCollection . Create ( polygon , MemoryAllocator , 16 ) ;
117122
118123 Assert . Equal ( 8 , edges . Count ) ;
119124
120- this . VerifyEdge ( edges , 1 , 4 , ( 1 , 2 ) , 1 , 1 , true ) ;
121- this . VerifyEdge ( edges , 1 , 2 , ( 4 , 1.5f ) , 1 , 2 , false ) ;
122- this . VerifyEdge ( edges , 4 , 5 , ( 2 , 4.5f ) , 2 , 1 , true ) ;
123- this . VerifyEdge ( edges , 2 , 5 , ( 5 , 3f ) , 1 , 1 , false ) ;
125+ VerifyEdge ( edges , 1 , 4 , ( 1 , 2 ) , 1 , 1 , true ) ;
126+ VerifyEdge ( edges , 1 , 2 , ( 4 , 1.5f ) , 1 , 2 , false ) ;
127+ VerifyEdge ( edges , 4 , 5 , ( 2 , 4.5f ) , 2 , 1 , true ) ;
128+ VerifyEdge ( edges , 2 , 5 , ( 5 , 3f ) , 1 , 1 , false ) ;
124129
125- this . VerifyEdge ( edges , 2 , 3 , ( 2 , 2.5f ) , 2 , 2 , false ) ;
126- this . VerifyEdge ( edges , 2 , 3 , ( 3.5f , 2.5f ) , 2 , 1 , true ) ;
127- this . VerifyEdge ( edges , 3 , 4 , ( 3 , 3.5f ) , 1 , 2 , false ) ;
128- this . VerifyEdge ( edges , 3 , 4 , ( 4 , 3.5f ) , 0 , 2 , true ) ;
130+ VerifyEdge ( edges , 2 , 3 , ( 2 , 2.5f ) , 2 , 2 , false ) ;
131+ VerifyEdge ( edges , 2 , 3 , ( 3.5f , 2.5f ) , 2 , 1 , true ) ;
132+ VerifyEdge ( edges , 3 , 4 , ( 3 , 3.5f ) , 1 , 2 , false ) ;
133+ VerifyEdge ( edges , 3 , 4 , ( 4 , 3.5f ) , 0 , 2 , true ) ;
129134 }
130135
131136 [ Fact ]
132137 public void NumericCornerCase_C ( )
133138 {
134- using var edges = ScanEdgeCollection . Create ( NumericCornerCasePolygons . C , MemoryAllocator , 4 ) ;
139+ using ScanEdgeCollection edges = ScanEdgeCollection . Create ( NumericCornerCasePolygons . C , MemoryAllocator , 4 ) ;
135140 Assert . Equal ( 2 , edges . Count ) ;
136- this . VerifyEdge ( edges , 3.5f , 4f , ( 2f , 3.75f ) , 1 , 1 , true ) ;
137- this . VerifyEdge ( edges , 3.5f , 4f , ( 8f , 3.75f ) , 1 , 1 , false ) ;
141+ VerifyEdge ( edges , 3.5f , 4f , ( 2f , 3.75f ) , 1 , 1 , true ) ;
142+ VerifyEdge ( edges , 3.5f , 4f , ( 8f , 3.75f ) , 1 , 1 , false ) ;
138143 }
139144
140145 [ Fact ]
141146 public void NumericCornerCase_D ( )
142147 {
143- using var edges = ScanEdgeCollection . Create ( NumericCornerCasePolygons . D , MemoryAllocator , 4 ) ;
148+ using ScanEdgeCollection edges = ScanEdgeCollection . Create ( NumericCornerCasePolygons . D , MemoryAllocator , 4 ) ;
144149 Assert . Equal ( 5 , edges . Count ) ;
145150
146- this . VerifyEdge ( edges , 3.25f , 4f , ( 12f , 3.75f ) , 1 , 1 , true ) ;
147- this . VerifyEdge ( edges , 3.25f , 3.5f , ( 15f , 3.375f ) , 1 , 0 , false ) ;
148- this . VerifyEdge ( edges , 3.5f , 4f , ( 18f , 3.75f ) , 1 , 1 , false ) ;
151+ VerifyEdge ( edges , 3.25f , 4f , ( 12f , 3.75f ) , 1 , 1 , true ) ;
152+ VerifyEdge ( edges , 3.25f , 3.5f , ( 15f , 3.375f ) , 1 , 0 , false ) ;
153+ VerifyEdge ( edges , 3.5f , 4f , ( 18f , 3.75f ) , 1 , 1 , false ) ;
149154
150155 // TODO: verify 2 more edges
151156 }
152157
153158 [ Fact ]
154159 public void NumericCornerCase_H_ShouldCollapseNearZeroEdge ( )
155160 {
156- using var edges = ScanEdgeCollection . Create ( NumericCornerCasePolygons . H , MemoryAllocator , 4 ) ;
161+ using ScanEdgeCollection edges = ScanEdgeCollection . Create ( NumericCornerCasePolygons . H , MemoryAllocator , 4 ) ;
157162
158163 Assert . Equal ( 3 , edges . Count ) ;
159- this . VerifyEdge ( edges , 1.75f , 2f , ( 15f , 1.875f ) , 1 , 1 , true ) ;
160- this . VerifyEdge ( edges , 1.75f , 2.25f , ( 16f , 2f ) , 1 , 1 , false ) ;
164+ VerifyEdge ( edges , 1.75f , 2f , ( 15f , 1.875f ) , 1 , 1 , true ) ;
165+ VerifyEdge ( edges , 1.75f , 2.25f , ( 16f , 2f ) , 1 , 1 , false ) ;
161166
162167 // this places two dummy points:
163- this . VerifyEdge ( edges , 2f , 2.25f , ( 15f , 2.125f ) , 2 , 1 , true ) ;
168+ VerifyEdge ( edges , 2f , 2.25f , ( 15f , 2.125f ) , 2 , 1 , true ) ;
164169 }
165170
166- private static FuzzyFloat F ( float value , float eps ) => new FuzzyFloat ( value , eps ) ;
171+ private static FuzzyFloat F ( float value , float eps ) => new ( value , eps ) ;
167172}
0 commit comments