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