| 5592 | } |
| 5593 | |
| 5594 | static bool PrecalculateTileInfo(std::vector<int>& num_x_tiles, |
| 5595 | std::vector<int>& num_y_tiles, |
| 5596 | const EXRHeader* exr_header) { |
| 5597 | int min_x = exr_header->data_window.min_x; |
| 5598 | int max_x = exr_header->data_window.max_x; |
| 5599 | int min_y = exr_header->data_window.min_y; |
| 5600 | int max_y = exr_header->data_window.max_y; |
| 5601 | |
| 5602 | int num_x_levels = CalculateNumXLevels(exr_header); |
| 5603 | |
| 5604 | if (num_x_levels < 0) { |
| 5605 | return false; |
| 5606 | } |
| 5607 | |
| 5608 | int num_y_levels = CalculateNumYLevels(exr_header); |
| 5609 | |
| 5610 | if (num_y_levels < 0) { |
| 5611 | return false; |
| 5612 | } |
| 5613 | |
| 5614 | num_x_tiles.resize(size_t(num_x_levels)); |
| 5615 | num_y_tiles.resize(size_t(num_y_levels)); |
| 5616 | |
| 5617 | if (!CalculateNumTiles(num_x_tiles, |
| 5618 | max_x - min_x + 1, |
| 5619 | exr_header->tile_size_x, |
| 5620 | exr_header->tile_rounding_mode)) { |
| 5621 | return false; |
| 5622 | } |
| 5623 | |
| 5624 | if (!CalculateNumTiles(num_y_tiles, |
| 5625 | max_y - min_y + 1, |
| 5626 | exr_header->tile_size_y, |
| 5627 | exr_header->tile_rounding_mode)) { |
| 5628 | return false; |
| 5629 | } |
| 5630 | |
| 5631 | return true; |
| 5632 | } |
| 5633 | |
| 5634 | static void InitSingleResolutionOffsets(OffsetData& offset_data, size_t num_blocks) { |
| 5635 | offset_data.offsets.resize(1); |
no test coverage detected