BRL-CAD
defines.h
Go to the documentation of this file.
1/* B V I E W . H
2 * BRL-CAD
3 *
4 * Copyright (c) 1993-2022 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 bv_defines
21 *
22 * This header is intended to be independent of any one BRL-CAD library and is
23 * specifically intended to allow the easy definition of common display list
24 * types between otherwise independent libraries (libdm and libged, for
25 * example).
26 *
27 *
28 * NEXT STEPS: get a selection set for the view organized, add commands that
29 * allow the view2 command to create(view) and select (view or solid) objects,
30 * and figure out how to allow per-object xy handling callbacks. (The latter
31 * will probably in the end be how we implement primitive editing as well...)
32 *
33 * Test case will be the polygon circle - create and resize. May want to
34 * switch the container being used from a raw array to a bu_ptbl... eventually
35 * would probably be better to have polygons be first class view scene
36 * objects...
37 *
38 */
39#ifndef DM_BV_H
40#define DM_BV_H
41
42#include "common.h"
43#include "bu/list.h"
44#include "bu/vls.h"
45#include "bu/ptbl.h"
46#include "bg/polygon_types.h"
47#include "bv/tcl_data.h"
48#include "bv/faceplate.h"
49#include "vmath.h"
50
51/** @{ */
52/** @file bv.h */
53
54#ifndef BV_EXPORT
55# if defined(BV_DLL_EXPORTS) && defined(BV_DLL_IMPORTS)
56# error "Only BV_DLL_EXPORTS or BV_DLL_IMPORTS can be defined, not both."
57# elif defined(BV_DLL_EXPORTS)
58# define BV_EXPORT COMPILER_DLLEXPORT
59# elif defined(BV_DLL_IMPORTS)
60# define BV_EXPORT COMPILER_DLLIMPORT
61# else
62# define BV_EXPORT
63# endif
64#endif
65
66#define BV_MINVIEWSIZE 0.0001
67#define BV_MINVIEWSCALE 0.00005
68
69#ifndef UP
70# define UP 0
71#endif
72#ifndef DOWN
73# define DOWN 1
74#endif
75
76#define BV_ANCHOR_AUTO 0
77#define BV_ANCHOR_BOTTOM_LEFT 1
78#define BV_ANCHOR_BOTTOM_CENTER 2
79#define BV_ANCHOR_BOTTOM_RIGHT 3
80#define BV_ANCHOR_MIDDLE_LEFT 4
81#define BV_ANCHOR_MIDDLE_CENTER 5
82#define BV_ANCHOR_MIDDLE_RIGHT 6
83#define BV_ANCHOR_TOP_LEFT 7
84#define BV_ANCHOR_TOP_CENTER 8
85#define BV_ANCHOR_TOP_RIGHT 9
86struct bv_label {
87 int size;
88 struct bu_vls label;
89 point_t p; // 3D base of label text
90 int line_flag; // If 1, draw a line from label anchor to target
92 int anchor; // Either closest candidate to target (AUTO), or fixed
93 int arrow; // If 1, use an arrow indicating direction from label to target
94};
95
96
97/* Note - this container holds information both for data axes and for
98 * the more elaborate visuals associated with the Archer style model axes.
99 * The latter is a superset of the former, so there should be no need for
100 * a separate data type. */
101struct bv_axes {
102 int draw;
103 point_t axes_pos; /* in model coordinates */
104 fastf_t axes_size; /* in view coordinates for HUD drawing-mode axes */
105 int line_width; /* in pixels */
107
108 /* The following are (currently) only used when drawing
109 * the faceplace HUD axes */
115 int tick_length; /* in pixels */
116 int tick_major_length; /* in pixels */
122};
123
124
125// Many settings have defaults at the view level, and may be overridden for
126// individual scene objects.
127//
128// TODO - once this settles down, it will probably warrant a bu_structparse
129// for value setting
131
132 int s_dmode; /**< @brief draw mode: 0 - wireframe
133 * 1 - shaded bots and polysolids only (booleans NOT evaluated)
134 * 2 - shaded (booleans NOT evaluated)
135 * 3 - shaded (booleans evaluated)
136 * 4 - hidden line
137 */
138 fastf_t transparency; /**< @brief holds a transparency value in the range [0.0, 1.0] - 1 is opaque */
139
141 unsigned char color[3]; /**< @brief color to draw as */
142
143 int s_line_width; /**< @brief current line width */
144 fastf_t s_arrow_tip_length; /**< @brief arrow tip length */
145 fastf_t s_arrow_tip_width; /**< @brief arrow tip width */
146 int draw_solid_lines_only; /**< @brief do not use dashed lines for subtraction solids */
147 int draw_non_subtract_only; /**< @brief do not visualize subtraction solids */
148};
149#define BV_OBJ_SETTINGS_INIT {0, 1.0, 0, {255, 0, 0}, 1, 0.0, 0.0, 0, 0}
150
151
152/* Note that it is possible for a view object to be view-only (not
153 * corresponding directly to the wireframe of a database shape) but also based
154 * off of database data. Evaluated shaded objects would be an example, as
155 * would NIRT solid shotline visualizations or overlap visualizations. The
156 * categorizations for the various types of bv_scene_obj objects would be:
157 *
158 * solid wireframe/triangles (obj.s): BV_DBOBJ_BASED
159 * rtcheck overlap visual: BV_DBOBJ_BASED & BV_VIEWONLY
160 * polygon/line/label: BV_VIEWONLY
161 *
162 * The distinction between objects (lines, labels, etc.) defined as
163 * bv_scene_obj VIEW ONLY objects and the faceplate elements is objects
164 * defined as bv_scene_obj objects DO exist in the 3D scene, and will move
165 * as 3D elements when the view is manipulated (although label text is drawn
166 * parallel to the view plane.) Faceplate elements exist ONLY in the HUD and
167 * are not managed as bv_scene_obj objects - they will not move with view
168 * manipulation.
169 */
170#define BV_DBOBJ_BASED 0x01
171#define BV_VIEWONLY 0x02
172#define BV_LINES 0x04
173#define BV_LABELS 0x08
174#define BV_AXES 0x10
175#define BV_POLYGONS 0x20
176
177struct bview;
178
180 struct bu_list l;
181
182 /* View object name and type id */
183 unsigned long long s_type_flags;
184 struct bu_vls s_name; /**< @brief object name (may not be unique, used for activities like path lookup) */
185 struct bu_vls s_uuid; /**< @brief object name (unique, may be less immediately clear to user) */
186 mat_t s_mat; /**< @brief mat to use for internal lookup */
187
188 /* Associated bv. Note that scene objects are not assigned uniquely to
189 * one view. This value may be changed by the application in a multi-view
190 * scenario as an object is edited from multiple different views, to supply
191 * the necessary view context for editing. If the object needs to retain
192 * knowledge of its original/creation view, it should save that info
193 * internally in its s_i_data container. */
194 struct bview *s_v;
195
196 /* Knowledge of how to create/update s_vlist and the other 3D geometry data, as well as
197 * manage any custom data specific to this object */
198 void *s_i_data; /**< @brief custom view data (bv_line_seg, bv_label, bv_polyon, etc) */
199 int (*s_update_callback)(struct bv_scene_obj *, int); /**< @brief custom update/generator for s_vlist */
200 void (*s_free_callback)(struct bv_scene_obj *); /**< @brief free any info stored in s_i_data */
201
202 /* Actual 3D geometry data and information */
203 struct bu_list s_vlist; /**< @brief Pointer to unclipped vector list */
204 int s_vlen; /**< @brief Number of actual cmd[] entries in vlist */
205 unsigned int s_dlist; /**< @brief display list index */
206 fastf_t s_size; /**< @brief Distance across solid, in model space */
207 fastf_t s_csize; /**< @brief Dist across clipped solid (model space) */
208 vect_t s_center; /**< @brief Center point of solid, in model space */
209 int s_displayobj; /**< @brief Vector list contains vertices in display context flag */
210
211 /* Display properties */
212 char s_flag; /**< @brief UP = object visible, DOWN = obj invis */
213 char s_iflag; /**< @brief UP = illuminated, DOWN = regular */
214 unsigned char s_color[3]; /**< @brief color to draw as */
215 int s_soldash; /**< @brief solid/dashed line flag: 0 = solid, 1 = dashed*/
216 int s_arrow; /**< @brief arrow flag for view object drawing routines */
217 int s_changed; /**< @brief changed flag - set by s_update_callback if a change occurred */
218
219 /* Adaptive plotting info.
220 *
221 * The adaptive wireframe flag is set if the wireframe was created while
222 * adaptive mode is on - this is to allow reversion to non-adaptive
223 * wireframes if the mode is switched off without the view scale changing.
224 *
225 * NOTE: We store the following NOT for controlling the drawing, but so we
226 * can determine if the vlist is current with respect to the parent view
227 * settings. These values SHOULD NOT be directly manipulated by any user
228 * facing commands (such as view obj). */
234
235 /* Scene object settings which also (potentially) have global defaults but
236 * may be overridden locally */
238
239 /* Settings that may be less necessary... */
241
242 /* Child objects of this object */
244
245 /* Container for reusing bv_scene_obj allocations */
247
248 /* User data to associate with this view object */
249 void *s_u_data;
250};
251
252
253
254/* bv_scene_groups (one level above scene objects, conceptually equivalent
255 * to display_list) are used to capture the intent of drawing commands. For
256 * example, in the scenario where a draw command is used to visualize a comb
257 * with sub-combs a and b:
258 *
259 * ged> draw comb
260 *
261 * The drawing code will check the proposed group against existing groups,
262 * adding and removing accordingly. It will then walk the hierarchy and create
263 * bv_scene_obj instances for all solids below comb/a and comb/b as children
264 * of the scene group. Note that since we specified "comb" as the drawn
265 * object, if comb/b is removed from comb and comb/c is added, we would expect
266 * comb's displayed view to be updated to reflect its current structure. If,
267 * however, we instead did the original visualization with the commands:
268 *
269 * ged> draw comb/a
270 * ged> draw comb/b
271 *
272 * The same solids would be drawn, but conceptually the comb itself is not
273 * drawn - the two instances are. If comb/b is removed and comb/c added, we
274 * would not expect comb/c to be drawn since we never drew either that instance
275 * or its parent comb.
276 *
277 * However, if comb/a and comb/b are drawn and then comb is drawn, the new comb
278 * scene group will replace both the comb/a and comb/b groups since they are now
279 * part of a higher level object being drawn. If comb is drawn and comb/a is
280 * subsequently drawn, it will be a no-op since "comb" is already covering that
281 * case.
282 *
283 * The rule with bv_scene_group instances is their children must specify a
284 * fully realized entity - if the s_name is "/comb/a" then everything below
285 * /comb/a is drawn. If /comb/a/obj1.s is erased, new bv_scene_group
286 * entities will be needed to reflect the partial nature of /comb/a in the
287 * visualization. That requirement also propagates back up the tree. If a has
288 * obj1.s and obj2.s below it, and /comb/a/obj1.s is erased, an original
289 * "/comb" scene group will be replaced by new scene groups: /comb/a/obj2.s and
290 * /comb/b. Note that if /comb/a/obj1.s is subsequently drawn in isolation,
291 * the scene groups will not collapse back to a single comb group - the user
292 * will not at that point have explicitly issued instructions to draw comb as a
293 * whole, even though all the individual elements have been drawn. A "view
294 * simplify" command should probably be added to support collapsing to the
295 * simplest available option automatically in that situation.
296 *
297 * Note that the above rule is for explicit erasure from the drawn scene group
298 * - if the structure of /comb/a is changed the drawn object is still "comb"
299 * and the solid children of the existing group are updated to reflect the
300 * current state of comb, rather than introducing new scene groups.
301 *
302 * Much like point_t and vect_t, the distinction between a group and an
303 * individual object is largely semantic rather than a question of different
304 * data storage. A group just uses the bv_scene_obj container to store
305 * group-wide default settings, and g.children holds the individual
306 * bv_scene_obj entries corresponding to the solids. A bv_scene_obj
307 * should always map to a solid - a group may specify a solid but more
308 * typically will reference the root of a CSG tree and have solids below it.
309 * We define them to have different types only to help keep straight in the
310 * code what is a conceptually a group and what is an individual scene object.
311 */
312#define bv_scene_group bv_scene_obj
313
314/* We encapsulate non-camera settings into a container mainly to allow for
315 * easier re-use of the same settings between different views - if a common
316 * setting set is maintained between different views, this container allows
317 * us to just point to the common set from all views using it. */
325
326 // Adaptive plotting related settings - these are used when the wireframe
327 // generated by primitives is based on the view information.
333
334 // Faceplate elements fall into two general categories: those which are
335 // interactively adjusted (in a geometric sense) and those which are not.
336 // The non-interactive are generally just enabled or disabled:
343 int gv_fps; // Display Frames-Per-Second metric
345
346 // Framebuffer visualization is possible if there is an attached dm and
347 // that dm has an associated framebuffer. If those conditions are met,
348 // this variable is used to control how the fb is visualized.
349 int gv_fb_mode; // 0 = off, 1 = overlay, 2 = underlay
350
351 // More complex are the faceplate view elements not corresponding to
352 // geometry objects but editable by the user. These aren't managed as
353 // gv_view_objs (they are HUD visuals and thus not part of the scene) so
354 // they have some unique requirements.
357
358
359 // Not yet implemented - mechanism for defining a set of selected view
360 // objects
362};
363
364struct bview {
365 uint32_t magic; /**< @brief magic number */
367
368 /* Size info */
370 fastf_t gv_a_scale; /**< @brief absolute scale */
372 fastf_t gv_size; /**< @brief 2.0 * scale */
373 fastf_t gv_isize; /**< @brief 1.0 / size */
380
381 /* Camera info */
382 fastf_t gv_perspective; /**< @brief perspective angle */
384 vect_t gv_eye_pos; /**< @brief eye position */
386 char gv_coord; /**< @brief coordinate system */
387 char gv_rotate_about; /**< @brief indicates what point rotations are about */
393 mat_t gv_pmat; /**< @brief perspective matrix */
394
395 /* Keyboard/mouse info */
400 char gv_key;
401 unsigned long gv_mod_flags;
404
405 /* Settings */
406 struct bview_settings *gv_s; /**< @brief shared settings supplied by user */
407 struct bview_settings gv_ls; /**< @brief locally maintained settings specific to view (used if gv_s is null) */
408
409 /* If a view is marked as independent, its local containers are used even
410 * if pointers to shared tables are set. This allows for fully independent
411 * views with the same GED instance, at the cost of increased memory usage
412 * if multiple views draw the same objects. */
414
415 // Container for db object groups unique to this view (typical use case is
416 // adaptive plotting, where geometry wireframes may differ from view to
417 // view and thus need unique vlists.)
419 // Container for storing bv_scene_obj elements unique to this view.
421
422
423 // Container for shared db object groups (usually comes from the app and is
424 // owned by gedp - if not, defaults to the same container as gv_view_grps)
426 // Shared view objects common to multiple views. Defaults to gv_view_objs
427 // unless/until the app supplies a container.
429
430
431 // bv_vlist entities to recycle for shared objects
433
434 // Available bv_vlist entities to recycle before allocating new for local
435 // view objects. This is used only if the app doesn't supply a vlfree -
436 // normally the app should do so, so memory from one view can be reused for
437 // other views.
439
440 /* Container for reusing bv_scene_obj allocations */
442
443 /*
444 * gv_data_vZ is an internal parameter used by commands creating and
445 * manipulating data objects. Geometrically, it is a magnitude in the
446 * direction of the Z vector of the view plane. Functionally, what it
447 * allows the code to do is define a 2D plane embedded in in 3D space that
448 * is offset from but parallel to the view plane - in an orthogonal view
449 * this corresponds to objects drawn in that plane being "above" or "below"
450 * objects defined within the view plane itself.
451 *
452 * Visually, objects drawn in this fashion in orthogonal views will be
453 * indistinguishable regardless of their vZ offset - it is only when the
454 * view is rotated that the user will be able to see the "above" and
455 * "below" effect of creating view objects with differing vZ values.
456 *
457 * Users will generally not want to set gv_data_vZ directly, as it is a view
458 * space value and may not behave intuitively. Commands are defined to
459 * calculate vZ values based on model spaces inputs, and these should be
460 * used to generate the value supplied to gv_data_vZ.
461 */
463
464
465 // libtclcad data
467
468 /* Callback, external data */
469 void (*gv_callback)(); /**< @brief called in ged_view_update with gvp and gv_clientData */
470 void *gv_clientData; /**< @brief passed to gv_callback */
472 void *dmp; /* Display manager pointer, if one is associated with this view */
473 void *u_data; /* Caller data associated with this view */
474};
475
476#endif /* DM_BV_H */
477
478/** @} */
479/*
480 * Local Variables:
481 * mode: C
482 * tab-width: 8
483 * indent-tabs-mode: t
484 * c-file-style: "stroustrup"
485 * End:
486 * ex: shiftwidth=4 tabstop=8
487 */
Header file for the BRL-CAD common definitions.
fastf_t vect_t[ELEMENTS_PER_VECT]
3-tuple vector
Definition: vmath.h:345
double fastf_t
fastest 64-bit (or larger) floating point type
Definition: vmath.h:330
fastf_t mat_t[ELEMENTS_PER_MAT]
4x4 matrix
Definition: vmath.h:366
fastf_t point_t[ELEMENTS_PER_POINT]
3-tuple point
Definition: vmath.h:351
Definition: list.h:131
Definition: ptbl.h:53
Definition: vls.h:53
int tick_major_color[3]
Definition: defines.h:121
int draw
Definition: defines.h:102
int pos_only
Definition: defines.h:110
int tick_color[3]
Definition: defines.h:120
int ticks_per_major
Definition: defines.h:118
point_t axes_pos
Definition: defines.h:103
int line_width
Definition: defines.h:105
int tick_enabled
Definition: defines.h:114
int tick_major_length
Definition: defines.h:116
fastf_t tick_interval
Definition: defines.h:117
int tick_threshold
Definition: defines.h:119
int axes_color[3]
Definition: defines.h:106
int tick_length
Definition: defines.h:115
int label_color[3]
Definition: defines.h:112
int label_flag
Definition: defines.h:111
fastf_t axes_size
Definition: defines.h:104
int triple_color
Definition: defines.h:113
int anchor
Definition: defines.h:92
int size
Definition: defines.h:87
struct bu_vls label
Definition: defines.h:88
point_t p
Definition: defines.h:89
int line_flag
Definition: defines.h:90
int arrow
Definition: defines.h:93
point_t target
Definition: defines.h:91
int draw_non_subtract_only
do not visualize subtraction solids
Definition: defines.h:147
int s_dmode
draw mode: 0 - wireframe 1 - shaded bots and polysolids only (booleans NOT evaluated) 2 - shaded (boo...
Definition: defines.h:132
int s_line_width
current line width
Definition: defines.h:143
fastf_t s_arrow_tip_length
arrow tip length
Definition: defines.h:144
unsigned char color[3]
color to draw as
Definition: defines.h:141
int draw_solid_lines_only
do not use dashed lines for subtraction solids
Definition: defines.h:146
int color_override
Definition: defines.h:140
fastf_t s_arrow_tip_width
arrow tip width
Definition: defines.h:145
fastf_t transparency
holds a transparency value in the range [0.0, 1.0] - 1 is opaque
Definition: defines.h:138
size_t bot_threshold
Definition: defines.h:231
struct bv_scene_obj * free_scene_obj
Definition: defines.h:246
struct bu_vls s_uuid
object name (unique, may be less immediately clear to user)
Definition: defines.h:185
vect_t s_center
Center point of solid, in model space.
Definition: defines.h:208
char s_iflag
UP = illuminated, DOWN = regular.
Definition: defines.h:213
unsigned char s_color[3]
color to draw as
Definition: defines.h:214
fastf_t view_scale
Definition: defines.h:230
void * s_i_data
custom view data (bv_line_seg, bv_label, bv_polyon, etc)
Definition: defines.h:198
int(* s_update_callback)(struct bv_scene_obj *, int)
custom update/generator for s_vlist
Definition: defines.h:199
void(* s_free_callback)(struct bv_scene_obj *)
free any info stored in s_i_data
Definition: defines.h:200
fastf_t curve_scale
Definition: defines.h:232
fastf_t s_csize
Dist across clipped solid (model space)
Definition: defines.h:207
mat_t s_mat
mat to use for internal lookup
Definition: defines.h:186
struct bu_ptbl children
Definition: defines.h:243
fastf_t point_scale
Definition: defines.h:233
char s_flag
UP = object visible, DOWN = obj invis.
Definition: defines.h:212
fastf_t s_size
Distance across solid, in model space.
Definition: defines.h:206
unsigned long long s_type_flags
Definition: defines.h:183
struct bv_obj_settings s_os
Definition: defines.h:237
struct bu_list s_vlist
Pointer to unclipped vector list.
Definition: defines.h:203
struct bu_list l
Definition: defines.h:180
int adaptive_wireframe
Definition: defines.h:229
int s_displayobj
Vector list contains vertices in display context flag.
Definition: defines.h:209
int s_arrow
arrow flag for view object drawing routines
Definition: defines.h:216
int s_changed
changed flag - set by s_update_callback if a change occurred
Definition: defines.h:217
struct bview * s_v
Definition: defines.h:194
int s_soldash
solid/dashed line flag: 0 = solid, 1 = dashed
Definition: defines.h:215
unsigned int s_dlist
display list index
Definition: defines.h:205
int s_vlen
Number of actual cmd[] entries in vlist.
Definition: defines.h:204
struct bu_vls s_name
object name (may not be unique, used for activities like path lookup)
Definition: defines.h:184
void * s_u_data
Definition: defines.h:249
struct bv_scene_obj_old_settings s_old
Definition: defines.h:240
size_t bot_threshold
Definition: defines.h:329
int adaptive_plot
Definition: defines.h:328
struct bv_other_state gv_view_scale
Definition: defines.h:342
int gv_autoview
Definition: defines.h:324
struct bv_grid_state gv_grid
Definition: defines.h:339
double gv_frametime
Definition: defines.h:344
struct bv_other_state gv_view_params
Definition: defines.h:341
fastf_t curve_scale
Definition: defines.h:330
fastf_t point_scale
Definition: defines.h:331
struct bu_ptbl * gv_selected
Definition: defines.h:361
struct bv_obj_settings obj_s
Definition: defines.h:319
int gv_fb_mode
Definition: defines.h:349
struct bv_axes gv_model_axes
Definition: defines.h:337
int gv_cleared
Definition: defines.h:322
double gv_snap_tol_factor
Definition: defines.h:321
struct bv_axes gv_view_axes
Definition: defines.h:338
struct bv_interactive_rect_state gv_rect
Definition: defines.h:356
int redraw_on_zoom
Definition: defines.h:332
struct bv_adc_state gv_adc
Definition: defines.h:355
struct bv_other_state gv_center_dot
Definition: defines.h:340
int gv_snap_lines
Definition: defines.h:320
Definition: defines.h:364
struct bv_scene_obj * free_scene_obj
Definition: defines.h:441
struct bv_data_tclcad gv_tcl
Definition: defines.h:466
fastf_t gv_size
2.0 * scale
Definition: defines.h:372
int gv_height
Definition: defines.h:375
vect_t gv_aet
Definition: defines.h:383
fastf_t gv_minMouseDelta
Definition: defines.h:402
fastf_t gv_local2base
Definition: defines.h:377
struct bu_vls gv_name
Definition: defines.h:366
fastf_t gv_sscale
Definition: defines.h:379
int gv_mouse_x
Definition: defines.h:398
void * dmp
Definition: defines.h:472
struct bview_settings * gv_s
shared settings supplied by user
Definition: defines.h:406
mat_t gv_rotation
Definition: defines.h:388
fastf_t gv_isize
1.0 / size
Definition: defines.h:373
uint32_t magic
magic number
Definition: defines.h:365
struct bu_ptbl * gv_view_objs
Definition: defines.h:420
struct bview_settings gv_ls
locally maintained settings specific to view (used if gv_s is null)
Definition: defines.h:407
fastf_t gv_perspective
perspective angle
Definition: defines.h:382
fastf_t gv_prevMouseY
Definition: defines.h:397
mat_t gv_pmat
perspective matrix
Definition: defines.h:393
mat_t gv_view2model
Definition: defines.h:392
fastf_t gv_maxMouseDelta
Definition: defines.h:403
char gv_coord
coordinate system
Definition: defines.h:386
void * gv_clientData
passed to gv_callback
Definition: defines.h:470
struct bu_ptbl * callbacks
Definition: defines.h:471
struct bu_ptbl * gv_view_grps
Definition: defines.h:418
fastf_t gv_base2local
Definition: defines.h:376
int gv_mouse_y
Definition: defines.h:399
fastf_t gv_i_scale
Definition: defines.h:369
fastf_t gv_scale
Definition: defines.h:371
struct bu_ptbl * gv_view_shared_objs
Definition: defines.h:428
unsigned long gv_mod_flags
Definition: defines.h:401
mat_t gv_model2view
Definition: defines.h:390
void(* gv_callback)()
called in ged_view_update with gvp and gv_clientData
Definition: defines.h:469
char gv_key
Definition: defines.h:400
fastf_t gv_rscale
Definition: defines.h:378
void * u_data
Definition: defines.h:473
fastf_t gv_prevMouseX
Definition: defines.h:396
fastf_t gv_a_scale
absolute scale
Definition: defines.h:370
struct bu_list gv_vlfree
Definition: defines.h:438
fastf_t gv_data_vZ
Definition: defines.h:462
int independent
Definition: defines.h:413
char gv_rotate_about
indicates what point rotations are about
Definition: defines.h:387
vect_t gv_keypoint
Definition: defines.h:385
struct bu_ptbl * gv_db_grps
Definition: defines.h:425
mat_t gv_center
Definition: defines.h:389
vect_t gv_eye_pos
eye position
Definition: defines.h:384
struct bu_list * vlfree
Definition: defines.h:432
int gv_width
Definition: defines.h:374
mat_t gv_pmodel2view
Definition: defines.h:391
fundamental vector, matrix, quaternion math macros