00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef GIF_H_
00021 #define GIF_H_ 1
00022
00023 #include <stdio.h>
00024 #include <stdlib.h>
00025 #include <string.h>
00026
00027 #include "hdf5.h"
00028
00029 #define MAX_PAL 768
00030
00031
00032 typedef unsigned char BYTE;
00033
00034
00035 typedef unsigned long WORD;
00036
00037 typedef char CHAR;
00038 typedef unsigned char boolean;
00039
00040 #define false 0
00041 #define true 1
00042
00043
00044
00045
00046
00047
00048 extern int EndianOrder;
00049
00050
00051
00052
00053
00054
00055
00056 typedef struct _GifHeader {
00057 BYTE PackedField;
00058 WORD TableSize;
00059 BYTE ImageCount;
00060 BYTE CommentCount;
00061 BYTE ApplicationCount;
00062 BYTE PlainTextCount;
00063 BYTE HDFPalette[256][3];
00064 BYTE HeaderDump[6];
00065 BYTE LSDDump[7];
00066 } GIFHEAD;
00067
00068
00069
00070
00071
00072 typedef struct _GifImageDescriptor {
00073 WORD ImageWidth;
00074 WORD ImageHeight;
00075 BYTE PackedField;
00076 WORD TableSize;
00077 WORD CodeSize;
00078 BYTE HDFPalette[256][3];
00079 BYTE GIDDump[9];
00080
00081 BYTE *Image;
00082 BYTE *GIFImage;
00083 } GIFIMAGEDESC;
00084
00085
00086
00087
00088 typedef struct _GifGraphicControlExtension {
00089 BYTE GCEDump[5];
00090 } GIFGRAPHICCONTROL;
00091
00092
00093
00094
00095 typedef struct _GifPlainTextExtension {
00096 BYTE PTEDump[15];
00097 BYTE *PlainTextData;
00098 WORD DataSize;
00099 } GIFPLAINTEXT;
00100
00101
00102
00103
00104
00105 typedef struct _GifApplicationExtension {
00106 BYTE AEDump[14];
00107 BYTE *ApplicationData;
00108 WORD DataSize;
00109 } GIFAPPLICATION;
00110
00111
00112
00113
00114 typedef struct _GifCommentExtension {
00115 BYTE CEDump[2];
00116 BYTE *CommentData;
00117 WORD DataSize;
00118 BYTE Terminator;
00119 } GIFCOMMENT;
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132 typedef struct _GifToMem {
00133 GIFHEAD *GifHeader;
00134 GIFIMAGEDESC **GifImageDesc;
00135 GIFGRAPHICCONTROL **GifGraphicControlExtension;
00136 GIFPLAINTEXT **GifPlainTextExtension;
00137 GIFAPPLICATION **GifApplicationExtension;
00138 GIFCOMMENT **GifCommentExtension;
00139 } GIFTOMEM;
00140
00141
00142
00143
00144
00145
00146 GIFTOMEM Gif2Mem(BYTE *);
00147
00148
00149 int ReadGifHeader(GIFHEAD *, BYTE **);
00150 int ReadGifImageDesc(GIFIMAGEDESC *, BYTE **);
00151 int ReadGifGraphicControl(GIFGRAPHICCONTROL *, BYTE **);
00152 int ReadGifPlainText(GIFPLAINTEXT *, BYTE **);
00153 int ReadGifApplication(GIFAPPLICATION *, BYTE **);
00154 int ReadGifComment(GIFCOMMENT *, BYTE **);
00155
00156
00157 int hdfWriteGIF(FILE *fp, BYTE *pic, int ptype, int w, int h, BYTE *rmap,
00158 BYTE *gmap, BYTE *bmap, BYTE *pc2ncmap, int numcols,
00159 int colorstyle, int BitsPerPixel);
00160
00161
00162 int WriteHDF(GIFTOMEM , CHAR * , CHAR *);
00163
00164
00165
00166
00167
00168
00169
00170
00171
00172
00173 int ReadHDF(BYTE** data, BYTE palette[256][3], hsize_t *image_size,
00174 CHAR *h5_file, CHAR *dset_name, CHAR *pal_name);
00175
00176 BYTE *Decompress(GIFIMAGEDESC *, GIFHEAD *);
00177 BYTE GetByte(BYTE *);
00178 WORD GetWord(BYTE *);
00179
00180 void cleanup(BYTE*);
00181
00182 #endif