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