Revision: 77084
          http://sourceforge.net/p/brlcad/code/77084
Author:   starseeker
Date:     2020-09-08 19:25:40 +0000 (Tue, 08 Sep 2020)
Log Message:
-----------
Merge from trunk - r76972 through r77083

Modified Paths:
--------------
    brlcad/branches/swrast/AUTHORS
    brlcad/branches/swrast/CHANGES
    brlcad/branches/swrast/CMakeLists.txt
    brlcad/branches/swrast/NEWS
    brlcad/branches/swrast/TODO
    brlcad/branches/swrast/doc/README.Windows
    brlcad/branches/swrast/doc/docbook/system/man1/pix-bw.xml
    brlcad/branches/swrast/include/bg/aabb_ray.h
    brlcad/branches/swrast/include/bg/chull.h
    brlcad/branches/swrast/include/bg/lseg.h
    brlcad/branches/swrast/include/bg/obr.h
    brlcad/branches/swrast/include/bg/pointgen.h
    brlcad/branches/swrast/include/bg/polygon.h
    brlcad/branches/swrast/include/bg/polygon_types.h
    brlcad/branches/swrast/include/bg/spsr.h
    brlcad/branches/swrast/include/bg/tri_pt.h
    brlcad/branches/swrast/include/bg/tri_ray.h
    brlcad/branches/swrast/include/bg/tri_tri.h
    brlcad/branches/swrast/include/bg/trimesh.h
    brlcad/branches/swrast/include/bn/anim.h
    brlcad/branches/swrast/include/bn/complex.h
    brlcad/branches/swrast/include/bn/dvec.h
    brlcad/branches/swrast/include/bn/noise.h
    brlcad/branches/swrast/include/bn/plane.h
    brlcad/branches/swrast/include/bn/poly.h
    brlcad/branches/swrast/include/bn/rand.h
    brlcad/branches/swrast/include/bn/vectfont.h
    brlcad/branches/swrast/include/bn/vlist.h
    brlcad/branches/swrast/include/brep/curvetree.h
    brlcad/branches/swrast/include/brep/util.h
    brlcad/branches/swrast/include/bu/app.h
    brlcad/branches/swrast/include/bu/color.h
    brlcad/branches/swrast/include/bu/column.h
    brlcad/branches/swrast/include/bu/defines.h
    brlcad/branches/swrast/include/bu/dylib.h
    brlcad/branches/swrast/include/bu/endian.h
    brlcad/branches/swrast/include/bu/file.h
    brlcad/branches/swrast/include/bu/glob.h
    brlcad/branches/swrast/include/bu/interrupt.h
    brlcad/branches/swrast/include/bu/mime.h
    brlcad/branches/swrast/include/bu/parallel.h
    brlcad/branches/swrast/include/bu/process.h
    brlcad/branches/swrast/include/bu/tbl.h
    brlcad/branches/swrast/include/bu/vls.h
    brlcad/branches/swrast/include/common.h
    brlcad/branches/swrast/include/gcv/api.h
    brlcad/branches/swrast/include/ged/commands.h
    brlcad/branches/swrast/include/ged.h
    brlcad/branches/swrast/include/rt/calc.h
    brlcad/branches/swrast/include/rt/geom.h
    brlcad/branches/swrast/include/rt/primitives/annot.h
    brlcad/branches/swrast/include/tclcad.h
    brlcad/branches/swrast/include/wdb.h
    brlcad/branches/swrast/misc/CMake/CMakeLists.txt
    brlcad/branches/swrast/misc/doxygen/Doxyfile.in
    brlcad/branches/swrast/misc/doxygen/libbg.dox
    brlcad/branches/swrast/misc/doxygen/libbn.dox
    brlcad/branches/swrast/misc/doxygen/libbu.dox
    brlcad/branches/swrast/misc/doxygen/libged.dox
    brlcad/branches/swrast/misc/tools/CMakeLists.txt
    brlcad/branches/swrast/misc/tools/dom2dox/Doxyfile
    brlcad/branches/swrast/misc/wix/brlcad_banner.bmp
    brlcad/branches/swrast/misc/wix/brlcad_dialog.bmp
    brlcad/branches/swrast/src/archer/CMakeLists.txt
    brlcad/branches/swrast/src/external/Creo/CMakeLists.txt
    brlcad/branches/swrast/src/libbu/realpath_bsd.c
    brlcad/branches/swrast/src/libbu/whereami.c
    brlcad/branches/swrast/src/libdm/glx/dm-ogl.c
    brlcad/branches/swrast/src/libgcv/CMakeLists.txt
    brlcad/branches/swrast/src/libgcv/plugins/gdal/gdal.cpp
    brlcad/branches/swrast/src/libgcv/plugins/gdal/gdal_ll.cpp
    brlcad/branches/swrast/src/libged/bot/bot.cpp
    brlcad/branches/swrast/src/libged/put_comb/put_comb.c
    brlcad/branches/swrast/src/libged/typein/typein.c
    brlcad/branches/swrast/src/librt/db5_scan.c
    brlcad/branches/swrast/src/librt/db_lookup.c
    brlcad/branches/swrast/src/libtclcad/CMakeLists.txt
    brlcad/branches/swrast/src/libtclcad/auto_path.c
    brlcad/branches/swrast/src/libtclcad/bn.c
    brlcad/branches/swrast/src/libtclcad/bu.c
    brlcad/branches/swrast/src/libtclcad/cmdhist.c
    brlcad/branches/swrast/src/libtclcad/dm.c
    brlcad/branches/swrast/src/libtclcad/fb.c
    brlcad/branches/swrast/src/libtclcad/fbserv.c
    brlcad/branches/swrast/src/libtclcad/rt.c
    brlcad/branches/swrast/src/libtclcad/tclcad_private.h
    brlcad/branches/swrast/src/libtclcad/view/faceplate.c
    brlcad/branches/swrast/src/mged/CMakeLists.txt
    brlcad/branches/swrast/src/mged/mged.c
    brlcad/branches/swrast/src/other/CMakeLists.txt
    brlcad/branches/swrast/src/qged/TODO.qt
    brlcad/branches/swrast/src/rtwizard/CMakeLists.txt
    brlcad/branches/swrast/src/tclscripts/mged/help.tcl
    brlcad/branches/swrast/src/util/pix-bw.c

Added Paths:
-----------
    brlcad/branches/swrast/misc/CMake/FindNSIS.cmake
    brlcad/branches/swrast/misc/CMake/FindWix.cmake
    brlcad/branches/swrast/misc/tools/inactvhdrs/
    brlcad/branches/swrast/src/archer/archer.ico
    brlcad/branches/swrast/src/archer/archer.rc
    brlcad/branches/swrast/src/libgcv/plugins/vol/
    brlcad/branches/swrast/src/libgcv/tests/
    brlcad/branches/swrast/src/libtclcad/commands.c
    brlcad/branches/swrast/src/libtclcad/eval.c
    brlcad/branches/swrast/src/libtclcad/global.c
    brlcad/branches/swrast/src/libtclcad/init.c
    brlcad/branches/swrast/src/libtclcad/mouse.c
    brlcad/branches/swrast/src/libtclcad/polygons.c
    brlcad/branches/swrast/src/libtclcad/wrapper.c
    brlcad/branches/swrast/src/mged/mged.ico
    brlcad/branches/swrast/src/mged/mged.rc
    brlcad/branches/swrast/src/rtwizard/rtwizard.ico
    brlcad/branches/swrast/src/rtwizard/rtwizard.rc

Removed Paths:
-------------
    brlcad/branches/swrast/src/libgcv/test_bottess.c
    brlcad/branches/swrast/src/libtclcad/tclcad_eval.c
    brlcad/branches/swrast/src/libtclcad/tclcad_global.c
    brlcad/branches/swrast/src/libtclcad/tclcad_init.c
    brlcad/branches/swrast/src/libtclcad/tclcad_mouse.c
    brlcad/branches/swrast/src/libtclcad/tclcad_obj.c
    brlcad/branches/swrast/src/libtclcad/tclcad_obj_wrapper.c
    brlcad/branches/swrast/src/libtclcad/tclcad_polygons.c

Property Changed:
----------------
    brlcad/branches/swrast/
    brlcad/branches/swrast/CHANGES
    brlcad/branches/swrast/NEWS
    brlcad/branches/swrast/doc/
    brlcad/branches/swrast/include/
    brlcad/branches/swrast/src/libbu/
    brlcad/branches/swrast/src/other/

Index: brlcad/branches/swrast
===================================================================
--- brlcad/branches/swrast      2020-09-08 17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast      2020-09-08 19:25:40 UTC (rev 77084)

Property changes on: brlcad/branches/swrast
___________________________________________________________________
Modified: svn:mergeinfo
## -9,4 +9,5 ##
 /brlcad/branches/opencl:65867-66137
 /brlcad/branches/osg:62110-62113
 /brlcad/branches/prep-cache:68236-68933
-/brlcad/branches/tcltk86:68300-75257
\ No newline at end of property
+/brlcad/branches/tcltk86:68300-75257
+/brlcad/trunk:76973-77083
\ No newline at end of property
Modified: brlcad/branches/swrast/AUTHORS
===================================================================
--- brlcad/branches/swrast/AUTHORS      2020-09-08 17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast/AUTHORS      2020-09-08 19:25:40 UTC (rev 77084)
@@ -898,12 +898,22 @@
 2019 May
 Open Source (GSoC)
 
+Suthar, Rishabh
+nicknames yamhai, rishabhsuthar32
+2020 March
+Open Source (GSoC)
+
 Vaidya, Sahil
 nicknames sahilvaidya99
 2020 April
 ARL Student Hire / University of Texas at Austin
 
+Das, Sumagna
+nicknames sumagnadas
+2020 May
+Open Source
 
+
 SPECIAL THANKS
 --------------
 

Modified: brlcad/branches/swrast/CHANGES
===================================================================
--- brlcad/branches/swrast/CHANGES      2020-09-08 17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast/CHANGES      2020-09-08 19:25:40 UTC (rev 77084)
@@ -137,6 +137,14 @@
         bg_polyline_2d_chull, bg_2d_chull, bg_3d_coplanar_chull,
         bg_3d_chull
 
+MGED gui
+       The following will be removed from MGED's menu bar (unused
+       features, can be accomplished another way, or will be exposed
+       only as lower level settings when there are sensible defaults
+       that are seldom changed.)
+
+       Settings->Mouse Behavior->Pick Raytrace-Object(s)
+
 7.30
 ----
 ~/.density


Property changes on: brlcad/branches/swrast/CHANGES
___________________________________________________________________
Modified: svn:mergeinfo
## -1,3 +1,4 ##
 
/brlcad/branches/RELEASE/CHANGES:70323-70333,71915-72242,72525-72534,72826-72858,74376-74454,74964-75140
 
/brlcad/branches/brep-debug/CHANGES:69168,69927,69995-69996,70148-70149,70347-70349,70377,70526-70527,71006-71007,71009-71022,71046-71047,71049,71096-71100
-/brlcad/branches/dm-fb-merge/CHANGES:75426-76198
\ No newline at end of property
+/brlcad/branches/dm-fb-merge/CHANGES:75426-76198
+/brlcad/trunk/CHANGES:76973-77083
\ No newline at end of property
Modified: brlcad/branches/swrast/CMakeLists.txt
===================================================================
--- brlcad/branches/swrast/CMakeLists.txt       2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/CMakeLists.txt       2020-09-08 19:25:40 UTC (rev 
77084)
@@ -2936,17 +2936,11 @@
   endif(HAVE__SNPRINTF)
 endif(NOT HAVE_SNPRINTF)
 
-# So far I haven't been able to come up with a reliable self contained
-# test for this, but libbu's #2 realpath test triggers a stack smash
-# on some linux systems.  For the moment, fall back on OpenBSD's
-# userspace implementation, which does seem to work.  Once we can
-# get a self-contained reproduction of this failure, put it below
-# and we can use the system realpath again.
 if(HAVE_REALPATH)
-  #check_c_source_runs("#include<limits.h>\n#include <stdlib.h>\nint main() { 
char dir[512]; const char *d = \"/tmp/REALPATH_TEST_PATH\"; d = (const char 
*)realpath(d, dir); return 0; }" HAVE_WORKING_REALPATH)
-  #if(HAVE_WORKING_REALPATH)
-  #  CONFIG_H_APPEND(BRLCAD "#define HAVE_WORKING_REALPATH 1\n")
-  #endif(HAVE_WORKING_REALPATH)
+  check_c_source_runs("#include<limits.h>\n#include <stdlib.h>\nint main() { 
char dir[PATH_MAX]; const char *d = \"/tmp/REALPATH_TEST_PATH\"; d = (const 
char *)realpath(d, dir); return 0; }" HAVE_WORKING_REALPATH)
+  if(HAVE_WORKING_REALPATH)
+    CONFIG_H_APPEND(BRLCAD "#define HAVE_WORKING_REALPATH 1\n")
+  endif(HAVE_WORKING_REALPATH)
 endif(HAVE_REALPATH)
 
 # GetFullPathName
@@ -3570,26 +3564,45 @@
   endif(CPACK_RPM_PACKAGE_RELEASE)
 
   if(WIN32)
-    set(CPACK_GENERATOR NSIS)
-    set(CPACK_NSIS_PACKAGE_NAME "BRL-CAD")
-    set(CPACK_NSIS_INSTALL_DIRECTORY "BRL-CAD ${BRLCAD_VERSION}")
-    set(CPACK_SOURCE_DIR "${CMAKE_SOURCE_DIR}")
-    set(CPACK_DATA_DIR "${DATA_DIR}")
-    set(CPACK_DOC_DIR "${DOC_DIR}")
-    # There is a bug in NSI that does not handle full unix paths properly. Make
-    # sure there is at least one set of four (4) backslashes.
-    set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/misc/nsis\\\\brlcad.ico")
-    set(CPACK_NSIS_MUI_UNIICON 
"${CMAKE_SOURCE_DIR}/misc/nsis\\\\uninstall.ico")
-    set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
-    set(CPACK_NSIS_DISPLAY_NAME "BRL-CAD")
-    set(CPACK_NSIS_MODIFY_PATH ON)
-    if(BRLCAD_ENABLE_WIX)
+    find_package(NSIS)
+    if (NSIS_FOUND)
+      set(CPACK_GENERATOR ${CPACK_GENERATOR} NSIS)
+      set(CPACK_NSIS_PACKAGE_NAME "BRL-CAD")
+      set(CPACK_NSIS_INSTALL_DIRECTORY "BRL-CAD ${BRLCAD_VERSION}")
+      set(CPACK_SOURCE_DIR "${CMAKE_SOURCE_DIR}")
+      set(CPACK_DATA_DIR "${DATA_DIR}")
+      set(CPACK_DOC_DIR "${DOC_DIR}")
+      # There is a bug in NSIS that does not handle full unix paths properly. 
Make
+      # sure there is at least one set of four (4) backslashes.
+      set(CPACK_NSIS_MUI_ICON "${CMAKE_SOURCE_DIR}/misc/nsis\\\\brlcad.ico")
+      set(CPACK_NSIS_MUI_UNIICON 
"${CMAKE_SOURCE_DIR}/misc/nsis\\\\uninstall.ico")
+      set(CPACK_NSIS_ENABLE_UNINSTALL_BEFORE_INSTALL ON)
+      set(CPACK_NSIS_DISPLAY_NAME "BRL-CAD")
+      set(CPACK_NSIS_MODIFY_PATH ON)
+    endif (NSIS_FOUND)
+    find_package(Wix)
+    if (Wix_FOUND)
+      # User report that this version of the installer also supports
+      # non-graphical installation with the /passive option.
+      #
+      # Note: for WiX, start menu shortcuts and desktop icons are handled with
+      # properties set on targets.  (At the moment, this is not true for NSIS -
+      # it uses entries in the misc/CMake/NSIS.template.in file.)
+      #
+      # If we need to get fancier about this, look at the following:
+      # 
https://github.com/Kitware/CMake/blob/master/CMakeCPackOptions.cmake.in#L216
+      # https://github.com/Kitware/CMake/tree/master/Utilities/Release/WiX
       set(CPACK_GENERATOR ${CPACK_GENERATOR} WIX)
       set(CPACK_WIX_LICENSE_RTF "${CMAKE_SOURCE_DIR}/misc/wix/License.rtf")
       set(CPACK_WIX_PRODUCT_ICON 
"${CMAKE_SOURCE_DIR}/misc/wix/brlcad_product.ico")
+      set(CPACK_WIX_PROGRAM_MENU_FOLDER "BRL-CAD ${BRLCAD_VERSION}")
       set(CPACK_WIX_UI_BANNER "${CMAKE_SOURCE_DIR}/misc/wix/brlcad_banner.bmp")
       set(CPACK_WIX_UI_DIALOG "${CMAKE_SOURCE_DIR}/misc/wix/brlcad_dialog.bmp")
