This is xanim_iff.h in view mode; [Download] [Up]
/* * xanim_iff.h * * Copyright (C) 1990,1991,1992,1993,1994 by Mark Podlipec. * All rights reserved. * * This software may be freely copied, modified and redistributed without * fee for non-commerical purposes 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. * */ typedef struct { LONG id; LONG size; } Chunk_Header; /* Graphic Stuff */ #define ANHD 0x414e4844 #define ANIM 0x414e494d #define ANSQ 0x414e5351 #define BMHD 0x424d4844 #define BODY 0x424f4459 #define TINY 0x54494E59 #define CAMG 0x43414d47 #define CMAP 0x434d4150 #define CRNG 0x43524e47 #define DLTA 0x444c5441 #define DPAN 0x4450414e #define DPPS 0x44505053 #define DPPV 0x44505056 #define DRNG 0x44524e47 #define FORM 0x464f524d #define GRAB 0x47524142 #define ILBM 0x494c424d #define IMRT 0x494d5254 #define DPI 0x44504920 #define ANFI 0x414e4649 /* Grouping Stuff */ #define LIST 0x4c495354 #define PROP 0x50524f50 #define FACE 0x46414345 /* Sound stuff */ #define VHDR 0x56484452 #define ANNO 0x414e4e4f #define CHAN 0x4348414e typedef struct { UWORD width, height; WORD x, y; UBYTE depth; UBYTE masking; UBYTE compression; UBYTE pad1; UWORD transparentColor; UBYTE xAspect, yAspect; WORD pageWidth, pageHeight; } Bit_Map_Header; #define BMHD_COMP_NONE 0L #define BMHD_COMP_BYTERUN 1L #define BMHD_MSK_NONE 0L #define BMHD_MSK_HAS 1L #define BMHD_MSK_TRANS 2L #define BMHD_MSK_LASSO 3L #define mskNone 0 #define mskHasMask 1 #define mskHasTransparentColor 2 #define mskLasso 3 #define cmpNone 0 #define cmpByteRun1 1 /* Aspect ratios: The proper fraction xAspect/yAspect represents the pixel * aspect ratio pixel_width/pixel_height. * * For the 4 Amiga display modes: * 320 x 200: 10/11 (these pixels are taller than they are wide) * 320 x 400: 20/11 * 640 x 200: 5/11 * 640 x 400: 10/11 */ #define x320x200Aspect 10 #define y320x200Aspect 11 #define x320x400Aspect 20 #define y320x400Aspect 11 #define x640x200Aspect 5 #define y640x200Aspect 11 #define x640x400Aspect 10 #define y640x400Aspect 11 /* CRNG Stuff */ #define IFF_CRNG_ACTIVE 1 #define IFF_CRNG_REVERSE 2 /* 16384 * 16.6667 ms */ #define IFF_CRNG_INTERVAL (273065) #define IFF_CRNG_HDR_SIZE 8 #define IFF_CRNG_DPII_KLUDGE 36 /* CAMG Stuff */ #define IFF_CAMG_NOP 0x00000001 #define IFF_CAMG_EHB 0x00000080 #define IFF_CAMG_HAM 0x00000800 #define IFF_CAMG_LACE 0x00004000 typedef struct { UWORD width,height; WORD x, y; WORD xoff, yoff; } Face_Header; typedef struct { LONG id; LONG size; LONG subid; } Group_Header; typedef struct { LONG id; LONG size; LONG subid; UBYTE grpData[ 1 ]; } Group_Chunk; typedef struct { UBYTE op; UBYTE mask; UWORD w,h; UWORD x,y; ULONG abstime; ULONG reltime; UBYTE interleave; UBYTE pad0; ULONG bits; UBYTE pad[16]; } Anim_Header; #define Anim_Header_SIZE 40 #define IFF_ANHD_LDATA 0x0001 #define IFF_ANHD_XOR 0x0002 #define IFF_ANHD_1LIST 0x0002 #define IFF_ANHD_RLC 0x0008 #define IFF_ANHD_VERT 0x0010 #define IFF_ANHD_LIOFF 0x0020 typedef struct { LONG minx; LONG miny; LONG maxx; LONG maxy; } IFF_DLTA_HDR; typedef struct { ULONG dnum; ULONG time; ULONG frame; } IFF_ANSQ; typedef struct IFF_ACT_LST_STRUCT { ULONG type; XA_ACTION *act; struct IFF_ACT_LST_STRUCT *next; } IFF_ACT_LST; typedef struct { ULONG cnt; ULONG frame; IFF_ACT_LST *start; IFF_ACT_LST *end; } IFF_DLTA_TABLE; extern ULONG IFF_Read_File(); extern ULONG IFF_Delta3(); extern ULONG IFF_Delta5(); extern ULONG IFF_Delta7(); extern ULONG IFF_Deltal(); extern ULONG IFF_DeltaJ(); extern LONG Is_IFF_File(); extern LONG UnPackRow(); /* POD NOTE: further optimization would be to have * IFF_Byte_Mod and IFF_Byte_Mod_with_XOR_flag */ #define IFF_Byte_Mod(ptr,data,dmask,xorflag) { register UBYTE *_iptr = ptr; \ if (xorflag) { \ if (0x80 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x40 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x20 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x10 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x08 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x04 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x02 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x01 & data) *_iptr ^= dmask; \ } else { \ register UBYTE dmaskoff = ~dmask; \ if (0x80 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x40 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x20 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x10 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x08 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x04 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x02 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x01 & data) *_iptr |= dmask; else *_iptr &= dmaskoff; \ } } #define IFF_Short_Mod(ptr,data,dmask,xorflag) { register UBYTE *_iptr = ptr; \ if (xorflag) { \ if (0x8000 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x4000 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x2000 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x1000 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x0800 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x0400 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x0200 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x0100 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x0080 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x0040 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x0020 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x0010 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x0008 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x0004 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x0002 & data) *_iptr++ ^= dmask; else _iptr++; \ if (0x0001 & data) *_iptr ^= dmask; \ } else { \ register UBYTE dmaskoff = ~dmask; \ if (0x8000 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x4000 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x2000 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x1000 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x0800 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x0400 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x0200 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x0100 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x0080 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x0040 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x0020 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x0010 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x0008 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x0004 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x0002 & data) *_iptr++ |= dmask; else *_iptr++ &= dmaskoff; \ if (0x0001 & data) *_iptr |= dmask; else *_iptr &= dmaskoff; \ } }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.