1/*
2Copyright (C) 1996-1997 Id Software, Inc.
3
4This program is free software; you can redistribute it and/or
5modify it under the terms of the GNU General Public License
6as published by the Free Software Foundation; either version 2
7of the License, or (at your option) any later version.
8
9This program is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12
13See the GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18
19*/
20//
21// spritegn.h: header file for sprite generation program
22//
23
24// **********************************************************
25// * This file must be identical in the spritegen directory *
26// * and in the Quake directory, because it's used to       *
27// * pass data from one to the other via .spr files.        *
28// **********************************************************
29
30//-------------------------------------------------------
31// This program generates .spr sprite package files.
32// The format of the files is as follows:
33//
34// dsprite_t file header structure
35// <repeat dsprite_t.numframes times>
36//   <if spritegroup, repeat dspritegroup_t.numframes times>
37//     dspriteframe_t frame header structure
38//     sprite bitmap
39//   <else (single sprite frame)>
40//     dspriteframe_t frame header structure
41//     sprite bitmap
42// <endrepeat>
43//-------------------------------------------------------
44
45#ifdef INCLUDELIBS
46
47#include <stdlib.h>
48#include <stdio.h>
49#include <math.h>
50#include <string.h>
51
52#include "cmdlib.h"
53#include "scriplib.h"
54#include "dictlib.h"
55#include "trilib.h"
56#include "lbmlib.h"
57#include "mathlib.h"
58
59#endif
60
61#define SPRITE_VERSION	1
62
63// must match definition in modelgen.h
64#ifndef SYNCTYPE_T
65#define SYNCTYPE_T
66typedef enum {ST_SYNC=0, ST_RAND, synctype_t_max = 1<<30 } synctype_t;
67#endif
68
69// TODO: shorten these?
70typedef struct {
71	int			ident;
72	int			version;
73	int			type;
74	float		boundingradius;
75	int			width;
76	int			height;
77	int			numframes;
78	float		beamlength;
79	synctype_t	synctype;
80} dsprite_t;
81
82#define SPR_VP_PARALLEL_UPRIGHT		0
83#define SPR_FACING_UPRIGHT			1
84#define SPR_VP_PARALLEL				2
85#define SPR_ORIENTED				3
86#define SPR_VP_PARALLEL_ORIENTED	4
87
88typedef struct {
89	int			origin[2];
90	int			width;
91	int			height;
92} dspriteframe_t;
93
94typedef struct {
95	int			numframes;
96} dspritegroup_t;
97
98typedef struct {
99	float	interval;
100} dspriteinterval_t;
101
102typedef enum { SPR_SINGLE=0, SPR_GROUP, spriteframetype_t_max = 1 << 30 } spriteframetype_t;
103
104typedef struct {
105	spriteframetype_t	type;
106} dspriteframetype_t;
107
108#define IDSPRITEHEADER	(('P'<<24)+('S'<<16)+('D'<<8)+'I')
109														// little-endian "IDSP"
110
111