diff options
author | Casimir666 <casimir666@users.sourceforge.net> | 2007-04-22 13:38:00 +0400 |
---|---|---|
committer | Casimir666 <casimir666@users.sourceforge.net> | 2007-04-22 13:38:00 +0400 |
commit | 7f9bfab0e7f53f4b7b96595e1d74c43f44411c7e (patch) | |
tree | f0afc96992b91f22468c35e22afe16c59882c34f /src/apps/mplayerc/libpng.h | |
parent | f4c20705c4bfc8d0f3cfa89fa92bbe49f59b2a1f (diff) |
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@59 10f7b99b-c216-0410-bff0-8a66a9350fd8
Diffstat (limited to 'src/apps/mplayerc/libpng.h')
-rw-r--r-- | src/apps/mplayerc/libpng.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/apps/mplayerc/libpng.h b/src/apps/mplayerc/libpng.h new file mode 100644 index 000000000..75a09124e --- /dev/null +++ b/src/apps/mplayerc/libpng.h @@ -0,0 +1,62 @@ +/*
+ * Copyright (C) 2003-2006 Gabest
+ * http://www.gabest.org
+ *
+ * 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; either version 2, or (at your option)
+ * any later version.
+ *
+ * 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 for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Make; see the file COPYING. If not, write to
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+#pragma once
+
+struct png_t {unsigned char* data; unsigned int size, pos;};
+
+#ifdef __cplusplus
+
+extern "C" unsigned char* DecompressPNG(struct png_t* png, int* w, int* h);
+
+#include <atlimage.h>
+
+class CPngImage : public CImage
+{
+public:
+ bool LoadFromResource(UINT id)
+ {
+ bool ret = false;
+
+ CStringA str;
+ if(LoadResource(id, str, _T("FILE")))
+ {
+ struct png_t png;
+ png.data = (unsigned char*)(LPCSTR)str;
+ png.size = str.GetLength();
+ int w, h;
+ if(BYTE* p = DecompressPNG(&png, &w, &h))
+ {
+ if(Create(w, -h, 32))
+ {
+ for(int y = 0; y < h; y++)
+ memcpy(GetPixelAddress(0, y), &p[w*4*y], w*4);
+ ret = true;
+ }
+
+ free(p);
+ }
+ }
+
+ return ret;
+ }
+};
+#endif
|