Revision: 76583
          http://sourceforge.net/p/brlcad/code/76583
Author:   starseeker
Date:     2020-07-29 20:21:22 +0000 (Wed, 29 Jul 2020)
Log Message:
-----------
Collapse ged_dm_view into bview

Modified Paths:
--------------
    brlcad/branches/bioh/include/dm/bview.h
    brlcad/branches/bioh/include/ged/defines.h
    brlcad/branches/bioh/include/tclcad.h
    brlcad/branches/bioh/src/libtclcad/fb.c
    brlcad/branches/bioh/src/libtclcad/tclcad_mouse.c
    brlcad/branches/bioh/src/libtclcad/tclcad_obj.c
    brlcad/branches/bioh/src/libtclcad/tclcad_obj_wrapper.c
    brlcad/branches/bioh/src/libtclcad/tclcad_polygons.c
    brlcad/branches/bioh/src/libtclcad/tclcad_private.h
    brlcad/branches/bioh/src/libtclcad/view/arrows.c
    brlcad/branches/bioh/src/libtclcad/view/autoview.c
    brlcad/branches/bioh/src/libtclcad/view/axes.c
    brlcad/branches/bioh/src/libtclcad/view/draw.c
    brlcad/branches/bioh/src/libtclcad/view/faceplate.c
    brlcad/branches/bioh/src/libtclcad/view/labels.c
    brlcad/branches/bioh/src/libtclcad/view/lines.c
    brlcad/branches/bioh/src/libtclcad/view/refresh.c
    brlcad/branches/bioh/src/libtclcad/view/util.c
    brlcad/branches/bioh/src/libtclcad/view/view.h

Modified: brlcad/branches/bioh/include/dm/bview.h
===================================================================
--- brlcad/branches/bioh/include/dm/bview.h     2020-07-29 19:47:21 UTC (rev 
76582)
+++ brlcad/branches/bioh/include/dm/bview.h     2020-07-29 20:21:22 UTC (rev 
76583)
@@ -253,6 +253,8 @@
     fastf_t                     gv_data_vZ;
     size_t                      gv_bot_threshold;
     int                                gv_hidden;
+    void                        *dmp;  /* Display manager pointer, if one is 
associated with this view */
+    void                        *u_data; /* Caller data associated with this 
view */
     struct bu_ptbl *callbacks;
 };
 

Modified: brlcad/branches/bioh/include/ged/defines.h
===================================================================
--- brlcad/branches/bioh/include/ged/defines.h  2020-07-29 19:47:21 UTC (rev 
76582)
+++ brlcad/branches/bioh/include/ged/defines.h  2020-07-29 20:21:22 UTC (rev 
76583)
@@ -74,7 +74,6 @@
 #define GED_DISPLAY_LIST_NULL ((struct display_list *)0)
 #define GED_DRAWABLE_NULL ((struct ged_drawable *)0)
 #define GED_VIEW_NULL ((struct bview *)0)
-#define GED_DM_VIEW_NULL ((struct ged_dm_view *)0)
 
 #define GED_RESULT_NULL ((void *)0)
 
@@ -253,7 +252,7 @@
     void (*ged_delete_io_handler)(void *interp, void *chan, struct bu_process 
*p, int fd, void *data, ged_io_handler_callback_t callback);
 
     // Other callbacks...
-    // ged_dm_view: gdv_callback, gdv_edit_motion_delta_callback
+    // Tcl command strings: gdv_callback, gdv_edit_motion_delta_callback
     // ged_obj: go_more_args_callback, go_rt_end_callback
     // fbserv_obj: fbs_callback
     // bview.h gv_callback, vo_callback

Modified: brlcad/branches/bioh/include/tclcad.h
===================================================================
--- brlcad/branches/bioh/include/tclcad.h       2020-07-29 19:47:21 UTC (rev 
76582)
+++ brlcad/branches/bioh/include/tclcad.h       2020-07-29 20:21:22 UTC (rev 
76583)
@@ -139,16 +139,9 @@
     struct ged_obj             *gdv_gop;
 };
 
-struct ged_dm_view {
-    struct bu_list             l;
-    struct bview               *gdv_view;
-    struct dm                  *gdv_dmp;
-    void                        *gdv_data;
-};
-
 struct ged_obj {
     struct ged         *go_gedp;
-    struct ged_dm_view go_head_views;
+    struct bview       go_head_views;
     struct bu_vls      go_name;
     struct bu_vls      go_more_args_callback;
     struct bu_vls      go_rt_end_callback;
@@ -351,107 +344,107 @@
                                                                    int argc,
                                                                    const char 
*argv[]);
 TCLCAD_EXPORT extern void go_refresh(struct ged_obj *gop,
-                                    struct ged_dm_view *gdvp);
+                                    struct bview *gdvp);
 TCLCAD_EXPORT extern void go_refresh_draw(struct ged_obj *gop,
-                                         struct ged_dm_view *gdvp,
+                                         struct bview *gdvp,
                                          int restore_zbuffer);
 TCLCAD_EXPORT extern int go_view_axes(struct ged_obj *gop,
-                                     struct ged_dm_view *gdvp,
+                                     struct bview *gdvp,
                                      int argc,
                                      const char *argv[],
                                      const char *usage);
 TCLCAD_EXPORT extern int go_data_labels(Tcl_Interp *interp,
                                        struct ged *gedp,
-                                       struct ged_dm_view *gdvp,
+                                       struct bview *gdvp,
                                        int argc,
                                        const char *argv[],
                                        const char *usage);
 TCLCAD_EXPORT extern int go_data_arrows(Tcl_Interp *interp,
                                        struct ged *gedp,
-                                       struct ged_dm_view *gdvp,
+                                       struct bview *gdvp,
                                        int argc,
                                        const char *argv[],
                                        const char *usage);
 TCLCAD_EXPORT extern int go_data_pick(struct ged *gedp,
-                                     struct ged_dm_view *gdvp,
+                                     struct bview *gdvp,
                                      int argc,
                                      const char *argv[],
                                      const char *usage);
 TCLCAD_EXPORT extern int go_data_axes(Tcl_Interp *interp,
                                      struct ged *gedp,
-                                     struct ged_dm_view *gdvp,
+                                     struct bview *gdvp,
                                      int argc,
                                      const char *argv[],
                                      const char *usage);
 TCLCAD_EXPORT extern int go_data_lines(Tcl_Interp *interp,
                                       struct ged *gedp,
-                                      struct ged_dm_view *gdvp,
+                                      struct bview *gdvp,
                                       int argc,
                                       const char *argv[],
                                       const char *usage);
 TCLCAD_EXPORT extern int go_data_move(Tcl_Interp *interp,
                                      struct ged *gedp,
-                                     struct ged_dm_view *gdvp,
+                                     struct bview *gdvp,
                                      int argc,
                                      const char *argv[],
                                      const char *usage);
 TCLCAD_EXPORT extern int go_data_move_object_mode(Tcl_Interp *interp,
                                                  struct ged *gedp,
-                                                 struct ged_dm_view *gdvp,
+                                                 struct bview *gdvp,
                                                  int argc,
                                                  const char *argv[],
                                                  const char *usage);
 TCLCAD_EXPORT extern int go_data_move_point_mode(Tcl_Interp *interp,
                                                 struct ged *gedp,
-                                                struct ged_dm_view *gdvp,
+                                                struct bview *gdvp,
                                                 int argc,
                                                 const char *argv[],
                                                 const char *usage);
 TCLCAD_EXPORT extern int go_data_polygons(Tcl_Interp *interp,
                                          struct ged *gedp,
-                                         struct ged_dm_view *gdvp,
+                                         struct bview *gdvp,
                                          int argc,
                                          const char *argv[],
                                          const char *usage);
 TCLCAD_EXPORT extern int go_mouse_poly_circ(Tcl_Interp *interp,
                                            struct ged *gedp,
-                                           struct ged_dm_view *gdvp,
+                                           struct bview *gdvp,
                                            int argc,
                                            const char *argv[],
                                            const char *usage);
 TCLCAD_EXPORT extern int go_mouse_poly_cont(Tcl_Interp *interp,
                                            struct ged *gedp,
-                                           struct ged_dm_view *gdvp,
+                                           struct bview *gdvp,
                                            int argc,
                                            const char *argv[],
                                            const char *usage);
 TCLCAD_EXPORT extern int go_mouse_poly_ell(Tcl_Interp *interp,
                                           struct ged *gedp,
-                                          struct ged_dm_view *gdvp,
+                                          struct bview *gdvp,
                                           int argc,
                                           const char *argv[],
                                           const char *usage);
 TCLCAD_EXPORT extern int go_mouse_poly_rect(Tcl_Interp *interp,
                                            struct ged *gedp,
-                                           struct ged_dm_view *gdvp,
+                                           struct bview *gdvp,
                                            int argc,
                                            const char *argv[],
                                            const char *usage);
 TCLCAD_EXPORT extern int go_poly_circ_mode(Tcl_Interp *interp,
                                           struct ged *gedp,
-                                          struct ged_dm_view *gdvp,
+                                          struct bview *gdvp,
                                           int argc,
                                           const char *argv[],
                                           const char *usage);
 TCLCAD_EXPORT extern int go_poly_ell_mode(Tcl_Interp *interp,
                                          struct ged *gedp,
-                                         struct ged_dm_view *gdvp,
+                                         struct bview *gdvp,
                                          int argc,
                                          const char *argv[],
                                          const char *usage);
 TCLCAD_EXPORT extern int go_poly_rect_mode(Tcl_Interp *interp,
                                           struct ged *gedp,
-                                          struct ged_dm_view *gdvp,
+                                          struct bview *gdvp,
                                           int argc,
                                           const char *argv[],
                                           const char *usage);
@@ -460,13 +453,13 @@
                                          struct bu_vls *result_str);
 TCLCAD_EXPORT extern int go_poly_cont_build(Tcl_Interp *interp,
                                            struct ged *gedp,
-                                           struct ged_dm_view *gdvp,
+                                           struct bview *gdvp,
                                            int argc,
                                            const char *argv[],
                                            const char *usage);
 TCLCAD_EXPORT extern int go_poly_cont_build_end(Tcl_Interp *UNUSED(interp),
                                                struct ged *gedp,
-                                               struct ged_dm_view *gdvp,
+                                               struct bview *gdvp,
                                                int argc,
                                                const char *argv[],
                                                const char *usage);

Modified: brlcad/branches/bioh/src/libtclcad/fb.c
===================================================================
--- brlcad/branches/bioh/src/libtclcad/fb.c     2020-07-29 19:47:21 UTC (rev 
76582)
+++ brlcad/branches/bioh/src/libtclcad/fb.c     2020-07-29 20:21:22 UTC (rev 
76583)
@@ -908,7 +908,7 @@
 void
 to_fbs_callback(void *clientData)
 {
-    struct ged_dm_view *gdvp = (struct ged_dm_view *)clientData;
+    struct bview *gdvp = (struct bview *)clientData;
 
     to_refresh_view(gdvp);
 }
@@ -915,9 +915,9 @@
 
 
 int
-to_close_fbs(struct ged_dm_view *gdvp)
+to_close_fbs(struct bview *gdvp)
 {
-    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->gdv_data;
+    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
     if (tvd->gdv_fbs.fbs_fbp == FB_NULL)
        return TCL_OK;
 
@@ -933,14 +933,14 @@
  * Open/activate the display managers framebuffer.
  */
 int
-to_open_fbs(struct ged_dm_view *gdvp, Tcl_Interp *interp)
+to_open_fbs(struct bview *gdvp, Tcl_Interp *interp)
 {
     /* already open */
-    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->gdv_data;
+    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
     if (tvd->gdv_fbs.fbs_fbp != FB_NULL)
        return TCL_OK;
 
-    tvd->gdv_fbs.fbs_fbp = dm_get_fb(gdvp->gdv_dmp);
+    tvd->gdv_fbs.fbs_fbp = dm_get_fb((struct dm *)gdvp->dmp);
 
     if (tvd->gdv_fbs.fbs_fbp == FB_NULL) {
        Tcl_Obj *obj;
@@ -969,7 +969,7 @@
               int UNUSED(maxargs))
 {
     int mode;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* initialize result */
     bu_vls_trunc(gedp->ged_result_str, 0);
@@ -985,8 +985,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -997,7 +997,7 @@
 
     /* Get fb mode */
     if (argc == 2) {
-       struct tclcad_view_data *tvd = (struct tclcad_view_data 
*)gdvp->gdv_data;
+       struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
        bu_vls_printf(gedp->ged_result_str, "%d", tvd->gdv_fbs.fbs_mode);
        return GED_OK;
     }
@@ -1014,7 +1014,7 @@
        mode = TCLCAD_OBJ_FB_MODE_OVERLAY;
 
     {
-       struct tclcad_view_data *tvd = (struct tclcad_view_data 
*)gdvp->gdv_data;
+       struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
        tvd->gdv_fbs.fbs_mode = mode;
     }
     to_refresh_view(gdvp);
@@ -1031,7 +1031,7 @@
          const char *usage,
          int UNUSED(maxargs))
 {
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* initialize result */
     bu_vls_trunc(gedp->ged_result_str, 0);
@@ -1047,8 +1047,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1057,7 +1057,7 @@
        return GED_ERROR;
     }
 
-    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->gdv_data;
+    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
     if (tvd->gdv_fbs.fbs_fbp == FB_NULL) {
        bu_vls_printf(gedp->ged_result_str, "%s listen: framebuffer not 
open!\n", argv[0]);
        return GED_ERROR;

Modified: brlcad/branches/bioh/src/libtclcad/tclcad_mouse.c
===================================================================
--- brlcad/branches/bioh/src/libtclcad/tclcad_mouse.c   2020-07-29 19:47:21 UTC 
(rev 76582)
+++ brlcad/branches/bioh/src/libtclcad/tclcad_mouse.c   2020-07-29 20:21:22 UTC 
(rev 76583)
@@ -41,7 +41,7 @@
                  const char *usage,
                  int UNUSED(maxargs))
 {
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* initialize result */
     bu_vls_trunc(gedp->ged_result_str, 0);
@@ -57,8 +57,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -67,7 +67,7 @@
        return GED_ERROR;
     }
 
-    bu_vls_printf(gedp->ged_result_str, "%d %d", 
(int)gdvp->gdv_view->gv_prevMouseX, (int)gdvp->gdv_view->gv_prevMouseY);
+    bu_vls_printf(gedp->ged_result_str, "%d %d", (int)gdvp->gv_prevMouseX, 
(int)gdvp->gv_prevMouseY);
     return GED_OK;
 }
 
@@ -84,7 +84,7 @@
     char *av[4];
     point_t view;
     struct bu_vls pt_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -103,8 +103,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -119,11 +119,11 @@
        return GED_ERROR;
     }
 
-    x = screen_to_view_x(gdvp->gdv_dmp, x);
-    y = screen_to_view_y(gdvp->gdv_dmp, y);
+    x = screen_to_view_x((struct dm *)gdvp->dmp, x);
+    y = screen_to_view_y((struct dm *)gdvp->dmp, y);
     VSET(view, x, y, 0.0);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     int snapped = 0;
     if (gedp->ged_gvp->gv_snap_lines) {
        snapped = ged_snap_to_lines(gedp, &view[X], &view[Y]);
@@ -134,7 +134,7 @@
 
     bu_vls_printf(&pt_vls, "%lf %lf %lf", view[X], view[Y], view[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = (char *)argv[0];
     av[1] = (char *)argv[2];
     av[2] = bu_vls_addr(&pt_vls);
@@ -164,7 +164,7 @@
 {
     const char *cmd_argv[11] = {"brep", NULL, "selection", "append", "active"};
     int ret, cmd_argc = (int)(sizeof(cmd_argv) / sizeof(const char *));
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
     char *brep_name;
     char *end;
     struct bu_vls bindings = BU_VLS_INIT_ZERO;
@@ -179,8 +179,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -202,15 +202,15 @@
     }
 
     /* stash point coordinates for future drag handling */
-    gdvp->gdv_view->gv_prevMouseX = screen_pt[X];
-    gdvp->gdv_view->gv_prevMouseY = screen_pt[Y];
+    gdvp->gv_prevMouseX = screen_pt[X];
+    gdvp->gv_prevMouseY = screen_pt[Y];
 
     /* convert screen point to model-space start point and direction */
-    view_pt[X] = screen_to_view_x(gdvp->gdv_dmp, screen_pt[X]);
-    view_pt[Y] = screen_to_view_y(gdvp->gdv_dmp, screen_pt[Y]);
+    view_pt[X] = screen_to_view_x((struct dm *)gdvp->dmp, screen_pt[X]);
+    view_pt[Y] = screen_to_view_y((struct dm *)gdvp->dmp, screen_pt[Y]);
     view_pt[Z] = 1.0;
 
-    MAT4X3PNT(model_pt, gdvp->gdv_view->gv_view2model, view_pt);
+    MAT4X3PNT(model_pt, gdvp->gv_view2model, view_pt);
 
     VSET(view_dir, 0.0, 0.0, -1.0);
     bn_mat_inv(invRot, gedp->ged_gvp->gv_rotation);
@@ -234,7 +234,7 @@
     cmd_argv[9] = bu_vls_addr(&dir[Y]);
     cmd_argv[10] = bu_vls_addr(&dir[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     ret = ged_brep(gedp, cmd_argc, cmd_argv);
 
     bu_vls_free(&start[X]);
@@ -248,12 +248,12 @@
        return GED_ERROR;
     }
 
-    if (dm_get_pathname(gdvp->gdv_dmp)) {
+    if (dm_get_pathname((struct dm *)gdvp->dmp)) {
        bu_vls_printf(&bindings, "bind %s <Motion> {%s 
mouse_brep_selection_translate %s %s %%x %%y; "
                      "%s brep %s plot SCV}",
-                     bu_vls_addr(dm_get_pathname(gdvp->gdv_dmp)),
+                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
                      bu_vls_addr(&current_top->to_gop->go_name),
-                     bu_vls_addr(&gdvp->gdv_view->gv_name),
+                     bu_vls_addr(&gdvp->gv_name),
                      brep_name,
                      bu_vls_addr(&current_top->to_gop->go_name),
                      brep_name);
@@ -277,7 +277,7 @@
 {
     const char *cmd_argv[8] = {"brep", NULL, "selection", "translate", 
"active"};
     int ret, cmd_argc = (int)(sizeof(cmd_argv) / sizeof(const char *));
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
     char *brep_name;
     char *end;
     point_t screen_end, view_start, view_end, model_start, model_end;
@@ -289,8 +289,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -311,15 +311,15 @@
     }
 
     /* convert screen-space delta to model-space delta */
-    view_start[X] = screen_to_view_x(gdvp->gdv_dmp, 
gdvp->gdv_view->gv_prevMouseX);
-    view_start[Y] = screen_to_view_y(gdvp->gdv_dmp, 
gdvp->gdv_view->gv_prevMouseY);
+    view_start[X] = screen_to_view_x((struct dm *)gdvp->dmp, 
gdvp->gv_prevMouseX);
+    view_start[Y] = screen_to_view_y((struct dm *)gdvp->dmp, 
gdvp->gv_prevMouseY);
     view_start[Z] = 1;
-    MAT4X3PNT(model_start, gdvp->gdv_view->gv_view2model, view_start);
+    MAT4X3PNT(model_start, gdvp->gv_view2model, view_start);
 
-    view_end[X] = screen_to_view_x(gdvp->gdv_dmp, screen_end[X]);
-    view_end[Y] = screen_to_view_y(gdvp->gdv_dmp, screen_end[Y]);
+    view_end[X] = screen_to_view_x((struct dm *)gdvp->dmp, screen_end[X]);
+    view_end[Y] = screen_to_view_y((struct dm *)gdvp->dmp, screen_end[Y]);
     view_end[Z] = 1;
-    MAT4X3PNT(model_end, gdvp->gdv_view->gv_view2model, view_end);
+    MAT4X3PNT(model_end, gdvp->gv_view2model, view_end);
 
     VSUB2(model_delta, model_end, model_start);
 
@@ -346,8 +346,8 @@
     /* need to tell front-end that we've modified the db */
     tclcad_eval_noresult(current_top->to_interp, "$::ArcherCore::application 
setSave", 0, NULL);
 
-    gdvp->gdv_view->gv_prevMouseX = screen_end[X];
-    gdvp->gdv_view->gv_prevMouseY = screen_end[Y];
+    gdvp->gv_prevMouseX = screen_end[X];
+    gdvp->gv_prevMouseY = screen_end[Y];
 
     cmd_argc = 2;
     cmd_argv[0] = "draw";
@@ -373,7 +373,7 @@
     fastf_t dx, dy;
     fastf_t sf;
     struct bu_vls rot_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -392,8 +392,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -413,24 +413,24 @@
        return GED_ERROR;
     }
 
-    dx = x - gdvp->gdv_view->gv_prevMouseX;
-    dy = gdvp->gdv_view->gv_prevMouseY - y;
+    dx = x - gdvp->gv_prevMouseX;
+    dy = gdvp->gv_prevMouseY - y;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    dx *= gdvp->gdv_view->gv_rscale;
-    dy *= gdvp->gdv_view->gv_rscale;
+    dx *= gdvp->gv_rscale;
+    dy *= gdvp->gv_rscale;
 
     if (fabs(dx) > fabs(dy))
        sf = dx;
@@ -448,7 +448,7 @@
            bu_vls_printf(&rot_vls, "0 0 %lf", -sf);
     }
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     ac = 3;
     av[0] = "rot";
     av[1] = "-m";
@@ -459,7 +459,7 @@
     bu_vls_free(&rot_vls);
 
     if (ret == GED_OK) {
-       struct tclcad_view_data *tvd = (struct tclcad_view_data 
*)gdvp->gdv_data;
+       struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
        if (0 < bu_vls_strlen(&tvd->gdv_callback)) {
            tclcad_eval_noresult(current_top->to_interp, 
bu_vls_addr(&tvd->gdv_callback), 0, NULL);
        }
@@ -487,7 +487,7 @@
     fastf_t sf;
     fastf_t inv_width;
     struct bu_vls tran_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -506,8 +506,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -527,26 +527,26 @@
        return GED_ERROR;
     }
 
-    dx = x - gdvp->gdv_view->gv_prevMouseX;
-    dy = gdvp->gdv_view->gv_prevMouseY - y;
+    dx = x - gdvp->gv_prevMouseX;
+    dy = gdvp->gv_prevMouseY - y;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    width = dm_get_width(gdvp->gdv_dmp);
+    width = dm_get_width((struct dm *)gdvp->dmp);
     inv_width = 1.0 / (fastf_t)width;
-    dx *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_local2base;
-    dy *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_local2base;
+    dx *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_local2base;
+    dy *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_local2base;
 
     if (fabs(dx) > fabs(dy))
        sf = dx;
@@ -564,7 +564,7 @@
            bu_vls_printf(&tran_vls, "0 0 %lf", -sf);
     }
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     ac = 3;
     av[0] = "tra";
     av[1] = "-m";
@@ -575,7 +575,7 @@
     bu_vls_free(&tran_vls);
 
     if (ret == GED_OK) {
-       struct tclcad_view_data *tvd = (struct tclcad_view_data 
*)gdvp->gdv_data;
+       struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
        if (0 < bu_vls_strlen(&tvd->gdv_callback)) {
            tclcad_eval_noresult(current_top->to_interp, 
bu_vls_addr(&tvd->gdv_callback), 0, NULL);
        }
@@ -598,7 +598,7 @@
     char *av[6];
     point_t view;
     struct bu_vls pt_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -617,8 +617,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -633,13 +633,13 @@
        return GED_ERROR;
     }
 
-    x = screen_to_view_x(gdvp->gdv_dmp, x);
-    y = screen_to_view_y(gdvp->gdv_dmp, y);
+    x = screen_to_view_x((struct dm *)gdvp->dmp, x);
+    y = screen_to_view_y((struct dm *)gdvp->dmp, y);
     VSET(view, x, y, 0.0);
 
     bu_vls_printf(&pt_vls, "%lf %lf %lf", view[X], view[Y], view[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = "find_arb_edge_nearest_pnt";
     av[1] = (char *)argv[2];
     av[2] = bu_vls_addr(&pt_vls);
@@ -664,7 +664,7 @@
     char *av[6];
     point_t view;
     struct bu_vls pt_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -683,8 +683,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -699,13 +699,13 @@
        return GED_ERROR;
     }
 
-    x = screen_to_view_x(gdvp->gdv_dmp, x);
-    y = screen_to_view_y(gdvp->gdv_dmp, y);
+    x = screen_to_view_x((struct dm *)gdvp->dmp, x);
+    y = screen_to_view_y((struct dm *)gdvp->dmp, y);
     VSET(view, x, y, 0.0);
 
     bu_vls_printf(&pt_vls, "%lf %lf %lf", view[X], view[Y], view[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = "find_bot_edge_nearest_pnt";
     av[1] = (char *)argv[2];
     av[2] = bu_vls_addr(&pt_vls);
@@ -729,7 +729,7 @@
     char *av[6];
     point_t view;
     struct bu_vls pt_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -748,8 +748,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -764,13 +764,13 @@
        return GED_ERROR;
     }
 
-    x = screen_to_view_x(gdvp->gdv_dmp, x);
-    y = screen_to_view_y(gdvp->gdv_dmp, y);
+    x = screen_to_view_x((struct dm *)gdvp->dmp, x);
+    y = screen_to_view_y((struct dm *)gdvp->dmp, y);
     VSET(view, x, y, 0.0);
 
     bu_vls_printf(&pt_vls, "%lf %lf %lf", view[X], view[Y], view[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = "find_bot_pnt_nearest_pnt";
     av[1] = (char *)argv[2];
     av[2] = bu_vls_addr(&pt_vls);
@@ -795,7 +795,7 @@
     point_t model;
     point_t view;
     struct bu_vls pt_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -814,8 +814,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -830,14 +830,14 @@
        return GED_ERROR;
     }
 
-    x = screen_to_view_x(gdvp->gdv_dmp, x);
-    y = screen_to_view_y(gdvp->gdv_dmp, y);
+    x = screen_to_view_x((struct dm *)gdvp->dmp, x);
+    y = screen_to_view_y((struct dm *)gdvp->dmp, y);
     VSET(view, x, y, 0.0);
-    MAT4X3PNT(model, gdvp->gdv_view->gv_view2model, view);
+    MAT4X3PNT(model, gdvp->gv_view2model, view);
 
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = "find_metaball_pnt_nearest_pnt";
     av[1] = (char *)argv[2];
     av[2] = bu_vls_addr(&pt_vls);
@@ -862,7 +862,7 @@
     point_t model;
     point_t view;
     struct bu_vls pt_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -881,8 +881,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -897,14 +897,14 @@
        return GED_ERROR;
     }
 
-    x = screen_to_view_x(gdvp->gdv_dmp, x);
-    y = screen_to_view_y(gdvp->gdv_dmp, y);
+    x = screen_to_view_x((struct dm *)gdvp->dmp, x);
+    y = screen_to_view_y((struct dm *)gdvp->dmp, y);
     VSET(view, x, y, 0.0);
-    MAT4X3PNT(model, gdvp->gdv_view->gv_view2model, view);
+    MAT4X3PNT(model, gdvp->gv_view2model, view);
 
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = "find_pipe_pnt_nearest_pnt";
     av[1] = (char *)argv[2];
     av[2] = bu_vls_addr(&pt_vls);
@@ -928,7 +928,7 @@
 {
     const char *cmd_argv[11] = {"joint2", NULL, "selection", "replace", 
"active"};
     int ret, cmd_argc = (int)(sizeof(cmd_argv) / sizeof(const char *));
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
     char *joint_name;
     char *end;
     struct bu_vls bindings = BU_VLS_INIT_ZERO;
@@ -943,8 +943,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -966,15 +966,15 @@
     }
 
     /* stash point coordinates for future drag handling */
-    gdvp->gdv_view->gv_prevMouseX = screen_pt[X];
-    gdvp->gdv_view->gv_prevMouseY = screen_pt[Y];
+    gdvp->gv_prevMouseX = screen_pt[X];
+    gdvp->gv_prevMouseY = screen_pt[Y];
 
     /* convert screen point to model-space start point and direction */
-    view_pt[X] = screen_to_view_x(gdvp->gdv_dmp, screen_pt[X]);
-    view_pt[Y] = screen_to_view_y(gdvp->gdv_dmp, screen_pt[Y]);
+    view_pt[X] = screen_to_view_x((struct dm *)gdvp->dmp, screen_pt[X]);
+    view_pt[Y] = screen_to_view_y((struct dm *)gdvp->dmp, screen_pt[Y]);
     view_pt[Z] = 1.0;
 
-    MAT4X3PNT(model_pt, gdvp->gdv_view->gv_view2model, view_pt);
+    MAT4X3PNT(model_pt, gdvp->gv_view2model, view_pt);
 
     VSET(view_dir, 0.0, 0.0, -1.0);
     bn_mat_inv(invRot, gedp->ged_gvp->gv_rotation);
@@ -998,7 +998,7 @@
     cmd_argv[9] = bu_vls_addr(&dir[Y]);
     cmd_argv[10] = bu_vls_addr(&dir[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     ret = ged_joint2(gedp, cmd_argc, cmd_argv);
 
     bu_vls_free(&start[X]);
@@ -1012,11 +1012,11 @@
        return GED_ERROR;
     }
 
-    if (dm_get_pathname(gdvp->gdv_dmp)) {
+    if (dm_get_pathname((struct dm *)gdvp->dmp)) {
        bu_vls_printf(&bindings, "bind %s <Motion> {%s 
mouse_joint_selection_translate %s %s %%x %%y}",
-                     bu_vls_addr(dm_get_pathname(gdvp->gdv_dmp)),
+                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
                      bu_vls_addr(&current_top->to_gop->go_name),
-                     bu_vls_addr(&gdvp->gdv_view->gv_name),
+                     bu_vls_addr(&gdvp->gv_name),
                      joint_name);
        Tcl_Eval(current_top->to_interp, bu_vls_addr(&bindings));
     }
@@ -1039,7 +1039,7 @@
 {
     const char *cmd_argv[8] = {"joint2", NULL, "selection", "translate", 
"active"};
     int ret, cmd_argc = (int)(sizeof(cmd_argv) / sizeof(const char *));
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
     char *joint_name;
     char *end;
     point_t screen_end, view_start, view_end, model_start, model_end;
@@ -1051,8 +1051,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1073,15 +1073,15 @@
     }
 
     /* convert screen-space delta to model-space delta */
-    view_start[X] = screen_to_view_x(gdvp->gdv_dmp, 
gdvp->gdv_view->gv_prevMouseX);
-    view_start[Y] = screen_to_view_y(gdvp->gdv_dmp, 
gdvp->gdv_view->gv_prevMouseY);
+    view_start[X] = screen_to_view_x((struct dm *)gdvp->dmp, 
gdvp->gv_prevMouseX);
+    view_start[Y] = screen_to_view_y((struct dm *)gdvp->dmp, 
gdvp->gv_prevMouseY);
     view_start[Z] = 1;
-    MAT4X3PNT(model_start, gdvp->gdv_view->gv_view2model, view_start);
+    MAT4X3PNT(model_start, gdvp->gv_view2model, view_start);
 
-    view_end[X] = screen_to_view_x(gdvp->gdv_dmp, screen_end[X]);
-    view_end[Y] = screen_to_view_y(gdvp->gdv_dmp, screen_end[Y]);
+    view_end[X] = screen_to_view_x((struct dm *)gdvp->dmp, screen_end[X]);
+    view_end[Y] = screen_to_view_y((struct dm *)gdvp->dmp, screen_end[Y]);
     view_end[Z] = 1;
-    MAT4X3PNT(model_end, gdvp->gdv_view->gv_view2model, view_end);
+    MAT4X3PNT(model_end, gdvp->gv_view2model, view_end);
 
     VSUB2(model_delta, model_end, model_start);
 
@@ -1107,8 +1107,8 @@
     /* need to tell front-end that we've modified the db */
     Tcl_Eval(current_top->to_interp, "$::ArcherCore::application setSave");
 
-    gdvp->gdv_view->gv_prevMouseX = screen_end[X];
-    gdvp->gdv_view->gv_prevMouseY = screen_end[Y];
+    gdvp->gv_prevMouseX = screen_end[X];
+    gdvp->gv_prevMouseY = screen_end[Y];
 
     cmd_argc = 3;
     cmd_argv[0] = "get";
@@ -1187,7 +1187,7 @@
     point_t view;
     mat_t inv_rot;
     struct bu_vls pt_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -1206,8 +1206,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1222,34 +1222,34 @@
        return GED_ERROR;
     }
 
-    dx = x - gdvp->gdv_view->gv_prevMouseX;
-    dy = gdvp->gdv_view->gv_prevMouseY - y;
+    dx = x - gdvp->gv_prevMouseX;
+    dy = gdvp->gv_prevMouseY - y;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    width = dm_get_width(gdvp->gdv_dmp);
+    width = dm_get_width((struct dm *)gdvp->dmp);
     inv_width = 1.0 / (fastf_t)width;
     /* ged_move_arb_edge expects things to be in local units */
-    dx *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_base2local;
-    dy *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_base2local;
+    dx *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_base2local;
+    dy *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_base2local;
     VSET(view, dx, dy, 0.0);
-    bn_mat_inv(inv_rot, gdvp->gdv_view->gv_rotation);
+    bn_mat_inv(inv_rot, gdvp->gv_rotation);
     MAT4X3PNT(model, inv_rot, view);
 
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = "move_arb_edge";
     av[1] = "-r";
     av[2] = (char *)argv[2];
@@ -1288,7 +1288,7 @@
     point_t view;
     mat_t inv_rot;
     struct bu_vls pt_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -1307,8 +1307,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1323,34 +1323,34 @@
        return GED_ERROR;
     }
 
-    dx = x - gdvp->gdv_view->gv_prevMouseX;
-    dy = gdvp->gdv_view->gv_prevMouseY - y;
+    dx = x - gdvp->gv_prevMouseX;
+    dy = gdvp->gv_prevMouseY - y;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    width = dm_get_width(gdvp->gdv_dmp);
+    width = dm_get_width((struct dm *)gdvp->dmp);
     inv_width = 1.0 / (fastf_t)width;
     /* ged_move_arb_face expects things to be in local units */
-    dx *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_base2local;
-    dy *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_base2local;
+    dx *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_base2local;
+    dy *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_base2local;
     VSET(view, dx, dy, 0.0);
-    bn_mat_inv(inv_rot, gdvp->gdv_view->gv_rotation);
+    bn_mat_inv(inv_rot, gdvp->gv_rotation);
     MAT4X3PNT(model, inv_rot, view);
 
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = "move_arb_face";
     av[1] = "-r";
     av[2] = (char *)argv[2];
@@ -1391,7 +1391,7 @@
     point_t view;
     mat_t v2m_mat;
     struct bu_vls pt_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -1424,8 +1424,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1440,31 +1440,31 @@
        return GED_ERROR;
     }
 
-    width = dm_get_width(gdvp->gdv_dmp);
+    width = dm_get_width((struct dm *)gdvp->dmp);
     inv_width = 1.0 / (fastf_t)width;
 
     if (rflag) {
-       dx = x - gdvp->gdv_view->gv_prevMouseX;
-       dy = gdvp->gdv_view->gv_prevMouseY - y;
+       dx = x - gdvp->gv_prevMouseX;
+       dy = gdvp->gv_prevMouseY - y;
        dz = 0.0;
 
-       gdvp->gdv_view->gv_prevMouseX = x;
-       gdvp->gdv_view->gv_prevMouseY = y;
+       gdvp->gv_prevMouseX = x;
+       gdvp->gv_prevMouseY = y;
 
-       if (dx < gdvp->gdv_view->gv_minMouseDelta)
-           dx = gdvp->gdv_view->gv_minMouseDelta;
-       else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-           dx = gdvp->gdv_view->gv_maxMouseDelta;
+       if (dx < gdvp->gv_minMouseDelta)
+           dx = gdvp->gv_minMouseDelta;
+       else if (gdvp->gv_maxMouseDelta < dx)
+           dx = gdvp->gv_maxMouseDelta;
 
-       if (dy < gdvp->gdv_view->gv_minMouseDelta)
-           dy = gdvp->gdv_view->gv_minMouseDelta;
-       else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-           dy = gdvp->gdv_view->gv_maxMouseDelta;
+       if (dy < gdvp->gv_minMouseDelta)
+           dy = gdvp->gv_minMouseDelta;
+       else if (gdvp->gv_maxMouseDelta < dy)
+           dy = gdvp->gv_maxMouseDelta;
 
-       bn_mat_inv(v2m_mat, gdvp->gdv_view->gv_rotation);
+       bn_mat_inv(v2m_mat, gdvp->gv_rotation);
 
-       dx *= inv_width * gdvp->gdv_view->gv_size;
-       dy *= inv_width * gdvp->gdv_view->gv_size;
+       dx *= inv_width * gdvp->gv_size;
+       dy *= inv_width * gdvp->gv_size;
     } else {
        struct rt_db_internal intern;
        struct rt_bot_internal *botip;
@@ -1508,11 +1508,11 @@
            return GED_ERROR;
        }
 
-       MAT4X3PNT(view, gdvp->gdv_view->gv_model2view, 
&botip->vertices[vertex_i*3]);
-       MAT_COPY(v2m_mat, gdvp->gdv_view->gv_view2model);
+       MAT4X3PNT(view, gdvp->gv_model2view, &botip->vertices[vertex_i*3]);
+       MAT_COPY(v2m_mat, gdvp->gv_view2model);
 
-       dx = screen_to_view_x(gdvp->gdv_dmp, x);
-       dy = screen_to_view_y(gdvp->gdv_dmp, y);
+       dx = screen_to_view_x((struct dm *)gdvp->dmp, x);
+       dy = screen_to_view_y((struct dm *)gdvp->dmp, y);
        dz = view[Z];
 
        rt_db_free_internal(&intern);
@@ -1525,7 +1525,7 @@
     VSCALE(model, model, gedp->ged_wdbp->dbip->dbi_base2local);
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = "bot_move_pnt";
 
     if (rflag) {
@@ -1574,7 +1574,7 @@
     point_t view;
     mat_t v2m_mat;
     struct bu_vls pt_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -1595,8 +1595,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1611,30 +1611,30 @@
        return GED_ERROR;
     }
 
-    width = dm_get_width(gdvp->gdv_dmp);
+    width = dm_get_width((struct dm *)gdvp->dmp);
     inv_width = 1.0 / (fastf_t)width;
 
-    dx = x - gdvp->gdv_view->gv_prevMouseX;
-    dy = gdvp->gdv_view->gv_prevMouseY - y;
+    dx = x - gdvp->gv_prevMouseX;
+    dy = gdvp->gv_prevMouseY - y;
     dz = 0.0;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    bn_mat_inv(v2m_mat, gdvp->gdv_view->gv_rotation);
+    bn_mat_inv(v2m_mat, gdvp->gv_rotation);
 
-    dx *= inv_width * gdvp->gdv_view->gv_size;
-    dy *= inv_width * gdvp->gdv_view->gv_size;
+    dx *= inv_width * gdvp->gv_size;
+    dy *= inv_width * gdvp->gv_size;
 
     VSET(view, dx, dy, dz);
     MAT4X3PNT(model, v2m_mat, view);
@@ -1643,7 +1643,7 @@
     VSCALE(model, model, gedp->ged_wdbp->dbip->dbi_base2local);
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
 
     {
        register int i, j;
@@ -1691,7 +1691,7 @@
     point_t view;
     mat_t inv_rot;
     struct bu_vls pt_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -1710,8 +1710,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1726,34 +1726,34 @@
        return GED_ERROR;
     }
 
-    dx = x - gdvp->gdv_view->gv_prevMouseX;
-    dy = gdvp->gdv_view->gv_prevMouseY - y;
+    dx = x - gdvp->gv_prevMouseX;
+    dy = gdvp->gv_prevMouseY - y;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    width = dm_get_width(gdvp->gdv_dmp);
+    width = dm_get_width((struct dm *)gdvp->dmp);
     inv_width = 1.0 / (fastf_t)width;
     /* ged_pipe_move_pnt expects things to be in local units */
-    dx *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_base2local;
-    dy *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_base2local;
+    dx *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_base2local;
+    dy *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_base2local;
     VSET(view, dx, dy, 0.0);
-    bn_mat_inv(inv_rot, gdvp->gdv_view->gv_rotation);
+    bn_mat_inv(inv_rot, gdvp->gv_rotation);
     MAT4X3PNT(model, inv_rot, view);
 
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = (char *)argv[0];
     av[1] = "-r";
     av[2] = (char *)argv[2];
@@ -1790,7 +1790,7 @@
     struct bu_vls rot_x_vls = BU_VLS_INIT_ZERO;
     struct bu_vls rot_y_vls = BU_VLS_INIT_ZERO;
     struct bu_vls rot_z_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -1809,8 +1809,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1825,27 +1825,27 @@
        return GED_ERROR;
     }
 
-    dx = y - gdvp->gdv_view->gv_prevMouseY;
-    dy = x - gdvp->gdv_view->gv_prevMouseX;
+    dx = y - gdvp->gv_prevMouseY;
+    dy = x - gdvp->gv_prevMouseX;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    dx *= gdvp->gdv_view->gv_rscale;
-    dy *= gdvp->gdv_view->gv_rscale;
+    dx *= gdvp->gv_rscale;
+    dy *= gdvp->gv_rscale;
 
     VSET(view, dx, dy, 0.0);
-    bn_mat_inv(inv_rot, gdvp->gdv_view->gv_rotation);
+    bn_mat_inv(inv_rot, gdvp->gv_rotation);
     MAT4X3PNT(model, inv_rot, view);
 
     bu_vls_printf(&rot_x_vls, "%lf", model[X]);
@@ -1852,9 +1852,9 @@
     bu_vls_printf(&rot_y_vls, "%lf", model[Y]);
     bu_vls_printf(&rot_z_vls, "%lf", model[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
 
-    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->gdv_data;
+    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
     if (0 < bu_vls_strlen(&tvd->gdv_edit_motion_delta_callback)) {
        const char *command = bu_vls_addr(&tvd->gdv_edit_motion_delta_callback);
        const char *args[4];
@@ -1902,7 +1902,7 @@
     fastf_t sf;
     fastf_t inv_width;
     struct bu_vls sf_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -1921,8 +1921,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1937,26 +1937,26 @@
        return GED_ERROR;
     }
 
-    dx = x - gdvp->gdv_view->gv_prevMouseX;
-    dy = gdvp->gdv_view->gv_prevMouseY - y;
+    dx = x - gdvp->gv_prevMouseX;
+    dy = gdvp->gv_prevMouseY - y;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    width = dm_get_width(gdvp->gdv_dmp);
+    width = dm_get_width((struct dm *)gdvp->dmp);
     inv_width = 1.0 / (fastf_t)width;
-    dx *= inv_width * gdvp->gdv_view->gv_sscale;
-    dy *= inv_width * gdvp->gdv_view->gv_sscale;
+    dx *= inv_width * gdvp->gv_sscale;
+    dy *= inv_width * gdvp->gv_sscale;
 
     if (fabs(dx) < fabs(dy))
        sf = 1.0 + dy;
@@ -1965,9 +1965,9 @@
 
     bu_vls_printf(&sf_vls, "%lf", sf);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
 
-    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->gdv_data;
+    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
     if (0 < bu_vls_strlen(&tvd->gdv_edit_motion_delta_callback)) {
        struct bu_vls tcl_cmd;
 
@@ -2014,7 +2014,7 @@
     struct bu_vls tran_x_vls = BU_VLS_INIT_ZERO;
     struct bu_vls tran_y_vls = BU_VLS_INIT_ZERO;
     struct bu_vls tran_z_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -2033,8 +2033,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -2049,27 +2049,27 @@
        return GED_ERROR;
     }
 
-    dx = x - gdvp->gdv_view->gv_prevMouseX;
-    dy = gdvp->gdv_view->gv_prevMouseY - y;
+    dx = x - gdvp->gv_prevMouseX;
+    dy = gdvp->gv_prevMouseY - y;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    width = dm_get_width(gdvp->gdv_dmp);
+    width = dm_get_width((struct dm *)gdvp->dmp);
     inv_width = 1.0 / (fastf_t)width;
     /* ged_otranslate expects things to be in local units */
-    dx *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_base2local;
-    dy *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_base2local;
+    dx *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_base2local;
+    dy *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_base2local;
 
     VSET(view, dx, dy, 0.0);
     bu_vls_printf(&tran_x_vls, "%lf", model[X]);
@@ -2076,9 +2076,9 @@
     bu_vls_printf(&tran_y_vls, "%lf", model[Y]);
     bu_vls_printf(&tran_z_vls, "%lf", model[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
 
-    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->gdv_data;
+    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
     if (0 < bu_vls_strlen(&tvd->gdv_edit_motion_delta_callback)) {
        const char *path_string = argv[2];
        vect_t dvec;
@@ -2088,7 +2088,7 @@
 
        if (!params) {
            BU_GET(params, struct path_edit_params);
-           params->edit_mode = gdvp->gdv_view->gv_mode;
+           params->edit_mode = gdvp->gv_mode;
            params->dx = params->dy = 0.0;
            (void)bu_hash_set(current_top->to_gop->go_edited_paths,
                              (uint8_t *)path_string,
@@ -2098,7 +2098,7 @@
        params->dx += dx;
        params->dy += dy;
        VSET(view, params->dx, params->dy, 0.0);
-       bn_mat_inv(inv_rot, gdvp->gdv_view->gv_rotation);
+       bn_mat_inv(inv_rot, gdvp->gv_rotation);
        MAT4X3PNT(model, inv_rot, view);
 
        MAT_IDN(params->edit_mat);
@@ -2136,7 +2136,7 @@
 int
 go_mouse_poly_circ(Tcl_Interp *interp,
                   struct ged *gedp,
-                  struct ged_dm_view *gdvp,
+                  struct bview *gdvp,
                   int argc,
                   const char *argv[],
                   const char *usage)
@@ -2171,7 +2171,7 @@
                   const char *usage,
                   int UNUSED(maxargs))
 {
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
     int ret;
 
     /* initialize result */
@@ -2188,8 +2188,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -2215,7 +2215,7 @@
 int
 to_mouse_poly_circ_func(Tcl_Interp *interp,
                        struct ged *gedp,
-                       struct ged_dm_view *gdvp,
+                       struct bview *gdvp,
                        int UNUSED(argc),
                        const char *argv[],
                        const char *usage)
@@ -2230,9 +2230,9 @@
     bview_data_polygon_state *gdpsp;
 
     if (argv[0][0] == 's')
-       gdpsp = &gdvp->gdv_view->gv_sdata_polygons;
+       gdpsp = &gdvp->gv_sdata_polygons;
     else
-       gdpsp = &gdvp->gdv_view->gv_data_polygons;
+       gdpsp = &gdvp->gv_data_polygons;
 
     if (bu_sscanf(argv[1], "%d", &x) != 1 ||
        bu_sscanf(argv[2], "%d", &y) != 1) {
@@ -2240,11 +2240,11 @@
        return GED_ERROR;
     }
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    fx = screen_to_view_x(gdvp->gdv_dmp, x);
-    fy = screen_to_view_y(gdvp->gdv_dmp, y);
+    fx = screen_to_view_x((struct dm *)gdvp->dmp, x);
+    fy = screen_to_view_y((struct dm *)gdvp->dmp, y);
 
     int snapped = 0;
     if (gedp->ged_gvp->gv_snap_lines) {
@@ -2262,7 +2262,7 @@
        fastf_t curr_fx, curr_fy;
        register int nsegs, n;
 
-       VSET(v_pt, fx, fy, gdvp->gdv_view->gv_data_vZ);
+       VSET(v_pt, fx, fy, gdvp->gv_data_vZ);
        VSUB2(vdiff, v_pt, gdpsp->gdps_prev_point);
        r = MAGNITUDE(vdiff);
 
@@ -2274,7 +2274,7 @@
         * circumference / 4 = PI * diameter / 4
         *
         */
-       nsegs = M_PI_2 * r * gdvp->gdv_view->gv_scale;
+       nsegs = M_PI_2 * r * gdvp->gv_scale;
 
        if (nsegs < 32)
            nsegs = 32;
@@ -2285,8 +2285,8 @@
 
            curr_fx = cos(ang*DEG2RAD) * r + gdpsp->gdps_prev_point[X];
            curr_fy = sin(ang*DEG2RAD) * r + gdpsp->gdps_prev_point[Y];
-           VSET(v_pt, curr_fx, curr_fy, gdvp->gdv_view->gv_data_vZ);
-           MAT4X3PNT(m_pt, gdvp->gdv_view->gv_view2model, v_pt);
+           VSET(v_pt, curr_fx, curr_fy, gdvp->gv_data_vZ);
+           MAT4X3PNT(m_pt, gdvp->gv_view2model, v_pt);
            bu_vls_printf(&plist, " {%lf %lf %lf}", V3ARGS(m_pt));
        }
     }
@@ -2294,7 +2294,7 @@
     bu_vls_printf(&plist, " }");
     bu_vls_printf(&i_vls, "%zu", gdpsp->gdps_curr_polygon_i);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     ac = 4;
     av[0] = "data_polygons";
     av[1] = "replace_poly";
@@ -2313,7 +2313,7 @@
 int
 go_mouse_poly_cont(Tcl_Interp *interp,
                   struct ged *gedp,
-                  struct ged_dm_view *gdvp,
+                  struct bview *gdvp,
                   int argc,
                   const char *argv[],
                   const char *usage)
@@ -2348,7 +2348,7 @@
                   const char *usage,
                   int UNUSED(maxargs))
 {
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
     int ret;
 
     /* initialize result */
@@ -2365,8 +2365,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -2392,7 +2392,7 @@
 int
 to_mouse_poly_cont_func(Tcl_Interp *interp,
                        struct ged *gedp,
-                       struct ged_dm_view *gdvp,
+                       struct bview *gdvp,
                        int UNUSED(argc),
                        const char *argv[],
                        const char *usage)
@@ -2405,9 +2405,9 @@
     bview_data_polygon_state *gdpsp;
 
     if (argv[0][0] == 's')
-       gdpsp = &gdvp->gdv_view->gv_sdata_polygons;
+       gdpsp = &gdvp->gv_sdata_polygons;
     else
-       gdpsp = &gdvp->gdv_view->gv_data_polygons;
+       gdpsp = &gdvp->gv_data_polygons;
 
     if (bu_sscanf(argv[1], "%d", &x) != 1 ||
        bu_sscanf(argv[2], "%d", &y) != 1) {
@@ -2415,15 +2415,15 @@
        return GED_ERROR;
     }
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    fx = screen_to_view_x(gdvp->gdv_dmp, x);
-    fy = screen_to_view_y(gdvp->gdv_dmp, y);
-    VSET(v_pt, fx, fy, gdvp->gdv_view->gv_data_vZ);
+    fx = screen_to_view_x((struct dm *)gdvp->dmp, x);
+    fy = screen_to_view_y((struct dm *)gdvp->dmp, y);
+    VSET(v_pt, fx, fy, gdvp->gv_data_vZ);
 
-    MAT4X3PNT(m_pt, gdvp->gdv_view->gv_view2model, v_pt);
-    gedp->ged_gvp = gdvp->gdv_view;
+    MAT4X3PNT(m_pt, gdvp->gv_view2model, v_pt);
+    gedp->ged_gvp = gdvp;
 
     {
        struct bu_vls i_vls = BU_VLS_INIT_ZERO;
@@ -2456,7 +2456,7 @@
 int
 go_mouse_poly_ell(Tcl_Interp *interp,
                  struct ged *gedp,
-                 struct ged_dm_view *gdvp,
+                 struct bview *gdvp,
                  int argc,
                  const char *argv[],
                  const char *usage)
@@ -2491,7 +2491,7 @@
                  const char *usage,
                  int UNUSED(maxargs))
 {
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
     int ret;
 
     /* initialize result */
@@ -2508,8 +2508,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -2535,7 +2535,7 @@
 int
 to_mouse_poly_ell_func(Tcl_Interp *interp,
                       struct ged *gedp,
-                      struct ged_dm_view *gdvp,
+                      struct bview *gdvp,
                       int UNUSED(argc),
                       const char *argv[],
                       const char *usage)
@@ -2550,9 +2550,9 @@
     bview_data_polygon_state *gdpsp;
 
     if (argv[0][0] == 's')
-       gdpsp = &gdvp->gdv_view->gv_sdata_polygons;
+       gdpsp = &gdvp->gv_sdata_polygons;
     else
-       gdpsp = &gdvp->gdv_view->gv_data_polygons;
+       gdpsp = &gdvp->gv_data_polygons;
 
     if (bu_sscanf(argv[1], "%d", &x) != 1 ||
        bu_sscanf(argv[2], "%d", &y) != 1) {
@@ -2560,11 +2560,11 @@
        return GED_ERROR;
     }
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    fx = screen_to_view_x(gdvp->gdv_dmp, x);
-    fy = screen_to_view_y(gdvp->gdv_dmp, y);
+    fx = screen_to_view_x((struct dm *)gdvp->dmp, x);
+    fy = screen_to_view_y((struct dm *)gdvp->dmp, y);
     int snapped = 0;
     if (gedp->ged_gvp->gv_snap_lines) {
        snapped = ged_snap_to_lines(gedp, &fx, &fy);
@@ -2592,8 +2592,8 @@
         * note that sin(alpha) is cos(90-alpha).
         */
 
-       VSET(A, a, 0, gdvp->gdv_view->gv_data_vZ);
-       VSET(B, 0, b, gdvp->gdv_view->gv_data_vZ);
+       VSET(A, a, 0, gdvp->gv_data_vZ);
+       VSET(B, 0, b, gdvp->gv_data_vZ);
 
        /* use a variable number of segments based on the size of the
         * circle being created so small circles have few segments and
@@ -2603,7 +2603,7 @@
         * circumference / 4 = PI * diameter / 4
         *
         */
-       nsegs = M_PI_2 * FMAX(a, b) * gdvp->gdv_view->gv_scale;
+       nsegs = M_PI_2 * FMAX(a, b) * gdvp->gv_scale;
 
        if (nsegs < 32)
            nsegs = 32;
@@ -2614,7 +2614,7 @@
            fastf_t sina = sin(n * arc * DEG2RAD);
 
            VJOIN2(ellout, gdpsp->gdps_prev_point, cosa, A, sina, B);
-           MAT4X3PNT(m_pt, gdvp->gdv_view->gv_view2model, ellout);
+           MAT4X3PNT(m_pt, gdvp->gv_view2model, ellout);
            bu_vls_printf(&plist, " {%lf %lf %lf}", V3ARGS(m_pt));
        }
     }
@@ -2622,7 +2622,7 @@
     bu_vls_printf(&plist, " }");
     bu_vls_printf(&i_vls, "%zu", gdpsp->gdps_curr_polygon_i);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     ac = 4;
     av[0] = "data_polygons";
     av[1] = "replace_poly";
@@ -2641,7 +2641,7 @@
 int
 go_mouse_poly_rect(Tcl_Interp *interp,
                   struct ged *gedp,
-                  struct ged_dm_view *gdvp,
+                  struct bview *gdvp,
                   int argc,
                   const char *argv[],
                   const char *usage)
@@ -2676,7 +2676,7 @@
                   const char *usage,
                   int UNUSED(maxargs))
 {
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
     int ret;
 
     /* initialize result */
@@ -2693,8 +2693,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -2720,7 +2720,7 @@
 int
 to_mouse_poly_rect_func(Tcl_Interp *interp,
                        struct ged *gedp,
-                       struct ged_dm_view *gdvp,
+                       struct bview *gdvp,
                        int UNUSED(argc),
                        const char *argv[],
                        const char *usage)
@@ -2735,9 +2735,9 @@
     bview_data_polygon_state *gdpsp;
 
     if (argv[0][0] == 's')
-       gdpsp = &gdvp->gdv_view->gv_sdata_polygons;
+       gdpsp = &gdvp->gv_sdata_polygons;
     else
-       gdpsp = &gdvp->gdv_view->gv_data_polygons;
+       gdpsp = &gdvp->gv_data_polygons;
 
     if (bu_sscanf(argv[1], "%d", &x) != 1 ||
        bu_sscanf(argv[2], "%d", &y) != 1) {
@@ -2745,11 +2745,11 @@
        return GED_ERROR;
     }
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    fx = screen_to_view_x(gdvp->gdv_dmp, x);
-    fy = screen_to_view_y(gdvp->gdv_dmp, y);
+    fx = screen_to_view_x((struct dm *)gdvp->dmp, x);
+    fy = screen_to_view_y((struct dm *)gdvp->dmp, y);
     int snapped = 0;
     if (gedp->ged_gvp->gv_snap_lines) {
        snapped = ged_snap_to_lines(gedp, &fx, &fy);
@@ -2759,7 +2759,7 @@
     }
 
 
-    if (gdvp->gdv_view->gv_mode == TCLCAD_POLY_SQUARE_MODE) {
+    if (gdvp->gv_mode == TCLCAD_POLY_SQUARE_MODE) {
        fastf_t dx, dy;
 
        dx = fx - gdpsp->gdps_prev_point[X];
@@ -2778,23 +2778,23 @@
        }
     }
 
-    MAT4X3PNT(m_pt, gdvp->gdv_view->gv_view2model, gdpsp->gdps_prev_point);
+    MAT4X3PNT(m_pt, gdvp->gv_view2model, gdpsp->gdps_prev_point);
     bu_vls_printf(&plist, "{0 {%lf %lf %lf} ",  V3ARGS(m_pt));
 
-    VSET(v_pt, gdpsp->gdps_prev_point[X], fy, gdvp->gdv_view->gv_data_vZ);
-    MAT4X3PNT(m_pt, gdvp->gdv_view->gv_view2model, v_pt);
+    VSET(v_pt, gdpsp->gdps_prev_point[X], fy, gdvp->gv_data_vZ);
+    MAT4X3PNT(m_pt, gdvp->gv_view2model, v_pt);
     bu_vls_printf(&plist, "{%lf %lf %lf} ",  V3ARGS(m_pt));
 
-    VSET(v_pt, fx, fy, gdvp->gdv_view->gv_data_vZ);
-    MAT4X3PNT(m_pt, gdvp->gdv_view->gv_view2model, v_pt);
+    VSET(v_pt, fx, fy, gdvp->gv_data_vZ);
+    MAT4X3PNT(m_pt, gdvp->gv_view2model, v_pt);
     bu_vls_printf(&plist, "{%lf %lf %lf} ",  V3ARGS(m_pt));
-    VSET(v_pt, fx, gdpsp->gdps_prev_point[Y], gdvp->gdv_view->gv_data_vZ);
-    MAT4X3PNT(m_pt, gdvp->gdv_view->gv_view2model, v_pt);
+    VSET(v_pt, fx, gdpsp->gdps_prev_point[Y], gdvp->gv_data_vZ);
+    MAT4X3PNT(m_pt, gdvp->gv_view2model, v_pt);
     bu_vls_printf(&plist, "{%lf %lf %lf} }",  V3ARGS(m_pt));
 
     bu_vls_printf(&i_vls, "%zu", gdpsp->gdps_curr_polygon_i);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     ac = 4;
     av[0] = "data_polygons";
     av[1] = "replace_poly";
@@ -2837,7 +2837,7 @@
     int dx, dy;
     struct bu_vls dx_vls = BU_VLS_INIT_ZERO;
     struct bu_vls dy_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* initialize result */
     bu_vls_trunc(gedp->ged_result_str, 0);
@@ -2853,8 +2853,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -2869,12 +2869,12 @@
        return GED_ERROR;
     }
 
-    dx = x - gdvp->gdv_view->gv_prevMouseX;
-    dy = dm_get_height(gdvp->gdv_dmp) - y - gdvp->gdv_view->gv_prevMouseY;
+    dx = x - gdvp->gv_prevMouseX;
+    dy = dm_get_height((struct dm *)gdvp->dmp) - y - gdvp->gv_prevMouseY;
 
     bu_vls_printf(&dx_vls, "%d", dx);
     bu_vls_printf(&dy_vls, "%d", dy);
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     ac = 4;
     av[0] = "rect";
     av[1] = "dim";
@@ -2906,7 +2906,7 @@
     char *av[4];
     fastf_t dx, dy;
     struct bu_vls rot_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -2925,8 +2925,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -2941,28 +2941,28 @@
        return GED_ERROR;
     }
 
-    dx = gdvp->gdv_view->gv_prevMouseY - y;
-    dy = gdvp->gdv_view->gv_prevMouseX - x;
+    dx = gdvp->gv_prevMouseY - y;
+    dy = gdvp->gv_prevMouseX - x;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    dx *= gdvp->gdv_view->gv_rscale;
-    dy *= gdvp->gdv_view->gv_rscale;
+    dx *= gdvp->gv_rscale;
+    dy *= gdvp->gv_rscale;
 
     bu_vls_printf(&rot_vls, "%lf %lf 0", dx, dy);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     ac = 3;
     av[0] = "rot";
     av[1] = "-v";
@@ -2973,7 +2973,7 @@
     bu_vls_free(&rot_vls);
 
     if (ret == GED_OK) {
-       struct tclcad_view_data *tvd = (struct tclcad_view_data 
*)gdvp->gdv_data;
+       struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
        if (0 < bu_vls_strlen(&tvd->gdv_callback)) {
            Tcl_Eval(current_top->to_interp, bu_vls_addr(&tvd->gdv_callback));
        }
@@ -3000,7 +3000,7 @@
     point_t view;
     mat_t inv_rot;
     struct bu_vls pt_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -3019,8 +3019,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -3035,32 +3035,32 @@
        return GED_ERROR;
     }
 
-    dx = y - gdvp->gdv_view->gv_prevMouseY;
-    dy = x - gdvp->gdv_view->gv_prevMouseX;
+    dx = y - gdvp->gv_prevMouseY;
+    dy = x - gdvp->gv_prevMouseX;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    dx *= gdvp->gdv_view->gv_rscale;
-    dy *= gdvp->gdv_view->gv_rscale;
+    dx *= gdvp->gv_rscale;
+    dy *= gdvp->gv_rscale;
 
     VSET(view, dx, dy, 0.0);
-    bn_mat_inv(inv_rot, gdvp->gdv_view->gv_rotation);
+    bn_mat_inv(inv_rot, gdvp->gv_rotation);
     MAT4X3PNT(model, inv_rot, view);
 
     bu_vls_printf(&pt_vls, "%lf %lf %lf", model[X], model[Y], model[Z]);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = "rotate_arb_face";
     av[1] = (char *)argv[2];
     av[2] = (char *)argv[3];
@@ -3105,8 +3105,8 @@
            return GED_ERROR; \
        } \
  \
-       for (BU_LIST_FOR((_gdvp), ged_dm_view, 
&current_top->to_gop->go_head_views.l)) { \
-           if (BU_STR_EQUAL(bu_vls_addr(&(_gdvp)->gdv_view->gv_name), 
(_argv)[1])) \
+       for (BU_LIST_FOR((_gdvp), bview, 
&current_top->to_gop->go_head_views.l)) { \
+           if (BU_STR_EQUAL(bu_vls_addr(&(_gdvp)->gv_name), (_argv)[1])) \
                break; \
        } \
  \
@@ -3121,26 +3121,26 @@
            return GED_ERROR; \
        } \
  \
-       _dx = _x - (_gdvp)->gdv_view->gv_prevMouseX; \
-       _dy = (_gdvp)->gdv_view->gv_prevMouseY - _y; \
+       _dx = _x - (_gdvp)->gv_prevMouseX; \
+       _dy = (_gdvp)->gv_prevMouseY - _y; \
  \
-       (_gdvp)->gdv_view->gv_prevMouseX = _x; \
-       (_gdvp)->gdv_view->gv_prevMouseY = _y; \
+       (_gdvp)->gv_prevMouseX = _x; \
+       (_gdvp)->gv_prevMouseY = _y; \
  \
-       if (_dx < (_gdvp)->gdv_view->gv_minMouseDelta) \
-           _dx = (_gdvp)->gdv_view->gv_minMouseDelta; \
-       else if ((_gdvp)->gdv_view->gv_maxMouseDelta < _dx) \
-           _dx = (_gdvp)->gdv_view->gv_maxMouseDelta; \
+       if (_dx < (_gdvp)->gv_minMouseDelta) \
+           _dx = (_gdvp)->gv_minMouseDelta; \
+       else if ((_gdvp)->gv_maxMouseDelta < _dx) \
+           _dx = (_gdvp)->gv_maxMouseDelta; \
  \
-       if (_dy < (_gdvp)->gdv_view->gv_minMouseDelta) \
-           _dy = (_gdvp)->gdv_view->gv_minMouseDelta; \
-       else if ((_gdvp)->gdv_view->gv_maxMouseDelta < _dy) \
-           _dy = (_gdvp)->gdv_view->gv_maxMouseDelta; \
+       if (_dy < (_gdvp)->gv_minMouseDelta) \
+           _dy = (_gdvp)->gv_minMouseDelta; \
+       else if ((_gdvp)->gv_maxMouseDelta < _dy) \
+           _dy = (_gdvp)->gv_maxMouseDelta; \
  \
-       _width = dm_get_width((_gdvp)->gdv_dmp); \
+       _width = dm_get_width((struct dm *)(_gdvp)->dmp); \
        _inv_width = 1.0 / (fastf_t)_width; \
-       _dx *= _inv_width * (_gdvp)->gdv_view->gv_sscale; \
-       _dy *= _inv_width * (_gdvp)->gdv_view->gv_sscale; \
+       _dx *= _inv_width * (_gdvp)->gv_sscale; \
+       _dy *= _inv_width * (_gdvp)->gv_sscale; \
  \
        if (fabs(_dx) > fabs(_dy)) \
            _sf = 1.0 + _dx; \
@@ -3162,7 +3162,7 @@
              int UNUSED(maxargs))
 {
     register int i;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
     fastf_t sf;
 
     /* initialize result */
@@ -3180,8 +3180,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -3197,7 +3197,7 @@
 
     /* scale data arrows */
     {
-       struct bview_data_arrow_state *gdasp = &gdvp->gdv_view->gv_data_arrows;
+       struct bview_data_arrow_state *gdasp = &gdvp->gv_data_arrows;
        point_t vcenter = {0, 0, 0};
 
        /* Scale the length of each arrow */
@@ -3216,7 +3216,7 @@
 
     /* scale data labels */
     {
-       struct bview_data_label_state *gdlsp = &gdvp->gdv_view->gv_data_labels;
+       struct bview_data_label_state *gdlsp = &gdvp->gv_data_labels;
        point_t vcenter = {0, 0, 0};
        point_t vpoint;
 
@@ -3249,10 +3249,10 @@
     int ret;
     char *av[4];
     struct bu_vls scale_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     TO_COMMON_MOUSE_SCALE(gdvp, scale_vls, argc, argv, usage);
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
 
     av[0] = "to_data_scale";
     av[1] = (char *)argv[1];
@@ -3278,10 +3278,10 @@
     int ret;
     char *av[3];
     struct bu_vls zoom_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     TO_COMMON_MOUSE_SCALE(gdvp, zoom_vls, argc, argv, usage);
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
 
     av[0] = "zoom";
     av[1] = bu_vls_addr(&zoom_vls);
@@ -3290,7 +3290,7 @@
     bu_vls_free(&zoom_vls);
 
     if (ret == GED_OK) {
-       struct tclcad_view_data *tvd = (struct tclcad_view_data 
*)gdvp->gdv_data;
+       struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
        if (0 < bu_vls_strlen(&tvd->gdv_callback)) {
            Tcl_Eval(current_top->to_interp, bu_vls_addr(&tvd->gdv_callback));
        }
@@ -3317,7 +3317,7 @@
     point_t view;
     mat_t inv_rot;
     struct bu_vls mrot_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -3336,8 +3336,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -3352,32 +3352,32 @@
        return GED_ERROR;
     }
 
-    dx = y - gdvp->gdv_view->gv_prevMouseY;
-    dy = x - gdvp->gdv_view->gv_prevMouseX;
+    dx = y - gdvp->gv_prevMouseY;
+    dy = x - gdvp->gv_prevMouseX;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    dx *= gdvp->gdv_view->gv_rscale;
-    dy *= gdvp->gdv_view->gv_rscale;
+    dx *= gdvp->gv_rscale;
+    dy *= gdvp->gv_rscale;
 
     VSET(view, dx, dy, 0.0);
-    bn_mat_inv(inv_rot, gdvp->gdv_view->gv_rotation);
+    bn_mat_inv(inv_rot, gdvp->gv_rotation);
     MAT4X3PNT(model, inv_rot, view);
 
     bu_vls_printf(&mrot_vls, "%lf %lf %lf", V3ARGS(model));
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = "protate";
     av[1] = (char *)argv[2];
     av[2] = (char *)argv[3];
@@ -3412,7 +3412,7 @@
     fastf_t sf;
     fastf_t inv_width;
     struct bu_vls sf_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -3431,8 +3431,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -3447,26 +3447,26 @@
        return GED_ERROR;
     }
 
-    dx = x - gdvp->gdv_view->gv_prevMouseX;
-    dy = gdvp->gdv_view->gv_prevMouseY - y;
+    dx = x - gdvp->gv_prevMouseX;
+    dy = gdvp->gv_prevMouseY - y;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    width = dm_get_width(gdvp->gdv_dmp);
+    width = dm_get_width((struct dm *)gdvp->dmp);
     inv_width = 1.0 / (fastf_t)width;
-    dx *= inv_width * gdvp->gdv_view->gv_sscale;
-    dy *= inv_width * gdvp->gdv_view->gv_sscale;
+    dx *= inv_width * gdvp->gv_sscale;
+    dy *= inv_width * gdvp->gv_sscale;
 
     if (fabs(dx) < fabs(dy))
        sf = 1.0 + dy;
@@ -3475,7 +3475,7 @@
 
     bu_vls_printf(&sf_vls, "%lf", sf);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = "pscale";
     av[1] = "-r";
     av[2] = (char *)argv[2];
@@ -3513,7 +3513,7 @@
     fastf_t inv_width;
     mat_t inv_rot;
     struct bu_vls tvec_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -3532,8 +3532,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -3548,34 +3548,34 @@
        return GED_ERROR;
     }
 
-    dx = x - gdvp->gdv_view->gv_prevMouseX;
-    dy = gdvp->gdv_view->gv_prevMouseY - y;
+    dx = x - gdvp->gv_prevMouseX;
+    dy = gdvp->gv_prevMouseY - y;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    width = dm_get_width(gdvp->gdv_dmp);
+    width = dm_get_width((struct dm *)gdvp->dmp);
     inv_width = 1.0 / (fastf_t)width;
     /* ged_ptranslate expects things to be in local units */
-    dx *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_base2local;
-    dy *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_base2local;
+    dx *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_base2local;
+    dy *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_base2local;
     VSET(view, dx, dy, 0.0);
-    bn_mat_inv(inv_rot, gdvp->gdv_view->gv_rotation);
+    bn_mat_inv(inv_rot, gdvp->gv_rotation);
     MAT4X3PNT(model, inv_rot, view);
 
     bu_vls_printf(&tvec_vls, "%lf %lf %lf", V3ARGS(model));
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     av[0] = "ptranslate";
     av[1] = "-r";
     av[2] = (char *)argv[2];
@@ -3611,7 +3611,7 @@
     fastf_t dx, dy;
     fastf_t inv_width;
     struct bu_vls trans_vls = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -3630,8 +3630,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -3646,30 +3646,30 @@
        return GED_ERROR;
     }
 
-    dx = gdvp->gdv_view->gv_prevMouseX - x;
-    dy = y - gdvp->gdv_view->gv_prevMouseY;
+    dx = gdvp->gv_prevMouseX - x;
+    dy = y - gdvp->gv_prevMouseY;
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
 
-    if (dx < gdvp->gdv_view->gv_minMouseDelta)
-       dx = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dx)
-       dx = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dx < gdvp->gv_minMouseDelta)
+       dx = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dx)
+       dx = gdvp->gv_maxMouseDelta;
 
-    if (dy < gdvp->gdv_view->gv_minMouseDelta)
-       dy = gdvp->gdv_view->gv_minMouseDelta;
-    else if (gdvp->gdv_view->gv_maxMouseDelta < dy)
-       dy = gdvp->gdv_view->gv_maxMouseDelta;
+    if (dy < gdvp->gv_minMouseDelta)
+       dy = gdvp->gv_minMouseDelta;
+    else if (gdvp->gv_maxMouseDelta < dy)
+       dy = gdvp->gv_maxMouseDelta;
 
-    width = dm_get_width(gdvp->gdv_dmp);
+    width = dm_get_width((struct dm *)gdvp->dmp);
     inv_width = 1.0 / (fastf_t)width;
-    dx *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_local2base;
-    dy *= inv_width * gdvp->gdv_view->gv_size * 
gedp->ged_wdbp->dbip->dbi_local2base;
+    dx *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_local2base;
+    dy *= inv_width * gdvp->gv_size * gedp->ged_wdbp->dbip->dbi_local2base;
 
     bu_vls_printf(&trans_vls, "%lf %lf 0", dx, dy);
 
-    gedp->ged_gvp = gdvp->gdv_view;
+    gedp->ged_gvp = gdvp;
     ac = 3;
     av[0] = "tra";
     av[1] = "-v";
@@ -3680,7 +3680,7 @@
     bu_vls_free(&trans_vls);
 
     if (ret == GED_OK) {
-       struct tclcad_view_data *tvd = (struct tclcad_view_data 
*)gdvp->gdv_data;
+       struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
        if (0 < bu_vls_strlen(&tvd->gdv_callback)) {
            Tcl_Eval(current_top->to_interp, bu_vls_addr(&tvd->gdv_callback));
        }

Modified: brlcad/branches/bioh/src/libtclcad/tclcad_obj.c
===================================================================
--- brlcad/branches/bioh/src/libtclcad/tclcad_obj.c     2020-07-29 19:47:21 UTC 
(rev 76582)
+++ brlcad/branches/bioh/src/libtclcad/tclcad_obj.c     2020-07-29 20:21:22 UTC 
(rev 76583)
@@ -138,7 +138,7 @@
                        const char *usage,
                        int maxargs);
 HIDDEN int to_data_move_func(struct ged *gedp,
-                            struct ged_dm_view *gdvp,
+                            struct bview *gdvp,
                             int argc,
                             const char *argv[],
                             const char *usage);
@@ -149,7 +149,7 @@
                                    const char *usage,
                                    int maxargs);
 HIDDEN int to_data_move_object_mode_func(struct ged *gedp,
-                                        struct ged_dm_view *gdvp,
+                                        struct bview *gdvp,
                                         int argc,
                                         const char *argv[],
                                         const char *usage);
@@ -160,7 +160,7 @@
                                   const char *usage,
                                   int maxargs);
 HIDDEN int to_data_move_point_mode_func(struct ged *gedp,
-                                       struct ged_dm_view *gdvp,
+                                       struct bview *gdvp,
                                        int argc,
                                        const char *argv[],
                                        const char *usage);
@@ -172,7 +172,7 @@
                        int maxargs);
 HIDDEN int
 to_data_pick_func(struct ged *gedp,
-                 struct ged_dm_view *gdvp,
+                 struct bview *gdvp,
                  int argc,
                  const char *argv[],
                  const char *usage);
@@ -1093,7 +1093,7 @@
 to_deleteProc(ClientData clientData)
 {
     struct tclcad_obj *top = (struct tclcad_obj *)clientData;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     if (current_top == top)
        current_top = TCLCAD_OBJ_NULL;
@@ -1107,11 +1107,11 @@
     free_path_edit_params(top->to_gop->go_edited_paths);
     bu_hash_destroy(top->to_gop->go_edited_paths);
 
-    while (BU_LIST_WHILE(gdvp, ged_dm_view, &top->to_gop->go_head_views.l)) {
+    while (BU_LIST_WHILE(gdvp, bview, &top->to_gop->go_head_views.l)) {
        /* This removes the view related command and results in a call
         * to to_deleteViewProc to release resources.
         */
-       Tcl_DeleteCommand(top->to_interp, 
bu_vls_addr(dm_get_pathname(gdvp->gdv_dmp)));
+       Tcl_DeleteCommand(top->to_interp, bu_vls_addr(dm_get_pathname((struct 
dm *)gdvp->dmp)));
     }
 
     bu_free((void *)top, "struct ged_obj");
@@ -1334,7 +1334,7 @@
       int UNUSED(maxargs))
 {
     int r, g, b;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* initialize result */
     bu_vls_trunc(gedp->ged_result_str, 0);
@@ -1350,8 +1350,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1362,7 +1362,7 @@
 
     /* get background color */
     if (argc == 2) {
-       unsigned char *dm_bg = dm_get_bg(gdvp->gdv_dmp);
+       unsigned char *dm_bg = dm_get_bg((struct dm *)gdvp->dmp);
        if (dm_bg) {
            bu_vls_printf(gedp->ged_result_str, "%d %d %d",
                          dm_bg[0],
@@ -1384,8 +1384,8 @@
        b < 0 || 255 < b)
        goto bad_color;
 
-    (void)dm_make_current(gdvp->gdv_dmp);
-    (void)dm_set_bg(gdvp->gdv_dmp, (unsigned char)r, (unsigned char)g, 
(unsigned char)b);
+    (void)dm_make_current((struct dm *)gdvp->dmp);
+    (void)dm_set_bg((struct dm *)gdvp->dmp, (unsigned char)r, (unsigned 
char)g, (unsigned char)b);
 
     to_refresh_view(gdvp);
 
@@ -1405,7 +1405,7 @@
          const char *usage,
          int UNUSED(maxargs))
 {
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
     fastf_t bounds[6];
 
     /* must be double for scanf */
@@ -1425,8 +1425,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1437,8 +1437,8 @@
 
     /* get window bounds */
     if (argc == 2) {
-       vect_t *cmin = dm_get_clipmin(gdvp->gdv_dmp);
-       vect_t *cmax = dm_get_clipmax(gdvp->gdv_dmp);
+       vect_t *cmin = dm_get_clipmin((struct dm *)gdvp->dmp);
+       vect_t *cmax = dm_get_clipmax((struct dm *)gdvp->dmp);
        if (cmin && cmax) {
            bu_vls_printf(gedp->ged_result_str, "%g %g %g %g %g %g",
                          (*cmin)[X], (*cmax)[X], (*cmin)[Y], (*cmax)[Y], 
(*cmin)[Z], (*cmax)[Z]);
@@ -1463,13 +1463,13 @@
      * use it for controlling the location of the zclipping plane in
      * dm-ogl.c. dm-X.c uses dm_clipmin and dm_clipmax.
      */
-    if (dm_get_clipmax(gdvp->gdv_dmp) && (*dm_get_clipmax(gdvp->gdv_dmp))[2] 
<= GED_MAX)
-       dm_set_bound(gdvp->gdv_dmp, 1.0);
+    if (dm_get_clipmax((struct dm *)gdvp->dmp) && (*dm_get_clipmax((struct dm 
*)gdvp->dmp))[2] <= GED_MAX)
+       dm_set_bound((struct dm *)gdvp->dmp, 1.0);
     else
-       dm_set_bound(gdvp->gdv_dmp, 
GED_MAX/((*dm_get_clipmax(gdvp->gdv_dmp))[2]));
+       dm_set_bound((struct dm *)gdvp->dmp, GED_MAX/((*dm_get_clipmax((struct 
dm *)gdvp->dmp))[2]));
 
-    (void)dm_make_current(gdvp->gdv_dmp);
-    (void)dm_set_win_bounds(gdvp->gdv_dmp, bounds);
+    (void)dm_make_current((struct dm *)gdvp->dmp);
+    (void)dm_set_win_bounds((struct dm *)gdvp->dmp, bounds);
 
     return GED_OK;
 }
@@ -1483,7 +1483,7 @@
             const char *usage,
             int UNUSED(maxargs))
 {
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
     int status;
 
     /* initialize result */
@@ -1494,8 +1494,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1505,12 +1505,12 @@
     }
 
     /* configure the display manager window */
-    status = dm_configure_win(gdvp->gdv_dmp, 0);
+    status = dm_configure_win((struct dm *)gdvp->dmp, 0);
 
     /* configure the framebuffer window */
-    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->gdv_data;
+    struct tclcad_view_data *tvd = (struct tclcad_view_data *)gdvp->u_data;
     if (tvd->gdv_fbs.fbs_fbp != FB_NULL)
-       (void)fb_configure_window(tvd->gdv_fbs.fbs_fbp, 
dm_get_width(gdvp->gdv_dmp), dm_get_height(gdvp->gdv_dmp));
+       (void)fb_configure_window(tvd->gdv_fbs.fbs_fbp, dm_get_width((struct dm 
*)gdvp->dmp), dm_get_height((struct dm *)gdvp->dmp));
 
     {
        char cdimX[32];
@@ -1517,8 +1517,8 @@
        char cdimY[32];
        char *av[5];
 
-       snprintf(cdimX, 32, "%d", dm_get_width(gdvp->gdv_dmp));
-       snprintf(cdimY, 32, "%d", dm_get_height(gdvp->gdv_dmp));
+       snprintf(cdimX, 32, "%d", dm_get_width((struct dm *)gdvp->dmp));
+       snprintf(cdimY, 32, "%d", dm_get_height((struct dm *)gdvp->dmp));
 
        av[0] = "rect";
        av[1] = "cdim";
@@ -1526,7 +1526,7 @@
        av[3] = cdimY;
        av[4] = NULL;
 
-       gedp->ged_gvp = gdvp->gdv_view;
+       gedp->ged_gvp = gdvp;
        (void)ged_rect(gedp, 4, (const char **)av);
     }
 
@@ -1548,7 +1548,7 @@
                   int UNUSED(maxargs))
 {
     struct bu_vls bindings = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -1567,8 +1567,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1590,15 +1590,15 @@
        return GED_ERROR;
     }
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
-    gdvp->gdv_view->gv_mode = TCLCAD_CONSTRAINED_ROTATE_MODE;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
+    gdvp->gv_mode = TCLCAD_CONSTRAINED_ROTATE_MODE;
 
-    if (dm_get_pathname(gdvp->gdv_dmp)) {
+    if (dm_get_pathname((struct dm *)gdvp->dmp)) {
        bu_vls_printf(&bindings, "bind %s <Motion> {%s mouse_constrain_rot %s 
%s %%x %%y}; break",
-                     bu_vls_addr(dm_get_pathname(gdvp->gdv_dmp)),
+                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
                      bu_vls_addr(&current_top->to_gop->go_name),
-                     bu_vls_addr(&gdvp->gdv_view->gv_name),
+                     bu_vls_addr(&gdvp->gv_name),
                      argv[2]);
        Tcl_Eval(current_top->to_interp, bu_vls_addr(&bindings));
     }
@@ -1617,7 +1617,7 @@
                   int UNUSED(maxargs))
 {
     struct bu_vls bindings = BU_VLS_INIT_ZERO;
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* must be double for scanf */
     double x, y;
@@ -1636,8 +1636,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1659,15 +1659,15 @@
        return GED_ERROR;
     }
 
-    gdvp->gdv_view->gv_prevMouseX = x;
-    gdvp->gdv_view->gv_prevMouseY = y;
-    gdvp->gdv_view->gv_mode = TCLCAD_CONSTRAINED_TRANSLATE_MODE;
+    gdvp->gv_prevMouseX = x;
+    gdvp->gv_prevMouseY = y;
+    gdvp->gv_mode = TCLCAD_CONSTRAINED_TRANSLATE_MODE;
 
-    if (dm_get_pathname(gdvp->gdv_dmp)) {
+    if (dm_get_pathname((struct dm *)gdvp->dmp)) {
        bu_vls_printf(&bindings, "bind %s <Motion> {%s mouse_constrain_trans %s 
%s %%x %%y}; break",
-                     bu_vls_addr(dm_get_pathname(gdvp->gdv_dmp)),
+                     bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
                      bu_vls_addr(&current_top->to_gop->go_name),
-                     bu_vls_addr(&gdvp->gdv_view->gv_name),
+                     bu_vls_addr(&gdvp->gv_name),
                      argv[2]);
        Tcl_Eval(current_top->to_interp, bu_vls_addr(&bindings));
     }
@@ -1806,7 +1806,7 @@
 int
 go_data_move(Tcl_Interp *UNUSED(interp),
             struct ged *gedp,
-            struct ged_dm_view *gdvp,
+            struct bview *gdvp,
             int argc,
             const char *argv[],
             const char *usage)
@@ -1844,7 +1844,7 @@
             const char *usage,
             int UNUSED(maxargs))
 {
-    struct ged_dm_view *gdvp;
+    struct bview *gdvp;
 
     /* initialize result */
     bu_vls_trunc(gedp->ged_result_str, 0);
@@ -1860,8 +1860,8 @@
        return GED_ERROR;
     }
 
-    for (BU_LIST_FOR(gdvp, ged_dm_view, 
&current_top->to_gop->go_head_views.l)) {
-       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gdv_view->gv_name), argv[1]))
+    for (BU_LIST_FOR(gdvp, bview, &current_top->to_gop->go_head_views.l)) {
+       if (BU_STR_EQUAL(bu_vls_addr(&gdvp->gv_name), argv[1]))
            break;
     }
 