-    endif(BRLCAD_ENABLE_WIX)
+    endif (Wix_FOUND)
+    if (NOT CPACK_GENERATOR)
+      # If nothing else, make a zip file
+      set(CPACK_GENERATOR ZIP)
+    endif (NOT CPACK_GENERATOR)
     if(CMAKE_CL_64)
       set(CPACK_PACKAGE_FILE_NAME "BRL-CAD_${BRLCAD_VERSION}_win64")
       set(CPACK_PACKAGE_INSTALL_REGISTRY_KEY "BRL-CAD ${BRLCAD_VERSION} win64")

Modified: brlcad/branches/swrast/NEWS
===================================================================
--- brlcad/branches/swrast/NEWS 2020-09-08 17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast/NEWS 2020-09-08 19:25:40 UTC (rev 77084)
@@ -13,6 +13,11 @@
 --- 2020-08-XX  Release 7.32.X                                     ---
 ----------------------------------------------------------------------
 
+* upgraded Tcl/Tk from 8.5.19 to 8.6.10 - Cliff Yapp
+* bundled zlib & libpng use API prefix and library suffix - Cliff Yapp
+* extensive improvements to OpenCL ray trace pipeline - Rishabh Suthar
+* improved rtweight density value warnings - Sean Morrison, Cliff Yapp
+* added perception-based hdtv and hdr modes for pix-bw - Sean Morrison
 * fixed semi-transparent DM and FB windows on Linux - Cliff Yapp
 * improved rtweight manual page - Sean Morrison
 * added line reporting TCP listening port to remrt output - Cliff Yapp
@@ -20,6 +25,7 @@
 * fixed crash when drawing a VOL with missing data - Cliff Yapp
 * facetall.sh script is replaced by MGED facetize command - Cliff Yapp
 * dynamic LIBGED command loading in MGED & Archer - Cliff Yapp
+* removed MGED "Display Manager" switching menu options - Cliff Yapp
 * dynamic LIBDM display manager loading in MGED & Archer - Cliff Yapp
 * fixed 'idents' crash when running in a read-only dir - Sean Morrison
 * fixed fb tools w/ redirected files and cv on Windows - Sean Morrison
@@ -34,6 +40,10 @@
 * improved output path sorting of search command - Cliff Yapp
 * added 3dm-g failure message about supported versions - Cliff Yapp
 * fixed bw-png writing corrupted png files on Windows - Sean Morrison
+* added MGED 'dm type' subcommand for reporting DM type - Cliff Yapp
+* improved vdeck input support for Windows text files - Sean Morrison
+* fixed MGED 'plot' & 'brep plot' commands on Windows - Sean Morrison
+* fixed numerous image utilities on Windows - Sean Morrison
 
 
 ----------------------------------------------------------------------
@@ -66,9 +76,11 @@
 * fixed transparent drawing in MGED - Nick Reed
 * fixed solid NURBS brep intersection testing - Cliff Yapp
 * removed extra blank line after commands in MGED GUI - Sean Morrison
+* minor improvement to NURBS ray tracing performance - Sean Morrison
 * added "plate" object type filter to search command - Cliff Yapp
 * fixed latent logging bug during facetize on Windows - Bob Parker
 * fixed bug closing rt framebuffer windows on Windows - Sean Morrison
+* added EBM support for reading from database objects - Jeffrey Liu
 
 
 ----------------------------------------------------------------------
@@ -83,9 +95,13 @@
 * changed mged escape key binding to reset mouse mode - Sean Morrison
 * removed default xXyYzZ0 rate rotation key bindings - Sean Morrison
 * improved tessellation of nearly coplanar surfaces - John Anderson
-* fixed display of annotations on Windows - Daniel Roßberg
+* fixed annotations display on Windows - Daniel Roßberg, Ali Haydar
 * fixed rtedge and rtwizard occlusion object edge bug - Sean Morrison
 * rt* tools no longer force outputs to be read-only - Sean Morrison
+* fixed bug listing annotations with short label strings - Ali Haydar
+* improved support for label placement in annotations - Ali Haydar
+* fixed bug in annotation object bounding box calculation - Ali Haydar
+* fixed an annotation leader line bug affecting display - Ali Haydar
 * fixed 'burst' crash when run without options - Sean Morrison
 * changed rtweight to not truncate long pathnames - Sean Morrison
 * added new ball bearing example geometry model - Sean Morrison
@@ -214,7 +230,7 @@
 * improved 'idents' command portability - Daniel Ramirez, Cliff Yapp
 * changed remrt/rtsrv to no longer report overlaps - Sean Morrison
 * improved GUI of MGED's Overlap Tool - Saran Narayan
-* fixed geometry directory building bug in remrt/rtsrv - Sean Morrison
+* fixed geopmetry directory building bug in remrt/rtsrv - Sean Morrison
 * fixed gcv problem with full paths on Windows - Cliff Yapp
 * removed precision limitation in NIRT input parsing - Cliff Yapp
 * added new example geometry models: chess and die pieces - Jeff Sieu
@@ -295,6 +311,7 @@
 * fix rtedge foreground/background color options - Jon Engbert
 * support rt -C colors specified as 0-255 or 0.0-1.0 - Jon Engbert
 * fixed xpush bug leaving stray top-level objects - Nick Reed
+* removed MGED wrapper 'mged.bat' batch script on Windows - Cliff Yapp
 
 
 ----------------------------------------------------------------------


Property changes on: brlcad/branches/swrast/NEWS
___________________________________________________________________
Modified: svn:mergeinfo
## -8,4 +8,5 ##
 /brlcad/branches/opencl/NEWS:65867-66137
 /brlcad/branches/osg/NEWS:62110-62113
 /brlcad/branches/prep-cache/NEWS:68236-68933
-/brlcad/branches/tcltk86/NEWS:68300-75257
\ No newline at end of property
+/brlcad/branches/tcltk86/NEWS:68300-75257
+/brlcad/trunk/NEWS:76973-77083
\ No newline at end of property
Modified: brlcad/branches/swrast/TODO
===================================================================
--- brlcad/branches/swrast/TODO 2020-09-08 17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast/TODO 2020-09-08 19:25:40 UTC (rev 77084)
@@ -18,14 +18,37 @@
 THESE TASKS SHOULD HAPPEN BEFORE THE NEXT RELEASE
 -------------------------------------------------
 
-* The embedded framebuffer for the X display manager is not working
-  with Tcl/Tk 8.6 - it brings down mged with an Xerror when it tries
-  to XFlush after X24_blit.
 
-
 THESE TASKS SHOULD HAPPEN WITHIN TWO RELEASE ITERATIONS
 -------------------------------------------------------
 
+* The following will be removed from MGED's menu bar (unused
+  features, can be accomplished another way, or will be exposed
+  only as lower level settings when there are sensible defaults
+  that are seldom changed.)
+
+  ViewRing menu and entries.
+  Modes->Persistent Sweep Rectangle
+  Modes->Collaborate
+  Modes->Rateknobs
+  Modes->Display Lists
+  Misc->Keystroke Forwarding
+  Misc->Depth Cueing
+  Misc->Z Buffer
+  Misc->Lighting
+  Settings->Mouse Behavior->Sweep Raytrace-Rectangle
+  Settings->Mouse Behavior->Sweep Paint-Rectangle
+  Settings->Mouse Behavior->Sweep Zoom-Rectangle
+  Settings->Apply To->Local Panes
+  Settings->Apply To->Listed Panes
+  Settings->Framebuffer->Rectangle Area
+
+* The embedded framebuffer for the X display manager is not working
+  with Tcl/Tk 8.6 - it brings down mged with an Xerror when it tries
+  to XFlush after X24_blit.  Better solution is to replace the X
+  dm/fb with a cross platform software rasterizing solution of some
+  sort.
+
 * Implement new behavior for quit command in MGED - if bu_subprocess
   commands are running, by default refuse to quit and print out a
   list of currently running processes and instructions on how to abort
@@ -147,6 +170,9 @@
 THESE ARE UNSCHEDULED BACKLOG TASKS
 -----------------------------------
 
+* rtwizard's reopening of the database is causing db_dircheck
+  "Duplicate of..." errors when opening read-only .g files.
+
 * procedural studio box generation allowing for specification of size,
   shape, material, and lighting characteristics
 
@@ -1155,9 +1181,6 @@
   http://support.echoview.com/WebHelp/Reference/File_formats/
     Export_file_formats/Volume_data_set_file_formats.htm
 
-* turn geometry converters and image converters into libraries
-  (started as libraries libgcv and libicv)
-
 * add support for querying geometry properties to library including
   computing surface area and weight/mass.
 

Index: brlcad/branches/swrast/doc
===================================================================
--- brlcad/branches/swrast/doc  2020-09-08 17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast/doc  2020-09-08 19:25:40 UTC (rev 77084)

Property changes on: brlcad/branches/swrast/doc
___________________________________________________________________
Modified: svn:mergeinfo
## -8,4 +8,5 ##
 /brlcad/branches/opencl/doc:65867-66137
 /brlcad/branches/osg/doc:62110-62113
 /brlcad/branches/prep-cache/doc:68236-68933
-/brlcad/branches/tcltk86/doc:68300-75257
\ No newline at end of property
+/brlcad/branches/tcltk86/doc:68300-75257
+/brlcad/trunk/doc:76973-77083
\ No newline at end of property
Modified: brlcad/branches/swrast/doc/README.Windows
===================================================================
--- brlcad/branches/swrast/doc/README.Windows   2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/doc/README.Windows   2020-09-08 19:25:40 UTC (rev 
77084)
@@ -3,18 +3,23 @@
 
 The usual way to build BRL-CAD for Windows is to use the CMake build
 system generator and the Microsoft Visual Studio C++ (MSVC) compiler.
-Recent versions of both (as of this writing, MSVC 2013 and CMake
-2.8.12+) are recommended.  If generating an installer, the Nullsoft
-Scriptable Install System (NSIS) tool is also required.
+Recent versions of both are recommended.  If generating an installer,
+the following options are available and supported:
 
-In principle, BRL-CAD can be built using CMake and environments like
-Cygwin and/or Mingw/Msys, but the latter is largely untested and
+Nullsoft Scriptable Install System (NSIS) - generates a. .exe installer
+
+WiX Toolset - generates an MSI installer.
+
+These tools must be installed separately - they are not included with
+CMake or Visual Studio.
+
+Note:  In principle BRL-CAD can be built using CMake and environments
+like Cygwin and/or Mingw/Msys, but they are largely untested and
 infrequently supported.  Enhancements or bug reports are welcome.
 
 Visual Studio
 -------------
 
-
 To build with CMake and Visual Studio, the first step is to obtain the
 BRL-CAD sources and create a build directory.  In principle, it is not
 *required* to have a separate build directory, but with Windows and
@@ -54,6 +59,18 @@
 named PACKAGE and run it.  The end result should be an .exe file
 capable of installing BRL-CAD.
 
