summaryrefslogtreecommitdiff
path: root/Source/Core/VideoCommon/Src/ImageWrite.cpp
diff options
context:
space:
mode:
authorhrydgard <hrydgard@gmail.com>2008-12-26 12:27:58 +0000
committerhrydgard <hrydgard@gmail.com>2008-12-26 12:27:58 +0000
commitd585d263937f4a5e10d86c93c9d056e4a8531a4f (patch)
tree2184170a81ab9d1242484e70500f7855725b5e44 /Source/Core/VideoCommon/Src/ImageWrite.cpp
parentafc87eb5aea19de2d1ada70d61802fd6116a6289 (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.cpp82
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;
+}