Revision: 76678
http://sourceforge.net/p/brlcad/code/76678
Author: starseeker
Date: 2020-08-06 18:38:32 +0000 (Thu, 06 Aug 2020)
Log Message:
-----------
Replace/refactor another hardcoding of dm backend names
Modified Paths:
--------------
brlcad/trunk/include/dm.h
brlcad/trunk/src/libdm/X/dm-X.c
brlcad/trunk/src/libdm/dm-generic.c
brlcad/trunk/src/libdm/dm_plugins.cpp
brlcad/trunk/src/libdm/glx/dm-ogl.c
brlcad/trunk/src/libdm/include/calltable.h
brlcad/trunk/src/libdm/null/dm-Null.c
brlcad/trunk/src/libdm/osgl/dm-osgl.cpp
brlcad/trunk/src/libdm/plot/dm-plot.c
brlcad/trunk/src/libdm/postscript/dm-ps.c
brlcad/trunk/src/libdm/qt/dm-qt.cpp
brlcad/trunk/src/libdm/tk/dm-tk.c
brlcad/trunk/src/libdm/txt/dm-txt.c
brlcad/trunk/src/libdm/wgl/dm-wgl.c
brlcad/trunk/src/mged/attach.c
Modified: brlcad/trunk/include/dm.h
===================================================================
--- brlcad/trunk/include/dm.h 2020-08-06 18:05:03 UTC (rev 76677)
+++ brlcad/trunk/include/dm.h 2020-08-06 18:38:32 UTC (rev 76678)
@@ -164,6 +164,10 @@
DM_EXPORT const char *dm_bestXType(const char *dpy_string);
DM_EXPORT extern int dm_have_graphics();
+/* This reports the graphics system associated with the specified dm type
(returned values
+ * right now would be NULL, Tk or Qt - another eventual possibility is
GLFW...) */
+DM_EXPORT extern const char *dm_graphics_system(const char *dmtype);
+
/* functions to make a dm struct hideable - will need to
* sort these out later */
@@ -170,8 +174,9 @@
DM_EXPORT extern struct dm *dm_get();
DM_EXPORT extern void dm_put(struct dm *dmp);
DM_EXPORT extern void dm_set_null(struct dm *dmp); /* TODO - HACK, need
general set mechanism */
-DM_EXPORT extern const char *dm_get_dm_name(struct dm *dmp);
+DM_EXPORT extern const char *dm_get_dm_name(const struct dm *dmp);
DM_EXPORT extern const char *dm_get_dm_lname(struct dm *dmp);
+DM_EXPORT extern const char *dm_get_graphics_system(const struct dm *dmp);
DM_EXPORT extern int dm_get_width(struct dm *dmp);
DM_EXPORT extern int dm_get_height(struct dm *dmp);
DM_EXPORT extern void dm_set_width(struct dm *dmp, int width);
Modified: brlcad/trunk/src/libdm/X/dm-X.c
===================================================================
--- brlcad/trunk/src/libdm/X/dm-X.c 2020-08-06 18:05:03 UTC (rev 76677)
+++ brlcad/trunk/src/libdm/X/dm-X.c 2020-08-06 18:38:32 UTC (rev 76678)
@@ -2121,6 +2121,7 @@
NULL,
0,
1, /* is graphical */
+ "Tk", /* uses Tk graphics system */
0, /* no displaylist */
0, /* no stereo */
PLOTBOUND, /* zoom-in limit */
Modified: brlcad/trunk/src/libdm/dm-generic.c
===================================================================
--- brlcad/trunk/src/libdm/dm-generic.c 2020-08-06 18:05:03 UTC (rev 76677)
+++ brlcad/trunk/src/libdm/dm-generic.c 2020-08-06 18:38:32 UTC (rev 76678)
@@ -178,7 +178,7 @@
}
const char *
-dm_get_dm_name(struct dm *dmp)
+dm_get_dm_name(const struct dm *dmp)
{
if (UNLIKELY(!dmp)) return NULL;
return dmp->i->dm_name;
@@ -401,6 +401,13 @@
return &(dmp->i->dm_dName);
}
+const char *
+dm_get_graphics_system(const struct dm *dmp)
+{
+ if (UNLIKELY(!dmp)) return NULL;
+ return dmp->i->graphics_system;
+}
+
struct bu_vls *
dm_get_tkname(struct dm *dmp)
{
Modified: brlcad/trunk/src/libdm/dm_plugins.cpp
===================================================================
--- brlcad/trunk/src/libdm/dm_plugins.cpp 2020-08-06 18:05:03 UTC (rev
76677)
+++ brlcad/trunk/src/libdm/dm_plugins.cpp 2020-08-06 18:38:32 UTC (rev
76678)
@@ -78,6 +78,24 @@
return ret;
}
+extern "C" const char *
+dm_graphics_system(const char *dmtype)
+{
+ const char *ret = NULL;
+ std::map<std::string, const struct dm *> *dmb = (std::map<std::string,
const struct dm *> *)dm_backends;
+ std::map<std::string, const struct dm *>::iterator d_it;
+ for (d_it = dmb->begin(); d_it != dmb->end(); d_it++) {
+ std::string key = d_it->first;
+ const struct dm *d = d_it->second;
+ const char *dname = dm_get_dm_name(d);
+ if (BU_STR_EQUIV(dmtype, dname)) {
+ ret = dm_get_graphics_system(d);
+ break;
+ }
+ }
+ return ret;
+}
+
extern "C" void
dm_list_types(struct bu_vls *list, const char *separator)
{
Modified: brlcad/trunk/src/libdm/glx/dm-ogl.c
===================================================================
--- brlcad/trunk/src/libdm/glx/dm-ogl.c 2020-08-06 18:05:03 UTC (rev 76677)
+++ brlcad/trunk/src/libdm/glx/dm-ogl.c 2020-08-06 18:38:32 UTC (rev 76678)
@@ -3059,6 +3059,7 @@
ogl_share_dlist,
0,
1, /* is graphical */
+ "Tk", /* uses Tk graphics system */
1, /* has displaylist */
0, /* no stereo by default */
1.0, /* zoom-in limit */
Modified: brlcad/trunk/src/libdm/include/calltable.h
===================================================================
--- brlcad/trunk/src/libdm/include/calltable.h 2020-08-06 18:05:03 UTC (rev
76677)
+++ brlcad/trunk/src/libdm/include/calltable.h 2020-08-06 18:38:32 UTC (rev
76678)
@@ -110,6 +110,7 @@
int (*dm_share_dlist)(struct dm *dmp1, struct dm *dmp2);
unsigned long dm_id; /**< @brief window id */
int dm_graphical; /**< @brief !0 means device supports
interactive graphics */
+ const char *graphics_system; /**< @brief String identifying the drawing
layer assumed */
int dm_displaylist; /**< @brief !0 means device has
displaylist */
int dm_stereo; /**< @brief stereo flag */
double dm_bound; /**< @brief zoom-in limit */
Modified: brlcad/trunk/src/libdm/null/dm-Null.c
===================================================================
--- brlcad/trunk/src/libdm/null/dm-Null.c 2020-08-06 18:05:03 UTC (rev
76677)
+++ brlcad/trunk/src/libdm/null/dm-Null.c 2020-08-06 18:38:32 UTC (rev
76678)
@@ -360,6 +360,7 @@
NULL,
0,
0, /* not graphical */
+ NULL, /* not graphical */
0, /* no displaylist */
0, /* no stereo */
0.0, /* zoom-in limit */
Modified: brlcad/trunk/src/libdm/osgl/dm-osgl.cpp
===================================================================
--- brlcad/trunk/src/libdm/osgl/dm-osgl.cpp 2020-08-06 18:05:03 UTC (rev
76677)
+++ brlcad/trunk/src/libdm/osgl/dm-osgl.cpp 2020-08-06 18:38:32 UTC (rev
76678)
@@ -2709,6 +2709,7 @@
NULL,
0,
1, /* is graphical */
+ "Tk", /* uses Tk graphics system */
1, /* has displaylist */
0, /* no stereo by default */
1.0, /* zoom-in limit */
Modified: brlcad/trunk/src/libdm/plot/dm-plot.c
===================================================================
--- brlcad/trunk/src/libdm/plot/dm-plot.c 2020-08-06 18:05:03 UTC (rev
76677)
+++ brlcad/trunk/src/libdm/plot/dm-plot.c 2020-08-06 18:38:32 UTC (rev
76678)
@@ -718,6 +718,7 @@
NULL,
0,
0, /* not graphical */
+ NULL, /* not graphical */
0, /* no displaylist */
0, /* no stereo */
PLOTBOUND, /* zoom-in limit */
Modified: brlcad/trunk/src/libdm/postscript/dm-ps.c
===================================================================
--- brlcad/trunk/src/libdm/postscript/dm-ps.c 2020-08-06 18:05:03 UTC (rev
76677)
+++ brlcad/trunk/src/libdm/postscript/dm-ps.c 2020-08-06 18:38:32 UTC (rev
76678)
@@ -787,6 +787,7 @@
NULL,
0,
0, /* not graphical */
+ NULL, /* not graphical */
0, /* no displaylist */
0, /* no stereo */
PLOTBOUND, /* zoom-in limit */
Modified: brlcad/trunk/src/libdm/qt/dm-qt.cpp
===================================================================
--- brlcad/trunk/src/libdm/qt/dm-qt.cpp 2020-08-06 18:05:03 UTC (rev 76677)
+++ brlcad/trunk/src/libdm/qt/dm-qt.cpp 2020-08-06 18:38:32 UTC (rev 76678)
@@ -1361,6 +1361,7 @@
NULL,
0,
1, /* is graphical */
+ "Qt", /* uses Qt graphics system */
0, /* no displaylist */
0, /* no stereo */
0.0, /* zoom-in limit */
Modified: brlcad/trunk/src/libdm/tk/dm-tk.c
===================================================================
--- brlcad/trunk/src/libdm/tk/dm-tk.c 2020-08-06 18:05:03 UTC (rev 76677)
+++ brlcad/trunk/src/libdm/tk/dm-tk.c 2020-08-06 18:38:32 UTC (rev 76678)
@@ -1160,6 +1160,7 @@
NULL,
0,
1, /* is graphical */
+ "Tk", /* uses Tk graphics system */
0, /* no displaylist */
0, /* no stereo */
PLOTBOUND, /* zoom-in limit */
Modified: brlcad/trunk/src/libdm/txt/dm-txt.c
===================================================================
--- brlcad/trunk/src/libdm/txt/dm-txt.c 2020-08-06 18:05:03 UTC (rev 76677)
+++ brlcad/trunk/src/libdm/txt/dm-txt.c 2020-08-06 18:38:32 UTC (rev 76678)
@@ -411,6 +411,7 @@
NULL,
0,
0, /* not graphical */
+ NULL, /* not graphical */
0, /* no displaylist */
0, /* no stereo */
0.0, /* zoom-in limit */
Modified: brlcad/trunk/src/libdm/wgl/dm-wgl.c
===================================================================
--- brlcad/trunk/src/libdm/wgl/dm-wgl.c 2020-08-06 18:05:03 UTC (rev 76677)
+++ brlcad/trunk/src/libdm/wgl/dm-wgl.c 2020-08-06 18:38:32 UTC (rev 76678)
@@ -2345,6 +2345,7 @@
wgl_share_dlist,
0,
1, /* is graphical */
+ "Tk", /* uses Tk graphics system */
1, /* has displaylist */
0, /* no stereo by default */
1.0, /* zoom-in limit */
Modified: brlcad/trunk/src/mged/attach.c
===================================================================
--- brlcad/trunk/src/mged/attach.c 2020-08-06 18:05:03 UTC (rev 76677)
+++ brlcad/trunk/src/mged/attach.c 2020-08-06 18:38:32 UTC (rev 76678)
@@ -51,15 +51,6 @@
#include "./sedit.h"
#include "./mged_dm.h"
-#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"))
-
extern void share_dlist(struct dm_list *dlp2); /* defined in share.c */
extern struct _color_scheme default_color_scheme;
@@ -402,7 +393,7 @@
predictor_init();
/* Only need to do this once */
- if (tkwin == NULL && NEED_GUI(wp_name)) {
+ if (tkwin == NULL && BU_STR_EQUIV(dm_graphics_system(wp_name), "Tk")) {
struct dm *tmp_dmp;
struct bu_vls tmp_vls = BU_VLS_INIT_ZERO;
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