+Working with MSI files
+----------------------
+
+The WiX Toolset's MSI file, in addition to the standard interactive
+graphical install, also supports a command line based silent
+install. (See, for example, https://stackoverflow.com/a/25230485)
+
+msiexec.exe /i c:\BRL-CAD-7.32.0_win64.msi /QN /L*V 
"C:\Temp\brlcad_install.log"
+
+The logging step is not required but is recommended to allow for
+easier understanding of any issues that might arise.
+
 ===========================================
 
 === Setting a specific SDK version ===

Modified: brlcad/branches/swrast/doc/docbook/system/man1/pix-bw.xml
===================================================================
--- brlcad/branches/swrast/doc/docbook/system/man1/pix-bw.xml   2020-09-08 
17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast/doc/docbook/system/man1/pix-bw.xml   2020-09-08 
19:25:40 UTC (rev 77084)
@@ -21,7 +21,7 @@
     <arg choice='opt'>-w <replaceable>width</replaceable></arg>
     <arg choice='opt'>-n <replaceable>height</replaceable></arg>
    <arg choice='opt'>
-    <arg choice='opt'>-e <replaceable>ntsc|crt</replaceable></arg>
+    <arg choice='opt'>-e <replaceable>ntsc|crt|hdtv|hdr|avg</replaceable></arg>
     <arg choice='opt'>
      <arg choice='opt'><arg choice='plain'>-R 
</arg><replaceable>r_weight</replaceable></arg>
      <arg choice='opt'><arg choice='plain'>-G 
</arg><replaceable>g_weight</replaceable></arg>
@@ -64,17 +64,41 @@
   <varlistentry>
   <term><emphasis remap='B'>ntsc</emphasis></term>
   <listitem>
-<para> weighting used is based on the NTSC primaries and the
-D6500 alignment white.</para>
+<para>Weighting used is based on the NTSC primaries and white
+alignment.  Conforming with Rec.ITU-R BT.601-7, this uses
+0.299/0.587/0.114 RGB weights.  This gives a simplified linear
+conversion of perceived luminance that reflects human physiological
+sensitivity to green and least to blue.</para>
   </listitem>
   </varlistentry>
   <varlistentry>
   <term><emphasis remap='B'>crt</emphasis></term>
   <listitem>
-<para>weighting scheme used will be for "typical" CRT phosphor chromaticities
-and the D6500 white.</para>
+<para>Weighting scheme matches "historic" CRT phosphor chromaticities
+and a D6500 white alignment.  Uses 0.26/0.66/0.08 RGB weights.</para>
   </listitem>
   </varlistentry>
+  <varlistentry>
+  <term><emphasis remap='B'>hdtv</emphasis></term>
+  <listitem>
+<para>Weighting scheme matches "modern" HDTV display chromacities.
+Uses 0.2126/0.7152/0.0722 RGB weights per Rec.ITU-R BT.709</para>
+  </listitem>
+  </varlistentry>
+  <varlistentry>
+  <term><emphasis remap='B'>hdr</emphasis></term>
+  <listitem>
+<para>Weighting scheme matches high dynamic range (HDR) chromacities.
+Uses 0.2627/0.6780/0.0593 RGB weights per Rec.ITU-R BT.2020</para>
+  </listitem>
+  </varlistentry>
+  <varlistentry>
+  <term><emphasis remap='B'>avg</emphasis></term>
+  <listitem>
+<para>Weighting scheme simply takes the average of all three values
+(i.e., R + G + B / 3.0).</para>
+  </listitem>
+  </varlistentry>
 </variablelist>
 <para>
 Individual color plane(s) can be selected via the
@@ -96,15 +120,10 @@
 <para>will equally blend the red and blue color planes; because -G is omitted, 
the green color plane is not considered.
 (Had "-G0.0" been included in this example, the three colors would have been 
weighted equally, as in the default condition.)</para>
 
-<para>pix-bw -R0.30 -G0.59 -B0.11 &lt; <emphasis remap='I'>file.pix</emphasis> 
&gt; <emphasis remap='I'>file.bw</emphasis></para>
+<para>pix-bw -R0.3 -G0.6 -B0.1 &lt; <emphasis remap='I'>file.pix</emphasis> 
&gt; <emphasis remap='I'>file.bw</emphasis></para>
 <para>
-has the same effect as the
-<option>-ntsc</option>
-flag.
-<!-- .br -->
-[The
-<option>-crt</option>
-weights are: 0.26, 0.66, 0.08]</para>
+applies weights close to the <option>-ntsc</option> flag.
+</para>
 </refsect1>
 
 <refsect1 xml:id='see_also'><title>SEE ALSO</title>

Index: brlcad/branches/swrast/include
===================================================================
--- brlcad/branches/swrast/include      2020-09-08 17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast/include      2020-09-08 19:25:40 UTC (rev 77084)

Property changes on: brlcad/branches/swrast/include
___________________________________________________________________
Modified: svn:mergeinfo
## -9,4 +9,5 ##
 /brlcad/branches/opencl/include:65867-66137
 /brlcad/branches/osg/include:62110-62113
 /brlcad/branches/prep-cache/include:68236-68933
-/brlcad/branches/tcltk86/include:68300-75257
\ No newline at end of property
+/brlcad/branches/tcltk86/include:68300-75257
+/brlcad/trunk/include:76973-77083
\ No newline at end of property
Modified: brlcad/branches/swrast/include/bg/aabb_ray.h
===================================================================
--- brlcad/branches/swrast/include/bg/aabb_ray.h        2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/include/bg/aabb_ray.h        2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -20,7 +20,7 @@
 
 /*----------------------------------------------------------------------*/
 /* @file aabb_ray.h */
-/** @addtogroup aabb_ray */
+/** @addtogroup bg_aabb_ray */
 /** @{ */
 
 /**

Modified: brlcad/branches/swrast/include/bg/chull.h
===================================================================
--- brlcad/branches/swrast/include/bg/chull.h   2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bg/chull.h   2020-09-08 19:25:40 UTC (rev 
77084)
@@ -20,7 +20,7 @@
 
 /*----------------------------------------------------------------------*/
 /* @file chull.h */
-/** @addtogroup chull */
+/** @addtogroup bg_chull */
 /** @{ */
 
 /**

Modified: brlcad/branches/swrast/include/bg/lseg.h
===================================================================
--- brlcad/branches/swrast/include/bg/lseg.h    2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bg/lseg.h    2020-09-08 19:25:40 UTC (rev 
77084)
@@ -19,8 +19,8 @@
  */
 
 /*----------------------------------------------------------------------*/
-/* @file polygon.h */
-/** @addtogroup lineseg */
+/* @file lseg.h */
+/** @addtogroup bg_lseg */
 /** @{ */
 
 /**

Modified: brlcad/branches/swrast/include/bg/obr.h
===================================================================
--- brlcad/branches/swrast/include/bg/obr.h     2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bg/obr.h     2020-09-08 19:25:40 UTC (rev 
77084)
@@ -20,7 +20,7 @@
 
 /*----------------------------------------------------------------------*/
 /* @file obr.h */
-/** @addtogroup obr */
+/** @addtogroup bg_obr */
 /** @{ */
 
 /**

Modified: brlcad/branches/swrast/include/bg/pointgen.h
===================================================================
--- brlcad/branches/swrast/include/bg/pointgen.h        2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/include/bg/pointgen.h        2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -20,7 +20,7 @@
 
 /*----------------------------------------------------------------------*/
 /* @file pointgen.h */
-/** @addtogroup pointgen */
+/** @addtogroup bg_pointgen */
 /** @{ */
 
 /**

Modified: brlcad/branches/swrast/include/bg/polygon.h
===================================================================
--- brlcad/branches/swrast/include/bg/polygon.h 2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bg/polygon.h 2020-09-08 19:25:40 UTC (rev 
77084)
@@ -20,7 +20,7 @@
 
 /*----------------------------------------------------------------------*/
 /* @file polygon.h */
-/** @addtogroup polygon */
+/** @addtogroup bg_polygon */
 /** @{ */
 
 /**

Modified: brlcad/branches/swrast/include/bg/polygon_types.h
===================================================================
--- brlcad/branches/swrast/include/bg/polygon_types.h   2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/include/bg/polygon_types.h   2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -20,7 +20,7 @@
 
 /*----------------------------------------------------------------------*/
 /* @file polygon_types.h */
-/** @addtogroup polygon */
+/** @addtogroup bg_polygon */
 /** @{ */
 
 /**

Modified: brlcad/branches/swrast/include/bg/spsr.h
===================================================================
--- brlcad/branches/swrast/include/bg/spsr.h    2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bg/spsr.h    2020-09-08 19:25:40 UTC (rev 
77084)
@@ -50,8 +50,8 @@
  */
 
 /*----------------------------------------------------------------------*/
-/* @file sbsr.h */
-/** @addtogroup sbsr */
+/* @file spsr.h */
+/** @addtogroup bg_surf_recon_spsr */
 /** @{ */
 
 /**

Modified: brlcad/branches/swrast/include/bg/tri_pt.h
===================================================================
--- brlcad/branches/swrast/include/bg/tri_pt.h  2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bg/tri_pt.h  2020-09-08 19:25:40 UTC (rev 
77084)
@@ -20,7 +20,7 @@
 
 /*----------------------------------------------------------------------*/
 /* @file tri_pt.h */
-/** @addtogroup tri_pt */
+/** @addtogroup bg_tri_pt */
 /** @{ */
 
 /**

Modified: brlcad/branches/swrast/include/bg/tri_ray.h
===================================================================
--- brlcad/branches/swrast/include/bg/tri_ray.h 2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bg/tri_ray.h 2020-09-08 19:25:40 UTC (rev 
77084)
@@ -20,7 +20,7 @@
 
 /*----------------------------------------------------------------------*/
 /* @file tri_ray.h */
-/** @addtogroup tri_ray */
+/** @addtogroup bg_tri_ray */
 /** @{ */
 
 /**

Modified: brlcad/branches/swrast/include/bg/tri_tri.h
===================================================================
--- brlcad/branches/swrast/include/bg/tri_tri.h 2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bg/tri_tri.h 2020-09-08 19:25:40 UTC (rev 
77084)
@@ -20,7 +20,7 @@
 
 /*----------------------------------------------------------------------*/
 /* @file tri_tri.h */
-/** @addtogroup tri_tri */
+/** @addtogroup bg_tri_tri */
 /** @{ */
 
 /**

Modified: brlcad/branches/swrast/include/bg/trimesh.h
===================================================================
--- brlcad/branches/swrast/include/bg/trimesh.h 2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bg/trimesh.h 2020-09-08 19:25:40 UTC (rev 
77084)
@@ -20,7 +20,7 @@
 
 /*----------------------------------------------------------------------*/
 /* @file trimesh.h */
-/** @addtogroup trimesh */
+/** @addtogroup bg_trimesh */
 /** @{ */
 
 /**

Modified: brlcad/branches/swrast/include/bn/anim.h
===================================================================
--- brlcad/branches/swrast/include/bn/anim.h    2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bn/anim.h    2020-09-08 19:25:40 UTC (rev 
77084)
@@ -127,13 +127,13 @@
        (o)[7] = (i)[9];\
        (o)[8] = (i)[10];}
 
-/* tilde matrix: [M]a = v X a */
+/** tilde matrix: [M]a = v X a */
 #define MAKE_TILDE(m, v)        {\
        MAT3ZERO(m);\
        m[1]= -v[2];    m[2]=v[1];      m[3]= v[2];\
        m[5]= -v[0];    m[6]= -v[1];    m[7]= v[0];}
 
-/* a = Ix Iy Iz    b = Ixy Ixz Iyz*/
+/** a = Ix Iy Iz    b = Ixy Ixz Iyz*/
 #define INERTIAL_MAT3(m, a, b)  {\
        (m)[0] =  (a)[0]; (m)[1] = -(b)[0]; (m)[2] = -(b)[1];\
        (m)[3] = -(b)[0]; (m)[4] =  (a)[1]; (m)[5] = -(b)[2];\

Modified: brlcad/branches/swrast/include/bn/complex.h
===================================================================
--- brlcad/branches/swrast/include/bn/complex.h 2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bn/complex.h 2020-09-08 19:25:40 UTC (rev 
77084)
@@ -34,7 +34,7 @@
 
 __BEGIN_DECLS
 
-/* "complex number" data type: */
+/** "complex number" data type */
 typedef struct bn_complex {
     double re;         /**< @brief real part */
     double im;         /**< @brief imaginary part */

Modified: brlcad/branches/swrast/include/bn/dvec.h
===================================================================
--- brlcad/branches/swrast/include/bn/dvec.h    2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bn/dvec.h    2020-09-08 19:25:40 UTC (rev 
77084)
@@ -26,10 +26,10 @@
 #include <math.h>
 extern "C++" {
 /* Hide iostream from Doxygen with cond */
-/* @cond */
+/** @cond */
 #include <iostream>
 #include <ostream>
-/* @endcond */
+/** @endcond */
 }
 
 /* Needed for fastf_t definition */
@@ -131,7 +131,7 @@
 #define VEC_ALIGN
 
 /* Doxygen doesn't like these includes... */
-/* @cond */
+/** @cond */
 /*#undef __SSE2__*/ // Test FPU version
 #if defined(__SSE2__) && defined(__GNUC__) && defined(HAVE_EMMINTRIN_H) && 
defined(HAVE_EMMINTRIN)
 #  define __x86_vector__
@@ -741,7 +741,7 @@
 }
 
 #endif
