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

Function EXRLayers

tutorials/common/image/tinyexr.h:6218–6261  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6216} // namespace tinyexr
6217
6218int EXRLayers(const char *filename, const char **layer_names[], int *num_layers,
6219 const char **err) {
6220 EXRVersion exr_version;
6221 EXRHeader exr_header;
6222 InitEXRHeader(&exr_header);
6223
6224 {
6225 int ret = ParseEXRVersionFromFile(&exr_version, filename);
6226 if (ret != TINYEXR_SUCCESS) {
6227 tinyexr::SetErrorMessage("Invalid EXR header.", err);
6228 return ret;
6229 }
6230
6231 if (exr_version.multipart || exr_version.non_image) {
6232 tinyexr::SetErrorMessage(
6233 "Loading multipart or DeepImage is not supported in LoadEXR() API",
6234 err);
6235 return TINYEXR_ERROR_INVALID_DATA; // @fixme.
6236 }
6237 }
6238
6239 int ret = ParseEXRHeaderFromFile(&exr_header, &exr_version, filename, err);
6240 if (ret != TINYEXR_SUCCESS) {
6241 FreeEXRHeader(&exr_header);
6242 return ret;
6243 }
6244
6245 std::vector<std::string> layer_vec;
6246 tinyexr::GetLayers(exr_header, layer_vec);
6247
6248 (*num_layers) = int(layer_vec.size());
6249 (*layer_names) = static_cast<const char **>(
6250 malloc(sizeof(const char *) * static_cast<size_t>(layer_vec.size())));
6251 for (size_t c = 0; c < static_cast<size_t>(layer_vec.size()); c++) {
6252#ifdef _MSC_VER
6253 (*layer_names)[c] = _strdup(layer_vec[c].c_str());
6254#else
6255 (*layer_names)[c] = strdup(layer_vec[c].c_str());
6256#endif
6257 }
6258
6259 FreeEXRHeader(&exr_header);
6260 return TINYEXR_SUCCESS;
6261}
6262
6263int LoadEXR(float **out_rgba, int *width, int *height, const char *filename,
6264 const char **err) {

Callers

nothing calls this directly

Calls 9

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

Tested by

no test coverage detected