Revision: 75454
http://sourceforge.net/p/brlcad/code/75454
Author: starseeker
Date: 2020-04-18 01:52:26 +0000 (Sat, 18 Apr 2020)
Log Message:
-----------
Use strings for dm backend specification - the type defines aren't very flexible
Modified Paths:
--------------
brlcad/branches/dm-fb-merge/include/dm.h
brlcad/branches/dm-fb-merge/src/libdm/dm-generic.c
brlcad/branches/dm-fb-merge/src/libdm/dm_obj.c
brlcad/branches/dm-fb-merge/src/libtclcad/tclcad_obj.c
brlcad/branches/dm-fb-merge/src/mged/attach.c
brlcad/branches/dm-fb-merge/src/mged/mged_dm.h
brlcad/branches/dm-fb-merge/src/util/plot3-dm.c
Modified: brlcad/branches/dm-fb-merge/include/dm.h
===================================================================
--- brlcad/branches/dm-fb-merge/include/dm.h 2020-04-18 01:14:56 UTC (rev
75453)
+++ brlcad/branches/dm-fb-merge/include/dm.h 2020-04-18 01:52:26 UTC (rev
75454)
@@ -59,21 +59,6 @@
#define DM_TYPE_OSG 12
#define DM_TYPE_OSGL 13
-#define IS_DM_TYPE_NULL(_t) ((_t) == DM_TYPE_NULL)
-#define IS_DM_TYPE_PLOT(_t) ((_t) == DM_TYPE_PLOT)
-#define IS_DM_TYPE_PS(_t) ((_t) == DM_TYPE_PS)
-#define IS_DM_TYPE_X(_t) ((_t) == DM_TYPE_X)
-#define IS_DM_TYPE_TK(_t) ((_t) == DM_TYPE_TK)
-#define IS_DM_TYPE_OGL(_t) ((_t) == DM_TYPE_OGL)
-#define IS_DM_TYPE_GLX(_t) ((_t) == DM_TYPE_GLX)
-#define IS_DM_TYPE_PEX(_t) ((_t) == DM_TYPE_PEX)
-#define IS_DM_TYPE_WGL(_t) ((_t) == DM_TYPE_WGL)
-#define IS_DM_TYPE_RTGL(_t) ((_t) == DM_TYPE_RTGL)
-#define IS_DM_TYPE_TXT(_t) ((_t) == DM_TYPE_TXT)
-#define IS_DM_TYPE_QT(_t) ((_t) == DM_TYPE_QT)
-#define IS_DM_TYPE_OSG(_t) ((_t) == DM_TYPE_OSG)
-#define IS_DM_TYPE_OSGL(_t) ((_t) == DM_TYPE_OSGL)
-
/* the font used depends on the size of the window opened */
#define FONTBACK "-adobe-courier-medium-r-normal--10-100-75-75-m-60-iso8859-1"
#define FONT5 "5x7"
@@ -126,7 +111,7 @@
DM_EXPORT extern int Dm_Init(void *interp);
DM_EXPORT extern struct dm *dm_open(void *interp,
- int type,
+ const char *type,
int argc,
const char *argv[]);
DM_EXPORT extern void *dm_interp(struct dm *dmp);
@@ -328,7 +313,7 @@
int mv_dlist
);
-DM_EXPORT extern int dm_default_type();
+DM_EXPORT extern const char *dm_default_type();
/*
* Needed for fd_set, avoid including sys/select.h outright since it
Modified: brlcad/branches/dm-fb-merge/src/libdm/dm-generic.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/dm-generic.c 2020-04-18 01:14:56 UTC
(rev 75453)
+++ brlcad/branches/dm-fb-merge/src/libdm/dm-generic.c 2020-04-18 01:52:26 UTC
(rev 75454)
@@ -94,53 +94,56 @@
struct dm *
-dm_open(void *interp, int type, int argc, const char *argv[])
+dm_open(void *interp, const char *type, int argc, const char *argv[])
{
- switch (type) {
- case DM_TYPE_NULL:
- return null_dm_open(interp, argc, argv);
- case DM_TYPE_TXT:
- return txt_open(interp, argc, argv);
- case DM_TYPE_PLOT:
- return plot_open(interp, argc, argv);
- case DM_TYPE_PS:
- return ps_open(interp, argc, argv);
-#ifdef DM_X
-# if defined(HAVE_TK)
- case DM_TYPE_X:
- return X_open_dm(interp, argc, argv);
-# endif
+ if (BU_STR_EQUIV(type, "null")) {
+ return null_dm_open(interp, argc, argv);
+ }
+ if (BU_STR_EQUIV(type, "txt")) {
+ return txt_open(interp, argc, argv);
+ }
+ if (BU_STR_EQUIV(type, "plot")) {
+ return plot_open(interp, argc, argv);
+ }
+ if (BU_STR_EQUIV(type, "plot")) {
+ return plot_open(interp, argc, argv);
+ }
+ if (BU_STR_EQUIV(type, "ps")) {
+ return ps_open(interp, argc, argv);
+ }
+ if (BU_STR_EQUIV(type, "plot")) {
+ return plot_open(interp, argc, argv);
+ }
+#if defined(DM_X) && defined(HAVE_TK)
+ if (BU_STR_EQUIV(type, "X")) {
+ return X_open_dm(interp, argc, argv);
+ }
#endif
-#ifdef DM_TK
- case DM_TYPE_TK:
- return tk_open_dm(interp, argc, argv);
+#if defined(DM_TK)
+ if (BU_STR_EQUIV(type, "tk")) {
+ return tk_open_dm(interp, argc, argv);
+ }
#endif
-#ifdef DM_OGL
-# if defined(HAVE_TK)
- case DM_TYPE_OGL:
- return ogl_open(interp, argc, argv);
-# endif
+#if defined(DM_OGL) && defined(HAVE_TK)
+ if (BU_STR_EQUIV(type, "ogl")) {
+ return ogl_open(interp, argc, argv);
+ }
#endif
-#ifdef DM_OSG
- case DM_TYPE_OSG:
- return osg_open(interp, argc, argv);
+#if defined(DM_OSGL)
+ if (BU_STR_EQUIV(type, "osgl")) {
+ return osgl_open(interp, argc, argv);
+ }
#endif
-#ifdef DM_OSGL
- case DM_TYPE_OSGL:
- return osgl_open(interp, argc, argv);
+#if defined(DM_WGL)
+ if (BU_STR_EQUIV(type, "wgl")) {
+ return wgl_open(interp, argc, argv);
+ }
#endif
-#ifdef DM_WGL
- case DM_TYPE_WGL:
- return wgl_open(interp, argc, argv);
+#if defined(DM_QT)
+ if (BU_STR_EQUIV(type, "qt")) {
+ return qt_open(interp, argc, argv);
+ }
#endif
-#ifdef DM_QT
- case DM_TYPE_QT:
- return qt_open(interp, argc, argv);
-#endif
- default:
- break;
- }
-
return DM_NULL;
}
@@ -361,30 +364,30 @@
* dm_default_type suggests a display manager
*/
-int
+const char *
dm_default_type()
{
#ifdef DM_OSGL
- return DM_TYPE_OSGL;
+ return "osgl";
#endif
#ifdef DM_WGL
- return DM_TYPE_WGL;
+ return "wgl";
#endif
#ifdef DM_OGL
- return DM_TYPE_OGL;
+ return "ogl";
#endif
#ifdef DM_X
- return DM_TYPE_X;
+ return "X";
#endif
#ifdef DM_TK
- return DM_TYPE_TK;
+ return "tk";
#endif
- return DM_TYPE_NULL;
+ return "null";
}
Modified: brlcad/branches/dm-fb-merge/src/libdm/dm_obj.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/dm_obj.c 2020-04-18 01:14:56 UTC
(rev 75453)
+++ brlcad/branches/dm-fb-merge/src/libdm/dm_obj.c 2020-04-18 01:52:26 UTC
(rev 75454)
@@ -2618,7 +2618,7 @@
struct dm *dmp;
struct bu_vls vls = BU_VLS_INIT_ZERO;
int name_index = 1;
- int type = DM_TYPE_BAD;
+ const char *type = NULL;
Tcl_Obj *obj;
obj = Tcl_GetObjResult(interp);
@@ -2652,27 +2652,19 @@
}
/* find display manager type */
-#ifdef DM_X
if (argv[2][0] == 'X' || argv[2][0] == 'x')
- type = DM_TYPE_X;
-#endif /* DM_X */
+ type = argv[2];
-#ifdef DM_TK
if (BU_STR_EQUAL(argv[2], "tk"))
- type = DM_TYPE_TK;
-#endif /* DM_TK */
+ type = argv[2];
-#ifdef DM_OGL
if (BU_STR_EQUAL(argv[2], "ogl"))
- type = DM_TYPE_OGL;
-#endif /* DM_OGL */
+ type = argv[2];
-#ifdef DM_WGL
if (BU_STR_EQUAL(argv[2], "wgl"))
- type = DM_TYPE_WGL;
-#endif /* DM_WGL */
+ type = argv[2];
- if (type == DM_TYPE_BAD) {
+ if (!type) {
Tcl_AppendStringsToObj(obj,
"Unsupported display manager type - ",
argv[2], "\n",
Modified: brlcad/branches/dm-fb-merge/src/libtclcad/tclcad_obj.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libtclcad/tclcad_obj.c 2020-04-18
01:14:56 UTC (rev 75453)
+++ brlcad/branches/dm-fb-merge/src/libtclcad/tclcad_obj.c 2020-04-18
01:52:26 UTC (rev 75454)
@@ -11473,7 +11473,7 @@
{
struct ged_dm_view *new_gdvp;
HIDDEN const int name_index = 1;
- int type = DM_TYPE_BAD;
+ const char *type = NULL;
struct bu_vls event_vls = BU_VLS_INIT_ZERO;
GED_CHECK_DATABASE_OPEN(gedp, GED_ERROR);
@@ -11496,42 +11496,28 @@
type = DM_TYPE_NULL;
/* find display manager type */
-#ifdef DM_X
if (argv[2][0] == 'X' || argv[2][0] == 'x')
- type = DM_TYPE_X;
-#endif /* DM_X */
+ type = argv[2];
-#ifdef DM_TK
if (BU_STR_EQUAL(argv[2], "tk"))
- type = DM_TYPE_TK;
-#endif /* DM_TK */
+ type = argv[2];
-#ifdef DM_OGL
if (BU_STR_EQUAL(argv[2], "ogl"))
- type = DM_TYPE_OGL;
-#endif /* DM_OGL */
+ type = argv[2];
-#ifdef DM_OSG
if (BU_STR_EQUAL(argv[2], "osg"))
- type = DM_TYPE_OSG;
-#endif /* DM_OSG */
+ type = argv[2];
-#ifdef DM_OSGL
if (BU_STR_EQUAL(argv[2], "osgl"))
- type = DM_TYPE_OSGL;
-#endif /* DM_OSGL */
+ type = argv[2];
-#ifdef DM_WGL
if (BU_STR_EQUAL(argv[2], "wgl"))
- type = DM_TYPE_WGL;
-#endif /* DM_WGL */
+ type = argv[2];
-#ifdef DM_QT
if (BU_STR_EQUAL(argv[2], "qt"))
- type = DM_TYPE_QT;
-#endif /* DM_QT */
+ type = argv[2];
- if (type == DM_TYPE_BAD) {
+ if (!type) {
bu_vls_printf(gedp->ged_result_str, "ERROR: Requisite display manager
is not available.\nBRL-CAD may need to be recompiled with support for: %s\nRun
'fbhelp' for a list of available display managers.\n", argv[2]);
return GED_ERROR;
}
Modified: brlcad/branches/dm-fb-merge/src/mged/attach.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/mged/attach.c 2020-04-18 01:14:56 UTC
(rev 75453)
+++ brlcad/branches/dm-fb-merge/src/mged/attach.c 2020-04-18 01:52:26 UTC
(rev 75454)
@@ -50,18 +50,15 @@
#include "./sedit.h"
#include "./mged_dm.h"
-#define NEED_GUI(_type) (\
- IS_DM_TYPE_WGL(_type) || \
- IS_DM_TYPE_OGL(_type) || \
- IS_DM_TYPE_OSG(_type) || \
- IS_DM_TYPE_GLX(_type) || \
- IS_DM_TYPE_TK(_type) || \
- IS_DM_TYPE_X(_type) || \
- IS_DM_TYPE_TXT(_type) || \
- IS_DM_TYPE_OSGL(_type) || \
- IS_DM_TYPE_QT(_type))
+#define NEED_GUI(_name) (\
+ BU_STR_EQUIV(_name, "wgl") || \
+ BU_STR_EQUIV(_name, "ogl") || \
+ BU_STR_EQUIV(_name, "osgl") || \
+ BU_STR_EQUIV(_name, "tk") || \
+ BU_STR_EQUIV(_name, "X") || \
+ BU_STR_EQUIV(_name, "txt") || \
+ BU_STR_EQUIV(_name, "qt"))
-
/* All systems can compile these! */
extern int Plot_dm_init(struct dm_list *o_dm_list, int argc, const char
*argv[]);
extern int PS_dm_init(struct dm_list *o_dm_list, int argc, const char *argv[]);
@@ -194,42 +191,39 @@
typedef int (*eventfptr)();
struct w_dm which_dm[] = {
- { DM_TYPE_PLOT, "plot", NULL}, /* DM_PLOT_INDEX defined in mged_dm.h */
- { DM_TYPE_PS, "ps", NULL}, /* DM_PS_INDEX defined in mged_dm.h */
- { DM_TYPE_TXT, "txt", NULL},
+ { "plot", NULL}, /* DM_PLOT_INDEX defined in mged_dm.h */
+ { "ps", NULL}, /* DM_PS_INDEX defined in mged_dm.h */
+ { "txt", NULL},
#ifdef DM_X
- { DM_TYPE_X, "X", x_doevent },
+ { "X", x_doevent },
#endif /* DM_X */
#ifdef DM_TK
- { DM_TYPE_TK, "tk", NULL},
+ { "tk", NULL},
#endif /* DM_TK */
#ifdef DM_WGL
- { DM_TYPE_WGL, "wgl", wgl_doevent },
+ { "wgl", wgl_doevent },
#endif /* DM_WGL */
#ifdef DM_OGL
# if defined(HAVE_TK)
- { DM_TYPE_OGL, "ogl", ogl_doevent },
+ { "ogl", ogl_doevent },
# endif
#endif /* DM_OGL */
-#ifdef DM_OSG
- { DM_TYPE_OSG, "osg", NULL},
-#endif /* DM_OSG */
#ifdef DM_OSGL
# if defined(HAVE_TK)
- { DM_TYPE_OSGL, "osgl", osgl_doevent },
+ { "osgl", osgl_doevent },
# endif
#endif /* DM_OSGL */
#ifdef DM_QT
- { DM_TYPE_QT, "qt", x_doevent },
+ { "qt", x_doevent },
#endif /* DM_QT */
- { -1, (char *)NULL, (int (*)())NULL}
+ { (char *)NULL, (int (*)())NULL}
};
static eventfptr
-dm_doevent(int dm_type) {
+dm_doevent(const char *dm_type) {
int i = 0;
- while (which_dm[i].type != -1) {
- if (dm_type == which_dm[i].type) {
+ while (which_dm[i].name != NULL) {
+ if (dm_type == which_dm[i].name) {
return which_dm[i].doevent;
}
i++;
@@ -239,7 +233,7 @@
int
mged_dm_init(struct dm_list *o_dm_list,
- int dm_type,
+ const char *dm_type,
int argc,
const char *argv[])
{
@@ -486,11 +480,11 @@
}
/* Look at last argument, skipping over any options which precede it */
- for (wp = &which_dm[2]; wp->type != -1; wp++)
+ for (wp = &which_dm[2]; wp->name != NULL; wp++)
if (BU_STR_EQUAL(argv[argc - 1], wp->name))
break;
- if (wp->type == -1) {
+ if (wp->name == NULL) {
Tcl_AppendResult(interpreter, "attach(", argv[argc - 1], "): BAD\n",
(char *)NULL);
print_valid_dm(interpreter);
return TCL_ERROR;
@@ -591,7 +585,7 @@
predictor_init();
/* Only need to do this once */
- if (tkwin == NULL && NEED_GUI(wp->type)) {
+ if (tkwin == NULL && NEED_GUI(wp->name)) {
struct dm *tmp_dmp;
struct bu_vls tmp_vls = BU_VLS_INIT_ZERO;
@@ -629,7 +623,7 @@
return TCL_ERROR;
}
- if (mged_dm_init(o_dm_list, wp->type, argc, argv) == TCL_ERROR) {
+ if (mged_dm_init(o_dm_list, wp->name, argc, argv) == TCL_ERROR) {
goto Bad;
}
@@ -692,7 +686,7 @@
/* print all the available display manager types, skipping plot and ps
*/
wp = &which_dm[2];
- for (; wp->type != -1; wp++) {
+ for (; wp->name != NULL; wp++) {
bu_log("|%s", wp->name);
}
bu_log(")[nu]? ");
@@ -714,13 +708,13 @@
/* trim whitespace before comparisons (but not before checking empty) */
bu_vls_trimspace(&type);
- for (wp = &which_dm[2]; wp->type != -1; wp++) {
+ for (wp = &which_dm[2]; wp->name != NULL; wp++) {
if (BU_STR_EQUAL(bu_vls_addr(&type), wp->name)) {
break;
}
}
- if (wp->type != -1) {
+ if (wp->name != NULL) {
break;
}
Modified: brlcad/branches/dm-fb-merge/src/mged/mged_dm.h
===================================================================
--- brlcad/branches/dm-fb-merge/src/mged/mged_dm.h 2020-04-18 01:14:56 UTC
(rev 75453)
+++ brlcad/branches/dm-fb-merge/src/mged/mged_dm.h 2020-04-18 01:52:26 UTC
(rev 75454)
@@ -600,8 +600,7 @@
extern void mged_rtCmdNotify();
struct w_dm {
- int type;
- char *name;
+ char *name;
int (*doevent)();
};
extern struct w_dm which_dm[]; /* defined in attach.c */
Modified: brlcad/branches/dm-fb-merge/src/util/plot3-dm.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/util/plot3-dm.c 2020-04-18 01:14:56 UTC
(rev 75453)
+++ brlcad/branches/dm-fb-merge/src/util/plot3-dm.c 2020-04-18 01:52:26 UTC
(rev 75454)
@@ -1047,7 +1047,7 @@
av[2] = "sampler_bind_dm";
av[3] = (char *)NULL;
- if ((dmp = dm_open(INTERP, DM_TYPE_X, 3, av)) == DM_NULL) {
+ if ((dmp = dm_open(INTERP, "X", 3, av)) == DM_NULL) {
Tcl_AppendResult(INTERP, "Failed to open a display manager\n", (char
*)NULL);
return TCL_ERROR;
}
@@ -1073,7 +1073,7 @@
av[2] = "sampler_bind_dm";
av[3] = (char *)NULL;
- if ((dmp = dm_open(INTERP, DM_TYPE_OGL, 3, (const char **)av)) == DM_NULL)
{
+ if ((dmp = dm_open(INTERP, "ogl", 3, (const char **)av)) == DM_NULL) {
Tcl_AppendResult(INTERP, "Failed to open a display manager\n", (char
*)NULL);
return TCL_ERROR;
}
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