| 226 | } |
| 227 | |
| 228 | IsoLines Isoliner::extract() |
| 229 | { |
| 230 | MR_TIMER; |
| 231 | activeEdges_.clear(); |
| 232 | activeEdges_.resize( topology_.undirectedEdgeSize() ); |
| 233 | BitSetParallelForAll( activeEdges_, [&]( UndirectedEdgeId ue ) |
| 234 | { |
| 235 | VertId o = topology_.org( ue ); |
| 236 | if ( !o ) |
| 237 | return; |
| 238 | VertId d = topology_.dest( ue ); |
| 239 | if ( !d ) |
| 240 | return; |
| 241 | auto no = negativeVerts_.test( o ); |
| 242 | auto nd = negativeVerts_.test( d ); |
| 243 | if ( no != nd && ( !region_ || contains( *region_, topology_.left( ue ) ) || contains( *region_, topology_.right( ue ) ) ) ) |
| 244 | activeEdges_.set( ue ); |
| 245 | } ); |
| 246 | |
| 247 | return extract_(); |
| 248 | } |
| 249 | |
| 250 | IsoLines Isoliner::extract_() |
| 251 | { |
no test coverage detected