⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gif89a.h

📁 基于minigui开发的一套图形控件系统
💻 H
字号:
#if !defined(_GIF89A_)

#define _GIF89A_



#include <fstream.h>

#include <stdio.h>

#include <minigui/common.h>

#include <minigui/gdi.h>



typedef struct

{	BOOL active;

	UINT disposalMethod;

	BOOL userInputFlag;

	BOOL trsFlag;

	WORD delayTime;

	UINT trsColorIndex;

}GCTRLEXT;



typedef struct 

{	WORD imageLPos;

	WORD imageTPos;

	WORD imageWidth;

	WORD imageHeight;

	BOOL lFlag;

	BOOL interlaceFlag;

	BOOL sortFlag;

	UINT lSize;

	BYTE *pColorTable;

	BYTE *dataBuf;

	BITMAP bmp;

	GCTRLEXT ctrlExt;

}FRAME;

typedef FRAME *LPFRAME;

typedef const FRAME *LPCFRAME;



typedef struct 

{	UINT frames;

	WORD scrWidth,scrHeight;

	BOOL gFlag;

	UINT colorRes;

	BOOL gSort;

	UINT gSize;

	UINT BKColorIdx;

	UINT pixelAspectRatio;

	BYTE *gColorTable;

}GLOBAL_INFO;

typedef GLOBAL_INFO *LPGLOBAL_INFO;

typedef const GLOBAL_INFO *LPCGLOBAL_INFO;



typedef struct

{	UINT len;

	unsigned char* p;

}STRING_TABLE_ENTRY;



class CGif89a

{

private:

	FILE *ifs;//ifstream ifs;

	char version[4];

	BOOL error;

	BOOL opened;

	BOOL inMem;

	BYTE gColorTable[256*3];

	BYTE lColorTable[256*3];

	streampos dataStart;

	FRAME *allFrames;

	UINT curIndex;

	int ZeroDataBlock;

private:

	UINT checkFrames(FILE*);//UINT checkFrames(ifstream&);

	BOOL getAllFrames(FILE*);//BOOL getAllFrames(ifstream&);

	BOOL extractData(FRAME* f,FILE*);

	int  bmpComputePitch (int bpp, Uint32 width, Uint32* pitch, BOOL does_round);

	int  GetDataBlock(FILE *src, unsigned char *buf);

	int  GetCode(FILE *src, int code_size, int flag);

	int  LWZReadByte (FILE *src, int flag, int input_code_size);

	int  ReadImage (FILE* src, MYBITMAP* bmp, FRAME * f, int ignore);

	BOOL initStrTable(STRING_TABLE_ENTRY* strTable,UINT rootSize);

	BOOL addStrTable(STRING_TABLE_ENTRY* strTable,UINT addIdx,UINT idx,unsigned char c);

private:

	GLOBAL_INFO gInfo;

	FRAME curFrame;

	GCTRLEXT ctrlExt;

public:

	CGif89a();

	CGif89a(const char* fileName,BOOL inMem);

	~CGif89a();

	BOOL operator!();

	BOOL open(const char* fileName,BOOL inMem);

	void close();

	const char* getVer();

	LPCFRAME getNextFrame();

	LPCGLOBAL_INFO getGlobalInfo();

};



#endif

⌨️ 快捷键说明

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