GRASS 8 Programmer's Manual  8.5.0dev(2025)-c070206eb1
ogsf.h
Go to the documentation of this file.
1 /*!
2  \file include/grass/ogsf.h
3 
4  \brief OGSF header file (structures)
5 
6  This program is free software under the GNU General
7  Public License (>=v2). Read the file COPYING that
8  comes with GRASS for details.
9 
10  \author Original author Bill Brown, USACERL (January 1993)
11  \author Thematic mapping enabled by Martin Landa <landa.martin gmail.com)
12  (06/2011)
13 
14  (C) 2011 by the GRASS Development Team
15  */
16 
17 #ifndef GRASS_OGSF_H
18 #define GRASS_OGSF_H
19 
20 #include <grass/config.h>
21 #include <grass/bitmap.h>
22 #if defined(OPENGL_X11) || defined(OPENGL_WINDOWS)
23 #include <GL/gl.h>
24 #endif
25 #ifdef OPENGL_AQUA
26 #include <OpenGL/gl.h>
27 #endif
28 
29 #include <grass/gis.h>
30 
31 #define GS_UNIT_SIZE 1000.
32 
33 #define BETWEEN(x, a, b) (((x) > (a) && (x) < (b)) || ((x) > (b) && (x) < (a)))
34 #define GS_NEAR_EQUAL(x, y, ratio) \
35  ((x) == (y) || \
36  ((x) == 0.0 ? GS_BETWEEN((x), (y) + (y) * (ratio), (y) - (y) * (ratio)) \
37  : GS_BETWEEN((y), (x) + (x) * (ratio), (x) - (x) * (ratio))))
38 
39 /* current maximums */
40 #define MAX_SURFS 12
41 #define MAX_VECTS 50
42 #define MAX_SITES 50
43 #define MAX_VOLS 12 /* should match MAX_VOL_FILES below ? */
44 #define MAX_DSP 12
45 #define MAX_ATTS 7
46 #define MAX_LIGHTS 3
47 #define MAX_CPLANES 6
48 #define MAX_ISOSURFS 12
49 #define MAX_SLICES 12
50 
51 /* for gvl_file.c */
52 #define MAX_VOL_SLICES 4
53 #define MAX_VOL_FILES 100
54 
55 /* surface display modes */
56 #define DM_GOURAUD 0x00000100
57 #define DM_FLAT 0x00000200 /* defined for symmetry */
58 
59 #define DM_FRINGE 0x00000010
60 
61 #define DM_WIRE 0x00000001
62 #define DM_COL_WIRE 0x00000002
63 #define DM_POLY 0x00000004
64 #define DM_WIRE_POLY 0x00000008
65 
66 #define DM_GRID_WIRE 0x00000400
67 #define DM_GRID_SURF 0x00000800
68 
69 #define WC_COLOR_ATT 0xFF000000
70 
71 #define IFLAG unsigned int
72 
73 /* surface attribute ***descriptors*** */
74 #define ATT_NORM 0 /* library use only */
75 #define ATT_TOPO 1
76 #define ATT_COLOR 2
77 #define ATT_MASK 3
78 #define ATT_TRANSP 4
79 #define ATT_SHINE 5
80 #define ATT_EMIT 6
81 #define LEGAL_ATT(a) (a >= 0 && a < MAX_ATTS)
82 
83 /* surface attribute **sources** */
84 #define NOTSET_ATT 0
85 #define MAP_ATT 1
86 #define CONST_ATT 2
87 #define FUNC_ATT 3
88 #define LEGAL_SRC(s) \
89  (s == NOTSET_ATT || s == MAP_ATT || s == CONST_ATT || s == FUNC_ATT)
90 
91 /* site markers */
92 #define ST_X 1
93 #define ST_BOX 2
94 #define ST_SPHERE 3
95 #define ST_CUBE 4
96 #define ST_DIAMOND 5
97 #define ST_DEC_TREE 6
98 #define ST_CON_TREE 7
99 #define ST_ASTER 8
100 #define ST_GYRO 9
101 #define ST_HISTOGRAM 10
102 
103 /* Buffer modes */
104 #define GSD_FRONT 1
105 #define GSD_BACK 2
106 #define GSD_BOTH 3
107 
108 /* fence colormodes */
109 #define FC_OFF 0
110 #define FC_ABOVE 1
111 #define FC_BELOW 2
112 #define FC_BLEND 3
113 #define FC_GREY 4
114 
115 /* legend types */
116 #define LT_DISCRETE 0x00000100
117 #define LT_CONTINUOUS 0x00000200
118 
119 #define LT_LIST 0x00000010
120 /* list automatically discrete */
121 
122 #define LT_RANGE_LOWSET 0x00000001
123 #define LT_RANGE_HISET 0x00000002
124 #define LT_RANGE_LOW_HI 0x00000003
125 #define LT_INVERTED 0x00000008
126 
127 #define LT_SHOW_VALS 0x00001000
128 #define LT_SHOW_LABELS 0x00002000
129 
130 /* types of volume files */
131 #define VOL_FTYPE_RASTER3D 0
132 
133 /* types of volume values */
134 #define VOL_DTYPE_FLOAT 0
135 #define VOL_DTYPE_DOUBLE 1
136 
137 /*#define TRACE_FUNCS */
138 /*#define DEBUG */
139 
140 #define X 0
141 #define Y 1
142 #define Z 2
143 #define W 3
144 #define FROM 0
145 #define TO 1
146 
147 /* colormodes */
148 #define CM_COLOR 0
149 #define CM_EMISSION 1
150 #define CM_AMBIENT 2
151 #define CM_DIFFUSE 3
152 #define CM_SPECULAR 4
153 #define CM_AD 5
154 #define CM_NULL 6
155 
156 #define CM_WIRE CM_COLOR
157 
158 #define NULL_COLOR 0xFFFFFF
159 
160 /* attribute sizes - NOT YET USED */
161 #define GS_CHAR8 char
162 #define GS_SHORT16 short
163 #define GS_INT32 int
164 
165 /* attribute ***types*** */
166 #define ATTY_NULL 32 /* internal use only */
167 #define ATTY_MASK 16 /* can't use this one for numbytes */
168 #define ATTY_FLOAT 8 /* can't use this one for numbytes */
169 #define ATTY_INT 4
170 #define ATTY_SHORT 2
171 #define ATTY_CHAR 1
172 #define ATTY_ANY 63 /* internal use only */
173 #define LEGAL_TYPE(t) \
174  (t == ATTY_MASK || t == ATTY_FLOAT || t == ATTY_INT || t == ATTY_SHORT || \
175  t == ATTY_CHAR)
176 
177 #define MAXDIMS 4
178 
179 #define FUDGE(gs) ((gs->zmax_nz - gs->zmin_nz) / 500.)
180 #define DOT3(a, b) ((a)[X] * (b)[X] + (a)[Y] * (b)[Y] + (a)[Z] * (b)[Z])
181 
182 /* changed flags for datasets */
183 #define CF_NOT_CHANGED 0x000000
184 #define CF_COLOR_PACKED 0x000001
185 #define CF_USR_CHANGED 0x000010
186 #define CF_CHARSCALED 0x000100
187 
188 #define MAX_TF 6
189 
190 #define MASK_TL 0x10000000
191 #define MASK_TR 0x01000000
192 #define MASK_BR 0x00100000
193 #define MASK_BL 0x00010000
194 #define MASK_NPTS 0x00000007
195 
196 #define OGSF_POINT 1
197 #define OGSF_LINE 2
198 #define OGSF_POLYGON 3
199 
200 #define RED_MASK 0x000000FF
201 #define GRN_MASK 0x0000FF00
202 #define BLU_MASK 0x00FF0000
203 
204 typedef float Point4[4];
205 typedef float Point3[3];
206 typedef float Point2[2];
207 
208 typedef struct {
209  float *fb;
210  int *ib;
211  short *sb;
212  unsigned char *cb;
213  struct BM *bm;
214  struct BM *nm; /* null mask: set = null */
215  float (*tfunc)(float, int);
216  float k;
217 } typbuff;
218 
219 typedef struct { /* use hash table? */
220  /** @brief if n_elem == 256, index == NULL */
221  int n_elem;
222  char *index;
223  int *value;
224 } table256;
225 
226 typedef struct { /* applied thusly: offset, mult, if(use_lookup) lookup */
227  float offset;
228  float mult;
231 } transform;
232 
233 /* move this to dataset file? */
234 typedef struct {
235  int data_id;
236  int dims[MAXDIMS];
237  int ndims;
238  size_t numbytes;
239  char *unique_name;
243 } dataset;
244 
245 /* maybe add transformation matrix? */
246 typedef struct {
247  /** @brief NOTSET_ATT, MAP_ATT, CONST_ATT, FUNC_ATT */
249 
250  /** @brief ATTY_INT, ATTY_SHORT, ATTY_CHAR, or ATTY_FLOAT */
252 
253  /** @brief handle to dataset */
254  int hdata;
255 
256  /** Not yet supported */
257  int (*user_func)(void);
258  float constant;
259 
260  /** @todo: use transform instead */
261  int *lookup;
262  float min_nz, max_nz, range_nz;
264 } gsurf_att;
265 
266 typedef struct g_surf {
267  int gsurf_id;
268  int cols, rows;
269 
270  /** @brief mask, topo, color, etc. */
272 
273  /** @brief DM_GOURAUD | DM_FRINGE | DM_POLY, DM_WIRE, DM_WIRE_POLY */
275 
276  /** @brief 0xBBGGRR or WC_COLOR_ATT */
278 
279  /** @brief real world origin (i.e., SW corner) */
280  double ox, oy;
281  double xres, yres;
282  float z_exag;
287  /** @brief cells per viewcell, per wire viewcell */
289 
290  /** @brief no zero flags */
293  unsigned long *norms;
294  struct BM *curmask;
295  struct g_surf *next;
296  void *clientdata;
298 
299 /* maybe put attribute info here instead of in geovect - allow a single
300  vector file to have multiple attributes ? Cached lines should
301  usually be stored as 2d, since they may be draped on multiple
302  surfaces & Z will vary depending upon surface. */
303 
304 /**
305  * @brief Struct for vector feature displaying attributes.
306  */
307 typedef struct g_vect_style {
308  /** @brief Line color. */
309  int color;
310 
311  /** @brief %Point symbol/line type. */
312  int symbol;
313 
314  /** @brief Symbol size.
315  *
316  * Unset for lines.
317  */
318  float size;
319 
320  /**
321  * @brief Line width.
322  *
323  * Also used for lines forming symbols i.e. X.
324  */
325  int width;
326 
327  /*TODO:fill; Area fill pattern */
328  /*TODO:falpha; Area fill transparency */
329  /*TODO:lalpha; Line/boundary/point transparency */
330  /*TODO:struct *orientation; Symbol orientation */
331 
332  /** @brief %Point to next \ref gvstyle struct if single point has multiple
333  * styles.
334  *
335  * In such case, the feature with next style should be shifted.
336  */
339 
340 /** @brief Struct for vector map (thematic mapping) */
341 typedef struct g_vect_style_thematic {
342  int active;
343  int layer;
344 
347  char *size_column;
350 
351 /** @brief Line instance */
352 typedef struct g_line {
353  int type;
354  float norm[3];
355  int dims, npts;
358 
359  /** @brief Store information about all layers/cats for thematic display */
360  struct line_cats *cats;
361 
362  /** @brief Line instance look&feel. */
364 
365  /** @brief >0 Feature is highlighted. */
366  signed char highlighted;
367 
368  struct g_line *next;
370 
371 /** @brief Vector map (lines) */
372 typedef struct g_vect {
373  int gvect_id;
375 
376  /** if you want 'em flat, define the surface */
378 
379  int use_z;
380  int n_surfs;
381  char *filename;
383 
384  /* also maybe center & rotate? */
387  int (*bgn_read)(void), (*end_read)(void), (*nxt_line)(void);
388  struct g_vect *next;
389  void *clientdata;
390 
391  /** @brief thematic mapping */
393 
394  /** @brief Vector default look&feel */
396  gvstyle *hstyle; /* IMHO highlight should be per layer basis. */
398 
399 /** @brief Point instance */
400 typedef struct g_point {
401  int dims;
403 
404  /** @brief Store information about all layers/cats for thematic display */
405  struct line_cats *cats;
407 
408  /** @brief >0 Feature is highlighted */
409  signed char highlighted;
410 
411  struct g_point *next;
413 
414 /** @brief Vector map (points) */
415 typedef struct g_site {
416  int gsite_id;
417  int drape_surf_id[MAX_SURFS]; /* ditto */
420 
421  /** set when file loaded */
422  int has_z;
423 
424  char *filename;
428  int (*bgn_read)(void), (*end_read)(void), (*nxt_site)(void);
429  struct g_site *next;
430  void *clientdata;
431 
432  /** @brief thematic mapping */
434 
435  /** @brief points default look&feel */
437  gvstyle *hstyle; /* IMHO highlight should be per layer basis */
439 
440 typedef struct {
441  /** @brief id */
442  int data_id;
443 
444  /** @brief file type */
446 
447  /** @brief number of referencies to this file */
448  unsigned int count;
449 
450  /** @brief file name */
451  char *file_name;
452 
454 
455  /** @brief pointer to volume file descriptor */
456  void *map;
457 
458  /** @brief minimum, maximum value in file */
459  double min, max;
460 
461  /** @brief current status */
463  /** @brief current read mode */
465 
466  /** @brief data buffer */
467  void *buff;
468 } geovol_file;
469 
470 typedef struct {
472 
473  int hfile;
474 
475  /** unused */
476  int (*user_func)(void);
477  float constant;
478 
479  void *att_data;
480  int changed;
482 
483 typedef struct {
486 
488  unsigned char *data;
490 
491 typedef struct {
492  int dir;
493  float x1, x2, y1, y2, z1, z2;
494  unsigned char *data;
495  int changed;
496 
497  int mode, transp;
498 } geovol_slice;
499 
500 typedef struct g_vol {
501  int gvol_id;
502  struct g_vol *next;
503 
504  int hfile;
505  int cols, rows, depths;
506  double ox, oy, oz;
507  double xres, yres, zres;
508  double xmin, xmax, ymin, ymax, zmin, zmax;
509  double xrange, yrange, zrange;
512 
517 
518  int n_slices;
522 
523  void *clientdata;
525 
526 struct lightdefs {
527  /** @brief X, Y, Z, (1=local/0=inf) */
528  float position[4];
529 
530  /** @brief R, G, B */
531  float color[3];
532 
533  /** @brief R, G, B */
534  float ambient[3];
535 
536  /** @brief R, G, B */
537  float emission[3];
538 
539  /** @brief 0. to 128. */
540  float shine;
541 };
542 
543 struct georot {
544  /** @brief do rotation */
545  int do_rot;
546 
547  /** @brief rotation angle */
548  double rot_angle;
549 
550  /** @brief rotation axis */
551  double rot_axes[3];
552 
553  /** @brief rotation matrix */
554  GLdouble rotMatrix[16];
555 };
556 
557 typedef struct {
558  /** @brief latlon, equal area, etc */
560 
561  /** @brief perspective, ortho */
563 
564  /** @brief fixed center of view - true or false */
565  int infocus;
566  float from_to[2][4];
567  struct georot rotate;
568 
569  /** @brief 10ths of degrees */
570  int twist, fov, incl, look;
571 
572  /** @brief a global Z exag */
573  float real_to[4], vert_exag;
574  float scale;
575  struct lightdefs lights[MAX_LIGHTS];
576 } geoview;
577 
578 typedef struct { /* need to add elements here for off_screen drawing */
579  float nearclip, farclip, aspect;
580 
581  /** @brief Screen coordinates */
582  short left, right, bottom, top;
583  int bgcol;
584 } geodisplay;
585 
586 extern void (*Cxl_func)(void);
587 extern void (*Swap_func)(void); /* unused */
588 
589 /* Key frames */
590 /* these have to be 1 << KF_id_index */
591 
592 #define KF_FROMX_MASK 0x00000001
593 #define KF_FROMY_MASK 0x00000002
594 #define KF_FROMZ_MASK 0x00000004
595 #define KF_FROM_MASK 0x00000007
596 
597 #define KF_DIRX_MASK 0x00000008
598 #define KF_DIRY_MASK 0x00000010
599 #define KF_DIRZ_MASK 0x00000020
600 #define KF_DIR_MASK 0x00000038
601 
602 #define KF_FOV_MASK 0x00000040
603 #define KF_TWIST_MASK 0x00000080
604 
605 #define KF_ALL_MASK 0x000000FF
606 
607 #define KF_NUMFIELDS 8
608 
609 #define KF_LINEAR 111
610 #define KF_SPLINE 222
611 #define KF_LEGAL_MODE(m) (m == KF_LINEAR || m == KF_SPLINE)
612 
613 #define KF_FROMX 0
614 #define KF_FROMY 1
615 #define KF_FROMZ 2
616 #define KF_DIRX 3
617 #define KF_DIRY 4
618 #define KF_DIRZ 5
619 #define KF_FOV 6
620 #define KF_TWIST 7
621 
622 #define FM_VECT 0x00000001
623 #define FM_SITE 0x00000002
624 #define FM_PATH 0x00000004
625 #define FM_VOL 0x00000008
626 #define FM_LABEL 0x00000010
627 
628 typedef struct view_node {
631 
632 typedef struct key_node {
635  unsigned long fieldmask;
636  struct key_node *next, *prior;
638 
639 /* Bring all the function prototypes */
640 #include <grass/defs/ogsf.h>
641 
642 #endif /* GRASS_OGSF_H */
#define min(x, y)
Definition: draw2.c:29
struct key_node Keylist
struct g_vol geovol
struct g_line geoline
Line instance.
struct g_vect geovect
Vector map (lines)
void(* Cxl_func)(void)
Definition: gsx.c:21
#define MAX_ATTS
Definition: ogsf.h:45
#define MAX_ISOSURFS
Definition: ogsf.h:48
struct view_node Viewnode
struct g_surf geosurf
float Point2[2]
Definition: ogsf.h:206
float Point3[3]
Definition: ogsf.h:205
#define MAXDIMS
Definition: ogsf.h:177
#define IFLAG
Definition: ogsf.h:71
void(* Swap_func)(void)
struct g_point geopoint
Point instance.
#define MAX_LIGHTS
Definition: ogsf.h:46
struct g_site geosite
Vector map (points)
#define MAX_SURFS
Definition: ogsf.h:40
struct g_vect_style_thematic gvstyle_thematic
Struct for vector map (thematic mapping)
struct g_vect_style gvstyle
Struct for vector feature displaying attributes.
float Point4[4]
Definition: ogsf.h:204
#define MAX_SLICES
Definition: ogsf.h:49
#define KF_NUMFIELDS
Definition: ogsf.h:607
Definition: bitmap.h:17
Definition: ogsf.h:234
typbuff databuff
Definition: ogsf.h:240
int need_reload
Definition: ogsf.h:242
int data_id
Definition: ogsf.h:235
size_t numbytes
Definition: ogsf.h:238
int ndims
Definition: ogsf.h:237
char * unique_name
Definition: ogsf.h:239
unsigned int changed
Definition: ogsf.h:241
Line instance.
Definition: ogsf.h:352
signed char highlighted
>0 Feature is highlighted.
Definition: ogsf.h:366
float norm[3]
Definition: ogsf.h:354
Point3 * p3
Definition: ogsf.h:356
struct g_line * next
Definition: ogsf.h:368
int npts
Definition: ogsf.h:355
gvstyle * style
Line instance look&feel.
Definition: ogsf.h:363
int type
Definition: ogsf.h:353
Point2 * p2
Definition: ogsf.h:357
int dims
Definition: ogsf.h:355
struct line_cats * cats
Store information about all layers/cats for thematic display.
Definition: ogsf.h:360
Point instance.
Definition: ogsf.h:400
Point3 p3
Definition: ogsf.h:402
int dims
Definition: ogsf.h:401
struct g_point * next
Definition: ogsf.h:411
struct line_cats * cats
Store information about all layers/cats for thematic display.
Definition: ogsf.h:405
gvstyle * style
Definition: ogsf.h:406
signed char highlighted
>0 Feature is highlighted
Definition: ogsf.h:409
Vector map (points)
Definition: ogsf.h:415
int(*)(*)(*) nxt_site(void)
Definition: ogsf.h:428
char * filename
Definition: ogsf.h:424
float z_trans
Definition: ogsf.h:426
struct g_site * next
Definition: ogsf.h:429
int drape_surf_id[12]
Definition: ogsf.h:417
int(* bgn_read)(void)
Definition: ogsf.h:428
float y_trans
Definition: ogsf.h:426
int use_z
Definition: ogsf.h:419
float x_trans
Definition: ogsf.h:426
transform attr_trans
Definition: ogsf.h:425
int gsite_id
Definition: ogsf.h:416
int use_mem
Definition: ogsf.h:419
int(*)(*) end_read(void)
Definition: ogsf.h:428
void * clientdata
Definition: ogsf.h:430
gvstyle * hstyle
Definition: ogsf.h:437
gvstyle_thematic * tstyle
thematic mapping
Definition: ogsf.h:433
geopoint * points
Definition: ogsf.h:427
int n_sites
Definition: ogsf.h:418
int has_z
Definition: ogsf.h:422
gvstyle * style
points default look&feel
Definition: ogsf.h:436
int n_surfs
Definition: ogsf.h:418
Definition: ogsf.h:266
float x_trans
Definition: ogsf.h:283
float ymax
Definition: ogsf.h:284
int nz_color
Definition: ogsf.h:291
int rows
Definition: ogsf.h:268
float ymin
Definition: ogsf.h:284
double yres
Definition: ogsf.h:281
float zrange_nz
Definition: ogsf.h:286
float yrange
Definition: ogsf.h:285
float xmax
Definition: ogsf.h:284
int cols
Definition: ogsf.h:268
double ox
real world origin (i.e., SW corner)
Definition: ogsf.h:280
float xrange
Definition: ogsf.h:285
unsigned int draw_mode
DM_GOURAUD | DM_FRINGE | DM_POLY, DM_WIRE, DM_WIRE_POLY.
Definition: ogsf.h:274
long wire_color
0xBBGGRR or WC_COLOR_ATT
Definition: ogsf.h:277
unsigned long * norms
Definition: ogsf.h:293
float xmin
Definition: ogsf.h:284
gsurf_att att[7]
mask, topo, color, etc.
Definition: ogsf.h:271
int gsurf_id
Definition: ogsf.h:267
int y_mod
Definition: ogsf.h:288
int x_modw
Definition: ogsf.h:288
float zmax_nz
Definition: ogsf.h:286
int y_modw
Definition: ogsf.h:288
double xres
Definition: ogsf.h:281
struct BM * curmask
Definition: ogsf.h:294
int x_mod
cells per viewcell, per wire viewcell
Definition: ogsf.h:288
struct g_surf * next
Definition: ogsf.h:295
int norm_needupdate
Definition: ogsf.h:292
double oy
Definition: ogsf.h:280
float z_exag
Definition: ogsf.h:282
float zmin_nz
Definition: ogsf.h:286
int mask_needupdate
Definition: ogsf.h:292
int nz_topo
no zero flags
Definition: ogsf.h:291
float z_trans
Definition: ogsf.h:283
float zmin
Definition: ogsf.h:284
float zrange
Definition: ogsf.h:285
void * clientdata
Definition: ogsf.h:296
float zminmasked
Definition: ogsf.h:284
float zmax
Definition: ogsf.h:284
float y_trans
Definition: ogsf.h:283
Struct for vector map (thematic mapping)
Definition: ogsf.h:341
char * symbol_column
Definition: ogsf.h:346
char * color_column
Definition: ogsf.h:345
char * size_column
Definition: ogsf.h:347
char * width_column
Definition: ogsf.h:348
Struct for vector feature displaying attributes.
Definition: ogsf.h:307
int color
Line color.
Definition: ogsf.h:309
struct g_vect_style * next
Point to next gvstyle struct if single point has multiple styles.
Definition: ogsf.h:337
int symbol
Point symbol/line type.
Definition: ogsf.h:312
float size
Symbol size.
Definition: ogsf.h:318
int width
Line width.
Definition: ogsf.h:325
Vector map (lines)
Definition: ogsf.h:372
geoline * fastlines
Definition: ogsf.h:386
gvstyle * hstyle
Definition: ogsf.h:396
int use_mem
Definition: ogsf.h:374
char * filename
Definition: ogsf.h:381
float y_trans
Definition: ogsf.h:382
int n_lines
Definition: ogsf.h:374
int n_surfs
Definition: ogsf.h:380
gvstyle_thematic * tstyle
thematic mapping
Definition: ogsf.h:392
gvstyle * style
Vector default look&feel.
Definition: ogsf.h:395
float z_trans
Definition: ogsf.h:382
int(*)(*) end_read(void)
Definition: ogsf.h:387
int drape_surf_id[12]
Definition: ogsf.h:377
int use_z
Definition: ogsf.h:379
float x_trans
Definition: ogsf.h:382
struct g_vect * next
Definition: ogsf.h:388
int(*)(*)(*) nxt_line(void)
Definition: ogsf.h:387
geoline * lines
Definition: ogsf.h:385
void * clientdata
Definition: ogsf.h:389
int(* bgn_read)(void)
Definition: ogsf.h:387
int gvect_id
Definition: ogsf.h:373
Definition: ogsf.h:500
double xmax
Definition: ogsf.h:508
int n_slices
Definition: ogsf.h:518
geovol_slice * slice[12]
Definition: ogsf.h:519
double yrange
Definition: ogsf.h:509
int hfile
Definition: ogsf.h:504
double oy
Definition: ogsf.h:506
int depths
Definition: ogsf.h:505
geovol_isosurf * isosurf[12]
Definition: ogsf.h:514
int slice_z_mod
Definition: ogsf.h:520
unsigned int slice_draw_mode
Definition: ogsf.h:521
unsigned int isosurf_draw_mode
Definition: ogsf.h:516
float x_trans
Definition: ogsf.h:510
double xrange
Definition: ogsf.h:509
int isosurf_z_mod
Definition: ogsf.h:515
int slice_y_mod
Definition: ogsf.h:520
double ymax
Definition: ogsf.h:508
double xmin
Definition: ogsf.h:508
int isosurf_y_mod
Definition: ogsf.h:515
double zres
Definition: ogsf.h:507
double ox
Definition: ogsf.h:506
struct g_vol * next
Definition: ogsf.h:502
double zmin
Definition: ogsf.h:508
void * clientdata
Definition: ogsf.h:523
int cols
Definition: ogsf.h:505
int isosurf_x_mod
Definition: ogsf.h:515
double zrange
Definition: ogsf.h:509
double ymin
Definition: ogsf.h:508
double yres
Definition: ogsf.h:507
float z_trans
Definition: ogsf.h:510
int gvol_id
Definition: ogsf.h:501
int draw_wire
Definition: ogsf.h:511
double oz
Definition: ogsf.h:506
double zmax
Definition: ogsf.h:508
int slice_x_mod
Definition: ogsf.h:520
float y_trans
Definition: ogsf.h:510
int n_isosurfs
Definition: ogsf.h:513
double xres
Definition: ogsf.h:507
int rows
Definition: ogsf.h:505
float aspect
Definition: ogsf.h:579
short bottom
Definition: ogsf.h:582
int bgcol
Definition: ogsf.h:583
Definition: ogsf.h:543
double rot_angle
rotation angle
Definition: ogsf.h:548
GLdouble rotMatrix[16]
rotation matrix
Definition: ogsf.h:554
int do_rot
do rotation
Definition: ogsf.h:545
double rot_axes[3]
rotation axis
Definition: ogsf.h:551
Definition: ogsf.h:557
int view_proj
perspective, ortho
Definition: ogsf.h:562
int fov
Definition: ogsf.h:570
int coord_sys
latlon, equal area, etc
Definition: ogsf.h:559
int infocus
fixed center of view - true or false
Definition: ogsf.h:565
unsigned int mode
current read mode
Definition: ogsf.h:464
char * file_name
file name
Definition: ogsf.h:451
unsigned int data_type
Definition: ogsf.h:453
void * map
pointer to volume file descriptor
Definition: ogsf.h:456
unsigned int file_type
file type
Definition: ogsf.h:445
unsigned int count
number of referencies to this file
Definition: ogsf.h:448
double max
Definition: ogsf.h:459
unsigned int status
current status
Definition: ogsf.h:462
void * buff
data buffer
Definition: ogsf.h:467
int data_id
id
Definition: ogsf.h:442
void * att_data
Definition: ogsf.h:479
float constant
Definition: ogsf.h:477
unsigned int att_src
Definition: ogsf.h:471
unsigned char * data
Definition: ogsf.h:488
int inout_mode
Definition: ogsf.h:484
int data_desc
Definition: ogsf.h:487
unsigned char * data
Definition: ogsf.h:494
float x1
Definition: ogsf.h:493
int changed
Definition: ogsf.h:495
int dir
Definition: ogsf.h:492
int mode
Definition: ogsf.h:497
int hdata
handle to dataset
Definition: ogsf.h:254
float max_nz
Definition: ogsf.h:262
float constant
Definition: ogsf.h:258
int * lookup
Definition: ogsf.h:261
unsigned int att_type
ATTY_INT, ATTY_SHORT, ATTY_CHAR, or ATTY_FLOAT.
Definition: ogsf.h:251
float default_null
Definition: ogsf.h:263
unsigned int att_src
NOTSET_ATT, MAP_ATT, CONST_ATT, FUNC_ATT.
Definition: ogsf.h:248
Definition: ogsf.h:632
unsigned long fieldmask
Definition: ogsf.h:635
struct key_node * prior
Definition: ogsf.h:636
float pos
Definition: ogsf.h:633
struct key_node * next
Definition: ogsf.h:636
float fields[8]
Definition: ogsf.h:633
int look_ahead
Definition: ogsf.h:634
float emission[3]
R, G, B.
Definition: ogsf.h:537
float ambient[3]
R, G, B.
Definition: ogsf.h:534
float shine
0. to 128.
Definition: ogsf.h:540
float position[4]
X, Y, Z, (1=local/0=inf)
Definition: ogsf.h:528
float color[3]
R, G, B.
Definition: ogsf.h:531
Feature category info.
Definition: dig_structs.h:1677
Definition: ogsf.h:219
int n_elem
if n_elem == 256, index == NULL
Definition: ogsf.h:221
int * value
Definition: ogsf.h:223
char * index
Definition: ogsf.h:222
table256 lookup
Definition: ogsf.h:230
float mult
Definition: ogsf.h:228
int use_lookup
Definition: ogsf.h:229
float offset
Definition: ogsf.h:227
Definition: ogsf.h:208
float * fb
Definition: ogsf.h:209
struct BM * nm
Definition: ogsf.h:214
unsigned char * cb
Definition: ogsf.h:212
short * sb
Definition: ogsf.h:211
float k
Definition: ogsf.h:216
int * ib
Definition: ogsf.h:210
struct BM * bm
Definition: ogsf.h:213
float fields[8]
Definition: ogsf.h:629