Revision: 77234
          http://sourceforge.net/p/brlcad/code/77234
Author:   starseeker
Date:     2020-09-25 18:34:02 +0000 (Fri, 25 Sep 2020)
Log Message:
-----------
Need to double check, but I think the preferentially local includes are still 
be what we want in this scenario...

Modified Paths:
--------------
    brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/config.h.in
    
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/HTMLparser.c
    brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/parser.c
    
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/parserInternals.c
    brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/tree.c
    brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/xlink.c
    brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/xmlIO.c
    brlcad/branches/thirdparty_rework/src/adrt/master/master.c
    brlcad/branches/thirdparty_rework/src/adrt/master/tienet_master.c
    brlcad/branches/thirdparty_rework/src/adrt/slave/tienet_slave.c
    brlcad/branches/thirdparty_rework/src/fb/fb-png.c
    brlcad/branches/thirdparty_rework/src/libicv/png.c
    brlcad/branches/thirdparty_rework/src/proc-db/brepintersect.h
    brlcad/branches/thirdparty_rework/src/util/bw-png.c
    brlcad/branches/thirdparty_rework/src/util/png-bw.c
    brlcad/branches/thirdparty_rework/src/util/png-pix.c

Removed Paths:
-------------
    brlcad/branches/thirdparty_rework/src/libdm/dm_obj.c

Modified: 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/config.h.in
===================================================================
--- brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/config.h.in    
2020-09-25 18:19:35 UTC (rev 77233)
+++ brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/config.h.in    
2020-09-25 18:34:02 UTC (rev 77234)
@@ -240,7 +240,7 @@
 /* Define to 1 if you have the `vsprintf' function. */
 #cmakedefine HAVE_VSPRINTF
 
-/* Define to 1 if you have the <zlib.h> header file. */
+/* Define to 1 if you have the zlib.h header file. */
 /*#define HAVE_ZLIB_H 1 */
 
 /* Define to 1 if you have the `_stat' function. */

Modified: 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/HTMLparser.c
===================================================================
--- 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/HTMLparser.c   
    2020-09-25 18:19:35 UTC (rev 77233)
+++ 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/HTMLparser.c   
    2020-09-25 18:34:02 UTC (rev 77234)
@@ -27,7 +27,7 @@
 #include <unistd.h>
 #endif
 #ifdef HAVE_ZLIB_H
-#include <zlib.h>
+#include "zlib.h"
 #endif
 
 #include <libxml/xmlmemory.h>

Modified: 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/parser.c
===================================================================
--- brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/parser.c   
2020-09-25 18:19:35 UTC (rev 77233)
+++ brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/parser.c   
2020-09-25 18:34:02 UTC (rev 77234)
@@ -77,7 +77,7 @@
 #include <unistd.h>
 #endif
 #ifdef HAVE_ZLIB_H
-#include <zlib.h>
+#include "zlib.h"
 #endif
 
 static void

Modified: 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/parserInternals.c
===================================================================
--- 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/parserInternals.c
  2020-09-25 18:19:35 UTC (rev 77233)
+++ 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/parserInternals.c
  2020-09-25 18:34:02 UTC (rev 77234)
@@ -33,7 +33,7 @@
 #include <unistd.h>
 #endif
 #ifdef HAVE_ZLIB_H
-#include <zlib.h>
+#include "zlib.h"
 #endif
 
 #include <libxml/xmlmemory.h>

Modified: 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/tree.c
===================================================================
--- brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/tree.c     
2020-09-25 18:19:35 UTC (rev 77233)
+++ brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/tree.c     
2020-09-25 18:34:02 UTC (rev 77234)
@@ -22,7 +22,7 @@
 #include <stdlib.h>
 #endif
 #ifdef HAVE_ZLIB_H
-#include <zlib.h>
+#include "zlib.h"
 #endif
 
 #include <libxml/xmlmemory.h>

Modified: 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/xlink.c
===================================================================
--- brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/xlink.c    
2020-09-25 18:19:35 UTC (rev 77233)
+++ brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/xlink.c    
2020-09-25 18:34:02 UTC (rev 77234)
@@ -29,7 +29,7 @@
 #include <unistd.h>
 #endif
 #ifdef HAVE_ZLIB_H
-#include <zlib.h>
+#include "zlib.h"
 #endif
 
 #include <libxml/xmlmemory.h>

Modified: 
brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/xmlIO.c
===================================================================
--- brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/xmlIO.c    
2020-09-25 18:19:35 UTC (rev 77233)
+++ brlcad/branches/thirdparty_rework/misc/tools/xmltools/libxml/src/xmlIO.c    
2020-09-25 18:34:02 UTC (rev 77234)
@@ -33,7 +33,7 @@
 #include <stdlib.h>
 #endif
 #ifdef HAVE_ZLIB_H
-#include <zlib.h>
+#include "zlib.h"
 #endif
 
 #if defined(WIN32) || defined(_WIN32)

Modified: brlcad/branches/thirdparty_rework/src/adrt/master/master.c
===================================================================
--- brlcad/branches/thirdparty_rework/src/adrt/master/master.c  2020-09-25 
18:19:35 UTC (rev 77233)
+++ brlcad/branches/thirdparty_rework/src/adrt/master/master.c  2020-09-25 
18:34:02 UTC (rev 77234)
@@ -38,7 +38,7 @@
 #if 0
 #include <tinycthread.h>
 #endif
-#include <zlib.h>
+#include "zlib.h"
 
 #include "bnetwork.h"
 #include "bio.h"

Modified: brlcad/branches/thirdparty_rework/src/adrt/master/tienet_master.c
===================================================================
--- brlcad/branches/thirdparty_rework/src/adrt/master/tienet_master.c   
2020-09-25 18:19:35 UTC (rev 77233)
+++ brlcad/branches/thirdparty_rework/src/adrt/master/tienet_master.c   
2020-09-25 18:34:02 UTC (rev 77234)
@@ -41,7 +41,7 @@
 #ifdef HAVE_NETDB_H
 #  include <netdb.h>
 #endif
-#include <zlib.h>
+#include "zlib.h"
 
 #include "rt/tie.h"
 #include "bu/str.h"

Modified: brlcad/branches/thirdparty_rework/src/adrt/slave/tienet_slave.c
===================================================================
--- brlcad/branches/thirdparty_rework/src/adrt/slave/tienet_slave.c     
2020-09-25 18:19:35 UTC (rev 77233)
+++ brlcad/branches/thirdparty_rework/src/adrt/slave/tienet_slave.c     
2020-09-25 18:34:02 UTC (rev 77234)
@@ -34,7 +34,7 @@
 #include <netdb.h>
 #include <string.h>
 
-#include <zlib.h>
+#include "zlib.h"
 
 #include "bio.h"
 #include "rt/tie.h"

Modified: brlcad/branches/thirdparty_rework/src/fb/fb-png.c
===================================================================
--- brlcad/branches/thirdparty_rework/src/fb/fb-png.c   2020-09-25 18:19:35 UTC 
(rev 77233)
+++ brlcad/branches/thirdparty_rework/src/fb/fb-png.c   2020-09-25 18:34:02 UTC 
(rev 77234)
@@ -29,7 +29,7 @@
 
 #include <stdlib.h>
 #include <sys/stat.h>
-#include <png.h>
+#include "png.h"
 
 #include "bio.h"
 