-/* @endcond */
+/** @endcond */
 
 inline bool vequals(const vec2d& a, const vec2d& b) {
     return
@@ -752,9 +752,14 @@
 // 2x2 row-major matrix
 typedef fastf_t mat2d_t[4] VEC_ALIGN;
 
+/* Hide from Doxygen with cond */
+/** @cond */
+
 // 2d point
 typedef fastf_t pt2d_t[2] VEC_ALIGN;
 
+/** @endcond */
+
 
//--------------------------------------------------------------------------------
 // MATH / VECTOR ops
 inline

Modified: brlcad/branches/swrast/include/bn/noise.h
===================================================================
--- brlcad/branches/swrast/include/bn/noise.h   2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bn/noise.h   2020-09-08 19:25:40 UTC (rev 
77084)
@@ -18,9 +18,9 @@
  * information.
  */
 
-/*----------------------------------------------------------------------*/
 
-/** @addtogroup noise
+/**
+ * @addtogroup noise
  *
  * @brief
  * These noise functions provide mostly random noise at the integer
@@ -137,7 +137,6 @@
                                      double octaves);
 
 /**
- *
  * From "Texturing and Modeling, A Procedural Approach" 2nd ed
  */
 BN_EXPORT extern double bn_noise_mf(point_t point,

Modified: brlcad/branches/swrast/include/bn/plane.h
===================================================================
--- brlcad/branches/swrast/include/bn/plane.h   2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bn/plane.h   2020-09-08 19:25:40 UTC (rev 
77084)
@@ -43,51 +43,51 @@
 __BEGIN_DECLS
 
 
-#define MAXPTS 4                       /* All we need are 4 points */
-#define pl_A pl_points[0]              /* Synonym for A point */
+#define MAXPTS 4                       /**< All we need are 4 points */
+#define pl_A pl_points[0]              /**< Synonym for A point */
 
 struct plane_specific  {
-    size_t pl_npts;                    /* number of points on plane */
-    point_t pl_points[MAXPTS];         /* Actual points on plane */
-    vect_t pl_Xbasis;                  /* X (B-A) vector (for 2d coords) */
-    vect_t pl_Ybasis;                  /* Y (C-A) vector (for 2d coords) */
-    vect_t pl_N;                       /* Unit-length Normal (outward) */
-    fastf_t pl_NdotA;                  /* Normal dot A */
-    fastf_t pl_2d_x[MAXPTS];           /* X 2d-projection of points */
-    fastf_t pl_2d_y[MAXPTS];           /* Y 2d-projection of points */
-    fastf_t pl_2d_com[MAXPTS];         /* pre-computed common-term */
-    struct plane_specific *pl_forw;    /* Forward link */
-    char pl_code[MAXPTS+1];            /* Face code string.  Decorative. */
+    size_t pl_npts;                    /**< number of points on plane */
+    point_t pl_points[MAXPTS];         /**< Actual points on plane */
+    vect_t pl_Xbasis;                  /**< X (B-A) vector (for 2d coords) */
+    vect_t pl_Ybasis;                  /**< Y (C-A) vector (for 2d coords) */
+    vect_t pl_N;                       /**< Unit-length Normal (outward) */
+    fastf_t pl_NdotA;                  /**< Normal dot A */
+    fastf_t pl_2d_x[MAXPTS];           /**< X 2d-projection of points */
+    fastf_t pl_2d_y[MAXPTS];           /**< Y 2d-projection of points */
+    fastf_t pl_2d_com[MAXPTS];         /**< pre-computed common-term */
+    struct plane_specific *pl_forw;    /**< Forward link */
+    char pl_code[MAXPTS+1];            /**< Face code string.  Decorative. */
 };
 
-/*
+/**
  * Describe the tri_specific structure.
  */
 struct tri_specific  {
-    point_t tri_A;                     /* triangle vertex (A) */
-    vect_t tri_BA;                     /* B - A (second point) */
-    vect_t tri_CA;                     /* C - A (third point) */
-    vect_t tri_wn;                     /* facet normal (non-unit) */
-    vect_t tri_N;                      /* unit normal vector */
-    fastf_t *tri_normals;              /* unit vertex normals A, B, C  (this 
is malloced storage) */
-    int tri_surfno;                    /* solid specific surface number */
-    struct tri_specific *tri_forw;     /* Next facet */
+    point_t tri_A;                     /**< triangle vertex (A) */
+    vect_t tri_BA;                     /**< B - A (second point) */
+    vect_t tri_CA;                     /**< C - A (third point) */
+    vect_t tri_wn;                     /**< facet normal (non-unit) */
+    vect_t tri_N;                      /**< unit normal vector */
+    fastf_t *tri_normals;              /**< unit vertex normals A, B, C  (this 
is malloced storage) */
+    int tri_surfno;                    /**< solid specific surface number */
+    struct tri_specific *tri_forw;     /**< Next facet */
 };
 
 typedef struct tri_specific tri_specific_double;
 
-/*
+/**
  * A more memory conservative version
  */
 struct tri_float_specific  {
-    float tri_A[3];                    /* triangle vertex (A) */
-    float tri_BA[3];                   /* B - A (second point) */
-    float tri_CA[3];                   /* C - A (third point) */
-    float tri_wn[3];                   /* facet normal (non-unit) */
-    float tri_N[3];                    /* unit normal vector */
-    signed char *tri_normals;          /* unit vertex normals A, B, C  (this 
is malloced storage) */
-    int tri_surfno;                    /* solid specific surface number */
-    struct tri_float_specific *tri_forw;/* Next facet */
+    float tri_A[3];                    /**< triangle vertex (A) */
+    float tri_BA[3];                   /**< B - A (second point) */
+    float tri_CA[3];                   /**< C - A (third point) */
+    float tri_wn[3];                   /**< facet normal (non-unit) */
+    float tri_N[3];                    /**< unit normal vector */
+    signed char *tri_normals;          /**< unit vertex normals A, B, C  (this 
is malloced storage) */
+    int tri_surfno;                    /**< solid specific surface number */
+    struct tri_float_specific *tri_forw;/**< Next facet */
 };
 
 typedef struct tri_float_specific tri_specific_float;

Modified: brlcad/branches/swrast/include/bn/poly.h
===================================================================
--- brlcad/branches/swrast/include/bn/poly.h    2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bn/poly.h    2020-09-08 19:25:40 UTC (rev 
77084)
@@ -41,7 +41,7 @@
 __BEGIN_DECLS
 
 /* This could be larger, or even dynamic... */
-#define BN_MAX_POLY_DEGREE 6   /* Maximum Poly Order */
+#define BN_MAX_POLY_DEGREE 6   /**< Maximum Poly Order */
 
 /**
  * Polynomial data type

Modified: brlcad/branches/swrast/include/bn/rand.h
===================================================================
--- brlcad/branches/swrast/include/bn/rand.h    2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bn/rand.h    2020-09-08 19:25:40 UTC (rev 
77084)
@@ -76,7 +76,7 @@
 #define BN_RANDHALF(_i) (bn_rand_table[ _i = (_i+1) % BN_RAND_TABSIZE ]-0.5)
 #define BN_RANDHALF_INIT(_p) _p = bn_rand_table
 
-#define BN_RANDHALFTABSIZE 16535       /* Powers of two give streaking */
+#define BN_RANDHALFTABSIZE 16535       /**< Powers of two give streaking */
 BN_EXPORT extern int bn_randhalftabsize;
 
 /**

Modified: brlcad/branches/swrast/include/bn/vectfont.h
===================================================================
--- brlcad/branches/swrast/include/bn/vectfont.h        2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/include/bn/vectfont.h        2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -82,7 +82,7 @@
 __END_DECLS
 
 #endif  /* BN_VECTFONT_H */
-/** @} */
+
 /*
  * Local Variables:
  * mode: C

Modified: brlcad/branches/swrast/include/bn/vlist.h
===================================================================
--- brlcad/branches/swrast/include/bn/vlist.h   2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bn/vlist.h   2020-09-08 19:25:40 UTC (rev 
77084)
@@ -325,7 +325,7 @@
 __END_DECLS
 
 #endif  /* BN_VLIST_H */
-/** @} */
+
 /*
  * Local Variables:
  * mode: C

Modified: brlcad/branches/swrast/include/brep/curvetree.h
===================================================================
--- brlcad/branches/swrast/include/brep/curvetree.h     2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/include/brep/curvetree.h     2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -32,9 +32,11 @@
 #include "common.h"
 
 #ifdef __cplusplus
+// @cond SKIP_C++_INCLUDE
 extern "C++" {
 #  include <map>
 }
+// @endcond
 #endif
 
 #include "brep/defines.h"

Modified: brlcad/branches/swrast/include/brep/util.h
===================================================================
--- brlcad/branches/swrast/include/brep/util.h  2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/brep/util.h  2020-09-08 19:25:40 UTC (rev 
77084)
@@ -34,9 +34,11 @@
 #include "bnetwork.h" /* Needed for ntohl and htonl */
 
 #ifdef __cplusplus
+// @cond SKIP_C++_INCLUDE
 extern "C++" {
 #  include <cstring>
 }
+// @endcond
 #endif
 
 

Modified: brlcad/branches/swrast/include/bu/app.h
===================================================================
--- brlcad/branches/swrast/include/bu/app.h     2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bu/app.h     2020-09-08 19:25:40 UTC (rev 
77084)
@@ -38,8 +38,8 @@
  *
  */
 /** @{ */
+/** @file bu/app.h */
 
-
 /**
  * DEPRECATED: This routine is replaced by bu_getcwd().
  *             Do not use.
@@ -228,22 +228,22 @@
 
 
 typedef enum {
-    BU_DIR_CURR=1,  /* (unknown) current working directory */
-    BU_DIR_INIT,    /* (unknown) initial working directory */
-    BU_DIR_BIN,     /* (read-only) user executables (bin) */
-    BU_DIR_LIB,     /* (read-only) object libraries (lib) */
-    BU_DIR_LIBEXEC, /* (read-only) object libraries (libexec) */
-    BU_DIR_INCLUDE, /* (read-only) C/C++ header files (include) */
-    BU_DIR_DATA,    /* (read-only) data files (share) */
-    BU_DIR_DOC,     /* (read-only) documentation, (DATA/doc) */
-    BU_DIR_MAN,     /* (read-only) manual pages, (DATA/man) */
-    BU_DIR_TEMP,    /* (read/write) temporary files (TEMP) */
-    BU_DIR_HOME,    /* (read/write) user home directory (HOME) */
-    BU_DIR_CACHE,   /* (read/write) user cache directory (BU_CACHE_DIR) */
-    BU_DIR_CONFIG,  /* (read/write) user config directory (HOME/.app) */
-    BU_DIR_EXT,     /* (n/a) optional executable extension */
-    BU_DIR_LIBEXT,  /* (n/a) optional library extension */
-    BU_DIR_END
+    BU_DIR_CURR=1,  /**< (unknown) current working directory */
+    BU_DIR_INIT,    /**< (unknown) initial working directory */
+    BU_DIR_BIN,     /**< (read-only) user executables (bin) */
+    BU_DIR_LIB,     /**< (read-only) object libraries (lib) */
+    BU_DIR_LIBEXEC, /**< (read-only) object libraries (libexec) */
+    BU_DIR_INCLUDE, /**< (read-only) C/C++ header files (include) */
+    BU_DIR_DATA,    /**< (read-only) data files (share) */
+    BU_DIR_DOC,     /**< (read-only) documentation, (DATA/doc) */
+    BU_DIR_MAN,     /**< (read-only) manual pages, (DATA/man) */
+    BU_DIR_TEMP,    /**< (read/write) temporary files (TEMP) */
+    BU_DIR_HOME,    /**< (read/write) user home directory (HOME) */
+    BU_DIR_CACHE,   /**< (read/write) user cache directory (BU_CACHE_DIR) */
+    BU_DIR_CONFIG,  /**< (read/write) user config directory (HOME/.app) */
+    BU_DIR_EXT,     /**< (n/a) optional executable extension */
+    BU_DIR_LIBEXT,  /**< (n/a) optional library extension */
+    BU_DIR_END      /**< always the last entry, for iterators */
 } bu_dir_t;
 
 

Modified: brlcad/branches/swrast/include/bu/color.h
===================================================================
--- brlcad/branches/swrast/include/bu/color.h   2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bu/color.h   2020-09-08 19:25:40 UTC (rev 
77084)
@@ -30,8 +30,6 @@
 
 __BEGIN_DECLS
 
-/*----------------------------------------------------------------------*/
-
 /** @addtogroup bu_color
  * @brief
  * Support for storing and manipulating color data.
@@ -74,7 +72,7 @@
 
 
 
-/* random color generating methods */
+/** random color generating methods */
 typedef enum {
     BU_COLOR_RANDOM = 0,
     BU_COLOR_RANDOM_LIGHTENED
@@ -94,7 +92,7 @@
 
 #if 0
 
-/*
+/**
  * Refactoring points:
  * color command (set specified color)
  *     src/libged/color.c

Modified: brlcad/branches/swrast/include/bu/column.h
===================================================================
--- brlcad/branches/swrast/include/bu/column.h  2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bu/column.h  2020-09-08 19:25:40 UTC (rev 
77084)
@@ -53,7 +53,8 @@
 
 #define BU_COLUMN_ALL -1
 
-/* Generate an output string based on the specified layout and contents in the
+/**
+ * Generate an output string based on the specified layout and contents in the
  * bu_column_state s.  Return the number of items printed, or -1 if there is
  * an error.
  *
@@ -74,7 +75,8 @@
  * Row suffix:       none
  * Fill order:       column first
  *
- * */
+ *
+ */
 BU_EXPORT extern int bu_column_print(struct bu_vls *o, struct bu_column_state 
*s);
 
 /**

Modified: brlcad/branches/swrast/include/bu/defines.h
===================================================================
--- brlcad/branches/swrast/include/bu/defines.h 2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bu/defines.h 2020-09-08 19:25:40 UTC (rev 
77084)
@@ -69,22 +69,6 @@
 #endif  /* DIR_SEPARATOR */
 
 /**
- * Maximum length of a filesystem path.  Typically defined in a system
- * file but if it isn't set, we create it.
- */
-#ifndef MAXPATHLEN
-#  ifdef PATH_MAX
-#    define MAXPATHLEN PATH_MAX
-#  else
-#    ifdef _MAX_PATH
-#      define MAXPATHLEN _MAX_PATH
-#    else
-#      define MAXPATHLEN 1024
-#    endif
-#  endif
-#endif
-
-/**
  * set to the path list separator character
  */
 #if defined(PATH_SEPARATOR)

Modified: brlcad/branches/swrast/include/bu/dylib.h
===================================================================
--- brlcad/branches/swrast/include/bu/dylib.h   2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bu/dylib.h   2020-09-08 19:25:40 UTC (rev 
77084)
@@ -57,7 +57,7 @@
 BU_EXPORT extern int bu_dlclose(void *handle);
 BU_EXPORT extern const char *bu_dlerror(void);
 
-/** } */
+/** @} */
 
 __END_DECLS
 

Modified: brlcad/branches/swrast/include/bu/endian.h
===================================================================
--- brlcad/branches/swrast/include/bu/endian.h  2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bu/endian.h  2020-09-08 19:25:40 UTC (rev 
77084)
@@ -36,9 +36,9 @@
 
 
 typedef enum {
-    BU_LITTLE_ENDIAN = 1234, /* LSB first: i386, VAX order */
-    BU_BIG_ENDIAN    = 4321, /* MSB first: 68000, IBM, network order */
-    BU_PDP_ENDIAN    = 3412  /* LSB first in word, MSW first in long */
+    BU_LITTLE_ENDIAN = 1234, /**< LSB first: i386, VAX order */
+    BU_BIG_ENDIAN    = 4321, /**< MSB first: 68000, IBM, network order */
+    BU_PDP_ENDIAN    = 3412  /**< LSB first in word, MSW first in long */
 } bu_endian_t;
 
 

Modified: brlcad/branches/swrast/include/bu/file.h
===================================================================
--- brlcad/branches/swrast/include/bu/file.h    2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bu/file.h    2020-09-08 19:25:40 UTC (rev 
77084)
@@ -166,8 +166,10 @@
 
 /**
  * Windows corecrt_io.h defines an lseek and an _lseeki64, with different 
function
- * signatures, that cause trouble when we try to simply #define lseek 
_lseeki64.
+ * signatures, that cause trouble when we try to simply define it à la:
  *
+ *      #define lseek _lseeki64.
+ *
  * Similarly, _ftelli64 has a problematic signature.
  */
 BU_EXPORT int bu_fseek(FILE *stream, b_off_t offset, int origin);

Modified: brlcad/branches/swrast/include/bu/glob.h
===================================================================
--- brlcad/branches/swrast/include/bu/glob.h    2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bu/glob.h    2020-09-08 19:25:40 UTC (rev 
77084)
@@ -29,7 +29,7 @@
 __BEGIN_DECLS
 
 
-/** @addtogroup bu_glob
+/** @addtogroup bu_experimental
  *
  * NOTE - the glob API below is a work in progress - until this notice is
  * removed it should not be considered functional, much less stable!
@@ -67,10 +67,10 @@
  */
 struct bu_glob_context {
 
-#define BU_GLOB_APPEND     0x0001  /* Append to output from previous call. */
-#define BU_GLOB_NOSORT     0x0020  /* Don't sort. */
-#define BU_GLOB_NOESCAPE   0x2000  /* Disable backslash escaping. */
-#define BU_GLOB_ALTDIRFUNC 0x0040  /* use alternate functions. */
+#define BU_GLOB_APPEND     0x0001  /**< Append to output from previous call. */
+#define BU_GLOB_NOSORT     0x0020  /**< Don't sort. */
+#define BU_GLOB_NOESCAPE   0x2000  /**< Disable backslash escaping. */
+#define BU_GLOB_ALTDIRFUNC 0x0040  /**< use alternate functions. */
     int gl_flags;                /**< flags customizing globbing behavior */
 
     /* Return values */
@@ -88,8 +88,8 @@
     int (*gl_lstat)(const char *, struct bu_stat *, struct bu_glob_context *);
     int (*gl_stat)(const char *, struct bu_stat *, struct bu_glob_context *);
 
-#define BU_GLOB_NOMATCH (-1)     /* No match. */
-#define BU_GLOB_ABORTED (-2)     /* Unignored error. */
+#define BU_GLOB_NOMATCH (-1)     /**< No match. */
+#define BU_GLOB_ABORTED (-2)     /**< Unignored error. */
     int (*gl_errfunc)(const char *, int, struct bu_glob_context *);
 
     /* For caller use */

Modified: brlcad/branches/swrast/include/bu/interrupt.h
===================================================================
--- brlcad/branches/swrast/include/bu/interrupt.h       2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/include/bu/interrupt.h       2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -28,7 +28,7 @@
 
 __BEGIN_DECLS
 
-/** @addtogroup bu_interrupt
+/** @addtogroup bu_env
  *
  * @brief Routines for managing signals.
  *

Modified: brlcad/branches/swrast/include/bu/mime.h
===================================================================
--- brlcad/branches/swrast/include/bu/mime.h    2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bu/mime.h    2020-09-08 19:25:40 UTC (rev 
77084)
@@ -29,11 +29,10 @@
 
 __BEGIN_DECLS
 
-
-/**
- * @addtogroup bu_mime
+/** @addtogroup bu_mime
  *
- * @brief Functions generated by the mime.cmake script - see the
+ * @brief
+ * Functions generated by the mime.cmake script - see the
  * generated files mime.c and mime_types.h for the resulting C code
  * and mime type declarations
  *
@@ -46,11 +45,11 @@
  * the majority of geometry formats) are added there instead of
  * changing mime.types.
  */
-/** { */
+/** @{ */
+/** @file bu/mime.h */
 
-
 /**
- * Use the file extension to attempt to determine the media type
+ * @brief Use the file extension to attempt to determine the media type
  * of the file within the specified context.
  *
  * returns -1 if no match was found, or an integer if a result
@@ -61,7 +60,7 @@
 
 
 /**
- * Given a mime type and a context, return the file extension(s)
+ * @brief Given a mime type and a context, return the file extension(s)
  * associated with that type.
  *
  * returns NULL if no match was found, or a comma separated string
@@ -72,7 +71,7 @@
 
 
 /**
- * Given a mime type and a context, return a human readable string
+ * @brief Given a mime type and a context, return a human readable string
  * spelling out the type (corresponding to the enum string in
  * source code.)
  *
@@ -83,7 +82,7 @@
 
 
 /**
- * Given a string produced by bu_file_mime_str, convert it back into
+ * @brief Given a string produced by bu_file_mime_str, convert it back into
  * integer form.
  *
  * returns -1 if no match was found, or an integer if a result

Modified: brlcad/branches/swrast/include/bu/parallel.h
===================================================================
--- brlcad/branches/swrast/include/bu/parallel.h        2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/include/bu/parallel.h        2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -18,10 +18,6 @@
  * information.
  */
 
-/** @ingroup parallel */
-/** @{ */
-/** @file include/bu/parallel.h */
-/** @} */
 #ifndef BU_PARALLEL_H
 #define BU_PARALLEL_H
 
@@ -33,7 +29,7 @@
 
 __BEGIN_DECLS
 
-/** @addtogroup bu_thread
+/** @addtogroup bu_parallel
  * @brief
  * Thread based parallelism routines.
  */

Modified: brlcad/branches/swrast/include/bu/process.h
===================================================================
--- brlcad/branches/swrast/include/bu/process.h 2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bu/process.h 2020-09-08 19:25:40 UTC (rev 
77084)
@@ -18,10 +18,6 @@
  * information.
  */
 
-/** @ingroup process */
-/** @{ */
-/** @file include/bu/process.h */
-/** @} */
 #ifndef BU_PROCESS_H
 #define BU_PROCESS_H
 
@@ -32,6 +28,14 @@
 
 __BEGIN_DECLS
 
+/** @addtogroup bu_process
+ *
+ * @brief
+ * Routines for process and sub-process management.
+ */
+/** @{ */
+/** @file bu/process.h */
+
 /**
  * returns the process ID of the calling process
  */

Modified: brlcad/branches/swrast/include/bu/tbl.h
===================================================================
--- brlcad/branches/swrast/include/bu/tbl.h     2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bu/tbl.h     2020-09-08 19:25:40 UTC (rev 
77084)
@@ -38,7 +38,7 @@
 /** @{ */
 /** @file bu/tbl.h */
 
-/*
+/**
  * this is pulled from num.c where the guts to the table printer
  * currently resides, moved here for easy reference.
  *

Modified: brlcad/branches/swrast/include/bu/vls.h
===================================================================
--- brlcad/branches/swrast/include/bu/vls.h     2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/bu/vls.h     2020-09-08 19:25:40 UTC (rev 
77084)
@@ -548,6 +548,12 @@
  * @param[in] incr_spec Optional - string of colon separated
  * parameters defining function behavior.
  *
+ * @param[in] uniq_test Optional - uniqueness testing function.
+ * 
+ * @param[in] data Optional - data to pass to the uniq_test
+ * function call.
+ * 
+ *
  * @section bu_vls_incr_regexp Incrementer Substring Identification
  *
  * bu_vls_incr uses regular expressions to identify the numerical part

Modified: brlcad/branches/swrast/include/common.h
===================================================================
--- brlcad/branches/swrast/include/common.h     2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/common.h     2020-09-08 19:25:40 UTC (rev 
77084)
@@ -227,6 +227,23 @@
 #endif
 
 /**
+ * Maximum length of a filesystem path.  Typically defined in a system
+ * file but if it isn't set, we create it.
+ */
+#ifndef MAXPATHLEN
+#  include <limits.h> // Consistently define (or not) PATH_MAX
+#  ifdef PATH_MAX
+#    define MAXPATHLEN PATH_MAX
+#  elif defined(MAX_PATH)
+#    define MAXPATHLEN MAX_PATH
+#  elif defined(_MAX_PATH)
+#    define MAXPATHLEN _MAX_PATH
+#  else
+#    define MAXPATHLEN 2048
+#  endif
+#endif
+
+/**
  * Provide a means to conveniently test the version of the GNU
  * compiler.  Use it like this:
  *
@@ -466,8 +483,10 @@
 /**
  * Provide canonical preprocessor stringification.
  *
- * #define abc 123
- * CPP_STR(abc) => "abc"
+ @code
+ *     #define abc 123
+ *     CPP_STR(abc) => "abc"
+ @endcode
  */
 #ifndef CPP_STR
 #  define CPP_STR(x) # x
@@ -476,8 +495,10 @@
 /**
  * Provide canonical preprocessor expanded stringification.
  *
- * #define abc 123
- * CPP_XSTR(abc) => "123"
+ @code
+ *     #define abc 123
+ *     CPP_XSTR(abc) => "123"
+ @endcode
  */
 #ifndef CPP_XSTR
 #  define CPP_XSTR(x) CPP_STR(x)
@@ -486,12 +507,14 @@
 /**
  * Provide canonical preprocessor concatenation.
  *
- * #define abc 123
- * CPP_GLUE(abc, 123) => abc123
- * CPP_STR(CPP_GLUE(abc, 123)) => "CPP_GLUE(abc, 123)"
- * CPP_XSTR(CPP_GLUE(abc, 123)) => "abc123"
- * #define abc123 "xyz"
- * CPP_GLUE(abc, 123) => abc123 => "xyz"
+ @code
+ *     #define abc 123
+ *     CPP_GLUE(abc, 123) => abc123
+ *     CPP_STR(CPP_GLUE(abc, 123)) => "CPP_GLUE(abc, 123)"
+ *     CPP_XSTR(CPP_GLUE(abc, 123)) => "abc123"
+ *     #define abc123 "xyz"
+ *     CPP_GLUE(abc, 123) => abc123 => "xyz"
+ @endcode
  */
 #ifndef CPP_GLUE
 #  define CPP_GLUE(a, b) a ## b
@@ -500,10 +523,12 @@
 /**
  * Provide canonical preprocessor expanded concatenation.
  *
- * #define abc 123
- * CPP_XGLUE(abc, 123) => 123123
- * CPP_STR(CPP_XGLUE(abc, 123)) => "CPP_XGLUE(abc, 123)"
- * CPP_XSTR(CPP_XGLUE(abc, 123)) => "123123"
+ @code
+ *     #define abc 123
+ *     CPP_XGLUE(abc, 123) => 123123
+ *     CPP_STR(CPP_XGLUE(abc, 123)) => "CPP_XGLUE(abc, 123)"
+ *     CPP_XSTR(CPP_XGLUE(abc, 123)) => "123123"
+ @endcode
  */
 #ifndef CPP_XGLUE
 #  define CPP_XGLUE(a, b) CPP_GLUE(a, b)
@@ -512,9 +537,11 @@
 /**
  * Provide format specifier string tied to a size (e.g., "%123s")
  *
- * #define STR_LEN 10+1
- * char str[STR_LEN] = {0};
- * scanf(CPP_SCANSIZE(STR_LEN) "\n", str);
+ @code
+ *     #define STR_LEN 10+1
+ *     char str[STR_LEN] = {0};
+ *     scanf(CPP_SCANSIZE(STR_LEN) "\n", str);
+ @endcode
  */
 #ifndef CPP_SCAN
 #  define CPP_SCAN(sz) "%" CPP_XSTR(sz) "s"

Modified: brlcad/branches/swrast/include/gcv/api.h
===================================================================
--- brlcad/branches/swrast/include/gcv/api.h    2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/gcv/api.h    2020-09-08 19:25:40 UTC (rev 
77084)
@@ -139,10 +139,14 @@
     /* operation type */
     const enum gcv_filter_type filter_type;
 
-    /* If we have a definite type this converter is known to handle, call
-     * it out here.
-     * MIME_MODEL_UNKNOWN if 'filter_type' is GCV_FILTER_FILTER or
-     * if the plugin is a multi-format I/O plugin */
+    /* If we have a specific model type this converter is known to
+     * handle, call it out here.  Use BU_MIME_MODEL_UNKNOWN if
+     * 'filter_type' is GCV_FILTER_FILTER or if the plugin is a
+     * multi-format I/O plugin.
+     *
+     * FIXME: input/output plugins conceivably could be something
+     * other than geometry (e.g., png input or csv output).
+     */
     const bu_mime_model_t mime_type;
 
     /* For plugins supporting multiple file types, call this to

Modified: brlcad/branches/swrast/include/ged/commands.h
===================================================================
--- brlcad/branches/swrast/include/ged/commands.h       2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/include/ged/commands.h       2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -17,7 +17,7 @@
  * License along with this file; see the file named COPYING for more
  * information.
  */
-/** @addtogroup ged_commands
+/** @addtogroup libged
  *
  * Geometry EDiting Library Commands
  *
@@ -24,6 +24,7 @@
  */
 /** @{ */
 /** @file ged/commands.h */
+/** @} */
 
 #ifndef GED_COMMANDS_H
 #define GED_COMMANDS_H
@@ -34,9 +35,14 @@
 
 __BEGIN_DECLS
 
-/* Execute plugin based command */
+/** @addtogroup ged_plugins */
+/** @{ */
+/** Execute plugin based command */
 GED_EXPORT extern int ged_exec(struct ged *gedp, int argc, const char *argv[]);
+/** @} */
 
+/** @addtogroup ged_objects */
+/** @{ */
 /**
  * Adjust object's attribute(s)
  */
@@ -43,7 +49,8 @@
 GED_EXPORT extern int ged_adjust(struct ged *gedp, int argc, const char 
*argv[]);
 
 /**
- * Set, get, show, remove or append to attribute values for the specified 
object.
+ * @brief Set, get, show, remove or append to attribute values for the 
specified object.
+ *
  * The arguments for "set" and "append" subcommands are attribute name/value 
pairs.
  * The arguments for "get", "rm", and "show" subcommands are attribute names.
  * The "set" subcommand sets the specified attributes for the object.
@@ -285,7 +292,8 @@
 
 
 /**
- * Manipulate opaque binary objects.
+ * @brief Manipulate opaque binary objects.
+ *
  * Must specify one of -i (for creating or adjusting objects (input))
  * or -o for extracting objects (output).
  * If the major type is "u" the minor type must be one of:
@@ -818,14 +826,14 @@
  */
 GED_EXPORT int ged_pnts(struct ged *gedp, int argc, const char *argv[]);
 
+/** @} */
 
+
 __END_DECLS
 
 
 #endif /* GED_COMMANDS_H */
 
-/** @} */
-
 /*
  * Local Variables:
  * tab-width: 8

Modified: brlcad/branches/swrast/include/ged.h
===================================================================
--- brlcad/branches/swrast/include/ged.h        2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/ged.h        2020-09-08 19:25:40 UTC (rev 
77084)
@@ -60,9 +60,13 @@
 #include "ged/debug.h"
 #include "ged/rt.h"
 
+/** @} */
 
 __BEGIN_DECLS
 
+/** @addtogroup ged_misc */
+/** @{ */
+
 /**
  * Delay the specified amount of time
  */
@@ -83,7 +87,10 @@
  */
 GED_EXPORT extern int ged_help(struct ged *gedp, int argc, const char *argv[]);
 
+/** @} */
 
+/** @addtogroup libged */
+/** @{ */
 /***************************************
  * Conceptual Documentation for LIBGED *
  ***************************************

Modified: brlcad/branches/swrast/include/rt/calc.h
===================================================================
--- brlcad/branches/swrast/include/rt/calc.h    2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/rt/calc.h    2020-09-08 19:25:40 UTC (rev 
77084)
@@ -17,11 +17,12 @@
  * License along with this file; see the file named COPYING for more
  * information.
  */
-/**
+/** @addtogroup raytrace */
+/** @{ */
+/** @file rt/calc.h
  * @brief
  * In memory format for non-geometry objects in BRL-CAD databases.
  */
-/** @file rt/calc.h */
 
 #ifndef RT_CALC_H
 #define RT_CALC_H

Modified: brlcad/branches/swrast/include/rt/geom.h
===================================================================
--- brlcad/branches/swrast/include/rt/geom.h    2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/rt/geom.h    2020-09-08 19:25:40 UTC (rev 
77084)
@@ -954,7 +954,7 @@
 #define RT_PNTS_CK_MAGIC(_p) BU_CKMAG(_p, RT_PNTS_INTERNAL_MAGIC, 
"rt_pnts_internal")
 /** @} */
 
-/** @addtogroup rt_anno */
+/** @addtogroup rt_annotation */
 /** @{ */
 /*
  * ID_ANNO

Modified: brlcad/branches/swrast/include/rt/primitives/annot.h
===================================================================
--- brlcad/branches/swrast/include/rt/primitives/annot.h        2020-09-08 
17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast/include/rt/primitives/annot.h        2020-09-08 
19:25:40 UTC (rev 77084)
@@ -17,7 +17,7 @@
  * License along with this file; see the file named COPYING for more
  * information.
  */
-/** @addtogroup rt_annot */
+/** @addtogroup rt_annotation */
 /** @{ */
 /** @file rt/primitives/annot.h */
 

Modified: brlcad/branches/swrast/include/tclcad.h
===================================================================
--- brlcad/branches/swrast/include/tclcad.h     2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/tclcad.h     2020-09-08 19:25:40 UTC (rev 
77084)
@@ -518,7 +518,9 @@
  * Tcl specific I/O handlers
  */
 struct tclcad_io_data {
-    Tcl_Channel chan;
+       Tcl_Channel chan_stdin;
+    Tcl_Channel chan_stdout;
+    Tcl_Channel chan_stderr;
     Tcl_Interp *interp;
     int io_mode;
 };

Modified: brlcad/branches/swrast/include/wdb.h
===================================================================
--- brlcad/branches/swrast/include/wdb.h        2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/include/wdb.h        2020-09-08 19:25:40 UTC (rev 
77084)
@@ -500,11 +500,9 @@
                                         * into normals array), must
                                         * have 3*num_faces entries
                                         */
-    size_t num_uvs, /* number of uv texture coordinates in uvs array */
-    fastf_t *uvs,   /* array of floats for uv texture coordinates [num_uvs*3] 
*/
-    int *face_uvs   /* array of ints (indices into uvs array),
-                    * must have 3*num_faces entries
-                    */
+    size_t num_uvs, /**< number of uv texture coordinates in uvs array */
+    fastf_t *uvs,   /**< array of floats for uv texture coordinates 
[num_uvs*3] */
+    int *face_uvs   /**< array of ints (indices into uvs array), must have 
3*num_faces entries */
     );
 
 /**

Modified: brlcad/branches/swrast/misc/CMake/CMakeLists.txt
===================================================================
--- brlcad/branches/swrast/misc/CMake/CMakeLists.txt    2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/misc/CMake/CMakeLists.txt    2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -28,6 +28,7 @@
   FindIlmBase.cmake
   FindLEMON.cmake
   FindNETPBM.cmake
+  FindNSIS.cmake
   FindOPENNURBS.cmake
   FindOSL.cmake
   FindOpenCL.cmake
@@ -46,6 +47,7 @@
   FindUTAHRLE.cmake
   FindUUID.cmake
   FindVDS.cmake
+  FindWix.cmake
   FindX11.cmake
   FindXMLLINT.cmake
   FindXSLTPROC.cmake

Copied: brlcad/branches/swrast/misc/CMake/FindNSIS.cmake (from rev 77083, 
brlcad/trunk/misc/CMake/FindNSIS.cmake)
===================================================================
--- brlcad/branches/swrast/misc/CMake/FindNSIS.cmake                            
(rev 0)
+++ brlcad/branches/swrast/misc/CMake/FindNSIS.cmake    2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -0,0 +1,32 @@
+#-------------------------------------------------------------------
+# This file is based on the Wix module from the CMake build system
+# for OGRE (Object-oriented Graphics Rendering Engine)
+# For the latest info, see http://www.ogre3d.org/
+#
+# The contents of this file are placed in the public domain. Feel
+# free to make use of it in any way you like.
+#-------------------------------------------------------------------
+
+# - Try to find Nullsoft Scriptable Install System (NSIS)
+# You can help this by defining NSIS_HOME in the environment / CMake
+# Once done, this will define
+#
+#  NSIS_FOUND - system has NSIS
+#  NSIS_BINARY_DIR - location of the NSIS binaries
+
+include(FindPkgMacros)
+
+# Get path, convert backslashes as ${ENV_${var}}
+getenv_path(NSIS_HOME)
+
+# construct search paths
+set(NSIS_PREFIX_PATH ${NSIS_HOME} ${ENV_NSIS_HOME}
+       "C:/Program Files (x86)/NSIS"
+)
+find_path(NSIS_BINARY_DIR NAMES makensis.exe HINTS ${NSIS_PREFIX_PATH} 
PATH_SUFFIXES bin)
+
+if(NSIS_BINARY_DIR)
+       set (NSIS_FOUND TRUE)
+endif()
+
+mark_as_advanced(NSIS_BINARY_DIR NSIS_FOUND)

Copied: brlcad/branches/swrast/misc/CMake/FindWix.cmake (from rev 77083, 
brlcad/trunk/misc/CMake/FindWix.cmake)
===================================================================
--- brlcad/branches/swrast/misc/CMake/FindWix.cmake                             
(rev 0)
+++ brlcad/branches/swrast/misc/CMake/FindWix.cmake     2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -0,0 +1,34 @@
+#-------------------------------------------------------------------
+# This file is part of the CMake build system for OGRE
+#     (Object-oriented Graphics Rendering Engine)
+# For the latest info, see http://www.ogre3d.org/
+#
+# The contents of this file are placed in the public domain. Feel
+# free to make use of it in any way you like.
+#-------------------------------------------------------------------
+
+# - Try to find Wix
+# You can help this by defining WIX_HOME in the environment / CMake
+# Once done, this will define
+#
+#  Wix_FOUND - system has Wix
+#  Wix_BINARY_DIR - location of the Wix binaries
+
+include(FindPkgMacros)
+
+# Get path, convert backslashes as ${ENV_${var}}
+getenv_path(WIX_HOME)
+
+# Find version specific paths
+file(GLOB WIX_PATHS LIST_DIRECTORIES TRUE "C:/Program Files*/WiX Toolset*")
+
+# construct search paths
+set(WIX_PREFIX_PATH ${WIX_HOME} ${ENV_WIX_HOME} ${WIX_PATHS})
+
+find_path(Wix_BINARY_DIR NAMES candle.exe HINTS ${WIX_PREFIX_PATH} 
PATH_SUFFIXES bin)
+
+if(Wix_BINARY_DIR)
+       set (Wix_FOUND TRUE)
+endif()
+
+mark_as_advanced(Wix_BINARY_DIR Wix_FOUND)

