MCPcopy Create free account
hub / github.com/ARM-software/astc-encoder / SaveEXRMultipartImageToFile

Function SaveEXRMultipartImageToFile

Source/ThirdParty/tinyexr.h:9681–9736  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9679}
9680
9681int SaveEXRMultipartImageToFile(const EXRImage* exr_images,
9682 const EXRHeader** exr_headers,
9683 unsigned int num_parts,
9684 const char* filename,
9685 const char** err) {
9686 if (exr_images == NULL || exr_headers == NULL || num_parts == 0) {
9687 tinyexr::SetErrorMessage("Invalid argument for SaveEXRMultipartImageToFile",
9688 err);
9689 return TINYEXR_ERROR_INVALID_ARGUMENT;
9690 }
9691
9692 FILE *fp = NULL;
9693#ifdef _WIN32
9694#if defined(_MSC_VER) || (defined(MINGW_HAS_SECURE_API) && MINGW_HAS_SECURE_API) // MSVC, MinGW GCC, or Clang.
9695 errno_t errcode =
9696 _wfopen_s(&fp, tinyexr::UTF8ToWchar(filename).c_str(), L"wb");
9697 if (errcode != 0) {
9698 tinyexr::SetErrorMessage("Cannot write a file: " + std::string(filename),
9699 err);
9700 return TINYEXR_ERROR_CANT_WRITE_FILE;
9701 }
9702#else
9703 // Unknown compiler or MinGW without MINGW_HAS_SECURE_API.
9704 fp = fopen(filename, "wb");
9705#endif
9706#else
9707 fp = fopen(filename, "wb");
9708#endif
9709 if (!fp) {
9710 tinyexr::SetErrorMessage("Cannot write a file: " + std::string(filename),
9711 err);
9712 return TINYEXR_ERROR_CANT_WRITE_FILE;
9713 }
9714
9715 unsigned char *mem = NULL;
9716 size_t mem_size = SaveEXRMultipartImageToMemory(exr_images, exr_headers, num_parts, &mem, err);
9717 if (mem_size == 0) {
9718 fclose(fp);
9719 return TINYEXR_ERROR_SERIALIZATION_FAILED;
9720 }
9721
9722 size_t written_size = 0;
9723 if ((mem_size > 0) && mem) {
9724 written_size = fwrite(mem, 1, mem_size, fp);
9725 }
9726 free(mem);
9727
9728 fclose(fp);
9729
9730 if (written_size != mem_size) {
9731 tinyexr::SetErrorMessage("Cannot write a file", err);
9732 return TINYEXR_ERROR_CANT_WRITE_FILE;
9733 }
9734
9735 return TINYEXR_SUCCESS;
9736}
9737
9738int LoadDeepEXR(DeepImage *deep_image, const char *filename, const char **err) {

Callers

nothing calls this directly

Calls 3

SetErrorMessageFunction · 0.85
UTF8ToWcharFunction · 0.85

Tested by

no test coverage detected