MCPcopy Create free account
hub / github.com/RenderKit/embree / InitTileOffsets

Function InitTileOffsets

tutorials/common/image/tinyexr.h:5723–5767  ·  view source on GitHub ↗

Return sum of tile blocks. 0 = error

Source from the content-addressed store, hash-verified

5721// Return sum of tile blocks.
5722// 0 = error
5723static int InitTileOffsets(OffsetData& offset_data,
5724 const EXRHeader* exr_header,
5725 const std::vector<int>& num_x_tiles,
5726 const std::vector<int>& num_y_tiles) {
5727 int num_tile_blocks = 0;
5728 offset_data.num_x_levels = static_cast<int>(num_x_tiles.size());
5729 offset_data.num_y_levels = static_cast<int>(num_y_tiles.size());
5730 switch (exr_header->tile_level_mode) {
5731 case TINYEXR_TILE_ONE_LEVEL:
5732 case TINYEXR_TILE_MIPMAP_LEVELS:
5733 TINYEXR_CHECK_AND_RETURN_C(offset_data.num_x_levels == offset_data.num_y_levels, 0);
5734 offset_data.offsets.resize(size_t(offset_data.num_x_levels));
5735
5736 for (unsigned int l = 0; l < offset_data.offsets.size(); ++l) {
5737 offset_data.offsets[l].resize(size_t(num_y_tiles[l]));
5738
5739 for (unsigned int dy = 0; dy < offset_data.offsets[l].size(); ++dy) {
5740 offset_data.offsets[l][dy].resize(size_t(num_x_tiles[l]));
5741 num_tile_blocks += num_x_tiles[l];
5742 }
5743 }
5744 break;
5745
5746 case TINYEXR_TILE_RIPMAP_LEVELS:
5747
5748 offset_data.offsets.resize(static_cast<size_t>(offset_data.num_x_levels) * static_cast<size_t>(offset_data.num_y_levels));
5749
5750 for (int ly = 0; ly < offset_data.num_y_levels; ++ly) {
5751 for (int lx = 0; lx < offset_data.num_x_levels; ++lx) {
5752 int l = ly * offset_data.num_x_levels + lx;
5753 offset_data.offsets[size_t(l)].resize(size_t(num_y_tiles[size_t(ly)]));
5754
5755 for (size_t dy = 0; dy < offset_data.offsets[size_t(l)].size(); ++dy) {
5756 offset_data.offsets[size_t(l)][dy].resize(size_t(num_x_tiles[size_t(lx)]));
5757 num_tile_blocks += num_x_tiles[size_t(lx)];
5758 }
5759 }
5760 }
5761 break;
5762
5763 default:
5764 return 0;
5765 }
5766 return num_tile_blocks;
5767}
5768
5769static bool IsAnyOffsetsAreInvalid(const OffsetData& offset_data) {
5770 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