-
Notifications
You must be signed in to change notification settings - Fork 44
/
Copy pathspritegn.h
130 lines (108 loc) · 3.19 KB
/
spritegn.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*
Copyright (C) 1996-1997 Id Software, Inc.
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
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.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
//
// spritegn.h: header file for sprite generation program
//
// **********************************************************
// * This file must be identical in the spritegen directory *
// * and in the Quake directory, because it's used to *
// * 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:
//
// dsprite_t file header structure
// <repeat dsprite_t.numframes times>
// <if spritegroup, repeat dspritegroup_t.numframes times>
// dspriteframe_t frame header structure
// sprite bitmap
// <else (single sprite frame)>
// dspriteframe_t frame header structure
// sprite bitmap
// <endrepeat>
//-------------------------------------------------------
#define SPRITE_VERSION 1
#define SPRITEHL_VERSION 2
#define SPRITE32_VERSION 32
#define SPRITE2_VERSION 2
typedef struct dsprite_s
{
int ident;
int version;
int type;
float boundingradius;
int width;
int height;
int numframes;
float beamlength;
int synctype;
} dsprite_t;
typedef struct dspritehl_s
{
int ident;
int version;
int type;
int rendermode;
float boundingradius;
int width;
int height;
int numframes;
float beamlength;
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_OPAQUE 0
#define SPRHL_ADDITIVE 1
#define SPRHL_INDEXALPHA 2
#define SPRHL_ALPHATEST 3
typedef struct dspriteframe_s {
int origin[2];
int width;
int height;
} dspriteframe_t;
typedef struct dspritegroup_s {
int numframes;
} dspritegroup_t;
typedef struct dspriteinterval_s {
float interval;
} dspriteinterval_t;
typedef enum spriteframetype_e { SPR_SINGLE=0, SPR_GROUP } spriteframetype_t;
typedef struct dspriteframetype_s {
spriteframetype_t type;
} dspriteframetype_t;
#endif