Modified: brlcad/branches/swrast/misc/doxygen/Doxyfile.in
===================================================================
--- brlcad/branches/swrast/misc/doxygen/Doxyfile.in     2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/misc/doxygen/Doxyfile.in     2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -1656,11 +1656,7 @@
 
 EXTERNAL_PAGES         = YES
 
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
 
-PERL_PATH              = /usr/bin/perl
-
 #---------------------------------------------------------------------------
 # Configuration options related to the dot tool
 #---------------------------------------------------------------------------
@@ -1673,15 +1669,6 @@
 
 CLASS_DIAGRAMS         = NO
 
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
 # If set to YES, the inheritance and collaboration graphs will hide
 # inheritance and usage relations if the target is undocumented
 # or is not a class.
@@ -1846,7 +1833,7 @@
 # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
 # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
 
-DOT_GRAPH_MAX_NODES    = 50
+DOT_GRAPH_MAX_NODES    = 300
 
 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
 # graphs generated by dot. A depth value of 3 means that only nodes reachable

Modified: brlcad/branches/swrast/misc/doxygen/libbg.dox
===================================================================
--- brlcad/branches/swrast/misc/doxygen/libbg.dox       2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/misc/doxygen/libbg.dox       2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -2,22 +2,34 @@
 /** @defgroup libbg libbg (Geometric Algorithms) */
 
 /* Second tier groups */
