/*--anim.h---------------------------------------------------------- * anim definitions for ANIM2PCX. */ /* --- DeluxePaint Animation currently imposes this limit, though * file format is capable of more. */ #define MAX_SUPPORTED_FRAMES (UWORD)9999 #define MAX_FRAME_CHARS 4 /* # digits in MAX_SUPPORTED_FRAMES */ #define MAX_FRAMES (UWORD)65534 /* Maximum # frames supported by current anim format. * "65534": 1 left at end for "last-to-first" delta. * NOTE: can't usefully be this large, as need free lp's during editting. * Most anim's won't fit 255 pages per lp, so until we allow more than * 255 lp's, won't reach MAX_FRAMES anyway. */ #define MAX_RECORDS (UWORD)65535 #define FASTEST_RATE 70 /* Fastest rate anim can be played at. */ #define MAX_LARGE_PAGE_SIZE (UWORD)(320*203) /* WARNING: this may be stored in DP Animation's picture buffer, * ASSUMES we've allocated three extra lines to the buffer. * This allows us to come close to 64 KB, to minimize file wastage. */ #define NBYTES_IN_BITMAP(bm) ((UWORD)(bm)->width * (UWORD)(bm)->box.h) /* TBD: ASSUMES < 64 KB. Won't be true for Super-VGA. */ #define BSEG(bitmap) (bitmap)->seg[0] #define PALETTE_SIZE (MAX_COLORS * sizeof(LONG)) #define FIRST_FRAME_N 1 /* Frame #s start at 1. */ #define LAST_DELTA_N (FIRST_FRAME_N-1) /* Frame # used to store delta from last-frame to first. */ #define LAST_FRAME_N (animFrames-1+FIRST_FRAME_N) extern UWORD animFrames; /* --------------- from IFF.H (Interchange File Format) --------------- */ /* --- Four-character IDentifier builder. */ #define MakeID(d,c,b,a) ((LONG)(a)<<24 | (LONG)(b)<<16 | \ (LONG)(c)<<8 | (LONG)(d) ) /* --------------- anim file format -------------------- */ #define CCYCLE70 0 /* 70 Hz color-cycle interrupt */ /* P:Caused performance problems on slow machines, especially with cache on. */ /* ---Bitmap body types. */ #define BMBODY_UNCOMPRESSED 0 #define BMBODY_RUNSKIPDUMP 1 /* Must match ANIMA.ASM/MakeRunSkipDump. */ /* --- RunSkipDump Bitmap body format. Matches ANIM.INC*/ #define OP_DUMP 0x00 /* | cnt */ #define OP_RUN 0x00 /* Cnt in separate byte. */ #define OP_SKIP 0x80 /* | cnt */ #define LONG_OP 0x80 #define LONG_SKIP 0x00 /* sub-ops for LONG_OP */ #define LONG_DUMP 0x80 #define LONG_RUN 0xC0 #define MAX_SHORT_DUMP 127 #define MAX_LONG_DUMP 0x3fff #define MAX_SHORT_RUN 255 #define MAX_LONG_RUN 0x3fff #define MAX_SHORT_SKIP 127 #define MAX_LONG_SKIP 0x7fff #define MIN_RUN 4 /* When in Dump, minimum worthwhile Run. */ #define MIN_SKIP 2 /* When in Dump, minimum worthwhile Skip. */ #define MIN_RUN_SKIP 4 /* When in Run, minimum worthwhile Skip. */ /* Note: deltaX.nBytes shorter if can subsume Skip in the Run, * but PC screen i/o is slow enough that it is worth time-saving * of having the Skip. */ /*----------------------------------------------------------------------*/ /* Color Cycles */ /*----------------------------------------------------------------------*/ #define MAXNCYCS 16 /* lpfile depends on the size of this structure */ typedef struct { WORD count; WORD rate; WORD flags; UBYTE low, high; /* bounds of range */ } Range;