Revision: 75434
          http://sourceforge.net/p/brlcad/code/75434
Author:   starseeker
Date:     2020-04-17 14:16:09 +0000 (Fri, 17 Apr 2020)
Log Message:
-----------
Start stubbing in the callback versions of dm_internal_var

Modified Paths:
--------------
    brlcad/branches/dm-fb-merge/src/libdm/X/color.c
    brlcad/branches/dm-fb-merge/src/libdm/X/dm-X.c
    brlcad/branches/dm-fb-merge/src/libdm/X/dm-X.h
    brlcad/branches/dm-fb-merge/src/libdm/glx/dm-ogl.c
    brlcad/branches/dm-fb-merge/src/libdm/glx/dm-ogl.h
    brlcad/branches/dm-fb-merge/src/libdm/include/dm_xvars.h
    brlcad/branches/dm-fb-merge/src/libdm/osgl/dm-osgl.cpp
    brlcad/branches/dm-fb-merge/src/libdm/osgl/dm-osgl.h
    brlcad/branches/dm-fb-merge/src/libdm/qt/dm-qt.cpp
    brlcad/branches/dm-fb-merge/src/libdm/qt/dm-qt.h
    brlcad/branches/dm-fb-merge/src/libdm/tk/dm-tk.c
    brlcad/branches/dm-fb-merge/src/libdm/tk/dm-tk.h
    brlcad/branches/dm-fb-merge/src/libdm/wgl/dm-wgl.c

