Revision: 76677
http://sourceforge.net/p/brlcad/code/76677
Author: starseeker
Date: 2020-08-06 18:05:03 +0000 (Thu, 06 Aug 2020)
Log Message:
-----------
Merge trunk changes from r76657 through r76676
Modified Paths:
--------------
brlcad/branches/bioh/include/dm/CMakeLists.txt
brlcad/branches/bioh/include/dm.h
brlcad/branches/bioh/misc/win32-msvc/Dll/CMakeLists.txt
brlcad/branches/bioh/src/libdm/CMakeLists.txt
brlcad/branches/bioh/src/libdm/X/CMakeLists.txt
brlcad/branches/bioh/src/libdm/X/dm-X.c
brlcad/branches/bioh/src/libdm/X/dm-X.h
brlcad/branches/bioh/src/libdm/X/fb_X.h
brlcad/branches/bioh/src/libdm/dm-generic.c
brlcad/branches/bioh/src/libdm/dm_plugins.cpp
brlcad/branches/bioh/src/libdm/glx/CMakeLists.txt
brlcad/branches/bioh/src/libdm/glx/dm-ogl.c
brlcad/branches/bioh/src/libdm/glx/dm-ogl.h
brlcad/branches/bioh/src/libdm/glx/fb_ogl.h
brlcad/branches/bioh/src/libdm/glx/if_ogl.c
brlcad/branches/bioh/src/libdm/include/calltable.h
brlcad/branches/bioh/src/libdm/include/private.h
brlcad/branches/bioh/src/libdm/null/dm-Null.c
brlcad/branches/bioh/src/libdm/null/dm-Null.h
brlcad/branches/bioh/src/libdm/osgl/CMakeLists.txt
brlcad/branches/bioh/src/libdm/osgl/dm-osgl.cpp
brlcad/branches/bioh/src/libdm/osgl/dm-osgl.h
brlcad/branches/bioh/src/libdm/osgl/fb_osgl.h
brlcad/branches/bioh/src/libdm/osgl/if_osgl.cpp
brlcad/branches/bioh/src/libdm/plot/CMakeLists.txt
brlcad/branches/bioh/src/libdm/plot/dm-plot.c
brlcad/branches/bioh/src/libdm/plot/dm-plot.h
brlcad/branches/bioh/src/libdm/postscript/CMakeLists.txt
brlcad/branches/bioh/src/libdm/postscript/dm-ps.c
brlcad/branches/bioh/src/libdm/postscript/dm-ps.h
brlcad/branches/bioh/src/libdm/qt/CMakeLists.txt
brlcad/branches/bioh/src/libdm/qt/dm-qt.cpp
brlcad/branches/bioh/src/libdm/qt/dm-qt.h
brlcad/branches/bioh/src/libdm/qt/fb_qt.h
brlcad/branches/bioh/src/libdm/tests/dm_test.c
brlcad/branches/bioh/src/libdm/tk/CMakeLists.txt
brlcad/branches/bioh/src/libdm/tk/dm-tk.c
brlcad/branches/bioh/src/libdm/tk/dm-tk.h
brlcad/branches/bioh/src/libdm/txt/CMakeLists.txt
brlcad/branches/bioh/src/libdm/txt/dm-txt.c
brlcad/branches/bioh/src/libdm/wgl/CMakeLists.txt
brlcad/branches/bioh/src/libdm/wgl/dm-wgl.c
brlcad/branches/bioh/src/libdm/wgl/dm-wgl.h
brlcad/branches/bioh/src/libdm/wgl/fb_wgl.h
brlcad/branches/bioh/src/libtclcad/dm.c
brlcad/branches/bioh/src/libtclcad/tclcad_obj.c
brlcad/branches/bioh/src/mged/attach.c
brlcad/branches/bioh/src/mged/cmd.c
brlcad/branches/bioh/src/mged/doevent.c
brlcad/branches/bioh/src/mged/mged.c
brlcad/branches/bioh/src/mged/mged.h
brlcad/branches/bioh/src/mged/mged_dm.h
brlcad/branches/bioh/src/other/openNURBS/opennurbs_extensions.h
Removed Paths:
-------------
brlcad/branches/bioh/include/dm/dm-design.h
Property Changed:
----------------
brlcad/branches/bioh/
brlcad/branches/bioh/include/
brlcad/branches/bioh/src/other/
Index: brlcad/branches/bioh
===================================================================
--- brlcad/branches/bioh 2020-08-06 18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh 2020-08-06 18:05:03 UTC (rev 76677)
Property changes on: brlcad/branches/bioh
___________________________________________________________________
Modified: svn:mergeinfo
## -9,4 +9,4 ##
/brlcad/branches/osg:62110-62113
/brlcad/branches/prep-cache:68236-68933
/brlcad/branches/tcltk86:68300-75257
-/brlcad/trunk:75720-76157,76160-76365,76386-76656
\ No newline at end of property
+/brlcad/trunk:75720-76157,76160-76365,76386-76676
\ No newline at end of property
Index: brlcad/branches/bioh/include
===================================================================
--- brlcad/branches/bioh/include 2020-08-06 18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/include 2020-08-06 18:05:03 UTC (rev 76677)
Property changes on: brlcad/branches/bioh/include
___________________________________________________________________
Modified: svn:mergeinfo
## -9,4 +9,4 ##
/brlcad/branches/osg/include:62110-62113
/brlcad/branches/prep-cache/include:68236-68933
/brlcad/branches/tcltk86/include:68300-75257
-/brlcad/trunk/include:75728-75834,75891-75926,75986-76146,76148-76154,76160-76351,76386-76505,76641-76656
\ No newline at end of property
+/brlcad/trunk/include:75728-75834,75891-75926,75986-76146,76148-76154,76160-76351,76386-76505,76641-76676
\ No newline at end of property
Modified: brlcad/branches/bioh/include/dm/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/include/dm/CMakeLists.txt 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/include/dm/CMakeLists.txt 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -6,7 +6,6 @@
)
BRLCAD_MANAGE_FILES(dm_headers ${INCLUDE_DIR}/brlcad/dm)
-CMAKEFILES(dm-design.h)
CMAKEFILES(CMakeLists.txt)
# Local Variables:
Deleted: brlcad/branches/bioh/include/dm/dm-design.h
===================================================================
--- brlcad/branches/bioh/include/dm/dm-design.h 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/include/dm/dm-design.h 2020-08-06 18:05:03 UTC (rev
76677)
@@ -1,223 +0,0 @@
-/* D M - D E S I G N . H
- * BRL-CAD
- *
- * Copyright (c) 2016-2020 United States Government as represented by
- * the U.S. Army Research Laboratory.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this file; see the file named COPYING for more
- * information.
- */
-/** @file dm-design.h
- *
- * Design work on an updated API for libdm. This is currently just
- * speculative work and should not be regarded as any sort of active,
- * usable API.
- *
- */
-
-#ifndef DM_DM_DESIGN_H
-#define DM_DM_DESIGN_H
-
-#include "common.h"
-#include "vmath.h"
-#include "icv.h"
-#include "dm/defines.h"
-
-/* Display Manager Types */
-#define DM_TYPE_BAD -1
-#define DM_TYPE_NULL 0
-#define DM_TYPE_TXT 1
-#define DM_TYPE_QT 2
-#define DM_TYPE_OSG 3
-
-#define DM_STYLE_TXT 0
-#define DM_STYLE_WIREFRAME 1
-#define DM_STYLE_POINTS 2
-#define DM_STYLE_TRIANGLES 3
-#define DM_STYLE_HIDDEN_LINE 4
-struct dm_db_obj {
- int draw_style; /**< @brief bitmask for points, wireframe,
solid, hidden line, etc. */
- mat_t matrix; /**< @brief local matrix for individual
in-memory object manipulation during editing, when per-change disk I/O is too
expensive */
-};
-
-#define DM_VIEW_OBJ_TYPE_3DLINES 0
-#define DM_VIEW_OBJ_TYPE_2DLINES 1
-#define DM_VIEW_OBJ_TYPE_TRIANGLES 2
-#define DM_VIEW_OBJ_TYPE_TEXT 4
-#define DM_VIEW_OBJ_TYPE_FB 5
-struct dm_view_obj {
- int draw_type; /**< @brief obj type - framebuffer, 2D
lines, 3D lines, triangles, text, grouping object, etc. */
- struct bn_vlist *vlist; /**< @brief If the object defines
specific linear or triangular geometry for drawing
- (text may but is not required to,
and a framebuffer uses image data) it is here. */
- struct bu_ptbl *obj_set; /**< @brief A grouping object may
define a union of other objects (view and/or db) on which actions will be
performed */
- void *image_data;
- mat_t matrix;
-};
-
-
-/* Use a union to allow the display list object to hold both types */
-#define DM_DB_OBJ 1
-#define DM_VIEW_OBJ 2
-union dm_object {
- struct dm_db_obj db_obj;
- struct dm_view_obj view_obj;
-};
-
-/* TODO - this will probably need to be in bview.h for common access */
-struct dm_display_list {
- int obj_type;
- union dm_object obj;
- struct bu_vls *handle; /**< @brief For non-geometry
view objects, need a string handle. For geometry objects, full path string */
- int dirty_flag; /**< @brief If set, need to
(re)generate the drawing content for this object */
- int visibility_flag; /**< @brief Allows
users to hide/view objects without needing to recreate them */
- int highlight_flag; /**< @brief Identify
whether the object is highlighted within the view */
- fastf_t draw_width; /**< @brief !0 override's the
display manager's default Point radius/line width */
- int fontsize; /**< @brief !0 override's the
display manager's default font size when obj labeling is performed */
- unsigned char rgb[3]; /**< @brief local color
override */
- struct bu_attribute_value_set *obj_extra_settings; /**< @brief All
settings (generic and DMTYPE specific) listed here. */
- void *client_data; /**< @brief Slot to allow
applications to supply custom data */
-};
-
-struct dm {
- uint32_t dm_magic;
- int dm_type; /**< @brief drawing
canvas type (X, OSG, Qt, txt, etc.) currently in use by display manager */
- char *handle; /**< @brief short name of
device */
- int perspective; /**< @brief !0 means
perspective on */
- mat_t view_matrix; /**< @brief view matrix for the
default camera */
- mat_t proj_matrix; /**< @brief projection matrix
for the default camera */
- void *dm_data; /**< @brief pointer to the
actual low level, platform specific data (X window, OSG viewer, internal lists,
etc.) */
- int is_embedded; /**< @brief determine
if the display manager is stand-alone or embedded (impacts event handling) */
- void *parent_info; /**< @brief if dm is embedded,
parent_info must contain all the info necessary for libdm to embed the Window */
- struct bu_ptbl *dm_l; /**< @brief Display list for
this view */
- int fontsize; /**< @brief !0 override's the
auto font size */
- unsigned char dm_bg[3]; /**< @brief background color */
- unsigned char dm_fg[3]; /**< @brief default foreground
color */
- fastf_t draw_width; /**< @brief Default point
radius/line width */
- int width;
- int height;
- struct bu_attribute_value_set *dm_settings; /**< @brief All
settings (generic and DMTYPE specific) listed here. */
- void *client_data; /**< @brief Slot to allow
applications to store custom data */
-};
-
-const char *dm_common_reserved_settings[] = {
- "perspective" "Enable/disable perspective mode. Specifics of the
perspective mode are controlled by the projection matrix."
- "proj_mat" "Projection matrix, used for perspective mode."
- "view_mat" "View matrix - controls the \"camera\" position in space."
- "background_rgb" "Background color, specified using Red/Green/Blue color
values"
- "foreground_rgb" "Default color for foreground objects, specified using
Red/Green/Blue color values"
- "draw_width" "Default line width/point radius used when drawing
objects."
- "fontsize" "Default font size for text rendering."
- "width" "Width of display window."
- "height" "Height of display window."
- "\0"
-};
-
-const char *dm_obj_common_reserved_settings[] = {
- "local_mat" "Local positioning matrix, used (for example) during
object editing manipulations."
- "rgb" "Object color, specified using Red/Green/Blue color
values. Defaults to geometry object color, if present."
- "draw_width" "Local line width/point radius used when drawing objects."
- "fontsize" "Local font size for text rendering."
- "dirty" "Flag telling the display manager that the object state
is out of sync with the visible state."
- "visible" "Flag telling the display manager that the object is (or
isn't) supposed to be visible in the view."
- "highlight" "Flag telling the display manager to highlight this
object."
- "\0"
-};
-
-/* Structure of dm will (hopefully) be internal to libdm, so use a typedef for
the functions */
-typedef struct dm dm_s;
-
-/* Generic functions for all display managers */
-DM_EXPORT extern void dm_set_handle(dm_s *dmp, const char *handle);
-DM_EXPORT extern char *dm_get_handle(dm_s *dmp);
-DM_EXPORT extern void dm_set_perspective(dm_s *dmp, int
perspective_flag);
-DM_EXPORT extern int dm_get_perspective(dm_s *dmp);
-DM_EXPORT extern void dm_set_proj_mat(dm_s *dmp, mat_t pmat);
-DM_EXPORT extern matp_t dm_get_proj_mat(dm_s *dmp);
-DM_EXPORT extern void dm_set_view_mat(dm_s *dmp, mat_t vmat);
-DM_EXPORT extern matp_t dm_get_view_mat(dm_s *dmp);
-DM_EXPORT extern void dm_set_background_rgb(dm_s *dmp, unsigned char
r, unsigned char g, unsigned char b);
-DM_EXPORT extern unsigned char *dm_get_background_rgb(dm_s *dmp);
-DM_EXPORT extern void dm_set_foreground_rgb(dm_s *dmp, unsigned char
r, unsigned char g, unsigned char b);
-DM_EXPORT extern unsigned char *dm_get_foreground_rgb(dm_s *dmp);
-DM_EXPORT extern void dm_set_default_draw_width(dm_s *dmp, fastf_t
draw_width);
-DM_EXPORT extern fastf_t dm_get_default_draw_width(dm_s *dmp, fastf_t
draw_width);
-DM_EXPORT extern void dm_set_default_fontsize(dm_s *dmp, int
fontsize);
-DM_EXPORT extern int dm_get_default_fontsize(dm_s *dmp);
-DM_EXPORT extern void dm_set_width(dm_s *dmp, int width);
-DM_EXPORT extern int dm_get_width(dm_s *dmp);
-DM_EXPORT extern void dm_set_height(dm_s *dmp, int height);
-DM_EXPORT extern int dm_get_height(dm_s *dmp);
-
-
-DM_EXPORT extern const char **dm_get_reserved_settings(dm_s
*dmp); /* Will be a combination of global and dm specific reserved settings */
-DM_EXPORT extern int dm_is_reserved_setting(dm_s
*dmp, const char *key);
-DM_EXPORT extern const char *dm_about_reserved_setting(dm_s
*dmp, const char *key);
-DM_EXPORT extern struct bu_attribute_value_set *dm_get_settings(dm_s *dmp,
const char *key);
-DM_EXPORT extern int dm_set_setting(dm_s *dmp,
const char *key, const char *val);
-DM_EXPORT extern const char *dm_get_setting(dm_s *dmp,
const char *key);
-
-/* Object manipulators */
-DM_EXPORT extern int dm_obj_add(dm_s *dmp, const char *handle, int
style_type, struct bn_vlist *vlist, struct bu_ptbl *obj_set);
-DM_EXPORT extern int dm_obj_find(dm_s *dmp, const char *handle);
-DM_EXPORT extern void dm_obj_remove(dm_s *dmp, const char *handle);
-
-DM_EXPORT extern void dm_set_obj_localmat(dm_s *dmp, const char
*handle, mat_t matrix);
-DM_EXPORT extern matp_t dm_get_obj_localmat(dm_s *dmp, const char
*handle);
-DM_EXPORT extern void dm_set_obj_rgb(dm_s *dmp, const char *handle,
unsigned char r, unsigned char g, unsigned char b);
-DM_EXPORT extern unsigned char *dm_get_obj_rgb(dm_s *dmp, const char *handle);
-DM_EXPORT extern void dm_set_obj_draw_width(dm_s *dmp, const char
*handle, fastf_t draw_width);
-DM_EXPORT extern fastf_t dm_get_obj_draw_width(dm_s *dmp, const char
*handle);
-DM_EXPORT extern void dm_set_obj_fontsize(dm_s *dmp, const char
*handle, int fontsize);
-DM_EXPORT extern int dm_get_obj_fontsize(dm_s *dmp, const char
*handle);
-DM_EXPORT extern void dm_set_obj_dirty(dm_s *dmp, const char
*handle, int flag);
-DM_EXPORT extern int dm_get_obj_dirty(dm_s *dmp, const char
*handle);
-DM_EXPORT extern void dm_set_obj_visible(dm_s *dmp, const char
*handle, int flag);
-DM_EXPORT extern int dm_get_obj_visible(dm_s *dmp, const char
*handle);
-DM_EXPORT extern void dm_set_obj_highlight(dm_s *dmp, const char
*handle, int flag);
-DM_EXPORT extern int dm_get_obj_highlight(dm_s *dmp, const char
*handle);
-
-DM_EXPORT extern const char
**dm_get_obj_reserved_settings(dm_s *dmp); /* Will be a combination of global
and dm specific reserved settings */
-DM_EXPORT extern int dm_is_obj_reserved_setting(dm_s
*dmp, const char *key);
-DM_EXPORT extern const char
*dm_about_obj_reserved_setting(dm_s *dmp, const char *key);
-DM_EXPORT extern struct bu_attribute_value_set *dm_get_obj_settings(dm_s *dmp,
const char *handle);
-DM_EXPORT extern int dm_set_obj_setting(dm_s *dmp,
const char *handle, const char *key, const char *val);
-DM_EXPORT extern const char *dm_get_obj_setting(dm_s *dmp,
const char *handle, const char *key);
-
-/* TODO The visibility of the framebuffer is handled like any other object,
but it is likely necessary
- * to expose more of the details of the object to allow libfb to work
properly?*/
-/* Idle though - could an ascii raytrace (like the old GIFT output) be useful
for "txt mode" debugging of raytracing? */
-DM_EXPORT extern void *dm_get_framebuffer(dm_s *dmp);
-
-
-/* Display Manager / OS type aware functions */
-DM_EXPORT extern int dm_init(dm_s *dmp, int dm_t, int embedded, void
*parent_info); /* TODO - need an actual public struct to hold parent info? */
-DM_EXPORT extern int dm_close(dm_s *dmp);
-DM_EXPORT extern int dm_refresh(dm_s *dmp);
-DM_EXPORT extern void *dm_canvas(dm_s *dmp); /* Exposes the low level drawing
object (X window, OpenGL context, etc.) for custom drawing */
-DM_EXPORT extern int dm_get_type(dm_s *dmp);
-DM_EXPORT extern int dm_set_type(dm_s *dmp, int dm_t);
-DM_EXPORT extern int dm_get_image(dm_s *dmp, icv_image_t *image);
-DM_EXPORT extern int dm_get_obj_image(dm_s *dmp, const char *handle,
icv_image_t *image);
-
-#endif /* DM_DM_DESIGN_H */
-
-/** @} */
-/*
- * Local Variables:
- * mode: C
- * tab-width: 8
- * indent-tabs-mode: t
- * c-file-style: "stroustrup"
- * End:
- * ex: shiftwidth=4 tabstop=8
- */
Modified: brlcad/branches/bioh/include/dm.h
===================================================================
--- brlcad/branches/bioh/include/dm.h 2020-08-06 18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/include/dm.h 2020-08-06 18:05:03 UTC (rev 76677)
@@ -74,18 +74,7 @@
void *dmh_data;
};
-/* TODO - after plugins are established, these should be movable to
- * the private subheaders */
DM_EXPORT extern struct dm dm_null;
-DM_EXPORT extern struct dm dm_ogl;
-DM_EXPORT extern struct dm dm_plot;
-DM_EXPORT extern struct dm dm_ps;
-DM_EXPORT extern struct dm dm_tk;
-DM_EXPORT extern struct dm dm_wgl;
-DM_EXPORT extern struct dm dm_X;
-DM_EXPORT extern struct dm dm_txt;
-DM_EXPORT extern struct dm dm_qt;
-DM_EXPORT extern struct dm dm_osgl;
DM_EXPORT extern void *dm_interp(struct dm *dmp);
DM_EXPORT extern int dm_share_dlist(struct dm *dmp1,
@@ -171,10 +160,10 @@
const char *type,
int argc,
const char *argv[]);
-DM_EXPORT extern struct bu_vls *dm_list_types(const char *separator); /* free
return list with bu_vls_free(list); BU_PUT(list, struct bu_vls); */
+DM_EXPORT extern void dm_list_types(struct bu_vls *list, const char
*separator);
DM_EXPORT const char *dm_bestXType(const char *dpy_string);
+DM_EXPORT extern int dm_have_graphics();
-
/* functions to make a dm struct hideable - will need to
* sort these out later */
@@ -190,6 +179,7 @@
DM_EXPORT extern void dm_geometry_request(struct dm *dmp, int width, int
height);
DM_EXPORT extern void dm_internal_var(struct bu_vls *result, struct dm *dmp,
const char *key); // ick
DM_EXPORT extern fastf_t dm_get_aspect(struct dm *dmp);
+DM_EXPORT extern int dm_graphical(const struct dm *dmp);
DM_EXPORT extern const char *dm_get_type(struct dm *dmp);
DM_EXPORT extern unsigned long dm_get_id(struct dm *dmp);
DM_EXPORT extern void dm_set_id(struct dm *dmp, unsigned long new_id);
@@ -201,6 +191,9 @@
DM_EXPORT extern int dm_set_fg(struct dm *dmp, unsigned char r, unsigned char
g, unsigned char b, int strict, fastf_t transparency);
DM_EXPORT extern int dm_reshape(struct dm *dmp, int width, int height);
DM_EXPORT extern int dm_make_current(struct dm *dmp);
+DM_EXPORT extern int dm_doevent(struct dm *dmp, void *clientData, void
*eventPtr);
+DM_EXPORT extern int dm_get_dirty(struct dm *dmp);
+DM_EXPORT extern void dm_set_dirty(struct dm *dmp, int i);
DM_EXPORT extern vect_t *dm_get_clipmin(struct dm *dmp);
DM_EXPORT extern vect_t *dm_get_clipmax(struct dm *dmp);
DM_EXPORT extern int dm_get_bound_flag(struct dm *dmp);
Modified: brlcad/branches/bioh/misc/win32-msvc/Dll/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/misc/win32-msvc/Dll/CMakeLists.txt 2020-08-06
18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/misc/win32-msvc/Dll/CMakeLists.txt 2020-08-06
18:05:03 UTC (rev 76677)
@@ -48,7 +48,6 @@
libnmg-static
poly2tri-static
zlib-static
- lz4-static
openNURBS-static
)
@@ -130,7 +129,6 @@
libnmg-static
poly2tri-static
zlib-static
- lz4-static
openNURBS-static
${COREINTERFACE_MSVC_LIBRARIES}
)
Modified: brlcad/branches/bioh/src/libdm/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/CMakeLists.txt 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/CMakeLists.txt 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -18,42 +18,18 @@
BRLCAD_LIB_INCLUDE_DIRS(dm DM_INCLUDE_DIRS DM_LOCAL_INCLUDE_DIRS)
-if(BRLCAD_ENABLE_TCL)
- add_subdirectory(plot)
- add_subdirectory(txt)
-endif(BRLCAD_ENABLE_TCL)
+# Backend implementations
+add_subdirectory(X)
+add_subdirectory(glx)
+add_subdirectory(osgl)
+add_subdirectory(plot)
+add_subdirectory(postscript)
+add_subdirectory(qt)
+add_subdirectory(tk)
+add_subdirectory(txt)
+add_subdirectory(wgl)
-# We no longer use these in libdm, but MGED hasn't caught up yet...
-set(libdm_DEFINES "")
-
-if(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_OPENGL AND BRLCAD_ENABLE_TK)
- add_subdirectory(glx)
- list(APPEND libdm_DEFINES DM_OGL IF_OGL)
-endif(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_OPENGL AND BRLCAD_ENABLE_TK)
-if(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK)
- add_subdirectory(X)
- list(APPEND libdm_DEFINES DM_X IF_X)
-endif(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK)
-if(WIN32 AND BRLCAD_ENABLE_OPENGL)
- add_subdirectory(wgl)
- list(APPEND libdm_DEFINES DM_WGL IF_WGL)
-endif(WIN32 AND BRLCAD_ENABLE_OPENGL)
-if(BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_DM_TK)
- add_subdirectory(tk)
- list(APPEND libdm_DEFINES DM_TK IF_TK)
-endif(BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_DM_TK)
-if(BRLCAD_ENABLE_OSG AND BRLCAD_ENABLE_TK)
- add_subdirectory(osgl)
- list(APPEND libdm_DEFINES DM_OSGL IF_OSGL)
-endif(BRLCAD_ENABLE_OSG AND BRLCAD_ENABLE_TK)
-if(BRLCAD_ENABLE_QT)
- add_subdirectory(qt)
- list(APPEND libdm_DEFINES DM_QT IF_QT)
-endif(BRLCAD_ENABLE_QT)
-
-# put the defines where MGED's build can find them...
-set_property(GLOBAL PROPERTY libdm_DEFINES "${libdm_DEFINES}")
-
+# Main libdm library
set(LIBDM_SRCS
null/dm-Null.c
null/if_null.c
@@ -89,20 +65,6 @@
BRLCAD_ADDLIB(libdm "${LIBDM_SRCS}"
"librt;libicv;libbu;libpkg;${OPENGL_LIBRARIES};${PNG_LIBRARIES}")
set_target_properties(libdm PROPERTIES VERSION 20.0.1 SOVERSION 20)
-#if(BRLCAD_ENABLE_OSG)
-# BRLCAD_ADDEXEC(osg-test osgl/osg-test.cpp "librt;libbu;${OSG_LIBRARIES}"
NO_STRICT NO_INSTALL)
-# if(HIDE_INTERNAL_SYMBOLS)
-# if (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
-# set_property(TARGET libdm APPEND PROPERTY COMPILE_DEFINITIONS
"FREETYPE_DLL_IMPORTS")
-# endif (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
-# if(TARGET libdm-obj)
-# if (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
-# set_property(TARGET libdm-obj APPEND PROPERTY COMPILE_DEFINITIONS
"FREETYPE_DLL_IMPORTS")
-# endif (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
-# endif(TARGET libdm-obj)
-# endif(HIDE_INTERNAL_SYMBOLS)
-#endif(BRLCAD_ENABLE_OSG)
-
if (TARGET profont_ProFont_ttf_cp)
add_dependencies(libdm profont_ProFont_ttf_cp)
endif (TARGET profont_ProFont_ttf_cp)
@@ -113,55 +75,8 @@
CMakeLists.txt
README
TODO
- X/CMakeLists.txt
- X/color.c
- X/dm-X.c
- X/dm-X.h
- X/fb_X.h
- X/if_X24.c
- glx/CMakeLists.txt
- glx/dm-glx.h
- glx/dm-ogl.c
- glx/dm-ogl.h
- glx/fb_ogl.h
- glx/if_ogl.c
if_TEMPLATE.c
null/dm-Null.h
- osgl/CMakeLists.txt
- osgl/dm-osgl.cpp
- osgl/dm-osgl.h
- osgl/fb_osgl.h
- osgl/fontstash/LICENSE.fontstash
- osgl/fontstash/README.md
- osgl/fontstash/fontstash.h
- osgl/fontstash/glfontstash.h
- osgl/fontstash/stb_truetype.h
- osgl/if_osgl.cpp
- osgl/osg-test.cpp
- osgl/osg_bob.cpp
- osgl/osg_fb_manipulator.h
- plot/CMakeLists.txt
- plot/dm-plot.c
- plot/dm-plot.h
- postscript/CMakeLists.txt
- postscript/dm-ps.c
- postscript/dm-ps.h
- qt/CMakeLists.txt
- qt/dm-qt.cpp
- qt/dm-qt.h
- qt/fb_qt.h
- qt/if_qt.cpp
- tk/CMakeLists.txt
- tk/dm-tk.c
- tk/dm-tk.h
- tk/if_tk.c
- txt/CMakeLists.txt
- txt/dm-txt.c
- wgl/CMakeLists.txt
- wgl/dm-wgl.c
- wgl/dm-wgl.h
- wgl/fb_wgl.h
- wgl/if_wgl.c
include/private.h
include/calltable.h
)
Modified: brlcad/branches/bioh/src/libdm/X/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/X/CMakeLists.txt 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/X/CMakeLists.txt 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -1,16 +1,3 @@
-
-find_package(X11)
-find_package(TCL)
-
-include_directories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${BRLCAD_BINARY_DIR}/include
- ${BRLCAD_SOURCE_DIR}/include
- ${X11_INCLUDE_DIR}
- ${TCL_INCLUDE_PATH}
- ${TK_INCLUDE_PATH}
- )
-
set(X_SRCS
dm-X.c
color.c
@@ -17,21 +4,40 @@
if_X24.c
)
-set_property(SOURCE dm-X.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
-set_property(SOURCE if_X24.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+if(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK)
-add_definitions(-DDM_PLUGIN)
-add_definitions(-DDM_X -DIF_X)
+ find_package(X11)
+ find_package(TCL)
-add_library(dm-X SHARED ${X_SRCS})
-target_link_libraries(dm-X libdm libbu ${TCL_LIBRARY} ${TK_LIBRARY}
${X11_LIBRARIES})
-set_property(TARGET dm-X APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-X "${X_SRCS}")
+ include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${X11_INCLUDE_DIR}
+ ${TCL_INCLUDE_PATH}
+ ${TK_INCLUDE_PATH}
+ )
-PLUGIN_SETUP(dm-X dm)
+ set_property(SOURCE dm-X.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+ set_property(SOURCE if_X24.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
-CMAKEFILES(dm-X.h)
+ add_definitions(-DDM_PLUGIN)
+ add_library(dm-X SHARED ${X_SRCS})
+ target_link_libraries(dm-X libdm libbu ${TCL_LIBRARY} ${TK_LIBRARY}
${X11_LIBRARIES})
+ set_property(TARGET dm-X APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+ VALIDATE_STYLE(dm-X "${X_SRCS}")
+
+ PLUGIN_SETUP(dm-X dm)
+
+endif(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK)
+
+CMAKEFILES(
+ CMakeLists.txt
+ ${X_SRCS}
+ dm-X.h
+ )
+
# Local Variables:
# tab-width: 8
# mode: cmake
Modified: brlcad/branches/bioh/src/libdm/X/dm-X.c
===================================================================
--- brlcad/branches/bioh/src/libdm/X/dm-X.c 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/X/dm-X.c 2020-08-06 18:05:03 UTC (rev
76677)
@@ -157,6 +157,18 @@
return 0;
}
+HIDDEN int
+X_doevent(struct dm *dmp, void *UNUSED(vclientData), void *veventPtr)
+{
+ XEvent *eventPtr= (XEvent *)veventPtr;
+ if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
+ dm_set_dirty(dmp, 1);
+ /* no further processing for this event */
+ return TCL_RETURN;
+ }
+ /* allow further processing of this event */
+ return TCL_OK;
+}
HIDDEN int
X_configureWin_guts(struct dm *dmp, int force)
@@ -2095,6 +2107,7 @@
X_getDisplayImage, /* display to image function */
X_reshape,
null_makeCurrent,
+ X_doevent,
X_openFb,
NULL,
NULL,
@@ -2107,15 +2120,17 @@
NULL,
NULL,
0,
+ 1, /* is graphical */
0, /* no displaylist */
- 0, /* no stereo */
+ 0, /* no stereo */
PLOTBOUND, /* zoom-in limit */
1, /* bound flag */
"X",
"X Window System (X11)",
- 1,
- 0,
- 0,
+ 1, /* top */
+ 0, /* width */
+ 0, /* height */
+ 0, /* dirty */
0, /* bytes per pixel */
0, /* bits per channel */
0,
Modified: brlcad/branches/bioh/src/libdm/X/dm-X.h
===================================================================
--- brlcad/branches/bioh/src/libdm/X/dm-X.h 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/X/dm-X.h 2020-08-06 18:05:03 UTC (rev
76677)
@@ -41,6 +41,26 @@
#define INIT_XCOLOR(c) memset((c), 0, sizeof(XColor))
+#define DM_REVERSE_COLOR_BYTE_ORDER(_shift, _mask) { \
+ _shift = 24 - _shift; \
+ switch (_shift) { \
+ case 0: \
+ _mask >>= 24; \
+ break; \
+ case 8: \
+ _mask >>= 8; \
+ break; \
+ case 16: \
+ _mask <<= 8; \
+ break; \
+ case 24: \
+ _mask <<= 24; \
+ break; \
+ } \
+ }
+
+extern struct dm dm_X;
+
struct x_vars {
GC gc;
Pixmap pix;
Modified: brlcad/branches/bioh/src/libdm/X/fb_X.h
===================================================================
--- brlcad/branches/bioh/src/libdm/X/fb_X.h 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/X/fb_X.h 2020-08-06 18:05:03 UTC (rev
76677)
@@ -30,7 +30,6 @@
/** @} */
#ifdef FB_USE_INTERNAL_API
-#ifdef IF_X
#include "common.h"
#include <X11/X.h>
@@ -42,7 +41,6 @@
XVisualInfo *vip;
GC gc;
};
-#endif /* IF_X */
#endif /* FB_USE_INTERNAL_API */
/*
Modified: brlcad/branches/bioh/src/libdm/dm-generic.c
===================================================================
--- brlcad/branches/bioh/src/libdm/dm-generic.c 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/dm-generic.c 2020-08-06 18:05:03 UTC (rev
76677)
@@ -219,6 +219,12 @@
dmp->i->dm_height = height;
}
+int
+dm_graphical(const struct dm *dmp)
+{
+ if (UNLIKELY(!dmp)) return 0;
+ return dmp->i->dm_graphical;
+}
const char *
dm_get_type(struct dm *dmp)
@@ -304,6 +310,27 @@
return dmp->i->dm_makeCurrent(dmp);
}
+int
+dm_doevent(struct dm *dmp, void *clientData, void *eventPtr)
+{
+ if (UNLIKELY(!dmp)) return 0;
+ return dmp->i->dm_doevent(dmp, clientData, eventPtr);
+}
+
+int
+dm_get_dirty(struct dm *dmp)
+{
+ if (UNLIKELY(!dmp)) return 0;
+ return dmp->i->dm_dirty;
+}
+
+void
+dm_set_dirty(struct dm *dmp, int i)
+{
+ if (UNLIKELY(!dmp)) return;
+ dmp->i->dm_dirty = i;
+}
+
vect_t *
dm_get_clipmin(struct dm *dmp)
{
Modified: brlcad/branches/bioh/src/libdm/dm_plugins.cpp
===================================================================
--- brlcad/branches/bioh/src/libdm/dm_plugins.cpp 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/dm_plugins.cpp 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -61,14 +61,30 @@
return dmp;
}
-extern "C" struct bu_vls *
-dm_list_types(const char *separator)
+extern "C" int
+dm_have_graphics()
{
- struct bu_vls *list;
- BU_GET(list, struct bu_vls);
- bu_vls_init(list);
- bu_vls_trunc(list, 0);
+ int ret = 0;
+ 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;
+ if (dm_graphical(d)) {
+ ret = 1;
+ break;
+ }
+ }
+ return ret;
+}
+extern "C" void
+dm_list_types(struct bu_vls *list, const char *separator)
+{
+ if (!list) {
+ return;
+ }
+
// We've got something, and may need a separator
struct bu_vls sep = BU_VLS_INIT_ZERO;
if (!separator) {
@@ -118,7 +134,6 @@
b = priority_list[i];
}
#endif
- return list;
}
extern "C" int
Modified: brlcad/branches/bioh/src/libdm/glx/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/glx/CMakeLists.txt 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/glx/CMakeLists.txt 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -1,39 +1,47 @@
-find_package(TCL)
-find_package(X11)
-find_package(GL)
-
-include_directories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${BRLCAD_BINARY_DIR}/include
- ${BRLCAD_SOURCE_DIR}/include
- ${BU_INCLUDE_DIRS}
- ${X11_INCLUDE_DIR}
- ${OPENGL_INCLUDE_DIR_GL}
- ${OPENGL_INCLUDE_DIR_GLX}
- ${TCL_INCLUDE_PATH}
- ${TK_INCLUDE_PATH}
- )
-
set(OGL_SRCS
dm-ogl.c
if_ogl.c
)
-set_property(SOURCE dm-ogl.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
-set_property(SOURCE if_ogl.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+if(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_OPENGL)
-add_definitions(-DDM_PLUGIN)
-add_definitions(-DDM_OGL -DIF_OGL)
+ find_package(TCL)
+ find_package(X11)
+ find_package(GL)
-add_library(dm-ogl SHARED ${OGL_SRCS})
-target_link_libraries(dm-ogl libdm libbu ${X11_LIBRARIES} ${OPENGL_LIBRARIES}
${TCL_LIBRARY} ${TK_LIBRARY})
-set_property(TARGET dm-ogl APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-ogl "${OGL_SRCS}")
+ include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${X11_INCLUDE_DIR}
+ ${OPENGL_INCLUDE_DIR_GL}
+ ${OPENGL_INCLUDE_DIR_GLX}
+ ${TCL_INCLUDE_PATH}
+ ${TK_INCLUDE_PATH}
+ )
-PLUGIN_SETUP(dm-ogl dm)
+ set_property(SOURCE dm-ogl.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+ set_property(SOURCE if_ogl.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
-CMAKEFILES(dm-ogl.h)
+ add_definitions(-DDM_PLUGIN)
+
+ add_library(dm-ogl SHARED ${OGL_SRCS})
+ target_link_libraries(dm-ogl libdm libbu ${X11_LIBRARIES}
${OPENGL_LIBRARIES} ${TCL_LIBRARY} ${TK_LIBRARY})
+ set_property(TARGET dm-ogl APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+ VALIDATE_STYLE(dm-ogl "${OGL_SRCS}")
+
+ PLUGIN_SETUP(dm-ogl dm)
+
+endif(BRLCAD_ENABLE_X11 AND BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_OPENGL)
+
+CMAKEFILES(
+ CMakeLists.txt
+ ${OGL_SRCS}
+ dm-ogl.h
+ )
+
# Local Variables:
# tab-width: 8
# mode: cmake
Modified: brlcad/branches/bioh/src/libdm/glx/dm-ogl.c
===================================================================
--- brlcad/branches/bioh/src/libdm/glx/dm-ogl.c 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/glx/dm-ogl.c 2020-08-06 18:05:03 UTC (rev
76677)
@@ -416,6 +416,19 @@
return BRLCAD_OK;
}
+HIDDEN int
+ogl_doevent(struct dm *dmp, void *UNUSED(vclientData), void *veventPtr)
+{
+ XEvent *eventPtr= (XEvent *)veventPtr;
+ if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
+ (void)dm_make_current(dmp);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ dm_set_dirty(dmp, 1);
+ return TCL_OK;
+ }
+ /* allow further processing of this event */
+ return TCL_OK;
+}
HIDDEN int
ogl_configureWin(struct dm *dmp, int force)
@@ -3032,6 +3045,7 @@
ogl_getDisplayImage, /* display to image function */
ogl_reshape,
ogl_makeCurrent,
+ ogl_doevent,
ogl_openFb,
ogl_get_internal,
ogl_put_internal,
@@ -3044,6 +3058,7 @@
ogl_fogHint,
ogl_share_dlist,
0,
+ 1, /* is graphical */
1, /* has displaylist */
0, /* no stereo by default */
1.0, /* zoom-in limit */
@@ -3050,9 +3065,10 @@
1, /* bound flag */
"ogl",
"X Windows with OpenGL graphics",
- 1,
- 0,
- 0,
+ 1, /* top */
+ 0, /* width */
+ 0, /* height */
+ 0, /* dirty */
0, /* bytes per pixel */
0, /* bits per channel */
0,
Modified: brlcad/branches/bioh/src/libdm/glx/dm-ogl.h
===================================================================
--- brlcad/branches/bioh/src/libdm/glx/dm-ogl.h 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/glx/dm-ogl.h 2020-08-06 18:05:03 UTC (rev
76677)
@@ -48,7 +48,47 @@
/* Map +/-2048 GED space into -1.0..+1.0 :: x/2048*/
#define GED2IRIS(x) (((float)(x))*0.00048828125)
+#define DM_REVERSE_COLOR_BYTE_ORDER(_shift, _mask) { \
+ _shift = 24 - _shift; \
+ switch (_shift) { \
+ case 0: \
+ _mask >>= 24; \
+ break; \
+ case 8: \
+ _mask >>= 8; \
+ break; \
+ case 16: \
+ _mask <<= 8; \
+ break; \
+ case 24: \
+ _mask <<= 24; \
+ break; \
+ } \
+ }
+extern struct dm dm_ogl;
+
+#define Ogl_MV_O(_m) offsetof(struct modifiable_ogl_vars, _m)
+
+struct modifiable_ogl_vars {
+ struct dm *this_dm;
+ int cueing_on;
+ int zclipping_on;
+ int zbuffer_on;
+ int lighting_on;
+ int transparency_on;
+ int fastfog;
+ double fogdensity;
+ int zbuf;
+ int rgb;
+ int doublebuffer;
+ int depth;
+ int debug;
+ struct bu_vls log;
+ double bound;
+ int boundFlag;
+};
+
struct ogl_vars {
GLXContext glxc;
GLdouble faceplate_mat[16];
Modified: brlcad/branches/bioh/src/libdm/glx/fb_ogl.h
===================================================================
--- brlcad/branches/bioh/src/libdm/glx/fb_ogl.h 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/glx/fb_ogl.h 2020-08-06 18:05:03 UTC (rev
76677)
@@ -30,7 +30,6 @@
/** @} */
#ifdef FB_USE_INTERNAL_API
-#ifdef IF_OGL
#include "common.h"
# ifdef HAVE_X11_XLIB_H
# include <X11/Xlib.h>
@@ -68,7 +67,6 @@
int double_buffer;
int soft_cmap;
};
-#endif /* IF_OGL */
#endif /* FB_USE_INTERNAL_API */
/*
Modified: brlcad/branches/bioh/src/libdm/glx/if_ogl.c
===================================================================
--- brlcad/branches/bioh/src/libdm/glx/if_ogl.c 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/glx/if_ogl.c 2020-08-06 18:05:03 UTC (rev
76677)
@@ -36,8 +36,6 @@
#include "common.h"
-#ifdef IF_OGL
-
#ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
@@ -2363,13 +2361,6 @@
* collisions until the end of this file */
#undef class
-#else
-
-/* quell empty-compilation unit warnings */
-static const int unused = 0;
-
-#endif /* IF_OGL */
-
/*
* Local Variables:
* mode: C
Modified: brlcad/branches/bioh/src/libdm/include/calltable.h
===================================================================
--- brlcad/branches/bioh/src/libdm/include/calltable.h 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/include/calltable.h 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -96,6 +96,7 @@
int (*dm_getDisplayImage)(struct dm *dmp, unsigned char **image); /**<
@brief (0,0) is upper left pixel */
int (*dm_reshape)(struct dm *dmp, int width, int height);
int (*dm_makeCurrent)(struct dm *dmp);
+ int (*dm_doevent)(struct dm *dmp, void *clientData, void *eventPtr);
int (*dm_openFb)(struct dm *dmp);
int (*dm_get_internal)(struct dm *dmp);
int (*dm_put_internal)(struct dm *dmp);
@@ -108,6 +109,7 @@
void (*dm_fogHint)(struct dm *dmp, int fastfog);
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 */
int dm_displaylist; /**< @brief !0 means device has
displaylist */
int dm_stereo; /**< @brief stereo flag */
double dm_bound; /**< @brief zoom-in limit */
@@ -117,6 +119,7 @@
int dm_top; /**< @brief !0 means toplevel window */
int dm_width;
int dm_height;
+ int dm_dirty;
int dm_bytes_per_pixel;
int dm_bits_per_channel; /* bits per color channel */
int dm_lineWidth;
Modified: brlcad/branches/bioh/src/libdm/include/private.h
===================================================================
--- brlcad/branches/bioh/src/libdm/include/private.h 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/include/private.h 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -107,55 +107,7 @@
(_dr) == (_sr) &&\
(_dg) == (_sg) &&\
(_db) == (_sb))
-#if defined(DM_X) || defined(DM_OGL)
-#define DM_REVERSE_COLOR_BYTE_ORDER(_shift, _mask) { \
- _shift = 24 - _shift; \
- switch (_shift) { \
- case 0: \
- _mask >>= 24; \
- break; \
- case 8: \
- _mask >>= 8; \
- break; \
- case 16: \
- _mask <<= 8; \
- break; \
- case 24: \
- _mask <<= 24; \
- break; \
- } \
- }
-#else
-/* Do nothing */
-#define DM_REVERSE_COLOR_BYTE_ORDER(_shift, _mask)
-#endif
-
-
-#if defined(DM_OGL) || defined(DM_WGL)
-#define Ogl_MV_O(_m) offsetof(struct modifiable_ogl_vars, _m)
-
-struct modifiable_ogl_vars {
- struct dm *this_dm;
- int cueing_on;
- int zclipping_on;
- int zbuffer_on;
- int lighting_on;
- int transparency_on;
- int fastfog;
- double fogdensity;
- int zbuf;
- int rgb;
- int doublebuffer;
- int depth;
- int debug;
- struct bu_vls log;
- double bound;
- int boundFlag;
-};
-#endif
-
-
__BEGIN_DECLS
int
Modified: brlcad/branches/bioh/src/libdm/null/dm-Null.c
===================================================================
--- brlcad/branches/bioh/src/libdm/null/dm-Null.c 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/null/dm-Null.c 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -293,6 +293,11 @@
return 0;
}
+int
+null_doevent(struct dm *UNUSED(dmp), void *UNUSED(clientData), void
*UNUSED(eventPtr))
+{
+ return 0;
+}
int
null_openFb(struct dm *UNUSED(dmp))
@@ -341,6 +346,7 @@
null_getDisplayImage,
null_reshape,
null_makeCurrent,
+ null_doevent,
null_openFb,
NULL,
NULL,
@@ -353,6 +359,7 @@
NULL,
NULL,
0,
+ 0, /* not graphical */
0, /* no displaylist */
0, /* no stereo */
0.0, /* zoom-in limit */
@@ -362,6 +369,7 @@
0,/* top */
0,/* width */
0,/* height */
+ 0,/* dirty */
0,/* bytes per pixel */
0,/* bits per channel */
0,
Modified: brlcad/branches/bioh/src/libdm/null/dm-Null.h
===================================================================
--- brlcad/branches/bioh/src/libdm/null/dm-Null.h 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/null/dm-Null.h 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -194,6 +194,10 @@
null_makeCurrent(struct dm *dmp);
+DM_NULL_EXPORT extern int
+null_doevent(struct dm *dmp, void *clientData, void *eventPtr);
+
+
DM_NULL_EXPORT extern void
null_processEvents(struct dm *dmp);
Modified: brlcad/branches/bioh/src/libdm/osgl/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/osgl/CMakeLists.txt 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/osgl/CMakeLists.txt 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -1,54 +1,72 @@
-# Make sure we know about required components
-find_package(X11)
-find_package(GL)
-#find_package(OpenThreads)
-#find_package(OpenSceneGraph)
-find_package(TCL)
-
-# Include directories needed by libdm users
-include_directories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${BRLCAD_BINARY_DIR}/include
- ${BRLCAD_SOURCE_DIR}/include
- ${BU_INCLUDE_DIRS}
- ${RT_INCLUDE_DIRS}
- ${X11_INCLUDE_DIR}
- ${OPENGL_INCLUDE_DIR_GL}
- ${OPENGL_INCLUDE_DIR_GLX}
- ${TCL_INCLUDE_PATH}
- ${TK_INCLUDE_PATH}
- ${OPENTHREADS_INCLUDE_DIR}
- ${OSG_INCLUDE_DIR}
- )
-
-set(OSGL_LIBRARIES
- ${OPENGL_LIBRARIES}
- ${TCL_LIBRARY}
- ${TK_LIBRARY}
- ${OSG_LIBRARY}
- ${OSGTEXT_LIBRARY}
- ${OSGVIEWER_LIBRARY}
- )
-
set(OSGL_SRCS
dm-osgl.cpp
if_osgl.cpp
)
-set_property(SOURCE dm-osgl.cpp APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
-set_property(SOURCE if_osgl.cpp APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+if(BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_OSG)
-add_definitions(-DDM_PLUGIN)
-add_definitions(-DDM_OSGL -DIF_OSGL)
+ # Make sure we know about required components
+ find_package(X11)
+ find_package(GL)
+ #find_package(OpenThreads)
+ #find_package(OpenSceneGraph)
+ find_package(TCL)
-add_library(dm-osgl SHARED ${OSGL_SRCS})
-target_link_libraries(dm-osgl libdm librt libbu ${OSGL_LIBRARIES})
-set_property(TARGET dm-osgl APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-osgl "${OSGL_SRCS}")
+ # Include directories needed by libdm users
+ include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${RT_INCLUDE_DIRS}
+ ${X11_INCLUDE_DIR}
+ ${OPENGL_INCLUDE_DIR_GL}
+ ${OPENGL_INCLUDE_DIR_GLX}
+ ${TCL_INCLUDE_PATH}
+ ${TK_INCLUDE_PATH}
+ ${OPENTHREADS_INCLUDE_DIR}
+ ${OSG_INCLUDE_DIR}
+ )
-PLUGIN_SETUP(dm-osgl dm)
+ set(OSGL_LIBRARIES
+ ${OPENGL_LIBRARIES}
+ ${TCL_LIBRARY}
+ ${TK_LIBRARY}
+ ${OSG_LIBRARY}
+ ${OSGTEXT_LIBRARY}
+ ${OSGVIEWER_LIBRARY}
+ )
+ set_property(SOURCE dm-osgl.cpp APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+ set_property(SOURCE if_osgl.cpp APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+
+ add_definitions(-DDM_PLUGIN)
+
+ add_library(dm-osgl SHARED ${OSGL_SRCS})
+ target_link_libraries(dm-osgl libdm librt libbu ${OSGL_LIBRARIES})
+ set_property(TARGET dm-osgl APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+ VALIDATE_STYLE(dm-osgl "${OSGL_SRCS}")
+
+ PLUGIN_SETUP(dm-osgl dm)
+
+endif(BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_OSG)
+
+#if(BRLCAD_ENABLE_OSG)
+# BRLCAD_ADDEXEC(osg-test osg-test.cpp "librt;libbu;${OSG_LIBRARIES}"
NO_STRICT NO_INSTALL)
+# if(HIDE_INTERNAL_SYMBOLS)
+# if (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
+# set_property(TARGET libdm APPEND PROPERTY COMPILE_DEFINITIONS
"FREETYPE_DLL_IMPORTS")
+# endif (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
+# if(TARGET libdm-obj)
+# if (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
+# set_property(TARGET libdm-obj APPEND PROPERTY COMPILE_DEFINITIONS
"FREETYPE_DLL_IMPORTS")
+# endif (TARGET osg OR HIDE_INTERNAL_SYMBOLS_EXT)
+# endif(TARGET libdm-obj)
+# endif(HIDE_INTERNAL_SYMBOLS)
+#endif(BRLCAD_ENABLE_OSG)
+
CMAKEFILES(
+ ${OSGL_SRCS}
dm-osgl.h
fb_osgl.h
osg-test.cpp
Modified: brlcad/branches/bioh/src/libdm/osgl/dm-osgl.cpp
===================================================================
--- brlcad/branches/bioh/src/libdm/osgl/dm-osgl.cpp 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/osgl/dm-osgl.cpp 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -305,6 +305,19 @@
return TCL_OK;
}
+HIDDEN int
+osgl_doevent(struct dm *dmp, void *UNUSED(vclientData), void *veventPtr)
+{
+ XEvent *eventPtr= (XEvent *)veventPtr;
+ if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
+ (void)dm_make_current(dmp);
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+ dm_set_dirty(dmp, 1);
+ return TCL_OK;
+ }
+ /* allow further processing of this event */
+ return TCL_OK;
+}
HIDDEN int
osgl_configureWin(struct dm *dmp, int force)
@@ -2682,6 +2695,7 @@
osgl_getDisplayImage, /* display to image function */
osgl_reshape,
osgl_makeCurrent,
+ osgl_doevent,
osgl_openFb,
osgl_get_internal,
osgl_put_internal,
@@ -2694,6 +2708,7 @@
NULL,
NULL,
0,
+ 1, /* is graphical */
1, /* has displaylist */
0, /* no stereo by default */
1.0, /* zoom-in limit */
@@ -2700,9 +2715,10 @@
1, /* bound flag */
"osgl",
"OpenGL graphics via OpenSceneGraph",
- 1,
- 0,
- 0,
+ 1, /* top */
+ 0, /* width */
+ 0, /* height */
+ 0, /* dirty */
0, /* bytes per pixel */
0, /* bits per channel */
0,
Modified: brlcad/branches/bioh/src/libdm/osgl/dm-osgl.h
===================================================================
--- brlcad/branches/bioh/src/libdm/osgl/dm-osgl.h 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/osgl/dm-osgl.h 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -94,6 +94,8 @@
/* Map +/-2048 GED space into -1.0..+1.0 :: x/2048*/
#define GED2IRIS(x) (((float)(x))*0.00048828125)
+extern struct dm dm_osgl;
+
#define Osgl_MV_O(_m) offsetof(struct modifiable_osgl_vars, _m)
struct modifiable_osgl_vars {
Modified: brlcad/branches/bioh/src/libdm/osgl/fb_osgl.h
===================================================================
--- brlcad/branches/bioh/src/libdm/osgl/fb_osgl.h 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/osgl/fb_osgl.h 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -30,7 +30,6 @@
/** @} */
#ifdef FB_USE_INTERNAL_API
-#ifdef IF_OSGL
#include "common.h"
#ifdef HAVE_SIGNAL_H
@@ -120,7 +119,6 @@
int double_buffer;
int soft_cmap;
};
-#endif /* IF_OSGL */
#endif /* FB_USE_INTERNAL_API */
Modified: brlcad/branches/bioh/src/libdm/osgl/if_osgl.cpp
===================================================================
--- brlcad/branches/bioh/src/libdm/osgl/if_osgl.cpp 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/osgl/if_osgl.cpp 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -35,8 +35,6 @@
/** @} */
-#ifdef IF_OSGL
-
#include "common.h"
#include <osg/GLExtensions>
@@ -1528,13 +1526,6 @@
* collisions until the end of this file */
#undef class
-#else
-
-/* quell empty-compilation unit warnings */
-static const int unused = 0;
-
-#endif /* IF_OSGL */
-
/*
* Local Variables:
* mode: C
Modified: brlcad/branches/bioh/src/libdm/plot/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/plot/CMakeLists.txt 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/plot/CMakeLists.txt 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -1,26 +1,34 @@
-include_directories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${BRLCAD_BINARY_DIR}/include
- ${BRLCAD_SOURCE_DIR}/include
- ${BU_INCLUDE_DIRS}
- ${TCL_INCLUDE_PATH}
- )
-
set(PLOT_SRCS
dm-plot.c
)
-add_definitions(-DDM_PLUGIN)
-add_library(dm-plot SHARED ${PLOT_SRCS})
-target_link_libraries(dm-plot libdm libbu ${TCL_LIBRARY})
-set_property(TARGET dm-plot APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-plot "${PLOT_SRCS}")
+if(BRLCAD_ENABLE_TCL)
-PLUGIN_SETUP(dm-plot dm)
+ include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${TCL_INCLUDE_PATH}
+ )
-CMAKEFILES(dm-plot.h)
+ add_definitions(-DDM_PLUGIN)
+ add_library(dm-plot SHARED ${PLOT_SRCS})
+ target_link_libraries(dm-plot libdm libbu ${TCL_LIBRARY})
+ set_property(TARGET dm-plot APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+ VALIDATE_STYLE(dm-plot "${PLOT_SRCS}")
+
+ PLUGIN_SETUP(dm-plot dm)
+
+endif(BRLCAD_ENABLE_TCL)
+
+CMAKEFILES(
+ ${PLOT_SRCS}
+ dm-plot.h
+ )
+
# Local Variables:
# tab-width: 8
# mode: cmake
Modified: brlcad/branches/bioh/src/libdm/plot/dm-plot.c
===================================================================
--- brlcad/branches/bioh/src/libdm/plot/dm-plot.c 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/plot/dm-plot.c 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -704,6 +704,7 @@
null_getDisplayImage, /* display to image function */
null_reshape,
null_makeCurrent,
+ null_doevent,
null_openFb,
NULL,
NULL,
@@ -716,6 +717,7 @@
NULL,
NULL,
0,
+ 0, /* not graphical */
0, /* no displaylist */
0, /* no stereo */
PLOTBOUND, /* zoom-in limit */
@@ -722,9 +724,10 @@
1, /* bound flag */
"plot",
"Screen to UNIX-Plot",
- 0,
- 0,
- 0,
+ 0, /* top */
+ 0, /* width */
+ 0, /* height */
+ 0, /* dirty */
0, /* bytes per pixel */
0, /* bits per channel */
0,
Modified: brlcad/branches/bioh/src/libdm/plot/dm-plot.h
===================================================================
--- brlcad/branches/bioh/src/libdm/plot/dm-plot.h 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/plot/dm-plot.h 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -37,6 +37,8 @@
#define GED_TO_PLOT(x) (x)
#define PLOT_TO_GED(x) (x)
+extern struct dm dm_plot;
+
struct plot_vars {
struct bu_list l;
FILE *up_fp;
Modified: brlcad/branches/bioh/src/libdm/postscript/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/postscript/CMakeLists.txt 2020-08-06
18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/src/libdm/postscript/CMakeLists.txt 2020-08-06
18:05:03 UTC (rev 76677)
@@ -1,25 +1,36 @@
-include_directories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${BRLCAD_BINARY_DIR}/include
- ${BRLCAD_SOURCE_DIR}/include
- ${BU_INCLUDE_DIRS}
- )
-
set(PS_SRCS
dm-ps.c
)
-add_definitions(-DDM_PLUGIN)
+if(BRLCAD_ENABLE_TCL)
-add_library(dm-ps SHARED ${PS_SRCS})
-target_link_libraries(dm-ps libdm libbu)
-set_property(TARGET dm-ps APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-ps "${PS_SRCS}")
+ find_package(TCL)
-PLUGIN_SETUP(dm-ps dm)
+ include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${TCL_INCLUDE_PATH}
+ )
-CMAKEFILES(dm-ps.h)
+ add_definitions(-DDM_PLUGIN)
+ add_library(dm-ps SHARED ${PS_SRCS})
+ target_link_libraries(dm-ps libdm libbu)
+ set_property(TARGET dm-ps APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+ VALIDATE_STYLE(dm-ps "${PS_SRCS}")
+
+ PLUGIN_SETUP(dm-ps dm)
+
+endif(BRLCAD_ENABLE_TCL)
+
+CMAKEFILES(
+ CMakeLists.txt
+ ${PS_SRCS}
+ dm-ps.h
+ )
+
# Local Variables:
# tab-width: 8
# mode: cmake
Modified: brlcad/branches/bioh/src/libdm/postscript/dm-ps.c
===================================================================
--- brlcad/branches/bioh/src/libdm/postscript/dm-ps.c 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/postscript/dm-ps.c 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -773,6 +773,7 @@
null_getDisplayImage, /* display to image function */
null_reshape,
null_makeCurrent,
+ null_doevent,
null_openFb,
NULL,
NULL,
@@ -785,15 +786,17 @@
NULL,
NULL,
0,
+ 0, /* not graphical */
0, /* no displaylist */
- 0, /* no stereo */
+ 0, /* no stereo */
PLOTBOUND, /* zoom-in limit */
1, /* bound flag */
"ps",
"Screen to PostScript",
- 0,
- 0,
- 0,
+ 0, /* top */
+ 0, /* width */
+ 0, /* height */
+ 0, /* dirty */
0, /* bytes per pixel */
0, /* bits per channel */
0,
Modified: brlcad/branches/bioh/src/libdm/postscript/dm-ps.h
===================================================================
--- brlcad/branches/bioh/src/libdm/postscript/dm-ps.h 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/postscript/dm-ps.h 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -34,6 +34,8 @@
*/
#define GED_TO_PS(x) ((int)((x)+2048))
+extern struct dm dm_ps;
+
struct ps_vars {
struct bu_list l;
FILE *ps_fp;
Modified: brlcad/branches/bioh/src/libdm/qt/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/qt/CMakeLists.txt 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/qt/CMakeLists.txt 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -1,46 +1,51 @@
-# Make sure we know about required components
-find_package(X11)
-find_package(GL)
-find_package(Qt5Widgets QUIET)
-find_package(TCL)
-
-# Include directories needed by libdm users
-include_directories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/../include
- ${BRLCAD_BINARY_DIR}/include
- ${BRLCAD_SOURCE_DIR}/include
- ${BU_INCLUDE_DIRS}
- ${TCL_INCLUDE_PATH}
- ${TK_INCLUDE_PATH}
- ${Qt5Widgets_INCLUDE_DIRS}
- )
-
-set(QT_LIBRARIES
- ${TCL_LIBRARY}
- ${TK_LIBRARY}
- ${Qt5Widgets_LIBRARIES}
- )
-
set(QT_SRCS
dm-qt.cpp
if_qt.cpp
)
-set_property(SOURCE dm-qt.cpp APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
-set_property(SOURCE if_qt.cpp APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+if(BRLCAD_ENABLE_QT)
-add_definitions(-DDM_PLUGIN)
-add_definitions(-DDM_QT -DIF_QT)
+ # Make sure we know about required components
+ find_package(X11)
+ find_package(GL)
+ find_package(Qt5Widgets QUIET)
+ find_package(TCL)
-add_library(dm-qt SHARED ${QT_SRCS})
-target_link_libraries(dm-qt libdm libbu ${QT_LIBRARIES})
-set_property(TARGET dm-qt APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-qt "${QT_SRCS}")
+ # Include directories needed by libdm users
+ include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${CMAKE_CURRENT_SOURCE_DIR}/../include
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${TCL_INCLUDE_PATH}
+ ${TK_INCLUDE_PATH}
+ ${Qt5Widgets_INCLUDE_DIRS}
+ )
-PLUGIN_SETUP(dm-qt dm)
+ set(QT_LIBRARIES
+ ${TCL_LIBRARY}
+ ${TK_LIBRARY}
+ ${Qt5Widgets_LIBRARIES}
+ )
+ set_property(SOURCE dm-qt.cpp APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+ set_property(SOURCE if_qt.cpp APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+
+ add_definitions(-DDM_PLUGIN)
+
+ add_library(dm-qt SHARED ${QT_SRCS})
+ target_link_libraries(dm-qt libdm libbu ${QT_LIBRARIES})
+ set_property(TARGET dm-qt APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+ VALIDATE_STYLE(dm-qt "${QT_SRCS}")
+
+ PLUGIN_SETUP(dm-qt dm)
+
+endif(BRLCAD_ENABLE_QT)
+
CMAKEFILES(
+ CMakeLists.txt
+ ${QT_SRCS}
fb_qt.h
)
Modified: brlcad/branches/bioh/src/libdm/qt/dm-qt.cpp
===================================================================
--- brlcad/branches/bioh/src/libdm/qt/dm-qt.cpp 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/qt/dm-qt.cpp 2020-08-06 18:05:03 UTC (rev
76677)
@@ -1347,6 +1347,7 @@
qt_getDisplayImage,
qt_reshape,
null_makeCurrent,
+ null_doevent,
qt_openFb,
NULL,
NULL,
@@ -1359,6 +1360,7 @@
NULL,
NULL,
0,
+ 1, /* is graphical */
0, /* no displaylist */
0, /* no stereo */
0.0, /* zoom-in limit */
@@ -1368,6 +1370,7 @@
1,
0,/* width */
0,/* height */
+ 0,/* dirty */
0,/* bytes per pixel */
0,/* bits per channel */
0,
Modified: brlcad/branches/bioh/src/libdm/qt/dm-qt.h
===================================================================
--- brlcad/branches/bioh/src/libdm/qt/dm-qt.h 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/qt/dm-qt.h 2020-08-06 18:05:03 UTC (rev
76677)
@@ -85,6 +85,8 @@
int devbuttonrelease;
};
+extern struct dm dm_qt;
+
#endif /* DM_QT_H */
/** @} */
Modified: brlcad/branches/bioh/src/libdm/qt/fb_qt.h
===================================================================
--- brlcad/branches/bioh/src/libdm/qt/fb_qt.h 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/qt/fb_qt.h 2020-08-06 18:05:03 UTC (rev
76677)
@@ -30,7 +30,6 @@
/** @} */
#ifdef FB_USE_INTERNAL_API
-#ifdef IF_QT
#include "common.h"
#include <QApplication>
#include <QPainter>
@@ -46,7 +45,6 @@
void *draw;
void **qimg;
};
-#endif /* IF_QT */
#endif /* FB_USE_INTERNAL_API */
/*
Modified: brlcad/branches/bioh/src/libdm/tests/dm_test.c
===================================================================
--- brlcad/branches/bioh/src/libdm/tests/dm_test.c 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/tests/dm_test.c 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -36,10 +36,10 @@
bu_log("load msgs: %s\n", dm_init_msgs());
- struct bu_vls *blist = dm_list_types("\n ");
- bu_log("Available types:\n %s\n", bu_vls_cstr(blist));
- bu_vls_free(blist);
- BU_PUT(blist, struct bu_vls);
+ struct bu_vls blist = BU_VLS_INIT_ZERO;
+ dm_list_types(&blist, "\n ");
+ bu_log("Available types:\n %s\n", bu_vls_cstr(&blist));
+ bu_vls_free(&blist);
int vtype;
vtype = dm_valid_type("nu", NULL);
Modified: brlcad/branches/bioh/src/libdm/tk/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/tk/CMakeLists.txt 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/tk/CMakeLists.txt 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -1,34 +1,41 @@
-find_package(TCL)
-
-include_directories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${BRLCAD_BINARY_DIR}/include
- ${BRLCAD_SOURCE_DIR}/include
- ${BU_INCLUDE_DIRS}
- ${TCL_INCLUDE_PATH}
- ${TK_INCLUDE_PATH}
- )
-
set(TK_SRCS
dm-tk.c
if_tk.c
)
-set_property(SOURCE dm-tk.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
-set_property(SOURCE if_tk24.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+if(BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_DM_TK)
-add_definitions(-DDM_PLUGIN)
-add_definitions(-DDM_TK -DIF_TK)
+ find_package(TCL)
-add_library(dm-tk SHARED ${TK_SRCS})
-target_link_libraries(dm-tk libdm libbu ${TCL_LIBRARY} ${TK_LIBRARY})
-set_property(TARGET dm-tk APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-tk "${TK_SRCS}")
+ include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${TCL_INCLUDE_PATH}
+ ${TK_INCLUDE_PATH}
+ )
-PLUGIN_SETUP(dm-tk dm)
+ set_property(SOURCE dm-tk.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+ set_property(SOURCE if_tk24.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
-CMAKEFILES(dm-tk.h)
+ add_definitions(-DDM_PLUGIN)
+ add_library(dm-tk SHARED ${TK_SRCS})
+ target_link_libraries(dm-tk libdm libbu ${TCL_LIBRARY} ${TK_LIBRARY})
+ set_property(TARGET dm-tk APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+ VALIDATE_STYLE(dm-tk "${TK_SRCS}")
+
+ PLUGIN_SETUP(dm-tk dm)
+
+endif(BRLCAD_ENABLE_TK AND BRLCAD_ENABLE_DM_TK)
+
+CMAKEFILES(
+ CMakeLists.txt
+ ${TK_SRCS}
+ dm-tk.h
+ )
+
# Local Variables:
# tab-width: 8
# mode: cmake
Modified: brlcad/branches/bioh/src/libdm/tk/dm-tk.c
===================================================================
--- brlcad/branches/bioh/src/libdm/tk/dm-tk.c 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/tk/dm-tk.c 2020-08-06 18:05:03 UTC (rev
76677)
@@ -1146,6 +1146,7 @@
null_getDisplayImage, /* display to image function */
null_reshape,
null_makeCurrent,
+ null_doevent,
null_openFb,
NULL,
NULL,
@@ -1158,6 +1159,7 @@
NULL,
NULL,
0,
+ 1, /* is graphical */
0, /* no displaylist */
0, /* no stereo */
PLOTBOUND, /* zoom-in limit */
@@ -1164,9 +1166,10 @@
1, /* bound flag */
"Tk",
"Tcl/Tk Abstraction Layer",
- 1,
- 0,
- 0,
+ 1, /* top */
+ 0, /* width */
+ 0, /* height */
+ 0, /* dirty */
0, /* bytes per pixel */
0, /* bits per channel */
0,
Modified: brlcad/branches/bioh/src/libdm/tk/dm-tk.h
===================================================================
--- brlcad/branches/bioh/src/libdm/tk/dm-tk.h 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/tk/dm-tk.h 2020-08-06 18:05:03 UTC (rev
76677)
@@ -36,6 +36,8 @@
#define INIT_XCOLOR(c) memset((c), 0, sizeof(XColor))
+extern struct dm dm_tk;
+
struct tk_vars {
GC gc;
Pixmap pix;
Modified: brlcad/branches/bioh/src/libdm/txt/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/txt/CMakeLists.txt 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/txt/CMakeLists.txt 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -1,25 +1,36 @@
-include_directories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${BRLCAD_BINARY_DIR}/include
- ${BRLCAD_SOURCE_DIR}/include
- ${BU_INCLUDE_DIRS}
- ${TCL_INCLUDE_PATH}
- )
-
set(TXT_SRCS
dm-txt.c
if_debug.c
)
-add_definitions(-DDM_PLUGIN)
+if(BRLCAD_ENABLE_TCL)
-add_library(dm-txt SHARED ${TXT_SRCS})
-target_link_libraries(dm-txt libdm libbu ${TCL_LIBRARY})
-set_property(TARGET dm-txt APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-txt "${TXT_SRCS}")
+ find_package(TCL)
-PLUGIN_SETUP(dm-txt dm)
+ include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${BU_INCLUDE_DIRS}
+ ${TCL_INCLUDE_PATH}
+ )
+ add_definitions(-DDM_PLUGIN)
+
+ add_library(dm-txt SHARED ${TXT_SRCS})
+ target_link_libraries(dm-txt libdm libbu ${TCL_LIBRARY})
+ set_property(TARGET dm-txt APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+ VALIDATE_STYLE(dm-txt "${TXT_SRCS}")
+
+ PLUGIN_SETUP(dm-txt dm)
+
+endif(BRLCAD_ENABLE_TCL)
+
+CMAKEFILES(
+ CMakeLists.txt
+ ${TXT_SRCS}
+ )
+
# Local Variables:
# tab-width: 8
# mode: cmake
Modified: brlcad/branches/bioh/src/libdm/txt/dm-txt.c
===================================================================
--- brlcad/branches/bioh/src/libdm/txt/dm-txt.c 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/txt/dm-txt.c 2020-08-06 18:05:03 UTC (rev
76677)
@@ -32,6 +32,8 @@
#include "dm.h"
#include "../include/private.h"
+extern struct dm dm_txt;
+
struct dm *
txt_open(void *interp, int argc, const char **argv)
{
@@ -341,6 +343,13 @@
HIDDEN int
+txt_doevent(struct dm *UNUSED(dmp), void *UNUSED(vclientData), void
*UNUSED(veventPtr))
+{
+ bu_log("doevent called\n");
+ return 0;
+}
+
+HIDDEN int
txt_openFb(struct dm *UNUSED(dmp))
{
bu_log("openFb called\n");
@@ -388,6 +397,7 @@
txt_getDisplayImage,
txt_reshape,
txt_makeCurrent,
+ txt_doevent,
txt_openFb,
NULL,
NULL,
@@ -400,6 +410,7 @@
NULL,
NULL,
0,
+ 0, /* not graphical */
0, /* no displaylist */
0, /* no stereo */
0.0, /* zoom-in limit */
@@ -409,6 +420,7 @@
0,/* top */
0,/* width */
0,/* height */
+ 0,/* dirty */
0,/* bytes per pixel */
0,/* bits per channel */
0,
Modified: brlcad/branches/bioh/src/libdm/wgl/CMakeLists.txt
===================================================================
--- brlcad/branches/bioh/src/libdm/wgl/CMakeLists.txt 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libdm/wgl/CMakeLists.txt 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -1,35 +1,42 @@
-find_package(GL)
-find_package(TCL)
-
-include_directories(
- ${CMAKE_CURRENT_SOURCE_DIR}
- ${BRLCAD_BINARY_DIR}/include
- ${BRLCAD_SOURCE_DIR}/include
- ${OPENGL_INCLUDE_DIR_GL}
- ${TCL_INCLUDE_PATH}
- ${TK_INCLUDE_PATH}
- )
-
set(WGL_SRCS
dm-wgl.c
if_wgl.c
)
-set_property(SOURCE dm-wgl.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
-set_property(SOURCE if_wgl.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+if(WIN32 AND BRLCAD_ENABLE_OPENGL)
-add_definitions(-DDM_PLUGIN)
-add_definitions(-DDM_WGL -DIF_WGL)
+ find_package(GL)
+ find_package(TCL)
-add_library(dm-wgl SHARED ${WGL_SRCS})
-target_link_libraries(dm-wgl libdm libbu ${TCL_LIBRARY} ${TK_LIBRARY}
${OPENGL32_LIBRARY} ${OPENGL_LIBRARIES})
-set_property(TARGET dm-wgl APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
-VALIDATE_STYLE(dm-wgl "${WGL_SRCS}")
+ include_directories(
+ ${CMAKE_CURRENT_SOURCE_DIR}
+ ${BRLCAD_BINARY_DIR}/include
+ ${BRLCAD_SOURCE_DIR}/include
+ ${OPENGL_INCLUDE_DIR_GL}
+ ${TCL_INCLUDE_PATH}
+ ${TK_INCLUDE_PATH}
+ )
-PLUGIN_SETUP(dm-wgl dm)
+ set_property(SOURCE dm-wgl.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
+ set_property(SOURCE if_wgl.c APPEND PROPERTY COMPILE_DEFINITIONS
FB_USE_INTERNAL_API)
-CMAKEFILES(dm-wgl.h)
+ add_definitions(-DDM_PLUGIN)
+ add_library(dm-wgl SHARED ${WGL_SRCS})
+ target_link_libraries(dm-wgl libdm libbu ${TCL_LIBRARY} ${TK_LIBRARY}
${OPENGL32_LIBRARY} ${OPENGL_LIBRARIES})
+ set_property(TARGET dm-wgl APPEND PROPERTY COMPILE_DEFINITIONS BRLCADBUILD
HAVE_CONFIG_H)
+ VALIDATE_STYLE(dm-wgl "${WGL_SRCS}")
+
+ PLUGIN_SETUP(dm-wgl dm)
+
+endif(WIN32 AND BRLCAD_ENABLE_OPENGL)
+
+CMAKEFILES(
+ CMakeLists.txt
+ ${WGL_SRCS}
+ dm-wgl.h
+ )
+
# Local Variables:
# tab-width: 8
# mode: cmake
Modified: brlcad/branches/bioh/src/libdm/wgl/dm-wgl.c
===================================================================
--- brlcad/branches/bioh/src/libdm/wgl/dm-wgl.c 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/wgl/dm-wgl.c 2020-08-06 18:05:03 UTC (rev
76677)
@@ -1786,7 +1786,26 @@
return BRLCAD_OK;
}
+HIDDEN int
+wgl_doevent(struct dm *dmp, void *UNUSED(vclientData), void *veventPtr)
+{
+ XEvent *eventPtr= (XEvent *)veventPtr;
+ if (!dm_make_current(dmp))
+ /* allow further processing of this event */
+ return TCL_OK;
+ if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
+ glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
+
+ dm_set_dirty(dmp, 1);
+ /* no further processing for this event */
+ return TCL_RETURN;
+ }
+ /* allow further processing of this event */
+ return TCL_OK;
+}
+
+
HIDDEN int
wgl_configureWin(struct dm *dmp, int force)
{
@@ -2312,6 +2331,7 @@
wgl_getDisplayImage, /* display to image function */
wgl_reshape,
wgl_makeCurrent,
+ wgl_doevent,
wgl_openFb,
wgl_get_internal,
wgl_put_internal,
@@ -2324,6 +2344,7 @@
wgl_fogHint,
wgl_share_dlist,
0,
+ 1, /* is graphical */
1, /* has displaylist */
0, /* no stereo by default */
1.0, /* zoom-in limit */
@@ -2330,9 +2351,10 @@
1, /* bound flag */
"wgl",
"Windows with OpenGL graphics",
- 1,
- 0,
- 0,
+ 1, /* top */
+ 0, /* width */
+ 0, /* height */
+ 0, /* dirty */
0, /* bytes per pixel */
0, /* bits per channel */
1,
Modified: brlcad/branches/bioh/src/libdm/wgl/dm-wgl.h
===================================================================
--- brlcad/branches/bioh/src/libdm/wgl/dm-wgl.h 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/wgl/dm-wgl.h 2020-08-06 18:05:03 UTC (rev
76677)
@@ -46,6 +46,29 @@
/* Map +/-2048 GED space into -1.0..+1.0 :: x/2048*/
#define GED2IRIS(x) (((float)(x))*0.00048828125)
+extern struct dm dm_wgl;
+
+#define Ogl_MV_O(_m) offsetof(struct modifiable_ogl_vars, _m)
+
+struct modifiable_ogl_vars {
+ struct dm *this_dm;
+ int cueing_on;
+ int zclipping_on;
+ int zbuffer_on;
+ int lighting_on;
+ int transparency_on;
+ int fastfog;
+ double fogdensity;
+ int zbuf;
+ int rgb;
+ int doublebuffer;
+ int depth;
+ int debug;
+ struct bu_vls log;
+ double bound;
+ int boundFlag;
+};
+
struct dm_wglvars {
Display *dpy;
Window win;
Modified: brlcad/branches/bioh/src/libdm/wgl/fb_wgl.h
===================================================================
--- brlcad/branches/bioh/src/libdm/wgl/fb_wgl.h 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libdm/wgl/fb_wgl.h 2020-08-06 18:05:03 UTC (rev
76677)
@@ -30,7 +30,6 @@
/** @} */
#ifdef FB_USE_INTERNAL_API
-#ifdef IF_WGL
# include "common.h"
# include "bio.h"
@@ -52,7 +51,6 @@
int double_buffer;
int soft_cmap;
};
-#endif /* IF_WGL */
#endif /* FB_USE_INTERNAL_API */
/*
Modified: brlcad/branches/bioh/src/libtclcad/dm.c
===================================================================
--- brlcad/branches/bioh/src/libtclcad/dm.c 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/libtclcad/dm.c 2020-08-06 18:05:03 UTC (rev
76677)
@@ -2930,10 +2930,10 @@
int UNUSED(argc),
const char **UNUSED(argv))
{
- struct bu_vls *list = dm_list_types(",");
- Tcl_SetResult(interp, bu_vls_addr(list), TCL_VOLATILE);
- bu_vls_free(list);
- BU_PUT(list, struct bu_vls);
+ struct bu_vls list = BU_VLS_INIT_ZERO;
+ dm_list_types(&list, ",");
+ Tcl_SetResult(interp, bu_vls_addr(&list), TCL_VOLATILE);
+ bu_vls_free(&list);
return TCL_OK;
}
Modified: brlcad/branches/bioh/src/libtclcad/tclcad_obj.c
===================================================================
--- brlcad/branches/bioh/src/libtclcad/tclcad_obj.c 2020-08-06 18:01:54 UTC
(rev 76676)
+++ brlcad/branches/bioh/src/libtclcad/tclcad_obj.c 2020-08-06 18:05:03 UTC
(rev 76677)
@@ -70,14 +70,12 @@
#include "icv/crop.h"
#include "dm.h"
-#if defined(DM_OGL) || defined(DM_WGL)
-# if defined(DM_WGL)
-# include <tkwinport.h>
-# endif
-# ifdef HAVE_GL_GL_H
-# include <GL/gl.h>
-# endif
+#if defined(HAVE_WINDOWS_H)
+# include <tkwinport.h>
#endif
+#ifdef HAVE_GL_GL_H
+# include <GL/gl.h>
+#endif
/* For the moment call internal libged functions - a cleaner
* solution will be needed eventually */
@@ -375,7 +373,7 @@
ged_func_ptr func,
const char *usage,
int maxargs);
-#if defined(DM_OGL) || defined(DM_WGL)
+#ifdef HAVE_GL_GL_H
HIDDEN int to_pix(struct ged *gedp,
int argc,
const char *argv[],
@@ -910,7 +908,7 @@
{"oscale_mode", "obj x y", TO_UNLIMITED, to_oscale_mode,
GED_FUNC_PTR_NULL},
{"otranslate_mode", "obj x y", TO_UNLIMITED, to_otranslate_mode,
GED_FUNC_PTR_NULL},
{"paint_rect_area", "vname", TO_UNLIMITED, to_paint_rect_area,
GED_FUNC_PTR_NULL},
-#if defined(DM_OGL) || defined(DM_WGL)
+#ifdef HAVE_GL_GL_H
{"pix", "file", TO_UNLIMITED, to_pix, GED_FUNC_PTR_NULL},
{"png", "file", TO_UNLIMITED, to_png, GED_FUNC_PTR_NULL},
#endif
@@ -2921,7 +2919,6 @@
bu_vls_addr(¤t_top->to_gedp->go_name),
bu_vls_addr(&gdvp->gv_name),
bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)));
-#ifdef DM_X
bu_vls_printf(&bindings, "bind %s <4> {%s zoom %s 1.1; break}; ",
bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
bu_vls_addr(¤t_top->to_gedp->go_name),
@@ -2930,8 +2927,6 @@
bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
bu_vls_addr(¤t_top->to_gedp->go_name),
bu_vls_addr(&gdvp->gv_name));
-#endif
-#ifdef DM_WGL
bu_vls_printf(&bindings, "bind %s <MouseWheel> {if {%%D < 0} {%s zoom
%s 0.9} else {%s zoom %s 1.1}; break}; ",
bu_vls_addr(dm_get_pathname((struct dm *)gdvp->dmp)),
bu_vls_addr(¤t_top->to_gedp->go_name),
@@ -2938,7 +2933,6 @@
bu_vls_addr(&gdvp->gv_name),
bu_vls_addr(¤t_top->to_gedp->go_name),
bu_vls_addr(&gdvp->gv_name));
-#endif
/* Idle Mode */
bu_vls_printf(&bindings, "bind %s <ButtonRelease> {%s idle_mode %s}; ",
@@ -4745,7 +4739,7 @@
}
-#if defined(DM_OGL) || defined(DM_WGL)
+#ifdef HAVE_GL_GL_H
HIDDEN int
to_pix(struct ged *gedp,
int argc,
Modified: brlcad/branches/bioh/src/mged/attach.c
===================================================================
--- brlcad/branches/bioh/src/mged/attach.c 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/mged/attach.c 2020-08-06 18:05:03 UTC (rev
76677)
@@ -60,50 +60,6 @@
BU_STR_EQUIV(_name, "txt") || \
BU_STR_EQUIV(_name, "qt"))
-/* All systems can compile these! */
-extern int Plot_dm_init(struct dm_list *o_dm_list, int argc, const char
*argv[]);
-extern int PS_dm_init(struct dm_list *o_dm_list, int argc, const char *argv[]);
-extern int Txt_dm_init(struct dm_list *o_dm_list, int argc, const char
*argv[]);
-
-#ifdef DM_X
-extern int X_dm_init();
-#endif /* DM_X */
-
-#if 0
-/* Turn this off until we get it working properly... */
-#ifdef DM_TK
-extern int tk_dm_init();
-#endif /* DM_TK */
-#endif
-
-#ifdef DM_WGL
-extern int Wgl_dm_init();
-#endif /* DM_WGL */
-
-#ifdef DM_OGL
-# if defined(HAVE_TK)
-extern int Ogl_dm_init();
-# endif
-#endif /* DM_OGL */
-
-#ifdef DM_OSG
-extern int Osg_dm_init();
-#endif /* DM_OSG */
-
-#ifdef DM_GLX
-extern int Glx_dm_init();
-#endif /* DM_GLX */
-
-#ifdef DM_QT
-extern int Qt_dm_init();
-#endif /* DM_QT */
-
-#ifdef DM_OSGL
-# if defined(HAVE_TK)
-extern int Osgl_dm_init();
-# endif
-#endif /* DM_OSGL */
-
extern void share_dlist(struct dm_list *dlp2); /* defined in share.c */
extern struct _color_scheme default_color_scheme;
@@ -127,124 +83,6 @@
}
}
-#ifdef DM_OGL
-static int
-ogl_doevent(void *UNUSED(vclientData), void *veventPtr)
-{
- /*ClientData clientData = (ClientData)vclientData;*/
- XEvent *eventPtr= (XEvent *)veventPtr;
- if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
- (void)dm_make_current(DMP);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- dirty = 1;
- return TCL_OK;
- }
- /* allow further processing of this event */
- return TCL_OK;
-}
-#endif
-
-#ifdef DM_OSGL
-static int
-osgl_doevent(void *UNUSED(vclientData), void *veventPtr)
-{
- /*ClientData clientData = (ClientData)vclientData;*/
- XEvent *eventPtr= (XEvent *)veventPtr;
- if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
- (void)dm_make_current(DMP);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- dirty = 1;
- return TCL_OK;
- }
- /* allow further processing of this event */
- return TCL_OK;
-}
-#endif
-
-#ifdef DM_WGL
-/* TODO - is there a reason the dm_make_current is outside the
- * if clause on Windows but not elsewhere? */
-static int
-wgl_doevent(void *UNUSED(vclientData), void *veventPtr)
-{
- /*ClientData clientData = (ClientData)vclientData;*/
- XEvent *eventPtr= (XEvent *)veventPtr;
- if (!dm_make_current(DMP))
- /* allow further processing of this event */
- return TCL_OK;
-
- if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- dirty = 1;
- /* no further processing for this event */
- return TCL_RETURN;
- }
- /* allow further processing of this event */
- return TCL_OK;
-}
-#endif
-
-#if defined(HAVE_TK)
-static int
-x_doevent(void *UNUSED(vclientData), void *veventPtr)
-{
- /*ClientData clientData = (ClientData)vclientData;*/
- XEvent *eventPtr= (XEvent *)veventPtr;
- if (eventPtr->type == Expose && eventPtr->xexpose.count == 0) {
-
- dirty = 1;
- /* no further processing for this event */
- return TCL_RETURN;
- }
- /* allow further processing of this event */
- return TCL_OK;
-}
-#endif
-
-typedef int (*eventfptr)();
-
-struct w_dm which_dm[] = {
- { "plot", NULL}, /* DM_PLOT_INDEX defined in mged_dm.h */
- { "ps", NULL}, /* DM_PS_INDEX defined in mged_dm.h */
- { "txt", NULL},
-#ifdef DM_X
- { "X", x_doevent },
-#endif /* DM_X */
-#ifdef DM_TK
- { "tk", NULL},
-#endif /* DM_TK */
-#ifdef DM_WGL
- { "wgl", wgl_doevent },
-#endif /* DM_WGL */
-#ifdef DM_OGL
-# if defined(HAVE_TK)
- { "ogl", ogl_doevent },
-# endif
-#endif /* DM_OGL */
-#ifdef DM_OSGL
-# if defined(HAVE_TK)
- { "osgl", osgl_doevent },
-# endif
-#endif /* DM_OSGL */
-#ifdef DM_QT
- { "qt", x_doevent },
-#endif /* DM_QT */
- { (char *)NULL, (int (*)())NULL}
-};
-
-static eventfptr
-dm_doevent(const char *dm_type) {
- int i = 0;
- while (which_dm[i].name != NULL) {
- if (dm_type == which_dm[i].name) {
- return which_dm[i].doevent;
- }
- i++;
- }
- return NULL;
-}
-
int
mged_dm_init(struct dm_list *o_dm_list,
const char *dm_type,
@@ -269,9 +107,6 @@
dm_set_vp(DMP, &view_state->vs_gvp->gv_scale);
dm_set_perspective(DMP, mged_variables->mv_perspective_mode);
- /* TODO - look up event handler based on dm_type */
- eventHandler = dm_doevent(dm_type);
-
#ifdef HAVE_TK
Tk_CreateGenericHandler(doEvent, (ClientData)NULL);
#endif
@@ -429,45 +264,16 @@
static void
print_valid_dm(Tcl_Interp *interpreter)
{
- int i = 0;
Tcl_AppendResult(interpreter, "\tThe following display manager types are
valid: ", (char *)NULL);
-#ifdef DM_X
- Tcl_AppendResult(interpreter, "X ", (char *)NULL);
- i++;
-#endif /* DM_X */
-#if 0
-#ifdef DM_TK
- Tcl_AppendResult(interpreter, "tk ", (char *)NULL);
- i++;
-#endif /* DM_TK */
-#endif
-#ifdef DM_WGL
- Tcl_AppendResult(interpreter, "wgl ", (char *)NULL);
- i++;
-#endif /* DM_WGL */
-#ifdef DM_OGL
- Tcl_AppendResult(interpreter, "ogl ", (char *)NULL);
- i++;
-#endif /* DM_OGL */
-#ifdef DM_OSG
- Tcl_AppendResult(interpreter, "osg ", (char *)NULL);
- i++;
-#endif /* DM_OSG*/
-#ifdef DM_OSGL
- Tcl_AppendResult(interpreter, "osgl ", (char *)NULL);
- i++;
-#endif /* DM_OSGL*/
-#ifdef DM_GLX
- Tcl_AppendResult(interpreter, "glx", (char *)NULL);
- i++;
-#endif /* DM_GLX */
-#ifdef DM_QT
- Tcl_AppendResult(interpreter, "qt", (char *)NULL);
- i++;
-#endif /* DM_QT */
- if (i == 0) {
+ struct bu_vls dm_types = BU_VLS_INIT_ZERO;
+ dm_list_types(&dm_types, " ");
+
+ if (bu_vls_strlen(&dm_types)) {
+ Tcl_AppendResult(interpreter, bu_vls_cstr(&dm_types), (char *)NULL);
+ } else {
Tcl_AppendResult(interpreter, "NONE AVAILABLE", (char *)NULL);
}
+ bu_vls_free(&dm_types);
Tcl_AppendResult(interpreter, "\n", (char *)NULL);
}
@@ -475,8 +281,6 @@
int
f_attach(ClientData UNUSED(clientData), Tcl_Interp *interpreter, int argc,
const char *argv[])
{
- struct w_dm *wp;
-
if (argc < 2) {
struct bu_vls vls = BU_VLS_INIT_ZERO;
@@ -493,18 +297,13 @@
return TCL_OK;
}
- /* Look at last argument, skipping over any options which precede it */
- for (wp = &which_dm[2]; wp->name != NULL; wp++)
- if (BU_STR_EQUAL(argv[argc - 1], wp->name))
- break;
-
- if (wp->name == NULL) {
+ if (!dm_valid_type(argv[argc-1], NULL)) {
Tcl_AppendResult(interpreter, "attach(", argv[argc - 1], "): BAD\n",
(char *)NULL);
print_valid_dm(interpreter);
return TCL_ERROR;
}
- return mged_attach(wp, argc, argv);
+ return mged_attach(argv[argc - 1], argc, argv);
}
@@ -585,13 +384,13 @@
int
-mged_attach(struct w_dm *wp, int argc, const char *argv[])
+mged_attach(const char *wp_name, int argc, const char *argv[])
{
int opt_argc;
char **opt_argv;
struct dm_list *o_dm_list;
- if (!wp) {
+ if (!wp_name) {
return TCL_ERROR;
}
@@ -603,7 +402,7 @@
predictor_init();
/* Only need to do this once */
- if (tkwin == NULL && NEED_GUI(wp->name)) {
+ if (tkwin == NULL && NEED_GUI(wp_name)) {
struct dm *tmp_dmp;
struct bu_vls tmp_vls = BU_VLS_INIT_ZERO;
@@ -637,11 +436,11 @@
BU_LIST_APPEND(&head_dm_list.l, &curr_dm_list->l);
- if (!wp->name) {
+ if (!wp_name) {
return TCL_ERROR;
}
- if (mged_dm_init(o_dm_list, wp->name, argc, argv) == TCL_ERROR) {
+ if (mged_dm_init(o_dm_list, wp_name, argc, argv) == TCL_ERROR) {
goto Bad;
}
@@ -694,24 +493,33 @@
void
get_attached(void)
{
- int argc;
- const char *argv[3];
- struct w_dm *wp = (struct w_dm *)NULL;
int inflimit = 1000;
int ret;
struct bu_vls type = BU_VLS_INIT_ZERO;
+ struct bu_vls type_msg = BU_VLS_INIT_ZERO;
+ struct bu_vls dm_types = BU_VLS_INIT_ZERO;
+ dm_list_types(&dm_types, " ");
+ char **dms = (char **)bu_calloc(bu_vls_strlen(&dm_types), sizeof(char *),
"dm name array");
+ int nargc = bu_argv_from_string(dms, bu_vls_strlen(&dm_types),
bu_vls_addr(&dm_types));
+
+ bu_vls_sprintf(&type_msg, "attach (nu");
+ for (int i = 0; i < nargc; i++) {
+ if (BU_STR_EQUAL(dms[i], "nu"))
+ continue;
+ if (BU_STR_EQUAL(dms[i], "plot"))
+ continue;
+ if (BU_STR_EQUAL(dms[i], "postscript"))
+ continue;
+ bu_vls_printf(&type_msg, " %s", dms[i]);
+ }
+ bu_vls_printf(&type_msg, ")[nu]? ");
+ bu_free(dms, "array");
+ bu_vls_free(&dm_types);
+
while (inflimit > 0) {
- bu_vls_trunc(&type, 0);
- bu_log("attach (nu");
+ bu_log("%s", bu_vls_cstr(&type_msg));
- /* print all the available display manager types, skipping plot and ps
*/
- wp = &which_dm[2];
- for (; wp->name != NULL; wp++) {
- bu_log("|%s", wp->name);
- }
- bu_log(")[nu]? ");
-
ret = bu_vls_gets(&type, stdin);
if (ret < 0) {
/* handle EOF */
@@ -729,13 +537,7 @@
/* trim whitespace before comparisons (but not before checking empty) */
bu_vls_trimspace(&type);
- for (wp = &which_dm[2]; wp->name != NULL; wp++) {
- if (BU_STR_EQUAL(bu_vls_addr(&type), wp->name)) {
- break;
- }
- }
-
- if (wp->name != NULL) {
+ if (dm_valid_type(bu_vls_cstr(&type), NULL)) {
break;
}
@@ -743,20 +545,23 @@
inflimit--;
}
- bu_vls_free(&type);
+ bu_vls_free(&type_msg);
if (inflimit <= 0) {
bu_log("\nInfinite loop protection, attach aborted!\n");
+ bu_vls_free(&type);
return;
}
- bu_log("Starting an %s display manager\n", wp->name);
+ bu_log("Starting an %s display manager\n", bu_vls_cstr(&type));
- argc = 2;
+ int argc = 1;
+ const char *argv[3];
argv[0] = "";
argv[1] = "";
argv[2] = (char *)NULL;
- (void)mged_attach(wp, argc, argv);
+ (void)mged_attach(bu_vls_cstr(&type), argc, argv);
+ bu_vls_free(&type);
}
@@ -782,48 +587,9 @@
bu_vls_free(&vls);
return TCL_ERROR;
}
-#ifdef DM_X
- if (BU_STR_EQUAL(argv[argc-1], "X")) {
- Tcl_AppendResult(interpreter, "X", (char *)NULL);
+ if (dm_valid_type(argv[argc-1], NULL)) {
+ Tcl_AppendResult(interpreter, argv[argc-1], (char *)NULL);
}
-#endif /* DM_X */
-#if 0
-#ifdef DM_TK
- if (BU_STR_EQUAL(argv[argc-1], "tk")) {
- Tcl_AppendResult(interpreter, "tk", (char *)NULL);
- }
-#endif /* DM_TK */
-#endif
-#ifdef DM_WGL
- if (BU_STR_EQUAL(argv[argc-1], "wgl")) {
- Tcl_AppendResult(interpreter, "wgl", (char *)NULL);
- }
-#endif /* DM_WGL */
-#ifdef DM_OGL
- if (BU_STR_EQUAL(argv[argc-1], "ogl")) {
- Tcl_AppendResult(interpreter, "ogl", (char *)NULL);
- }
-#endif /* DM_OGL */
-#ifdef DM_OSG
- if (BU_STR_EQUAL(argv[argc-1], "osg")) {
- Tcl_AppendResult(interpreter, "osg", (char *)NULL);
- }
-#endif /* DM_OSG*/
-#ifdef DM_OSGL
- if (BU_STR_EQUAL(argv[argc-1], "osgl")) {
- Tcl_AppendResult(interpreter, "osgl", (char *)NULL);
- }
-#endif /* DM_OSGL*/
-#ifdef DM_GLX
- if (BU_STR_EQUAL(argv[argc-1], "glx")) {
- Tcl_AppendResult(interpreter, "glx", (char *)NULL);
- }
-#endif /* DM_GLX */
-#ifdef DM_QT
- if (BU_STR_EQUAL(argv[argc-1], "qt")) {
- Tcl_AppendResult(interpreter, "qt", (char *)NULL);
- }
-#endif /* DM_QT */
return TCL_OK;
}
Modified: brlcad/branches/bioh/src/mged/cmd.c
===================================================================
--- brlcad/branches/bioh/src/mged/cmd.c 2020-08-06 18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/src/mged/cmd.c 2020-08-06 18:05:03 UTC (rev 76677)
@@ -1442,7 +1442,7 @@
dml = curr_dm_list;
GEDP->ged_gvp = view_state->vs_gvp;
- status = mged_attach(&which_dm[DM_PS_INDEX], argc, argv);
+ status = mged_attach("postscript", argc, argv);
if (status == TCL_ERROR)
return TCL_ERROR;
Modified: brlcad/branches/bioh/src/mged/doevent.c
===================================================================
--- brlcad/branches/bioh/src/mged/doevent.c 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/mged/doevent.c 2020-08-06 18:05:03 UTC (rev
76677)
@@ -133,12 +133,9 @@
return TCL_OK;
}
- /* XXX - windows fix, for now */
- if (eventHandler == NULL)
- return TCL_CONTINUE;
-
/* calling the display manager specific event handler */
- status = eventHandler(clientData, eventPtr);
+ status = dm_doevent(DMP, clientData, eventPtr);
+ dirty = dm_get_dirty(DMP);
/* no further processing of this event */
if (status != TCL_OK) {
@@ -203,11 +200,7 @@
}
#else
int
-#if !defined(IF_X) && !defined(IF_WGL) && !defined(IF_OGL) && !defined(IF_TK)
doEvent(ClientData UNUSED(clientData), void *UNUSED(eventPtr)) {
-#else
-doEvent(ClientData clientData, void *eventPtr) {
-#endif
return TCL_OK;
}
#endif /* HAVE_X11_XLIB_H */
Modified: brlcad/branches/bioh/src/mged/mged.c
===================================================================
--- brlcad/branches/bioh/src/mged/mged.c 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/mged/mged.c 2020-08-06 18:05:03 UTC (rev
76677)
@@ -150,15 +150,7 @@
int interactive = 1; /* >0 means interactive */
int cbreak_mode = 0; /* >0 means in cbreak_mode */
-#if defined(DM_X) || defined(DM_TK) || defined(DM_OGL) || defined(DM_WGL) ||
defined(DM_OSGL)
-# if defined(HAVE_TK)
-int classic_mged=0;
-# else
int classic_mged=1;
-# endif
-#else
-int classic_mged=1;
-#endif
/* The old mged gui is temporarily the default. */
int old_mged_gui=1;
@@ -1065,6 +1057,12 @@
* Do not use bu_log() or bu_malloc() before here.
*/
+#if defined(HAVE_TK)
+ if (dm_have_graphics()) {
+ classic_mged = 0;
+ }
+#endif
+
bu_optind = 1;
while ((c = bu_getopt(argc, argv, "a:d:hbicorx:X:v?")) != -1) {
if (bu_optopt == '?') c='h';
Modified: brlcad/branches/bioh/src/mged/mged.h
===================================================================
--- brlcad/branches/bioh/src/mged/mged.h 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/mged/mged.h 2020-08-06 18:05:03 UTC (rev
76677)
@@ -76,12 +76,10 @@
/* Needed to define struct menu_item */
#include "./menu.h"
-/* Needed to define struct w_dm */
-#include "./mged_dm.h"
-
/* Needed to define struct solid */
#include "rt/solid.h"
+#include "./mged_dm.h" /* _view_state */
#define MGED_DB_NAME "db"
#define MGED_INMEM_NAME ".inmem"
@@ -449,7 +447,7 @@
/* attach.c */
int is_dm_null(void);
-int mged_attach(struct w_dm *wp, int argc, const char *argv[]);
+int mged_attach(const char *wp_name, int argc, const char *argv[]);
void mged_link_vars(struct dm_list *p);
void mged_slider_free_vls(struct dm_list *p);
int gui_setup(const char *dstr);
Modified: brlcad/branches/bioh/src/mged/mged_dm.h
===================================================================
--- brlcad/branches/bioh/src/mged/mged_dm.h 2020-08-06 18:01:54 UTC (rev
76676)
+++ brlcad/branches/bioh/src/mged/mged_dm.h 2020-08-06 18:05:03 UTC (rev
76677)
@@ -589,12 +589,6 @@
/* defined in setup.c */
extern void mged_rtCmdNotify();
-struct w_dm {
- char *name;
- int (*doevent)();
-};
-extern struct w_dm which_dm[]; /* defined in attach.c */
-
/* indices into which_dm[] */
#define DM_PLOT_INDEX 0
#define DM_PS_INDEX 1
Index: brlcad/branches/bioh/src/other
===================================================================
--- brlcad/branches/bioh/src/other 2020-08-06 18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/src/other 2020-08-06 18:05:03 UTC (rev 76677)
Property changes on: brlcad/branches/bioh/src/other
___________________________________________________________________
Modified: svn:mergeinfo
## -8,4 +8,4 ##
/brlcad/branches/osg/src/other:62110-62113
/brlcad/branches/prep-cache/src/other:68236-68933
/brlcad/branches/tcltk86/src/other:68300-75257
-/brlcad/trunk/src/other:75720-75834,75891-75933,75986-76085,76160-76351
\ No newline at end of property
+/brlcad/trunk/src/other:75720-75834,75891-75933,75986-76085,76160-76351,76657-76676
\ No newline at end of property
Modified: brlcad/branches/bioh/src/other/openNURBS/opennurbs_extensions.h
===================================================================
--- brlcad/branches/bioh/src/other/openNURBS/opennurbs_extensions.h
2020-08-06 18:01:54 UTC (rev 76676)
+++ brlcad/branches/bioh/src/other/openNURBS/opennurbs_extensions.h
2020-08-06 18:05:03 UTC (rev 76677)
@@ -26,6 +26,7 @@
{
public:
#if defined(ON_COMPILER_MSC)
+#if defined(ON_DLL_EXPORTS) || defined(ON_DLL_IMPORTS)
// See comments at the top of opennurbs_extensions.cpp for details.
// new/delete
@@ -40,6 +41,7 @@
void* operator new(size_t,void*);
void operator delete(void*,void*);
#endif
+#endif
ONX_Model_UserData();
~ONX_Model_UserData();
@@ -68,6 +70,7 @@
{
public:
#if defined(ON_COMPILER_MSC)
+#if defined(ON_DLL_EXPORTS) || defined(ON_DLL_IMPORTS)
// See comments at the top of opennurbs_extensions.cpp for details.
// new/delete
@@ -82,6 +85,7 @@
void* operator new(size_t,void*);
void operator delete(void*,void*);
#endif
+#endif
ONX_Model_Object();
~ONX_Model_Object();
@@ -110,6 +114,7 @@
{
public:
#if defined(ON_COMPILER_MSC)
+#if defined(ON_DLL_EXPORTS) || defined(ON_DLL_IMPORTS)
// See comments at the top of opennurbs_extensions.cpp for details.
// new/delete
@@ -124,6 +129,7 @@
void* operator new(size_t,void*);
void operator delete(void*,void*);
#endif
+#endif
ONX_Model_RenderLight();
~ONX_Model_RenderLight();
@@ -176,6 +182,7 @@
{
public:
#if defined(ON_COMPILER_MSC)
+#if defined(ON_DLL_EXPORTS) || defined(ON_DLL_IMPORTS)
// See comments at the top of opennurbs_extensions.cpp for details.
// new/delete
@@ -190,6 +197,7 @@
void* operator new(size_t,void*);
void operator delete(void*,void*);
#endif
+#endif
ONX_Model();
virtual ~ONX_Model();
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