From 2a7f8f90d2c31ab8ed9366a3b7ea44116cc966b2 Mon Sep 17 00:00:00 2001 From: Edouard DUPIN Date: Sun, 24 Apr 2016 16:28:23 +0200 Subject: [PATCH] =?UTF-8?q?[DEV]=20correct=20set=20of=20the=20images=C3=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- egami/Image.cpp | 4 ++++ egami/Image.h | 2 +- egami/wrapperPNG.cpp | 21 ++++++++++++++++++--- 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/egami/Image.cpp b/egami/Image.cpp index 650d8bb..d58eff0 100644 --- a/egami/Image.cpp +++ b/egami/Image.cpp @@ -44,6 +44,10 @@ std::ostream& egami::operator <<(std::ostream& _os, const enum egami::colorType egami::Image::Image(const ivec2& _size, enum colorType _type) : m_data(nullptr) { + configure(_size, _type); +} + +void egami::Image::configure(const ivec2& _size, enum colorType _type) { switch (_type) { case egami::colorType::RGBA8: //m_data = std::make_shared(new egami::ImageTemplate>(_size)); diff --git a/egami/Image.h b/egami/Image.h index 468a8be..ce9e05d 100644 --- a/egami/Image.h +++ b/egami/Image.h @@ -36,8 +36,8 @@ namespace egami { Image(const ivec2& _size=ivec2(32,32), enum colorType _type=egami::colorType::RGBA8); // destructor ~Image() { }; - // EWOL internal API for Texture system : public: + void configure(const ivec2& _size=ivec2(32,32), enum colorType _type=egami::colorType::RGBA8); void* getTextureDataPointer(); enum colorType getType(); // ----------------------------------------------- diff --git a/egami/wrapperPNG.cpp b/egami/wrapperPNG.cpp index c2a7cdb..af72cc4 100644 --- a/egami/wrapperPNG.cpp +++ b/egami/wrapperPNG.cpp @@ -39,11 +39,11 @@ static void localFlushData(png_structp png_ptr) */ void user_error_fn(png_structp _pngPtr, png_const_charp _errorMsg) { - EGAMI_DEBUG("libpng error: '" << _errorMsg << "'"); + EGAMI_ERROR("libpng error: '" << _errorMsg << "'"); } void user_warning_fn(png_structp _pngPtr, png_const_charp _warningMsg) { - EGAMI_DEBUG("libpng warning: '" << _warningMsg << "'"); + EGAMI_WARNING("libpng warning: '" << _warningMsg << "'"); } bool egami::loadPNG(const std::string& _inputFile, egami::Image& _ouputImage) { @@ -115,7 +115,22 @@ bool egami::loadPNG(const std::string& _inputFile, egami::Image& _ouputImage) { png_get_IHDR(png_ptr, info_ptr, &width, &height, &bit_depth, &color_type, &interlace_type, NULL, NULL); // reallocate the image EGAMI_VERBOSE("Load PNG image : (" << width << "," << height << ")" ); - _ouputImage.resize(ivec2(width,height)); + switch (color_type) { + case PNG_COLOR_TYPE_RGBA: + _ouputImage.configure(ivec2(width,height), egami::colorType::RGBA8); + break; + case PNG_COLOR_TYPE_RGB: + _ouputImage.configure(ivec2(width,height), egami::colorType::RGB8); + break; + case PNG_COLOR_TYPE_GRAY: + _ouputImage.configure(ivec2(width,height), egami::colorType::RGB8); + break; + case PNG_COLOR_TYPE_GRAY_ALPHA: + _ouputImage.configure(ivec2(width,height), egami::colorType::RGBA8); + break; + default: + break; + } // Tell libpng to strip 16 bits/color files down to 8 bits/color. Use accurate scaling if it's available, otherwise just chop off the low byte. #ifdef PNG_READ_SCALE_16_TO_8_SUPPORTED