File: spritegn.h

package info (click to toggle)
darkplaces 0~20180412~beta1-2
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 18,200 kB
  • sloc: ansic: 176,886; makefile: 485; pascal: 455; perl: 372; objc: 245; sh: 102
file content (131 lines) | stat: -rw-r--r-- 3,282 bytes parent folder | download | duplicates (5)
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
131
/*
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;
	synctype_t	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;
	synctype_t	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