Revision: 76344
http://sourceforge.net/p/brlcad/code/76344
Author: starseeker
Date: 2020-07-15 00:45:22 +0000 (Wed, 15 Jul 2020)
Log Message:
-----------
Break down view logic more specifically.
Modified Paths:
--------------
brlcad/trunk/src/libtclcad/CMakeLists.txt
brlcad/trunk/src/libtclcad/tclcad_obj.c
brlcad/trunk/src/libtclcad/view/tclcad_views.c
Added Paths:
-----------
brlcad/trunk/src/libtclcad/view/arrows.c
brlcad/trunk/src/libtclcad/view/autoview.c
brlcad/trunk/src/libtclcad/view/axes.c
brlcad/trunk/src/libtclcad/view/view.h
Modified: brlcad/trunk/src/libtclcad/CMakeLists.txt
===================================================================
--- brlcad/trunk/src/libtclcad/CMakeLists.txt 2020-07-15 00:24:11 UTC (rev
76343)
+++ brlcad/trunk/src/libtclcad/CMakeLists.txt 2020-07-15 00:45:22 UTC (rev
76344)
@@ -15,6 +15,9 @@
tclcad_obj_wrapper.c
tclcad_polygons.c
view/tclcad_views.c
+ view/arrows.c
+ view/autoview.c
+ view/axes.c
tkImgFmtPIX.c
)
Modified: brlcad/trunk/src/libtclcad/tclcad_obj.c
===================================================================
--- brlcad/trunk/src/libtclcad/tclcad_obj.c 2020-07-15 00:24:11 UTC (rev
76343)
+++ brlcad/trunk/src/libtclcad/tclcad_obj.c 2020-07-15 00:45:22 UTC (rev
76344)
@@ -84,6 +84,7 @@
/* Private headers */
#include "tclcad_private.h"
+#include "./view/view.h"
#include "brlcad_version.h"
@@ -94,12 +95,6 @@
ged_func_ptr func,
const char *usage,
int maxargs);
-HIDDEN int to_axes(struct ged *gedp,
- struct ged_dm_view *gdvp,
- struct bview_axes_state *gasp,
- int argc,
- const char *argv[],
- const char *usage);
HIDDEN int to_base2local(struct ged *gedp,
int argc,
const char *argv[],
@@ -148,28 +143,6 @@
ged_func_ptr func,
const char *usage,
int maxargs);
-HIDDEN int to_data_arrows(struct ged *gedp,
- int argc,
- const char *argv[],
- ged_func_ptr func,
- const char *usage,
- int maxargs);
-HIDDEN int to_data_arrows_func(Tcl_Interp *interp,
- struct ged *gedp,
- struct ged_dm_view *gdvp,
- int argc,
- const char *argv[]);
-HIDDEN int to_data_axes(struct ged *gedp,
- int argc,
- const char *argv[],
- ged_func_ptr func,
- const char *usage,
- int maxargs);
-HIDDEN int to_data_axes_func(Tcl_Interp *interp,
- struct ged *gedp,
- struct ged_dm_view *gdvp,
- int argc,
- const char *argv[]);
HIDDEN int to_data_labels(struct ged *gedp,
int argc,
const char *argv[],
@@ -342,12 +315,6 @@
ged_func_ptr func,
const char *usage,
int maxargs);
-HIDDEN int to_model_axes(struct ged *gedp,
- int argc,
- const char *argv[],
- ged_func_ptr func,
- const char *usage,
- int maxargs);
HIDDEN int to_edit_motion_delta_callback(struct ged *gedp,
int argc,
const char *argv[],
@@ -584,12 +551,6 @@
ged_func_ptr func,
const char *usage,
int maxargs);
-HIDDEN int to_view_axes(struct ged *gedp,
- int argc,
- const char *argv[],
- ged_func_ptr func,
- const char *usage,
- int maxargs);
HIDDEN int to_view_callback(struct ged *gedp,
int argc,
const char *argv[],
@@ -1537,417 +1498,7 @@
return GED_OK;
}
-
HIDDEN int
-to_axes(struct ged *gedp,
- struct ged_dm_view *gdvp,
- struct bview_axes_state *gasp,
- int argc,
- const char *argv[],
- const char *usage)
-{
-
- if (BU_STR_EQUAL(argv[2], "draw")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d", gasp->draw);
- return GED_OK;
- }
-
- if (argc == 4) {
- int i;
-
- if (bu_sscanf(argv[3], "%d", &i) != 1)
- goto bad;
-
- if (i)
- gasp->draw = 1;
- else
- gasp->draw = 0;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "axes_size")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%lf", gasp->axes_size);
- return GED_OK;
- }
-
- if (argc == 4) {
- double size; /* must be double for scanf */
-
- if (bu_sscanf(argv[3], "%lf", &size) != 1)
- goto bad;
-
- gasp->axes_size = size;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "axes_pos")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%lf %lf %lf",
- V3ARGS(gasp->axes_pos));
- return GED_OK;
- }
-
- if (argc == 6) {
- double x, y, z; /* must be double for scanf */
-
- if (bu_sscanf(argv[3], "%lf", &x) != 1 ||
- bu_sscanf(argv[4], "%lf", &y) != 1 ||
- bu_sscanf(argv[5], "%lf", &z) != 1)
- goto bad;
-
- VSET(gasp->axes_pos, x, y, z);
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "axes_color")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d %d %d",
- V3ARGS(gasp->axes_color));
- return GED_OK;
- }
-
- if (argc == 6) {
- int r, g, b;
-
- /* set background color */
- if (bu_sscanf(argv[3], "%d", &r) != 1 ||
- bu_sscanf(argv[4], "%d", &g) != 1 ||
- bu_sscanf(argv[5], "%d", &b) != 1)
- goto bad;
-
- /* validate color */
- if (r < 0 || 255 < r ||
- g < 0 || 255 < g ||
- b < 0 || 255 < b)
- goto bad;
-
- VSET(gasp->axes_color, r, g, b);
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "label_color")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d %d %d",
- V3ARGS(gasp->label_color));
- return GED_OK;
- }
-
- if (argc == 6) {
- int r, g, b;
-
- /* set background color */
- if (bu_sscanf(argv[3], "%d", &r) != 1 ||
- bu_sscanf(argv[4], "%d", &g) != 1 ||
- bu_sscanf(argv[5], "%d", &b) != 1)
- goto bad;
-
- /* validate color */
- if (r < 0 || 255 < r ||
- g < 0 || 255 < g ||
- b < 0 || 255 < b)
- goto bad;
-
- VSET(gasp->label_color, r, g, b);
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "line_width")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d", gasp->line_width);
- return GED_OK;
- }
-
- if (argc == 4) {
- int line_width;
-
- if (bu_sscanf(argv[3], "%d", &line_width) != 1)
- goto bad;
-
- gasp->line_width = line_width;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "pos_only")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d", gasp->pos_only);
- return GED_OK;
- }
-
- if (argc == 4) {
- int i;
-
- if (bu_sscanf(argv[3], "%d", &i) != 1)
- goto bad;
-
- if (i)
- gasp->pos_only = 1;
- else
- gasp->pos_only = 0;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "tick_color")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d %d %d",
- V3ARGS(gasp->tick_color));
- return GED_OK;
- }
-
- if (argc == 6) {
- int r, g, b;
-
- /* set background color */
- if (bu_sscanf(argv[3], "%d", &r) != 1 ||
- bu_sscanf(argv[4], "%d", &g) != 1 ||
- bu_sscanf(argv[5], "%d", &b) != 1)
- goto bad;
-
- /* validate color */
- if (r < 0 || 255 < r ||
- g < 0 || 255 < g ||
- b < 0 || 255 < b)
- goto bad;
-
- VSET(gasp->tick_color, r, g, b);
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "tick_enable")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d", gasp->tick_enabled);
- return GED_OK;
- }
-
- if (argc == 4) {
- int i;
-
- if (bu_sscanf(argv[3], "%d", &i) != 1)
- goto bad;
-
- if (i)
- gasp->tick_enabled = 1;
- else
- gasp->tick_enabled = 0;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "tick_interval")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%f", gasp->tick_interval);
- return GED_OK;
- }
-
- if (argc == 4) {
- int tick_interval;
-
- if (bu_sscanf(argv[3], "%d", &tick_interval) != 1)
- goto bad;
-
- gasp->tick_interval = tick_interval;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "tick_length")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d", gasp->tick_length);
- return GED_OK;
- }
-
- if (argc == 4) {
- int tick_length;
-
- if (bu_sscanf(argv[3], "%d", &tick_length) != 1)
- goto bad;
-
- gasp->tick_length = tick_length;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "tick_major_color")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d %d %d",
- V3ARGS(gasp->tick_major_color));
- return GED_OK;
- }
-
- if (argc == 6) {
- int r, g, b;
-
- /* set background color */
- if (bu_sscanf(argv[3], "%d", &r) != 1 ||
- bu_sscanf(argv[4], "%d", &g) != 1 ||
- bu_sscanf(argv[5], "%d", &b) != 1)
- goto bad;
-
- /* validate color */
- if (r < 0 || 255 < r ||
- g < 0 || 255 < g ||
- b < 0 || 255 < b)
- goto bad;
-
- VSET(gasp->tick_major_color, r, g, b);
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "tick_major_length")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d", gasp->tick_major_length);
- return GED_OK;
- }
-
- if (argc == 4) {
- int tick_major_length;
-
- if (bu_sscanf(argv[3], "%d", &tick_major_length) != 1)
- goto bad;
-
- gasp->tick_major_length = tick_major_length;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "ticks_per_major")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d", gasp->ticks_per_major);
- return GED_OK;
- }
-
- if (argc == 4) {
- int ticks_per_major;
-
- if (bu_sscanf(argv[3], "%d", &ticks_per_major) != 1)
- goto bad;
-
- gasp->ticks_per_major = ticks_per_major;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "tick_threshold")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d", gasp->tick_threshold);
- return GED_OK;
- }
-
- if (argc == 4) {
- int tick_threshold;
-
- if (bu_sscanf(argv[3], "%d", &tick_threshold) != 1)
- goto bad;
-
- if (tick_threshold < 1)
- tick_threshold = 1;
-
- gasp->tick_threshold = tick_threshold;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[2], "triple_color")) {
- if (argc == 3) {
- bu_vls_printf(gedp->ged_result_str, "%d", gasp->triple_color);
- return GED_OK;
- }
-
- if (argc == 4) {
- int i;
-
- if (bu_sscanf(argv[3], "%d", &i) != 1)
- goto bad;
-
- if (i)
- gasp->triple_color = 1;
- else
- gasp->triple_color = 0;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
-bad:
- bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
- return GED_ERROR;
-}
-
-
-HIDDEN int
to_base2local(struct ged *gedp,
int UNUSED(argc),
const char *UNUSED(argv[]),
@@ -2461,547 +2012,7 @@
return ret;
}
-
int
-go_data_arrows(Tcl_Interp *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;
-
- ret = to_data_arrows_func(interp, gedp, gdvp, argc, argv);
- if (ret == GED_ERROR)
- bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-
- return ret;
-}
-
-
-HIDDEN int
-to_data_arrows(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;
- }
-
- /* shift the command name to argv[1] before calling to_data_arrows_func */
- argv[1] = argv[0];
- ret = to_data_arrows_func(current_top->to_interp, gedp, gdvp, argc-1,
argv+1);
- if (ret == GED_ERROR)
- bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-
- return ret;
-}
-
-
-HIDDEN int
-to_data_arrows_func(Tcl_Interp *interp,
- struct ged *gedp,
- struct ged_dm_view *gdvp,
- int argc,
- const char *argv[])
-{
- struct bview_data_arrow_state *gdasp;
-
- if (argv[0][0] == 's')
- gdasp = &gdvp->gdv_view->gv_sdata_arrows;
- else
- gdasp = &gdvp->gdv_view->gv_data_arrows;
-
- if (BU_STR_EQUAL(argv[1], "draw")) {
- if (argc == 2) {
- bu_vls_printf(gedp->ged_result_str, "%d", gdasp->gdas_draw);
- return GED_OK;
- }
-
- if (argc == 3) {
- int i;
-
- if (bu_sscanf(argv[2], "%d", &i) != 1)
- goto bad;
-
- if (i)
- gdasp->gdas_draw = 1;
- else
- gdasp->gdas_draw = 0;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[1], "color")) {
- if (argc == 2) {
- bu_vls_printf(gedp->ged_result_str, "%d %d %d",
- V3ARGS(gdasp->gdas_color));
- return GED_OK;
- }
-
- if (argc == 5) {
- int r, g, b;
-
- /* set background color */
- if (bu_sscanf(argv[2], "%d", &r) != 1 ||
- bu_sscanf(argv[3], "%d", &g) != 1 ||
- bu_sscanf(argv[4], "%d", &b) != 1)
- goto bad;
-
- /* validate color */
- if (r < 0 || 255 < r ||
- g < 0 || 255 < g ||
- b < 0 || 255 < b)
- goto bad;
-
- VSET(gdasp->gdas_color, r, g, b);
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[1], "line_width")) {
- if (argc == 2) {
- bu_vls_printf(gedp->ged_result_str, "%d", gdasp->gdas_line_width);
- return GED_OK;
- }
-
- if (argc == 3) {
- int line_width;
-
- if (bu_sscanf(argv[2], "%d", &line_width) != 1)
- goto bad;
-
- gdasp->gdas_line_width = line_width;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[1], "points")) {
- register int i;
-
- if (argc == 2) {
- for (i = 0; i < gdasp->gdas_num_points; ++i) {
- bu_vls_printf(gedp->ged_result_str, " {%lf %lf %lf} ",
- V3ARGS(gdasp->gdas_points[i]));
- }
- return GED_OK;
- }
-
- if (argc == 3) {
- int ac;
- const char **av;
-
- if (Tcl_SplitList(interp, argv[2], &ac, &av) != TCL_OK) {
- bu_vls_printf(gedp->ged_result_str, "%s",
Tcl_GetStringResult(interp));
- return GED_ERROR;
- }
-
- if (ac % 2) {
- bu_vls_printf(gedp->ged_result_str, "%s: must be an even number
of points", argv[0]);
- return GED_ERROR;
- }
-
- if (gdasp->gdas_num_points) {
- bu_free((void *)gdasp->gdas_points, "data points");
- gdasp->gdas_points = (point_t *)0;
- gdasp->gdas_num_points = 0;
- }
-
- /* Clear out data points */
- if (ac < 1) {
- to_refresh_view(gdvp);
- Tcl_Free((char *)av);
- return GED_OK;
- }
-
- gdasp->gdas_num_points = ac;
- gdasp->gdas_points = (point_t *)bu_calloc(ac, sizeof(point_t),
"data points");
- for (i = 0; i < ac; ++i) {
- double scan[ELEMENTS_PER_VECT];
-
- if (bu_sscanf(av[i], "%lf %lf %lf", &scan[X], &scan[Y],
&scan[Z]) != 3) {
-
- bu_vls_printf(gedp->ged_result_str, "bad data point -
%s\n", av[i]);
-
- bu_free((void *)gdasp->gdas_points, "data points");
- gdasp->gdas_points = (point_t *)0;
- gdasp->gdas_num_points = 0;
-
- to_refresh_view(gdvp);
- Tcl_Free((char *)av);
- return GED_ERROR;
- }
- /* convert double to fastf_t */
- VMOVE(gdasp->gdas_points[i], scan);
- }
-
- to_refresh_view(gdvp);
- Tcl_Free((char *)av);
- return GED_OK;
- }
- }
-
- if (BU_STR_EQUAL(argv[1], "tip_length")) {
- if (argc == 2) {
- bu_vls_printf(gedp->ged_result_str, "%d", gdasp->gdas_tip_length);
- return GED_OK;
- }
-
- if (argc == 3) {
- int tip_length;
-
- if (bu_sscanf(argv[2], "%d", &tip_length) != 1)
- goto bad;
-
- gdasp->gdas_tip_length = tip_length;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[1], "tip_width")) {
- if (argc == 2) {
- bu_vls_printf(gedp->ged_result_str, "%d", gdasp->gdas_tip_width);
- return GED_OK;
- }
-
- if (argc == 3) {
- int tip_width;
-
- if (bu_sscanf(argv[2], "%d", &tip_width) != 1)
- goto bad;
-
- gdasp->gdas_tip_width = tip_width;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
-bad:
- return GED_ERROR;
-}
-
-
-int
-go_data_axes(Tcl_Interp *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;
-
- ret = to_data_axes_func(interp, gedp, gdvp, argc, argv);
- if (ret == GED_ERROR)
- bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-
- return ret;
-}
-
-
-HIDDEN int
-to_data_axes(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;
- }
-
- /* shift the command name to argv[1] before calling to_data_axes_func */
- argv[1] = argv[0];
- ret = to_data_axes_func(current_top->to_interp, gedp, gdvp, argc-1,
argv+1);
- if (ret == GED_ERROR)
- bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
-
- return ret;
-}
-
-
-HIDDEN int
-to_data_axes_func(Tcl_Interp *interp,
- struct ged *gedp,
- struct ged_dm_view *gdvp,
- int argc,
- const char *argv[])
-{
- struct bview_data_axes_state *gdasp;
-
- if (argv[0][0] == 's')
- gdasp = &gdvp->gdv_view->gv_sdata_axes;
- else
- gdasp = &gdvp->gdv_view->gv_data_axes;
-
- if (BU_STR_EQUAL(argv[1], "draw")) {
- if (argc == 2) {
- bu_vls_printf(gedp->ged_result_str, "%d", gdasp->draw);
- return GED_OK;
- }
-
- if (argc == 3) {
- int i;
-
- if (bu_sscanf(argv[2], "%d", &i) != 1)
- goto bad;
-
- if (0 <= i && i <= 2)
- gdasp->draw = i;
- else
- gdasp->draw = 0;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[1], "color")) {
- if (argc == 2) {
- bu_vls_printf(gedp->ged_result_str, "%d %d %d",
- V3ARGS(gdasp->color));
- return GED_OK;
- }
-
- if (argc == 5) {
- int r, g, b;
-
- /* set background color */
- if (bu_sscanf(argv[2], "%d", &r) != 1 ||
- bu_sscanf(argv[3], "%d", &g) != 1 ||
- bu_sscanf(argv[4], "%d", &b) != 1)
- goto bad;
-
- /* validate color */
- if (r < 0 || 255 < r ||
- g < 0 || 255 < g ||
- b < 0 || 255 < b)
- goto bad;
-
- VSET(gdasp->color, r, g, b);
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[1], "line_width")) {
- if (argc == 2) {
- bu_vls_printf(gedp->ged_result_str, "%d", gdasp->line_width);
- return GED_OK;
- }
-
- if (argc == 3) {
- int line_width;
-
- if (bu_sscanf(argv[2], "%d", &line_width) != 1)
- goto bad;
-
- gdasp->line_width = line_width;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[1], "size")) {
- if (argc == 2) {
- bu_vls_printf(gedp->ged_result_str, "%lf", gdasp->size);
- return GED_OK;
- }
-
- if (argc == 3) {
- double size; /* must be double for scanf */
-
- if (bu_sscanf(argv[2], "%lf", &size) != 1)
- goto bad;
-
- gdasp->size = size;
-
- to_refresh_view(gdvp);
- return GED_OK;
- }
-
- goto bad;
- }
-
- if (BU_STR_EQUAL(argv[1], "points")) {
- register int i;
-
- if (argc == 2) {
- for (i = 0; i < gdasp->num_points; ++i) {
- bu_vls_printf(gedp->ged_result_str, " {%lf %lf %lf} ",
- V3ARGS(gdasp->points[i]));
- }
- return GED_OK;
- }
-
- if (argc == 3) {
- int ac;
- const char **av;
-
- if (Tcl_SplitList(interp, argv[2], &ac, &av) != TCL_OK) {
- bu_vls_printf(gedp->ged_result_str, "%s",
Tcl_GetStringResult(interp));
- return GED_ERROR;
- }
-
- if (gdasp->num_points) {
- bu_free((void *)gdasp->points, "data points");
- gdasp->points = (point_t *)0;
- gdasp->num_points = 0;
- }
-
- /* Clear out data points */
- if (ac < 1) {
- to_refresh_view(gdvp);
- Tcl_Free((char *)av);
- return GED_OK;
- }
-
- gdasp->num_points = ac;
- gdasp->points = (point_t *)bu_calloc(ac, sizeof(point_t), "data
points");
- for (i = 0; i < ac; ++i) {
- double scan[3];
-
- if (bu_sscanf(av[i], "%lf %lf %lf", &scan[X], &scan[Y],
&scan[Z]) != 3) {
- bu_vls_printf(gedp->ged_result_str, "bad data point -
%s\n", av[i]);
-
- bu_free((void *)gdasp->points, "data points");
- gdasp->points = (point_t *)0;
- gdasp->num_points = 0;
-
- to_refresh_view(gdvp);
- Tcl_Free((char *)av);
- return GED_ERROR;
- }
- /* convert double to fastf_t */
- VMOVE(gdasp->points[i], scan);
- }
-
- to_refresh_view(gdvp);
- Tcl_Free((char *)av);
- return GED_OK;
- }
- }
-
-bad:
- return GED_ERROR;
-}
-
-
-int
go_data_labels(Tcl_Interp *interp,
struct ged *gedp,
struct ged_dm_view *gdvp,
@@ -5689,44 +4700,7 @@
}
-HIDDEN int
-to_model_axes(struct ged *gedp,
- int argc,
- const char *argv[],
- ged_func_ptr UNUSED(func),
- const char *usage,
- int UNUSED(maxargs))
-{
- struct ged_dm_view *gdvp;
- /* 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;
- }
-
- return to_axes(gedp, gdvp, &gdvp->gdv_view->gv_model_axes, argc, argv,
usage);
-}
-
-
HIDDEN int
to_edit_motion_delta_callback(struct ged *gedp,
int argc,
@@ -8042,70 +7016,8 @@
}
-int
-go_view_axes(struct ged_obj *gop,
- struct ged_dm_view *gdvp,
- int argc,
- const char *argv[],
- const char *usage)
-{
- /* initialize result */
- bu_vls_trunc(gop->go_gedp->ged_result_str, 0);
- /* must be wanting help */
- if (argc == 1) {
- bu_vls_printf(gop->go_gedp->ged_result_str, "Usage: %s %s", argv[0],
usage);
- return GED_HELP;
- }
-
- if (argc < 3 || 6 < argc) {
- bu_vls_printf(gop->go_gedp->ged_result_str, "Usage: %s %s", argv[0],
usage);
- return GED_ERROR;
- }
-
- return to_axes(gop->go_gedp, gdvp, &gdvp->gdv_view->gv_view_axes, argc,
argv, usage);
-}
-
-
HIDDEN int
-to_view_axes(struct ged *gedp,
- int argc,
- const char *argv[],
- ged_func_ptr UNUSED(func),
- const char *usage,
- int UNUSED(maxargs))
-{
- struct ged_dm_view *gdvp;
-
- /* 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;
- }
-
- return to_axes(gedp, gdvp, &gdvp->gdv_view->gv_view_axes, argc, argv,
usage);
-}
-
-
-HIDDEN int
to_view_callback(struct ged *gedp,
int argc,
const char *argv[],
Added: brlcad/trunk/src/libtclcad/view/arrows.c
===================================================================
--- brlcad/trunk/src/libtclcad/view/arrows.c (rev 0)
+++ brlcad/trunk/src/libtclcad/view/arrows.c 2020-07-15 00:45:22 UTC (rev
76344)
@@ -0,0 +1,408 @@
+/* A R R O W 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/arrows.c
+ *
+ */
+/** @} */
+
+#include "common.h"
+#include "bu/units.h"
+#include "ged.h"
+#include "tclcad.h"
+
+/* Private headers */
+#include "../tclcad_private.h"
+#include "../view/view.h"
+
+int
+go_data_arrows(Tcl_Interp *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;
+
+ ret = to_data_arrows_func(interp, gedp, gdvp, argc, argv);
+ if (ret == GED_ERROR)
+ bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+
+ return ret;
+}
+
+
+int
+to_data_arrows(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;
+ }
+
+ /* shift the command name to argv[1] before calling to_data_arrows_func */
+ argv[1] = argv[0];
+ ret = to_data_arrows_func(current_top->to_interp, gedp, gdvp, argc-1,
argv+1);
+ if (ret == GED_ERROR)
+ bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+
+ return ret;
+}
+
+
+int
+to_data_arrows_func(Tcl_Interp *interp,
+ struct ged *gedp,
+ struct ged_dm_view *gdvp,
+ int argc,
+ const char *argv[])
+{
+ struct bview_data_arrow_state *gdasp;
+
+ if (argv[0][0] == 's')
+ gdasp = &gdvp->gdv_view->gv_sdata_arrows;
+ else
+ gdasp = &gdvp->gdv_view->gv_data_arrows;
+
+ if (BU_STR_EQUAL(argv[1], "draw")) {
+ if (argc == 2) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gdasp->gdas_draw);
+ return GED_OK;
+ }
+
+ if (argc == 3) {
+ int i;
+
+ if (bu_sscanf(argv[2], "%d", &i) != 1)
+ goto bad;
+
+ if (i)
+ gdasp->gdas_draw = 1;
+ else
+ gdasp->gdas_draw = 0;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[1], "color")) {
+ if (argc == 2) {
+ bu_vls_printf(gedp->ged_result_str, "%d %d %d",
+ V3ARGS(gdasp->gdas_color));
+ return GED_OK;
+ }
+
+ if (argc == 5) {
+ int r, g, b;
+
+ /* set background color */
+ if (bu_sscanf(argv[2], "%d", &r) != 1 ||
+ bu_sscanf(argv[3], "%d", &g) != 1 ||
+ bu_sscanf(argv[4], "%d", &b) != 1)
+ goto bad;
+
+ /* validate color */
+ if (r < 0 || 255 < r ||
+ g < 0 || 255 < g ||
+ b < 0 || 255 < b)
+ goto bad;
+
+ VSET(gdasp->gdas_color, r, g, b);
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[1], "line_width")) {
+ if (argc == 2) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gdasp->gdas_line_width);
+ return GED_OK;
+ }
+
+ if (argc == 3) {
+ int line_width;
+
+ if (bu_sscanf(argv[2], "%d", &line_width) != 1)
+ goto bad;
+
+ gdasp->gdas_line_width = line_width;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[1], "points")) {
+ register int i;
+
+ if (argc == 2) {
+ for (i = 0; i < gdasp->gdas_num_points; ++i) {
+ bu_vls_printf(gedp->ged_result_str, " {%lf %lf %lf} ",
+ V3ARGS(gdasp->gdas_points[i]));
+ }
+ return GED_OK;
+ }
+
+ if (argc == 3) {
+ int ac;
+ const char **av;
+
+ if (Tcl_SplitList(interp, argv[2], &ac, &av) != TCL_OK) {
+ bu_vls_printf(gedp->ged_result_str, "%s",
Tcl_GetStringResult(interp));
+ return GED_ERROR;
+ }
+
+ if (ac % 2) {
+ bu_vls_printf(gedp->ged_result_str, "%s: must be an even number
of points", argv[0]);
+ return GED_ERROR;
+ }
+
+ if (gdasp->gdas_num_points) {
+ bu_free((void *)gdasp->gdas_points, "data points");
+ gdasp->gdas_points = (point_t *)0;
+ gdasp->gdas_num_points = 0;
+ }
+
+ /* Clear out data points */
+ if (ac < 1) {
+ to_refresh_view(gdvp);
+ Tcl_Free((char *)av);
+ return GED_OK;
+ }
+
+ gdasp->gdas_num_points = ac;
+ gdasp->gdas_points = (point_t *)bu_calloc(ac, sizeof(point_t),
"data points");
+ for (i = 0; i < ac; ++i) {
+ double scan[ELEMENTS_PER_VECT];
+
+ if (bu_sscanf(av[i], "%lf %lf %lf", &scan[X], &scan[Y],
&scan[Z]) != 3) {
+
+ bu_vls_printf(gedp->ged_result_str, "bad data point -
%s\n", av[i]);
+
+ bu_free((void *)gdasp->gdas_points, "data points");
+ gdasp->gdas_points = (point_t *)0;
+ gdasp->gdas_num_points = 0;
+
+ to_refresh_view(gdvp);
+ Tcl_Free((char *)av);
+ return GED_ERROR;
+ }
+ /* convert double to fastf_t */
+ VMOVE(gdasp->gdas_points[i], scan);
+ }
+
+ to_refresh_view(gdvp);
+ Tcl_Free((char *)av);
+ return GED_OK;
+ }
+ }
+
+ if (BU_STR_EQUAL(argv[1], "tip_length")) {
+ if (argc == 2) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gdasp->gdas_tip_length);
+ return GED_OK;
+ }
+
+ if (argc == 3) {
+ int tip_length;
+
+ if (bu_sscanf(argv[2], "%d", &tip_length) != 1)
+ goto bad;
+
+ gdasp->gdas_tip_length = tip_length;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[1], "tip_width")) {
+ if (argc == 2) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gdasp->gdas_tip_width);
+ return GED_OK;
+ }
+
+ if (argc == 3) {
+ int tip_width;
+
+ if (bu_sscanf(argv[2], "%d", &tip_width) != 1)
+ goto bad;
+
+ gdasp->gdas_tip_width = tip_width;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+bad:
+ return GED_ERROR;
+}
+
+
+void
+go_dm_draw_arrows(struct dm *dmp, struct bview_data_arrow_state *gdasp,
fastf_t sf)
+{
+ register int i;
+ int saveLineWidth;
+ int saveLineStyle;
+
+ if (gdasp->gdas_num_points < 1)
+ return;
+
+ saveLineWidth = dm_get_linewidth(dmp);
+ saveLineStyle = dm_get_linestyle(dmp);
+
+ /* set color */
+ (void)dm_set_fg(dmp,
+ gdasp->gdas_color[0],
+ gdasp->gdas_color[1],
+ gdasp->gdas_color[2], 1, 1.0);
+
+ /* set linewidth */
+ (void)dm_set_line_attr(dmp, gdasp->gdas_line_width, 0); /* solid lines */
+
+ (void)dm_draw_lines_3d(dmp,
+ gdasp->gdas_num_points,
+ gdasp->gdas_points, 0);
+
+ for (i = 0; i < gdasp->gdas_num_points; i += 2) {
+ point_t points[16];
+ point_t A, B;
+ point_t BmA;
+ point_t offset;
+ point_t perp1, perp2;
+ point_t a_base;
+ point_t a_pt1, a_pt2, a_pt3, a_pt4;
+
+ VMOVE(A, gdasp->gdas_points[i]);
+ VMOVE(B, gdasp->gdas_points[i+1]);
+ VSUB2(BmA, B, A);
+
+ VUNITIZE(BmA);
+ VSCALE(offset, BmA, -gdasp->gdas_tip_length * sf);
+
+ bn_vec_perp(perp1, BmA);
+ VUNITIZE(perp1);
+
+ VCROSS(perp2, BmA, perp1);
+ VUNITIZE(perp2);
+
+ VSCALE(perp1, perp1, gdasp->gdas_tip_width * sf);
+ VSCALE(perp2, perp2, gdasp->gdas_tip_width * sf);
+
+ VADD2(a_base, B, offset);
+ VADD2(a_pt1, a_base, perp1);
+ VADD2(a_pt2, a_base, perp2);
+ VSUB2(a_pt3, a_base, perp1);
+ VSUB2(a_pt4, a_base, perp2);
+
+ VMOVE(points[0], B);
+ VMOVE(points[1], a_pt1);
+ VMOVE(points[2], B);
+ VMOVE(points[3], a_pt2);
+ VMOVE(points[4], B);
+ VMOVE(points[5], a_pt3);
+ VMOVE(points[6], B);
+ VMOVE(points[7], a_pt4);
+ VMOVE(points[8], a_pt1);
+ VMOVE(points[9], a_pt2);
+ VMOVE(points[10], a_pt2);
+ VMOVE(points[11], a_pt3);
+ VMOVE(points[12], a_pt3);
+ VMOVE(points[13], a_pt4);
+ VMOVE(points[14], a_pt4);
+ VMOVE(points[15], a_pt1);
+
+ (void)dm_draw_lines_3d(dmp, 16, points, 0);
+ }
+
+ /* Restore the line attributes */
+ (void)dm_set_line_attr(dmp, saveLineWidth, saveLineStyle);
+}
+
+/*
+ * 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/arrows.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/autoview.c
===================================================================
--- brlcad/trunk/src/libtclcad/view/autoview.c (rev 0)
+++ brlcad/trunk/src/libtclcad/view/autoview.c 2020-07-15 00:45:22 UTC (rev
76344)
@@ -0,0 +1,81 @@
+/* A U T O V I E W . 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/autoview.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
+to_autoview_view(struct ged_dm_view *gdvp, const char *scale)
+{
+ int ret;
+ const char *av[3];
+
+ gdvp->gdv_gop->go_gedp->ged_gvp = gdvp->gdv_view;
+ av[0] = "autoview";
+ av[1] = scale;
+ av[2] = NULL;
+
+ if (scale)
+ ret = ged_autoview(gdvp->gdv_gop->go_gedp, 2, (const char **)av);
+ else
+ ret = ged_autoview(gdvp->gdv_gop->go_gedp, 1, (const char **)av);
+
+ if (ret == GED_OK) {
+ if (0 < bu_vls_strlen(&gdvp->gdv_callback)) {
+ Tcl_Eval(current_top->to_interp, bu_vls_addr(&gdvp->gdv_callback));
+ }
+
+ to_refresh_view(gdvp);
+ }
+}
+
+void
+to_autoview_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_autoview_view(gdvp, NULL);
+ }
+}
+
+
+
+/*
+ * 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/autoview.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/axes.c
===================================================================
--- brlcad/trunk/src/libtclcad/view/axes.c (rev 0)
+++ brlcad/trunk/src/libtclcad/view/axes.c 2020-07-15 00:45:22 UTC (rev
76344)
@@ -0,0 +1,806 @@
+/* A X 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/axes.c
+ *
+ */
+/** @} */
+
+#include "common.h"
+#include "bu/units.h"
+#include "ged.h"
+#include "tclcad.h"
+
+/* Private headers */
+#include "../tclcad_private.h"
+#include "../view/view.h"
+
+int
+to_axes(struct ged *gedp,
+ struct ged_dm_view *gdvp,
+ struct bview_axes_state *gasp,
+ int argc,
+ const char *argv[],
+ const char *usage)
+{
+
+ if (BU_STR_EQUAL(argv[2], "draw")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gasp->draw);
+ return GED_OK;
+ }
+
+ if (argc == 4) {
+ int i;
+
+ if (bu_sscanf(argv[3], "%d", &i) != 1)
+ goto bad;
+
+ if (i)
+ gasp->draw = 1;
+ else
+ gasp->draw = 0;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "axes_size")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%lf", gasp->axes_size);
+ return GED_OK;
+ }
+
+ if (argc == 4) {
+ double size; /* must be double for scanf */
+
+ if (bu_sscanf(argv[3], "%lf", &size) != 1)
+ goto bad;
+
+ gasp->axes_size = size;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "axes_pos")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%lf %lf %lf",
+ V3ARGS(gasp->axes_pos));
+ return GED_OK;
+ }
+
+ if (argc == 6) {
+ double x, y, z; /* must be double for scanf */
+
+ if (bu_sscanf(argv[3], "%lf", &x) != 1 ||
+ bu_sscanf(argv[4], "%lf", &y) != 1 ||
+ bu_sscanf(argv[5], "%lf", &z) != 1)
+ goto bad;
+
+ VSET(gasp->axes_pos, x, y, z);
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "axes_color")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d %d %d",
+ V3ARGS(gasp->axes_color));
+ return GED_OK;
+ }
+
+ if (argc == 6) {
+ int r, g, b;
+
+ /* set background color */
+ if (bu_sscanf(argv[3], "%d", &r) != 1 ||
+ bu_sscanf(argv[4], "%d", &g) != 1 ||
+ bu_sscanf(argv[5], "%d", &b) != 1)
+ goto bad;
+
+ /* validate color */
+ if (r < 0 || 255 < r ||
+ g < 0 || 255 < g ||
+ b < 0 || 255 < b)
+ goto bad;
+
+ VSET(gasp->axes_color, r, g, b);
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "label_color")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d %d %d",
+ V3ARGS(gasp->label_color));
+ return GED_OK;
+ }
+
+ if (argc == 6) {
+ int r, g, b;
+
+ /* set background color */
+ if (bu_sscanf(argv[3], "%d", &r) != 1 ||
+ bu_sscanf(argv[4], "%d", &g) != 1 ||
+ bu_sscanf(argv[5], "%d", &b) != 1)
+ goto bad;
+
+ /* validate color */
+ if (r < 0 || 255 < r ||
+ g < 0 || 255 < g ||
+ b < 0 || 255 < b)
+ goto bad;
+
+ VSET(gasp->label_color, r, g, b);
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "line_width")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gasp->line_width);
+ return GED_OK;
+ }
+
+ if (argc == 4) {
+ int line_width;
+
+ if (bu_sscanf(argv[3], "%d", &line_width) != 1)
+ goto bad;
+
+ gasp->line_width = line_width;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "pos_only")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gasp->pos_only);
+ return GED_OK;
+ }
+
+ if (argc == 4) {
+ int i;
+
+ if (bu_sscanf(argv[3], "%d", &i) != 1)
+ goto bad;
+
+ if (i)
+ gasp->pos_only = 1;
+ else
+ gasp->pos_only = 0;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "tick_color")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d %d %d",
+ V3ARGS(gasp->tick_color));
+ return GED_OK;
+ }
+
+ if (argc == 6) {
+ int r, g, b;
+
+ /* set background color */
+ if (bu_sscanf(argv[3], "%d", &r) != 1 ||
+ bu_sscanf(argv[4], "%d", &g) != 1 ||
+ bu_sscanf(argv[5], "%d", &b) != 1)
+ goto bad;
+
+ /* validate color */
+ if (r < 0 || 255 < r ||
+ g < 0 || 255 < g ||
+ b < 0 || 255 < b)
+ goto bad;
+
+ VSET(gasp->tick_color, r, g, b);
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "tick_enable")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gasp->tick_enabled);
+ return GED_OK;
+ }
+
+ if (argc == 4) {
+ int i;
+
+ if (bu_sscanf(argv[3], "%d", &i) != 1)
+ goto bad;
+
+ if (i)
+ gasp->tick_enabled = 1;
+ else
+ gasp->tick_enabled = 0;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "tick_interval")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%f", gasp->tick_interval);
+ return GED_OK;
+ }
+
+ if (argc == 4) {
+ int tick_interval;
+
+ if (bu_sscanf(argv[3], "%d", &tick_interval) != 1)
+ goto bad;
+
+ gasp->tick_interval = tick_interval;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "tick_length")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gasp->tick_length);
+ return GED_OK;
+ }
+
+ if (argc == 4) {
+ int tick_length;
+
+ if (bu_sscanf(argv[3], "%d", &tick_length) != 1)
+ goto bad;
+
+ gasp->tick_length = tick_length;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "tick_major_color")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d %d %d",
+ V3ARGS(gasp->tick_major_color));
+ return GED_OK;
+ }
+
+ if (argc == 6) {
+ int r, g, b;
+
+ /* set background color */
+ if (bu_sscanf(argv[3], "%d", &r) != 1 ||
+ bu_sscanf(argv[4], "%d", &g) != 1 ||
+ bu_sscanf(argv[5], "%d", &b) != 1)
+ goto bad;
+
+ /* validate color */
+ if (r < 0 || 255 < r ||
+ g < 0 || 255 < g ||
+ b < 0 || 255 < b)
+ goto bad;
+
+ VSET(gasp->tick_major_color, r, g, b);
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "tick_major_length")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gasp->tick_major_length);
+ return GED_OK;
+ }
+
+ if (argc == 4) {
+ int tick_major_length;
+
+ if (bu_sscanf(argv[3], "%d", &tick_major_length) != 1)
+ goto bad;
+
+ gasp->tick_major_length = tick_major_length;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "ticks_per_major")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gasp->ticks_per_major);
+ return GED_OK;
+ }
+
+ if (argc == 4) {
+ int ticks_per_major;
+
+ if (bu_sscanf(argv[3], "%d", &ticks_per_major) != 1)
+ goto bad;
+
+ gasp->ticks_per_major = ticks_per_major;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "tick_threshold")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gasp->tick_threshold);
+ return GED_OK;
+ }
+
+ if (argc == 4) {
+ int tick_threshold;
+
+ if (bu_sscanf(argv[3], "%d", &tick_threshold) != 1)
+ goto bad;
+
+ if (tick_threshold < 1)
+ tick_threshold = 1;
+
+ gasp->tick_threshold = tick_threshold;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[2], "triple_color")) {
+ if (argc == 3) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gasp->triple_color);
+ return GED_OK;
+ }
+
+ if (argc == 4) {
+ int i;
+
+ if (bu_sscanf(argv[3], "%d", &i) != 1)
+ goto bad;
+
+ if (i)
+ gasp->triple_color = 1;
+ else
+ gasp->triple_color = 0;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+bad:
+ bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+ return GED_ERROR;
+}
+
+int
+go_data_axes(Tcl_Interp *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;
+
+ ret = to_data_axes_func(interp, gedp, gdvp, argc, argv);
+ if (ret == GED_ERROR)
+ bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+
+ return ret;
+}
+
+int
+to_data_axes(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;
+ }
+
+ /* shift the command name to argv[1] before calling to_data_axes_func */
+ argv[1] = argv[0];
+ ret = to_data_axes_func(current_top->to_interp, gedp, gdvp, argc-1,
argv+1);
+ if (ret == GED_ERROR)
+ bu_vls_printf(gedp->ged_result_str, "Usage: %s %s", argv[0], usage);
+
+ return ret;
+}
+
+int
+to_data_axes_func(Tcl_Interp *interp,
+ struct ged *gedp,
+ struct ged_dm_view *gdvp,
+ int argc,
+ const char *argv[])
+{
+ struct bview_data_axes_state *gdasp;
+
+ if (argv[0][0] == 's')
+ gdasp = &gdvp->gdv_view->gv_sdata_axes;
+ else
+ gdasp = &gdvp->gdv_view->gv_data_axes;
+
+ if (BU_STR_EQUAL(argv[1], "draw")) {
+ if (argc == 2) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gdasp->draw);
+ return GED_OK;
+ }
+
+ if (argc == 3) {
+ int i;
+
+ if (bu_sscanf(argv[2], "%d", &i) != 1)
+ goto bad;
+
+ if (0 <= i && i <= 2)
+ gdasp->draw = i;
+ else
+ gdasp->draw = 0;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[1], "color")) {
+ if (argc == 2) {
+ bu_vls_printf(gedp->ged_result_str, "%d %d %d",
+ V3ARGS(gdasp->color));
+ return GED_OK;
+ }
+
+ if (argc == 5) {
+ int r, g, b;
+
+ /* set background color */
+ if (bu_sscanf(argv[2], "%d", &r) != 1 ||
+ bu_sscanf(argv[3], "%d", &g) != 1 ||
+ bu_sscanf(argv[4], "%d", &b) != 1)
+ goto bad;
+
+ /* validate color */
+ if (r < 0 || 255 < r ||
+ g < 0 || 255 < g ||
+ b < 0 || 255 < b)
+ goto bad;
+
+ VSET(gdasp->color, r, g, b);
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[1], "line_width")) {
+ if (argc == 2) {
+ bu_vls_printf(gedp->ged_result_str, "%d", gdasp->line_width);
+ return GED_OK;
+ }
+
+ if (argc == 3) {
+ int line_width;
+
+ if (bu_sscanf(argv[2], "%d", &line_width) != 1)
+ goto bad;
+
+ gdasp->line_width = line_width;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[1], "size")) {
+ if (argc == 2) {
+ bu_vls_printf(gedp->ged_result_str, "%lf", gdasp->size);
+ return GED_OK;
+ }
+
+ if (argc == 3) {
+ double size; /* must be double for scanf */
+
+ if (bu_sscanf(argv[2], "%lf", &size) != 1)
+ goto bad;
+
+ gdasp->size = size;
+
+ to_refresh_view(gdvp);
+ return GED_OK;
+ }
+
+ goto bad;
+ }
+
+ if (BU_STR_EQUAL(argv[1], "points")) {
+ register int i;
+
+ if (argc == 2) {
+ for (i = 0; i < gdasp->num_points; ++i) {
+ bu_vls_printf(gedp->ged_result_str, " {%lf %lf %lf} ",
+ V3ARGS(gdasp->points[i]));
+ }
+ return GED_OK;
+ }
+
+ if (argc == 3) {
+ int ac;
+ const char **av;
+
+ if (Tcl_SplitList(interp, argv[2], &ac, &av) != TCL_OK) {
+ bu_vls_printf(gedp->ged_result_str, "%s",
Tcl_GetStringResult(interp));
+ return GED_ERROR;
+ }
+
+ if (gdasp->num_points) {
+ bu_free((void *)gdasp->points, "data points");
+ gdasp->points = (point_t *)0;
+ gdasp->num_points = 0;
+ }
+
+ /* Clear out data points */
+ if (ac < 1) {
+ to_refresh_view(gdvp);
+ Tcl_Free((char *)av);
+ return GED_OK;
+ }
+
+ gdasp->num_points = ac;
+ gdasp->points = (point_t *)bu_calloc(ac, sizeof(point_t), "data
points");
+ for (i = 0; i < ac; ++i) {
+ double scan[3];
+
+ if (bu_sscanf(av[i], "%lf %lf %lf", &scan[X], &scan[Y],
&scan[Z]) != 3) {
+ bu_vls_printf(gedp->ged_result_str, "bad data point -
%s\n", av[i]);
+
+ bu_free((void *)gdasp->points, "data points");
+ gdasp->points = (point_t *)0;
+ gdasp->num_points = 0;
+
+ to_refresh_view(gdvp);
+ Tcl_Free((char *)av);
+ return GED_ERROR;
+ }
+ /* convert double to fastf_t */
+ VMOVE(gdasp->points[i], scan);
+ }
+
+ to_refresh_view(gdvp);
+ Tcl_Free((char *)av);
+ return GED_OK;
+ }
+ }
+
+bad:
+ return GED_ERROR;
+}
+
+int
+to_model_axes(struct ged *gedp,
+ int argc,
+ const char *argv[],
+ ged_func_ptr UNUSED(func),
+ const char *usage,
+ int UNUSED(maxargs))
+{
+ struct ged_dm_view *gdvp;
+
+ /* 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;
+ }
+
+ return to_axes(gedp, gdvp, &gdvp->gdv_view->gv_model_axes, argc, argv,
usage);
+}
+
+int
+go_view_axes(struct ged_obj *gop,
+ struct ged_dm_view *gdvp,
+ int argc,
+ const char *argv[],
+ const char *usage)
+{
+ /* initialize result */
+ bu_vls_trunc(gop->go_gedp->ged_result_str, 0);
+
+ /* must be wanting help */
+ if (argc == 1) {
+ bu_vls_printf(gop->go_gedp->ged_result_str, "Usage: %s %s", argv[0],
usage);
+ return GED_HELP;
+ }
+
+ if (argc < 3 || 6 < argc) {
+ bu_vls_printf(gop->go_gedp->ged_result_str, "Usage: %s %s", argv[0],
usage);
+ return GED_ERROR;
+ }
+
+ return to_axes(gop->go_gedp, gdvp, &gdvp->gdv_view->gv_view_axes, argc,
argv, usage);
+}
+
+
+int
+to_view_axes(struct ged *gedp,
+ int argc,
+ const char *argv[],
+ ged_func_ptr UNUSED(func),
+ const char *usage,
+ int UNUSED(maxargs))
+{
+ struct ged_dm_view *gdvp;
+
+ /* 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;
+ }
+
+ return to_axes(gedp, gdvp, &gdvp->gdv_view->gv_view_axes, argc, argv,
usage);
+}
+
+
+
+/*
+ * 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/axes.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:24:11 UTC
(rev 76343)
+++ brlcad/trunk/src/libtclcad/view/tclcad_views.c 2020-07-15 00:45:22 UTC
(rev 76344)
@@ -36,6 +36,7 @@
/* Private headers */
#include "../tclcad_private.h"
+#include "../view/view.h"
struct path_match_data {
@@ -468,88 +469,6 @@
}
static void
-go_dm_draw_arrows(struct dm *dmp, struct bview_data_arrow_state *gdasp,
fastf_t sf)
-{
- register int i;
- int saveLineWidth;
- int saveLineStyle;
-
- if (gdasp->gdas_num_points < 1)
- return;
-
- saveLineWidth = dm_get_linewidth(dmp);
- saveLineStyle = dm_get_linestyle(dmp);
-
- /* set color */
- (void)dm_set_fg(dmp,
- gdasp->gdas_color[0],
- gdasp->gdas_color[1],
- gdasp->gdas_color[2], 1, 1.0);
-
- /* set linewidth */
- (void)dm_set_line_attr(dmp, gdasp->gdas_line_width, 0); /* solid lines */
-
- (void)dm_draw_lines_3d(dmp,
- gdasp->gdas_num_points,
- gdasp->gdas_points, 0);
-
- for (i = 0; i < gdasp->gdas_num_points; i += 2) {
- point_t points[16];
- point_t A, B;
- point_t BmA;
- point_t offset;
- point_t perp1, perp2;
- point_t a_base;
- point_t a_pt1, a_pt2, a_pt3, a_pt4;
-
- VMOVE(A, gdasp->gdas_points[i]);
- VMOVE(B, gdasp->gdas_points[i+1]);
- VSUB2(BmA, B, A);
-
- VUNITIZE(BmA);
- VSCALE(offset, BmA, -gdasp->gdas_tip_length * sf);
-
- bn_vec_perp(perp1, BmA);
- VUNITIZE(perp1);
-
- VCROSS(perp2, BmA, perp1);
- VUNITIZE(perp2);
-
- VSCALE(perp1, perp1, gdasp->gdas_tip_width * sf);
- VSCALE(perp2, perp2, gdasp->gdas_tip_width * sf);
-
- VADD2(a_base, B, offset);
- VADD2(a_pt1, a_base, perp1);
- VADD2(a_pt2, a_base, perp2);
- VSUB2(a_pt3, a_base, perp1);
- VSUB2(a_pt4, a_base, perp2);
-
- VMOVE(points[0], B);
- VMOVE(points[1], a_pt1);
- VMOVE(points[2], B);
- VMOVE(points[3], a_pt2);
- VMOVE(points[4], B);
- VMOVE(points[5], a_pt3);
- VMOVE(points[6], B);
- VMOVE(points[7], a_pt4);
- VMOVE(points[8], a_pt1);
- VMOVE(points[9], a_pt2);
- VMOVE(points[10], a_pt2);
- VMOVE(points[11], a_pt3);
- VMOVE(points[12], a_pt3);
- VMOVE(points[13], a_pt4);
- VMOVE(points[14], a_pt4);
- VMOVE(points[15], a_pt1);
-
- (void)dm_draw_lines_3d(dmp, 16, points, 0);
- }
-
- /* Restore the line attributes */
- (void)dm_set_line_attr(dmp, saveLineWidth, saveLineStyle);
-}
-
-
-static void
go_draw_other(struct ged_obj *gop, struct ged_dm_view *gdvp)
{
int width = dm_get_width(gdvp->gdv_dmp);
@@ -728,41 +647,6 @@
}
}
-void
-to_autoview_view(struct ged_dm_view *gdvp, const char *scale)
-{
- int ret;
- const char *av[3];
-
- gdvp->gdv_gop->go_gedp->ged_gvp = gdvp->gdv_view;
- av[0] = "autoview";
- av[1] = scale;
- av[2] = NULL;
-
- if (scale)
- ret = ged_autoview(gdvp->gdv_gop->go_gedp, 2, (const char **)av);
- else
- ret = ged_autoview(gdvp->gdv_gop->go_gedp, 1, (const char **)av);
-
- if (ret == GED_OK) {
- if (0 < bu_vls_strlen(&gdvp->gdv_callback)) {
- Tcl_Eval(current_top->to_interp, bu_vls_addr(&gdvp->gdv_callback));
- }
-
- to_refresh_view(gdvp);
- }
-}
-
-void
-to_autoview_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_autoview_view(gdvp, NULL);
- }
-}
-
/*
* Local Variables:
* mode: C
Added: brlcad/trunk/src/libtclcad/view/view.h
===================================================================
--- brlcad/trunk/src/libtclcad/view/view.h (rev 0)
+++ brlcad/trunk/src/libtclcad/view/view.h 2020-07-15 00:45:22 UTC (rev
76344)
@@ -0,0 +1,85 @@
+/* V I E W . H
+ * BRL-CAD
+ *
+ * Copyright (c) 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.
+ */
+/** @file view.h
+ *
+ * Brief description
+ *
+ */
+
+#include "common.h"
+#include "ged.h"
+#include "tclcad.h"
+
+/* Arrows */
+extern void go_dm_draw_arrows(struct dm *dmp, struct bview_data_arrow_state
*gdasp, fastf_t sf);
+
+extern int to_data_arrows(struct ged *gedp,
+ int argc,
+ const char *argv[],
+ ged_func_ptr func,
+ const char *usage,
+ int maxargs);
+extern int to_data_arrows_func(Tcl_Interp *interp,
+ struct ged *gedp,
+ struct ged_dm_view *gdvp,
+ int argc,
+ const char *argv[]);
+
+/* Axes */
+extern int to_axes(struct ged *gedp,
+ struct ged_dm_view *gdvp,
+ struct bview_axes_state *gasp,
+ int argc,
+ const char *argv[],
+ const char *usage);
+extern int to_data_axes(struct ged *gedp,
+ int argc,
+ const char *argv[],
+ ged_func_ptr func,
+ const char *usage,
+ int maxargs);
+extern int to_data_axes_func(Tcl_Interp *interp,
+ struct ged *gedp,
+ struct ged_dm_view *gdvp,
+ int argc,
+ const char *argv[]);
+extern int to_model_axes(struct ged *gedp,
+ int argc,
+ const char *argv[],
+ ged_func_ptr func,
+ const char *usage,
+ int maxargs);
+extern int to_view_axes(struct ged *gedp,
+ int argc,
+ const char *argv[],
+ ged_func_ptr func,
+ const char *usage,
+ int maxargs);
+
+
+/*
+ * Local Variables:
+ * tab-width: 8
+ * mode: C
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */
Property changes on: brlcad/trunk/src/libtclcad/view/view.h
___________________________________________________________________
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
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