Revision: 75291
          http://sourceforge.net/p/brlcad/code/75291
Author:   starseeker
Date:     2020-04-07 20:19:53 +0000 (Tue, 07 Apr 2020)
Log Message:
-----------
checkpoint

Modified Paths:
--------------
    brlcad/trunk/include/dm.h
    brlcad/trunk/src/libtclcad/dm_tcl.c

Modified: brlcad/trunk/include/dm.h
===================================================================
--- brlcad/trunk/include/dm.h   2020-04-07 18:45:04 UTC (rev 75290)
+++ brlcad/trunk/include/dm.h   2020-04-07 20:19:53 UTC (rev 75291)
@@ -223,6 +223,43 @@
 /* Hide the dm structure behind a typedef */
 typedef struct dm_internal dm;
 
+/* To avoid (at least in principle) hardcoded assumptions about parent
+ * toolkits, we use a context container that is supplied by callers
+ * telling libdm how to get certain specific information needed to
+ * initialize and manipulate the display context */
+typedef void * dm_win;
+typedef void * dm_dpy;
+typedef void * dm_cmap;
+typedef void * dm_visual_info;
+struct dm_context {
+    /* Tk_MainWindow */
+    dm_win (*dm_window_main)(dm *);
+    /* Tk_CreateWindowFromPath */
+    dm_win (*dm_window_create_from_path)(dm *, dm_win, const char *, const 
char *);
+    /* Tk_NameToWindow */
+    dm_win (*dm_window_from_name)(dm *, const char *, dm_win);
+    /* Tk_CreateWindow */
+    dm_win (*dm_window_create_embedded)(dm *dmp, dm_win, const char *);
+    /* Tk_Name */
+    const char *(*dm_window_name)(dm *dmp, dm_win);
+    /* Tk_WindowId */
+    int (*dm_window_id)(dm *, dm_win);
+    /* Tk_MakeWindowExist */
+    void (*dm_window_make_exist)(dm *, dm_win);
+    /* Tk_MapWindow */
+    const char *(*dm_window_map)(dm *, dm_win);
+    /* Tk_SetWindowVisual */
+    int (*dm_window_set_visual)(dm *, dm_win, dm_visual_info, dm_cmap);
+    /* Tk_DestroyWindow */
+    void (*dm_window_destroy)(dm *, dm_win);
+    /* _init_dm */
+    int (*dm_init)(dm *);
+    /* Tk_GeometryRequest */
+    void (*dm_window_geom)(dm *, dm_win, int *width, int *height);
+    /* Tk_Display */
+    dm_dpy (*dm_display)(dm *, dm_win);
+};
+
 #define DM_OPEN(_interp, _type, _argc, _argv) dm_open(_interp, _type, _argc, 
_argv)
 
 __BEGIN_DECLS

Modified: brlcad/trunk/src/libtclcad/dm_tcl.c
===================================================================
--- brlcad/trunk/src/libtclcad/dm_tcl.c 2020-04-07 18:45:04 UTC (rev 75290)
+++ brlcad/trunk/src/libtclcad/dm_tcl.c 2020-04-07 20:19:53 UTC (rev 75291)
@@ -2942,6 +2942,98 @@
     return BRLCAD_OK;
 }
 
+
+static dm_win
+tk_window_main(dm *dmp)
+{
+    Tcl_Interp *interp = (Tcl_Interp *)dm_interp(dmp);
+    void *mwin = (void *)Tk_MainWindow(interp);
+    return mwin;
+}
+
+#if 0
+/* Tk_CreateWindowFromPath */
+dm_win dm_window_create_from_path(dm *dmp, dm_win win, const char *path, const 
char *dname);
+
+/* Tk_NameToWindow */
+dm_win dm_window_from_name(dm *dmp, const char *name, dm_win win);
+
+/* Tk_CreateWindow */
+dm_win dm_window_create_embedded(dm *dmp, dm_win win, const char *name);
+
+/* Tk_Name */
+const char *dm_window_name(dm *dmp, dm_win win);
+
+/* Tk_WindowId */
+int dm_window_id(dm *dmp, dm_win win);
+
+/* Tk_MakeWindowExist */
+void dm_window_make_exist(dm *dmp, dm_win win);
+
+/* Tk_MapWindow */
+const char *dm_window_map(dm *dmp, dm_win win);
+
+/* Tk_SetWindowVisual */
+int dm_window_set_visual(dm *dmp, dm_win win, visual, depth, cmap);
+
+/* Tk_DestroyWindow */
+void dm_window_destroy(dm *dmp, dm_win win);
+
+
+/* _init_dm */
+int dm_init(dm *dmp);
+
+/* Tk_GeometryRequest */
+void dm_window_geom(dm *dmp, dm_win win, int *width, int *height);
+
+/* Tk_Display */
+typedef void * dm_dpy;
+dm_dpy dm_display(dm *dmp, dm_win win);
+#endif
+
+struct dm_context dm_tk_context = {
+    /* Tk_MainWindow -> dm_window_main */
+    &tk_window_main,
+
+    /* dm_window_create_from_path -> Tk_CreateWindowFromPath */
+    NULL,
+
+    /* dm_window_from_name -> Tk_NameToWindow */
+    NULL,
+
+    /* dm_window_create_embedded -> Tk_CreateWindow */
+    NULL,
+
+    /* dm_window_name -> Tk_Name */
+    NULL,
+
+    /* dm_window_id -> Tk_WindowId */
+    NULL,
+
+    /* dm_window_make_exist -> Tk_MakeWindowExist */
+    NULL,
+
+    /* dm_window_map -> Tk_MapWindow */
+    NULL,
+
+    /* dm_window_set_visual -> Tk_SetWindowVisual */
+    NULL,
+
+    /* dm_window_destroy -> Tk_DestroyWindow */
+    NULL,
+
+    /* dm_init -> _init_dm */
+    NULL,
+
+    /* dm_window_geom -> Tk_GeometryRequest */
+    NULL,
+
+    /* dm_display -> Tk_Display */
+    NULL,
+};
+
+
+
 /*
  * Local Variables:
  * mode: C

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