BRL-CAD
db4.h
Go to the documentation of this file.
1 /* D B 4 . H
2  * BRL-CAD
3  *
4  * Copyright (c) 1985-2024 United States Government as represented by
5  * the U.S. Army Research Laboratory.
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public License
9  * version 2.1 as published by the Free Software Foundation.
10  *
11  * This library is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this file; see the file named COPYING for more
18  * information.
19  */
20 /** @addtogroup db4 */
21 /** @{ */
22 /** @file rt/db4.h
23  * @brief
24  * GED Database Format v4
25  *
26  * All records are rounded up to have a fixed length; each such
27  * database record is also known as a "granule", and is the smallest
28  * unit of database storage.
29  *
30  * Every granule can be identified by the first byte, which can
31  * be accessed by the u_id name. Note that the u_id field is not
32  * valid when writing the actual data for splines.
33  *
34  * Each granule is read into a "union record", and is then processed
35  * based on the value of u_id. Each granule will have one of these formats:
36  * A Free record
37  * An ID record
38  * A SOLID record
39  * A COMBINATION record, followed by multiple
40  * MEMBER records
41  * An ARS `A' (header) record, followed by multiple
42  * ARS `B' (data) records
43  * A Polygon header record, followed by multiple
44  * Polygon data records
45  * A B-spline solid header record, followed by multiple
46  * B-spline surface records, followed by
47  * d_kv_size[0] floats,
48  * d_kv_size[1] floats,
49  * padded to d_nknots granules, followed by
50  * ctl_size[0]*ctl_size[1]*geom_type floats,
51  * padded to d_nctls granules.
52  *
53  * The records are stored as binary records corresponding to PDP-11 and
54  * VAX C structs, so padding must be supplied explicitly for alignment.
55  *
56  * For the time being, the representation of the floating point numbers
57  * in the database is machine-specific, requiring conversion to ASCII
58  * (via g2asc) and back to binary (via asc2g) when exchanging between
59  * machines of dissimilar types. In time, an external representation
60  * for floats might be implemented.
61  *
62  */
63 
64 #ifndef RT_DB4_H
65 #define RT_DB4_H
66 
67 #include "common.h"
68 
69 #include "vmath.h" /* Needed only for the deprecated functions below using fastf_t */
70 #include "nmg.h" /* for struct nmg_rec */
71 
72 __BEGIN_DECLS
73 
74 #define NAMESIZE 16
75 
76 /* don't use bu_strlcpy for NAMEMOVE */
77 #define NAMEMOVE(from,to) (void)strncpy(to, from, NAMESIZE)
78 
79 /*
80  * Define the database format for storing binary floating point values.
81  * The ultimate intention is to store everything in 8 bytes, using
82  * IEEE double precision in network order.
83  */
84 typedef float dbfloat_t;
85 
86 #define DB_MINREC 128
87 
88 
89 struct ident {
90  char i_id; /* ID_IDENT */
91  char i_units; /* units */
92 /* Values of 0..5 are fixed for file compat with Release 2.3 through 4.5 */
93 #define ID_NO_UNIT 0 /* unspecified */
94 #define ID_MM_UNIT 1 /* millimeters (preferred) */
95 #define ID_CM_UNIT 2 /* centimeters */
96 #define ID_M_UNIT 3 /* meters */
97 #define ID_IN_UNIT 4 /* inches */
98 #define ID_FT_UNIT 5 /* feet */
99 /* These new values 6..9 added in Release 5.0 */
100 #define ID_UM_UNIT 6 /* micrometers */
101 #define ID_KM_UNIT 7 /* kilometers */
102 #define ID_YD_UNIT 8 /* yards */
103 #define ID_MI_UNIT 9 /* miles */
104  char i_version[6]; /* Version code of Database format */
105 #define ID_VERSION "v4" /* Current Version */
106  char i_title[72]; /* Title or description */
107  /* For the future */
108  char i_byteorder; /* Byte ordering */
109 #define ID_BY_UNKNOWN 0 /* unknown */
110 #define ID_BY_VAX 1 /* VAX (Little Endian) */
111 #define ED_BY_IBM 2 /* IBM (Big Endian) */
112  char i_floattype; /* Floating point type */
113 #define ID_FT_UNKNOWN 0 /* unknown */
114 #define ID_FT_VAX 1 /* VAX */
115 #define ID_FT_IBM 2 /* IBM */
116 #define ID_FT_IEEE 3 /* IEEE */
117 #define ID_FT_CRAY 4 /* Cray */
118 }; /* struct ident */
119 
120 struct solidrec {
121  char s_id; /* ID_SOLID */
122  char s_type; /* GED primitive type */
123 #define RPP 1 /* axis-aligned rectangular parallelepiped */
124 #define BOX 2 /* arbitrary rectangular parallelepiped */
125 #define RAW 3 /* right-angle wedge */
126 #define ARB4 4 /* tetrahedron */
127 #define ARB5 5 /* pyramid */
128 #define ARB6 6 /* extruded triangle */
129 #define ARB7 7 /* weird 7-vertex shape */
130 #define ARB8 8 /* hexahedron */
131 #define ELL 9 /* ellipsoid */
132 #define ELL1 10 /* another ellipsoid definition */
133 #define SPH 11 /* sphere */
134 #define RCC 12 /* right circular cylinder */
135 #define REC 13 /* right elliptic cylinder */
136 #define TRC 14 /* truncated regular cone */
137 #define TEC 15 /* truncated elliptic cone */
138 #define TOR 16 /* toroid */
139 #define TGC 17 /* truncated general cone */
140 #define GENTGC 18 /* supergeneralized TGC; internal form */
141 #define GENELL 19 /* ready for drawing ELL: V, A, B, C */
142 #define GENARB8 20 /* generalized ARB8: V, and 7 other vectors */
143 #define ARS 21 /* HACK arbitrary triangular-surfaced polyhedron */
144 #define ARSCONT 22 /* HACK extension record type for ARS solid */
145 #define ELLG 23 /* comgeom version of GENELL ellipsoid */
146 #define HALFSPACE 24 /* half-space */
147 #define SPLINE 25 /* HACK and trouble */
148 #define RPC 26 /* Right Parabolic Cylinder */
149 #define RHC 27 /* Right Parabolic Cylinder */
150 #define EPA 28 /* Elliptical Paraboloid */
151 #define EHY 29 /* Elliptical Hyperboloid */
152 #define ETO 30 /* Elliptical Torus */
153 #define GRP 31 /* Grip pseudo solid */
154 #define SUPERELL 32 /* Superquadratic Ellipsoid */
155 #define HYP 33 /* Hyperboloid of one sheet */
156  char s_name[NAMESIZE]; /* unique name */
157  short s_cgtype; /* COMGEOM solid type */
158  dbfloat_t s_values[24]; /* parameters */
159 #define s_tgc_V s_values[0]
160 #define s_tgc_H s_values[3]
161 #define s_tgc_A s_values[6]
162 #define s_tgc_B s_values[9]
163 #define s_tgc_C s_values[12]
164 #define s_tgc_D s_values[15]
165 
166 #define s_tor_V s_values[0]
167 #define s_tor_H s_values[3]
168 #define s_tor_A s_values[6]
169 #define s_tor_B s_values[9]
170 #define s_tor_C s_values[12]
171 #define s_tor_D s_values[15]
172 #define s_tor_E s_values[18]
173 #define s_tor_F s_values[21]
174 
175 #define s_ell_V s_values[0]
176 #define s_ell_A s_values[3]
177 #define s_ell_B s_values[6]
178 #define s_ell_C s_values[9]
179 
180 #define s_superell_V s_values[0]
181 #define s_superell_A s_values[3]
182 #define s_superell_B s_values[6]
183 #define s_superell_C s_values[9]
184 #define s_superell_n s_values[12]
185 #define s_superell_e s_values[13]
186 
187 #define s_half_N s_values[0]
188 #define s_half_d s_values[3]
189 
190 #define s_grip_C s_values[0]
191 #define s_grip_N s_values[3]
192 #define s_grip_m s_values[6]
193 }; /* struct solidrec */
194 
195 struct combination {
196  char c_id; /* ID_COMB */
197  char c_flags; /* `R' if region, else ` ' */
198 #define DBV4_NON_REGION ' '
199 #define DBV4_NON_REGION_NULL '\0'
200 #define DBV4_REGION 'R'
201 #define DBV4_REGION_FASTGEN_PLATE 'P'
202 #define DBV4_REGION_FASTGEN_VOLUME 'V'
203  char c_name[NAMESIZE]; /* unique name */
204  short c_regionid; /* region ID code */
205  short c_aircode; /* air space code */
206  short c_pad1; /* was c_length, DEPRECATED: # of members */
207  short c_pad2; /* was c_num, DEPRECATED */
208  short c_material; /* (GIFT) material code */
209  short c_los; /* equivalent LOS estimate */
210  char c_override; /* non-0 ==> c_rgb is color */
211  unsigned char c_rgb[3]; /* 0..255 color override */
212  char c_matname[32]; /* Reference: Material name */
213  char c_matparm[60]; /* String Material parms */
214  char c_inherit; /* Inheritance property */
215 #define DB_INH_LOWER 0 /* Lower nodes override */
216 #define DB_INH_HIGHER 1 /* Higher nodes override */
217 }; /* struct combination */
218 
219 struct member {
220  char m_id; /* ID_MEMB */
221  char m_relation; /* boolean operation as u,-,+ char */
222  char m_brname[NAMESIZE]; /* DEPRECATED: name of this branch */
223  char m_instname[NAMESIZE]; /* name of referred-to obj. */
224  short m_pad1;
225  dbfloat_t m_mat[16]; /* homogeneous trans matrix */
226  short m_pad2; /* was m_num, DEPRECATED: COMGEOM solid # ref */
227 }; /* struct member */
228 
229 struct material_rec { /* whole record is DEPRECATED */
230  char md_id; /* = ID_COLORTAB color override */
231  char md_flags; /* UNUSED */
232  short md_low; /* lower end of region IDs affected */
233  short md_hi; /* upper end of region IDs affected */
234  unsigned char md_r;
235  unsigned char md_g; /* color of these regions: 0..255 */
236  unsigned char md_b;
237  char md_material[100]; /* UNUSED now */
238 }; /* struct material_rec */
239 
240 struct B_solid {
241  char B_id; /* = ID_BSOLID */
242  char B_pad;
244  short B_nsurf; /* # of surfaces in this solid */
245  dbfloat_t B_unused; /* UNUSED (was resolution of flatness) */
246 }; /* struct B_solid */
247 
248 struct b_surf {
249  char d_id; /* = ID_BSURF */
250  short d_order[2]; /* order of u and v directions */
251  short d_kv_size[2]; /* knot vector size (u and v) */
252  short d_ctl_size[2]; /* control mesh size ( u and v) */
253  short d_geom_type; /* geom type 3 or 4 */
254  short d_nknots; /* # granules of knots */
255  short d_nctls; /* # granules of ctls */
256 }; /* struct b_surf */
257 
258 struct polyhead {
259  char p_id; /* = POLY_HEAD */
260  char p_pad1;
262 }; /* struct polyhead */
263 
264 struct polydata {
265  char q_id; /* = POLY_DATA */
266  char q_count; /* # of vertices <= 5 */
267  dbfloat_t q_verts[5][3]; /* Actual vertices for this polygon */
268  dbfloat_t q_norms[5][3]; /* Normals at each vertex */
269 }; /* struct polydata */
270 
271 struct ars_rec {
272  char a_id; /* ID_ARS_A */
273  char a_type; /* primitive type */
274  char a_name[NAMESIZE]; /* unique name */
275  /* these cannot be size_t due to v4 compatibility */
276  short a_m; /* # of curves */
277  short a_n; /* # of points per curve */
278  short a_curlen; /* # of granules per curve */
279  short a_totlen; /* # of granules for ARS */
280  /* Remainder are unused, and exist for ?compatibility */
281  short a_pad;
282  dbfloat_t a_xmax; /* max x coordinate */
283  dbfloat_t a_xmin; /* min x coordinate */
284  dbfloat_t a_ymax; /* max y coordinate */
285  dbfloat_t a_ymin; /* min y coordinate */
286  dbfloat_t a_zmax; /* max z coordinate */
287  dbfloat_t a_zmin; /* min z coordinate */
288 }; /* struct ars_rec */
289 
290 struct ars_ext {
291  char b_id; /* ID_ARS_B */
292  char b_type; /* primitive type */
293  short b_n; /* current curve # */
294  short b_ngranule; /* curr. granule for curve */
295  short b_pad;
296  dbfloat_t b_values[8*3]; /* vectors */
297 }; /* struct ars_ext */
298 
299 struct strsol {
300  char ss_id; /* ID_STRSOL */
301  char ss_pad;
302  char ss_name[NAMESIZE]; /* solid name */
303 #define DB_SS_NGRAN 8 /* All STRSOL's have this many granules */
304 #define DB_SS_LEN (DB_SS_NGRAN*DB_MINREC-2*NAMESIZE-2)
305  char ss_keyword[NAMESIZE]; /* solid keyword */
306  char ss_args[4]; /* DB_SS_LEN bytes of str args */
307 }; /* struct strsol */
308 
309 struct arbn_rec {
310  char n_id; /* DBID_ARBN */
311  char n_pad;
313  unsigned char n_neqn[4]; /* # equations which follow */
314  unsigned char n_grans[4]; /* # eqn granules to follow */
315  /* Note that eqn granules are in "network" byte order */
316 }; /* struct arbn_rec */
317 
319  unsigned char epp_coord[8*3];
320  unsigned char epp_bendradius[8];
321  unsigned char epp_id[8];
322  unsigned char epp_od[8];
323 }; /* exported_pipe_pnt */
324 
325 struct pipewire_rec {
326  char pwr_id; /* DBID_PIPE */
327  char pwr_pad;
329  unsigned char pwr_pt_count[4]; /* number of points in this pipe solid */
330  unsigned char pwr_count[4]; /* # additional granules */
331  struct exported_pipe_pnt pwr_data[1]; /* mach indep segments */
332 }; /* struct pipewire_rec */
333 
334 struct particle_rec {
335  char p_id; /* DBID_PARTICLE */
336  char p_pad;
338  unsigned char p_v[8*3]; /* vertex (mach indep fmt) */
339  unsigned char p_h[8*3]; /* height vector */
340  unsigned char p_vrad[8]; /* radius at vertex */
341  unsigned char p_hrad[8]; /* radius at end of height */
342 }; /* struct particle_rec */
343 
344 struct extr_rec {
345  char ex_id; /* DBID_EXTR */
346  char ex_pad;
348  unsigned char ex_V[8*3]; /* Vertex */
349  unsigned char ex_h[8*3]; /* extrusion vector */
350  unsigned char ex_uvec[8*3]; /* vector in U parameter direction */
351  unsigned char ex_vvec[8*3]; /* vector in V parameter direction */
352  unsigned char ex_key[4]; /* keypoint index */
353  unsigned char ex_count[4]; /* number of additional granules
354  * (for now, this will always be 1 ) */
355 }; /* struct extr_rec */
356 
357 struct sketch_rec {
358  char skt_id; /* DBID_SKETCH */
359  char skt_pad;
361  unsigned char skt_V[8*3]; /* vertex */
362  unsigned char skt_uvec[8*3]; /* vector in U parameter direction */
363  unsigned char skt_vvec[8*3]; /* vector in V parameter direction */
364  unsigned char skt_vert_count[4]; /* number of vertices in sketch */
365  unsigned char skt_seg_count[4]; /* number of segments in sketch */
366  unsigned char skt_count[4]; /* number of additional granules */
367 }; /* struct sketch_rec */
368 
369 struct annot_rec {
370  char ant_id; /*DBID_ANNOT */
371  char ant_pad;
373  unsigned char ant_V[8*3]; /* origin map */
374  unsigned char ant_vert_count[4]; /* number of vertices in annotation */
375  unsigned char ant_seg_count[4]; /* number of segments in annotation */
376  unsigned char ant_count[4]; /* number of additional granules */
377 }; /* struct annot_rec */
378 
379 struct script_rec {
380  char script_id; /*DBID_SCRIPT */
383 }; /* struct script_rec */
384 
385 struct cline_rec {
386  char cli_id; /* DBID_CLINE */
387  char cli_pad;
389  unsigned char cli_V[8*3]; /* vertex */
390  unsigned char cli_h[8*3]; /* height vector */
391  unsigned char cli_radius[8]; /* radius */
392  unsigned char cli_thick[8]; /* plate thickness (0 means volume mode) */
393 }; /* struct cline_rec */
394 
395 struct bot_rec {
396  char bot_id;
397  char bot_pad;
399  unsigned char bot_nrec[4]; /* number of additional records required */
400  unsigned char bot_orientation; /* unoriented, ccw, or cw */
401  unsigned char bot_mode; /* surface or volume */
402  unsigned char bot_err_mode;
403  unsigned char bot_num_verts[4]; /* number of vertices */
404  unsigned char bot_num_triangles[4]; /* number of triangles */
405  unsigned char bot_data[1]; /* the start of the data:
406  * num_verts*3*8 for the vertex floats
407  * num_triangles*3*4 for the triangle ints
408  * if mode is RT_BOT_PLATE, then additional data is:
409  * num_triangles*8 for the face thicknesses
410  * followed by a null terminated hex digit string "face_mode" (bit vector) */
411 }; /* struct bot_rec */
412 
413 union record {
414 
415  char u_id; /* To differentiate record types */
416 #define ID_IDENT 'I'
417 #define ID_SOLID 'S'
418 #define ID_COMB 'C'
419 #define ID_MEMB 'M'
420 #define ID_ARS_A 'A'
421 #define ID_ARS_B 'B'
422 #define ID_FREE 'F' /* Free record -- ignore */
423 #define ID_P_HEAD 'P' /* Polygon header */
424 #define ID_P_DATA 'Q' /* Polygon data record */
425 #define ID_BSOLID 'b' /* B-spline solid. multiple surfs */
426 #define ID_BSURF 'D' /* d_spline surface header */
427 #define ID_COLORTAB 'm' /* Material "color table" record */
428 #define DBID_STRSOL 's' /* String solid description */
429 #define DBID_ARBN 'n' /* Convex polyhedron with N faces */
430 #define DBID_PIPE 'w' /* pipe (wire) solid */
431 #define DBID_PARTICLE 'p' /* a particle (lozenge) */
432 #define DBID_NMG 'N' /* NMG solid */
433 #define DBID_SKETCH 'd' /* 2D sketch */
434 #define DBID_ANNOT 'a' /* 2D annotations */
435 #define DBID_EXTR 'e' /* solid of extrusion */
436 #define DBID_CLINE 'c' /* FASTGEN4 CLINE solid */
437 #define DBID_BOT 't' /* Bag o' triangles */
438 #define DBID_SCRIPT 'T' /* script */
439 
440  char u_size[DB_MINREC]; /* Minimum record size */
441 
442  struct ident i;
443  struct solidrec s;
444  struct combination c;
445  struct member M;
446  struct material_rec md;
447  struct B_solid B;
448  struct b_surf d;
449  /*
450  * The b_surf record is followed by
451  * d_nknots granules of knot vectors (first u, then v),
452  * and then by d_nctls granules of control mesh information.
453  * Note that neither of these have an ID field!
454  */
455  struct polyhead p;
456  struct polydata q;
457  struct ars_rec a;
458  struct ars_ext b;
459  /*
460  * All records below here are in machine-independent format.
461  */
462  struct strsol ss;
463  struct arbn_rec n;
464  /* new pipe solid */
465  struct pipewire_rec pwr;
466  struct particle_rec part;
467 
468  /* Version 0 is Release 4.0 to 4.2, Version 1 is Release 4.4 */
469  struct nmg_rec nmg;
470 
471  /* Solid of extrusion */
472  struct extr_rec extr;
473 
474  /* sketch */
475  struct sketch_rec skt;
476 
477  /* annotation */
478  struct annot_rec ant;
479 
480  /* script */
481  struct script_rec scr;
482 
483  /* FASTGEN4 CLINE element */
484  struct cline_rec cli;
485 
486  /* Bag o' triangles
487  * The vertices are stored in an array
488  * The faces are arrays of three ints each indexing into the array of vertices
489  */
490  struct bot_rec bot;
491 
492 }; /* union record */
493 #define DB_RECORD_NULL ((union record *)0)
494 
495 
496 /* DEPRECATED: do not use. */
497 DEPRECATED void rt_fastf_float(fastf_t *ff, const dbfloat_t *fp, int n, int flip);
498 
499 /* DEPRECATED: do not use. */
500 DEPRECATED void rt_mat_dbmat(fastf_t *ff, const dbfloat_t *dbp, int flip);
501 
502 /* DEPRECATED: do not use. */
503 DEPRECATED void rt_dbmat_mat(dbfloat_t *dbp, const fastf_t *ff);
504 
505 __END_DECLS
506 
507 #endif /* RT_DB4_H */
508 
509 /** @} */
510 /*
511  * Local Variables:
512  * mode: C
513  * tab-width: 8
514  * indent-tabs-mode: t
515  * c-file-style: "stroustrup"
516  * End:
517  * ex: shiftwidth=4 tabstop=8
518  */
Header file for the BRL-CAD common definitions.
void float float int * n
Definition: tig.h:74
#define DEPRECATED
Definition: common.h:401
float dbfloat_t
Definition: db4.h:84
DEPRECATED void rt_mat_dbmat(fastf_t *ff, const dbfloat_t *dbp, int flip)
#define DB_MINREC
Definition: db4.h:86
DEPRECATED void rt_fastf_float(fastf_t *ff, const dbfloat_t *fp, int n, int flip)
#define NAMESIZE
Definition: db4.h:74
DEPRECATED void rt_dbmat_mat(dbfloat_t *dbp, const fastf_t *ff)
double fastf_t
fastest 64-bit (or larger) floating point type
Definition: vmath.h:334
Definition: db4.h:240
char B_pad
Definition: db4.h:242
short B_nsurf
Definition: db4.h:244
dbfloat_t B_unused
Definition: db4.h:245
char B_name[NAMESIZE]
Definition: db4.h:243
char B_id
Definition: db4.h:241
Definition: db4.h:369
char ant_pad
Definition: db4.h:371
char ant_id
Definition: db4.h:370
unsigned char ant_count[4]
Definition: db4.h:376
unsigned char ant_V[8 *3]
Definition: db4.h:373
char ant_name[NAMESIZE]
Definition: db4.h:372
unsigned char ant_seg_count[4]
Definition: db4.h:375
unsigned char ant_vert_count[4]
Definition: db4.h:374
Definition: db4.h:309
unsigned char n_grans[4]
Definition: db4.h:314
unsigned char n_neqn[4]
Definition: db4.h:313
char n_pad
Definition: db4.h:311
char n_id
Definition: db4.h:310
char n_name[NAMESIZE]
Definition: db4.h:312
Definition: db4.h:290
char b_id
Definition: db4.h:291
char b_type
Definition: db4.h:292
short b_n
Definition: db4.h:293
dbfloat_t b_values[8 *3]
Definition: db4.h:296
short b_ngranule
Definition: db4.h:294
short b_pad
Definition: db4.h:295
Definition: db4.h:271
dbfloat_t a_zmin
Definition: db4.h:287
short a_curlen
Definition: db4.h:278
dbfloat_t a_ymax
Definition: db4.h:284
dbfloat_t a_zmax
Definition: db4.h:286
dbfloat_t a_xmin
Definition: db4.h:283
dbfloat_t a_ymin
Definition: db4.h:285
short a_pad
Definition: db4.h:281
short a_n
Definition: db4.h:277
char a_id
Definition: db4.h:272
char a_name[NAMESIZE]
Definition: db4.h:274
short a_m
Definition: db4.h:276
char a_type
Definition: db4.h:273
dbfloat_t a_xmax
Definition: db4.h:282
short a_totlen
Definition: db4.h:279
Definition: db4.h:248
short d_order[2]
Definition: db4.h:250
short d_nknots
Definition: db4.h:254
short d_nctls
Definition: db4.h:255
short d_kv_size[2]
Definition: db4.h:251
short d_ctl_size[2]
Definition: db4.h:252
short d_geom_type
Definition: db4.h:253
char d_id
Definition: db4.h:249
Definition: db4.h:395
unsigned char bot_nrec[4]
Definition: db4.h:399
unsigned char bot_err_mode
Definition: db4.h:402
char bot_name[NAMESIZE]
Definition: db4.h:398
unsigned char bot_num_verts[4]
Definition: db4.h:403
unsigned char bot_orientation
Definition: db4.h:400
unsigned char bot_data[1]
Definition: db4.h:405
unsigned char bot_num_triangles[4]
Definition: db4.h:404
char bot_pad
Definition: db4.h:397
unsigned char bot_mode
Definition: db4.h:401
char bot_id
Definition: db4.h:396
Definition: db4.h:385
char cli_name[NAMESIZE]
Definition: db4.h:388
unsigned char cli_radius[8]
Definition: db4.h:391
unsigned char cli_thick[8]
Definition: db4.h:392
unsigned char cli_V[8 *3]
Definition: db4.h:389
unsigned char cli_h[8 *3]
Definition: db4.h:390
char cli_id
Definition: db4.h:386
char cli_pad
Definition: db4.h:387
char c_id
Definition: db4.h:196
char c_flags
Definition: db4.h:197
short c_pad1
Definition: db4.h:206
short c_los
Definition: db4.h:209
char c_name[NAMESIZE]
Definition: db4.h:203
char c_inherit
Definition: db4.h:214
short c_aircode
Definition: db4.h:205
char c_matname[32]
Definition: db4.h:212
char c_override
Definition: db4.h:210
char c_matparm[60]
Definition: db4.h:213
unsigned char c_rgb[3]
Definition: db4.h:211
short c_material
Definition: db4.h:208
short c_regionid
Definition: db4.h:204
short c_pad2
Definition: db4.h:207
unsigned char epp_id[8]
Definition: db4.h:321
unsigned char epp_coord[8 *3]
Definition: db4.h:319
unsigned char epp_od[8]
Definition: db4.h:322
unsigned char epp_bendradius[8]
Definition: db4.h:320
Definition: db4.h:344
unsigned char ex_h[8 *3]
Definition: db4.h:349
unsigned char ex_count[4]
Definition: db4.h:353
unsigned char ex_V[8 *3]
Definition: db4.h:348
char ex_name[NAMESIZE]
Definition: db4.h:347
char ex_pad
Definition: db4.h:346
unsigned char ex_uvec[8 *3]
Definition: db4.h:350
unsigned char ex_key[4]
Definition: db4.h:352
char ex_id
Definition: db4.h:345
unsigned char ex_vvec[8 *3]
Definition: db4.h:351
Definition: db4.h:89
char i_title[72]
Definition: db4.h:106
char i_units
Definition: db4.h:91
char i_id
Definition: db4.h:90
char i_version[6]
Definition: db4.h:104
char i_floattype
Definition: db4.h:112
char i_byteorder
Definition: db4.h:108
short md_low
Definition: db4.h:232
short md_hi
Definition: db4.h:233
unsigned char md_g
Definition: db4.h:235
char md_flags
Definition: db4.h:231
unsigned char md_b
Definition: db4.h:236
unsigned char md_r
Definition: db4.h:234
char md_material[100]
Definition: db4.h:237
char md_id
Definition: db4.h:230
Definition: db4.h:219
char m_relation
Definition: db4.h:221
char m_id
Definition: db4.h:220
char m_brname[NAMESIZE]
Definition: db4.h:222
short m_pad1
Definition: db4.h:224
short m_pad2
Definition: db4.h:226
dbfloat_t m_mat[16]
Definition: db4.h:225
char m_instname[NAMESIZE]
Definition: db4.h:223
Definition: io.h:39
char p_pad
Definition: db4.h:336
unsigned char p_vrad[8]
Definition: db4.h:340
unsigned char p_v[8 *3]
Definition: db4.h:338
char p_id
Definition: db4.h:335
char p_name[NAMESIZE]
Definition: db4.h:337
unsigned char p_hrad[8]
Definition: db4.h:341
unsigned char p_h[8 *3]
Definition: db4.h:339
unsigned char pwr_count[4]
Definition: db4.h:330
unsigned char pwr_pt_count[4]
Definition: db4.h:329
char pwr_id
Definition: db4.h:326
struct exported_pipe_pnt pwr_data[1]
Definition: db4.h:331
char pwr_name[NAMESIZE]
Definition: db4.h:328
char pwr_pad
Definition: db4.h:327
Definition: db4.h:264
dbfloat_t q_verts[5][3]
Definition: db4.h:267
char q_count
Definition: db4.h:266
dbfloat_t q_norms[5][3]
Definition: db4.h:268
char q_id
Definition: db4.h:265
Definition: db4.h:258
char p_id
Definition: db4.h:259
char p_name[NAMESIZE]
Definition: db4.h:261
char p_pad1
Definition: db4.h:260
char script_pad
Definition: db4.h:381
char script_id
Definition: db4.h:380
char script_name[NAMESIZE]
Definition: db4.h:382
unsigned char skt_count[4]
Definition: db4.h:366
char skt_id
Definition: db4.h:358
unsigned char skt_vert_count[4]
Definition: db4.h:364
unsigned char skt_vvec[8 *3]
Definition: db4.h:363
char skt_pad
Definition: db4.h:359
char skt_name[NAMESIZE]
Definition: db4.h:360
unsigned char skt_V[8 *3]
Definition: db4.h:361
unsigned char skt_seg_count[4]
Definition: db4.h:365
unsigned char skt_uvec[8 *3]
Definition: db4.h:362
Definition: db4.h:120
char s_type
Definition: db4.h:122
short s_cgtype
Definition: db4.h:157
char s_name[NAMESIZE]
Definition: db4.h:156
dbfloat_t s_values[24]
Definition: db4.h:158
char s_id
Definition: db4.h:121
Definition: db4.h:299
char ss_args[4]
Definition: db4.h:306
char ss_pad
Definition: db4.h:301
char ss_id
Definition: db4.h:300
char ss_keyword[NAMESIZE]
Definition: db4.h:305
char ss_name[NAMESIZE]
Definition: db4.h:302
Definition: db4.h:413
struct strsol ss
Definition: db4.h:462
struct member M
Definition: db4.h:445
struct nmg_rec nmg
Definition: db4.h:469
struct b_surf d
Definition: db4.h:448
struct material_rec md
Definition: db4.h:446
struct ars_rec a
Definition: db4.h:457
struct pipewire_rec pwr
Definition: db4.h:465
struct polyhead p
Definition: db4.h:455
struct B_solid B
Definition: db4.h:447
struct particle_rec part
Definition: db4.h:466
char u_id
Definition: db4.h:415
char u_size[DB_MINREC]
Definition: db4.h:440
struct script_rec scr
Definition: db4.h:481
struct polydata q
Definition: db4.h:456
struct ars_ext b
Definition: db4.h:458
struct extr_rec extr
Definition: db4.h:472
struct arbn_rec n
Definition: db4.h:463
struct annot_rec ant
Definition: db4.h:478
struct ident i
Definition: db4.h:442
struct solidrec s
Definition: db4.h:443
struct sketch_rec skt
Definition: db4.h:475
struct cline_rec cli
Definition: db4.h:484
struct combination c
Definition: db4.h:444
struct bot_rec bot
Definition: db4.h:490
fundamental vector, matrix, quaternion math macros