From 8a3b5a17d8277a675ba50300ac87209bca69d885 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Sun, 19 Jan 2020 22:00:56 +0100 Subject: [PATCH] Graphics/ImageLoader: move decode() to loadFromMemory() --- source/Graphics/ImageLoader.cpp | 47 +++++++++++++-------------------- source/Graphics/ImageLoader.h | 2 -- 2 files changed, 18 insertions(+), 31 deletions(-) diff --git a/source/Graphics/ImageLoader.cpp b/source/Graphics/ImageLoader.cpp index 6827c57..3f7cac5 100644 --- a/source/Graphics/ImageLoader.cpp +++ b/source/Graphics/ImageLoader.cpp @@ -35,8 +35,7 @@ bool ImageLoader::loadFromFile(const char *filename, Image& img) fread(&buf[0], 1, buf.size(), fd); fclose(fd); - // loaded into memory. now decode. - if (decode((const char*)&buf[0], buf.size(), img) == false) { + if (loadFromMemory(&buf[0], buf.size(), img) == false) { Log::warn("ImageLoader: could not load file '%s'. Reason: %s", filename, m_error); return false; @@ -51,11 +50,25 @@ bool ImageLoader::loadFromFile(const char *filename, Image& img) bool ImageLoader::loadFromMemory(const void *data, unsigned size, Image& img) { - //std::vector buf; + // width, height, num components. + int w, h, n_comp; + const stbi_uc *ptr = (const stbi_uc *) data; - //buf.assign(((unsigned char*) data), ((unsigned char*) data) + size); + unsigned char *pixels = stbi_load_from_memory(ptr, size, &w, &h, &n_comp, 4); - return decode((const char*) data, size, img); + if (pixels) { + + unsigned int len = w * h * 4; + + img.create(w, h, pixels); + + stbi_image_free(pixels); + + return true; + } + + m_error = stbi_failure_reason(); + return false; } // TODO: Support more formats. @@ -89,30 +102,6 @@ bool ImageLoader::saveToFile(const Image& img, const char *filename) return false; } - -bool ImageLoader::decode(const char *data, unsigned int size, Image& img) -{ - // width, height, num components. - int w, h, n_comp; - const stbi_uc *ptr = (const stbi_uc *) data; - - unsigned char *pixels = stbi_load_from_memory(ptr, size, &w, &h, &n_comp, 4); - - if (pixels) { - - unsigned int len = w * h * 4; - - img.create(w, h, pixels); - - stbi_image_free(pixels); - - return true; - } - - m_error = stbi_failure_reason(); - return false; -} - bool ImageLoader::encodePNG(const Image& img, std::vector& data) { int buf_len; diff --git a/source/Graphics/ImageLoader.h b/source/Graphics/ImageLoader.h index 908b42e..a1374c6 100644 --- a/source/Graphics/ImageLoader.h +++ b/source/Graphics/ImageLoader.h @@ -19,8 +19,6 @@ public : protected : - bool decode(const char* data, unsigned int len, Image& img); - bool encode(Image& img, std::vector& data); bool encodeJPEG(const Image& img, std::vector& data);