diff --git a/src/loaders/png/tvgPngLoader.cpp b/src/loaders/png/tvgPngLoader.cpp index f702ecf7..43c2cb1b 100755 --- a/src/loaders/png/tvgPngLoader.cpp +++ b/src/loaders/png/tvgPngLoader.cpp @@ -51,6 +51,18 @@ bool PngLoader::open(const string& path) return true; } +bool PngLoader::open(const char* data, uint32_t size, bool copy) +{ + image->opaque = NULL; + + if (!png_image_begin_read_from_memory(image, data, size)) return false; + + vw = w = image->width; + vh = h = image->height; + + return true; +} + bool PngLoader::read() { png_bytep buffer; @@ -76,4 +88,4 @@ bool PngLoader::close() const uint32_t* PngLoader::pixels() { return this->content; -} \ No newline at end of file +} diff --git a/src/loaders/png/tvgPngLoader.h b/src/loaders/png/tvgPngLoader.h index b9a7caf4..c7f3d4e4 100755 --- a/src/loaders/png/tvgPngLoader.h +++ b/src/loaders/png/tvgPngLoader.h @@ -28,18 +28,20 @@ class PngLoader : public Loader { public: - png_imagep image = nullptr; - const uint32_t* content = nullptr; - PngLoader(); ~PngLoader(); using Loader::open; bool open(const string& path) override; + bool open(const char* data, uint32_t size, bool copy) override; bool read() override; bool close() override; const uint32_t* pixels() override; + +private: + png_imagep image = nullptr; + const uint32_t* content = nullptr; }; -#endif //_TVG_PNG_LOADER_H_ \ No newline at end of file +#endif //_TVG_PNG_LOADER_H_