GifModule.h
上传用户:yatsl7111
上传日期:2007-01-08
资源大小:1433k
文件大小:7k
- // GifModule.h : main header file for the GIFMODULE DLL
- //
- #if !defined(AFX_GIFMODULE_H__C03B0E49_460A_11D4_8853_C6A14464AE19__INCLUDED_)
- #define AFX_GIFMODULE_H__C03B0E49_460A_11D4_8853_C6A14464AE19__INCLUDED_
- #if _MSC_VER > 1000
- #pragma once
- #endif // _MSC_VER > 1000
- #ifndef __AFXWIN_H__
- #error include 'stdafx.h' before including this file for PCH
- #endif
- #include "resource.h" // main symbols
- #include "..publicgol_isee.h" // 此文件定义了接口数据包
- // 扫描行尺寸
- #define WIDTHBYTES(bits) ((((bits)+31)>>5)<<2)
- // 进度总尺寸
- #define RWPROGRESSSIZE 100
- // 目标图位深度格式
- enum DESFORMAT
- {
- DF_NULL, // 无效的目标格式
- DF_16_555, // 16位555格式(也就是15位图像)
- DF_16_565, // 16位565格式
- DF_24, // 24位格式
- DF_32, // 32位格式
- DF_MAX // 有效值边界
- };
- // GIF版本标识串长度
- #define GIFVERSIZE 6
- struct _tagGIFHEADER;
- typedef struct _tagGIFHEADER GIFHEADER;
- typedef struct _tagGIFHEADER *LPGIFHEADER;
- struct _tagGIFINFO;
- typedef struct _tagGIFINFO GIFINFO;
- typedef struct _tagGIFINFO *LPGIFINFO;
- struct _tagGIFRGB;
- typedef struct _tagGIFRGB GIFRGB;
- typedef struct _tagGIFRGB *LPGIFRGB;
- struct _tagIMAGEDATAINFO;
- typedef struct _tagIMAGEDATAINFO IMAGEDATAINFO;
- typedef struct _tagIMAGEDATAINFO *LPIMAGEDATAINFO;
- struct _tagLZWTABLE;
- typedef struct _tagLZWTABLE LZWTABLE;
- typedef struct _tagLZWTABLE *LPLZWTABLE;
- struct _tagGRAPHCTRL;
- typedef struct _tagGRAPHCTRL GRAPHCTRL;
- typedef struct _tagGRAPHCTRL *LPGRAPHCTRL;
- struct _tagNOTEHCTRL;
- typedef struct _tagNOTEHCTRL NOTEHCTRL;
- typedef struct _tagNOTEHCTRL *LPNOTEHCTRL;
- struct _tagTEXTCTRL;
- typedef struct _tagTEXTCTRL TEXTCTRL;
- typedef struct _tagTEXTCTRL *LPTEXTCTRL;
- struct _tagAPPCTRL;
- typedef struct _tagAPPCTRL APPCTRL;
- typedef struct _tagAPPCTRL *LPAPPCTRL;
- //@@@@@@@@@@@@@@@GIF87a 和 GIF89a 共用的结构@@@@@@@@@@@@@@@@@@
- struct _tagGIFINFO
- {
- WORD FileType; // 89a or 87a
- WORD ColorNum; // 颜色数
- WORD BitCount; // 图像的位深度
- WORD Width;
- WORD Height;
- WORD FrameCount; // 共有几幅图
- BYTE bkindex; // 背景色索引
- BYTE InitPixelBits; // 压缩数据起始数据Bits位数
- };
- struct _tagGIFRGB
- {
- BYTE bRed;
- BYTE bGreen;
- BYTE bBlue;
- };
- struct _tagGIFHEADER
- {
- BYTE Signature[GIFVERSIZE]; // 图像版本(87a or 89a)
- WORD ScreenWidth; // 图像宽度
- WORD ScreenHeight; // 图像高度
- BYTE GlobalFlagByte; // 全局标记
- BYTE BackGroundColor; // 背景色
- BYTE AspectRadio; // 89a版的长宽比
- };
- // 图像描述符
- struct _tagIMAGEDATAINFO
- {
- BYTE ImageLabel; // 标签值:0x2c
- WORD ImageLeft;
- WORD ImageTop;
- WORD ImageWidth;
- WORD ImageHeight;
- BYTE LocalFlagByte; // 位域...
- };
- #define LZWTABLESIZE 5200
- struct _tagLZWTABLE
- {
- WORD Header;
- WORD Tail;
- WORD Code;
- };
- //@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ end @@@@@@@@@@@@@@@@@@@@@@@@@@@@
- //@@@@@@@@@@@@以下结构只适用于GIF89a格式的图像文件@@@@@@@@@@@@@@
- // 图形扩展块
- struct _tagGRAPHCTRL
- {
- BYTE ExtIntr; //0x21
- BYTE Label; //0xF9
- BYTE BlockSize; //0x04
- BYTE PackedField;
- WORD DelayTime;
- BYTE TranColorIndex;
- BYTE blockTerminator;//0x00
- };
- // 注释扩展块
- struct _tagNOTEHCTRL
- {
- BYTE ExtIntr; //0x21
- BYTE Label; //0xFE
- BYTE Data[256]; //变长最大256
- BYTE blockTerminator;//0x00
- };
- // 文本控制区
- struct _tagTEXTCTRL
- {
- BYTE ExtIntr; //0x21
- BYTE Label; //0x01
- BYTE BlockSize; //0x0c
- WORD Left;
- WORD Top;
- WORD Width;
- WORD Height;
- BYTE ForeColorIndex;
- BYTE BkColorIndex;
- char Data[256]; //变长最大256
- BYTE blockTerminator;//0x00
- };
- // 应用程序控制区
- struct _tagAPPCTRL
- {
- BYTE ExtIntr; //0x21
- BYTE Label; //0xFF
- BYTE BlockSize; //0x0b
- BYTE Identifier[8];
- BYTE Authentication[3];
- BYTE Data[256]; //变长最大256
- BYTE blockTerminator; //0x00
- };
- //@@@@@@@@@@@@@@@@@@@@@@@@@@ end @@@@@@@@@@@@@@@@@@@@@@@@@@@@
- /////////////////////////////////////////////////////////////////////////////
- // CGifModuleApp
- // See GifModule.cpp for the implementation of this class
- //
- class CGifModuleApp : public CWinApp
- {
- public:
- CGifModuleApp();
- // Overrides
- // ClassWizard generated virtual function overrides
- //{{AFX_VIRTUAL(CGifModuleApp)
- //}}AFX_VIRTUAL
- //{{AFX_MSG(CGifModuleApp)
- // NOTE - the ClassWizard will add and remove member functions here.
- // DO NOT EDIT what you see in these blocks of generated code !
- //}}AFX_MSG
- DECLARE_MESSAGE_MAP()
- };
- // 定义模块版本
- #define MODULE_BUILDID 11
- // 接口函数声明 — 第一层,唯一与外界联系的接口
- int WINAPI AccessGIFModule(INFOSTR *pInfo);
- // 命令解释函数 — 第二层解释函数
- void _fnCMD_GETPROCTYPE(INFOSTR *pInfo);
- void _fnCMD_GETWRITERS(INFOSTR *pInfo);
- void _fnCMD_GETWRITERMESS(INFOSTR *pInfo);
- void _fnCMD_GETBUILDID(INFOSTR *pInfo);
- void _fnCMD_IS_VALID_FILE(INFOSTR *pInfo);
- void _fnCMD_GET_FILE_INFO(INFOSTR *pInfo);
- void _fnCMD_LOAD_FROM_FILE(INFOSTR *pInfo);
- void _fnCMD_SAVE_TO_FILE(INFOSTR *pInfo);
- void _fnCMD_IS_SUPPORT(INFOSTR *pInfo);
- void _fnCMD_RESIZE(INFOSTR *pInfo);
- // 内部执行函数 - 第三层执行函数.....
- BOOL IsFileExist(char *lpFileName);
- BOOL LoadGIF(PBYTE pFileContent, DWORD filesize, LPINFOSTR pInfo);
- UINT AnalizeFileHeader(PBYTE pFileContent, DWORD filesize);
- BOOL ConvertToBmpImage(PBYTE SrcData, LPINFOSTR pInfo);
- // 将GIF图像保存到数据包背景图像中(只针对单帧GIF图像)
- BOOL ConvertToBackgroup(PBYTE SrcData,LPINFOSTR lpInfo);
- UINT GetImage(PBYTE pData, LPINFOSTR pInfo);
- UINT GetNoteContent(PBYTE pNote);
- UINT GetAppContent(PBYTE pApp);
- UINT ShowText(PBYTE pText);
- UINT GetGrphContent(PBYTE pGrCtrl);
- //从字符串中任意字节的某个Bits开始取若干bits,并返回结果
- WORD GetOneCode(PBYTE CodeStr ,UINT CodeStrLen, UINT OffsetChar , UINT OffsetBits, UINT Length);
- //当某指针指向文件中压缩数据前位置时,取得当前数据区中压缩数据所占字节数
- UINT GetCodeCountOnChar (PBYTE CodeStr ,UINT &AllDataLen);
- //当某指针指向文件中压缩数据前位置时,取得当前数据区中压缩数据
- PBYTE GetCodeDataOnChar(PBYTE CodeDataStr, UINT dataCount);
- //把压缩数据解於WORD * 中,
- PBYTE GetCodeDataOnBits (PBYTE CodeDataStr,UINT InitLen ,UINT &CodeDataLen);
- //得到部份真实数据
- BOOL GetPartImageDataFromTable(PBYTE &pImage,LZWTABLE * Table,UINT TableLen);
- // 获取GIF文件中的图像个数(该函数只用于_fnCMD_GET_FILE_INFO()函数)
- int _get_imgcount(PBYTE pFileContent, DWORD filesize);
- // 获取数据包指定位图格式
- DESFORMAT _get_desformat(LPINFOSTR pInfo);
- // 清除子图像链表
- void _clear_list(void);
- WORD _cnv_rgb_to_555(BYTE red, BYTE green, BYTE blue);
- void _cnv_555_to_rgb(WORD col, PBYTE red, PBYTE green, PBYTE blue);
- WORD _cnv_rgb_to_565(BYTE red, BYTE green, BYTE blue);
- void _cnv_565_to_rgb(WORD col, PBYTE red, PBYTE green, PBYTE blue);
- DWORD _cnv_rgb_to_888(BYTE red, BYTE green, BYTE blue);
- /////////////////////////////////////////////////////////////////////////////
- //{{AFX_INSERT_LOCATION}}
- // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
- #endif // !defined(AFX_GIFMODULE_H__C03B0E49_460A_11D4_8853_C6A14464AE19__INCLUDED_)