12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #ifndef __QAV_H
- #define __QAV_H
- #include "typedefs.h"
- #include "gfx.h"
- #define kQAVSig "QAV\x1A"
- #define kQAVVersion 0x0200
- #define kMaxLayers 8
- enum
- {
- // begin rotatesprite compatible flags
- kQFrameNormal = 0, // no flags
- kQFrameTranslucent = 0x01, // frame is translucent
- kQFrameScale = 0x02, // frame is scaled to viewing window
- kQFrameYFlip = 0x04, // frame is y-flipped
- kQFrameUnclipped = 0x08, // frame is not clipped to umost/dmost
- kQFrameStatus = 0x0A, // frame is not masked (used for status bar)
- kQFrameCorner = 0x10, // frame is positioned by top left corner instead of origin
- kQFrameTranslucentR = 0x20, // frame is translucent, using reverse translucency table
- kQFrameNoMask = 0x40,
- kQFrameAllPages = 0x80,
- // begin internal flags
- kQFrameXFlip = 0x100, // frame is x-flipped
- };
- struct TRIGGER_FRAME
- {
- int id;
- };
- struct SOUND_FRAME
- {
- int id;
- uchar priority;
- uchar volume;
- ushort soundAngle;
- };
- struct TILE_FRAME
- {
- int id;
- int x, y;
- int zoom; // zoom in 16:16 fixed format
- int flags;
- schar shade;
- uchar pal;
- ushort angle; // angle in Build units (0 is straight up)
- };
- struct FRAME
- {
- TRIGGER_FRAME trigger;
- SOUND_FRAME sound;
- TILE_FRAME layer[kMaxLayers];
- };
- typedef void (*QAVCALLBACK)( int triggerId, void *data );
- struct QAV
- {
- char signature[4];
- short version;
- char dummy[2];
- int nFrames;
- int ticksPerFrame; // inverted play rate
- int duration; // length in ticks
- Point origin;
- char reserved[8];
- FRAME frame[];
- void Draw( long t, int shade, int flags );
- void Play( long t0, long t1, QAVCALLBACK callback = NULL, void *data = NULL );
- void Preload( void );
- };
- #endif
|