This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
// * pass data from one to the other via .spr files. *
// **********************************************************
+#ifndef SPRITEGEN_H
+#define SPRITEGEN_H
+
//-------------------------------------------------------
// This program generates .spr sprite package files.
// The format of the files is as follows:
// <endrepeat>
//-------------------------------------------------------
-#define SPRITE_VERSION 1
+#define SPRITE_VERSION 1
#define SPRITEHL_VERSION 2
#define SPRITE32_VERSION 32
-typedef struct
+#define SPRITE2_VERSION 2
+
+typedef struct dsprite_s
{
int ident;
int version;
int height;
int numframes;
float beamlength;
- synctype_t synctype;
+ int synctype;
} dsprite_t;
-typedef struct
+typedef struct dspritehl_s
{
int ident;
int version;
int height;
int numframes;
float beamlength;
- synctype_t synctype;
+ int synctype;
} dspritehl_t;
+typedef struct dsprite2frame_s
+{
+ int width, height;
+ int origin_x, origin_y; // raster coordinates inside pic
+ char name[64]; // name of pcx file
+} dsprite2frame_t;
+
+typedef struct dsprite2_s
+{
+ int ident;
+ int version;
+ int numframes;
+ dsprite2frame_t frames[1]; // variable sized
+} dsprite2_t;
+
#define SPR_VP_PARALLEL_UPRIGHT 0
#define SPR_FACING_UPRIGHT 1
#define SPR_VP_PARALLEL 2
#define SPR_ORIENTED 3
#define SPR_VP_PARALLEL_ORIENTED 4
+#define SPR_LABEL 5
+#define SPR_LABEL_SCALE 6
+#define SPR_OVERHEAD 7
-#define SPRHL_NORMAL 0
+#define SPRHL_OPAQUE 0
#define SPRHL_ADDITIVE 1
-// no idea how to handle these two rendering modes
#define SPRHL_INDEXALPHA 2
#define SPRHL_ALPHATEST 3
-typedef struct {
+typedef struct dspriteframe_s {
int origin[2];
int width;
int height;
} dspriteframe_t;
-typedef struct {
+typedef struct dspritegroup_s {
int numframes;
} dspritegroup_t;
-typedef struct {
+typedef struct dspriteinterval_s {
float interval;
} dspriteinterval_t;
-typedef enum { SPR_SINGLE=0, SPR_GROUP } spriteframetype_t;
+typedef enum spriteframetype_e { SPR_SINGLE=0, SPR_GROUP } spriteframetype_t;
-typedef struct {
+typedef struct dspriteframetype_s {
spriteframetype_t type;
} dspriteframetype_t;
-#define IDSPRITEHEADER (('P'<<24)+('S'<<16)+('D'<<8)+'I')
- // little-endian "IDSP"
-
+#endif