//pngReader.h
#ifndef _PNGREADER_H_
#define _PNGREADER_H_
#include "gfx/mstBitmap.h"
#include "png.h"
/* Transparency parameters */
#define PNG_ALPHA -2 /* Use alpha channel in PNG file, if there is one */
#define PNG_SOLID -1 /* No transparency */
#define PNG_STENCIL 0 /* Sets alpha to 0 for r=g=b=0, 1 otherwise */
#define HEADER_BYTES_TO_CHECK 8
typedef struct
{
LPBYTE data;
DWORD size;
LPDWORD bytesRead;
} ReadInfo, *ReadInfoPtr;
class PngReader
{
public:
PngReader() {};
~PngReader() {};
static MstBitmap* readPngStream( void* stream,int size);
static MstBitmap* readPngFile( const char* fileName);
static void png_error(png_structp png_ptr, png_const_charp message);
static void png_warning(png_structp png_ptr, png_const_charp message);
protected:
static void pngReadDataFn(png_structp png_ptr, png_bytep data, png_size_t length);
private:
};
#endif
//pngReader.cpp
#include <windows.h>
#include "pngReader.h"
#include <assert.h>
#include <iostream>
#include <GL/gl.h>
extern "C"
{
#include <zlib.h>
#inc