diff options
author | Marius Kintel <marius@kintel.net> | 2013-03-06 18:08:31 (GMT) |
---|---|---|
committer | Marius Kintel <marius@kintel.net> | 2013-03-06 18:08:31 (GMT) |
commit | cfc67f928fc86310614940f126d9f6c76d4e9ea7 (patch) | |
tree | 162be7579d3acd0eeb5b7b509ef9a0b428d6831f /src/imageutils.cc | |
parent | fe44758f5096be0e98c82d2cb0d54bdeffc4403a (diff) | |
parent | 974abf13049d5e73227418e3990af8a9bbf9db09 (diff) |
Merge branch 'master' of github.com:openscad/openscad
Diffstat (limited to 'src/imageutils.cc')
-rw-r--r-- | src/imageutils.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/imageutils.cc b/src/imageutils.cc new file mode 100644 index 0000000..3e1f3bc --- /dev/null +++ b/src/imageutils.cc @@ -0,0 +1,27 @@ +#include "imageutils.h" +#include <assert.h> +#include <string.h> +#include <fstream> + +void flip_image(const unsigned char *src, unsigned char *dst, size_t pixelsize, size_t width, size_t height) +{ + assert( src && dst ); + size_t rowBytes = pixelsize * width; + for (size_t i = 0 ; i < height ; i++) { + memmove(dst + (height - i - 1) * rowBytes, src + i * rowBytes, rowBytes); + } +} + +bool write_png(const char *filename, unsigned char *pixels, int width, int height) { + assert( filename && pixels ); + std::ofstream fstream( filename, std::ios::binary ); + if (fstream.is_open()) { + write_png( fstream, pixels, width, height ); + fstream.close(); + return true; + } else { + std::cerr << "Can't open file " << filename << " for export."; + return false; + } +} + |