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

Function EXRLayers

third-party/tinyexr/tinyexr.h:6139–6182  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6137} // namespace tinyexr
6138
6139int EXRLayers(const char *filename, const char **layer_names[], int *num_layers,
6140 const char **err) {
6141 EXRVersion exr_version;
6142 EXRHeader exr_header;
6143 InitEXRHeader(&exr_header);
6144
6145 {
6146 int ret = ParseEXRVersionFromFile(&exr_version, filename);
6147 if (ret != TINYEXR_SUCCESS) {
6148 tinyexr::SetErrorMessage("Invalid EXR header.", err);
6149 return ret;
6150 }
6151
6152 if (exr_version.multipart || exr_version.non_image) {
6153 tinyexr::SetErrorMessage(
6154 "Loading multipart or DeepImage is not supported in LoadEXR() API",
6155 err);
6156 return TINYEXR_ERROR_INVALID_DATA; // @fixme.
6157 }
6158 }
6159
6160 int ret = ParseEXRHeaderFromFile(&exr_header, &exr_version, filename, err);
6161 if (ret != TINYEXR_SUCCESS) {
6162 FreeEXRHeader(&exr_header);
6163 return ret;
6164 }
6165
6166 std::vector<std::string> layer_vec;
6167 tinyexr::GetLayers(exr_header, layer_vec);
6168
6169 (*num_layers) = int(layer_vec.size());
6170 (*layer_names) = static_cast<const char **>(
6171 malloc(sizeof(const char *) * static_cast<size_t>(layer_vec.size())));
6172 for (size_t c = 0; c < static_cast<size_t>(layer_vec.size()); c++) {
6173#ifdef _MSC_VER
6174 (*layer_names)[c] = _strdup(layer_vec[c].c_str());
6175#else
6176 (*layer_names)[c] = strdup(layer_vec[c].c_str());
6177#endif
6178 }
6179
6180 FreeEXRHeader(&exr_header);
6181 return TINYEXR_SUCCESS;
6182}
6183
6184int LoadEXR(float **out_rgba, int *width, int *height, const char *filename,
6185 const char **err) {

Callers

nothing calls this directly

Calls 7

InitEXRHeaderFunction · 0.85
ParseEXRVersionFromFileFunction · 0.85
SetErrorMessageFunction · 0.85
ParseEXRHeaderFromFileFunction · 0.85
FreeEXRHeaderFunction · 0.85
GetLayersFunction · 0.85
sizeMethod · 0.45

Tested by

no test coverage detected