home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 2001 January / VPR0101A.BIN / OLS / LZR100 / lzr100.lzh / Source / GIFDecode.h < prev    next >
C/C++ Source or Header  |  2000-10-07  |  4KB  |  87 lines

  1. /*--------------------------------------------------------------------------------------*/
  2. /*    非LZW理論GIFデコーダー本体 ヘッダファイル    Ver 1.00                                */
  3. /*    for VisualStudio6.0 only                                                            */
  4. /*    ※展開用パラメータ格納構造体と関数のプロトタイプ宣言。                                */
  5. /*    Copyright (C) 2000 DJ☆Uchi [H.Uchida]                                                */
  6. /*--------------------------------------------------------------------------------------*/
  7. #include <windows.h>
  8.  
  9.  
  10. /*--------------------------------------------------------------------------------------*/
  11. /*    GIFDECODESTATUS構造体                                                                */
  12. /*    GIFデータ解析用構造体                                                                */
  13. /*    ※GIFの符号化コード取得に必要な情報をまとめた物。                                    */
  14. /*--------------------------------------------------------------------------------------*/
  15. typedef struct GIFDECODESTATUS {
  16.     DWORD code_size;        //コードサイズ(CS)
  17.     DWORD bit_size;            //ビットサイズ(CBL)
  18.     DWORD clear_code;        //クリアコード
  19.     DWORD end_code;            //エンドコード
  20.     DWORD entry;            //現エントリ数
  21.     DWORD bit_pt;            //現ビット位置
  22.     DWORD next_block;        //次ブロック開始位置
  23.     DWORD data_size;        //データサイズ
  24. } GIFDECODESTATUS;
  25.  
  26.  
  27. /*--------------------------------------------------------------------------------------*/
  28. /*    RGBDECODESTATUS構造体                                                                */
  29. /*    DIBデータ書き込み用構造体                                                            */
  30. /*    ※DIBに画像データを書き込む際に必要な情報をまとめた物。                                */
  31. /*--------------------------------------------------------------------------------------*/
  32. typedef struct RGBDECODESTATUS {
  33.     GIFDECODESTATUS *gs;    //GIFDECODESTATUS構造体参照用ポインタ
  34.     DWORD rgb_pt;            //展開データ書き込み位置(同一ライン上でのオフセット値)
  35.     DWORD rgb_offset;        //展開データ書き込みオフセット(ライン数×アラインメント)
  36.     DWORD rgb_width;        //DIB横pixel数
  37.     DWORD rgb_height;        //DIB縦pixel数
  38.     DWORD rgb_align;        //DIBアラインメント値(1ライン分のバイト数)
  39.     DWORD rgb_color;        //DIBカラービット値
  40.     DWORD rgb_line;            //展開データ書き込みライン(インタレース時に使用)
  41.     DWORD inter_offset;        //インタレースオフセット(ライン数)
  42.     DWORD inter_flag;        //インタレースフラグ
  43. } RGBDECODESTATUS;
  44.  
  45.  
  46. /*--------------------------------------------------------------------------------------*/
  47. /*    GetCode()                                                                            */
  48. /*    可変ビット長入力関数。                                                                */
  49. /*    ※符号化コードを一つ取り出して、ビット位置をインクリメントする。                    */
  50. /*    ※取り出したデータはWORDサイズの配列に一定量貯めてからデコードする。                */
  51. /*--------------------------------------------------------------------------------------*/
  52. DWORD GetCode(BYTE *gif, GIFDECODESTATUS *gs);
  53.  
  54.  
  55. /*--------------------------------------------------------------------------------------*/
  56. /*    rgb_write()                                                                            */
  57. /*    DIB画像データ書き込み関数。                                                            */
  58. /*    ※展開された画像データをDIBとして書き込みます。                                        */
  59. /*--------------------------------------------------------------------------------------*/
  60. void rgb_write(BYTE *rgb, RGBDECODESTATUS *rs, WORD code);
  61.  
  62.  
  63. /*--------------------------------------------------------------------------------------*/
  64. /*    lzw_decode()                                                                        */
  65. /*    非LZW理論展開関数(メインループ)                                                    */
  66. /*    ※WORDサイズの配列に格納された符号化コードをデコードします。                        */
  67. /*--------------------------------------------------------------------------------------*/
  68. void lzw_decode(BYTE *rgb, WORD *lzw, RGBDECODESTATUS *rs, int x, int y);
  69.  
  70.  
  71. /*--------------------------------------------------------------------------------------*/
  72. /*    lzw_char()                                                                            */
  73. /*    非LZW理論展開関数(サブ)                                                            */
  74. /*    ※非LZW理論の核。                                                                    */
  75. /*    ※指定された符号化コードに対する展開データの先頭1つを返します。                    */
  76. /*--------------------------------------------------------------------------------------*/
  77. void lzw_char(BYTE *rgb, WORD *lzw, RGBDECODESTATUS *rs, int x);
  78.  
  79.  
  80. /*--------------------------------------------------------------------------------------*/
  81. /*    lzw_string()                                                                        */
  82. /*    非LZW理論展開関数(コア)                                                            */
  83. /*    ※非LZW理論の核。                                                                    */
  84. /*    ※指定された符号化コードに対する展開データを返します。                                */
  85. /*--------------------------------------------------------------------------------------*/
  86. void lzw_string(BYTE *rgb, WORD *lzw, RGBDECODESTATUS *rs, int x);
  87.