MCPcopy Create free account
hub / github.com/TheRealMJP/DeferredTexturing / SaveDeepEXR

Function SaveDeepEXR

SampleFramework12/v1.00/TinyEXR.cpp:8090–8332  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

8088}
8089
8090int SaveDeepEXR(const DeepImage *deepImage, const char *filename,
8091 const char **err) {
8092 if (deepImage == NULL || filename == NULL) {
8093 if (err) {
8094 (*err) = "Invalid argument.";
8095 }
8096 return -1;
8097 }
8098
8099 FILE *fp = fopen(filename, "rb");
8100 if (!fp) {
8101 if (err) {
8102 (*err) = "Cannot write file.";
8103 }
8104 return -1;
8105 }
8106
8107 // Write header check.
8108 {
8109 const char header[] = {0x76, 0x2f, 0x31, 0x01};
8110 size_t n = fwrite(header, 1, 4, fp);
8111 if (n != 4) {
8112 if (err) {
8113 (*err) = "Header write failed.";
8114 }
8115 fclose(fp);
8116 return -3;
8117 }
8118 }
8119
8120 // Version, scanline.
8121 {
8122 // ver 2.0, scanline, deep bit on(0x800)
8123 const char data[] = {2, 8, 0, 0};
8124 size_t n = fwrite(data, 1, 4, fp);
8125 if (n != 4) {
8126 if (err) {
8127 (*err) = "Flag write failed.";
8128 }
8129 fclose(fp);
8130 return -3;
8131 }
8132 }
8133
8134 // Write attributes.
8135 {
8136 int data = 2; // ZIPS
8137 WriteAttribute(fp, "compression", "compression",
8138 reinterpret_cast<const unsigned char *>(&data), sizeof(int));
8139 }
8140
8141 {
8142 int data[4] = {0, 0, deepImage->width - 1, deepImage->height - 1};
8143 WriteAttribute(fp, "dataWindow", "box2i",
8144 reinterpret_cast<const unsigned char *>(data),
8145 sizeof(int) * 4);
8146 WriteAttribute(fp, "displayWindow", "box2i",
8147 reinterpret_cast<const unsigned char *>(data),

Callers

nothing calls this directly

Calls 4

WriteAttributeFunction · 0.85
DecompressZipFunction · 0.85
half_to_floatFunction · 0.85
sizeMethod · 0.45

Tested by

no test coverage detected