|
| void | bv_init (struct bview *v, struct bview_set *s) |
| |
| void | bv_free (struct bview *v) |
| |
| void | bv_mat_aet (struct bview *v) |
| |
| void | bv_settings_init (struct bview_settings *s) |
| |
| void | bv_autoview (struct bview *v, fastf_t scale, int all_view_objs) |
| |
| void | bv_sync (struct bview *dest, struct bview *src) |
| |
| int | bv_obj_settings_sync (struct bv_obj_settings *dest, struct bv_obj_settings *src) |
| |
| void | bv_update (struct bview *gvp) |
| |
| int | bv_update_selected (struct bview *gvp) |
| |
| void | bv_knobs_reset (struct bview_knobs *k, int category) |
| |
| unsigned long long | bv_knobs_hash (struct bview_knobs *k, struct bu_data_hash_state *state) |
| |
| int | bv_knobs_cmd_process (vect_t *rvec, int *do_rot, vect_t *tvec, int *do_tran, struct bview *v, const char *cmd, fastf_t f, char origin, int model_flag, int incr_flag) |
| | Process an individual libbv knob command.
|
| |
| void | bv_knobs_rot (struct bview *v, const vect_t rvec, char origin, char coords, const matp_t obj_rot, const pointp_t pvt_pt) |
| | Rotate the view based on an Euler angle triplet (degrees) specified in one of several coordinate frames, about one of several origins.
|
| |
| void | bv_knobs_tran (struct bview *v, const vect_t tvec, int model_flag) |
| |
| void | bv_update_rate_flags (struct bview *v) |
| |
| int | bv_differ (struct bview *v1, struct bview *v2) |
| |
| unsigned long long | bv_hash (struct bview *v) |
| |
| unsigned long long | bv_dl_hash (struct display_list *dl) |
| |
| size_t | bv_clear (struct bview *v, int flags) |
| |
| int | bv_adjust (struct bview *v, int dx, int dy, point_t keypoint, int mode, unsigned long long flags) |
| |
| int | bv_screen_to_view (struct bview *v, fastf_t *fx, fastf_t *fy, fastf_t x, fastf_t y) |
| |
| int | bv_screen_pt (point_t *p, fastf_t x, fastf_t y, struct bview *v) |
| |
| int | bv_scene_obj_bound (struct bv_scene_obj *s, struct bview *v) |
| |
| fastf_t | bv_vZ_calc (struct bv_scene_obj *s, struct bview *v, int mode) |
| |
| void | bv_obj_sync (struct bv_scene_obj *dest, struct bv_scene_obj *src) |
| |
| void | bv_obj_stale (struct bv_scene_obj *s) |
| |
| struct bv_scene_obj * | bv_obj_create (struct bview *v, int type) |
| |
| struct bv_scene_obj * | bv_obj_get (struct bview *v, int type) |
| |
| struct bv_scene_obj * | bv_obj_get_child (struct bv_scene_obj *s) |
| |
| void | bv_obj_reset (struct bv_scene_obj *s) |
| |
| void | bv_obj_put (struct bv_scene_obj *o) |
| |
| struct bv_scene_obj * | bv_find_child (struct bv_scene_obj *s, const char *vname) |
| |
| struct bv_scene_obj * | bv_find_obj (struct bview *v, const char *vname) |
| |
| void | bv_uniq_obj_name (struct bu_vls *oname, const char *seed, struct bview *v) |
| |
| struct bv_scene_obj * | bv_obj_for_view (struct bv_scene_obj *s, struct bview *v) |
| |
| struct bv_scene_obj * | bv_obj_get_vo (struct bv_scene_obj *s, struct bview *v) |
| |
| int | bv_obj_have_vo (struct bv_scene_obj *s, struct bview *v) |
| |
| int | bv_clear_view_obj (struct bv_scene_obj *s, struct bview *v) |
| |
| int | bv_illum_obj (struct bv_scene_obj *s, char ill_state) |
| |
| struct bu_ptbl * | bv_view_objs (struct bview *v, int type) |
| |
| int | bv_view_plane (plane_t *p, struct bview *v) |
| |
| void | bv_log (int level, const char *fmt,...) _BU_ATTR_PRINTF23 |
| |
| void | bv_view_print (const char *title, struct bview *v, int verbosity) |
| |
| void | bv_set_init (struct bview_set *s) |
| |
| void | bv_set_free (struct bview_set *s) |
| |
| void | bv_set_add_view (struct bview_set *s, struct bview *v) |
| |
| void | bv_set_rm_view (struct bview_set *s, struct bview *v) |
| |
| struct bu_ptbl * | bv_set_views (struct bview_set *s) |
| |
| struct bview * | bv_set_find_view (struct bview_set *s, const char *vname) |
| |
| struct bv_scene_obj * | bv_set_fsos (struct bview_set *s) |
| |
Utility routines for manipulating libbv data structures.
In applications with multiple views, those views typically share common scene objects and memory. To manage this sharing, we define view sets.
Process an individual libbv knob command.
Note that the reason rvec, do_rot, tvec and do_tran are set, rather than an immediate view update being performed, is to allow parent applications to process multiple commands before finally triggering the bv_knobs_rot or bv_knobs_tran functions to implement the accumulated instructions.
- Parameters
-
| [out] | rvec | Pointer to rotation vector |
| [out] | do_rot | Pointer to flag indicating whether the command implies a rotation op is needed |
| [out] | tvec | Pointer to translation vector |
| [out] | do_tran | Pointer to flag indicating whether the command implies a translation op is needed |
| [in] | v | bview structure |
| [in] | cmd | command string - valid entries are x, y, z, X, Y Z, ax, ay, az, aX, aY, aZ, S, aS |
| [in] | f | numerical parameter to cmd (i.e. aX 0.1 - required for all commands) |
| [in] | origin | char indicating origin - may be 'e' (eye_pt), 'm' (model origin) or 'v' (view origin - default) |
| [in] | model_flag | Manipulate view using model coordinates rather than view coordinates |
| [in] | incr_flag | Treat f parameter as an incremental change rather than an absolute setting |
- Returns
- Returns BRLCAD_OK if command was successfully processed, BRLCAD_ERROR otherwise.
Rotate the view based on an Euler angle triplet (degrees) specified in one of several coordinate frames, about one of several origins.
coords: Rotation input frame 'v' - rvec in view coordinates 'm' - rvec in model coordinates (converted via Rv * Rm * Rv^{-1}) 'o' - rvec in object coordinates (use obj_rot to map object->model->view, fallback to 'v' semantics if obj_rot is NULL)
origin: Rotation pivot specifier 'v' : view center (0,0,0 in view space) 'm' : model origin 'e' : eye point (0,0,1 in view space) 'k' : model-space custom pivot supplied via pvt_pt Any unrecognized value falls back to 'v'.
obj_rot: Accumulated object->model rotation matrix when coords=='o'. NULL otherwise.
pvt_pt: Model-space pivot point when origin=='k'. Ignored otherwise. NULL == model origin.
BEHAVIOR
- rvec is converted into a pure view-space rotation matrix according to 'coords' (and obj_rot for 'o').
- If origin != 'v', the view center (gv_center) is relocated so the specified pivot is invariant under the applied rotation.
- gv_rotation is post-multiplied by the view rotation matrix.
- bv_update(v) refreshes derived matrices. Absolute translation bookkeeping (tra_v_abs / tra_m_abs) is always recomputed
- Parameters
-
| [in,out] | v | target bview structure |
| [in] | rvec | rotation vector (Euler angles, degrees) expressed in the coordinate frame indicated by coords. |
| [in] | origin | char indicating origin - may be 'e' (eye_pt), 'm' (model origin), 'v' (view origin - default) or 'k' (keypoint) |
| [in] | coords | coordinate frame - may be 'm' (model), 'o' (obj coords via obj_rot), or 'v' (view) |
| [in] | obj_rot | pointer to accumulated object rotation matrix (may be NULL) |
| [in] | pvt_pt | model space pivot point |