MCPcopy Create free account
hub / github.com/MapServer/MapServer / rewind

Method rewind

renderers/agg/include/agg_conv_clipper.h:143–196  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

141
142 template<class VSA, class VSB>
143 void conv_clipper<VSA, VSB>::rewind(unsigned path_id)
144 {
145 m_src_a->rewind( path_id );
146 m_src_b->rewind( path_id );
147
148 add( m_src_a , m_poly_a );
149 add( m_src_b , m_poly_b );
150 m_result.resize(0);
151
152 clipper::PolyFillType pftSubj = (m_subjFillType == clipper_even_odd) ?
153 clipper::pftEvenOdd : clipper::pftNonZero;
154 clipper::PolyFillType pftClip = (m_clipFillType == clipper_even_odd) ?
155 clipper::pftEvenOdd : clipper::pftNonZero;
156
157 m_clipper.Clear();
158 switch( m_operation ) {
159 case clipper_or:
160 {
161 m_clipper.AddPolygons( m_poly_a , clipper::ptSubject );
162 m_clipper.AddPolygons( m_poly_b , clipper::ptClip );
163 m_clipper.Execute( clipper::ctUnion , m_result , pftSubj, pftClip);
164 break;
165 }
166 case clipper_and:
167 {
168 m_clipper.AddPolygons( m_poly_a , clipper::ptSubject );
169 m_clipper.AddPolygons( m_poly_b , clipper::ptClip );
170 m_clipper.Execute( clipper::ctIntersection , m_result, pftSubj, pftClip );
171 break;
172 }
173 case clipper_xor:
174 {
175 m_clipper.AddPolygons( m_poly_a , clipper::ptSubject );
176 m_clipper.AddPolygons( m_poly_b , clipper::ptClip );
177 m_clipper.Execute( clipper::ctXor , m_result, pftSubj, pftClip );
178 break;
179 }
180 case clipper_a_minus_b:
181 {
182 m_clipper.AddPolygons( m_poly_a , clipper::ptSubject );
183 m_clipper.AddPolygons( m_poly_b , clipper::ptClip );
184 m_clipper.Execute( clipper::ctDifference , m_result, pftSubj, pftClip );
185 break;
186 }
187 case clipper_b_minus_a:
188 {
189 m_clipper.AddPolygons( m_poly_b , clipper::ptSubject );
190 m_clipper.AddPolygons( m_poly_a , clipper::ptClip );
191 m_clipper.Execute( clipper::ctDifference , m_result, pftSubj, pftClip );
192 break;
193 }
194 }
195 start_extracting();
196 }
197 //------------------------------------------------------------------------------
198
199 template<class VSA, class VSB>

Callers

nothing calls this directly

Calls 4

ClearMethod · 0.80
AddPolygonsMethod · 0.80
ExecuteMethod · 0.80
resizeMethod · 0.45

Tested by

no test coverage detected