home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 5
/
FreshFish_July-August1994.bin
/
bbs
/
cbm
/
nduk-v39.lha
/
V39
/
include
/
graphics
/
gels.h
< prev
next >
Wrap
C/C++ Source or Header
|
1992-09-24
|
9KB
|
269 lines
#ifndef GRAPHICS_GELS_H
#define GRAPHICS_GELS_H
/*
** $VER: gels.h 39.0 (21.08.91)
** Includes Release 39.108
**
** include file for AMIGA GELS (Graphics Elements)
**
** (C) Copyright 1985-1992 Commodore-Amiga, Inc.
** All Rights Reserved
*/
#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif
/* VSprite flags */
/* user-set VSprite flags: */
#define SUSERFLAGS 0x00FF /* mask of all user-settable VSprite-flags */
#define VSPRITE 0x0001 /* set if VSprite, clear if Bob */
#define SAVEBACK 0x0002 /* set if background is to be saved/restored */
#define OVERLAY 0x0004 /* set to mask image of Bob onto background */
#define MUSTDRAW 0x0008 /* set if VSprite absolutely must be drawn */
/* system-set VSprite flags: */
#define BACKSAVED 0x0100 /* this Bob's background has been saved */
#define BOBUPDATE 0x0200 /* temporary flag, useless to outside world */
#define GELGONE 0x0400 /* set if gel is completely clipped (offscreen) */
#define VSOVERFLOW 0x0800 /* VSprite overflow (if MUSTDRAW set we draw!) */
/* Bob flags */
/* these are the user flag bits */
#define BUSERFLAGS 0x00FF /* mask of all user-settable Bob-flags */
#define SAVEBOB 0x0001 /* set to not erase Bob */
#define BOBISCOMP 0x0002 /* set to identify Bob as AnimComp */
/* these are the system flag bits */
#define BWAITING 0x0100 /* set while Bob is waiting on 'after' */
#define BDRAWN 0x0200 /* set when Bob is drawn this DrawG pass*/
#define BOBSAWAY 0x0400 /* set to initiate removal of Bob */
#define BOBNIX 0x0800 /* set when Bob is completely removed */
#define SAVEPRESERVE 0x1000 /* for back-restore during double-buffer*/
#define OUTSTEP 0x2000 /* for double-clearing if double-buffer */
/* defines for the animation procedures */
#define ANFRACSIZE 6
#define ANIMHALF 0x0020
#define RINGTRIGGER 0x0001
/* UserStuff definitions
* the user can define these to be a single variable or a sub-structure
* if undefined by the user, the system turns these into innocuous variables
* see the manual for a thorough definition of the UserStuff definitions
*
*/
#ifndef VUserStuff /* VSprite user stuff */
#define VUserStuff WORD
#endif
#ifndef BUserStuff /* Bob user stuff */
#define BUserStuff WORD
#endif
#ifndef AUserStuff /* AnimOb user stuff */
#define AUserStuff WORD
#endif
/*********************** GEL STRUCTURES ***********************************/
struct VSprite
{
/* --------------------- SYSTEM VARIABLES ------------------------------- */
/* GEL linked list forward/backward pointers sorted by y,x value */
struct VSprite *NextVSprite;
struct VSprite *PrevVSprite;
/* GEL draw list constructed in the order the Bobs are actually drawn, then
* list is copied to clear list
* must be here in VSprite for system boundary detection
*/
struct VSprite *DrawPath; /* pointer of overlay drawing */
struct VSprite *ClearPath; /* pointer for overlay clearing */
/* the VSprite positions are defined in (y,x) order to make sorting
* sorting easier, since (y,x) as a long integer
*/
WORD OldY, OldX; /* previous position */
/* --------------------- COMMON VARIABLES --------------------------------- */
WORD Flags; /* VSprite flags */
/* --------------------- USER VARIABLES ----------------------------------- */
/* the VSprite positions are defined in (y,x) order to make sorting
* sorting easier, since (y,x) as a long integer
*/
WORD Y, X; /* screen position */
WORD Height;
WORD Width; /* number of words per row of image data */
WORD Depth; /* number of planes of data */
WORD MeMask; /* which types can collide with this VSprite*/
WORD HitMask; /* which types this VSprite can collide with*/
WORD *ImageData; /* pointer to VSprite image */
/* borderLine is the one-dimensional logical OR of all
* the VSprite bits, used for fast collision detection of edge
*/
WORD *BorderLine; /* logical OR of all VSprite bits */
WORD *CollMask; /* similar to above except this is a matrix */
/* pointer to this VSprite's color definitions (not used by Bobs) */
WORD *SprColors;
struct Bob *VSBob; /* points home if this VSprite is part of
a Bob */
/* planePick flag: set bit selects a plane from image, clear bit selects
* use of shadow mask for that plane
* OnOff flag: if using shadow mask to fill plane, this bit (corresponding
* to bit in planePick) describes whether to fill with 0's or 1's
* There are two uses for these flags:
* - if this is the VSprite of a Bob, these flags describe how the Bob
* is to be drawn into memory
* - if this is a simple VSprite and the user intends on setting the
* MUSTDRAW flag of the VSprite, these flags must be set too to describe
* which color registers the user wants for the image
*/
BYTE PlanePick;
BYTE PlaneOnOff;
VUserStuff VUserExt; /* user definable: see note above */
};
struct Bob
/* blitter-objects */
{
/* --------------------- SYSTEM VARIABLES --------------------------------- */
/* --------------------- COMMON VARIABLES --------------------------------- */
WORD Flags; /* general purpose flags (see definitions below) */
/* --------------------- USER VARIABLES ----------------------------------- */
WORD *SaveBuffer; /* pointer to the buffer for background save */
/* used by Bobs for "cookie-cutting" and multi-plane masking */
WORD *ImageShadow;
/* pointer to BOBs for sequenced drawing of Bobs
* for correct overlaying of multiple component animations
*/
struct Bob *Before; /* draw this Bob before Bob pointed to by before */
struct Bob *After; /* draw this Bob after Bob pointed to by after */
struct VSprite *BobVSprite; /* this Bob's VSprite definition */
struct AnimComp *BobComp; /* pointer to this Bob's AnimComp def */
struct DBufPacket *DBuffer; /* pointer to this Bob's dBuf packet */
BUserStuff BUserExt; /* Bob user extension */
};
struct AnimComp
{
/* --------------------- SYSTEM VARIABLES --------------------------------- */
/* --------------------- COMMON VARIABLES --------------------------------- */
WORD Flags; /* AnimComp flags for system & user */
/* timer defines how long to keep this component active:
* if set non-zero, timer decrements to zero then switches to nextSeq
* if set to zero, AnimComp never switches
*/
WORD Timer;
/* --------------------- USER VARIABLES ----------------------------------- */
/* initial value for timer when the AnimComp is activated by the system */
WORD TimeSet;
/* pointer to next and previous components of animation object */
struct AnimComp *NextComp;
struct AnimComp *PrevComp;
/* pointer to component component definition of next image in sequence */
struct AnimComp *NextSeq;
struct AnimComp *PrevSeq;
WORD (*AnimCRoutine)(); /* address of special animation procedure */
WORD YTrans; /* initial y translation (if this is a component) */
WORD XTrans; /* initial x translation (if this is a component) */
struct AnimOb *HeadOb;
struct Bob *AnimBob;
};
struct AnimOb
{
/* --------------------- SYSTEM VARIABLES --------------------------------- */
struct AnimOb *NextOb, *PrevOb;
/* number of calls to Animate this AnimOb has endured */
LONG Clock;
WORD AnOldY, AnOldX; /* old y,x coordinates */
/* --------------------- COMMON VARIABLES --------------------------------- */
WORD AnY, AnX; /* y,x coordinates of the AnimOb */
/* --------------------- USER VARIABLES ----------------------------------- */
WORD YVel, XVel; /* velocities of this object */
WORD YAccel, XAccel; /* accelerations of this object */
WORD RingYTrans, RingXTrans; /* ring translation values */
WORD (*AnimORoutine)(); /* address of special animation
procedure */
struct AnimComp *HeadComp; /* pointer to first component */
AUserStuff AUserExt; /* AnimOb user extension */
};
/* dBufPacket defines the val