Deleted: brlcad/branches/thirdparty_rework/src/libdm/dm_obj.c
===================================================================
--- brlcad/branches/thirdparty_rework/src/libdm/dm_obj.c        2020-09-25 
18:19:35 UTC (rev 77233)
+++ brlcad/branches/thirdparty_rework/src/libdm/dm_obj.c        2020-09-25 
18:34:02 UTC (rev 77234)
@@ -1,3080 +0,0 @@
-/*                        D M _ O B J . C
- * BRL-CAD
- *
- * Copyright (c) 1997-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 libdm/dm_obj.c
- *
- * A display manager object contains the attributes and
- * methods for controlling display managers.
- *
- */
-
-#include "common.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <math.h>
-
-#include <png.h>
-
-#include "tcl.h"
-
-#include "bu/cmd.h"
-#include "bu/endian.h"
-#include "vmath.h"
-#include "bn.h"
-#include "rt/db4.h"
-#include "raytrace.h"
-#include "nmg.h"
-#include "rt/geom.h"
-#include "rt/solid.h"
-#include "dm.h"
-#include "dm_private.h"
-
-#ifdef DM_X
-#  include "dm/dm_xvars.h"
-#  include <X11/Xutil.h>
-#  include "dm-X.h"
-#endif /* DM_X */
-
-#ifdef DM_TK
-#  include "dm/dm_xvars.h"
-#  include "tk.h"
-#  include "dm-tk.h"
-#endif /* DM_TK */
-
-#ifdef DM_OGL
-#  include "dm/dm_xvars.h"
-#  include "dm-ogl.h"
-#endif /* DM_OGL */
-
-#ifdef DM_WGL
-#  include "dm/dm_xvars.h"
-#  include <tkwinport.h>
-#  include "dm-wgl.h"
-#endif /* DM_WGL */
-
-#ifdef USE_FBSERV
-#  include "fb.h"
-#endif
-
-/**
- *@brief
- * A display manager object is used for interacting with a display manager.
- */
-struct dm_obj {
-    struct bu_list l;
-    struct bu_vls dmo_name;            /**< @brief display manager object 
name/cmd */
-    dm *dmo_dmp;               /**< @brief display manager pointer */
-#ifdef USE_FBSERV
-    struct fbserv_obj dmo_fbs;         /**< @brief fbserv object */
-#endif
-    struct bu_observer_list dmo_observers;             /**< @brief fbserv 
observers */
-    mat_t viewMat;
-    int (*dmo_drawLabelsHook)(dm *, struct rt_wdb *, const char *, mat_t, int 
*, ClientData);
-    void *dmo_drawLabelsHookClientData;
-    Tcl_Interp *interp;
-};
-
-
-static struct dm_obj HeadDMObj;        /* head of display manager object list 
*/
-
-
-#ifdef USE_FBSERV
-/*
- * Open/activate the display managers framebuffer.
- */
-HIDDEN int
-dmo_openFb(struct dm_obj *dmop)
-{
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    /* already open */
-    if (dmop->dmo_fbs.fbs_fbp != FB_NULL)
-       return BRLCAD_OK;
-
-    dmop->dmo_fbs.fbs_fbp = dm_get_fb(dmop->dmo_dmp);
-
-    if (dmop->dmo_fbs.fbs_fbp == FB_NULL) {
-       Tcl_Obj *obj;
-
-       obj = Tcl_GetObjResult(dmop->interp);
-       if (Tcl_IsShared(obj))
-           obj = Tcl_DuplicateObj(obj);
-
-       Tcl_AppendStringsToObj(obj, "openfb: failed to allocate framebuffer 
memory\n", (char *)NULL);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_ERROR;
-    }
-
-    return BRLCAD_OK;
-}
-
-
-/*
- * Draw the point.
- *
- * Usage:
- * objname drawPoint x y
- *
- */
-HIDDEN int
-dmo_closeFb(struct dm_obj *dmop)
-{
-    if (dmop->dmo_fbs.fbs_fbp == FB_NULL)
-       return BRLCAD_OK;
-
-    fb_flush(dmop->dmo_fbs.fbs_fbp);
-    fb_close_existing(dmop->dmo_fbs.fbs_fbp);
-
-    dmop->dmo_fbs.fbs_fbp = FB_NULL;
-
-    return BRLCAD_OK;
-}
-
-
-/*
- * Set/get the port used to listen for framebuffer clients.
- *
- * Usage:
- * objname listen [port]
- *
- * Returns the port number actually used.
- *
- */
-HIDDEN int
-dmo_listen_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    if (dmop->dmo_fbs.fbs_fbp == FB_NULL) {
-       bu_vls_printf(&vls, "%s listen: framebuffer not open!\n", argv[0]);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_ERROR;
-    }
-
-    /* return the port number */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d", dmop->dmo_fbs.fbs_listener.fbsl_port);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    if (argc == 3) {
-       int port;
-
-       if (sscanf(argv[2], "%d", &port) != 1) {
-           Tcl_AppendStringsToObj(obj, "listen: bad value - ", argv[2], "\n", 
(char *)NULL);
-           Tcl_SetObjResult(dmop->interp, obj);
-           return BRLCAD_ERROR;
-       }
-
-       if (port >= 0)
-           fbs_open(&dmop->dmo_fbs, port);
-       else {
-           fbs_close(&dmop->dmo_fbs);
-       }
-       bu_vls_printf(&vls, "%d", dmop->dmo_fbs.fbs_listener.fbsl_port);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    bu_vls_printf(&vls, "helplib_alias dm_listen %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Refresh the display managers framebuffer.
- *
- * Usage:
- * objname refresh
- *
- */
-HIDDEN int
-dmo_refreshFb_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-    if (!dmop || !dmop->interp || argc < 1 ||  !argv)
-       return BRLCAD_ERROR;
-
-    if (dmop->dmo_fbs.fbs_fbp == FB_NULL) {
-       Tcl_Obj *obj;
-
-       obj = Tcl_GetObjResult(dmop->interp);
-       if (Tcl_IsShared(obj))
-           obj = Tcl_DuplicateObj(obj);
-
-       bu_vls_printf(&vls, "%s refresh: framebuffer not open!\n", argv[0]);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_ERROR;
-    }
-
-    fb_refresh(dmop->dmo_fbs.fbs_fbp, 0, 0,
-              dmop->dmo_dmp->dm_width, dmop->dmo_dmp->dm_height);
-
-    return BRLCAD_OK;
-}
-#endif
-
-
-HIDDEN int
-dmo_parseAxesArgs(int argc,
-                 const char **argv,
-                 fastf_t *viewSize,
-                 mat_t rmat,
-                 point_t axesPos,
-                 fastf_t *axesSize,
-                 int *axesColor,
-                 int *labelColor,
-                 int *lineWidth,
-                 int *posOnly,
-                 int *tripleColor,
-                 struct bu_vls *vlsp)
-{
-    double scan;
-
-    if (argc < 3 || sscanf(argv[2], "%lf", &scan) != 1) {
-       bu_vls_printf(vlsp, "parseAxesArgs: bad view size - %s\n", argv[2]);
-       return BRLCAD_ERROR;
-    }
-    /* convert double to fastf_t */
-    *viewSize = scan;
-
-    if (argc < 4 || bn_decode_mat(rmat, argv[3]) != 16) {
-       bu_vls_printf(vlsp, "parseAxesArgs: bad rmat - %s\n", argv[3]);
-       return BRLCAD_ERROR;
-    }
-
-    if (argc < 5 || bn_decode_vect(axesPos, argv[4]) != 3) {
-       bu_vls_printf(vlsp, "parseAxesArgs: bad axes position - %s\n", argv[4]);
-       return BRLCAD_ERROR;
-    }
-
-    if (argc < 6 || sscanf(argv[5], "%lf", &scan) != 1) {
-       bu_vls_printf(vlsp, "parseAxesArgs: bad axes size - %s\n", argv[5]);
-       return BRLCAD_ERROR;
-    }
-    /* convert double to fastf_t */
-    *axesSize = scan;
-
-    if (argc < 7 || sscanf(argv[6], "%d %d %d",
-                          &axesColor[0],
-                          &axesColor[1],
-                          &axesColor[2]) != 3) {
-
-       bu_vls_printf(vlsp, "parseAxesArgs: bad axes color - %s\n", argv[6]);
-       return BRLCAD_ERROR;
-    }
-
-    /* validate color */
-    if (axesColor[0] < 0 || 255 < axesColor[0] ||
-       axesColor[1] < 0 || 255 < axesColor[1] ||
-       axesColor[2] < 0 || 255 < axesColor[2]) {
-
-       bu_vls_printf(vlsp, "parseAxesArgs: bad axes color - %s\n", argv[6]);
-       return BRLCAD_ERROR;
-    }
-
-    if (sscanf(argv[7], "%d %d %d",
-              &labelColor[0],
-              &labelColor[1],
-              &labelColor[2]) != 3) {
-
-       bu_vls_printf(vlsp, "parseAxesArgs: bad label color - %s\n", argv[7]);
-       return BRLCAD_ERROR;
-    }
-
-    /* validate color */
-    if (labelColor[0] < 0 || 255 < labelColor[0] ||
-       labelColor[1] < 0 || 255 < labelColor[1] ||
-       labelColor[2] < 0 || 255 < labelColor[2]) {
-
-       bu_vls_printf(vlsp, "parseAxesArgs: bad label color - %s\n", argv[7]);
-       return BRLCAD_ERROR;
-    }
-
-    if (sscanf(argv[8], "%d", lineWidth) != 1) {
-       bu_vls_printf(vlsp, "parseAxesArgs: bad line width - %s\n", argv[8]);
-       return BRLCAD_ERROR;
-    }
-
-    /* validate lineWidth */
-    if (*lineWidth < 0) {
-       bu_vls_printf(vlsp, "parseAxesArgs: line width must be greater than 
0\n");
-       return BRLCAD_ERROR;
-    }
-
-    /* parse positive only flag */
-    if (sscanf(argv[9], "%d", posOnly) != 1) {
-       bu_vls_printf(vlsp, "parseAxesArgs: bad positive only flag - %s\n", 
argv[9]);
-       return BRLCAD_ERROR;
-    }
-
-    /* validate tick enable flag */
-    if (*posOnly < 0) {
-       bu_vls_printf(vlsp, "parseAxesArgs: positive only flag must be >= 0\n");
-       return BRLCAD_ERROR;
-    }
-
-    /* parse three color flag */
-    if (sscanf(argv[10], "%d", tripleColor) != 1) {
-       bu_vls_printf(vlsp, "parseAxesArgs: bad three color flag - %s\n", 
argv[10]);
-       return BRLCAD_ERROR;
-    }
-
-    /* validate tick enable flag */
-    if (*tripleColor < 0) {
-       bu_vls_printf(vlsp, "parseAxesArgs: three color flag must be >= 0\n");
-       return BRLCAD_ERROR;
-    }
-
-    return BRLCAD_OK;
-}
-
-
-/*
- * Draw the view axes.
- *
- * Usage:
- * objname drawViewAxes args
- *
- */
-HIDDEN int
-dmo_drawViewAxes_tcl(void *clientData, int argc, const char **argv)
-{
-    point_t axesPos;
-    fastf_t viewSize;
-    mat_t rmat;
-    fastf_t axesSize;
-    int axesColor[3];
-    int labelColor[3];
-    int lineWidth;
-    int posOnly;
-    int tripleColor;
-    struct bview_axes_state bnas;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 11) {
-       /* return help message */
-       bu_vls_printf(&vls, "helplib_alias dm_drawViewAxes %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    memset(&bnas, 0, sizeof(struct bview_axes_state));
-
-    if (dmo_parseAxesArgs(argc, argv, &viewSize, rmat, axesPos, &axesSize,
-                         axesColor, labelColor, &lineWidth,
-                         &posOnly, &tripleColor, &vls) == BRLCAD_ERROR) {
-       Tcl_AppendResult(dmop->interp, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    VMOVE(bnas.axes_pos, axesPos);
-    bnas.axes_size = axesSize;
-    VMOVE(bnas.axes_color, axesColor);
-    VMOVE(bnas.label_color, labelColor);
-    bnas.line_width = lineWidth;
-    bnas.pos_only = posOnly;
-    bnas.triple_color = tripleColor;
-
-    dm_draw_axes(dmop->dmo_dmp, viewSize, rmat, &bnas);
-
-    bu_vls_free(&vls);
-    return BRLCAD_OK;
-}
-
-
-/*
- * Draw the center dot.
- *
- * Usage:
- * drawCenterDot color
- *
- */
-HIDDEN int
-dmo_drawCenterDot_cmd(struct dm_obj *dmop,
-                     int argc,
-                     const char **argv)
-{
-    int color[3];
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 2) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "helplib_alias dm_drawCenterDot %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    if (sscanf(argv[1], "%d %d %d",
-              &color[0],
-              &color[1],
-              &color[2]) != 3) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "drawCenterDot: bad color - %s\n", argv[1]);
-       Tcl_AppendResult(dmop->interp, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       return BRLCAD_ERROR;
-    }
-
-    /* validate color */
-    if (color[0] < 0 || 255 < color[0] ||
-       color[1] < 0 || 255 < color[1] ||
-       color[2] < 0 || 255 < color[2]) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "drawCenterDot: bad color - %s\n", argv[1]);
-       Tcl_AppendResult(dmop->interp, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       return BRLCAD_ERROR;
-    }
-
-    dm_set_fg(dmop->dmo_dmp,
-                  (unsigned char)color[0],
-                  (unsigned char)color[1],
-                  (unsigned char)color[2], 1, 1.0);
-
-    dm_draw_point_2d(dmop->dmo_dmp, 0.0, 0.0);
-
-    return BRLCAD_OK;
-}
-
-
-/*
- * Draw the center dot.
- *
- * Usage:
- * objname drawCenterDot color
- *
- */
-HIDDEN int
-dmo_drawCenterDot_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    return dmo_drawCenterDot_cmd(dmop, argc-1, argv+1);
-}
-
-
-HIDDEN int
-dmo_parseDataAxesArgs(int argc,
-                     const char **argv,
-                     fastf_t *viewSize,
-                     mat_t rmat,
-                     mat_t model2view,
-                     point_t axesPos,
-                     fastf_t *axesSize,
-                     int *axesColor,
-                     int *lineWidth,
-                     struct bu_vls *vlsp)
-{
-    double scan;
-
-    if (argc < 3 || sscanf(argv[2], "%lf", &scan) != 1) {
-       bu_vls_printf(vlsp, "parseDataAxesArgs: bad view size - %s\n", argv[2]);
-       return BRLCAD_ERROR;
-    }
-    /* convert double to fastf_t */
-    *viewSize = scan;
-
-    if (argc < 4 || bn_decode_mat(rmat, argv[3]) != 16) {
-       bu_vls_printf(vlsp, "parseDataAxesArgs: bad rmat - %s\n", argv[3]);
-       return BRLCAD_ERROR;
-    }
-
-    /* parse model to view matrix */
-    if (argc < 5 || bn_decode_mat(model2view, argv[4]) != 16) {
-       bu_vls_printf(vlsp, "parseDataAxesArgs: bad model2view - %s\n", 
argv[4]);
-       return BRLCAD_ERROR;
-    }
-
-    if (argc < 6 || bn_decode_vect(axesPos, argv[5]) != 3) {
-       bu_vls_printf(vlsp, "parseDataAxesArgs: bad axes position - %s\n", 
argv[5]);
-       return BRLCAD_ERROR;
-    }
-
-    if (argc < 7 || sscanf(argv[6], "%lf", &scan) != 1) {
-       bu_vls_printf(vlsp, "parseDataAxesArgs: bad axes size - %s\n", argv[6]);
-       return BRLCAD_ERROR;
-    }
-    /* convert double to fastf_t */
-    *axesSize = scan;
-
-    if (argc < 8 || sscanf(argv[7], "%d %d %d",
-                          &axesColor[0],
-                          &axesColor[1],
-                          &axesColor[2]) != 3) {
-       bu_vls_printf(vlsp, "parseDataAxesArgs: bad axes color - %s\n", 
argv[7]);
-       return BRLCAD_ERROR;
-    }
-
-    /* validate color */
-    if (axesColor[0] < 0 || 255 < axesColor[0] ||
-       axesColor[1] < 0 || 255 < axesColor[1] ||
-       axesColor[2] < 0 || 255 < axesColor[2]) {
-
-       bu_vls_printf(vlsp, "parseDataAxesArgs: bad axes color - %s\n", 
argv[7]);
-       return BRLCAD_ERROR;
-    }
-
-    if (sscanf(argv[8], "%d", lineWidth) != 1) {
-       bu_vls_printf(vlsp, "parseDataAxesArgs: bad line width - %s\n", 
argv[8]);
-       return BRLCAD_ERROR;
-    }
-
-    /* validate lineWidth */
-    if (*lineWidth < 0) {
-       bu_vls_printf(vlsp, "parseDataAxesArgs: line width must be greater than 
0\n");
-       return BRLCAD_ERROR;
-    }
-
-    return BRLCAD_OK;
-}
-
-
-/*
- * Draw the data axes.
- *
- * Usage:
- * objname drawDataAxes args
- *
- *XXX This needs to be modified to handle an array/list of data points
- */
-HIDDEN int
-dmo_drawDataAxes_tcl(void *clientData, int argc, const char **argv)
-{
-    point_t modelAxesPos;
-    fastf_t viewSize;
-    mat_t rmat;
-    mat_t model2view;
-    fastf_t axesSize;
-    int axesColor[3];
-    int lineWidth;
-    struct bview_data_axes_state bndas;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 9) {
-       /* return help message */
-       bu_vls_printf(&vls, "helplib_alias dm_drawDataAxes %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    if (dmo_parseDataAxesArgs(argc,
-                             argv,
-                             &viewSize,
-                             rmat,
-                             model2view,
-                             modelAxesPos,
-                             &axesSize,
-                             axesColor,
-                             &lineWidth,
-                             &vls) == BRLCAD_ERROR) {
-       Tcl_AppendResult(dmop->interp, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    memset(&bndas, 0, sizeof(struct bview_data_axes_state));
-    VMOVE(bndas.points[0], modelAxesPos);
-    bndas.size = axesSize;
-    VMOVE(bndas.color, axesColor);
-    bndas.line_width = lineWidth;
-
-    dm_draw_data_axes(dmop->dmo_dmp,
-                     viewSize,
-                     &bndas);
-
-    bu_vls_free(&vls);
-    return BRLCAD_OK;
-}
-
-
-HIDDEN int
-dmo_parseModelAxesArgs(int argc,
-                      const char **argv,
-                      fastf_t *viewSize,
-                      mat_t rmat,
-                      point_t axesPos,
-                      fastf_t *axesSize,
-                      int *axesColor,
-                      int *labelColor,
-                      int *lineWidth,
-                      int *posOnly,
-                      int *tripleColor,
-                      mat_t model2view,
-                      int *tickEnable,
-                      int *tickLength,
-                      int *majorTickLength,
-                      fastf_t *tickInterval,
-                      int *ticksPerMajor,
-                      int *tickColor,
-                      int *majorTickColor,
-                      int *tickThreshold,
-                      struct bu_vls *vlsp)
-{
-    double scan;
-
-    if (dmo_parseAxesArgs(argc, argv, viewSize, rmat, axesPos, axesSize,
-                         axesColor, labelColor, lineWidth,
-                         posOnly, tripleColor, vlsp) == BRLCAD_ERROR)
-       return BRLCAD_ERROR;
-
-    /* parse model to view matrix */
-    if (bn_decode_mat(model2view, argv[11]) != 16) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: bad model2view - %s\n", 
argv[11]);
-       return BRLCAD_ERROR;
-    }
-
-/* parse tick enable flag */
-    if (sscanf(argv[12], "%d", tickEnable) != 1) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: bad tick enable flag - %s\n", 
argv[12]);
-       return BRLCAD_ERROR;
-    }
-
-/* validate tick enable flag */
-    if (*tickEnable < 0) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: tick enable flag must be >= 
0\n");
-       return BRLCAD_ERROR;
-    }
-
-/* parse tick length */
-    if (sscanf(argv[13], "%d", tickLength) != 1) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: bad tick length - %s\n", 
argv[13]);
-       return BRLCAD_ERROR;
-    }
-
-/* validate tick length */
-    if (*tickLength < 1) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: tick length must be >= 1\n");
-       return BRLCAD_ERROR;
-    }
-
-/* parse major tick length */
-    if (sscanf(argv[14], "%d", majorTickLength) != 1) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: bad major tick length - %s\n", 
argv[14]);
-       return BRLCAD_ERROR;
-    }
-
-/* validate major tick length */
-    if (*majorTickLength < 1) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: major tick length must be >= 
1\n");
-       return BRLCAD_ERROR;
-    }
-
-/* parse tick interval */
-    if (sscanf(argv[15], "%lf", &scan) != 1) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: tick interval must be > 0");
-       return BRLCAD_ERROR;
-    }
-    /* convert double to fastf_t */
-    *tickInterval = scan;
-
-/* validate tick interval */
-    if (*tickInterval <= 0) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: tick interval must be > 0");
-       return BRLCAD_ERROR;
-    }
-
-/* parse ticks per major */
-    if (sscanf(argv[16], "%d", ticksPerMajor) != 1) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: bad ticks per major - %s\n", 
argv[16]);
-       return BRLCAD_ERROR;
-    }
-
-/* validate ticks per major */
-    if (*ticksPerMajor < 0) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: ticks per major must be >= 
0\n");
-       return BRLCAD_ERROR;
-    }
-
-/* parse tick color */
-    if (sscanf(argv[17], "%d %d %d",
-              &tickColor[0],
-              &tickColor[1],
-              &tickColor[2]) != 3) {
-
-       bu_vls_printf(vlsp, "parseModelAxesArgs: bad tick color - %s\n", 
argv[17]);
-       return BRLCAD_ERROR;
-    }
-
-/* validate tick color */
-    if (tickColor[0] < 0 || 255 < tickColor[0] ||
-       tickColor[1] < 0 || 255 < tickColor[1] ||
-       tickColor[2] < 0 || 255 < tickColor[2]) {
-
-       bu_vls_printf(vlsp, "parseModelAxesArgs: bad tick color - %s\n", 
argv[17]);
-       return BRLCAD_ERROR;
-    }
-
-/* parse major tick color */
-    if (sscanf(argv[18], "%d %d %d",
-              &majorTickColor[0],
-              &majorTickColor[1],
-              &majorTickColor[2]) != 3) {
-
-       bu_vls_printf(vlsp, "parseModelAxesArgs: bad major tick color - %s\n", 
argv[18]);
-       return BRLCAD_ERROR;
-    }
-
-/* validate tick color */
-    if (majorTickColor[0] < 0 || 255 < majorTickColor[0] ||
-       majorTickColor[1] < 0 || 255 < majorTickColor[1] ||
-       majorTickColor[2] < 0 || 255 < majorTickColor[2]) {
-
-       bu_vls_printf(vlsp, "parseModelAxesArgs: bad major tick color - %s\n", 
argv[18]);
-       return BRLCAD_ERROR;
-    }
-
-/* parse tick threshold */
-    if (sscanf(argv[19], "%d", tickThreshold) != 1) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: bad tick threshold - %s\n", 
argv[19]);
-       return BRLCAD_ERROR;
-    }
-
-/* validate tick threshold */
-    if (*tickThreshold <= 0) {
-       bu_vls_printf(vlsp, "parseModelAxesArgs: tick threshold must be > 0\n");
-       return BRLCAD_ERROR;
-    }
-
-    return BRLCAD_OK;
-}
-
-
-/*
- * Draw the model axes.
- *
- * Usage:
- * objname drawModelAxes args
- *
- */
-HIDDEN int
-dmo_drawModelAxes_tcl(void *clientData, int argc, const char **argv)
-{
-    point_t modelAxesPos;
-    point_t viewAxesPos;
-    fastf_t viewSize;
-    mat_t rmat;
-    mat_t model2view;
-    fastf_t axesSize;
-    int axesColor[3];
-    int labelColor[3];
-    int lineWidth;
-    int posOnly;
-    int tripleColor;
-    int tickEnable;
-    int tickLength;
-    int majorTickLength;
-    fastf_t tickInterval;
-    int ticksPerMajor;
-    int tickColor[3];
-    int majorTickColor[3];
-    int tickThreshold;
-    struct bview_axes_state bnas;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 20) {
-       /* return help message */
-       bu_vls_printf(&vls, "helplib_alias dm_drawModelAxes %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    if (dmo_parseModelAxesArgs(argc, argv,
-                              &viewSize, rmat, modelAxesPos,
-                              &axesSize, axesColor,
-                              labelColor, &lineWidth,
-                              &posOnly, &tripleColor,
-                              model2view, &tickEnable,
-                              &tickLength, &majorTickLength,
-                              &tickInterval, &ticksPerMajor,
-                              tickColor, majorTickColor,
-                              &tickThreshold, &vls) == BRLCAD_ERROR) {
-       Tcl_AppendResult(dmop->interp, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    MAT4X3PNT(viewAxesPos, model2view, modelAxesPos);
-
-    memset(&bnas, 0, sizeof(struct bview_axes_state));
-    VMOVE(bnas.axes_pos, viewAxesPos);
-    bnas.axes_size = axesSize;
-    VMOVE(bnas.axes_color, axesColor);
-    VMOVE(bnas.label_color, labelColor);
-    bnas.line_width = lineWidth;
-    bnas.pos_only = posOnly;
-    bnas.triple_color = tripleColor;
-    bnas.tick_enabled = tickEnable;
-    bnas.tick_length = tickLength;
-    bnas.tick_major_length = majorTickLength;
-    bnas.tick_interval = tickInterval;
-    bnas.ticks_per_major = ticksPerMajor;
-    VMOVE(bnas.tick_color, tickColor);
-    VMOVE(bnas.tick_major_color, majorTickColor);
-    bnas.tick_threshold = tickThreshold;
-
-    dm_draw_axes(dmop->dmo_dmp, viewSize, rmat, &bnas);
-
-    bu_vls_free(&vls);
-    return BRLCAD_OK;
-}
-
-
-/*
- * Begin the draw cycle.
- *
- * Usage:
- * objname drawBegin
- *
- */
-HIDDEN int
-dmo_drawBegin_tcl(void *clientData, int UNUSED(argc), const char 
**UNUSED(argv))
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    return dm_draw_begin(dmop->dmo_dmp);
-}
-
-
-HIDDEN int
-dmo_drawEnd_tcl(void *clientData, int UNUSED(argc), const char **UNUSED(argv))
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    return dm_draw_end(dmop->dmo_dmp);
-}
-
-
-/*
- * End the draw cycle.
- *
- * Usage:
- * objname drawEnd
- *
- */
-HIDDEN int
-dmo_clear_tcl(void *clientData, int UNUSED(argc), const char **UNUSED(argv))
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    int status;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if ((status = dm_draw_begin(dmop->dmo_dmp)) != BRLCAD_OK)
-       return status;
-
-    return dm_draw_end(dmop->dmo_dmp);
-}
-
-
-/*
- * Clear the display.
- *
- * Usage:
- * objname clear
- *
- */
-HIDDEN int
-dmo_normal_tcl(void *clientData, int UNUSED(argc), const char **UNUSED(argv))
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    return dm_normal(dmop->dmo_dmp);
-}
-
-
-/*
- * Reset the viewing transform.
- *
- * Usage:
- * objname normal
- *
- */
-HIDDEN int
-dmo_loadmat_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    mat_t mat;
-    int which_eye;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 4) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "helplib_alias dm_loadmat %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-
-    if (bn_decode_mat(mat, argv[2]) != 16)
-       return BRLCAD_ERROR;
-
-    if (sscanf(argv[3], "%d", &which_eye) != 1) {
-       Tcl_Obj *obj;
-
-       obj = Tcl_GetObjResult(dmop->interp);
-       if (Tcl_IsShared(obj))
-           obj = Tcl_DuplicateObj(obj);
-
-       Tcl_AppendStringsToObj(obj, "bad eye value - ", argv[3], (char *)NULL);
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_ERROR;
-    }
-
-    MAT_COPY(dmop->viewMat, mat);
-
-    return dm_loadmatrix(dmop->dmo_dmp, mat, which_eye);
-}
-
-
-/*
- * Draw a string on the display.
- *
- * Usage:
- * objname drawString args
- *
- */
-HIDDEN int
-dmo_drawString_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    fastf_t x, y;
-    int size;
-    int use_aspect;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 7) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "helplib_alias dm_drawString %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    /*XXX use sscanf */
-    x = atof(argv[3]);
-    y = atof(argv[4]);
-    size = atoi(argv[5]);
-    use_aspect = atoi(argv[6]);
-
-    return dm_draw_string_2d(dmop->dmo_dmp, argv[2], x, y, size, use_aspect);
-}
-
-
-HIDDEN int
-dmo_drawPoint_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    fastf_t x, y;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 4) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "helplib_alias dm_drawPoint %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    /*XXX use sscanf */
-    x = atof(argv[2]);
-    y = atof(argv[3]);
-
-    return dm_draw_point_2d(dmop->dmo_dmp, x, y);
-}
-
-
-/*
- * Draw the line.
- *
- * Usage:
- * objname drawLine x1 y1 x2 y2
- *
- */
-HIDDEN int
-dmo_drawLine_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    fastf_t xpos1, ypos1, xpos2, ypos2;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 6) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "helplib_alias dm_drawLine %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    /*XXX use sscanf */
-    xpos1 = atof(argv[2]);
-    ypos1 = atof(argv[3]);
-    xpos2 = atof(argv[4]);
-    ypos2 = atof(argv[5]);
-
-    return dm_draw_line_2d(dmop->dmo_dmp, xpos1, ypos1, xpos2, ypos2);
-}
-
-
-/*
- * Draw the vlist.
- *
- * Usage:
- * objname drawVList vid
- */
-HIDDEN int
-dmo_drawVList_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bn_vlist *vp;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 3) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "helplib_alias dm_drawVList %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    if (sscanf(argv[2], "%lu", (unsigned long *)&vp) != 1) {
-       Tcl_Obj *obj;
-
-       obj = Tcl_GetObjResult(dmop->interp);
-       if (Tcl_IsShared(obj))
-           obj = Tcl_DuplicateObj(obj);
-
-       Tcl_AppendStringsToObj(obj, "invalid vlist pointer - ", argv[2], (char 
*)NULL);
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_ERROR;
-    }
-
-    BN_CK_VLIST(vp);
-
-    return dm_draw_vlist(dmop->dmo_dmp, vp);
-}
-
-
-HIDDEN void
-dmo_drawSolid(struct dm_obj *dmop,
-             struct solid *sp)
-{
-    if (sp->s_iflag == UP)
-       dm_set_fg(dmop->dmo_dmp, 255, 255, 255, 0, sp->s_transparency);
-    else
-       dm_set_fg(dmop->dmo_dmp,
-                      (unsigned char)sp->s_color[0],
-                      (unsigned char)sp->s_color[1],
-                      (unsigned char)sp->s_color[2], 0, sp->s_transparency);
-    dm_draw_vlist(dmop->dmo_dmp, (struct bn_vlist *)&sp->s_vlist);
-}
-
-
-/*
- * Draw a scale.
- *
- * Usage:
- * drawScale vsize unit color
- *
- */
-int
-dmo_drawScale_cmd(struct dm_obj *dmop,
-                 int argc,
-                 const char **argv)
-{
-    const char *unit;
-    int color[3];
-    double scan;
-    fastf_t viewSize;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-    if (argc != 4) {
-       bu_vls_printf(&vls, "helplib_alias dm_drawScale %s", argv[0]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    if (sscanf(argv[1], "%lf", &scan) != 1) {
-       bu_vls_printf(&vls, "drawScale: bad view size - %s\n", argv[1]);
-       Tcl_AppendResult(dmop->interp, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       return BRLCAD_ERROR;
-    }
-    /* convert double to fastf_t */
-    viewSize = scan;
-
-
-    unit = argv[2];
-
-    if (sscanf(argv[3], "%d %d %d",
-              &color[0],
-              &color[1],
-              &color[2]) != 3) {
-       bu_vls_printf(&vls, "drawScale: bad color - %s\n", argv[2]);
-       Tcl_AppendResult(dmop->interp, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       return BRLCAD_ERROR;
-    }
-
-    /* validate color */
-    if (color[0] < 0 || 255 < color[0]
-       || color[1] < 0 || 255 < color[1]
-       || color[2] < 0 || 255 < color[2])
-    {
-
-       bu_vls_printf(&vls, "drawScale: bad color - %s\n", argv[2]);
-       Tcl_AppendResult(dmop->interp, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       return BRLCAD_ERROR;
-    }
-
-    dm_draw_scale(dmop->dmo_dmp, viewSize, unit, color, color);
-
-    return BRLCAD_OK;
-}
-
-
-/*
- * Usage:
- * objname drawScale vsize unit color
- */
-HIDDEN int
-dmo_drawScale_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    return dmo_drawScale_cmd(dmop, argc-1, argv+1);
-}
-
-
-/*
- * Usage:
- * objname drawSList hsp
- */
-HIDDEN int
-dmo_drawSList(struct dm_obj *dmop,
-             struct bu_list *hsp)
-{
-    struct solid *sp;
-    int linestyle = -1;
-
-    if (!dmop)
-       return BRLCAD_ERROR;
-
-    if (dmop->dmo_dmp->dm_transparency) {
-       /* First, draw opaque stuff */
-       FOR_ALL_SOLIDS(sp, hsp) {
-           if (sp->s_transparency < 1.0)
-               continue;
-
-           if (linestyle != sp->s_soldash) {
-               linestyle = sp->s_soldash;
-               dm_set_line_attr(dmop->dmo_dmp, dmop->dmo_dmp->dm_lineWidth, 
linestyle);
-           }
-
-           dmo_drawSolid(dmop, sp);
-       }
-
-       /* disable write to depth buffer */
-       dm_set_depth_mask(dmop->dmo_dmp, 0);
-
-       /* Second, draw transparent stuff */
-       FOR_ALL_SOLIDS(sp, hsp) {
-           /* already drawn above */
-           if (ZERO(sp->s_transparency - 1.0))
-               continue;
-
-           if (linestyle != sp->s_soldash) {
-               linestyle = sp->s_soldash;
-               dm_set_line_attr(dmop->dmo_dmp, dmop->dmo_dmp->dm_lineWidth, 
linestyle);
-           }
-
-           dmo_drawSolid(dmop, sp);
-       }
-
-       /* re-enable write to depth buffer */
-       dm_set_depth_mask(dmop->dmo_dmp, 1);
-    } else {
-
-       FOR_ALL_SOLIDS(sp, hsp) {
-           if (linestyle != sp->s_soldash) {
-               linestyle = sp->s_soldash;
-               dm_set_line_attr(dmop->dmo_dmp, dmop->dmo_dmp->dm_lineWidth, 
linestyle);
-           }
-
-           dmo_drawSolid(dmop, sp);
-       }
-    }
-
-    return BRLCAD_OK;
-}
-
-
-/*
- * Usage:
- * objname drawSList sid
- */
-HIDDEN int
-dmo_drawSList_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_list *hsp;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 3) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "helplib_alias dm_drawSList %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    if (sscanf(argv[2], "%lu", (unsigned long *)&hsp) != 1) {
-       Tcl_Obj *obj;
-
-       obj = Tcl_GetObjResult(dmop->interp);
-       if (Tcl_IsShared(obj))
-           obj = Tcl_DuplicateObj(obj);
-
-       Tcl_AppendStringsToObj(obj, "invalid solid list pointer - ",
-                              argv[2], "\n", (char *)NULL);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_ERROR;
-    }
-    dmo_drawSList(dmop, hsp);
-
-    return BRLCAD_OK;
-}
-
-
-/*
- * Get/set the display manager's foreground color.
- *
- * Usage:
- * objname fg [rgb]
- */
-HIDDEN int
-dmo_fg_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int r, g, b;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get foreground color */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d %d %d",
-                     dmop->dmo_dmp->dm_fg[0],
-                     dmop->dmo_dmp->dm_fg[1],
-                     dmop->dmo_dmp->dm_fg[2]);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set foreground color */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%d %d %d", &r, &g, &b) != 3)
-           goto bad_color;
-
-       /* validate color */
-       if (r < 0 || 255 < r ||
-           g < 0 || 255 < g ||
-           b < 0 || 255 < b)
-           goto bad_color;
-
-       bu_vls_free(&vls);
-       return dm_set_fg(dmop->dmo_dmp,
-                             (unsigned char)r,
-                             (unsigned char)g,
-                             (unsigned char)b,
-                             1, 1.0);
-    }
-
-    /* wrong number of arguments */
-    bu_vls_printf(&vls, "helplib_alias dm_fg %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-
-bad_color:
-    bu_vls_printf(&vls, "bad rgb color - %s\n", argv[2]);
-    Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-    bu_vls_free(&vls);
-
-    Tcl_SetObjResult(dmop->interp, obj);
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Get/set the display manager's background color.
- *
- * Usage:
- * objname bg [rgb]
- */
-HIDDEN int
-dmo_bg_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int r, g, b;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get background color */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d %d %d",
-                     dmop->dmo_dmp->dm_bg[0],
-                     dmop->dmo_dmp->dm_bg[1],
-                     dmop->dmo_dmp->dm_bg[2]);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set background color */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%d %d %d", &r, &g, &b) != 3)
-           goto bad_color;
-
-       /* validate color */
-       if (r < 0 || 255 < r ||
-           g < 0 || 255 < g ||
-           b < 0 || 255 < b)
-           goto bad_color;
-
-       bu_vls_free(&vls);
-       return dm_set_bg(dmop->dmo_dmp, (unsigned char)r, (unsigned char)g, 
(unsigned char)b);
-    }
-
-    /* wrong number of arguments */
-    bu_vls_printf(&vls, "helplib_alias dm_bg %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-
-bad_color:
-    bu_vls_printf(&vls, "bad rgb color - %s\n", argv[2]);
-    Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-    bu_vls_free(&vls);
-
-    Tcl_SetObjResult(dmop->interp, obj);
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Get/set the display manager's linewidth.
- *
- * Usage:
- * objname linewidth [n]
- */
-HIDDEN int
-dmo_lineWidth_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int lineWidth;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get linewidth */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d", dmop->dmo_dmp->dm_lineWidth);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set lineWidth */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%d", &lineWidth) != 1)
-           goto bad_lineWidth;
-
-       /* validate lineWidth */
-       if (lineWidth < 0 || 20 < lineWidth)
-           goto bad_lineWidth;
-
-       bu_vls_free(&vls);
-       return dm_set_line_attr(dmop->dmo_dmp, lineWidth, 
dmop->dmo_dmp->dm_lineStyle);
-    }
-
-    /* wrong number of arguments */
-    bu_vls_printf(&vls, "helplib_alias dm_linewidth %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-
-bad_lineWidth:
-    bu_vls_printf(&vls, "bad linewidth - %s\n", argv[2]);
-    Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-    bu_vls_free(&vls);
-
-    Tcl_SetObjResult(dmop->interp, obj);
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Get/set the display manager's linestyle.
- *
- * Usage:
- * objname linestyle [0|1]
- */
-HIDDEN int
-dmo_lineStyle_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int linestyle;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get linestyle */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d", dmop->dmo_dmp->dm_lineStyle);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set linestyle */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%d", &linestyle) != 1)
-           goto bad_linestyle;
-
-       /* validate linestyle */
-       if (linestyle < 0 || 1 < linestyle)
-           goto bad_linestyle;
-
-       bu_vls_free(&vls);
-       return dm_set_line_attr(dmop->dmo_dmp, dmop->dmo_dmp->dm_lineWidth, 
linestyle);
-    }
-
-    /* wrong number of arguments */
-    bu_vls_printf(&vls, "helplib_alias dm_linestyle %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-
-bad_linestyle:
-    bu_vls_printf(&vls, "bad linestyle - %s\n", argv[2]);
-    Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-    bu_vls_free(&vls);
-
-    Tcl_SetObjResult(dmop->interp, obj);
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Configure the display manager window. This is typically
- * called as a result of a ConfigureNotify event.
- *
- * Usage:
- * objname configure
- */
-HIDDEN int
-dmo_configure_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    int status;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 2) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "helplib_alias dm_configure %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    /* configure the display manager window */
-    status = dm_configure_win(dmop->dmo_dmp, 0);
-
-#ifdef USE_FBSERV
-    /* configure the framebuffer window */
-    if (dmop->dmo_fbs.fbs_fbp != FB_NULL)
-       (void)fb_configure_window(dmop->dmo_fbs.fbs_fbp,
-                          dmop->dmo_dmp->dm_width,
-                          dmop->dmo_dmp->dm_height);
-#endif
-
-    return status;
-}
-
-
-/*
- * Get/set the display manager's zclip flag.
- *
- * Usage:
- * objname zclip [0|1]
- */
-HIDDEN int
-dmo_zclip_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int zclip;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get zclip flag */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d", dmop->dmo_dmp->dm_zclip);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set zclip flag */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%d", &zclip) != 1) {
-           Tcl_AppendStringsToObj(obj, "dmo_zclip: invalid zclip value - ",
-                                  argv[2], "\n", (char *)NULL);
-           Tcl_SetObjResult(dmop->interp, obj);
-           return BRLCAD_ERROR;
-       }
-
-       dmop->dmo_dmp->dm_zclip = zclip;
-       return BRLCAD_OK;
-    }
-
-    bu_vls_printf(&vls, "helplib_alias dm_zclip %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Get/set the display manager's zbuffer flag.
- *
- * Usage:
- * objname zbuffer [0|1]
- */
-HIDDEN int
-dmo_zbuffer_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int zbuffer;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get zbuffer flag */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d", dmop->dmo_dmp->dm_zbuffer);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set zbuffer flag */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%d", &zbuffer) != 1) {
-           Tcl_AppendStringsToObj(obj, "dmo_zbuffer: invalid zbuffer value - ",
-                                  argv[2], "\n", (char *)NULL);
-           Tcl_SetObjResult(dmop->interp, obj);
-           return BRLCAD_ERROR;
-       }
-
-       dm_set_zbuffer(dmop->dmo_dmp, zbuffer);
-       return BRLCAD_OK;
-    }
-
-    bu_vls_printf(&vls, "helplib_alias dm_zbuffer %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Get/set the display manager's light flag.
- *
- * Usage:
- * objname light [0|1]
- */
-HIDDEN int
-dmo_light_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int light;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get light flag */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d", dmop->dmo_dmp->dm_light);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set light flag */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%d", &light) != 1) {
-           Tcl_AppendStringsToObj(obj, "dmo_light: invalid light value - ",
-                                  argv[2], "\n", (char *)NULL);
-
-           Tcl_SetObjResult(dmop->interp, obj);
-           return BRLCAD_ERROR;
-       }
-
-       (void)dm_set_light(dmop->dmo_dmp, light);
-       return BRLCAD_OK;
-    }
-
-    bu_vls_printf(&vls, "helplib_alias dm_light %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Get/set the display manager's transparency flag.
- *
- * Usage:
- * objname transparency [0|1]
- */
-HIDDEN int
-dmo_transparency_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int transparency;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get transparency flag */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d", dmop->dmo_dmp->dm_transparency);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set transparency flag */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%d", &transparency) != 1) {
-           Tcl_AppendStringsToObj(obj, "dmo_transparency: invalid transparency 
value - ",
-                                  argv[2], "\n", (char *)NULL);
-
-           Tcl_SetObjResult(dmop->interp, obj);
-           return BRLCAD_ERROR;
-       }
-
-       (void)dm_set_transparency(dmop->dmo_dmp, transparency);
-       return BRLCAD_OK;
-    }
-
-    bu_vls_printf(&vls, "helplib_alias dm_transparency %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Get/set the display manager's depth mask flag.
- *
- * Usage:
- * objname depthMask [0|1]
- */
-HIDDEN int
-dmo_depthMask_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int depthMask;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get depthMask flag */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d", dmop->dmo_dmp->dm_depthMask);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set depthMask flag */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%d", &depthMask) != 1) {
-           Tcl_AppendStringsToObj(obj, "dmo_depthMask: invalid depthMask value 
- ",
-                                  argv[2], "\n", (char *)NULL);
-
-           Tcl_SetObjResult(dmop->interp, obj);
-           return BRLCAD_ERROR;
-       }
-
-       dm_set_depth_mask(dmop->dmo_dmp, depthMask);
-       return BRLCAD_OK;
-    }
-
-    bu_vls_printf(&vls, "helplib_alias dm_depthMask %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Get/set the display manager's window bounds.
- *
- * Usage:
- * objname bounds ["xmin xmax ymin ymax zmin zmax"]
- */
-HIDDEN int
-dmo_bounds_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    Tcl_Obj *obj;
-
-    /* intentionally double for scan */
-    double clipmin[3];
-    double clipmax[3];
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get window bounds */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%g %g %g %g %g %g",
-                     dmop->dmo_dmp->dm_clipmin[X],
-                     dmop->dmo_dmp->dm_clipmax[X],
-                     dmop->dmo_dmp->dm_clipmin[Y],
-                     dmop->dmo_dmp->dm_clipmax[Y],
-                     dmop->dmo_dmp->dm_clipmin[Z],
-                     dmop->dmo_dmp->dm_clipmax[Z]);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set window bounds */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%lf %lf %lf %lf %lf %lf",
-                  &clipmin[X], &clipmax[X],
-                  &clipmin[Y], &clipmax[Y],
-                  &clipmin[Z], &clipmax[Z]) != 6) {
-           Tcl_AppendStringsToObj(obj, "dmo_bounds: invalid bounds - ",
-                                  argv[2], "\n", (char *)NULL);
-
-           Tcl_SetObjResult(dmop->interp, obj);
-           return BRLCAD_ERROR;
-       }
-
-       VMOVE(dmop->dmo_dmp->dm_clipmin, clipmin);
-       VMOVE(dmop->dmo_dmp->dm_clipmax, clipmax);
-
-       /*
-        * Since dm_bound doesn't appear to be used anywhere,
-        * I'm going to use it for controlling the location
-        * of the zclipping plane in dm-ogl.c. dm-X.c uses
-        * dm_clipmin and dm_clipmax.
-        */
-       if (dmop->dmo_dmp->dm_clipmax[2] <= GED_MAX)
-           dmop->dmo_dmp->dm_bound = 1.0;
-       else
-           dmop->dmo_dmp->dm_bound = GED_MAX / dmop->dmo_dmp->dm_clipmax[2];
-
-       return BRLCAD_OK;
-    }
-
-    bu_vls_printf(&vls, "helplib_alias dm_bounds %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Get/set the display manager's perspective mode.
- *
- * Usage:
- * objname perspective [n]
- */
-HIDDEN int
-dmo_perspective_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int perspective;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get perspective mode */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d", dmop->dmo_dmp->dm_perspective);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set perspective mode */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%d", &perspective) != 1) {
-           Tcl_AppendStringsToObj(obj,
-                                  "dmo_perspective: invalid perspective mode - 
",
-                                  argv[2], "\n", (char *)NULL);
-
-           Tcl_SetObjResult(dmop->interp, obj);
-           return BRLCAD_ERROR;
-       }
-
-       dmop->dmo_dmp->dm_perspective = perspective;
-       return BRLCAD_OK;
-    }
-
-    bu_vls_printf(&vls, "helplib_alias dm_perspective %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-}
-
-
-#if defined(DM_X) || defined(DM_OGL)
-
-HIDDEN int
-dmo_png_cmd(struct dm_obj *dmop,
-           int argc,
-           const char **argv)
-{
-    FILE *fp;
-    png_structp png_p;
-    png_infop info_p;
-    XImage *ximage_p;
-    unsigned char **rows;
-    unsigned char *idata;
-    unsigned char *irow;
-    int bytes_per_pixel;
-    int bits_per_channel = 8;  /* bits per color channel */
-    int i, j, k;
-    unsigned char *dbyte0, *dbyte1, *dbyte2, *dbyte3;
-    int red_shift;
-    int green_shift;
-    int blue_shift;
-    int red_bits;
-    int green_bits;
-    int blue_bits;
-
-    if (argc != 2) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "helplib_alias dm_png %s", argv[0]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    if ((fp = fopen(argv[1], "wb")) == NULL) {
-       Tcl_AppendResult(dmop->interp, "png: cannot open \"", argv[1], " for 
writing\n", (char *)NULL);
-       return BRLCAD_ERROR;
-    }
-
-    png_p = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
-    if (!png_p) {
-       Tcl_AppendResult(dmop->interp, "png: could not create PNG write 
structure\n", (char *)NULL);
-       fclose(fp);
-       return BRLCAD_ERROR;
-    }
-
-    info_p = png_create_info_struct(png_p);
-    if (!info_p) {
-       Tcl_AppendResult(dmop->interp, "png: could not create PNG info 
structure\n", (char *)NULL);
-       fclose(fp);
-       return BRLCAD_ERROR;
-    }
-
-    ximage_p = XGetImage(((struct dm_xvars 
*)dmop->dmo_dmp->dm_vars.pub_vars)->dpy,
-                        ((struct dm_xvars 
*)dmop->dmo_dmp->dm_vars.pub_vars)->win,
-                        0, 0,
-                        dmop->dmo_dmp->dm_width,
-                        dmop->dmo_dmp->dm_height,
-                        ~0, ZPixmap);
-    if (!ximage_p) {
-       Tcl_AppendResult(dmop->interp, "png: could not get XImage\n", (char 
*)NULL);
-       fclose(fp);
-       return BRLCAD_ERROR;
-    }
-
-    bytes_per_pixel = ximage_p->bytes_per_line / ximage_p->width;
-
-    if (bytes_per_pixel == 4) {
-       unsigned long mask;
-       unsigned long tmask;
-
-       /* This section assumes 8 bits per channel */
-
-       mask = ximage_p->red_mask;
-       tmask = 1;
-       for (red_shift = 0; red_shift < 32; red_shift++) {
-           if (tmask & mask)
-               break;
-           tmask = tmask << 1;
-       }
-
-       mask = ximage_p->green_mask;
-       tmask = 1;
-       for (green_shift = 0; green_shift < 32; green_shift++) {
-           if (tmask & mask)
-               break;
-           tmask = tmask << 1;
-       }
-
-       mask = ximage_p->blue_mask;
-       tmask = 1;
-       for (blue_shift = 0; blue_shift < 32; blue_shift++) {
-           if (tmask & mask)
-               break;
-           tmask = tmask << 1;
-       }
-
-       /*
-        * We need to reverse things if the image byte order
-        * is different from the system's byte order.
-        */
-       if (((bu_byteorder() == BU_BIG_ENDIAN) && (ximage_p->byte_order == 
LSBFirst)) ||
-           ((bu_byteorder() == BU_LITTLE_ENDIAN) && (ximage_p->byte_order == 
MSBFirst))) {
-           DM_REVERSE_COLOR_BYTE_ORDER(red_shift, ximage_p->red_mask);
-           DM_REVERSE_COLOR_BYTE_ORDER(green_shift, ximage_p->green_mask);
-           DM_REVERSE_COLOR_BYTE_ORDER(blue_shift, ximage_p->blue_mask);
-       }
-
-    } else if (bytes_per_pixel == 2) {
-       unsigned long mask;
-       unsigned long tmask;
-       int bpb = 8;   /* bits per byte */
-
-       /*XXX
-        * This section probably needs logic similar
-        * to the previous section (i.e. bytes_per_pixel == 4).
-        * That is we may need to reverse things depending on
-        * the image byte order and the system's byte order.
-        */
-
-       mask = ximage_p->red_mask;
-       tmask = 1;
-       for (red_shift = 0; red_shift < 16; red_shift++) {
-           if (tmask & mask)
-               break;
-           tmask = tmask << 1;
-       }
-       for (red_bits = red_shift; red_bits < 16; red_bits++) {
-           if (!(tmask & mask))
-               break;
-           tmask = tmask << 1;
-       }
-
-       red_bits = red_bits - red_shift;
-       if (red_shift == 0)
-           red_shift = red_bits - bpb;
-       else
-           red_shift = red_shift - (bpb - red_bits);
-
-       mask = ximage_p->green_mask;
-       tmask = 1;
-       for (green_shift = 0; green_shift < 16; green_shift++) {
-           if (tmask & mask)
-               break;
-           tmask = tmask << 1;
-       }
-       for (green_bits = green_shift; green_bits < 16; green_bits++) {
-           if (!(tmask & mask))
-               break;
-           tmask = tmask << 1;
-       }
-
-       green_bits = green_bits - green_shift;
-       green_shift = green_shift - (bpb - green_bits);
-
-       mask = ximage_p->blue_mask;
-       tmask = 1;
-       for (blue_shift = 0; blue_shift < 16; blue_shift++) {
-           if (tmask & mask)
-               break;
-           tmask = tmask << 1;
-       }
-       for (blue_bits = blue_shift; blue_bits < 16; blue_bits++) {
-           if (!(tmask & mask))
-               break;
-           tmask = tmask << 1;
-       }
-       blue_bits = blue_bits - blue_shift;
-
-       if (blue_shift == 0)
-           blue_shift = blue_bits - bpb;
-       else
-           blue_shift = blue_shift - (bpb - blue_bits);
-    } else {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "png: %d bytes per pixel is not yet supported\n", 
bytes_per_pixel);
-       Tcl_AppendResult(dmop->interp, bu_vls_addr(&vls), (char *)NULL);
-       fclose(fp);
-       bu_vls_free(&vls);
-
-       return BRLCAD_ERROR;
-    }
-
-    rows = (unsigned char **)bu_calloc(ximage_p->height, sizeof(unsigned char 
*), "rows");
-    idata = (unsigned char *)bu_calloc(ximage_p->height * ximage_p->width, 4, 
"png data");
-
-    /* for each scanline */
-    for (i = ximage_p->height - 1, j = 0; 0 <= i; --i, ++j) {
-       /* irow points to the current scanline in ximage_p */
-       irow = (unsigned char *)(ximage_p->data + 
((ximage_p->height-i-1)*ximage_p->bytes_per_line));
-
-       if (bytes_per_pixel == 4) {
-           unsigned int pixel;
-
-           /* rows[j] points to the current scanline in idata */
-           rows[j] = (unsigned char *)(idata + 
((ximage_p->height-i-1)*ximage_p->bytes_per_line));
-
-           /* for each pixel in current scanline of ximage_p */
-           for (k = 0; k < ximage_p->bytes_per_line; k += bytes_per_pixel) {
-               pixel = *((unsigned int *)(irow + k));
-
-               dbyte0 = rows[j] + k;
-               dbyte1 = dbyte0 + 1;
-               dbyte2 = dbyte0 + 2;
-               dbyte3 = dbyte0 + 3;
-
-               *dbyte0 = (pixel & ximage_p->red_mask) >> red_shift;
-               *dbyte1 = (pixel & ximage_p->green_mask) >> green_shift;
-               *dbyte2 = (pixel & ximage_p->blue_mask) >> blue_shift;
-               *dbyte3 = 255;
-           }
-       } else if (bytes_per_pixel == 2) {
-           unsigned short spixel;
-           unsigned long pixel;
-
-           /* rows[j] points to the current scanline in idata */
-           rows[j] = (unsigned char *)(idata + 
((ximage_p->height-i-1)*ximage_p->bytes_per_line*2));
-
-           /* for each pixel in current scanline of ximage_p */
-           for (k = 0; k < ximage_p->bytes_per_line; k += bytes_per_pixel) {
-               spixel = *((unsigned short *)(irow + k));
-               pixel = spixel;
-
-               dbyte0 = rows[j] + k*2;
-               dbyte1 = dbyte0 + 1;
-               dbyte2 = dbyte0 + 2;
-               dbyte3 = dbyte0 + 3;
-
-               if (0 <= red_shift)
-                   *dbyte0 = (pixel & ximage_p->red_mask) >> red_shift;
-               else
-                   *dbyte0 = (pixel & ximage_p->red_mask) << -red_shift;
-
-               *dbyte1 = (pixel & ximage_p->green_mask) >> green_shift;
-
-               if (0 <= blue_shift)
-                   *dbyte2 = (pixel & ximage_p->blue_mask) >> blue_shift;
-               else
-                   *dbyte2 = (pixel & ximage_p->blue_mask) << -blue_shift;
-
-               *dbyte3 = 255;
-           }
-       } else {
-           bu_free(rows, "rows");
-           bu_free(idata, "image data");
-           fclose(fp);
-
-           Tcl_AppendResult(dmop->interp, "png: not supported for this 
platform\n", (char *)NULL);
-           return BRLCAD_ERROR;
-       }
-    }
-
-    png_init_io(png_p, fp);
-    png_set_filter(png_p, 0, PNG_FILTER_NONE);
-    png_set_compression_level(png_p, 9);
-    png_set_IHDR(png_p, info_p, ximage_p->width, ximage_p->height, 
bits_per_channel,
-                PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE,
-                PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
-    png_set_gAMA(png_p, info_p, 0.77);
-    png_write_info(png_p, info_p);
-    png_write_image(png_p, rows);
-    png_write_end(png_p, NULL);
-
-    bu_free(rows, "rows");
-    bu_free(idata, "image data");
-    fclose(fp);
-
-    return BRLCAD_OK;
-}
-
-
-#endif /* defined(DM_X) || defined(DM_OGL) */
-
-
-/*
- * Write the pixels to a file in png format.
- *
- * Usage:
- * objname png args
- *
- */
-HIDDEN int
-#if defined(DM_X) || defined(DM_OGL)
-dmo_png_tcl(void *clientData, int argc, const char **argv)
-#else
-dmo_png_tcl(void *clientData, int UNUSED(argc), const char **UNUSED(argv))
-#endif
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-#if defined(DM_X) || defined(DM_OGL)
-    return dmo_png_cmd(dmop, argc-1, argv+1);
-#else
-    bu_log("Sorry, support for the 'png' command is unavailable.\n");
-    return 0;
-#endif
-}
-
-
-/*
- * Get/set the clearBufferAfter flag.
- *
- * Usage:
- * objname clearBufferAfter [flag]
- *
- */
-HIDDEN int
-dmo_clearBufferAfter_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int clearBufferAfter;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get clearBufferAfter flag */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d", dmop->dmo_dmp->dm_clearBufferAfter);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set clearBufferAfter flag */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%d", &clearBufferAfter) != 1) {
-           Tcl_AppendStringsToObj(obj, "dmo_clearBufferAfter: invalid 
clearBufferAfter value - ",
-                                  argv[2], "\n", (char *)NULL);
-           Tcl_SetObjResult(dmop->interp, obj);
-           return BRLCAD_ERROR;
-       }
-
-       dmop->dmo_dmp->dm_clearBufferAfter = clearBufferAfter;
-       return BRLCAD_OK;
-    }
-
-    bu_vls_printf(&vls, "helplib_alias dm_clearBufferAfter %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Get/set the display manager's debug level.
- *
- * Usage:
- * objname debug [n]
- */
-HIDDEN int
-dmo_debug_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int level;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get debug level */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d", dmop->dmo_dmp->dm_debugLevel);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set debug level */
-    if (argc == 3) {
-       if (sscanf(argv[2], "%d", &level) != 1) {
-           Tcl_AppendStringsToObj(obj, "dmo_debug: invalid debug level - ",
-                                  argv[2], "\n", (char *)NULL);
-
-           Tcl_SetObjResult(dmop->interp, obj);
-           return BRLCAD_ERROR;
-       }
-
-       return dm_debug(dmop->dmo_dmp, level);
-    }
-
-    bu_vls_printf(&vls, "helplib_alias dm_debug %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-}
-
-/*
- * Get/set the display manager's log file.
- *
- * Usage:
- * objname logfile [filename]
- */
-HIDDEN int
-dmo_logfile_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    /* get log file */
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%s", bu_vls_addr(&(dmop->dmo_dmp->dm_log)));
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    /* set log file */
-    if (argc == 3) {
-       return dm_logfile(dmop->dmo_dmp, argv[3]);
-    }
-
-    bu_vls_printf(&vls, "helplib_alias dm_debug %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-}
-
-
-
-/*
- * Flush the output buffer.
- *
- * Usage:
- * objname flush
- *
- */
-HIDDEN int
-#ifdef DM_X
-dmo_flush_tcl(void *clientData, int UNUSED(argc), const char **UNUSED(argv))
-#else
-dmo_flush_tcl(void *UNUSED(clientData), int UNUSED(argc), const char 
**UNUSED(argv))
-#endif
-{
-#ifdef DM_X
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop)
-       return BRLCAD_ERROR;
-
-    XFlush(((struct dm_xvars *)dmop->dmo_dmp->dm_vars.pub_vars)->dpy);
-#endif
-
-    return BRLCAD_OK;
-}
-
-
-/*
- * Flush the output buffer and process all events.
- *
- * Usage:
- * objname sync
- *
- */
-HIDDEN int
-#ifdef DM_X
-dmo_sync_tcl(void *clientData, int UNUSED(argc), const char **UNUSED(argv))
-#else
-dmo_sync_tcl(void *UNUSED(clientData), int UNUSED(argc), const char 
**UNUSED(argv))
-#endif
-{
-#ifdef DM_X
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop)
-       return BRLCAD_ERROR;
-
-    XSync(((struct dm_xvars *)dmop->dmo_dmp->dm_vars.pub_vars)->dpy, 0);
-#endif
-
-    return BRLCAD_OK;
-}
-
-
-/*
- * Set/get window size.
- *
- * Usage:
- * objname size [width [height]]
- *
- */
-HIDDEN int
-dmo_size_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    if (argc == 2) {
-       bu_vls_printf(&vls, "%d %d", dmop->dmo_dmp->dm_width, 
dmop->dmo_dmp->dm_height);
-       Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-       bu_vls_free(&vls);
-
-       Tcl_SetObjResult(dmop->interp, obj);
-       return BRLCAD_OK;
-    }
-
-    if (argc == 3 || argc == 4) {
-       int width, height;
-
-       if (sscanf(argv[2], "%d", &width) != 1) {
-           Tcl_AppendStringsToObj(obj, "size: bad width - ", argv[2], "\n", 
(char *)NULL);
-
-           Tcl_SetObjResult(dmop->interp, obj);
-           return BRLCAD_ERROR;
-       }
-
-       if (argc == 3)
-           height = width;
-       else {
-           if (sscanf(argv[3], "%d", &height) != 1) {
-               Tcl_AppendStringsToObj(obj, "size: bad height - ", argv[3], 
"\n", (char *)NULL);
-               Tcl_SetObjResult(dmop->interp, obj);
-               return BRLCAD_ERROR;
-           }
-       }
-
-#if defined(DM_X) || defined(DM_OGL) || defined(DM_OGL) || defined(DM_WGL)
-       Tk_GeometryRequest(((struct dm_xvars 
*)dmop->dmo_dmp->dm_vars.pub_vars)->xtkwin,
-                          width, height);
-       return BRLCAD_OK;
-#else
-       bu_log("Sorry, support for 'size' command is unavailable.\n");
-       return BRLCAD_ERROR;
-#endif
-    }
-
-    bu_vls_printf(&vls, "helplib_alias dm_size %s", argv[1]);
-    Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Get window aspect ratio (i.e. width / height)
- *
- * Usage:
- * objname get_aspect
- *
- */
-HIDDEN int
-dmo_get_aspect_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    Tcl_Obj *obj;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 2) {
-       bu_vls_printf(&vls, "helplib_alias dm_getaspect %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    obj = Tcl_GetObjResult(dmop->interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    bu_vls_printf(&vls, "%g", dmop->dmo_dmp->dm_aspect);
-    Tcl_AppendStringsToObj(obj, bu_vls_addr(&vls), (char *)NULL);
-    bu_vls_free(&vls);
-
-    Tcl_SetObjResult(dmop->interp, obj);
-    return BRLCAD_OK;
-}
-
-
-/*
- * Attach/detach observers to/from list.
- *
- * Usage:
- * objname observer cmd [args]
- *
- */
-HIDDEN int
-dmo_observer_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc < 3) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       /* return help message */
-       bu_vls_printf(&vls, "helplib_alias dm_observer %s", argv[1]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    return bu_observer_cmd((ClientData)&dmop->dmo_observers, argc-2, (const 
char **)argv+2);
-}
-
-HIDDEN void
-_dm_obj_eval(void *context, const char *cmd) {
-    Tcl_Interp *interp = (Tcl_Interp *)context;
-    Tcl_Eval(interp, cmd);
-}
-
-#ifdef USE_FBSERV
-HIDDEN void
-dmo_fbs_callback(void *clientData)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    if (!dmop)
-       return;
-
-    bu_observer_notify((void *)dmop->interp, &dmop->dmo_observers, 
bu_vls_addr(&dmop->dmo_name), &(_dm_obj_eval));
-}
-#endif
-
-
-HIDDEN int
-dmo_getDrawLabelsHook_cmd(struct dm_obj *dmop, int argc, const char **argv)
-{
-    char buf[64];
-    Tcl_DString ds;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 1) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "helplib_alias dm_getDrawLabelsHook %s", argv[0]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    /* FIXME: the standard forbids this kind of crap.  candidate for removal. 
*/
-    sprintf(buf, "%p %p",
-           (void *)(uintptr_t)dmop->dmo_drawLabelsHook,
-           (void *)(uintptr_t)dmop->dmo_drawLabelsHookClientData);
-    Tcl_DStringInit(&ds);
-    Tcl_DStringAppend(&ds, buf, -1);
-    Tcl_DStringResult(dmop->interp, &ds);
-
-    return BRLCAD_OK;
-}
-
-
-HIDDEN int
-dmo_getDrawLabelsHook_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    return dmo_getDrawLabelsHook_cmd(dmop, argc-1, argv+1);
-}
-
-
-HIDDEN int
-dmo_setDrawLabelsHook_cmd(struct dm_obj *dmop, int argc, const char **argv)
-{
-    int (*hook)(dm *, struct rt_wdb *, const char *, mat_t, int *, ClientData);
-    void *clientData;
-
-    if (!dmop || !dmop->interp)
-       return BRLCAD_ERROR;
-
-    if (argc != 3) {
-       struct bu_vls vls = BU_VLS_INIT_ZERO;
-
-       bu_vls_printf(&vls, "helplib_alias dm_setDrawLabelsHook %s", argv[0]);
-       Tcl_Eval(dmop->interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    if (sscanf(argv[1], "%p", (void **)((unsigned char *)&hook)) != 1) {
-       Tcl_DString ds;
-
-       Tcl_DStringInit(&ds);
-       Tcl_DStringAppend(&ds, argv[0], -1);
-       Tcl_DStringAppend(&ds, ": failed to set the drawLabels hook", -1);
-       Tcl_DStringResult(dmop->interp, &ds);
-
-       dmop->dmo_drawLabelsHook = (int (*)(dm *, struct rt_wdb *, const char 
*, mat_t, int *, ClientData))0;
-
-       return BRLCAD_ERROR;
-    }
-
-    if (sscanf(argv[2], "%p", &clientData) != 1) {
-       Tcl_DString ds;
-
-       Tcl_DStringInit(&ds);
-       Tcl_DStringAppend(&ds, argv[0], -1);
-       Tcl_DStringAppend(&ds, ": failed to set the drawLabels hook", -1);
-       Tcl_DStringResult(dmop->interp, &ds);
-
-       dmop->dmo_drawLabelsHook = (int (*)(dm *, struct rt_wdb *, const char 
*, mat_t, int *, ClientData))0;
-
-       return BRLCAD_ERROR;
-    }
-
-    /* FIXME: standard prohibits casting between function pointers and
-     * void *.  find a better way.
-     */
-    dmop->dmo_drawLabelsHook = hook;
-    dmop->dmo_drawLabelsHookClientData = clientData;
-
-    return BRLCAD_OK;
-}
-
-
-HIDDEN int
-dmo_setDrawLabelsHook_tcl(void *clientData, int argc, const char **argv)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    return dmo_setDrawLabelsHook_cmd(dmop, argc-1, argv+1);
-}
-
-
-/*
- * Called by Tcl when the object is destroyed.
- */
-HIDDEN void
-dmo_deleteProc(ClientData clientData)
-{
-    struct dm_obj *dmop = (struct dm_obj *)clientData;
-
-    /* free observers */
-    bu_observer_free(&dmop->dmo_observers);
-
-#ifdef USE_FBSERV
-    /* close framebuffer */
-    dmo_closeFb(dmop);
-#endif
-
-    bu_vls_free(&dmop->dmo_name);
-    (void)dm_close(dmop->dmo_dmp);
-    BU_LIST_DEQUEUE(&dmop->l);
-    bu_free((void *)dmop, "dmo_deleteProc: dmop");
-
-}
-
-
-/*
- * Generic interface for display manager object routines.
- * Usage:
- * objname cmd ?args?
- *
- * Returns: result of DM command.
- */
-HIDDEN int
-dmo_cmd(ClientData clientData, Tcl_Interp *UNUSED(interp), int argc, const 
char **argv)
-{
-    int ret;
-
-    static struct bu_cmdtab dmo_cmds[] = {
-       {"bg",                  dmo_bg_tcl},
-       {"bounds",              dmo_bounds_tcl},
-       {"clear",               dmo_clear_tcl},
-       {"configure",           dmo_configure_tcl},
-       {"debug",               dmo_debug_tcl},
-       {"depthMask",           dmo_depthMask_tcl},
-       {"drawBegin",           dmo_drawBegin_tcl},
-       {"drawEnd",             dmo_drawEnd_tcl},
-       {"drawGeom",    BU_CMD_NULL},
-       {"drawLabels",  BU_CMD_NULL},
-       {"drawLine",            dmo_drawLine_tcl},
-       {"drawPoint",           dmo_drawPoint_tcl},
-       {"drawScale",           dmo_drawScale_tcl},
-       {"drawSList",           dmo_drawSList_tcl},
-       {"drawString",          dmo_drawString_tcl},
-       {"drawVList",           dmo_drawVList_tcl},
-       {"drawDataAxes",        dmo_drawDataAxes_tcl},
-       {"drawModelAxes",       dmo_drawModelAxes_tcl},
-       {"drawViewAxes",        dmo_drawViewAxes_tcl},
-       {"drawCenterDot",       dmo_drawCenterDot_tcl},
-       {"fg",                  dmo_fg_tcl},
-       {"flush",               dmo_flush_tcl},
-       {"get_aspect",          dmo_get_aspect_tcl},
-       {"getDrawLabelsHook",   dmo_getDrawLabelsHook_tcl},
-       {"light",               dmo_light_tcl},
-       {"linestyle",           dmo_lineStyle_tcl},
-       {"linewidth",           dmo_lineWidth_tcl},
-#ifdef USE_FBSERV
-       {"listen",              dmo_listen_tcl},
-#endif
-       {"loadmat",             dmo_loadmat_tcl},
-       {"logfile",             dmo_logfile_tcl},
-       {"normal",              dmo_normal_tcl},
-       {"observer",            dmo_observer_tcl},
-       {"perspective",         dmo_perspective_tcl},
-       {"png",                 dmo_png_tcl},
-#ifdef USE_FBSERV
-       {"refreshfb",           dmo_refreshFb_tcl},
-#endif
-       {"clearBufferAfter",    dmo_clearBufferAfter_tcl},
-       {"setDrawLabelsHook",   dmo_setDrawLabelsHook_tcl},
-       {"size",                dmo_size_tcl},
-       {"sync",                dmo_sync_tcl},
-       {"transparency",        dmo_transparency_tcl},
-       {"zbuffer",             dmo_zbuffer_tcl},
-       {"zclip",               dmo_zclip_tcl},
-       {(const char *)NULL, BU_CMD_NULL}
-    };
-
-    if (bu_cmd(dmo_cmds, argc, argv, 1, clientData, &ret) == BRLCAD_OK)
-       return ret;
-
-    bu_log("ERROR: '%s' command not found\n", argv[1]);
-    return BRLCAD_ERROR;
-}
-
-
-/*
- * Open/create a display manager object.
- *
- * Usage:
- * dm_open [name type [args]]
- */
-HIDDEN int
-dmo_open_tcl(ClientData UNUSED(clientData), Tcl_Interp *interp, int argc, char 
**argv)
-{
-    struct dm_obj *dmop;
-    dm *dmp;
-    struct bu_vls vls = BU_VLS_INIT_ZERO;
-    int name_index = 1;
-    int type = DM_TYPE_BAD;
-    Tcl_Obj *obj;
-
-    obj = Tcl_GetObjResult(interp);
-    if (Tcl_IsShared(obj))
-       obj = Tcl_DuplicateObj(obj);
-
-    if (argc == 1) {
-       /* get list of display manager objects */
-       for (BU_LIST_FOR(dmop, dm_obj, &HeadDMObj.l))
-           Tcl_AppendStringsToObj(obj, bu_vls_addr(&dmop->dmo_name), " ", 
(char *)NULL);
-
-       Tcl_SetObjResult(interp, obj);
-       return BRLCAD_OK;
-    }
-
-    if (argc < 3) {
-       bu_vls_printf(&vls, "helplib_alias dm_open %s", argv[1]);
-       Tcl_Eval(interp, bu_vls_addr(&vls));
-       bu_vls_free(&vls);
-       return BRLCAD_ERROR;
-    }
-
-    /* check to see if display manager object exists */
-    for (BU_LIST_FOR(dmop, dm_obj, &HeadDMObj.l)) {
-       if (BU_STR_EQUAL(argv[name_index], bu_vls_addr(&dmop->dmo_name))) {
-           Tcl_AppendStringsToObj(obj, "dmo_open: ", argv[name_index],
-                                  " exists.", (char *)NULL);
-           Tcl_SetObjResult(interp, obj);
-           return BRLCAD_ERROR;
-       }
-    }
-
-    /* find display manager type */
-#ifdef DM_X
-    if (argv[2][0] == 'X' || argv[2][0] == 'x')
-       type = DM_TYPE_X;
-#endif /* DM_X */
-
-#ifdef DM_TK
-    if (BU_STR_EQUAL(argv[2], "tk"))
-       type = DM_TYPE_TK;
-#endif /* DM_TK */
-
-#ifdef DM_OGL
-    if (BU_STR_EQUAL(argv[2], "ogl"))
-       type = DM_TYPE_OGL;
-#endif /* DM_OGL */
-
-#ifdef DM_WGL
-    if (BU_STR_EQUAL(argv[2], "wgl"))
-       type = DM_TYPE_WGL;
-#endif /* DM_WGL */
-
-    if (type == DM_TYPE_BAD) {
-       Tcl_AppendStringsToObj(obj,
-                              "Unsupported display manager type - ",
-                              argv[2], "\n",
-                              "The supported types are: X, ogl, wgl, and nu",
-                              (char *)NULL);
-       Tcl_SetObjResult(interp, obj);
-       return BRLCAD_ERROR;
-    }
-
-    {
-       int i;
-       int arg_start = 3;
-       int newargs = 2;
-       int ac;
-       const char **av;
-
-       ac = argc + newargs;
-       av = (const char **)bu_malloc(sizeof(char *) * (ac+1), "dmo_open_tcl: 
av");
-       av[0] = argv[0];
-
-       /* Insert new args (i.e. arrange to call init_dm_obj from dm_open()) */
-       av[1] = "-i";
-       av[2] = "init_dm_obj";
-
-       /*
-        * Stuff name into argument list.
-        */
-       av[3] = "-n";
-       av[4] = argv[name_index];
-
-       /* copy the rest */
-       for (i = arg_start; i < argc; ++i)
-           av[i+newargs] = argv[i];
-       av[i+newargs] = (const char *)NULL;
-
-       if ((dmp = dm_open(interp, type, ac, av)) == DM_NULL) {
-           if (Tcl_IsShared(obj))
-               obj = Tcl_DuplicateObj(obj);
-
-           Tcl_AppendStringsToObj(obj,
-                                  "dmo_open_tcl: Failed to open - ",
-                                  argv[name_index],
-                                  "\n",
-                                  (char *)NULL);
-           bu_free((void *)av, "dmo_open_tcl: av");
-
-           Tcl_SetObjResult(interp, obj);
-           return BRLCAD_ERROR;
-       }
-
-       bu_free((void *)av, "dmo_open_tcl: av");
-    }
-
-    /* acquire dm_obj struct */
-    BU_ALLOC(dmop, struct dm_obj);
-
-    /* initialize dm_obj */
-    bu_vls_init(&dmop->dmo_name);
-    bu_vls_strcpy(&dmop->dmo_name, argv[name_index]);
-    dmop->dmo_dmp = dmp;
-    VSETALL(dmop->dmo_dmp->dm_clipmin, -2048.0);
-    VSETALL(dmop->dmo_dmp->dm_clipmax, 2047.0);
-    dmop->dmo_drawLabelsHook = (int (*)(dm *, struct rt_wdb *, const char *, 
mat_t, int *, ClientData))0;
-
-#ifdef USE_FBSERV
-    dmop->dmo_fbs.fbs_listener.fbsl_fbsp = &dmop->dmo_fbs;
-    dmop->dmo_fbs.fbs_listener.fbsl_fd = -1;
-    dmop->dmo_fbs.fbs_listener.fbsl_port = -1;
-    dmop->dmo_fbs.fbs_fbp = FB_NULL;
-    dmop->dmo_fbs.fbs_callback = dmo_fbs_callback;
-    dmop->dmo_fbs.fbs_clientData = dmop;
-    dmop->dmo_fbs.fbs_interp = interp;
-#endif
-    dmop->interp = interp;
-
-    /* append to list of dm_obj's */
-    BU_LIST_APPEND(&HeadDMObj.l, &dmop->l);
-
-    (void)Tcl_CreateCommand(interp,
-                           bu_vls_addr(&dmop->dmo_name),
-                           (Tcl_CmdProc *)dmo_cmd,
-                           (ClientData)dmop,
-                           dmo_deleteProc);
-
-    /* send Configure event */
-    bu_vls_printf(&vls, "event generate %s <Configure>; update", 
bu_vls_addr(&dmop->dmo_name));
-    Tcl_Eval(interp, bu_vls_addr(&vls));
-    bu_vls_free(&vls);
-
-#ifdef USE_FBSERV
-    /* open the framebuffer */
-    dmo_openFb(dmop);
-#endif
-
-    /* Return new function name as result */
-    Tcl_SetResult(interp, bu_vls_addr(&dmop->dmo_name), TCL_VOLATILE);
-    return BRLCAD_OK;
-}
-
-
-int
-Dmo_Init(Tcl_Interp *interp)
-{
-    BU_LIST_INIT(&HeadDMObj.l);
-    BU_VLS_INIT(&HeadDMObj.dmo_name);
-    (void)Tcl_CreateCommand(interp, "dm_open", (Tcl_CmdProc *)dmo_open_tcl, 
(ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
-
-    return BRLCAD_OK;
-}
-
-
-/*
- * Local Variables:
- * mode: C
- * tab-width: 8
- * indent-tabs-mode: t
- * c-file-style: "stroustrup"
- * End:
- * ex: shiftwidth=4 tabstop=8
- */

Modified: brlcad/branches/thirdparty_rework/src/libicv/png.c
===================================================================
--- brlcad/branches/thirdparty_rework/src/libicv/png.c  2020-09-25 18:19:35 UTC 
(rev 77233)
+++ brlcad/branches/thirdparty_rework/src/libicv/png.c  2020-09-25 18:34:02 UTC 
(rev 77234)
@@ -21,7 +21,7 @@
 #include "common.h"
 
 #include <stdlib.h>
-#include <png.h>
+#include "png.h"
 
 #include "bio.h"
 

Modified: brlcad/branches/thirdparty_rework/src/proc-db/brepintersect.h
===================================================================
--- brlcad/branches/thirdparty_rework/src/proc-db/brepintersect.h       
2020-09-25 18:19:35 UTC (rev 77233)
+++ brlcad/branches/thirdparty_rework/src/proc-db/brepintersect.h       
2020-09-25 18:34:02 UTC (rev 77234)
@@ -33,6 +33,7 @@
 #include "vmath.h"
 #include "opennurbs_array.h"
 
+
 bool PointInTriangle(
     const ON_3dPoint& a,
     const ON_3dPoint& b,

Modified: brlcad/branches/thirdparty_rework/src/util/bw-png.c
===================================================================
--- brlcad/branches/thirdparty_rework/src/util/bw-png.c 2020-09-25 18:19:35 UTC 
(rev 77233)
+++ brlcad/branches/thirdparty_rework/src/util/bw-png.c 2020-09-25 18:34:02 UTC 
(rev 77234)
@@ -27,7 +27,7 @@
 
 #include <stdlib.h>
 #include <math.h>
-#include <png.h>
+#include "png.h"
 
 #include "bio.h"
 

Modified: brlcad/branches/thirdparty_rework/src/util/png-bw.c
===================================================================
--- brlcad/branches/thirdparty_rework/src/util/png-bw.c 2020-09-25 18:19:35 UTC 
(rev 77233)
+++ brlcad/branches/thirdparty_rework/src/util/png-bw.c 2020-09-25 18:34:02 UTC 
(rev 77234)
@@ -28,7 +28,7 @@
 #include <stdlib.h>
 #include <math.h>
 #include <string.h>
-#include <png.h>
+#include "png.h"
 #include "bio.h"
 
 #include "bu/app.h"

Modified: brlcad/branches/thirdparty_rework/src/util/png-pix.c
===================================================================
--- brlcad/branches/thirdparty_rework/src/util/png-pix.c        2020-09-25 
18:19:35 UTC (rev 77233)
+++ brlcad/branches/thirdparty_rework/src/util/png-pix.c        2020-09-25 
18:34:02 UTC (rev 77234)
@@ -27,7 +27,7 @@
 
 #include <stdlib.h>
 #include <math.h>
-#include <png.h>
+#include "png.h"
 #include "bio.h"
 
 #include "vmath.h"

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to