Support unrar64.dll
[xy_vsfilter.git] / src / apps / mplayerc / libpng.h
blob75a09124e50c225b461da141a3a8714575fe10e6
1 /*
2 * Copyright (C) 2003-2006 Gabest
3 * http://www.gabest.org
5 * This Program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2, or (at your option)
8 * any later version.
9 *
10 * This Program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with GNU Make; see the file COPYING. If not, write to
17 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
18 * http://www.gnu.org/copyleft/gpl.html
22 #pragma once
24 struct png_t {unsigned char* data; unsigned int size, pos;};
26 #ifdef __cplusplus
28 extern "C" unsigned char* DecompressPNG(struct png_t* png, int* w, int* h);
30 #include <atlimage.h>
32 class CPngImage : public CImage
34 public:
35 bool LoadFromResource(UINT id)
37 bool ret = false;
39 CStringA str;
40 if(LoadResource(id, str, _T("FILE")))
42 struct png_t png;
43 png.data = (unsigned char*)(LPCSTR)str;
44 png.size = str.GetLength();
45 int w, h;
46 if(BYTE* p = DecompressPNG(&png, &w, &h))
48 if(Create(w, -h, 32))
50 for(int y = 0; y < h; y++)
51 memcpy(GetPixelAddress(0, y), &p[w*4*y], w*4);
52 ret = true;
55 free(p);
59 return ret;
62 #endif