- /** @ingroup libbg */
+/** @ingroup libbg */
 /**   @defgroup bg_defines Definitions*/
- /** @ingroup libbg */
- /**  @defgroup tri Triangles */
-/**   @ingroup tri */
- /**   @defgroup tri_ray Triangle/Ray Intersection Tests */
-/**   @ingroup tri */
- /**   @defgroup tri_tri Triangle/Triangle Intersection Tests */
-/**   @ingroup tri */
- /**   @defgroup trimesh Triangle Mesh Algorithms */
- /** @ingroup libbg */
- /**  @defgroup polygon Polygons */
- /** @ingroup libbg */
- /**  @defgroup chull Convex Hulls */
- /** @ingroup libbg */
- /**  @defgroup obr Oriented Bounding Rectangles/Rectangular Cuboids*/
- /** @ingroup libbg */
- /**  @defgroup pointgen Point Generation*/
+/** @ingroup libbg */
+/**  @defgroup bg_pointgen Point Generation*/
+/** @ingroup libbg */
+/**  @defgroup bg_lseg Line Segments */
+/** @ingroup libbg */
+/**  @defgroup bg_tri Triangles */
+/**   @ingroup bg_tri */
+/**   @defgroup bg_tri_pt Closest Point on Triangle */
+/**   @ingroup bg_tri */
+/**   @defgroup bg_tri_ray Triangle/Ray Intersection Tests */
+/**   @ingroup bg_tri */
+/**   @defgroup bg_tri_tri Triangle/Triangle Intersection Tests */
+/**   @ingroup bg_tri */
+/**   @defgroup bg_trimesh Triangle Mesh Algorithms */
+/** @ingroup libbg */
+/**  @defgroup bg_obr Oriented Bounding Rectangles/Rectangular Cuboids*/
+/** @ingroup libbg */
+/**  @defgroup bg_polygon Polygons */
+/** @ingroup libbg */
+/**  @defgroup bg_aabb Axis Aligned Bounding Boxes */
+/**   @ingroup bg_aabb */
+/**   @defgroup bg_aabb_ray AABB/Ray Intersection Tests */
+/** @ingroup libbg */
+/**  @defgroup bg_chull Convex Hulls */
+/** @ingroup libbg */
+/**  @defgroup bg_surf_recon Surface Reconstruction */
+/**   @ingroup bg_surf_recon */
+/**   @defgroup bg_surf_recon_spsr Screened Poisson Surface Reconstruction */
 

Modified: brlcad/branches/swrast/misc/doxygen/libbn.dox
===================================================================
--- brlcad/branches/swrast/misc/doxygen/libbn.dox       2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/misc/doxygen/libbn.dox       2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -38,6 +38,8 @@
  /**  @defgroup bn_rmt Mersenne Twister */
  /** @ingroup bn_rand */
  /**  @defgroup bn_rnt Random Number Tables */
+ /** @ingroup bn_rand */
+ /**  @defgroup bn_sobol Sobol quasi-random low-discrepancy sequences of 
numbers */
  /** @ingroup libbn */
  /**  @defgroup bn_plane Point/Line/Plane Geometry Math */
  /** @ingroup libbn */

Modified: brlcad/branches/swrast/misc/doxygen/libbu.dox
===================================================================
--- brlcad/branches/swrast/misc/doxygen/libbu.dox       2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/misc/doxygen/libbu.dox       2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -6,11 +6,26 @@
 /**  @defgroup bu_defines Definitions*/
 
 /** @ingroup libbu */
+/**  @defgroup bu_app Applications */
+/**  @addtogroup bu_app
+     @brief Routines for application setup and supplying information to user 
programs.
+ */
+/** @ingroup libbu */
+/**  @defgroup bu_process Subprocess Management */
+/**  @addtogroup bu_process
+     @brief Routines for launching and managing applications as subprocesses.
+ */
+/** @ingroup libbu */
 /**  @defgroup bu_container Data Containers */
 /**  @addtogroup bu_container
      @brief Containers for holding various kinds of information.
  */
 /** @ingroup libbu */
+/**  @defgroup bu_dylib Dynamic Libraries*/
+/**  @addtogroup bu_dylib
+     @brief Wrap platform-specific functionality for managing dynamic library 
run-time loading, symbol access and unloading.
+ */
+/** @ingroup libbu */
 /**  @defgroup bu_memory Memory Management */
 /**  @addtogroup bu_memory
      @brief Wrappers for memory allocation and release, and mapping.
@@ -50,6 +65,12 @@
 /** @ingroup libbu */
 /**  @defgroup bu_version Version */
 
+/** @ingroup libbu */
+/**  @defgroup bu_experimental EXPERIMENTAL */
+/**  @addtogroup bu_experimental
+     @brief In-progress API, not ready for general use.
+ */
+
 /* Data Containers */
 /** @ingroup bu_container */
 /**   @defgroup bu_avs Attribute/Value Sets */
@@ -96,6 +117,8 @@
 /** @ingroup bu_io */
 /**   @defgroup bu_log Logging */
 /** @ingroup bu_io */
+/**   @defgroup bu_tbl Tabular Printing */
+/** @ingroup bu_io */
 /**   @defgroup bu_observer Observer*/
 /** @ingroup bu_io */
 /**   @defgroup bu_vfont Vector Fonts */
@@ -106,6 +129,8 @@
 /** @ingroup bu_data */
 /**   @defgroup bu_conv Data Conversion */
 /** @ingroup bu_data */
+/**   @defgroup bu_mime Mime Types */
+/** @ingroup bu_data */
 /**   @defgroup bu_hist Histogram Handling */
 /** @ingroup bu_data */
 /**   @defgroup bu_sort Sorting Algorithms */

Modified: brlcad/branches/swrast/misc/doxygen/libged.dox
===================================================================
--- brlcad/branches/swrast/misc/doxygen/libged.dox      2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/misc/doxygen/libged.dox      2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -5,6 +5,8 @@
 /** @ingroup libged */
 /**  @defgroup ged_defines Definitions*/
 /** @ingroup libged */
+/**  @defgroup ged_plugins Plugins */
+/** @ingroup libged */
 /**  @defgroup ged_database Database*/
 /** @ingroup libged */
 /**  @defgroup ged_objects Database Objects*/
@@ -18,6 +20,8 @@
 /**  @defgroup ged_debug Debugging */
 /** @ingroup libged */
 /**  @defgroup ged_raytrace Raytracing */
+/** @ingroup libged */
+/**  @defgroup ged_misc Miscellaneous */
 
 /* Third tier groups */
 /** @ingroup ged_view */

Modified: brlcad/branches/swrast/misc/tools/CMakeLists.txt
===================================================================
--- brlcad/branches/swrast/misc/tools/CMakeLists.txt    2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/misc/tools/CMakeLists.txt    2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -192,6 +192,10 @@
 SetTargetFolder(debug2c "Compilation Utilities")
 DISTCLEAN(${CMAKE_CURRENT_BINARY_DIR}/debug2c/Makefile)
 
+# inactvhdrs - utility that tries to find local headers unused by other
+# source code in a file hierarchy
+CMAKEFILES(inactvhdrs/inactvhdrs.cpp)
+
 CMAKEFILES(README)
 CMAKEFILES(CMakeLists.txt)
 

Modified: brlcad/branches/swrast/misc/tools/dom2dox/Doxyfile
===================================================================
--- brlcad/branches/swrast/misc/tools/dom2dox/Doxyfile  2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/misc/tools/dom2dox/Doxyfile  2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -1639,11 +1639,7 @@
 
 EXTERNAL_GROUPS        = YES
 
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
 
-PERL_PATH              = /usr/bin/perl
-
 #---------------------------------------------------------------------------
 # Configuration options related to the dot tool
 #---------------------------------------------------------------------------
@@ -1656,15 +1652,6 @@
 
 CLASS_DIAGRAMS         = YES
 
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH            =
-
 # If set to YES, the inheritance and collaboration graphs will hide
 # inheritance and usage relations if the target is undocumented
 # or is not a class.

Modified: brlcad/branches/swrast/misc/wix/brlcad_banner.bmp
===================================================================
(Binary files differ)

Modified: brlcad/branches/swrast/misc/wix/brlcad_dialog.bmp
===================================================================
(Binary files differ)

Modified: brlcad/branches/swrast/src/archer/CMakeLists.txt
===================================================================
--- brlcad/branches/swrast/src/archer/CMakeLists.txt    2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/src/archer/CMakeLists.txt    2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -16,7 +16,14 @@
 # If/when we add MGED's ability to work in "classic" mode, Archer will have
 # to be built as a non-GUI application (or we'll have to build two executables)
 if(BRLCAD_ENABLE_TK)
-  BRLCAD_ADDEXEC(archer archer.c "${archer_libs}" GUI)
+  set(archer_srcs archer.c)
+  if (HAVE_WINDOWS_H)
+    # To associate an icon with the application for Windows (needed
+    # for the WiX installer) we must use an rc file.
+    enable_language(RC)
+    set(archer_srcs ${archer_srcs} archer.rc)
+  endif (HAVE_WINDOWS_H)
+  BRLCAD_ADDEXEC(archer "${archer_srcs}" "${archer_libs}" GUI)
   add_dependencies(archer archer_launch_tcl_cp)
   add_dependencies(archer rtwizard)
   ADD_TARGET_DEPS(archer Tkhtml Tktable itcl_pkgIndex itk_pkgIndex dm_plugins)
@@ -24,6 +31,14 @@
   foreach(item ${tclindex_target_list})
     add_dependencies(archer ${item})
   endforeach(item ${tclindex_target_list})
+
+  # Archer is one of the programs that gets a start menu entry
+  set_property(INSTALL "${BIN_DIR}/$<TARGET_FILE_NAME:archer>"
+    PROPERTY CPACK_START_MENU_SHORTCUTS "Archer ${BRLCAD_VERSION}"
+    )
+  set_property(INSTALL "${BIN_DIR}/$<TARGET_FILE_NAME:archer>"
+    PROPERTY CPACK_DESKTOP_SHORTCUTS "Archer ${BRLCAD_VERSION}"
+    )
 endif(BRLCAD_ENABLE_TK)
 
 
@@ -65,6 +80,8 @@
   CMakeLists.txt
   TODO
   archer.c
+  archer.rc
+  archer.ico
   )
 CMAKEFILES(${archer_ignore_files})
 

Copied: brlcad/branches/swrast/src/archer/archer.ico (from rev 77083, 
brlcad/trunk/src/archer/archer.ico)
===================================================================
(Binary files differ)

Copied: brlcad/branches/swrast/src/archer/archer.rc (from rev 77083, 
brlcad/trunk/src/archer/archer.rc)
===================================================================
--- brlcad/branches/swrast/src/archer/archer.rc                         (rev 0)
+++ brlcad/branches/swrast/src/archer/archer.rc 2020-09-08 19:25:40 UTC (rev 
77084)
@@ -0,0 +1,11 @@
+#include <windows.h>
+
+//
+// Icon
+//
+//   The icon whose name or resource ID is lexigraphically first, is used
+//   as the application's icon.
+//
+
+app                      ICON    DISCARDABLE     "archer.ico"
+

Modified: brlcad/branches/swrast/src/external/Creo/CMakeLists.txt
===================================================================
--- brlcad/branches/swrast/src/external/Creo/CMakeLists.txt     2020-09-08 
17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast/src/external/Creo/CMakeLists.txt     2020-09-08 
19:25:40 UTC (rev 77084)
@@ -81,12 +81,9 @@
     endif(NOT "${CMAKE_GENERATOR_TOOLSET}" STREQUAL "v110_xp")
   endif("${CREO_VERSION}" VERSION_GREATER "2.9999" AND "${CREO_VERSION}" 
VERSION_LESS "4.0")
 
-  # There will be a sub-directory that is specific to the installed
+  # There may be a sub-directory that is specific to the installed
   # version of CREO - find it
   file(GLOB MDIR RELATIVE "${CREO_ROOT_DIR}" "${CREO_ROOT_DIR}/M*" )
-  if(NOT MDIR)
-    message(FATAL_ERROR "No directory matching the pattern M* found in 
${CREO_ROOT_DIR}.  This may indicate the CREO installation directory 
conventions have changed - if so, the CMakeLists.txt file will need to be 
updated to reflect the new path structures.")
-  endif(NOT MDIR)
 
   # Define a variable for the current CREO platform
   set(CREO_OS_VERSION x86e_win64)
@@ -207,17 +204,16 @@
     libbn
     libbrep
     libbu
-    libgdiam
-    liblz4
     libnmg
-    libp2t
     librt
-    libvds
     libwdb
+    SPSR
+    gdiam
     openNURBS
-    regex
-    zlib1
-       libSPSR
+    poly2tri
+    regex_brl
+    vds
+    z_brl1
     )
   set(BRLCAD_STATIC_LIBS)
   set(brlcadlibs_notinstalled)
@@ -228,11 +224,11 @@
     endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
     configure_file(${BRLCAD_ROOT_DIR}/bin/${blib}.dll 
${CMAKE_CURRENT_BINARY_DIR}/${blib}.dll COPYONLY)
     # Sigh - zlib doesn't follow the general pattern