@@ -1878,7 +1878,7 @@
 
 HIDDEN int
 to_data_move_func(struct ged *gedp,
-                 struct ged_dm_view *gdvp,
+                 struct bview *gdvp,
                  int argc,
                  const char *argv[],
                  const char *usage)
@@ -1905,9 +1905,9 @@
            goto bad;
     }
 
-    width = dm_get_width(gdvp->gdv_dmp);
+    width = dm_get_width((struct dm *)gdvp->dmp);
     cx = 0.5 * (fastf_t)width;
-    height = dm_get_height(gdvp->gdv_dmp);
+    height = dm_get_height((struct dm *)gdvp->dmp);
     cy = 0.5 * (fastf_t)height;
     sf = 2.0 / width;
     vx = (mx - cx) * sf;
@@ -1915,7 +1915,7 @@
 
     if (BU_STR_EQUAL(argv[1], "data_polygons")) {
        size_t i, j, k;
-       bview_data_polygon_state *gdpsp = &gdvp->gdv_view->gv_data_polygons;
+       bview_data_polygon_state *gdpsp = &gdvp->gv_data_polygons;
 
        if (bu_sscanf(argv[2], "%zu %zu %zu", &i, &j, &k) != 3)
            goto bad;
@@ -1927,16 +1927,16 @@
            return GED_OK;
 
        /* This section is for moving more than a single point on a contour */
-       if (gdvp->gdv_view->gv_mode == TCLCAD_DATA_MOVE_OBJECT_MODE) {
+       if (gdvp->gv_mode == TCLCAD_DATA_MOVE_OBJECT_MODE) {
            point_t old_mpoint, new_mpoint;
            vect_t diff;
 
            VMOVE(old_mpoint, 
gdpsp->gdps_polygons.polygon[i].contour[j].point[k]);
 
-           MAT4X3PNT(vpoint, gdvp->gdv_view->gv_model2view, 
gdpsp->gdps_polygons.polygon[i].contour[j].point[k]);
+           MAT4X3PNT(vpoint, gdvp->gv_model2view, 
gdpsp->gdps_polygons.polygon[i].contour[j].point[k]);
            vpoint[X] = vx;
            vpoint[Y] = vy;
-           MAT4X3PNT(new_mpoint, gdvp->gdv_view->gv_view2model, vpoint);
+           MAT4X3PNT(new_mpoint, gdvp->gv_view2model, vpoint);
            VSUB2(diff, new_mpoint, old_mpoint);
 
            /* Move all polygons and all their respective contours. */
@@ -1961,10 +1961,10 @@
            }
        } else {
            /* This section is for moving a single point on a contour */
-           MAT4X3PNT(vpoint, gdvp->gdv_view->gv_model2view, 
gdpsp->gdps_polygons.polygon[i].contour[j].point[k]);
+           MAT4X3PNT(vpoint, gdvp->gv_model2view, 
gdpsp->gdps_polygons.polygon[i].contour[j].point[k]);
            vpoint[X] = vx;
            vpoint[Y] = vy;
-           MAT4X3PNT(gdpsp->gdps_polygons.polygon[i].contour[j].point[k], 
gdvp->gdv_view->gv_view2model, vpoint);
+           MAT4X3PNT(gdpsp->gdps_polygons.polygon[i].contour[j].point[k], 
gdvp->gv_view2model, vpoint);
        }
 
        to_refresh_view(gdvp);
@@ -1972,14 +1972,14 @@
     }
 
     if (BU_STR_EQUAL(argv[1], "data_arrows")) {
-       struct bview_data_arrow_state *gdasp = &gdvp->gdv_view->gv_data_arrows;
+       struct bview_data_arrow_state *gdasp = &gdvp->gv_data_arrows;
 
        /* Silently ignore */
-       if (dindex >= gdvp->gdv_view->gv_data_arrows.gdas_num_points)
+       if (dindex >= gdvp->gv_data_arrows.gdas_num_points)
            return GED_OK;
 
        /* This section is for moving the entire arrow */
-       if (gdvp->gdv_view->gv_mode == TCLCAD_DATA_MOVE_OBJECT_MODE) {
+       if (gdvp->gv_mode == TCLCAD_DATA_MOVE_OBJECT_MODE) {
            int dindexA, dindexB;
            point_t old_mpoint, new_mpoint;
            vect_t diff;
@@ -1992,19 +1992,19 @@
 
            VMOVE(old_mpoint, gdasp->gdas_points[dindexA]);
 
-           MAT4X3PNT(vpoint, gdvp->gdv_view->gv_model2view, 
gdasp->gdas_points[dindexA]);
+           MAT4X3PNT(vpoint, gdvp->gv_model2view, gdasp->gdas_points[dindexA]);
            vpoint[X] = vx;
            vpoint[Y] = vy;
-           MAT4X3PNT(new_mpoint, gdvp->gdv_view->gv_view2model, vpoint);
+           MAT4X3PNT(new_mpoint, gdvp->gv_view2model, vpoint);
            VSUB2(diff, new_mpoint, old_mpoint);
 
            VMOVE(gdasp->gdas_points[dindexA], new_mpoint);
            VADD2(gdasp->gdas_points[dindexB], gdasp->gdas_points[dindexB], 
diff);
        } else {
-           MAT4X3PNT(vpoint, gdvp->gdv_view->gv_model2view, 
gdasp->gdas_points[dindex]);
+           MAT4X3PNT(vpoint, gdvp->gv_model2view, gdasp->gdas_points[dindex]);
            vpoint[X] = vx;
            vpoint[Y] = vy;
-           MAT4X3PNT(mpoint, gdvp->gdv_view->gv_view2model, vpoint);
+           MAT4X3PNT(mpoint, gdvp->gv_view2model, vpoint);
            VMOVE(gdasp->gdas_points[dindex], mpoint);
        }
 
@@ -2013,14 +2013,14 @@
     }
 
     if (BU_STR_EQUAL(argv[1], "sdata_arrows")) {
-       struct bview_data_arrow_state *gdasp = &gdvp->gdv_view->gv_sdata_arrows;
+       struct bview_data_arrow_state *gdasp = &gdvp->gv_sdata_arrows;
 
        /* Silently ignore */
-       if (dindex >= gdvp->gdv_view->gv_sdata_arrows.gdas_num_points)
+       if (dindex >= gdvp->gv_sdata_arrows.gdas_num_points)
            return GED_OK;
 
        /* This section is for moving the entire arrow */
-       if (gdvp->gdv_view->gv_mode == TCLCAD_DATA_MOVE_OBJECT_MODE) {
+       if (gdvp->gv_mode == TCLCAD_DATA_MOVE_OBJECT_MODE) {
            int dindexA, dindexB;
            point_t old_mpoint, new_mpoint;
            vect_t diff;
@@ -2033,19 +2033,19 @@
 
            VMOVE(old_mpoint, gdasp->gdas_points[dindexA]);
 
-           MAT4X3PNT(vpoint, gdvp->gdv_view->gv_model2view, 
gdasp->gdas_points[dindexA]);
+           MAT4X3PNT(vpoint, gdvp->gv_model2view, gdasp->gdas_points[dindexA]);
            vpoint[X] = vx;
            vpoint[Y] = vy;
-           MAT4X3PNT(new_mpoint, gdvp->gdv_view->gv_view2model, vpoint);
+           MAT4X3PNT(new_mpoint, gdvp->gv_view2model, vpoint);
            VSUB2(diff, new_mpoint, old_mpoint);
 
            VMOVE(gdasp->gdas_points[dindexA], new_mpoint);
            VADD2(gdasp->gdas_points[dindexB], gdasp->gdas_points[dindexB], 
diff);
        } else {
-           MAT4X3PNT(vpoint, gdvp->gdv_view->gv_model2view, 
gdasp->gdas_points[dindex]);
+           MAT4X3PNT(vpoint, gdvp->gv_model2view, gdasp->gdas_points[dindex]);
            vpoint[X] = vx;
            vpoint[Y] = vy;
-           MAT4X3PNT(mpoint, gdvp->gdv_view->gv_view2model, vpoint);
+           MAT4X3PNT(mpoint, gdvp->gv_view2model, vpoint);
            VMOVE(gdasp->gdas_points[dindex], mpoint);
        }
 
@@ -2054,16 +2054,16 @@
     }
 
     if (BU_STR_EQUAL(argv[1], "data_axes")) {
-       struct bview_data_axes_state *gdasp = &gdvp->gdv_view->gv_data_axes;
+       struct bview_data_axes_state *gdasp = &gdvp->gv_data_axes;
 
        /* Silently ignore */
-       if (dindex >= gdvp->gdv_view->gv_data_axes.num_points)
+       if (dindex >= gdvp->gv_data_axes.num_points)
            return GED_OK;
 
-       MAT4X3PNT(vpoint, gdvp->gdv_view->gv_model2view, gdasp->points[dindex]);
+       MAT4X3PNT(vpoint, gdvp->gv_model2view, gdasp->points[dindex]);
        vpoint[X] = vx;
        vpoint[Y] = vy;
-       MAT4X3PNT(mpoint, gdvp->gdv_view->gv_view2model, vpoint);
+       MAT4X3PNT(mpoint, gdvp->gv_view2model, vpoint);
        VMOVE(gdasp->points[dindex], mpoint);
 
        to_refresh_view(gdvp);
@@ -2071,16 +2071,16 @@
     }
 
     if (BU_STR_EQUAL(argv[1], "sdata_axes")) {
-       struct bview_data_axes_state *gdasp = &gdvp->gdv_view->gv_sdata_axes;
+       struct bview_data_axes_state *gdasp = &gdvp->gv_sdata_axes;
 
        /* Silently ignore */
-       if (dindex >= gdvp->gdv_view->gv_sdata_axes.num_points)
+       if (dindex >= gdvp->gv_sdata_axes.num_points)
            return GED_OK;
 
-       MAT4X3PNT(vpoint, gdvp->gdv_view->gv_model2view, gdasp->points[dindex]);
+       MAT4X3PNT(vpoint, gdvp->gv_model2view, gdasp->points[dindex]);
        vpoint[X] = vx;
        vpoint[Y] = vy;
-       MAT4X3PNT(mpoint, gdvp->gdv_view->gv_view2model, vpoint);
+       MAT4X3PNT(mpoint, gdvp->gv_view2model, vpoint);
        VMOVE(gdasp->points[dindex], mpoint);
 
        to_refresh_view(gdvp);
@@ -2089,16 +2089,16 @@
 
 
     if (BU_STR_EQUAL(argv[1], "data_labels")) {
-       struct bview_data_label_state *gdlsp = &gdvp->gdv_view->gv_data_labels;
+       struct bview_data_label_state *gdlsp = &gdvp->gv_data_labels;
 
        /* Silently ignore */
-       if (dindex >= gdvp->gdv_view->gv_data_labels.gdls_num_labels)
+       if (dindex >= gdvp->gv_data_labels.gdls_num_labels)
            return GED_OK;
 
-       MAT4X3PNT(vpoint, gdvp->gdv_view->gv_model2view, 
gdlsp->gdls_points[dindex]);
+       MAT4X3PNT(vpoint, gdvp->gv_model2view, gdlsp->gdls_points[dindex]);
        vpoint[X] = vx;
        vpoint[Y] = vy;
-       MAT4X3PNT(mpoint, gdvp->gdv_view->gv_view2model, vpoint);
+       MAT4X3PNT(mpoint, gdvp->gv_view2model, vpoint);
        VMOVE(gdlsp->gdls_points[dindex], mpoint);
 
        to_refresh_view(gdvp);
@@ -2106,16 +2106,16 @@
     }
 
     if (BU_STR_EQUAL(argv[1], "sdata_labels")) {
-       struct bview_data_label_state *gdlsp = &gdvp->gdv_view->gv_sdata_labels;
+       struct bview_data_label_state *gdlsp = &gdvp->gv_sdata_labels;
 
        /* Silently ignore */
-       if (dindex >= gdvp->gdv_view->gv_sdata_labels.gdls_num_labels)
+       if (dindex >= gdvp->gv_sdata_labels.gdls_num_labels)
            return GED_OK;
 
-       MAT4X3PNT(vpoint, gdvp->gdv_view->gv_model2view, 
gdlsp->gdls_points[dindex]);
+       MAT4X3PNT(vpoint, gdvp->gv_model2view, gdlsp->gdls_points[dindex]);
        vpoint[X] = vx;
        vpoint[Y] = vy;

@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to