diff options
| author | hrydgard <hrydgard@gmail.com> | 2008-12-26 12:27:58 +0000 |
|---|---|---|
| committer | hrydgard <hrydgard@gmail.com> | 2008-12-26 12:27:58 +0000 |
| commit | d585d263937f4a5e10d86c93c9d056e4a8531a4f (patch) | |
| tree | 2184170a81ab9d1242484e70500f7855725b5e44 /Source/Core/VideoCommon/Src/ImageWrite.cpp | |
| parent | afc87eb5aea19de2d1ada70d61802fd6116a6289 (diff) | |
Move PixelShaderManager, ImageWrite to VideoCommon.
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1686 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source/Core/VideoCommon/Src/ImageWrite.cpp')
| -rw-r--r-- | Source/Core/VideoCommon/Src/ImageWrite.cpp | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/Source/Core/VideoCommon/Src/ImageWrite.cpp b/Source/Core/VideoCommon/Src/ImageWrite.cpp new file mode 100644 index 0000000000..9d17d395bd --- /dev/null +++ b/Source/Core/VideoCommon/Src/ImageWrite.cpp @@ -0,0 +1,82 @@ +// Copyright (C) 2003-2008 Dolphin Project. + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, version 2.0. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License 2.0 for more details. + +// A copy of the GPL 2.0 should have been included with the program. +// If not, see http://www.gnu.org/licenses/ + +// Official SVN repository and contact information can be found at +// http://code.google.com/p/dolphin-emu/ + +#include <stdio.h> +#include <list> +#include <vector> + +#include "ImageWrite.h" + +#if defined(_MSC_VER) +#pragma pack(push, 1) +#endif + +struct TGA_HEADER +{ + u8 identsize; // size of ID field that follows 18 u8 header (0 usually) + u8 colourmaptype; // type of colour map 0=none, 1=has palette + u8 imagetype; // type of image 0=none,1=indexed,2=rgb,3=grey,+8=rle packed + + s16 colourmapstart; // first colour map entry in palette + s16 colourmaplength; // number of colours in palette + u8 colourmapbits; // number of bits per palette entry 15,16,24,32 + + s16 xstart; // image x origin + s16 ystart; // image y origin + s16 width; // image width in pixels + s16 height; // image height in pixels + u8 bits; // image bits per pixel 8,16,24,32 + u8 descriptor; // image descriptor bits (vh flip bits) + + // pixel data follows header +}; + +#if defined(_MSC_VER) +#pragma pack(pop) +#endif + +bool SaveTGA(const char* filename, int width, int height, void* pdata) +{ + TGA_HEADER hdr; + FILE* f = fopen(filename, "wb"); + if (f == NULL) + return false; + + _assert_(sizeof(TGA_HEADER) == 18 && sizeof(hdr) == 18); + + memset(&hdr, 0, sizeof(hdr)); + hdr.imagetype = 2; + hdr.bits = 32; + hdr.width = width; + hdr.height = height; + hdr.descriptor |= 8|(1<<5); // 8bit alpha, flip vertical + + fwrite(&hdr, sizeof(hdr), 1, f); + fwrite(pdata, width * height * 4, 1, f); + fclose(f); + return true; +} + +bool SaveData(const char* filename, const char* data) +{ + FILE *f = fopen(filename, "wb"); + if (!f) + return false; + fwrite(data, strlen(data), 1, f); + fclose(f); + return true; +} |
