MCPcopy Create free account
hub / github.com/cinder/Cinder / SaveEXRMultipartImageToFile

Function SaveEXRMultipartImageToFile

include/tinyexr/tinyexr.h:8162–8217  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8160}
8161
8162int SaveEXRMultipartImageToFile(const EXRImage* exr_images,
8163 const EXRHeader** exr_headers,
8164 unsigned int num_parts,
8165 const char* filename,
8166 const char** err) {
8167 if (exr_images == NULL || exr_headers == NULL || num_parts == 0) {
8168 tinyexr::SetErrorMessage("Invalid argument for SaveEXRMultipartImageToFile",
8169 err);
8170 return TINYEXR_ERROR_INVALID_ARGUMENT;
8171 }
8172
8173 FILE *fp = NULL;
8174#ifdef _WIN32
8175#if defined(_MSC_VER) || (defined(MINGW_HAS_SECURE_API) && MINGW_HAS_SECURE_API) // MSVC, MinGW GCC, or Clang.
8176 errno_t errcode =
8177 _wfopen_s(&fp, tinyexr::UTF8ToWchar(filename).c_str(), L"wb");
8178 if (errcode != 0) {
8179 tinyexr::SetErrorMessage("Cannot write a file: " + std::string(filename),
8180 err);
8181 return TINYEXR_ERROR_CANT_WRITE_FILE;
8182 }
8183#else
8184 // Unknown compiler or MinGW without MINGW_HAS_SECURE_API.
8185 fp = fopen(filename, "wb");
8186#endif
8187#else
8188 fp = fopen(filename, "wb");
8189#endif
8190 if (!fp) {
8191 tinyexr::SetErrorMessage("Cannot write a file: " + std::string(filename),
8192 err);
8193 return TINYEXR_ERROR_CANT_WRITE_FILE;
8194 }
8195
8196 unsigned char *mem = NULL;
8197 size_t mem_size = SaveEXRMultipartImageToMemory(exr_images, exr_headers, num_parts, &mem, err);
8198 if (mem_size == 0) {
8199 fclose(fp);
8200 return TINYEXR_ERROR_SERIALIZATION_FAILED;
8201 }
8202
8203 size_t written_size = 0;
8204 if ((mem_size > 0) && mem) {
8205 written_size = fwrite(mem, 1, mem_size, fp);
8206 }
8207 free(mem);
8208
8209 fclose(fp);
8210
8211 if (written_size != mem_size) {
8212 tinyexr::SetErrorMessage("Cannot write a file", err);
8213 return TINYEXR_ERROR_CANT_WRITE_FILE;
8214 }
8215
8216 return TINYEXR_SUCCESS;
8217}
8218
8219int LoadDeepEXR(DeepImage *deep_image, const char *filename, const char **err) {

Callers

nothing calls this directly

Calls 5

SetErrorMessageFunction · 0.85
UTF8ToWcharFunction · 0.85
stringFunction · 0.85
c_strMethod · 0.45

Tested by

no test coverage detected