Revision: 76345
          http://sourceforge.net/p/brlcad/code/76345
Author:   starseeker
Date:     2020-07-15 01:11:01 +0000 (Wed, 15 Jul 2020)
Log Message:
-----------
More relocation

Modified Paths:
--------------
    brlcad/trunk/src/libtclcad/CMakeLists.txt
    brlcad/trunk/src/libtclcad/fb.c
    brlcad/trunk/src/libtclcad/tclcad_mouse.c
    brlcad/trunk/src/libtclcad/tclcad_obj.c
    brlcad/trunk/src/libtclcad/tclcad_obj_wrapper.c
    brlcad/trunk/src/libtclcad/tclcad_polygons.c
    brlcad/trunk/src/libtclcad/tclcad_private.h
    brlcad/trunk/src/libtclcad/view/tclcad_views.c
    brlcad/trunk/src/libtclcad/view/view.h

Added Paths:
-----------
    brlcad/trunk/src/libtclcad/view/lines.c
    brlcad/trunk/src/libtclcad/view/refresh.c

Modified: brlcad/trunk/src/libtclcad/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libtclcad/CMakeLists.txt   2020-07-15 00:45:22 UTC (rev 
76344)
+++ brlcad/trunk/src/libtclcad/CMakeLists.txt   2020-07-15 01:11:01 UTC (rev 
76345)
@@ -18,6 +18,8 @@
   view/arrows.c
   view/autoview.c
   view/axes.c
+  view/lines.c
+  view/refresh.c
   tkImgFmtPIX.c
   )
 

Modified: brlcad/trunk/src/libtclcad/fb.c
===================================================================
--- brlcad/trunk/src/libtclcad/fb.c     2020-07-15 00:45:22 UTC (rev 76344)
+++ brlcad/trunk/src/libtclcad/fb.c     2020-07-15 01:11:01 UTC (rev 76345)
@@ -46,6 +46,7 @@
 #include "dm.h"
 #include "tclcad.h"
 #include "tclcad_private.h"
+#include "./view/view.h"
 
 /* defined in libfb/tcl.c */
 extern int fb_refresh(struct fb *ifp, int x, int y, int w, int h);

Modified: brlcad/trunk/src/libtclcad/tclcad_mouse.c
===================================================================
--- brlcad/trunk/src/libtclcad/tclcad_mouse.c   2020-07-15 00:45:22 UTC (rev 
76344)
+++ brlcad/trunk/src/libtclcad/tclcad_mouse.c   2020-07-15 01:11:01 UTC (rev 
76345)
@@ -31,6 +31,7 @@
 
 /* Private headers */
 #include "tclcad_private.h"
+#include "./view/view.h"
 
 int
 to_get_prev_mouse(struct ged *gedp,

Modified: brlcad/trunk/src/libtclcad/tclcad_obj.c
===================================================================
--- brlcad/trunk/src/libtclcad/tclcad_obj.c     2020-07-15 00:45:22 UTC (rev 
76344)
+++ brlcad/trunk/src/libtclcad/tclcad_obj.c     2020-07-15 01:11:01 UTC (rev 
76345)
@@ -154,12 +154,6 @@
                               struct ged_dm_view *gdvp,
                               int argc,
                               const char *argv[]);
-HIDDEN int to_data_lines(struct ged *gedp,
-                        int argc,
-                        const char *argv[],
-                        ged_func_ptr func,
-                        const char *usage,
-                        int maxargs);
 HIDDEN int to_data_move(struct ged *gedp,
                        int argc,
                        const char *argv[],
@@ -265,8 +259,6 @@
                            ged_func_ptr func,
                            const char *usage,
                            int maxargs);
-HIDDEN int to_handle_refresh(struct ged *gedp,
-                            const char *name);
 HIDDEN int to_hide_view(struct ged *gedp,
                        int argc,
                        const char *argv[],
@@ -443,24 +435,6 @@
                        ged_func_ptr func,
                        const char *usage,
                        int maxargs);
