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

Reply via email to