| 538 | } |
| 539 | |
| 540 | void vtkImageReader::ComputeInverseTransformedExtent(int inExtent[6], int outExtent[6]) |
| 541 | { |
| 542 | double transformedExtent[3]; |
| 543 | int temp; |
| 544 | int idx; |
| 545 | |
| 546 | if (!this->Transform) |
| 547 | { |
| 548 | memcpy(outExtent, inExtent, 6 * sizeof(int)); |
| 549 | for (idx = 0; idx < 6; idx += 2) |
| 550 | { |
| 551 | // do the slide to 000 origin by subtracting the minimum extent |
| 552 | outExtent[idx] += this->DataExtent[idx]; |
| 553 | outExtent[idx + 1] += this->DataExtent[idx]; |
| 554 | } |
| 555 | } |
| 556 | else |
| 557 | { |
| 558 | // need to know how far to translate to start at 000 |
| 559 | int dataExtent[6]; |
| 560 | // first transform the data extent |
| 561 | transformedExtent[0] = this->DataExtent[0]; |
| 562 | transformedExtent[1] = this->DataExtent[2]; |
| 563 | transformedExtent[2] = this->DataExtent[4]; |
| 564 | this->Transform->TransformPoint(transformedExtent, transformedExtent); |
| 565 | dataExtent[0] = (int)transformedExtent[0]; |
| 566 | dataExtent[2] = (int)transformedExtent[1]; |
| 567 | dataExtent[4] = (int)transformedExtent[2]; |
| 568 | |
| 569 | transformedExtent[0] = this->DataExtent[1]; |
| 570 | transformedExtent[1] = this->DataExtent[3]; |
| 571 | transformedExtent[2] = this->DataExtent[5]; |
| 572 | this->Transform->TransformPoint(transformedExtent, transformedExtent); |
| 573 | dataExtent[1] = (int)transformedExtent[0]; |
| 574 | dataExtent[3] = (int)transformedExtent[1]; |
| 575 | dataExtent[5] = (int)transformedExtent[2]; |
| 576 | |
| 577 | for (idx = 0; idx < 6; idx += 2) |
| 578 | { |
| 579 | if (dataExtent[idx] > dataExtent[idx + 1]) |
| 580 | { |
| 581 | temp = dataExtent[idx]; |
| 582 | dataExtent[idx] = dataExtent[idx + 1]; |
| 583 | dataExtent[idx + 1] = temp; |
| 584 | } |
| 585 | } |
| 586 | |
| 587 | for (idx = 0; idx < 6; idx += 2) |
| 588 | { |
| 589 | // do the slide to 000 origin by subtracting the minimum extent |
| 590 | inExtent[idx] += dataExtent[idx]; |
| 591 | inExtent[idx + 1] += dataExtent[idx]; |
| 592 | } |
| 593 | |
| 594 | transformedExtent[0] = inExtent[0]; |
| 595 | transformedExtent[1] = inExtent[2]; |
| 596 | transformedExtent[2] = inExtent[4]; |
| 597 | this->Transform->GetLinearInverse()->TransformPoint(transformedExtent, transformedExtent); |
no test coverage detected