-HIDDEN int to_refresh(struct ged *gedp,
-                     int argc,
-                     const char *argv[],
-                     ged_func_ptr func,
-                     const char *usage,
-                     int maxargs);
-HIDDEN int to_refresh_all(struct ged *gedp,
-                         int argc,
-                         const char *argv[],
-                         ged_func_ptr func,
-                         const char *usage,
-                         int maxargs);
-HIDDEN int to_refresh_on(struct ged *gedp,
-                        int argc,
-                        const char *argv[],
-                        ged_func_ptr func,
-                        const char *usage,
-                        int maxargs);
 HIDDEN int to_rotate_arb_face_mode(struct ged *gedp,
                                   int argc,
                                   const char *argv[],
@@ -599,7 +573,6 @@
 HIDDEN void to_create_vlist_callback_solid(struct solid *gdlp);
 HIDDEN void to_create_vlist_callback(struct display_list *gdlp);
 HIDDEN void to_free_vlist_callback(unsigned int dlist, int range);
-HIDDEN void to_refresh_handler(void *clientdata);
 HIDDEN void to_rt_end_callback_internal(int aborted);
 
 HIDDEN void to_output_handler(struct ged *gedp, char *line);
@@ -2296,104 +2269,6 @@
 
 
 int
-go_data_lines(Tcl_Interp *UNUSED(interp),
-             struct ged *gedp,
-             struct ged_dm_view *gdvp,
-             int argc,
-             const char *argv[],
-             const char *usage)
-{
-    int ret;
-
-    /* initialize result */
-    bu_vls_trunc(gedp->ged_result_str, 0);
-
-    /* must be wanting help */
-    if (argc == 1) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-       return GED_HELP;
-    }
-
-    if (argc < 2 || 5 < argc) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-       return GED_ERROR;
-    }
-
-    /* Don't allow go_refresh() to be called */
-    if (current_top != NULL)
-       current_top->to_gop->go_refresh_on = 0;
-
-
-    struct bview *btmp = gedp->ged_gvp;
-    gedp->ged_gvp = gdvp->gdv_view;
-
-    ret = ged_view_data_lines(gedp, argc, argv);
-
-    gedp->ged_gvp = btmp;
-
-    to_refresh_view(gdvp);
-    if (ret == GED_ERROR)
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-
-    return ret;
-}
-
-
-HIDDEN int
-to_data_lines(struct ged *gedp,
-             int argc,
-             const char *argv[],
-             ged_func_ptr UNUSED(func),
-             const char *usage,
-             int UNUSED(maxargs))
-{
-    struct ged_dm_view *gdvp;
-    int ret;
-
-    /* initialize result */
-    bu_vls_trunc(gedp->ged_result_str, 0);
-
-    /* must be wanting help */
-    if (argc == 1) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-       return GED_HELP;
-    }
-
-    if (argc < 3 || 6 < argc) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-       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_name), argv[1]))
-           break;
-    }
-
-    if (BU_LIST_IS_HEAD(&gdvp->l, &current_top->to_gop->go_head_views.l)) {
-       bu_vls_printf(gedp->ged_result_str, "View not found - %s", argv[1]);
-       return GED_ERROR;
-    }
-
-    /* turn the argv into a ged command */
-    argv[1] = argv[0];
-    argv[0] = "view";
-
-    struct bview *btmp = gedp->ged_gvp;
-    gedp->ged_gvp = gdvp->gdv_view;
-
-    ret = ged_view_func(gedp, argc, argv);
-
-    gedp->ged_gvp = btmp;
-
-    to_refresh_view(gdvp);
-
-    if (ret == GED_ERROR)
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-
-    return ret;
-}
-
-int
 go_data_move(Tcl_Interp *UNUSED(interp),
             struct ged *gedp,
             struct ged_dm_view *gdvp,
@@ -4270,28 +4145,6 @@
 
 
 HIDDEN int
-to_handle_refresh(struct ged *gedp,
-                 const char *name)
-{
-    struct ged_dm_view *gdvp;
-
-    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_name), name))
-           break;
-    }
-
-    if (BU_LIST_IS_HEAD(&gdvp->l, &current_top->to_gop->go_head_views.l)) {
-       bu_vls_printf(gedp->ged_result_str, "View not found - %s", name);
-       return GED_ERROR;
-    }
-
-    to_refresh_view(gdvp);
-
-    return GED_OK;
-}
-
-
-HIDDEN int
 to_hide_view(struct ged *gedp,
             int argc,
             const char *argv[],
@@ -5983,88 +5836,8 @@
 }
 
 
-HIDDEN int
-to_refresh(struct ged *gedp,
-          int argc,
-          const char *argv[],
-          ged_func_ptr UNUSED(func),
-          const char *usage,
-          int UNUSED(maxargs))
-{
-    /* initialize result */
-    bu_vls_trunc(gedp->ged_result_str, 0);
 
-    /* must be wanting help */
-    if (argc == 1) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-       return GED_HELP;
-    }
-
-    if (argc != 2) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-       return GED_ERROR;
-    }
-
-    return to_handle_refresh(gedp, argv[1]);
-}
-
-
 HIDDEN int
