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

Function LoadEXRWithLayer

third-party/tinyexr/tinyexr.h:6190–6436  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

6188}
6189
6190int LoadEXRWithLayer(float **out_rgba, int *width, int *height,
6191 const char *filename, const char *layername,
6192 const char **err) {
6193 if (out_rgba == NULL) {
6194 tinyexr::SetErrorMessage("Invalid argument for LoadEXR()", err);
6195 return TINYEXR_ERROR_INVALID_ARGUMENT;
6196 }
6197
6198 EXRVersion exr_version;
6199 EXRImage exr_image;
6200 EXRHeader exr_header;
6201 InitEXRHeader(&exr_header);
6202 InitEXRImage(&exr_image);
6203
6204 {
6205 int ret = ParseEXRVersionFromFile(&exr_version, filename);
6206 if (ret != TINYEXR_SUCCESS) {
6207 std::stringstream ss;
6208 ss << "Failed to open EXR file or read version info from EXR file. code("
6209 << ret << ")";
6210 tinyexr::SetErrorMessage(ss.str(), err);
6211 return ret;
6212 }
6213
6214 if (exr_version.multipart || exr_version.non_image) {
6215 tinyexr::SetErrorMessage(
6216 "Loading multipart or DeepImage is not supported in LoadEXR() API",
6217 err);
6218 return TINYEXR_ERROR_INVALID_DATA; // @fixme.
6219 }
6220 }
6221
6222 {
6223 int ret = ParseEXRHeaderFromFile(&exr_header, &exr_version, filename, err);
6224 if (ret != TINYEXR_SUCCESS) {
6225 FreeEXRHeader(&exr_header);
6226 return ret;
6227 }
6228 }
6229
6230 // Read HALF channel as FLOAT.
6231 for (int i = 0; i < exr_header.num_channels; i++) {
6232 if (exr_header.pixel_types[i] == TINYEXR_PIXELTYPE_HALF) {
6233 exr_header.requested_pixel_types[i] = TINYEXR_PIXELTYPE_FLOAT;
6234 }
6235 }
6236
6237 // TODO: Probably limit loading to layers (channels) selected by layer index
6238 {
6239 int ret = LoadEXRImageFromFile(&exr_image, &exr_header, filename, err);
6240 if (ret != TINYEXR_SUCCESS) {
6241 FreeEXRHeader(&exr_header);
6242 return ret;
6243 }
6244 }
6245
6246 // RGBA
6247 int idxR = -1;

Callers 1

LoadEXRFunction · 0.85

Calls 11

SetErrorMessageFunction · 0.85
InitEXRHeaderFunction · 0.85
InitEXRImageFunction · 0.85
ParseEXRVersionFromFileFunction · 0.85
ParseEXRHeaderFromFileFunction · 0.85
FreeEXRHeaderFunction · 0.85
LoadEXRImageFromFileFunction · 0.85
GetLayersFunction · 0.85
ChannelsInLayerFunction · 0.85
FreeEXRImageFunction · 0.85
sizeMethod · 0.45

Tested by

no test coverage detected