Modified: brlcad/branches/dm-fb-merge/src/libdm/X/color.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/X/color.c     2020-04-17 13:24:03 UTC 
(rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/X/color.c     2020-04-17 14:16:09 UTC 
(rev 75434)
@@ -34,7 +34,7 @@
 #include "vmath.h"
 
 #include "bu/malloc.h"
-#include "../include/dm_xvars.h"
+#include "./dm-X.h"
 
 /* Return the allocated pixel value that most closely represents
    the color requested. */

Modified: brlcad/branches/dm-fb-merge/src/libdm/X/dm-X.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/X/dm-X.c      2020-04-17 13:24:03 UTC 
(rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/X/dm-X.c      2020-04-17 14:16:09 UTC 
(rev 75434)
@@ -1715,6 +1715,35 @@
     {"",    0, (char *)0,       0,                      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL}
 };
 
+struct bu_structparse dm_Xvars_vparse[] = {
+    {"%x",      1,      "dpy",                  XVARS_MV_O(dpy),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "win",                  XVARS_MV_O(win),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "top",                  XVARS_MV_O(top),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "tkwin",                XVARS_MV_O(xtkwin),     
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "depth",                XVARS_MV_O(depth),      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "cmap",                 XVARS_MV_O(cmap),       
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "vip",                  XVARS_MV_O(vip),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "fontstruct",           XVARS_MV_O(fontstruct), 
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devmotionnotify",      XVARS_MV_O(devmotionnotify),   
 BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devbuttonpress",       XVARS_MV_O(devbuttonpress),    
 BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devbuttonrelease",     XVARS_MV_O(devbuttonrelease),  
 BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"",        0,      (char *)0,              0,                      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }
+};
+
+int
+X_internal_var(struct bu_vls *result, struct dm *dmp, const char *key)
+{
+    if (!dmp || !result) return -1;
+    if (!key) {
+        // Print all current vars
+        bu_vls_struct_print2(result, "dm internal X variables", 
dm_Xvars_vparse, (const char *)dmp->i->dm_vars.pub_vars);
+        return 0;
+    }
+    // Print specific var
+    bu_vls_struct_item_named(result, dm_Xvars_vparse, key, (const char 
*)dmp->i->dm_vars.pub_vars, ',');
+    return 0;
+}
+
 /* Display Manager package interface */
 struct dm_impl dm_X_impl = {
     X_close,

Modified: brlcad/branches/dm-fb-merge/src/libdm/X/dm-X.h
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/X/dm-X.h      2020-04-17 13:24:03 UTC 
(rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/X/dm-X.h      2020-04-17 14:16:09 UTC 
(rev 75434)
@@ -34,6 +34,8 @@
 #define NUM_PIXELS 216    /* CUBE_DIMENSION * CUBE_DIMENSION * CUBE_DIMENSION 
*/
 #define ColormapNull (Colormap *)NULL
 
+#define INIT_XCOLOR(c) memset((c), 0, sizeof(XColor))
+
 struct x_vars {
     GC gc;
     Pixmap pix;

Modified: brlcad/branches/dm-fb-merge/src/libdm/glx/dm-ogl.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/glx/dm-ogl.c  2020-04-17 13:24:03 UTC 
(rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/glx/dm-ogl.c  2020-04-17 14:16:09 UTC 
(rev 75434)
@@ -2584,6 +2584,45 @@
     {"",        0,  (char *)0,          0,                      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }
 };
 
+int
+ogl_geometry_request(struct dm *dmp, int width, int height)
+{
+    if (!dmp) return -1;
+    Tk_GeometryRequest(((struct dm_glxvars 
*)dmp->i->dm_vars.pub_vars)->xtkwin, width, height);
+    return 0;
+}
+
+#define GLXVARS_MV_O(_m) offsetof(struct dm_glxvars, _m)
+
+struct bu_structparse dm_glxvars_vparse[] = {
+    {"%x",      1,      "dpy",                  GLXVARS_MV_O(dpy),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "win",                  GLXVARS_MV_O(win),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "top",                  GLXVARS_MV_O(top),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "tkwin",                GLXVARS_MV_O(xtkwin),     
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "depth",                GLXVARS_MV_O(depth),      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "cmap",                 GLXVARS_MV_O(cmap),       
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "vip",                  GLXVARS_MV_O(vip),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "fontstruct",           GLXVARS_MV_O(fontstruct), 
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devmotionnotify",      GLXVARS_MV_O(devmotionnotify), 
   BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devbuttonpress",       GLXVARS_MV_O(devbuttonpress),  
   BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devbuttonrelease",     
GLXVARS_MV_O(devbuttonrelease),   BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"",        0,      (char *)0,              0,                      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }
+};
+
+int
+ogl_internal_var(struct bu_vls *result, struct dm *dmp, const char *key)
+{
+    if (!dmp || !result) return -1;
+    if (!key) {
+        // Print all current vars
+        bu_vls_struct_print2(result, "dm internal GLX variables", 
dm_glxvars_vparse, (const char *)dmp->i->dm_vars.pub_vars);
+        return 0;
+    }
+    // Print specific var
+    bu_vls_struct_item_named(result, dm_glxvars_vparse, key, (const char 
*)dmp->i->dm_vars.pub_vars, ',');
+    return 0;
+}
+
 struct dm_impl dm_ogl_impl = {
     ogl_close,
     ogl_drawBegin,
@@ -2624,8 +2663,8 @@
     ogl_openFb,
     ogl_get_internal,
     ogl_put_internal,
-    NULL,
-    NULL,
+    ogl_geometry_request,
+    ogl_internal_var,
     0,
     1,                         /* has displaylist */
     0,                          /* no stereo by default */

Modified: brlcad/branches/dm-fb-merge/src/libdm/glx/dm-ogl.h
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/glx/dm-ogl.h  2020-04-17 13:24:03 UTC 
(rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/glx/dm-ogl.h  2020-04-17 14:16:09 UTC 
(rev 75434)
@@ -54,6 +54,20 @@
     GLclampf r, g, b;
 };
 
+struct dm_glxvars {
+    Display *dpy;
+    Window win;
+    Tk_Window top;
+    Tk_Window xtkwin;
+    int depth;
+    Colormap cmap;
+    XVisualInfo *vip;
+    XFontStruct *fontstruct;
+    int devmotionnotify;
+    int devbuttonpress;
+    int devbuttonrelease;
+};
+
 __BEGIN_DECLS
 
 extern void ogl_fogHint();

Modified: brlcad/branches/dm-fb-merge/src/libdm/include/dm_xvars.h
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/include/dm_xvars.h    2020-04-17 
13:24:03 UTC (rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/include/dm_xvars.h    2020-04-17 
14:16:09 UTC (rev 75434)
@@ -53,8 +53,6 @@
 
 #define XVARS_MV_O(_m) offsetof(struct dm_xvars, _m)
 
-#define INIT_XCOLOR(c) memset((c), 0, sizeof(XColor))
-
 /* FIXME: this structure really should not be variable-width and it
  * does not allow multiple interfaces to be simultaneously compiled.
  */

Modified: brlcad/branches/dm-fb-merge/src/libdm/osgl/dm-osgl.cpp
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/osgl/dm-osgl.cpp      2020-04-17 
13:24:03 UTC (rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/osgl/dm-osgl.cpp      2020-04-17 
14:16:09 UTC (rev 75434)
@@ -2482,6 +2482,43 @@
     {"",        0,  (char *)0,          0,                      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }
 };
 
+int
+osgl_geometry_request(struct dm *dmp, int width, int height)
+{
+    if (!dmp) return -1;
+    Tk_GeometryRequest(((struct dm_osglvars 
*)dmp->i->dm_vars.pub_vars)->xtkwin, width, height);
+    return 0;
+}
+
+#define OSGLVARS_MV_O(_m) offsetof(struct dm_osglvars, _m)
+
+struct bu_structparse dm_osglvars_vparse[] = {
+    {"%x",      1,      "dpy",                  OSGLVARS_MV_O(dpy),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "win",                  OSGLVARS_MV_O(win),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "top",                  OSGLVARS_MV_O(top),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "tkwin",                OSGLVARS_MV_O(xtkwin),     
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "depth",                OSGLVARS_MV_O(depth),      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "cmap",                 OSGLVARS_MV_O(cmap),       
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devmotionnotify",      
OSGLVARS_MV_O(devmotionnotify),    BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devbuttonpress",       OSGLVARS_MV_O(devbuttonpress), 
    BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devbuttonrelease",     
OSGLVARS_MV_O(devbuttonrelease),   BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"",        0,      (char *)0,              0,                      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }
+};
+
+int
+osgl_internal_var(struct bu_vls *result, struct dm *dmp, const char *key)
+{
+    if (!dmp || !result) return -1;
+    if (!key) {
+        // Print all current vars
+        bu_vls_struct_print2(result, "dm internal OSGL variables", 
dm_osglvars_vparse, (const char *)dmp->i->dm_vars.pub_vars);
+        return 0;
+    }
+    // Print specific var
+    bu_vls_struct_item_named(result, dm_osglvars_vparse, key, (const char 
*)dmp->i->dm_vars.pub_vars, ',');
+    return 0;
+}
+
 struct dm_impl dm_osgl_impl = {
     osgl_close,
     osgl_drawBegin,
@@ -2522,8 +2559,8 @@
     osgl_openFb,
     osgl_get_internal,
     osgl_put_internal,
-    NULL,
-    NULL,
+    osgl_geometry_request,
+    osgl_internal_var,
     0,
     1,                         /* has displaylist */
     0,                          /* no stereo by default */

Modified: brlcad/branches/dm-fb-merge/src/libdm/osgl/dm-osgl.h
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/osgl/dm-osgl.h        2020-04-17 
13:24:03 UTC (rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/osgl/dm-osgl.h        2020-04-17 
14:16:09 UTC (rev 75434)
@@ -121,6 +121,18 @@
 #endif
 };
 
+struct dm_osglvars {
+    Display *dpy;
+    Window win;
+    Tk_Window top;
+    Tk_Window xtkwin;
+    int depth;
+    Colormap cmap;
+    int devmotionnotify;
+    int devbuttonpress;
+    int devbuttonrelease;
+};
+
 __BEGIN_DECLS
 
 #ifdef __cplusplus

Modified: brlcad/branches/dm-fb-merge/src/libdm/qt/dm-qt.cpp
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/qt/dm-qt.cpp  2020-04-17 13:24:03 UTC 
(rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/qt/dm-qt.cpp  2020-04-17 14:16:09 UTC 
(rev 75434)
@@ -985,6 +985,46 @@
     {"",    0, (char *)0,       0,                      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL}
 };
 
+
+int
+qt_geometry_request(struct dm *dmp, int width, int height)
+{
+    if (!dmp) return -1;
+    Tk_GeometryRequest(((struct dm_qtvars *)dmp->i->dm_vars.pub_vars)->xtkwin, 
width, height);
+    return 0;
+}
+
+#define QTVARS_MV_O(_m) offsetof(struct dm_qtvars, _m)
+
+struct bu_structparse dm_qtvars_vparse[] = {
+    {"%x",      1,      "dpy",                  QTVARS_MV_O(dpy),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "win",                  QTVARS_MV_O(win),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "top",                  QTVARS_MV_O(top),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "tkwin",                QTVARS_MV_O(xtkwin),     
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "depth",                QTVARS_MV_O(depth),      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "cmap",                 QTVARS_MV_O(cmap),       
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devmotionnotify",      QTVARS_MV_O(devmotionnotify),  
  BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devbuttonpress",       QTVARS_MV_O(devbuttonpress),   
  BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devbuttonrelease",     QTVARS_MV_O(devbuttonrelease), 
  BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"",        0,      (char *)0,              0,                      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }
+};
+
+int
+qt_internal_var(struct bu_vls *result, struct dm *dmp, const char *key)
+{
+    if (!dmp || !result) return -1;
+    if (!key) {
+        // Print all current vars
+        bu_vls_struct_print2(result, "dm internal Qt variables", 
dm_qtvars_vparse, (const char *)dmp->i->dm_vars.pub_vars);
+        return;
+    }
+    // Print specific var
+    bu_vls_struct_item_named(result, dm_qtvars_vparse, key, (const char 
*)dmp->i->dm_vars.pub_vars, ',');
+
+    return 0;
+}
+
+
 __END_DECLS
 
 struct dm_impl dm_qt_impl = {
@@ -1027,8 +1067,8 @@
     qt_openFb,
     NULL,
     NULL,
-    NULL,
-    NULL,
+    qt_geometry_request,
+    qt_internal_var,
     0,
     0,                         /* no displaylist */
     0,                         /* no stereo */

Modified: brlcad/branches/dm-fb-merge/src/libdm/qt/dm-qt.h
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/qt/dm-qt.h    2020-04-17 13:24:03 UTC 
(rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/qt/dm-qt.h    2020-04-17 14:16:09 UTC 
(rev 75434)
@@ -80,6 +80,19 @@
     const char *name;
 };
 
+struct qt_xvars {
+    Display *dpy;
+    Window win;
+    Tk_Window top;
+    Tk_Window xtkwin;
+    int depth;
+    Colormap cmap;
+    int devmotionnotify;
+    int devbuttonpress;
+    int devbuttonrelease;
+};
+
+
 #endif /* DM_QT */
 
 #endif /* DM_QT_H */

Modified: brlcad/branches/dm-fb-merge/src/libdm/tk/dm-tk.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/tk/dm-tk.c    2020-04-17 13:24:03 UTC 
(rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/tk/dm-tk.c    2020-04-17 14:16:09 UTC 
(rev 75434)
@@ -852,6 +852,44 @@
     {"",    0, (char *)0,       0,                      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL}
 };
 
+int
+tk_geometry_request(struct dm *dmp, int width, int height)
+{
+    if (!dmp) return -1;
+    Tk_GeometryRequest(((struct dm_xvars *)dmp->i->dm_vars.pub_vars)->xtkwin, 
width, height);
+    return 0;
+}
+
+#define TKVARS_MV_O(_m) offsetof(struct dm_tkvars, _m)
+
+struct bu_structparse dm_tkvars_vparse[] = {
+    {"%x",      1,      "dpy",                  TKVARS_MV_O(dpy),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "win",                  TKVARS_MV_O(win),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "top",                  TKVARS_MV_O(top),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "tkwin",                TKVARS_MV_O(xtkwin),     
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "depth",                TKVARS_MV_O(depth),      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "cmap",                 TKVARS_MV_O(cmap),       
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devmotionnotify",      TKVARS_MV_O(devmotionnotify),  
  BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devbuttonpress",       TKVARS_MV_O(devbuttonpress),   
  BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devbuttonrelease",     TKVARS_MV_O(devbuttonrelease), 
  BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"",        0,      (char *)0,              0,                      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }
+};
+
+int
+tk_internal_var(struct bu_vls *result, struct dm *dmp, const char *key)
+{
+    if (!dmp || !result) return -1;
+    if (!key) {
+        // Print all current vars
+        bu_vls_struct_print2(result, "dm internal Tk variables", 
dm_tkvars_vparse, (const char *)dmp->i->dm_vars.pub_vars);
+        return 0;
+    }
+    // Print specific var
+    bu_vls_struct_item_named(result, dm_tkvars_vparse, key, (const char 
*)dmp->i->dm_vars.pub_vars, ',');
+    return 0;
+}
+
+
 struct dm_impl dm_tk_impl = {
     tk_close,
     tk_drawBegin,
@@ -892,8 +930,8 @@
     null_openFb,
     NULL,
     NULL,
-    NULL,
-    NULL,
+    tk_geometry_request,
+    tk_internal_var,
     0,
     0,                         /* no displaylist */
     0,                         /* no stereo */

Modified: brlcad/branches/dm-fb-merge/src/libdm/tk/dm-tk.h
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/tk/dm-tk.h    2020-04-17 13:24:03 UTC 
(rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/tk/dm-tk.h    2020-04-17 14:16:09 UTC 
(rev 75434)
@@ -34,6 +34,8 @@
 #define NUM_PIXELS 216    /* CUBE_DIMENSION * CUBE_DIMENSION * CUBE_DIMENSION 
*/
 #define ColormapNull (Colormap *)NULL
 
+#define INIT_XCOLOR(c) memset((c), 0, sizeof(XColor))
+
 struct tk_vars {
     GC gc;
     Pixmap pix;
@@ -49,6 +51,18 @@
     fastf_t ppmm_y;            /* pixel per mm in y */
 };
 
+struct dm_tkvars {
+    Display *dpy;
+    Window win;
+    Tk_Window top;
+    Tk_Window xtkwin;
+    int depth;
+    Colormap cmap;
+    int devmotionnotify;
+    int devbuttonpress;
+    int devbuttonrelease;
+};
+
 #endif /* DM_TK_H */
 /** @} */
 /*

Modified: brlcad/branches/dm-fb-merge/src/libdm/wgl/dm-wgl.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libdm/wgl/dm-wgl.c  2020-04-17 13:24:03 UTC 
(rev 75433)
+++ brlcad/branches/dm-fb-merge/src/libdm/wgl/dm-wgl.c  2020-04-17 14:16:09 UTC 
(rev 75434)
@@ -2127,6 +2127,47 @@
     {"",        0,  (char *)0,          0,                      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }
 };
 
+
+int
+wgl_geometry_request(struct dm *dmp, int width, int height)
+{
+    if (!dmp) return -1;
+    Tk_GeometryRequest(((struct dm_xvars *)dmp->i->dm_vars.pub_vars)->xtkwin, 
width, height);
+    return 0;
+}
+
+#define WGLVARS_MV_O(_m) offsetof(struct dm_wglvars, _m)
+
+struct bu_structparse dm_wglvars_vparse[] = {
+    {"%x",      1,      "dpy",                  WGLVARS_MV_O(dpy),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "win",                  WGLVARS_MV_O(win),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "top",                  WGLVARS_MV_O(top),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "tkwin",                WGLVARS_MV_O(xtkwin),     
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "depth",                WGLVARS_MV_O(depth),      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "cmap",                 WGLVARS_MV_O(cmap),       
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "vip",                  WGLVARS_MV_O(vip),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "fontstruct",           WGLVARS_MV_O(fontstruct), 
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%x",      1,      "hdc",                  WGLVARS_MV_O(hdc),        
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devmotionnotify",      WGLVARS_MV_O(devmotionnotify), 
   BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devbuttonpress",       WGLVARS_MV_O(devbuttonpress),  
   BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"%d",      1,      "devbuttonrelease",     
WGLVARS_MV_O(devbuttonrelease),   BU_STRUCTPARSE_FUNC_NULL, NULL, NULL },
+    {"",        0,      (char *)0,              0,                      
BU_STRUCTPARSE_FUNC_NULL, NULL, NULL }
+};
+
+int
+wgl_internal_var(struct bu_vls *result, struct dm *dmp, const char *key)
+{
+    if (!dmp || !result) return -1;
+    if (!key) {
+        // Print all current vars
+        bu_vls_struct_print2(result, "dm internal WGL variables", 
dm_wglvars_vparse, (const char *)dmp->i->dm_vars.pub_vars);
+        return 0;
+    }
+    // Print specific var
+    bu_vls_struct_item_named(result, dm_wglvars_vparse, key, (const char 
*)dmp->i->dm_vars.pub_vars, ',');
+    return 0;
+}
+
 struct dm_impl dm_wgl_impl = {
     wgl_close,
     wgl_drawBegin,
@@ -2167,8 +2208,8 @@
     wgl_openFb,
     wgl_get_internal,
     wgl_put_internal,
-    NULL,
-    NULL,
+    wgl_geometry_request,
+    wgl_internal_var,
     0,
     1,                         /* has displaylist */
     0,                          /* no stereo by default */

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