Tachyon (current)  Current Main Branch
parse.h
Go to the documentation of this file.
1 /*
2  * parse.h - this file contains defines for model file reading.
3  *
4  * (C) Copyright 1994-2022 John E. Stone
5  * SPDX-License-Identifier: BSD-3-Clause
6  *
7  * $Id: parse.h,v 1.35 2022/04/01 15:43:11 johns Exp $
8  *
9  */
10 
11 #define PARSENOERR 0
12 #define PARSEBADFILE 1
13 #define PARSEBADSUBFILE 2
14 #define PARSEBADSYNTAX 4
15 #define PARSEEOF 8
16 #define PARSEALLOCERR 16
17 
18 unsigned int readmodel(const char *, SceneHandle);
19 
20 #ifdef PARSE_INTERNAL
21 #define TEXNAMELEN 255
22 
23 typedef struct {
24  char * name;
25  void * tex;
26 } texentry;
27 
28 typedef struct {
29  FILE * ifp; /* current input file pointer */
30  const char * filename; /* filename of current input file */
31  texentry *textable; /* texture lookup table */
32  texentry defaulttex; /* The default texture when a lookup fails */
33  int numtextures; /* number of TEXDEF textures */
34  int maxtextures; /* number of TEXDEF textures */
35  int numobjectsparsed; /* total number of objects parsed so far */
36  rt_hash_t texhash; /* hash table for texture name lookup */
37  int transmode; /* transparency rendering mode flags */
38 } parsehandle;
39 
40 typedef struct {
41  double rx1; double rx2; double rx3;
42  double ry1; double ry2; double ry3;
43  double rz1; double rz2; double rz3;
44 } RotMat;
45 
46 typedef unsigned int errcode;
47 
48 /* texture lookup table code */
49 static void reset_tex_table(parsehandle *, SceneHandle);
50 static void free_tex_table(parsehandle *, SceneHandle);
51 static errcode add_texture(parsehandle *, void * tex, const char *);
52 static void * find_texture(parsehandle *, const char *);
53 
54 /* scene file parsing code */
55 static errcode GetString(parsehandle *, const char *);
56 static errcode GetScenedefs(parsehandle *, SceneHandle);
57 static errcode GetCamera(parsehandle *, SceneHandle);
58 static errcode GetColor(parsehandle *, apicolor *);
59 /* static errcode GetFloat(parsehandle *, apiflt *); */
60 static errcode GetVector(parsehandle *, apivector *);
61 static errcode GetTexDef(parsehandle *, SceneHandle);
62 static errcode GetImageDef(parsehandle *, SceneHandle);
63 static errcode GetTexAlias(parsehandle *);
64 static errcode GetTexture(parsehandle *, SceneHandle, void **);
65 void * GetTexBody(parsehandle *, SceneHandle, int);
66 static errcode GetBackGnd(parsehandle *, SceneHandle);
67 static errcode GetBackGndGradient(parsehandle *, SceneHandle);
68 static errcode GetFog(parsehandle *, SceneHandle);
69 static errcode GetCylinder(parsehandle *, SceneHandle);
70 static errcode GetFCylinder(parsehandle *, SceneHandle);
71 static errcode GetPolyCylinder(parsehandle *, SceneHandle);
72 static errcode GetSphere(parsehandle *, SceneHandle);
73 /* static errcode GetSphereArray(parsehandle *, SceneHandle); */
74 static errcode GetPlane(parsehandle *, SceneHandle);
75 static errcode GetRing(parsehandle *, SceneHandle);
76 static errcode GetBox(parsehandle *, SceneHandle);
77 static errcode GetVol(parsehandle *, SceneHandle);
78 static errcode GetTri(parsehandle *, SceneHandle);
79 static errcode GetSTri(parsehandle *, SceneHandle);
80 static errcode GetVCSTri(parsehandle *, SceneHandle);
81 static errcode GetVertexArray(parsehandle *, SceneHandle);
82 static errcode GetDirLight(parsehandle *, SceneHandle);
83 static errcode GetLight(parsehandle *, SceneHandle);
84 static errcode GetSkyLight(parsehandle *, SceneHandle);
85 static errcode GetSpotLight(parsehandle *, SceneHandle);
86 static errcode GetLandScape(parsehandle *, SceneHandle);
87 static errcode GetTPolyFile(parsehandle *, SceneHandle);
88 static errcode GetObject(parsehandle *, SceneHandle);
89 static errcode ReadIncludeFile(parsehandle *, const char *, SceneHandle);
90 static errcode GetClipGroup(parsehandle * ph, SceneHandle scene);
91 static errcode GetClipGroupEnd(parsehandle * ph, SceneHandle scene);
92 
93 #ifdef USELIBMGF
94 static errcode GetMGFFile(parsehandle *, SceneHandle);
95 #endif
96 
97 
98 /* list of all keywords the parser looks for */
99 #if 0
100 ATTENUATION
101 BACKGROUND
102 BOX
103 CAMERA
104 COLOR
105 CYLINDER
106 DATA
107 DIRECTIONAL_LIGHT
108 END_CAMERA
109 END_CLIPGROUP
110 END_SCENE
111 EQUIRECTANGULAR
112 EXP
113 EXP2OFF
114 FCYLINDER
115 FISHEYE
116 FOG
117 FRUSTUM
118 INCLUDE
119 KIDS
120 LIGHT
121 LINEAR
122 LOC
123 MAT
124 MATERIAL
125 METAL
126 MGFFILE
127 NAME
128 NUMPLANES
129 NUMSURF
130 NUMVERT
131 OBJECT
132 ORTHOGRAPHIC
133 PERSPECTIVE
134 PERSPECTIVE_DOF
135 PHONG
136 PLANE
137 PLASTIC
138 POLYCYLINDER
139 PROJECTION
140 REFS
141 RING
142 ROT
143 SCALARVOL
144 SCAPE
145 SPHERE
146 SPOTLIGHT
147 START_CLIPGROUP
148 STRI
149 SURF
150 TEXALIAS
151 TEXDEF
152 TEXREP
153 TEXTURE
154 TPOLYFILE
155 TRI
156 URL
157 VCST
158 VCSTRI
159 VERTEXARRAY
160  COORDS
161  COLORS
162  NORMALS
163  FACETS
164  NUMVERTS
165  NUMFACETS
166 ZOOM
167 #endif
168 
169 #endif
170 
static errcode GetPlane(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1325
static errcode GetBackGndGradient(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1181
static errcode GetVol(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1342
static errcode GetVCSTri(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1453
static errcode GetSphere(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1305
static errcode GetString(FILE *dfile, char *string)
Definition: ac3dparse.c:85
static errcode GetSpotLight(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1074
Definition: hash.h:18
static errcode GetBackGnd(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1167
static errcode GetScenedefs(FILE *dfile, SceneHandle scene)
Definition: ac3dparse.c:141
static errcode GetFCylinder(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1246
static errcode GetCylinder(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1225
static errcode GetVector(parsehandle *ph, apivector *v1)
Definition: parse.c:648
static errcode GetLandScape(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1820
static void * find_texture(parsehandle *ph, const char *name)
Definition: parse.c:112
static int numobjectsparsed
Definition: ac3dparse.c:30
static errcode add_texture(void *tex, char name[TEXNAMELEN])
Definition: ac3dparse.c:71
static errcode GetCamera(parsehandle *ph, SceneHandle scene)
Definition: parse.c:410
static errcode GetTexAlias(parsehandle *ph)
Definition: parse.c:777
static errcode ReadIncludeFile(parsehandle *ph, const char *includefile, SceneHandle scene)
Definition: parse.c:282
static errcode GetTexture(parsehandle *ph, SceneHandle scene, void **tex)
Definition: parse.c:789
static errcode GetSkyLight(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1045
static errcode GetBox(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1364
static errcode GetTexDef(parsehandle *ph, SceneHandle scene)
Definition: parse.c:768
static void reset_tex_table(void)
Definition: ac3dparse.c:66
static errcode GetVertexArray(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1584
unsigned int readmodel(const char *, SceneHandle)
Definition: parse.c:225
static errcode GetImageDef(parsehandle *ph, SceneHandle scene)
Definition: parse.c:686
void * GetTexBody(parsehandle *ph, SceneHandle scene, int modeflag)
Definition: parse.c:803
static errcode GetLight(parsehandle *ph, SceneHandle scene)
Definition: parse.c:996
static errcode GetClipGroup(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1915
static int numtextures
Definition: ac3dparse.c:29
static errcode GetFog(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1133
void * SceneHandle
Definition: tachyon.h:51
static errcode GetSTri(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1423
static errcode GetTri(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1402
static errcode GetPolyCylinder(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1275
static errcode GetColor(parsehandle *ph, apicolor *c1)
Definition: parse.c:673
static errcode GetClipGroupEnd(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1946
static texentry textable[NUMTEXS]
Definition: ac3dparse.c:28
static void free_tex_table(parsehandle *ph, SceneHandle scene)
Definition: parse.c:70
static errcode GetDirLight(parsehandle *ph, SceneHandle scene)
Definition: parse.c:971
static errcode GetRing(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1380
static errcode GetTPolyFile(parsehandle *ph, SceneHandle scene)
Definition: parse.c:1846
static errcode GetObject(FILE *dfile, SceneHandle scene)
Definition: ac3dparse.c:586
#define EXP(x)
Definition: util.h:27