Annotation of quakeworld/client/spritegn.h, revision 1.1.1.1

1.1       root        1: /*
                      2: Copyright (C) 1996-1997 Id Software, Inc.
                      3: 
                      4: This program is free software; you can redistribute it and/or
                      5: modify it under the terms of the GNU General Public License
                      6: as published by the Free Software Foundation; either version 2
                      7: of the License, or (at your option) any later version.
                      8: 
                      9: This program is distributed in the hope that it will be useful,
                     10: but WITHOUT ANY WARRANTY; without even the implied warranty of
                     11: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  
                     12: 
                     13: See the GNU General Public License for more details.
                     14: 
                     15: You should have received a copy of the GNU General Public License
                     16: along with this program; if not, write to the Free Software
                     17: Foundation, 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
                     66: typedef enum {ST_SYNC=0, ST_RAND } synctype_t;
                     67: #endif
                     68: 
                     69: // TODO: shorten these?
                     70: typedef 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: 
                     88: typedef struct {
                     89:        int                     origin[2];
                     90:        int                     width;
                     91:        int                     height;
                     92: } dspriteframe_t;
                     93: 
                     94: typedef struct {
                     95:        int                     numframes;
                     96: } dspritegroup_t;
                     97: 
                     98: typedef struct {
                     99:        float   interval;
                    100: } dspriteinterval_t;
                    101: 
                    102: typedef enum { SPR_SINGLE=0, SPR_GROUP } spriteframetype_t;
                    103: 
                    104: typedef struct {
                    105:        spriteframetype_t       type;
                    106: } dspriteframetype_t;
                    107: 
                    108: #define IDSPRITEHEADER (('P'<<24)+('S'<<16)+('D'<<8)+'I')
                    109:                                                                                                                // little-endian "IDSP"
                    110: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.