📄 whirlgif.h
字号:
/* * whirlgif.h * * Copyright (c) 1997,1998,1999 by Hans Dinsen-Hansen * Copyright (c) 1995,1996 by Kevin Kadow * Copyright (c) 1990,1991,1992 by Mark Podlipec. * All rights reserved. * * This software may be freely copied, modified and redistributed * without fee provided that this copyright notice is preserved * intact on all copies and modified copies. * * There is no warranty or other guarantee of fitness of this software. * It is provided solely "as is". The author(s) disclaim(s) all * responsibility and liability with respect to this software's usage * or its effect upon hardware or computer systems. * * The Graphics Interchange format (c) is the Copyright property of * Compuserve Incorporated. Gif(sm) is a Service Mark property of * Compuserve Incorporated. * */#define DA_REV 3.04/* common includes */#include <stdio.h>#include <stdlib.h>#ifdef _USE_STRINGS_H#include <strings.h>#else#include <string.h>#endif#ifdef _FOPEN_TXT_OR_BIN#define WRIBIN "wb"#define REATXT "rt"#define REABIN "rb"#else/* Usually there is no need to distinguish between binary and txt */#define WRIBIN "w"#define REATXT "r"#define REABIN "r"#endif#ifndef TRUE#define TRUE 1#endif#ifndef FALSE#define FALSE 0#endif/* define constants and defaults */ /* Default amount of inter-frame time */#define DEFAULT_TIME 10 /* If set to 1, Netscape 'loop' code will be added by default */#define DEFAULT_LOOP 0 /* If set to 1, use the colormaps from all images, not just the first */#define DEFAULT_USE_COLORMAP 0 /* Used in calculating the transparent color */#define TRANS_NONE 1#define TRANS_RGB 2#define TRANS_MAP 3#define DISP_NONE 0#define DISP_NOT 1#define DISP_BACK 2#define DISP_PREV 3#define DEFAULT_DISPOSAL DISP_NONE /* set default disposal method here to any of the DISP_XXXX values */#define BIGSTRING 256#define MAXVAL 4096 /* maxval of lzw coding size */#define MAXVALP 4096#define TERMIN 'T'#define LOOKUP 'L'#define SEARCH 'S'#define noOfArrays 20/* defines the amount of memory set aside in the encoding for the * LOOKUP type nodes; for a 256 color GIF, the number of LOOKUP * nodes will be <= noOfArrays, for a 128 color GIF the number of * LOOKUP nodes will be <= 2 * noOfArrays, etc. *//* define shorthand for various types */#define LONG int#define ULONG unsigned int#define BYTE char#define UBYTE unsigned char#define SHORT short#define USHORT unsigned short#define WORD short int#define UWORD unsigned short int/* definition of various structures */typedef struct Transparency { int type; UBYTE valid; UBYTE map; UBYTE red; UBYTE green; UBYTE blue; } Transparency;typedef struct Global { Transparency trans; int left; int top; unsigned int time; unsigned short disposal; } Global;typedef struct GifScreenHdr { int width; int height; UBYTE m; UBYTE cres; UBYTE pixbits; UBYTE bc; UBYTE aspect; } GifScreenHdr;typedef union GifColor { struct cmap { UBYTE red; UBYTE green; UBYTE blue; UBYTE pad; } cmap; ULONG pixel; } GifColor;typedef struct GifImageHdr { int left; int top; int width; int height; UBYTE m; UBYTE i; UBYTE pixbits; UBYTE reserved; } GifImageHdr;typedef struct GifTree { char typ; /* terminating, lookup, or search */ int code; /* the code to be output */ UBYTE ix; /* the color map index */ struct GifTree **node, *nxt, *alt;} GifTree;/* define inline functions */#define GifPutShort(i, fout) {fputc(i&0xff, fout); fputc(i>>8, fout);}#define GifGetShort(fin) (Xgetc(fin) | Xgetc(fin)<<8)/* forward declaration of the functions */char *AddCodeToBuffer(int, short, char *);void CalcTrans(char *);void ClearTree(int, GifTree *);void GifClearTable();void GifComment(FILE *, char *);void GifDecode(FILE *, UBYTE *, GifImageHdr);void GifEncode(FILE *, UBYTE *, int, int);void GifLoop(FILE *, unsigned int);void GifReadFile(FILE *, char *, int);void GifScreenHeader(FILE *, FILE *, int);UBYTE *GifSendData(UBYTE *, int, UBYTE *);void ReadImageHeader(FILE *);void SetOffset(char *);long sq(UBYTE, UBYTE);void TheEnd();void TheEnd1(char *);void Usage();void WriteImageHeader(FILE *);UBYTE Xgetc(FILE *);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -