From 2d3594de2282160610a62a79267d58d660c058da Mon Sep 17 00:00:00 2001 From: Squareys Date: Tue, 13 Mar 2018 22:40:53 +0100 Subject: [PATCH] Allow opting out of STB_IMAGE dependency Signed-off-by: Squareys --- README.md | 1 + tiny_gltf.h | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/README.md b/README.md index aefa6be..f8f135b 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,7 @@ if (!ret) { ## Compile options * `TINYGLTF_NOEXCEPTION` : Disable C++ exception in JSON parsing. You can use `-fno-exceptions` or by defining the symbol `JSON_NOEXCEPTION` and `TINYGLTF_NOEXCEPTION` to fully remove C++ exception codes when compiling TinyGLTF. +* `TINYGLTF_NO_STB_IMAGE` : Do not load images with stb_image. Instead use `TinyGLTF::SetImageLoader(LoadimageDataFunction LoadImageData, void *user_data)` to set a callback for loading images. ### Saving gltTF 2.0 model diff --git a/tiny_gltf.h b/tiny_gltf.h index 7da365d..7d26b95 100644 --- a/tiny_gltf.h +++ b/tiny_gltf.h @@ -730,10 +730,12 @@ enum SectionCheck { /// typedef bool (*LoadImageDataFunction)(Image *, std::string *, int, int, const unsigned char *, int, void *); +#ifndef TINYGLTF_NO_STB_IMAGE // Declaration of default image loader callback static bool LoadImageData(Image *image, std::string *err, int req_width, int req_height, const unsigned char *bytes, int size, void*); +#endif class TinyGLTF { public: @@ -869,7 +871,11 @@ class TinyGLTF { #endif #include "./json.hpp" + +#ifndef TINYGLTF_NO_STB_IMAGE #include "./stb_image.h" +#endif + #ifdef __clang__ #pragma clang diagnostic pop #endif @@ -1186,6 +1192,7 @@ void TinyGLTF::SetImageLoader(LoadImageDataFunction func, void *user_data) { load_image_user_data_ = user_data; } +#ifndef TINYGLTF_NO_STB_IMAGE static bool LoadImageData(Image *image, std::string *err, int req_width, int req_height, const unsigned char *bytes, int size, void*) { @@ -1242,6 +1249,7 @@ static bool LoadImageData(Image *image, std::string *err, int req_width, return true; } +#endif static bool IsDataURI(const std::string &in) { std::string header = "data:application/octet-stream;base64,";