-to_refresh_all(struct ged *gedp,
-              int argc,
-              const char *argv[],
-              ged_func_ptr UNUSED(func),
-              const char *UNUSED(usage),
-              int UNUSED(maxargs))
-{
-    if (argc != 1) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s", argv[0]);
-       return GED_ERROR;
-    }
-
-    to_refresh_all_views(current_top);
-
-    return GED_OK;
-}
-
-
-HIDDEN int
-to_refresh_on(struct ged *gedp,
-             int argc,
-             const char *argv[],
-             ged_func_ptr UNUSED(func),
-             const char *UNUSED(usage),
-             int UNUSED(maxargs))
-{
-    int on;
-
-    /* initialize result */
-    bu_vls_trunc(gedp->ged_result_str, 0);
-
-    if (2 < argc) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s", argv[0]);
-       return GED_ERROR;
-    }
-
-    /* Get refresh_on state */
-    if (argc == 1) {
-       bu_vls_printf(gedp->ged_result_str, "%d", 
current_top->to_gop->go_refresh_on);
-       return GED_OK;
-    }
-
-    /* Set refresh_on state */
-    if (bu_sscanf(argv[1], "%d", &on) != 1) {
-       bu_vls_printf(gedp->ged_result_str, "Usage: %s", argv[0]);
-       return GED_ERROR;
-    }
-
-    current_top->to_gop->go_refresh_on = on;
-
-    return GED_OK;
-}
-
-
-HIDDEN int
 to_rotate_arb_face_mode(struct ged *gedp,
                        int argc,
                        const char *argv[],
@@ -7527,18 +7300,7 @@
     }
 }
 
-
 HIDDEN void
