MCPcopy Create free account
hub / github.com/OpenPathGuidingLibrary/openpgl / InitTileOffsets

Function InitTileOffsets

third-party/tinyexr/tinyexr.h:5644–5688  ·  view source on GitHub ↗

Return sum of tile blocks. 0 = error

Source from the content-addressed store, hash-verified

5642// Return sum of tile blocks.
5643// 0 = error
5644static int InitTileOffsets(OffsetData& offset_data,
5645 const EXRHeader* exr_header,
5646 const std::vector<int>& num_x_tiles,
5647 const std::vector<int>& num_y_tiles) {
5648 int num_tile_blocks = 0;
5649 offset_data.num_x_levels = static_cast<int>(num_x_tiles.size());
5650 offset_data.num_y_levels = static_cast<int>(num_y_tiles.size());
5651 switch (exr_header->tile_level_mode) {
5652 case TINYEXR_TILE_ONE_LEVEL:
5653 case TINYEXR_TILE_MIPMAP_LEVELS:
5654 TINYEXR_CHECK_AND_RETURN_C(offset_data.num_x_levels == offset_data.num_y_levels, 0);
5655 offset_data.offsets.resize(size_t(offset_data.num_x_levels));
5656
5657 for (unsigned int l = 0; l < offset_data.offsets.size(); ++l) {
5658 offset_data.offsets[l].resize(size_t(num_y_tiles[l]));
5659
5660 for (unsigned int dy = 0; dy < offset_data.offsets[l].size(); ++dy) {
5661 offset_data.offsets[l][dy].resize(size_t(num_x_tiles[l]));
5662 num_tile_blocks += num_x_tiles[l];
5663 }
5664 }
5665 break;
5666
5667 case TINYEXR_TILE_RIPMAP_LEVELS:
5668
5669 offset_data.offsets.resize(static_cast<size_t>(offset_data.num_x_levels) * static_cast<size_t>(offset_data.num_y_levels));
5670
5671 for (int ly = 0; ly < offset_data.num_y_levels; ++ly) {
5672 for (int lx = 0; lx < offset_data.num_x_levels; ++lx) {
5673 int l = ly * offset_data.num_x_levels + lx;
5674 offset_data.offsets[size_t(l)].resize(size_t(num_y_tiles[size_t(ly)]));
5675
5676 for (size_t dy = 0; dy < offset_data.offsets[size_t(l)].size(); ++dy) {
5677 offset_data.offsets[size_t(l)][dy].resize(size_t(num_x_tiles[size_t(lx)]));
5678 num_tile_blocks += num_x_tiles[size_t(lx)];
5679 }
5680 }
5681 }
5682 break;
5683
5684 default:
5685 return 0;
5686 }
5687 return num_tile_blocks;
5688}
5689
5690static bool IsAnyOffsetsAreInvalid(const OffsetData& offset_data) {
5691 for (unsigned int l = 0; l < offset_data.offsets.size(); ++l)

Callers 3

DecodeEXRImageFunction · 0.85

Calls 2

sizeMethod · 0.45
resizeMethod · 0.45

Tested by

no test coverage detected