From 67c2453c82615c88be795d0864c76537133a88da Mon Sep 17 00:00:00 2001 From: Sam Date: Mon, 20 Jan 2014 23:04:49 +0100 Subject: [PATCH] savePNG method for Image --- src/framework/graphics/image.cpp | 17 ++++++++++++++++- src/framework/graphics/image.h | 2 ++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/framework/graphics/image.cpp b/src/framework/graphics/image.cpp index 94eb46cf..333fb38c 100644 --- a/src/framework/graphics/image.cpp +++ b/src/framework/graphics/image.cpp @@ -24,6 +24,7 @@ #include "image.h" #include +#include #include Image::Image(const Size& size, int bpp, uint8 *pixels) @@ -62,6 +63,20 @@ ImagePtr Image::loadPNG(const std::string& file) return image; } +void Image::savePNG(const std::string& fileName) +{ + FileStreamPtr fin = g_resources.createFile(fileName); + if(!fin) + stdext::throw_exception(stdext::format("failed to open file '%s' for write", fileName)); + + fin->cache(); + std::stringstream data; + save_png(data, m_size.width(), m_size.height(), 4, (unsigned char*)getPixelData()); + fin->write(data.str().c_str(), data.str().length()); + fin->flush(); + fin->close(); +} + void Image::overwriteMask(const Color& maskedColor, const Color& insideColor, const Color& outsideColor) { assert(m_bpp == 4); @@ -252,4 +267,4 @@ void Texture::generateSoftwareMipmaps(std::vector inPixels) setupFilters(); } } -*/ \ No newline at end of file +*/ diff --git a/src/framework/graphics/image.h b/src/framework/graphics/image.h index ba6510fa..083cf5b8 100644 --- a/src/framework/graphics/image.h +++ b/src/framework/graphics/image.h @@ -34,6 +34,8 @@ public: static ImagePtr load(std::string file); static ImagePtr loadPNG(const std::string& file); + void savePNG(const std::string& fileName); + void overwriteMask(const Color& maskedColor, const Color& insideColor = Color::white, const Color& outsideColor = Color::alpha); void blit(const Point& dest, const ImagePtr& other); void paste(const ImagePtr& other);