-to_refresh_handler(void *clientdata)
-{
-    struct ged_dm_view *gdvp = (struct ged_dm_view *)clientdata;
-
-    /* Possibly do more here */
-
-    to_refresh_view(gdvp);
-}
-
-HIDDEN void
 to_rt_end_callback_internal(int aborted)
 {
     if (0 < bu_vls_strlen(&current_top->to_gop->go_rt_end_callback)) {

Modified: brlcad/trunk/src/libtclcad/tclcad_obj_wrapper.c
===================================================================
--- brlcad/trunk/src/libtclcad/tclcad_obj_wrapper.c     2020-07-15 00:45:22 UTC 
(rev 76344)
+++ brlcad/trunk/src/libtclcad/tclcad_obj_wrapper.c     2020-07-15 01:11:01 UTC 
(rev 76345)
@@ -31,6 +31,7 @@
 
 /* Private headers */
 #include "tclcad_private.h"
+#include "./view/view.h"
 
 int
 to_autoview_func(struct ged *gedp,

Modified: brlcad/trunk/src/libtclcad/tclcad_polygons.c
===================================================================
--- brlcad/trunk/src/libtclcad/tclcad_polygons.c        2020-07-15 00:45:22 UTC 
(rev 76344)
+++ brlcad/trunk/src/libtclcad/tclcad_polygons.c        2020-07-15 01:11:01 UTC 
(rev 76345)
@@ -35,6 +35,7 @@
 
 /* Private headers */
 #include "tclcad_private.h"
+#include "./view/view.h"
 
 /*
  * Weird upper limit from clipper ---> sqrt(2^63 -1)/2

Modified: brlcad/trunk/src/libtclcad/tclcad_private.h
===================================================================
--- brlcad/trunk/src/libtclcad/tclcad_private.h 2020-07-15 00:45:22 UTC (rev 
76344)
+++ brlcad/trunk/src/libtclcad/tclcad_private.h 2020-07-15 01:11:01 UTC (rev 
76345)
@@ -407,18 +407,10 @@
 extern fastf_t screen_to_view_x(struct dm *dmp, fastf_t x);
 extern fastf_t screen_to_view_y(struct dm *dmp, fastf_t y);
 extern int to_is_viewable(struct ged_dm_view *gdvp);
-extern void to_autoview_view(struct ged_dm_view *gdvp, const char *scale);
-extern void to_autoview_all_views(struct tclcad_obj *top);
-extern void to_refresh_all_views(struct tclcad_obj *top);
-extern void to_refresh_view(struct ged_dm_view *gdvp);
+extern void go_draw(struct ged_dm_view *gdvp);
+extern void go_draw_other(struct ged_obj *gop, struct ged_dm_view *gdvp);
 
 /* Tclcad obj wrapper routines */
-extern int to_autoview_func(struct ged *gedp,
-                           int argc,
-                           const char *argv[],
-                           ged_func_ptr func,
-                           const char *usage,
-                           int maxargs);
 extern int to_pass_through_func(struct ged *gedp,
                                int argc,
                                const char *argv[],

Added: brlcad/trunk/src/libtclcad/view/lines.c
===================================================================
--- brlcad/trunk/src/libtclcad/view/lines.c                             (rev 0)
+++ brlcad/trunk/src/libtclcad/view/lines.c     2020-07-15 01:11:01 UTC (rev 
76345)
@@ -0,0 +1,173 @@
+/*                          L I N E S . C
+ * BRL-CAD
+ *
+ * Copyright (c) 2000-2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @addtogroup libtclcad */
+/** @{ */
+/** @file libtclcad/view/lines.c
+ *
+ */
+/** @} */
+
+#include "common.h"
+#include "bu/units.h"
+#include "ged.h"
+#include "tclcad.h"
+
+/* Private headers */
+#include "../../libged/ged_private.h" /* for ged_view_data_lines */
+#include "../tclcad_private.h"
+#include "../view/view.h"
+
+void
+go_dm_draw_lines(struct dm *dmp, struct bview_data_line_state *gdlsp)
+{
+    int saveLineWidth;
+    int saveLineStyle;
+
+    if (gdlsp->gdls_num_points < 1)
+       return;
+
+    saveLineWidth = dm_get_linewidth(dmp);
+    saveLineStyle = dm_get_linestyle(dmp);
+
+    /* set color */
+    (void)dm_set_fg(dmp,
+                   gdlsp->gdls_color[0],
+                   gdlsp->gdls_color[1],
+                   gdlsp->gdls_color[2], 1, 1.0);
+
+    /* set linewidth */
+    (void)dm_set_line_attr(dmp, gdlsp->gdls_line_width, 0);  /* solid lines */
+
+    (void)dm_draw_lines_3d(dmp,
+                          gdlsp->gdls_num_points,
+                          gdlsp->gdls_points, 0);
+
+    /* Restore the line attributes */
+    (void)dm_set_line_attr(dmp, saveLineWidth, saveLineStyle);
+}
+
+int
+go_data_lines(Tcl_Interp *UNUSED(interp),
+             struct ged *gedp,
+             struct ged_dm_view *gdvp,
+             int argc,
+             const char *argv[],
+             const char *usage)
+{
+    int ret;
+
+    /* initialize result */
+    bu_vls_trunc(gedp->ged_result_str, 0);
+
+    /* must be wanting help */
+    if (argc == 1) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_HELP;
+    }
+
+    if (argc < 2 || 5 < argc) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_ERROR;
+    }
+
+    /* Don't allow go_refresh() to be called */
+    if (current_top != NULL)
+       current_top->to_gop->go_refresh_on = 0;
+
+
+    struct bview *btmp = gedp->ged_gvp;
+    gedp->ged_gvp = gdvp->gdv_view;
+
+    ret = ged_view_data_lines(gedp, argc, argv);
+
+    gedp->ged_gvp = btmp;
+
+    to_refresh_view(gdvp);
+    if (ret == GED_ERROR)
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+
+    return ret;
+}
+
+
+int
+to_data_lines(struct ged *gedp,
+             int argc,
+             const char *argv[],
+             ged_func_ptr UNUSED(func),
+             const char *usage,
+             int UNUSED(maxargs))
+{
+    struct ged_dm_view *gdvp;
+    int ret;
+
+    /* initialize result */
+    bu_vls_trunc(gedp->ged_result_str, 0);
+
+    /* must be wanting help */
+    if (argc == 1) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_HELP;
+    }
+
+    if (argc < 3 || 6 < argc) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       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_name), argv[1]))
+           break;
+    }
+
+    if (BU_LIST_IS_HEAD(&gdvp->l, &current_top->to_gop->go_head_views.l)) {
+       bu_vls_printf(gedp->ged_result_str, "View not found - %s", argv[1]);
+       return GED_ERROR;
+    }
+
+    /* turn the argv into a ged command */
+    argv[1] = argv[0];
+    argv[0] = "view";
+
+    struct bview *btmp = gedp->ged_gvp;
+    gedp->ged_gvp = gdvp->gdv_view;
+
+    ret = ged_view_func(gedp, argc, argv);
+
+    gedp->ged_gvp = btmp;
+
+    to_refresh_view(gdvp);
+
+    if (ret == GED_ERROR)
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+
+    return ret;
+}
+
+
+/*
+ * Local Variables:
+ * mode: C
+ * tab-width: 8
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */


Property changes on: brlcad/trunk/src/libtclcad/view/lines.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Added: brlcad/trunk/src/libtclcad/view/refresh.c
===================================================================
--- brlcad/trunk/src/libtclcad/view/refresh.c                           (rev 0)
+++ brlcad/trunk/src/libtclcad/view/refresh.c   2020-07-15 01:11:01 UTC (rev 
76345)
@@ -0,0 +1,279 @@
+/*                       R E F R E S H . C
+ * BRL-CAD
+ *
+ * Copyright (c) 2000-2020 United States Government as represented by
+ * the U.S. Army Research Laboratory.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * version 2.1 as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this file; see the file named COPYING for more
+ * information.
+ */
+/** @addtogroup libtclcad */
+/** @{ */
+/** @file libtclcad/views/refresh.c
+ *
+ */
+/** @} */
+
+#include "common.h"
+#include "bu/units.h"
+#include "ged.h"
+#include "tclcad.h"
+
+/* Private headers */
+#include "../tclcad_private.h"
+#include "../view/view.h"
+
+void
+go_refresh_draw(struct ged_obj *gop, struct ged_dm_view *gdvp, int 
restore_zbuffer)
+{
+    if (gdvp->gdv_fbs.fbs_mode == TCLCAD_OBJ_FB_MODE_OVERLAY) {
+       if (gdvp->gdv_view->gv_rect.draw) {
+           go_draw(gdvp);
+
+           go_draw_other(gop, gdvp);
+
+           /* disable write to depth buffer */
+           (void)dm_set_depth_mask(gdvp->gdv_dmp, 0);
+
+           fb_refresh(gdvp->gdv_fbs.fbs_fbp,
+                      gdvp->gdv_view->gv_rect.pos[X], 
gdvp->gdv_view->gv_rect.pos[Y],
+                      gdvp->gdv_view->gv_rect.dim[X], 
gdvp->gdv_view->gv_rect.dim[Y]);
+
+           /* enable write to depth buffer */
+           (void)dm_set_depth_mask(gdvp->gdv_dmp, 1);
+
+           if (gdvp->gdv_view->gv_rect.line_width)
+               dm_draw_rect(gdvp->gdv_dmp, &gdvp->gdv_view->gv_rect);
+       } else {
+           /* disable write to depth buffer */
+           (void)dm_set_depth_mask(gdvp->gdv_dmp, 0);
+
+           fb_refresh(gdvp->gdv_fbs.fbs_fbp, 0, 0,
+                      dm_get_width(gdvp->gdv_dmp), 
dm_get_height(gdvp->gdv_dmp));
+
+           /* enable write to depth buffer */
+           (void)dm_set_depth_mask(gdvp->gdv_dmp, 1);
+       }
+
+       if (restore_zbuffer) {
+           (void)dm_set_zbuffer(gdvp->gdv_dmp, 1);
+       }
+
+       return;
+    } else if (gdvp->gdv_fbs.fbs_mode == TCLCAD_OBJ_FB_MODE_INTERLAY) {
+       go_draw(gdvp);
+
+       /* disable write to depth buffer */
+       (void)dm_set_depth_mask(gdvp->gdv_dmp, 0);
+
+       if (gdvp->gdv_view->gv_rect.draw) {
+           fb_refresh(gdvp->gdv_fbs.fbs_fbp,
+                      gdvp->gdv_view->gv_rect.pos[X], 
gdvp->gdv_view->gv_rect.pos[Y],
+                      gdvp->gdv_view->gv_rect.dim[X], 
gdvp->gdv_view->gv_rect.dim[Y]);
+       } else
+           fb_refresh(gdvp->gdv_fbs.fbs_fbp, 0, 0,
+                      dm_get_width(gdvp->gdv_dmp), 
dm_get_height(gdvp->gdv_dmp));
+
+       /* enable write to depth buffer */
+       (void)dm_set_depth_mask(gdvp->gdv_dmp, 1);
+
+       if (restore_zbuffer) {
+           (void)dm_set_zbuffer(gdvp->gdv_dmp, 1);
+       }
+    } else {
+       if (gdvp->gdv_fbs.fbs_mode == TCLCAD_OBJ_FB_MODE_UNDERLAY) {
+           /* disable write to depth buffer */
+           (void)dm_set_depth_mask(gdvp->gdv_dmp, 0);
+
+           if (gdvp->gdv_view->gv_rect.draw) {
+               fb_refresh(gdvp->gdv_fbs.fbs_fbp,
+                          gdvp->gdv_view->gv_rect.pos[X], 
gdvp->gdv_view->gv_rect.pos[Y],
+                          gdvp->gdv_view->gv_rect.dim[X], 
gdvp->gdv_view->gv_rect.dim[Y]);
+           } else
+               fb_refresh(gdvp->gdv_fbs.fbs_fbp, 0, 0,
+                          dm_get_width(gdvp->gdv_dmp), 
dm_get_height(gdvp->gdv_dmp));
+
+           /* enable write to depth buffer */
+           (void)dm_set_depth_mask(gdvp->gdv_dmp, 1);
+       }
+
+       if (restore_zbuffer) {
+           (void)dm_set_zbuffer(gdvp->gdv_dmp, 1);
+       }
+
+       go_draw(gdvp);
+    }
+
+    go_draw_other(gop, gdvp);
+}
+
+void
+go_refresh(struct ged_obj *gop, struct ged_dm_view *gdvp)
+{
+    int restore_zbuffer = 0;
+
+    /* Turn off the zbuffer if the framebuffer is active AND the zbuffer is 
on. */
+    if (gdvp->gdv_fbs.fbs_mode != TCLCAD_OBJ_FB_MODE_OFF && 
dm_get_zbuffer(gdvp->gdv_dmp)) {
+       (void)dm_set_zbuffer(gdvp->gdv_dmp, 0);
+       restore_zbuffer = 1;
+    }
+
+    (void)dm_draw_begin(gdvp->gdv_dmp);
+    go_refresh_draw(gop, gdvp, restore_zbuffer);
+    (void)dm_draw_end(gdvp->gdv_dmp);
+}
+
+void
+to_refresh_view(struct ged_dm_view *gdvp)
+{
+    if (current_top == NULL || !current_top->to_gop->go_refresh_on)
+       return;
+
+    if (to_is_viewable(gdvp))
+       go_refresh(current_top->to_gop, gdvp);
+}
+
+void
+to_refresh_all_views(struct tclcad_obj *top)
+{
+    struct ged_dm_view *gdvp;
+
+    for (BU_LIST_FOR(gdvp, ged_dm_view, &top->to_gop->go_head_views.l)) {
+       to_refresh_view(gdvp);
+    }
+}
+
+int
+to_refresh(struct ged *gedp,
+          int argc,
+          const char *argv[],
+          ged_func_ptr UNUSED(func),
+          const char *usage,
+          int UNUSED(maxargs))
+{
+    /* initialize result */
+    bu_vls_trunc(gedp->ged_result_str, 0);
+
+    /* must be wanting help */
+    if (argc == 1) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_HELP;
+    }
+
+    if (argc != 2) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+       return GED_ERROR;
+    }
+
+    return to_handle_refresh(gedp, argv[1]);
+}
+
+
+int
+to_refresh_all(struct ged *gedp,
+              int argc,
+              const char *argv[],
+              ged_func_ptr UNUSED(func),
+              const char *UNUSED(usage),
+              int UNUSED(maxargs))
+{
+    if (argc != 1) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s", argv[0]);
+       return GED_ERROR;
+    }
+
+    to_refresh_all_views(current_top);
+
+    return GED_OK;
+}
+
+
+int
+to_refresh_on(struct ged *gedp,
+             int argc,
+             const char *argv[],
+             ged_func_ptr UNUSED(func),
+             const char *UNUSED(usage),
+             int UNUSED(maxargs))
+{
+    int on;
+
+    /* initialize result */
+    bu_vls_trunc(gedp->ged_result_str, 0);
+
+    if (2 < argc) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s", argv[0]);
+       return GED_ERROR;
+    }
+
+    /* Get refresh_on state */
+    if (argc == 1) {
+       bu_vls_printf(gedp->ged_result_str, "%d", 
current_top->to_gop->go_refresh_on);
+       return GED_OK;
+    }
+
+    /* Set refresh_on state */
+    if (bu_sscanf(argv[1], "%d", &on) != 1) {
+       bu_vls_printf(gedp->ged_result_str, "Usage: %s", argv[0]);
+       return GED_ERROR;
+    }
+
+    current_top->to_gop->go_refresh_on = on;
+
+    return GED_OK;
+}
+
+int
+to_handle_refresh(struct ged *gedp,
+                 const char *name)
+{
+    struct ged_dm_view *gdvp;
+
+    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_name), name))
+           break;
+    }
+
+    if (BU_LIST_IS_HEAD(&gdvp->l, &current_top->to_gop->go_head_views.l)) {
+       bu_vls_printf(gedp->ged_result_str, "View not found - %s", name);
+       return GED_ERROR;
+    }
+
+    to_refresh_view(gdvp);
+
+    return GED_OK;
+}
+
+
+void
+to_refresh_handler(void *clientdata)
+{
+    struct ged_dm_view *gdvp = (struct ged_dm_view *)clientdata;
+
+    /* Possibly do more here */
+
+    to_refresh_view(gdvp);
+}
+
+
+
+
+/*
+ * Local Variables:
+ * mode: C
+ * tab-width: 8
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */


