jzimagepng.h

来自「君正早期ucos系统(只有早期的才不没有打包成库),MPLAYER,文件系统,图」· C头文件 代码 · 共 67 行

H
67
字号
// JzImagePng.h: interface for the CJzImagePng class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_JZIMAGEPNG_H__96107E57_9843_4EF8_AFE1_B8F355F1AD61__INCLUDED_)
#define AFX_JZIMAGEPNG_H__96107E57_9843_4EF8_AFE1_B8F355F1AD61__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "JzImage.h"

extern "C" {
#include "../png/png.h"
}

class CJzImagePng: public CJzImage
{
public:
	CJzImagePng();
	~CJzImagePng();
	CJzImagePng(PSCRINFO pscr):CJzImage(pscr){};
	bool Decode(CxFile * hFile);
protected:
	void ima_png_error(png_struct *png_ptr, char *message);
	void expand2to4bpp(BYTE* prow);
	void expand2to4bpp(BYTE* prow,int width);

	static void user_read_data(png_structp png_ptr, png_bytep data, png_size_t length)
	{
		CxFile* hFile = (CxFile*)png_ptr->io_ptr;
		if (hFile->Read(data,1,length) != length) png_error(png_ptr, "Read Error");
	}

	static void user_write_data(png_structp png_ptr, png_bytep data, png_size_t length)
	{
		CxFile* hFile = (CxFile*)png_ptr->io_ptr;
		if (hFile->Write(data,1,length) != length) png_error(png_ptr, "Write Error");
	}

	static void user_flush_data(png_structp png_ptr)
	{
		CxFile* hFile = (CxFile*)png_ptr->io_ptr;
		if (!hFile->Flush()) png_error(png_ptr, "Flush Error");
	}
    static void user_error_fn(png_structp png_ptr,png_const_charp error_msg)
	{
		strncpy((char*)png_ptr->error_ptr,error_msg,255);
		longjmp(png_ptr->jmpbuf, 1);
	}
	int number_passes;
	png_struct *png_ptr;
	png_info *info_ptr;
	BYTE *row_pointers;
	RGBQUAD* pal;
	int row_stride;
    int pixel_depth;
private:
	void deflate(DWORD wBpp);
        void ivReadRow(unsigned char *, unsigned char *);
        
};


#endif // !defined(AFX_JZIMAGEPNG_H__96107E57_9843_4EF8_AFE1_B8F355F1AD61__INCLUDED_)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?