diff options
Diffstat (limited to 'Build/source/utils/asymptote/cudareflect/tinyexr/examples/exrview/exr-io.cc')
-rw-r--r-- | Build/source/utils/asymptote/cudareflect/tinyexr/examples/exrview/exr-io.cc | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Build/source/utils/asymptote/cudareflect/tinyexr/examples/exrview/exr-io.cc b/Build/source/utils/asymptote/cudareflect/tinyexr/examples/exrview/exr-io.cc new file mode 100644 index 00000000000..5c2821b75b6 --- /dev/null +++ b/Build/source/utils/asymptote/cudareflect/tinyexr/examples/exrview/exr-io.cc @@ -0,0 +1,60 @@ +#define TINYEXR_IMPLEMENTATION +#include "tinyexr.h" + +#include "exr-io.h" + +#include <cstdio> +#include <iostream> + +namespace exrio { + +bool GetEXRLayers(const char *filename) +{ + const char** layer_names = nullptr; + int num_layers = 0; + const char *err = nullptr; + int ret = EXRLayers(filename, &layer_names, &num_layers, &err); + + if (err) { + fprintf(stderr, "EXR error = %s\n", err); + } + + if (ret != 0) { + fprintf(stderr, "Load EXR err: %s\n", err); + return false; + } + if (num_layers > 0) + { + fprintf(stdout, "EXR Contains %i Layers\n", num_layers); + for (size_t i = 0; i < num_layers; ++i) { + fprintf(stdout, "Layer %i : %s\n", i + 1, layer_names[i]); + } + } + free(layer_names); + return true; +} + +bool LoadEXRRGBA(float** rgba, int *w, int *h, const char* filename, const char* layername) +{ + int width, height; + float* image; + const char *err = nullptr; + int ret = LoadEXRWithLayer(&image, &width, &height, filename, layername, &err); + + if (err) { + fprintf(stderr, "EXR error = %s\n", err); + } + + if (ret != 0) { + fprintf(stderr, "Load EXR err: %s\n", err); + return false; + } + + (*rgba) = image; + (*w) = width; + (*h) = height; + + return true; +} + +} |