Property changes on: brlcad/trunk/src/libtclcad/view/refresh.c
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: svn:mime-type
## -0,0 +1 ##
+text/plain
\ No newline at end of property
Modified: brlcad/trunk/src/libtclcad/view/tclcad_views.c
===================================================================
--- brlcad/trunk/src/libtclcad/view/tclcad_views.c      2020-07-15 00:45:22 UTC 
(rev 76344)
+++ brlcad/trunk/src/libtclcad/view/tclcad_views.c      2020-07-15 01:11:01 UTC 
(rev 76345)
@@ -338,7 +338,7 @@
     return GED_OK;
 }
 
-static void
+void
 go_draw(struct ged_dm_view *gdvp)
 {
     (void)dm_loadmatrix(gdvp->gdv_dmp, gdvp->gdv_view->gv_model2view, 0);
@@ -419,35 +419,6 @@
 }
 
 static void
-go_dm_draw_lines(struct dm *dmp, struct bview_data_line_state *gdlsp)
-{
-    int saveLineWidth;
-    int saveLineStyle;
-
-    if (gdlsp->gdls_num_points < 1)
-       return;
-
-    saveLineWidth = dm_get_linewidth(dmp);
-    saveLineStyle = dm_get_linestyle(dmp);
-
-    /* set color */
-    (void)dm_set_fg(dmp,
-                   gdlsp->gdls_color[0],
-                   gdlsp->gdls_color[1],
-                   gdlsp->gdls_color[2], 1, 1.0);
-
-    /* set linewidth */
-    (void)dm_set_line_attr(dmp, gdlsp->gdls_line_width, 0);  /* solid lines */
-
-    (void)dm_draw_lines_3d(dmp,
-                          gdlsp->gdls_num_points,
-                          gdlsp->gdls_points, 0);
-
-    /* Restore the line attributes */
-    (void)dm_set_line_attr(dmp, saveLineWidth, saveLineStyle);
-}
-
-static void
 go_dm_draw_labels(struct dm *dmp, struct bview_data_label_state *gdlsp, matp_t 
m2vmat)
 {
     register int i;
@@ -468,7 +439,7 @@
     }
 }
 
