home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / graphics / gif-util.zip / GIF_LIB.H < prev    next >
C/C++ Source or Header  |  1989-08-01  |  6KB  |  138 lines

  1. /******************************************************************************
  2. * In order to make life a little bit easier when using the GIF file format,   *
  3. * this library was written, and which does all the dirty work...          *
  4. *                                          *
  5. *                    Written by Gershon Elber,  Jun. 1989  *
  6. *******************************************************************************
  7. * History:                                      *
  8. * 14 Jun 89 - Version 1.0 by Gershon Elber.                      *
  9. ******************************************************************************/
  10.  
  11. #ifndef GIF_LIB_H
  12. #define GIF_LIB_H
  13.  
  14. #define    ERROR        0
  15. #define OK        1
  16.  
  17. #ifndef TRUE
  18. #define TRUE        1
  19. #define FALSE        0
  20. #endif
  21.  
  22. #define FILE_BUFFER_SIZE 16384         /* Files uses bigger buffers than usual */
  23.  
  24. typedef    int        BooleanType;
  25. typedef    unsigned char    PixelType;
  26. typedef unsigned char *    RowType;
  27. typedef unsigned char    ByteType;
  28.  
  29. #define MESSAGE(s)    fprintf(stderr, "\n%s: %s\n", __FILE__, s)
  30. #define EXIT(s)        { MESSAGE(s); exit(-3); }
  31.  
  32. typedef struct GifColorType {
  33.     ByteType Red, Green, Blue;
  34. } GifColorType;
  35.  
  36. /* Note entries prefixed with S are of Screen information, while entries     */
  37. /* prefixed with I are of the current defined Image.                 */
  38. typedef struct GifFileType {
  39.     int SWidth, SHeight,                /* Screen dimensions */
  40.     SColorResolution, SBitsPerPixel; /* How many colors can we generate? */
  41.     SBackGroundColor,        /* I hope you understand this one... */
  42.     ILeft, ITop, IWidth, IHeight,         /* Current image dimensions */
  43.     IInterlace,                  /* Sequential/Interlaced lines */
  44.     IBitsPerPixel;              /* How many colors this image has? */
  45.     GifColorType *SColorMap, *IColorMap;           /* NULL if not exists */
  46.     void *Private;      /* The regular user should not mesh with this one! */
  47. } GifFileType;
  48.  
  49. typedef enum {
  50.     UNDEFINED_RECORD_TYPE,
  51.     SCREEN_DESC_RECORD_TYPE,
  52.     IMAGE_DESC_RECORD_TYPE,                   /* Begin with ',' */
  53.     EXTENSION_RECORD_TYPE,                   /* Begin with '!' */
  54.     TERMINATE_RECORD_TYPE                   /* Begin with ';' */
  55. } GifRecordType;
  56.  
  57. /******************************************************************************
  58. * O.k. here are the routines one can access in order to encode GIF file:      *
  59. * (GIF_LIB file EGIF_LIB.C).                              *
  60. ******************************************************************************/
  61.  
  62. GifFileType *EGifOpenFileName(char *GifFileName, int GifTestExistance);
  63. GifFileType *EGifOpenFileHandle(int GifFileHandle);
  64. int EGifPutScreenDesc(GifFileType *GifFile,
  65.     int GifWidth, int GifHeight, int GifColorRes, int GifBackGround,
  66.     int GifBitsPerPixel, GifColorType *GifColorMap);
  67. int EGifPutImageDesc(GifFileType *GifFile,
  68.     int GifLeft, int GifTop, int Width, int GifHeight, int GifInterlace,
  69.     int GifBitsPerPixel, GifColorType *GifColorMap);
  70. int EGifPutLine(GifFileType *GifFile, PixelType *GifLine, int GifLineLen);
  71. int EGifPutPixel(GifFileType *GifFile, PixelType GifPixel);
  72. int EGifPutComment(GifFileType *GifFile, char *GifComment);
  73. int EGifPutExtension(GifFileType *GifFile, int GifExtCode, int GifExtLen,
  74.                             void *GifExtension);
  75. int EGifPutCode(GifFileType *GifFile, int GifCodeSize, ByteType *GifCodeBlock);
  76. int EGifPutCodeNext(GifFileType *GifFile, ByteType *GifCodeBlock);
  77. int EGifCloseFile(GifFileType *GifFile);
  78.  
  79. #define    E_GIF_ERR_OpenFailed    1         /* And EGif possible errors */
  80. #define    E_GIF_ERR_WriteFailed    2
  81. #define E_GIF_ERR_HasScrnDscr    3
  82. #define E_GIF_ERR_HasImagDscr    4
  83. #define E_GIF_ERR_NoColorMap    5
  84. #define E_GIF_ERR_DataTooBig    6
  85. #define E_GIF_ERR_NotEnoughMem    7
  86. #define E_GIF_ERR_DiskIsFull    8
  87. #define E_GIF_ERR_CloseFailed    9
  88. #define E_GIF_ERR_NotWriteable    10
  89.  
  90. /******************************************************************************
  91. * O.k. here are the routines one can access in order to decode GIF file:      *
  92. * (GIF_LIB file DGIF_LIB.C).                              *
  93. ******************************************************************************/
  94.  
  95. GifFileType *DGifOpenFileName(char *GifFileName);
  96. GifFileType *DGifOpenFileHandle(int GifFileHandle);
  97. int DGifGetScreenDesc(GifFileType *GifFile);
  98. int DGifGetRecordType(GifFileType *GifFile, GifRecordType *GifType);
  99. int DGifGetImageDesc(GifFileType *GifFile);
  100. int DGifGetLine(GifFileType *GifFile, PixelType *GifLine, int GifLineLen);
  101. int DGifGetPixel(GifFileType *GifFile, PixelType GifPixel);
  102. int DGifGetComment(GifFileType *GifFile, char *GifComment);
  103. int DGifGetExtension(GifFileType *GifFile, int *GifExtCode,
  104.                         ByteType **GifExtension);
  105. int DGifGetExtensionNext(GifFileType *GifFile, ByteType **GifExtension);
  106. int DGifGetCode(GifFileType *GifFile, int *GifCodeSize,
  107.                         ByteType **GifCodeBlock);
  108. int DGifGetCodeNext(GifFileType *GifFile, ByteType **GifCodeBlock);
  109. int DGifGetLZCodes(GifFileType *GifFile, int *GifCode);
  110. int DGifCloseFile(GifFileType *GifFile);
  111.  
  112. #define    D_GIF_ERR_OpenFailed    101         /* And DGif possible errors */
  113. #define    D_GIF_ERR_ReadFailed    102
  114. #define    D_GIF_ERR_NotGifFile    103
  115. #define D_GIF_ERR_NoScrnDscr    104
  116. #define D_GIF_ERR_NoImagDscr    105
  117. #define D_GIF_ERR_NoColorMap    106
  118. #define D_GIF_ERR_WrongRecord    107
  119. #define D_GIF_ERR_DataTooBig    108
  120. #define D_GIF_ERR_NotEnoughMem    109
  121. #define D_GIF_ERR_CloseFailed    110
  122. #define D_GIF_ERR_NotReadable    111
  123. #define D_GIF_ERR_ImageDefect    112
  124. #define D_GIF_ERR_EOFTooSoon    113
  125.  
  126. /******************************************************************************
  127. * O.k. here are the routines from GIF_LIB file GIF_ERR.C.              *
  128. ******************************************************************************/
  129. void PrintGifError(void);
  130. int GifLastError(void);
  131.  
  132. /******************************************************************************
  133. * O.k. here are the routines from GIF_LIB file DEV2GIF.C.              *
  134. ******************************************************************************/
  135. int DumpScreen(char *FileName, int ReqGraphDriver, int ReqGraphMode);
  136.  
  137. #endif GIF_LIB_H
  138.