| 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> |
nothing calls this directly
no test coverage detected