------------------------------------------------------------------------------
| 332 | |
| 333 | //------------------------------------------------------------------------------ |
| 334 | void vtkExtentSplitter::SplitExtent(int* extent, int* subextent) |
| 335 | { |
| 336 | // Subtract the volume described by subextent from that described by |
| 337 | // extent. Split the remaining region into rectangular solids and |
| 338 | // queue them as additional extents. We may assume that subextent |
| 339 | // is completely contained by extent. |
| 340 | vtkExtentSplitterExtent e; |
| 341 | |
| 342 | // In PointMode, there are no cell data, so we can skip over cells. |
| 343 | int pointMode = this->PointMode ? 1 : 0; |
| 344 | |
| 345 | // Split with xy-planes. |
| 346 | if (extent[4] < subextent[4]) |
| 347 | { |
| 348 | e.extent[0] = extent[0]; |
| 349 | e.extent[1] = extent[1]; |
| 350 | e.extent[2] = extent[2]; |
| 351 | e.extent[3] = extent[3]; |
| 352 | e.extent[4] = extent[4]; |
| 353 | e.extent[5] = subextent[4] - pointMode; |
| 354 | this->Internal->Queue.push(e); |
| 355 | |
| 356 | extent[4] = subextent[4]; |
| 357 | } |
| 358 | if (extent[5] > subextent[5]) |
| 359 | { |
| 360 | e.extent[0] = extent[0]; |
| 361 | e.extent[1] = extent[1]; |
| 362 | e.extent[2] = extent[2]; |
| 363 | e.extent[3] = extent[3]; |
| 364 | e.extent[4] = subextent[5] + pointMode; |
| 365 | e.extent[5] = extent[5]; |
| 366 | this->Internal->Queue.push(e); |
| 367 | |
| 368 | extent[5] = subextent[5]; |
| 369 | } |
| 370 | |
| 371 | // Split with xz-planes. |
| 372 | if (extent[2] < subextent[2]) |
| 373 | { |
| 374 | e.extent[0] = extent[0]; |
| 375 | e.extent[1] = extent[1]; |
| 376 | e.extent[2] = extent[2]; |
| 377 | e.extent[3] = subextent[2] - pointMode; |
| 378 | e.extent[4] = extent[4]; |
| 379 | e.extent[5] = extent[5]; |
| 380 | this->Internal->Queue.push(e); |
| 381 | |
| 382 | extent[2] = subextent[2]; |
| 383 | } |
| 384 | if (extent[3] > subextent[3]) |
| 385 | { |
| 386 | e.extent[0] = extent[0]; |
| 387 | e.extent[1] = extent[1]; |
| 388 | e.extent[2] = subextent[3] + pointMode; |
| 389 | e.extent[3] = extent[3]; |
| 390 | e.extent[4] = extent[4]; |
| 391 | e.extent[5] = extent[5]; |