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,
¤t_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, ¤t_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,
¤t_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, ¤t_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(¤t_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,
¤t_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, ¤t_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,
¤t_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, ¤t_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