-    if("${blib}" STREQUAL "zlib1")
-      set(BRLCAD_STATIC_LIBS ${BRLCAD_STATIC_LIBS} 
"${BRLCAD_ROOT_DIR}/lib/zlib.lib")
-    else("${blib}" STREQUAL "zlib1")
+    if("${blib}" STREQUAL "z_brl1")
+      set(BRLCAD_STATIC_LIBS ${BRLCAD_STATIC_LIBS} 
"${BRLCAD_ROOT_DIR}/lib/z_brl.lib")
+    else("${blib}" STREQUAL "z_brl1")
       set(BRLCAD_STATIC_LIBS ${BRLCAD_STATIC_LIBS} 
"${BRLCAD_ROOT_DIR}/lib/${blib}.lib")
-    endif("${blib}" STREQUAL "zlib1")
+    endif("${blib}" STREQUAL "z_brl1")
     install(FILES ${CMAKE_CURRENT_BINARY_DIR}/${blib}.dll DESTINATION 
"${MDIR}/${CREO_OBJ_DIR}")
     if(NOT EXISTS ${CREO_ROOT_DIR}/${MDIR}/${CREO_OBJ_DIR}/${blib}.dll)
       set(brlcadlibs_notinstalled "${brlcadlibs_notinstalled}\n     
${blib}.dll")

Index: brlcad/branches/swrast/src/libbu
===================================================================
--- brlcad/branches/swrast/src/libbu    2020-09-08 17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast/src/libbu    2020-09-08 19:25:40 UTC (rev 77084)

Property changes on: brlcad/branches/swrast/src/libbu
___________________________________________________________________
Modified: svn:mergeinfo
## -2,4 +2,5 ##
 /brlcad/branches/bioh/src/libbu:75720-75736,75860-75891,75894-75986,76088-76153
 
/brlcad/branches/brep-debug/src/libbu:69168,69927,69995-69996,70148-70149,70347-70349,70377,70526-70527,71006-71007,71009-71022,71046-71047,71049,71096-71100
 /brlcad/branches/dm-fb-merge/src/libbu:75426-76198
-/brlcad/branches/tcltk86/src/libbu:68300-75257
\ No newline at end of property
+/brlcad/branches/tcltk86/src/libbu:68300-75257
+/brlcad/trunk/src/libbu:76973-77083
\ No newline at end of property
Modified: brlcad/branches/swrast/src/libbu/realpath_bsd.c
===================================================================
--- brlcad/branches/swrast/src/libbu/realpath_bsd.c     2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/src/libbu/realpath_bsd.c     2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -60,7 +60,7 @@
     unsigned symlinks;
     int serrno, mem_allocated;
     ssize_t slen;
-    char left[PATH_MAX], next_token[PATH_MAX], symlink[PATH_MAX];
+    char left[MAXPATHLEN], next_token[MAXPATHLEN], symlink[MAXPATHLEN];
 
     if (path == NULL) {
        errno = EINVAL;
@@ -75,7 +75,7 @@
     serrno = errno;
 
     if (resolved == NULL) {
-       resolved = (char *)bu_malloc(PATH_MAX, "alloc PATH_MAX");
+       resolved = (char *)bu_malloc(MAXPATHLEN, "alloc MAXPATHLEN");
        if (resolved == NULL)
            return (NULL);
        mem_allocated = 1;
@@ -91,11 +91,11 @@
        resolved_len = 1;
        left_len = bu_strlcpy(left, path + 1, sizeof(left));
     } else {
-       if (getcwd(resolved, PATH_MAX) == NULL) {
+       if (getcwd(resolved, MAXPATHLEN) == NULL) {
            if (mem_allocated)
                free(resolved);
            else
-               bu_strlcpy(resolved, ".", PATH_MAX);
+               bu_strlcpy(resolved, ".", MAXPATHLEN);
            return (NULL);
        }
        resolved_len = strlen(resolved);
@@ -129,7 +129,7 @@
        }
 
        if (resolved[resolved_len - 1] != '/') {
-           if (resolved_len + 1 >= PATH_MAX) {
+           if (resolved_len + 1 >= MAXPATHLEN) {
                errno = ENAMETOOLONG;
                goto err;
            }
@@ -160,8 +160,8 @@
         * it exists but isn't a symlink, or if there are no more
         * path components left.
         */
-       resolved_len = bu_strlcat(resolved, next_token, PATH_MAX);
-       if (resolved_len >= PATH_MAX) {
+       resolved_len = bu_strlcat(resolved, next_token, MAXPATHLEN);
+       if (resolved_len >= MAXPATHLEN) {
            errno = ENAMETOOLONG;
            goto err;
        }

Modified: brlcad/branches/swrast/src/libbu/whereami.c
===================================================================
--- brlcad/branches/swrast/src/libbu/whereami.c 2020-09-08 17:46:02 UTC (rev 
77083)
+++ brlcad/branches/swrast/src/libbu/whereami.c 2020-09-08 19:25:40 UTC (rev 
77084)
@@ -275,13 +275,13 @@
 WAI_FUNCSPEC
 int WAI_PREFIX(getExecutablePath)(char* out, int capacity, int* dirname_length)
 {
-  char buffer[PATH_MAX];
+  char buffer[MAXPATHLEN];
   char* resolved = NULL;
   int length = -1;
 
   for (;;)
   {
-    resolved = realpath(WAI_PROC_SELF_EXE, buffer);
+    resolved = bu_file_realpath(WAI_PROC_SELF_EXE, buffer);
     if (!resolved)
       break;
 
@@ -347,12 +347,12 @@
 
     for (;;)
     {
-      char buffer[PATH_MAX < 1024 ? 1024 : PATH_MAX];
+      char buffer[MAXPATHLEN < 1024 ? 1024 : MAXPATHLEN];
       uint64_t low, high;
       char perms[5];
       uint64_t offset;
       uint32_t major, minor;
-      char path[PATH_MAX];
+      char path[MAXPATHLEN];
       uint32_t inode;
 
       if (!bu_fgets(buffer, sizeof(buffer), maps))
@@ -366,7 +366,7 @@
         {
           char* resolved;
 
-          resolved = realpath(path, buffer);
+          resolved = bu_file_realpath(path, buffer);
           if (!resolved)
             break;
 
@@ -458,8 +458,8 @@
 WAI_FUNCSPEC
 int WAI_PREFIX(getExecutablePath)(char* out, int capacity, int* dirname_length)
 {
-  char buffer1[PATH_MAX];
-  char buffer2[PATH_MAX];
+  char buffer1[MAXPATHLEN];
+  char buffer2[MAXPATHLEN];
   char* path = buffer1;
   char* resolved = NULL;
   int length = -1;
@@ -474,7 +474,7 @@
         break;
     }
 
-    resolved = realpath(path, buffer2);
+    resolved = bu_file_realpath(path, buffer2);
     if (!resolved)
       break;
 
@@ -514,7 +514,7 @@
 WAI_NOINLINE WAI_FUNCSPEC
 int WAI_PREFIX(getModulePath)(char* out, int capacity, int* dirname_length)
 {
-  char buffer[PATH_MAX];
+  char buffer[MAXPATHLEN];
   char* resolved = NULL;
   int length = -1;
 
@@ -524,7 +524,7 @@
 
     if (dladdr(WAI_RETURN_ADDRESS(), &info))
     {
-      resolved = realpath(info.dli_fname, buffer);
+      resolved = bu_file_realpath(info.dli_fname, buffer);
       if (!resolved)
         break;
 
@@ -570,8 +570,8 @@
 WAI_FUNCSPEC
 int WAI_PREFIX(getExecutablePath)(char* out, int capacity, int* dirname_length)
 {
-  char buffer1[PATH_MAX];
-  char buffer2[PATH_MAX];
+  char buffer1[MAXPATHLEN];
+  char buffer2[MAXPATHLEN];
   char* resolved = NULL;
   FILE* self_exe = NULL;
   int length = -1;
@@ -585,7 +585,7 @@
     if (!bu_fgets(buffer1, sizeof(buffer1), self_exe))
       break;
 
-    resolved = realpath(buffer1, buffer2);
+    resolved = bu_file_realpath(buffer1, buffer2);
     if (!resolved)
       break;
 
@@ -624,7 +624,7 @@
 WAI_FUNCSPEC
 int WAI_PREFIX(getModulePath)(char* out, int capacity, int* dirname_length)
 {
-  char buffer[PATH_MAX];
+  char buffer[MAXPATHLEN];
   char* resolved = NULL;
   int length = -1;
 
@@ -634,7 +634,7 @@
 
     if (dladdr(WAI_RETURN_ADDRESS(), &info))
     {
-      resolved = realpath(info.dli_fname, buffer);
+      resolved = bu_file_realpath(info.dli_fname, buffer);
       if (!resolved)
         break;
 
@@ -678,8 +678,8 @@
 WAI_FUNCSPEC
 int WAI_PREFIX(getExecutablePath)(char* out, int capacity, int* dirname_length)
 {
-  char buffer1[PATH_MAX];
-  char buffer2[PATH_MAX];
+  char buffer1[MAXPATHLEN];
+  char buffer2[MAXPATHLEN];
   char* path = buffer1;
   char* resolved = NULL;
   int length = -1;
@@ -696,7 +696,7 @@
     if (sysctl(mib, (u_int)(sizeof(mib) / sizeof(mib[0])), path, &size, NULL, 
0) != 0)
         break;
 
-    resolved = realpath(path, buffer2);
+    resolved = bu_file_realpath(path, buffer2);
     if (!resolved)
       break;
 
@@ -736,7 +736,7 @@
 WAI_NOINLINE WAI_FUNCSPEC
 int WAI_PREFIX(getModulePath)(char* out, int capacity, int* dirname_length)
 {
-  char buffer[PATH_MAX];
+  char buffer[MAXPATHLEN];
   char* resolved = NULL;
   int length = -1;
 
@@ -746,7 +746,7 @@
 
     if (dladdr(WAI_RETURN_ADDRESS(), &info))
     {
-      resolved = realpath(info.dli_fname, buffer);
+      resolved = bu_file_realpath(info.dli_fname, buffer);
       if (!resolved)
         break;
 

Modified: brlcad/branches/swrast/src/libdm/glx/dm-ogl.c
===================================================================
--- brlcad/branches/swrast/src/libdm/glx/dm-ogl.c       2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/src/libdm/glx/dm-ogl.c       2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -523,8 +523,7 @@
     /* Try to satisfy the above desires with a color visual of the
      * greatest depth */
 
-    vibase = XGetVisualInfo(pubvars->dpy,
-                           0, &vitemp, &num);
+    vibase = XGetVisualInfo(pubvars->dpy, 0, &vitemp, &num);
     screen = DefaultScreen(pubvars->dpy);
 
     good = (int *)bu_malloc(sizeof(int)*num, "alloc good visuals");

Modified: brlcad/branches/swrast/src/libgcv/CMakeLists.txt
===================================================================
--- brlcad/branches/swrast/src/libgcv/CMakeLists.txt    2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/src/libgcv/CMakeLists.txt    2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -33,14 +33,8 @@
 set_property(SOURCE gcv.c APPEND PROPERTY COMPILE_DEFINITIONS 
"LIBGCV_PLUGINS_PATH=\"${LIBGCV_PLUGINS_PATH}\"")
 set_property(SOURCE gcv.c APPEND PROPERTY COMPILE_DEFINITIONS 
"LIBGCV_PLUGIN_SUFFIX=\"${CMAKE_SHARED_LIBRARY_SUFFIX}\"")
 
-enable_testing()
-BRLCAD_ADDEXEC(test_bottess test_bottess.c libgcv NO_INSTALL)
-if(HIDE_INTERNAL_SYMBOLS)
-  set_property(TARGET test_bottess APPEND PROPERTY COMPILE_DEFINITIONS 
"BOTTESS_DLL_IMPORTS")
-endif(HIDE_INTERNAL_SYMBOLS)
-add_test(NAME bottess_test COMMAND test_bottess)
+add_subdirectory(tests)
 
-
 set(GCV_IGNORE_FILES
   CMakeLists.txt
   NOTES

Modified: brlcad/branches/swrast/src/libgcv/plugins/gdal/gdal.cpp
===================================================================
--- brlcad/branches/swrast/src/libgcv/plugins/gdal/gdal.cpp     2020-09-08 
17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast/src/libgcv/plugins/gdal/gdal.cpp     2020-09-08 
19:25:40 UTC (rev 77084)
@@ -97,7 +97,8 @@
 get_dataset_info(GDALDatasetH hDataset)
 {
     char *gdal_info = GDALInfo(hDataset, NULL);
-    if (gdal_info) bu_log("%s", gdal_info);
+    if (gdal_info)
+       bu_log("%s", gdal_info);
     CPLFree(gdal_info);
     return 0;
 }
@@ -108,13 +109,16 @@
     GDALDatasetH hDataset;
     GDALAllRegister();
 
-    if (!data) return 0;
+    if (!data)
+       return 0;
 
-    if (!bu_file_exists(data,NULL)) return 0;
+    if (!bu_file_exists(data,NULL))
+       return 0;
 
     hDataset = GDALOpenEx(data, GDAL_OF_READONLY | GDAL_OF_RASTER , NULL, 
NULL, NULL);
 
-    if (!hDataset) return 0;
+    if (!hDataset)
+       return 0;
 
     GDALClose(hDataset);
 
@@ -129,7 +133,8 @@
     GDALRasterBandH band = GDALGetRasterBand(ds, 1);
     mm[0] = GDALGetRasterMinimum(band, &bmin);
     mm[1] = GDALGetRasterMaximum(band, &bmin);
-    if (!bmin || !bmax) GDALComputeRasterMinMax(band, TRUE, mm);
+    if (!bmin || !bmax)
+       GDALComputeRasterMinMax(band, TRUE, mm);
     bu_log("Elevation Minimum/Maximum: %f, %f\n", mm[0], mm[1]);
 }
 
@@ -203,17 +208,20 @@
     (void)get_dataset_info(state->hDataset);
     gdal_elev_minmax(state->hDataset);
 
-    /* Stash the original Spatial Reference System as a PROJ.4 string for 
later assignment */
+    /* Stash the original Spatial Reference System as a PROJ.4 string
+     * for later assignment
+     */
     char *orig_proj4_str = NULL;
     OGRSpatialReference iSRS(GDALGetProjectionRef(state->hDataset));
     iSRS.exportToProj4(&orig_proj4_str);
 
-    /* Use the information in the data set to deduce the EPSG number 
corresponding
-     * to the correct UTM projection zone, define a spatial reference, and 
generate
-     * the "Well Known Text" to use as the argument to the warping function*/
+    /* Use the information in the data set to deduce the EPSG number
+     * corresponding to the correct UTM projection zone, define a
+     * spatial reference, and generate the "Well Known Text" to use as
+     * the argument to the warping function*/
     GDALDatasetH hOutDS;
     int zone = (state->ops->zone == INT_MAX) ? gdal_utm_zone(state) : 
state->ops->zone;
-    char *dunit;
+    char *dunit = NULL;
     const char *dunit_default = "m";
     struct bu_vls new_proj4_str = BU_VLS_INIT_ZERO;
     if (zone != INT_MAX) {
@@ -224,22 +232,26 @@
        char *dst_Wkt = NULL;
        oSRS.exportToWkt(&dst_Wkt);
 
-       /* Perform the UTM data warp.  At this point the data is not yet in the
-        * form needed by the DSP primitive */
+       /* Perform the UTM data warp.  At this point the data is not
+        * yet in the form needed by the DSP primitive */
        hOutDS = GDALAutoCreateWarpedVRT(state->hDataset, NULL, dst_Wkt, 
GRA_CubicSpline, 0.0, NULL);
        CPLFree(dst_Wkt);
-       dunit = bu_strdup(GDALGetRasterUnitType(((GDALDataset 
*)hOutDS)->GetRasterBand(1)));
-       bu_log("\nTransformed dataset info:\n");
-       (void)get_dataset_info(hOutDS);
-       gdal_elev_minmax(hOutDS);
+
+       if (hOutDS) {
+           dunit = bu_strdup(GDALGetRasterUnitType(((GDALDataset 
*)hOutDS)->GetRasterBand(1)));
+           bu_log("\nTransformed dataset info:\n");
+           (void)get_dataset_info(hOutDS);
+           gdal_elev_minmax(hOutDS);
+       }
     } else {
        hOutDS = state->hDataset;
        dunit = bu_strdup(GDALGetRasterUnitType(((GDALDataset 
*)hOutDS)->GetRasterBand(1)));
     }
-    if (!dunit || strlen(dunit) == 0) dunit = (char *)dunit_default;
+    if (!dunit || strlen(dunit) == 0)
+       dunit = (char *)dunit_default;
 
-    /* Do the translate step (a.l.a gdal_translate) that puts the data in a
-     * form we can use */
+    /* Do the translate step (a.l.a gdal_translate) that puts the data
+     * in a form we can use */
     char *img_opts[3];
     img_opts[0] = bu_strdup("-of");
     img_opts[1] = bu_strdup("MEM");
@@ -247,12 +259,15 @@
     GDALTranslateOptions *gdalt_opts = GDALTranslateOptionsNew(img_opts, NULL);
     GDALDatasetH flatDS = GDALTranslate("", hOutDS, gdalt_opts, NULL);
     GDALTranslateOptionsFree(gdalt_opts);
-    if (hOutDS != state->hDataset) GDALClose(hOutDS);
+    if (hOutDS != state->hDataset)
+       GDALClose(hOutDS);
     for(int i = 0; i < 3; i++) {
-       if(img_opts[i]) bu_free(img_opts[i], "imgopt");
+       if(img_opts[i])
+           bu_free(img_opts[i], "imgopt");
     }
 
-    /* Stash the flat Spatial Reference System as a PROJ.4 string for later 
assignment */
+    /* Stash the flat Spatial Reference System as a PROJ.4 string for
+     * later assignment */
     char *flat_proj4_str = NULL;
     OGRSpatialReference fSRS(GDALGetProjectionRef(flatDS));
     fSRS.exportToProj4(&flat_proj4_str);
@@ -278,7 +293,8 @@
        }
     }
 
-    /* Convert the data before writing it so the DSP get_obj_data routine sees 
what it expects */
+    /* Convert the data before writing it so the DSP get_obj_data
+     * routine sees what it expects */
     int in_cookie = bu_cv_cookie("hus");
     int out_cookie = bu_cv_cookie("nus"); /* data is network unsigned short */
     if (bu_cv_optimize(in_cookie) != bu_cv_optimize(out_cookie)) {
@@ -316,10 +332,11 @@
     GDALClose(flatDS);
     GDALClose(state->hDataset);
 
-    /* TODO: if we're going to BoT (3-space mesh, will depend on the transform 
requested) we will need different logic... */
+    /* TODO: if we're going to BoT (3-space mesh, will depend on the
+     * transform requested) we will need different logic... */
 
-    /* Write out the dsp.  Since we're using a data object, instead of a file,
-     * do the setup by hand. */
+    /* Write out the dsp.  Since we're using a data object, instead of
+     * a file, do the setup by hand. */
     struct rt_dsp_internal *dsp;
     BU_ALLOC(dsp, struct rt_dsp_internal);
     dsp->magic = RT_DSP_INTERNAL_MAGIC;
@@ -346,8 +363,8 @@
 
     wdb_export(state->wdbp, bu_vls_addr(&name_dsp), (void *)dsp, ID_DSP, 1);
 
-    /* Write out the original and current Spatial Reference Systems and other 
dimensional
-     * information to attributes on the dsp */
+    /* Write out the original and current Spatial Reference Systems
+     * and other dimensional information to attributes on the dsp */
     struct bu_attribute_value_set avs;
     bu_avs_init_empty(&avs);
     struct directory *dp = db_lookup(state->wdbp->dbip, 
bu_vls_addr(&name_dsp), LOOKUP_QUIET);
@@ -370,9 +387,12 @@
        (void)db5_update_attributes(dp, &avs, state->wdbp->dbip);
     }
 
-    if (dunit != dunit_default) bu_free(dunit, "free dunit");
-    if (orig_proj4_str) CPLFree(orig_proj4_str);
-    if (flat_proj4_str) CPLFree(flat_proj4_str);
+    if (dunit != dunit_default)
+       bu_free(dunit, "free dunit");
+    if (orig_proj4_str)
+       CPLFree(orig_proj4_str);
+    if (flat_proj4_str)
+       CPLFree(flat_proj4_str);
     bu_vls_free(&new_proj4_str);
 
     bu_vls_free(&name_root);

Modified: brlcad/branches/swrast/src/libgcv/plugins/gdal/gdal_ll.cpp
===================================================================
--- brlcad/branches/swrast/src/libgcv/plugins/gdal/gdal_ll.cpp  2020-09-08 
17:46:02 UTC (rev 77083)
+++ brlcad/branches/swrast/src/libgcv/plugins/gdal/gdal_ll.cpp  2020-09-08 
19:25:40 UTC (rev 77084)
@@ -66,19 +66,24 @@
            CPLPopErrorHandler();
            OSRDestroySpatialReference(hll);
        }
-       if(hpj != NULL) OSRDestroySpatialReference(hpj);
+       if (hpj != NULL)
+           OSRDestroySpatialReference(hpj);
     }
 
     if(htfm != NULL) {
        if (OCTTransform(htfm,1,&longitude,&latitude,NULL)) {
-           if (lat_center)  (*lat_center)  = latitude;
-           if (long_center) (*long_center) = longitude;
+           if (lat_center)
+               *lat_center  = latitude;
+           if (long_center)
+               *long_center = longitude;
        } else {
            return 0;
        }
     } else {
-       if (lat_center)  (*lat_center)  = latitude;
-       if (long_center) (*long_center) = longitude;
+       if (lat_center)
+           *lat_center  = latitude;
+       if (long_center)
+           *long_center = longitude;
     }
     bu_log("lat: %f, long: %f\n", latitude, longitude);
 

Deleted: brlcad/branches/swrast/src/libgcv/test_bottess.c
===================================================================
--- brlcad/branches/swrast/src/libgcv/test_bottess.c    2020-09-08 17:46:02 UTC 
(rev 77083)
+++ brlcad/branches/swrast/src/libgcv/test_bottess.c    2020-09-08 19:25:40 UTC 
(rev 77084)
@@ -1,343 +0,0 @@
-/*                  T E S T _ B O T T E S S . C
- * BRL-CAD
- *
- * Copyright (c) 2011-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 libgcv/bottess_tester.c
- *
- * Test things in the bottess routines...
- */
-
-#include "common.h"
-
-#include "vmath.h"
-#include "bu/app.h"
-#include "bn.h"
-#include "raytrace.h"
-#include "nmg.h"
-#include "gcv.h"
-
-#include "./soup.h"
-#include "./tri_intersect.h"
-
-int
-test_intersection(int should, point_t *t1, point_t *t2, point_t p1, point_t p2)
-{
-    int coplanar = 0;
-    point_t i[2] = {VINIT_ZERO, VINIT_ZERO};
-    vect_t tmp[2] = {VINIT_ZERO, VINIT_ZERO};
-    struct face_s f[2];
-    struct bn_tol tol;
-
-    BN_TOL_INIT(&tol);
-    tol.dist = 0.005;
-    tol.dist_sq = tol.dist*tol.dist;
-
-    VMOVE(f[0].vert[0], t1[0]);
-    VMOVE(f[0].vert[1], t1[1]);
-    VMOVE(f[0].vert[2], t1[2]);
-    VSUB2(tmp[0], t1[1], t1[0]);
-    VSUB2(tmp[1], t1[2], t1[0]);
-    VCROSS(f[0].plane, tmp[0], tmp[1]);
-    f[0].foo = 0;
-
-    VMOVE(f[1].vert[0], t2[0]);
-    VMOVE(f[1].vert[1], t2[1]);
-    VMOVE(f[1].vert[2], t2[2]);
-    VSUB2(tmp[0], t2[1], t2[0]);
-    VSUB2(tmp[1], t2[2], t2[0]);
-    VCROSS(f[1].plane, tmp[0], tmp[1]);
-    f[1].foo = 0;
-
-    if (gcv_tri_tri_intersect_with_isectline(NULL, NULL, f, f+1, &coplanar, i, 
&tol) == 0 && should == 0)
-       return 0;
-    return !(VNEAR_EQUAL(i[0], p1, tol.dist) && VNEAR_EQUAL(i[1], p2, 
tol.dist));
-}
-
-
-int
-test_tri_intersections()
-{
-    int count = 0;
-#define TRY(suc, t00x, t00y, t00z, t01x, t01y, t01z, t02x, t02y, t02z, t10x, 
t10y, t10z, t11x, t11y, t11z, t12x, t12y, t12z, p0x, p0y, p0z, p1x, p1y, p1z) { 
\
-       point_t t0[3], t1[3], p0, p1; \
-       VSET(t0[0], t00x, t00y, t00z); VSET(t0[1], t01x, t01y, t01z); 
VSET(t0[2], t02x, t02y, t02z); \
-       VSET(t1[0], t10x, t10y, t10z); VSET(t1[1], t11x, t11y, t11z); 
VSET(t1[2], t12x, t12y, t12z); \
-       VSET(p0, p0x, p0y, p0z); VSET(p1, p1x, p1y, p1z); \
-       count += test_intersection(suc, t0, t1, p0, p1); }
-
-    TRY(1, 0, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0.5, 0, 1, 0.5, 1, 0, 0.5, 0, 0, 
.5, 0, .5, .5);  /* ep ef */
-    TRY(0, 0, 0, 0, 0, 1, 0, 0, 0, 1, -1, 2, 0.5, 0, 3, 0.5, 1, 2, 0.5, 0, 0, 
.5, 0, .5, .5);  /* no intersect */
-
-#undef TRY
-    return count;
-}
-
-
-static int
-find_tri(struct soup_s *s, struct face_s *f, struct bn_tol *t) {
-    unsigned int i, j, k;
-    for (i=0;i<s->nfaces;i++) {
-       int found[3] = {0, 0, 0};
-       struct face_s *wf = s->faces+i;
-
-       for (j=0;j<3;j++) for (k=0;k<3;k++) if (VNEAR_EQUAL(wf->vert[j], 
f->vert[k], t->dist)) found[j] = 1;
-       if (found[0] == 1 && found[1] == 1 && found[2] == 1) return i;
-    }
-    return -1;
-}
-
-
-int
-test_face_split_single()
-{
-    unsigned long int i, tcount = 0, count = 0, nsplt;
-    struct soup_s s;
-    struct face_s f;
-    struct bn_tol t;
-
-    BN_TOL_INIT(&t);
-    t.dist = 0.005;
-    t.dist_sq = t.dist * t.dist;
-
-    /* evil macros to do a lot of scaffolding, setup, execution, etc... */
-    /* prep take: the triangle to split (9 fastf_t), the intersection line (6
-     * fastf_t), and the number of expected resulting triangles. */
-
-    /* NOTE THE "PREP" AND "POST" MACROS MUST BE USED IN PAIRS DUE TO THE 
SPLIT ENCLOSING CURLY BRACES */
-#define PREP(t00, t01, t02, t10, t11, t12, t20, t21, t22,                      
 \
-            ispt00, ispt01, ispt02, ispt10, ispt11, ispt12, _nsplt)          \
-    {                                                             \
-       point_t isectpt[2];                                         \
-       int urf[_nsplt+1];                                          \
-       unsigned long int failure = 0, numsplit = _nsplt;           \
-       for (i = 0; i < _nsplt + 1; ++i) urf[i] = 0;                \
-       tcount++;                                                   \
-       VSET(isectpt[0], ispt00, ispt01, ispt02);                      \
-       VSET(isectpt[1], ispt10, ispt11, ispt12);                      \
-       s.magic = SOUP_MAGIC;                                       \
-       s.faces = NULL;                                             \
-       s.maxfaces = 0;                                             \
-       s.nfaces = 0;                                               \
-       VSET(f.vert[0], t00, t01, t02);                                \
-       VSET(f.vert[1], t10, t11, t12);                                \
-       VSET(f.vert[2], t20, t21, t22);                                \
-       soup_add_face(&s, V3ARGS(f.vert), &t);                        \
-       VSET(f.plane, 0, 0, 1);                                        \
-       nsplt = split_face_single(&s, 0, isectpt, &f, &t);              \
-       if (nsplt != s.nfaces) {                                    \
-           printf("Error, nsplit %lu != s.nfaces %lu ?\n", numsplit, 
s.nfaces); \
-       }
-
-    /* the _splits is an array of expected triangles, as 9 fastf_t tuples */
-    /* fastf_t _splits[nsplt][9] = {{...}, {...}} */
-    /* post tests to see if the resulting triangles match and cleans up */
-#define POST(name)                                                      \
-    for (i = 0; i < numsplit; i++) {                                    \
-       VSET(f.vert[0], _splits[i][0], _splits[i][1], _splits[i][2]);        \
-       VSET(f.vert[1], _splits[i][3], _splits[i][4], _splits[i][5]);        \
-       VSET(f.vert[2], _splits[i][6], _splits[i][7], _splits[i][8]);        \
-       urf[i] = find_tri(&s, &f, &t);                                      \
-       if (urf[i] == -1) failure++;                                      \
-    }                                                                   \
-    if (nsplt != 2 && urf[0] == -1 && urf[1] == -1) {                   \
-       printf("\033[1;31mFAILURE "name"\033[m\n");                       \
-       printf("%lu faces now\n", s.nfaces);                               \
-       for (i = 0; i < s.nfaces; i++)                                    \

@@ Diff output truncated at 100000 characters. @@
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