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

📄 gif89a.h

📁 客户端: 这是一个完整的基于Wince 4.1图形图象,网络通讯(C/S)模式下的商用程序源代码包.
💻 H
字号:
#if !defined(_GIF89A_)
#define _GIF89A_

//#include <fstream.h>

#include <windows.h>
#include <stdlib.h>
#include <stdio.h>

#pragma pack(push,1)

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;
	GCTRLEXT ctrlExt;
}FRAME;
#pragma pack(pop)

typedef FRAME *LPFRAME;
typedef const FRAME *LPCFRAME;

#pragma pack(push,1)
typedef struct 
{	UINT frames;
	WORD scrWidth,scrHeight;
	BOOL gFlag;
	UINT colorRes;
	BOOL gSort;
	UINT gSize;
	UINT BKColorIdx;
	UINT pixelAspectRatio;
	BYTE *gColorTable;
}GLOBAL_INFO;
#pragma pack(pop)

typedef GLOBAL_INFO *LPGLOBAL_INFO;
typedef const GLOBAL_INFO *LPCGLOBAL_INFO;

#pragma pack(push,1)
typedef struct
{	UINT len;
	unsigned char* p;
}STRING_TABLE_ENTRY;
#pragma pack(pop)

class CGif89a
{
private:
	//ifstream ifs;
	FILE *ifs;
	char version[4];
	BOOL error;
	BOOL opened;
	BOOL inMem;
	BYTE gColorTable[256*3];
	BYTE lColorTable[256*3];
	//streampos dataStart;
	long dataStart;
	      
	FRAME *allFrames;
	UINT curIndex;
private:
	//UINT checkFrames(ifstream&);
	//BOOL getAllFrames(ifstream&);
	UINT checkFrames(FILE *ifstream);
	BOOL getAllFrames(FILE *ifstream);
	BOOL extractData(FRAME* f,FILE *ifstream);
	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(LPCTSTR fileName,BOOL inMem);
	~CGif89a();
	BOOL operator!();
	BOOL open(LPCTSTR fileName,BOOL inMem);
	void close();
	LPCSTR getVer();
	LPCFRAME getNextFrame();
	//
	LPCFRAME getCurFrame();  //    
	//
	LPCGLOBAL_INFO getGlobalInfo();
	//
	//
	LPCFRAME getHeadFrame();
	//reset data
	void Reset()
	{
	  fseek(ifs,dataStart,SEEK_SET);//
	}
};

#endif

⌨️ 快捷键说明

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