/*************************************************************************** * * NAME * XORDLTAshort -- unpack an animation frame * * SYNOPSIS * XORDLTAshort( bm, deltaword ); * * struct BitMap *bm; * UWORD *deltaword; * * DESCRIPTION * Uses the ANIM XOR, offset/number, vertical compression technique * for unpacking animation frames. * * copyright (c) 1987 Martin D. Hash * * LAST EDITED * Martin Hash 23 Aug 1987 * * EDIT HISTORY * 22 Mar 1987 MH Created. * 16 Aug ANIM standard. * **********************************************************************/ #include #include #include "df1:ANIMCons.h" /* FUNCTION */ int XORDLTAshort( bm, deltaword ) struct BitMap *bm; UWORD *deltaword; { /* LOCAL VARIABLES */ int i; LONG *deltadata; register WORD *ptr, *planeptr; register int s, size, nw; register WORD *data, *dest; /* CODE */ deltadata = (LONG *)deltaword; nw = bm->BytesPerRow >>1; for (i = 0; i < bm->Depth; i++) { planeptr = (WORD *)(bm->Planes[i]); data = deltaword + deltadata[i]; ptr = deltaword + deltadata[i+8]; while (*ptr != -1) { dest = planeptr + *ptr++; size = *ptr++; if (size < 0) { for (s = size; s < 0; s++) { *dest ^= *data; dest += nw; } data++; } else { for (s = 0; s < size; s++) { *dest ^= *data++; dest += nw; } } } } return(0); }