GIFAPI.h
上传用户:gdjinyi
上传日期:2013-02-01
资源大小:1701k
文件大小:3k
源码类别:

源码/资料

开发平台:

Visual C++

  1. typedef struct gifheader
  2.    {
  3.       BYTE bySignature[3];
  4.       BYTE byVersion[3];
  5.    }  GIFHEADER;
  6. typedef struct gifscrdesc
  7.    {
  8.       WORD wWidth;
  9.       WORD wDepth;
  10.       struct globalflag
  11.          {
  12.             BYTE PalBits   : 3;
  13.             BYTE SortFlag  : 1;
  14.             BYTE ColorRes  : 3;
  15.             BYTE GlobalPal : 1;
  16.          }  GlobalFlag;
  17.       BYTE byBackground;
  18.       BYTE byAspect;
  19.    }  GIFSCRDESC;
  20. typedef struct gifimage
  21.    {
  22.       WORD wLeft;
  23.       WORD wTop;
  24.       WORD wWidth;
  25.       WORD wDepth;
  26.       struct localflag
  27.          {
  28.             BYTE PalBits   : 3;
  29.             BYTE Reserved  : 2;
  30.             BYTE SortFlag  : 1;
  31.             BYTE Interlace : 1;
  32.             BYTE LocalPal  : 1;
  33.          }  LocalFlag;
  34.    }  GIFIMAGE;
  35. typedef struct gifcontrol
  36.    {
  37.       BYTE byBlockSize;
  38.       struct flag
  39.          {
  40.             BYTE Transparency   : 1;
  41.             BYTE UserInput      : 1;
  42.             BYTE DisposalMethod : 3;
  43.             BYTE Reserved       : 3;
  44.          }  Flag;
  45.       WORD wDelayTime;
  46.       BYTE byTransparencyIndex;
  47.       BYTE byTerminator;
  48.    }  GIFCONTROL;
  49. typedef struct gifplaintext
  50.    {
  51.       BYTE byBlockSize;
  52.       WORD wTextGridLeft;
  53.       WORD wTextGridTop;
  54.       WORD wTextGridWidth;
  55.       WORD wTextGridDepth;
  56.       BYTE byCharCellWidth;
  57.       BYTE byCharCellDepth;
  58.       BYTE byForeColorIndex;
  59.       BYTE byBackColorIndex;
  60.    }  GIFPLAINTEXT;
  61. typedef struct gifapplication
  62.    {
  63.       BYTE byBlockSize;
  64.       BYTE byIdentifier[8];
  65.       BYTE byAuthentication[3];
  66.    }  GIFAPPLICATION;
  67. typedef struct gifd_var
  68.    {
  69.       LPSTR lpDataBuff;
  70.       LPSTR lpBgnBuff;
  71.       LPSTR lpEndBuff;
  72.       DWORD dwDataLen;
  73.       WORD  wMemLen;
  74.       WORD  wWidth;
  75.       WORD  wDepth;
  76.       WORD  wLineBytes;
  77.       WORD  wBits;
  78.       BOOL  bEOF;
  79.       BOOL  bInterlace;
  80.    }  GIFD_VAR;
  81. typedef GIFD_VAR FAR *LPGIFD_VAR;
  82. typedef struct gifc_var
  83.    {
  84.       LPSTR lpDataBuff;
  85.       LPSTR lpEndBuff;
  86.       DWORD dwTempCode;
  87.       WORD  wWidth;
  88.       WORD  wDepth;
  89.       WORD  wLineBytes;
  90.       WORD  wBits;
  91.       WORD  wByteCnt;
  92.       WORD  wBlockNdx;
  93.       BYTE  byLeftBits;
  94.    }  GIFC_VAR;
  95. typedef GIFC_VAR FAR *LPGIFC_VAR;
  96. // 宏运算
  97. #define DWORD_WBYTES(x)         ( (((x) + 31UL) >> 5) << 2 )
  98. #define WORD_WBYTES(x)          ( (((x) + 15UL) >> 4) << 1 )
  99. #define BYTE_WBYTES(x)          (  ((x) +  7UL) >> 3       )
  100. //常量
  101. #define MAX_BUFF_SIZE           32768 /* 32K */
  102. #define MAX_HASH_SIZE            5051
  103. #define MAX_TABLE_SIZE           4096 /* 12-bit */
  104. #define MAX_SUBBLOCK_SIZE         255
  105. // 函数原型
  106. BOOL WINAPI DIBToGIF(LPSTR lpDIB, CFile& file, BOOL bInterlace);
  107. void WINAPI EncodeGIF_LZW(LPSTR lpDIBBits, CFile& file, 
  108.   LPGIFC_VAR lpGIFCVar,WORD wWidthBytes, BOOL bInterlace);
  109. void WINAPI GIF_LZW_WriteCode(CFile& file, WORD wCode, LPSTR lpSubBlock,
  110.   LPBYTE lpbyCurrentBits,LPGIFC_VAR lpGIFCVar);
  111. HDIB WINAPI ReadGIF(CFile& file);
  112. void WINAPI ReadSrcData(CFile& file, LPWORD lpwMemLen, LPDWORD lpdwDataLen,
  113.                         LPSTR lpSrcBuff, LPBOOL lpbEOF);
  114. void WINAPI DecodeGIF_LZW(CFile& file, LPSTR lpDIBBits,
  115.   LPGIFD_VAR lpGIFDVar,WORD wWidthBytes);