-static void
+void
 go_draw_other(struct ged_obj *gop, struct ged_dm_view *gdvp)
 {
     int width = dm_get_width(gdvp->gdv_dmp);
@@ -527,126 +498,6 @@
     }
 }
 
-void
-go_refresh_draw(struct ged_obj *gop, struct ged_dm_view *gdvp, int 
restore_zbuffer)
-{
-    if (gdvp->gdv_fbs.fbs_mode == TCLCAD_OBJ_FB_MODE_OVERLAY) {
-       if (gdvp->gdv_view->gv_rect.draw) {
-           go_draw(gdvp);
-
-           go_draw_other(gop, gdvp);
-
-           /* disable write to depth buffer */
-           (void)dm_set_depth_mask(gdvp->gdv_dmp, 0);
-
-           fb_refresh(gdvp->gdv_fbs.fbs_fbp,
-                      gdvp->gdv_view->gv_rect.pos[X], 
gdvp->gdv_view->gv_rect.pos[Y],
-                      gdvp->gdv_view->gv_rect.dim[X], 
gdvp->gdv_view->gv_rect.dim[Y]);
-
-           /* enable write to depth buffer */
-           (void)dm_set_depth_mask(gdvp->gdv_dmp, 1);
-
-           if (gdvp->gdv_view->gv_rect.line_width)
-               dm_draw_rect(gdvp->gdv_dmp, &gdvp->gdv_view->gv_rect);
-       } else {
-           /* disable write to depth buffer */
-           (void)dm_set_depth_mask(gdvp->gdv_dmp, 0);
-
-           fb_refresh(gdvp->gdv_fbs.fbs_fbp, 0, 0,
-                      dm_get_width(gdvp->gdv_dmp), 
dm_get_height(gdvp->gdv_dmp));
-
-           /* enable write to depth buffer */
-           (void)dm_set_depth_mask(gdvp->gdv_dmp, 1);
-       }
-
-       if (restore_zbuffer) {
-           (void)dm_set_zbuffer(gdvp->gdv_dmp, 1);
-       }
-
-       return;
-    } else if (gdvp->gdv_fbs.fbs_mode == TCLCAD_OBJ_FB_MODE_INTERLAY) {
-       go_draw(gdvp);
-
-       /* disable write to depth buffer */
-       (void)dm_set_depth_mask(gdvp->gdv_dmp, 0);
-
-       if (gdvp->gdv_view->gv_rect.draw) {
-           fb_refresh(gdvp->gdv_fbs.fbs_fbp,
-                      gdvp->gdv_view->gv_rect.pos[X], 
gdvp->gdv_view->gv_rect.pos[Y],
-                      gdvp->gdv_view->gv_rect.dim[X], 
gdvp->gdv_view->gv_rect.dim[Y]);
-       } else
-           fb_refresh(gdvp->gdv_fbs.fbs_fbp, 0, 0,
-                      dm_get_width(gdvp->gdv_dmp), 
dm_get_height(gdvp->gdv_dmp));
-
-       /* enable write to depth buffer */
-       (void)dm_set_depth_mask(gdvp->gdv_dmp, 1);
-
-       if (restore_zbuffer) {
-           (void)dm_set_zbuffer(gdvp->gdv_dmp, 1);
-       }
-    } else {
-       if (gdvp->gdv_fbs.fbs_mode == TCLCAD_OBJ_FB_MODE_UNDERLAY) {
-           /* disable write to depth buffer */
-           (void)dm_set_depth_mask(gdvp->gdv_dmp, 0);
-
-           if (gdvp->gdv_view->gv_rect.draw) {
-               fb_refresh(gdvp->gdv_fbs.fbs_fbp,
-                          gdvp->gdv_view->gv_rect.pos[X], 
gdvp->gdv_view->gv_rect.pos[Y],
-                          gdvp->gdv_view->gv_rect.dim[X], 
gdvp->gdv_view->gv_rect.dim[Y]);
-           } else
-               fb_refresh(gdvp->gdv_fbs.fbs_fbp, 0, 0,
-                          dm_get_width(gdvp->gdv_dmp), 
dm_get_height(gdvp->gdv_dmp));
-
-           /* enable write to depth buffer */
-           (void)dm_set_depth_mask(gdvp->gdv_dmp, 1);
-       }
-
-       if (restore_zbuffer) {
-           (void)dm_set_zbuffer(gdvp->gdv_dmp, 1);
-       }
-
-       go_draw(gdvp);
-    }
-
-    go_draw_other(gop, gdvp);
-}
-
-void
-go_refresh(struct ged_obj *gop, struct ged_dm_view *gdvp)
-{
-    int restore_zbuffer = 0;
-
-    /* Turn off the zbuffer if the framebuffer is active AND the zbuffer is 
on. */
-    if (gdvp->gdv_fbs.fbs_mode != TCLCAD_OBJ_FB_MODE_OFF && 
dm_get_zbuffer(gdvp->gdv_dmp)) {
-       (void)dm_set_zbuffer(gdvp->gdv_dmp, 0);
-       restore_zbuffer = 1;
-    }
-
-    (void)dm_draw_begin(gdvp->gdv_dmp);
-    go_refresh_draw(gop, gdvp, restore_zbuffer);
-    (void)dm_draw_end(gdvp->gdv_dmp);
-}
-
-void
-to_refresh_view(struct ged_dm_view *gdvp)
-{
-    if (current_top == NULL || !current_top->to_gop->go_refresh_on)
-       return;
-
-    if (to_is_viewable(gdvp))
-       go_refresh(current_top->to_gop, gdvp);
-}
-
-void
-to_refresh_all_views(struct tclcad_obj *top)
-{
-    struct ged_dm_view *gdvp;
-
-    for (BU_LIST_FOR(gdvp, ged_dm_view, &top->to_gop->go_head_views.l)) {
-       to_refresh_view(gdvp);
-    }
-}
-
 /*
  * Local Variables:
  * mode: C

Modified: brlcad/trunk/src/libtclcad/view/view.h
===================================================================
--- brlcad/trunk/src/libtclcad/view/view.h      2020-07-15 00:45:22 UTC (rev 
76344)
+++ brlcad/trunk/src/libtclcad/view/view.h      2020-07-15 01:11:01 UTC (rev 
76345)
@@ -42,6 +42,17 @@
                               int argc,
                               const char *argv[]);
 
+/* Autoview */
+extern void to_autoview_view(struct ged_dm_view *gdvp, const char *scale);
+extern void to_autoview_all_views(struct tclcad_obj *top);
+extern int to_autoview_func(struct ged *gedp,
+                           int argc,
+                           const char *argv[],
+                           ged_func_ptr func,
+                           const char *usage,
+                           int maxargs);
+
+
 /* Axes */
 extern int to_axes(struct ged *gedp,
                   struct ged_dm_view *gdvp,
@@ -74,6 +85,40 @@
                        int maxargs);
 
 
+/* Lines */
+void go_dm_draw_lines(struct dm *dmp, struct bview_data_line_state *gdlsp);
+int to_data_lines(struct ged *gedp,
+                        int argc,
+                        const char *argv[],
+                        ged_func_ptr func,
+                        const char *usage,
+                        int maxargs);
+
+/* Refresh */
+extern void to_refresh_handler(void *clientdata);
+extern int to_handle_refresh(struct ged *gedp,
+                            const char *name);
+extern int to_refresh(struct ged *gedp,
+                     int argc,
+                     const char *argv[],
+                     ged_func_ptr func,
+                     const char *usage,
+                     int maxargs);
+extern int to_refresh_all(struct ged *gedp,
+                         int argc,
+                         const char *argv[],
+                         ged_func_ptr func,
+                         const char *usage,
+                         int maxargs);
+extern int to_refresh_on(struct ged *gedp,
+                        int argc,
+                        const char *argv[],
+                        ged_func_ptr func,
+                        const char *usage,
+                        int maxargs);
+extern void to_refresh_all_views(struct tclcad_obj *top);
+extern void to_refresh_view(struct ged_dm_view *gdvp);
+
 /*
  * Local Variables:
  * tab-width: 8

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