Revision: 76085
http://sourceforge.net/p/brlcad/code/76085
Author: starseeker
Date: 2020-06-09 02:51:39 +0000 (Tue, 09 Jun 2020)
Log Message:
-----------
Merge changes from trunk - r76077 through r76084
Modified Paths:
--------------
brlcad/branches/dm-fb-merge/include/gcv/api.h
brlcad/branches/dm-fb-merge/include/gcv/util.h
brlcad/branches/dm-fb-merge/include/rt/tree.h
brlcad/branches/dm-fb-merge/src/adrt/load_g.c
brlcad/branches/dm-fb-merge/src/conv/CMakeLists.txt
brlcad/branches/dm-fb-merge/src/conv/dxf/g-dxf.c
brlcad/branches/dm-fb-merge/src/conv/g-egg.c
brlcad/branches/dm-fb-merge/src/conv/raw/g-raw.c
brlcad/branches/dm-fb-merge/src/conv/stl/g-stl.c
brlcad/branches/dm-fb-merge/src/libgcv/CMakeLists.txt
brlcad/branches/dm-fb-merge/src/libgcv/plugins/CMakeLists.txt
brlcad/branches/dm-fb-merge/src/libgcv/plugins/decimate/decimate.c
brlcad/branches/dm-fb-merge/src/libgcv/plugins/fastgen4/CMakeLists.txt
brlcad/branches/dm-fb-merge/src/libgcv/plugins/fastgen4/fastgen4_read.c
brlcad/branches/dm-fb-merge/src/libgcv/plugins/fastgen4/fastgen4_write.cpp
brlcad/branches/dm-fb-merge/src/libgcv/plugins/gdal/CMakeLists.txt
brlcad/branches/dm-fb-merge/src/libgcv/plugins/gdal/gdal.cpp
brlcad/branches/dm-fb-merge/src/libgcv/plugins/obj/CMakeLists.txt
brlcad/branches/dm-fb-merge/src/libgcv/plugins/obj/obj_read.c
brlcad/branches/dm-fb-merge/src/libgcv/plugins/rhino/rhino_read.cpp
brlcad/branches/dm-fb-merge/src/libgcv/plugins/stl/CMakeLists.txt
brlcad/branches/dm-fb-merge/src/libgcv/plugins/stl/stl_read.c
brlcad/branches/dm-fb-merge/src/libgcv/plugins/stl/stl_write.c
brlcad/branches/dm-fb-merge/src/libgcv/plugins/vrml/CMakeLists.txt
brlcad/branches/dm-fb-merge/src/libgcv/plugins/vrml/vrml_write.c
brlcad/branches/dm-fb-merge/src/librt/CMakeLists.txt
Added Paths:
-----------
brlcad/branches/dm-fb-merge/src/libgcv/region_end.c
brlcad/branches/dm-fb-merge/src/libgcv/region_end_mc.c
Removed Paths:
-------------
brlcad/branches/dm-fb-merge/src/librt/region_end.c
brlcad/branches/dm-fb-merge/src/librt/region_end_mc.c
Property Changed:
----------------
brlcad/branches/dm-fb-merge/
brlcad/branches/dm-fb-merge/include/
Index: brlcad/branches/dm-fb-merge
===================================================================
--- brlcad/branches/dm-fb-merge 2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge 2020-06-09 02:51:39 UTC (rev 76085)
Property changes on: brlcad/branches/dm-fb-merge
___________________________________________________________________
Modified: svn:mergeinfo
## -8,4 +8,4 ##
/brlcad/branches/osg:62110-62113
/brlcad/branches/prep-cache:68236-68933
/brlcad/branches/tcltk86:68300-75257
-/brlcad/trunk:75440-76077
\ No newline at end of property
+/brlcad/trunk:75440-76084
\ No newline at end of property
Index: brlcad/branches/dm-fb-merge/include
===================================================================
--- brlcad/branches/dm-fb-merge/include 2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/include 2020-06-09 02:51:39 UTC (rev 76085)
Property changes on: brlcad/branches/dm-fb-merge/include
___________________________________________________________________
Modified: svn:mergeinfo
## -8,4 +8,4 ##
/brlcad/branches/osg/include:62110-62113
/brlcad/branches/prep-cache/include:68236-68933
/brlcad/branches/tcltk86/include:68300-75257
-/brlcad/trunk/include:75463-75467,75630-75814,75880-76077
\ No newline at end of property
+/brlcad/trunk/include:75463-75467,75630-75814,75880-76084
\ No newline at end of property
Modified: brlcad/branches/dm-fb-merge/include/gcv/api.h
===================================================================
--- brlcad/branches/dm-fb-merge/include/gcv/api.h 2020-06-09 02:48:56 UTC
(rev 76084)
+++ brlcad/branches/dm-fb-merge/include/gcv/api.h 2020-06-09 02:51:39 UTC
(rev 76085)
@@ -202,8 +202,6 @@
*/
GCV_EXPORT const struct bu_ptbl *gcv_list_filters(void);
-GCV_EXPORT const struct gcv_plugin *gcv_plugin_info(void);
-
/**
* Perform a filtering operation on a gcv_context.
*
Modified: brlcad/branches/dm-fb-merge/include/gcv/util.h
===================================================================
--- brlcad/branches/dm-fb-merge/include/gcv/util.h 2020-06-09 02:48:56 UTC
(rev 76084)
+++ brlcad/branches/dm-fb-merge/include/gcv/util.h 2020-06-09 02:51:39 UTC
(rev 76085)
@@ -57,6 +57,34 @@
GCV_EXPORT extern int gcv_bot_is_orientable(const struct rt_bot_internal *bot);
+/**
+ * write_region is a function pointer to a routine that will
+ * write out the region in a given file format.
+ *
+ * This routine must be prepared to run in parallel.
+ */
+struct gcv_region_end_data
+{
+ void (*write_region)(struct nmgregion *r, const struct db_full_path
*pathp, int region_id, int material_id, float color[3], void *client_data);
+ void *client_data;
+};
+
+/**
+ * Perform Boolean evaluation on a tree of tessellated leaf nodes.
+ *
+ * Usually specified as the db_walk_tree() region_end callback,
+ * calling this routine for each positive region encountered.
+ *
+ * The client_data parameter is expected to point to a struct
gcv_region_end_data.
+ */
+GCV_EXPORT extern union tree *gcv_region_end(struct db_tree_state *tsp, const
struct db_full_path *pathp, union tree *curtree, void *client_data);
+
+/**
+ * Exact same as gcv_region_end, except using the marching cubes algorithm.
+ */
+GCV_EXPORT extern union tree *gcv_region_end_mc(struct db_tree_state *tsp,
const struct db_full_path *pathp, union tree *curtree, void *client_data);
+
+
GCV_EXPORT extern union tree *gcv_bottess_region_end(struct db_tree_state
*tsp, const struct db_full_path *pathp, union tree *curtree, void *client_data);
Modified: brlcad/branches/dm-fb-merge/include/rt/tree.h
===================================================================
--- brlcad/branches/dm-fb-merge/include/rt/tree.h 2020-06-09 02:48:56 UTC
(rev 76084)
+++ brlcad/branches/dm-fb-merge/include/rt/tree.h 2020-06-09 02:51:39 UTC
(rev 76085)
@@ -774,33 +774,7 @@
struct resource *resp);
-/**
- * write_region is a function pointer to a routine that will
- * write out the region in a given file format.
- *
- * This routine must be prepared to run in parallel.
- */
-struct rt_region_end_data
-{
- void (*write_region)(struct nmgregion *r, const struct db_full_path
*pathp, int region_id, int material_id, float color[3], void *client_data);
- void *client_data;
-};
-/**
- * Perform Boolean evaluation on a tree of tessellated leaf nodes.
- *
- * Usually specified as the db_walk_tree() region_end callback,
- * calling this routine for each positive region encountered.
- *
- * The client_data parameter is expected to point to a struct
rt_region_end_data.
- */
-RT_EXPORT extern union tree *rt_region_end(struct db_tree_state *tsp, const
struct db_full_path *pathp, union tree *curtree, void *client_data);
-
-/**
- * Exact same as rt_region_end, except using the marching cubes algorithm.
- */
-RT_EXPORT extern union tree *rt_region_end_mc(struct db_tree_state *tsp, const
struct db_full_path *pathp, union tree *curtree, void *client_data);
-
__END_DECLS
#endif /* RT_TREE_H */
Modified: brlcad/branches/dm-fb-merge/src/adrt/load_g.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/adrt/load_g.c 2020-06-09 02:48:56 UTC
(rev 76084)
+++ brlcad/branches/dm-fb-merge/src/adrt/load_g.c 2020-06-09 02:51:39 UTC
(rev 76085)
@@ -54,7 +54,7 @@
static void nmg_to_adrt_gcvwrite(struct nmgregion *r, const struct
db_full_path *pathp, int region_id, int material_id, float color[3], void
*client_data);
struct gcv_data {
- struct rt_region_end_data region_end_data;
+ struct gcv_region_end_data region_end_data;
struct adrt_mesh_s **meshes;
};
static struct gcv_data gcvwriter = {{nmg_to_adrt_gcvwrite, NULL}, NULL};
@@ -309,7 +309,7 @@
1, /* ncpu */
&tree_state, /* initial tree state */
nmg_to_adrt_regstart, /* region start function */
- rt_region_end, /* region end function */
+ gcv_region_end, /* region end function */
nmg_booltree_leaf_tess, /* leaf func */
(void *)&gcvwriter); /* client data */
Modified: brlcad/branches/dm-fb-merge/src/conv/CMakeLists.txt
===================================================================
--- brlcad/branches/dm-fb-merge/src/conv/CMakeLists.txt 2020-06-09 02:48:56 UTC
(rev 76084)
+++ brlcad/branches/dm-fb-merge/src/conv/CMakeLists.txt 2020-06-09 02:51:39 UTC
(rev 76085)
@@ -57,8 +57,10 @@
BRLCAD_ADDEXEC(g-dot g-dot.c "libged;libbu")
BRLCAD_ADDEXEC(g-dxf dxf/g-dxf.c "librt;libgcv;libnmg;libbu")
+add_dependencies(g-dxf libgcv_plugins)
-BRLCAD_ADDEXEC(g-egg g-egg.c "libwdb;librt;libgcv;libnmg")
+BRLCAD_ADDEXEC(g-egg g-egg.c "libwdb;libgcv;libnmg")
+add_dependencies(g-egg libgcv_plugins)
BRLCAD_ADDEXEC(g-nff g-nff.c "libwdb;libnmg;${M_LIBRARY}")
Modified: brlcad/branches/dm-fb-merge/src/conv/dxf/g-dxf.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/conv/dxf/g-dxf.c 2020-06-09 02:48:56 UTC
(rev 76084)
+++ brlcad/branches/dm-fb-merge/src/conv/dxf/g-dxf.c 2020-06-09 02:51:39 UTC
(rev 76085)
@@ -366,7 +366,7 @@
}
-static struct rt_region_end_data gcvwriter = {nmg_to_dxf, NULL};
+static struct gcv_region_end_data gcvwriter = {nmg_to_dxf, NULL};
/**
@@ -378,7 +378,7 @@
* 4. db_walk_tree (get_layer) for layer names only
* 5. Initialize tree_state
* 6. Initialize model (nmg)\
- * 7. db_walk_tree (rt_region_end)
+ * 7. db_walk_tree (gcv_region_end)
* 8. Cleanup
*/
int
@@ -532,9 +532,9 @@
1, /* ncpu */
&tree_state,
0, /* take all regions */
- rt_region_end,
+ gcv_region_end,
nmg_booltree_leaf_tess,
- (void *)&gcvwriter); /* callback for rt_region_end */
+ (void *)&gcvwriter); /* callback for gcv_region_end
*/
percent = 0;
if (regions_tried>0) {
Modified: brlcad/branches/dm-fb-merge/src/conv/g-egg.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/conv/g-egg.c 2020-06-09 02:48:56 UTC
(rev 76084)
+++ brlcad/branches/dm-fb-merge/src/conv/g-egg.c 2020-06-09 02:51:39 UTC
(rev 76085)
@@ -38,6 +38,8 @@
#include <string.h>
#include "bio.h"
+#include "gcv.h"
+
/* interface headers */
#include "bu/app.h"
#include "bu/getopt.h"
@@ -44,7 +46,6 @@
#include "vmath.h"
#include "nmg.h"
#include "rt/geom.h"
-#include "rt/tree.h"
#include "raytrace.h"
#include "gcv.h"
@@ -191,7 +192,7 @@
int i, use_mc = 0, use_bottess = 0;
struct egg_conv_data conv_data;
- struct rt_region_end_data gcvwriter = {nmg_to_egg, NULL};
+ struct gcv_region_end_data gcvwriter = {nmg_to_egg, NULL};
gcvwriter.client_data = (void *)&conv_data;
@@ -326,7 +327,7 @@
ncpu, /* ncpu */
&tree_state, /* state */
NULL, /* start func */
-
use_mc?rt_region_end_mc:use_bottess?gcv_bottess_region_end:rt_region_end, /*
end func */
+
use_mc?gcv_region_end_mc:use_bottess?gcv_bottess_region_end:gcv_region_end, /*
end func */
use_mc?NULL:nmg_booltree_leaf_tess, /* leaf func */
(void *)&gcvwriter); /* client_data */
fprintf(conv_data.fp, "}\n");
Modified: brlcad/branches/dm-fb-merge/src/conv/raw/g-raw.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/conv/raw/g-raw.c 2020-06-09 02:48:56 UTC
(rev 76084)
+++ brlcad/branches/dm-fb-merge/src/conv/raw/g-raw.c 2020-06-09 02:51:39 UTC
(rev 76085)
@@ -44,7 +44,6 @@
#include "vmath.h"
#include "nmg.h"
#include "rt/geom.h"
-#include "rt/tree.h"
#include "raytrace.h"
#include "gcv.h"
@@ -211,7 +210,7 @@
}
-static struct rt_region_end_data gcvwriter = {nmg_to_raw, NULL};
+static struct gcv_region_end_data gcvwriter = {nmg_to_raw, NULL};
int
@@ -350,7 +349,7 @@
1,
&tree_state,
0, /* take all regions */
- use_mc?rt_region_end_mc:rt_region_end,
+ use_mc?gcv_region_end_mc:gcv_region_end,
use_mc?NULL:nmg_booltree_leaf_tess,
(void *)&gcvwriter);
Modified: brlcad/branches/dm-fb-merge/src/conv/stl/g-stl.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/conv/stl/g-stl.c 2020-06-09 02:48:56 UTC
(rev 76084)
+++ brlcad/branches/dm-fb-merge/src/conv/stl/g-stl.c 2020-06-09 02:51:39 UTC
(rev 76085)
@@ -44,7 +44,6 @@
#include "vmath.h"
#include "nmg.h"
#include "rt/geom.h"
-#include "rt/tree.h"
#include "raytrace.h"
#include "gcv.h"
@@ -302,7 +301,7 @@
}
-static struct rt_region_end_data gcvwriter = {nmg_to_stl, NULL};
+static struct gcv_region_end_data gcvwriter = {nmg_to_stl, NULL};
int
@@ -475,7 +474,7 @@
1,
&tree_state,
0, /* take all regions */
- use_mc?rt_region_end_mc:rt_region_end,
+ use_mc?gcv_region_end_mc:gcv_region_end,
use_mc?NULL:nmg_booltree_leaf_tess,
(void *)&gcvwriter);
Modified: brlcad/branches/dm-fb-merge/src/libgcv/CMakeLists.txt
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/CMakeLists.txt 2020-06-09
02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/CMakeLists.txt 2020-06-09
02:51:39 UTC (rev 76085)
@@ -21,6 +21,8 @@
bottess.c
facetize.c
gcv.c
+ region_end.c
+ region_end_mc.c
tri_intersect.c
)
@@ -31,9 +33,6 @@
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}\"")
-# Make sure anyone building the library builds the plugins
-add_dependencies(libgcv libgcv_plugins)
-
enable_testing()
BRLCAD_ADDEXEC(test_bottess test_bottess.c libgcv NO_INSTALL)
if(HIDE_INTERNAL_SYMBOLS)
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/CMakeLists.txt
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/CMakeLists.txt
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/CMakeLists.txt
2020-06-09 02:51:39 UTC (rev 76085)
@@ -4,7 +4,7 @@
function(LIBGCV_ADD_PLUGIN plugin_name sources libs)
set(target_name libgcv_${plugin_name})
- BRLCAD_ADDLIB(${target_name} "${sources}" "${libs}" SHARED NO_INSTALL FOLDER
"LibGCV Plugins")
+ BRLCAD_ADDLIB(${target_name} "${sources}" "libgcv;${libs}" SHARED NO_INSTALL
FOLDER "LibGCV Plugins")
target_include_directories(${target_name} PRIVATE "${GCV_INCLUDE_DIRS}")
set(DIR_TYPES LIBRARY RUNTIME ARCHIVE)
@@ -27,15 +27,6 @@
endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
endif(NOT CMAKE_CONFIGURATION_TYPES)
- # We're using GCV_EXPORT for these plugins, so we need to set the
DLL_EXPORTS accordingly
- if(HIDE_INTERNAL_SYMBOLS)
- set_property(TARGET ${target_name} APPEND PROPERTY COMPILE_DEFINITIONS
"GCV_DLL_EXPORTS")
- set_property(TARGET ${target_name} APPEND PROPERTY
INTERFACE_COMPILE_DEFINITIONS "GCV_DLL_EXPORTS")
- if (TARGET ${target_name}-obj)
- set_property(TARGET ${target_name}-obj APPEND PROPERTY
COMPILE_DEFINITIONS "GCV_DLL_EXPORTS")
- endif (TARGET ${target_name}-obj)
- endif(HIDE_INTERNAL_SYMBOLS)
-
install(TARGETS ${target_name}
RUNTIME DESTINATION ${BIN_DIR}/${LIBGCV_PLUGINS_DIRECTORY}
LIBRARY DESTINATION ${LIB_DIR}/${LIBGCV_PLUGINS_DIRECTORY}
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/decimate/decimate.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/decimate/decimate.c
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/decimate/decimate.c
2020-06-09 02:51:39 UTC (rev 76085)
@@ -101,7 +101,7 @@
static const struct gcv_filter * const filters[] = {&gcv_filter_decimate,
NULL};
const struct gcv_plugin gcv_plugin_info_s = {filters};
-GCV_EXPORT const struct gcv_plugin *
+COMPILER_DLLEXPORT const struct gcv_plugin *
gcv_plugin_info(){ return &gcv_plugin_info_s; }
/*
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/fastgen4/CMakeLists.txt
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/fastgen4/CMakeLists.txt
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/fastgen4/CMakeLists.txt
2020-06-09 02:51:39 UTC (rev 76085)
@@ -1,4 +1,4 @@
-LIBGCV_ADD_PLUGIN(fastgen4 "fastgen4_read.c;fastgen4_write.cpp"
"libwdb;librt;libbu")
+LIBGCV_ADD_PLUGIN(fastgen4 "fastgen4_read.c;fastgen4_write.cpp" "librt;libbu")
CMAKEFILES(NOTES)
CMAKEFILES(CMakeLists.txt)
Modified:
brlcad/branches/dm-fb-merge/src/libgcv/plugins/fastgen4/fastgen4_read.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/fastgen4/fastgen4_read.c
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/fastgen4/fastgen4_read.c
2020-06-09 02:51:39 UTC (rev 76085)
@@ -2988,7 +2988,7 @@
const struct gcv_plugin gcv_plugin_info_s = { filters };
-GCV_EXPORT const struct gcv_plugin *
+COMPILER_DLLEXPORT const struct gcv_plugin *
gcv_plugin_info(){ return &gcv_plugin_info_s; }
/*
Modified:
brlcad/branches/dm-fb-merge/src/libgcv/plugins/fastgen4/fastgen4_write.cpp
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/fastgen4/fastgen4_write.cpp
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/fastgen4/fastgen4_write.cpp
2020-06-09 02:51:39 UTC (rev 76085)
@@ -2522,8 +2522,8 @@
if (tree_state->ts_mater.ma_color_valid)
section.set_color(color_from_floats(tree_state->ts_mater.ma_color));
- rt_region_end_data gcv_data = {write_nmg_region, &data};
- return rt_region_end(tree_state, path, current_tree, &gcv_data);
+ gcv_region_end_data gcv_data = {write_nmg_region, &data};
+ return gcv_region_end(tree_state, path, current_tree, &gcv_data);
}
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/gdal/CMakeLists.txt
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/gdal/CMakeLists.txt
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/gdal/CMakeLists.txt
2020-06-09 02:51:39 UTC (rev 76085)
@@ -1,6 +1,6 @@
if(GDAL_LIBRARY AND GDAL_INCLUDE_DIR)
include_directories(SYSTEM ${GDAL_INCLUDE_DIR})
- LIBGCV_ADD_PLUGIN(gdal "gdal.cpp" "libwdb;librt;libbu;${GDAL_LIBRARY}")
+ LIBGCV_ADD_PLUGIN(gdal "gdal.cpp" "librt;libbu;${GDAL_LIBRARY}")
endif(GDAL_LIBRARY AND GDAL_INCLUDE_DIR)
CMAKEFILES(gdal.cpp)
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/gdal/gdal.cpp
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/gdal/gdal.cpp
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/gdal/gdal.cpp
2020-06-09 02:51:39 UTC (rev 76085)
@@ -483,7 +483,7 @@
static const struct gcv_filter * const filters[] = {&gcv_conv_gdal_read,
NULL};
const struct gcv_plugin gcv_plugin_info_s = { filters };
- GCV_EXPORT const struct gcv_plugin *gcv_plugin_info(){return
&gcv_plugin_info_s;}
+ COMPILER_DLLEXPORT const struct gcv_plugin *gcv_plugin_info(){return
&gcv_plugin_info_s;}
}
// Local Variables:
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/obj/CMakeLists.txt
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/obj/CMakeLists.txt
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/obj/CMakeLists.txt
2020-06-09 02:51:39 UTC (rev 76085)
@@ -12,7 +12,7 @@
${CMAKE_CURRENT_BINARY_DIR}/wfobj
)
-LIBGCV_ADD_PLUGIN(obj "obj_read.c;obj_write.c;tri_face.c"
"libwdb;librt;libwfobj")
+LIBGCV_ADD_PLUGIN(obj "obj_read.c;obj_write.c;tri_face.c" "librt;libwfobj")
set(obj_ignore_files
CMakeLists.txt
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/obj/obj_read.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/obj/obj_read.c
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/obj/obj_read.c
2020-06-09 02:51:39 UTC (rev 76085)
@@ -3614,7 +3614,7 @@
const struct gcv_plugin gcv_plugin_info_s = { filters };
-GCV_EXPORT const struct gcv_plugin *
+COMPILER_DLLEXPORT const struct gcv_plugin *
gcv_plugin_info(){ return &gcv_plugin_info_s; }
/*
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/rhino/rhino_read.cpp
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/rhino/rhino_read.cpp
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/rhino/rhino_read.cpp
2020-06-09 02:51:39 UTC (rev 76085)
@@ -993,7 +993,7 @@
extern "C"
{
extern const gcv_plugin gcv_plugin_info_s = {rhino_read::filters};
- GCV_EXPORT const struct gcv_plugin *
+ COMPILER_DLLEXPORT const struct gcv_plugin *
gcv_plugin_info()
{
return &gcv_plugin_info_s;
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/stl/CMakeLists.txt
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/stl/CMakeLists.txt
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/stl/CMakeLists.txt
2020-06-09 02:51:39 UTC (rev 76085)
@@ -1,2 +1,2 @@
-LIBGCV_ADD_PLUGIN(stl "stl_read.c;stl_write.c" "libwdb;librt")
+LIBGCV_ADD_PLUGIN(stl "stl_read.c;stl_write.c" "librt")
CMAKEFILES(CMakeLists.txt)
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/stl/stl_read.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/stl/stl_read.c
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/stl/stl_read.c
2020-06-09 02:51:39 UTC (rev 76085)
@@ -670,7 +670,7 @@
const struct gcv_plugin gcv_plugin_info_s = { filters };
-GCV_EXPORT const struct gcv_plugin *
+COMPILER_DLLEXPORT const struct gcv_plugin *
gcv_plugin_info(){ return &gcv_plugin_info_s; }
/*
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/stl/stl_write.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/stl/stl_write.c
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/stl/stl_write.c
2020-06-09 02:51:39 UTC (rev 76085)
@@ -350,7 +350,7 @@
double percent;
struct db_tree_state tree_state;
struct conversion_state state;
- struct rt_region_end_data gcvwriter;
+ struct gcv_region_end_data gcvwriter;
gcvwriter.write_region = nmg_to_stl;
gcvwriter.client_data = &state;
@@ -414,7 +414,7 @@
1,
&tree_state,
0, /* take all regions */
- (gcv_options->tessellation_algorithm ==
GCV_TESS_MARCHING_CUBES)?rt_region_end_mc:rt_region_end,
+ (gcv_options->tessellation_algorithm ==
GCV_TESS_MARCHING_CUBES)?gcv_region_end_mc:gcv_region_end,
(gcv_options->tessellation_algorithm ==
GCV_TESS_MARCHING_CUBES)?NULL:nmg_booltree_leaf_tess,
(void *)&gcvwriter);
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/vrml/CMakeLists.txt
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/vrml/CMakeLists.txt
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/vrml/CMakeLists.txt
2020-06-09 02:51:39 UTC (rev 76085)
@@ -10,7 +10,7 @@
)
-LIBGCV_ADD_PLUGIN(vrml "${LIBGCV_VRML_SOURCES}" "libwdb;librt;libbn;libbu")
+LIBGCV_ADD_PLUGIN(vrml "${LIBGCV_VRML_SOURCES}" "librt;libbn;libbu")
CMAKEFILES(
CMakeLists.txt
Modified: brlcad/branches/dm-fb-merge/src/libgcv/plugins/vrml/vrml_write.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/plugins/vrml/vrml_write.c
2020-06-09 02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/libgcv/plugins/vrml/vrml_write.c
2020-06-09 02:51:39 UTC (rev 76085)
@@ -1386,7 +1386,7 @@
const struct gcv_plugin gcv_plugin_info_s = { filters };
-GCV_EXPORT const struct gcv_plugin *
+COMPILER_DLLEXPORT const struct gcv_plugin *
gcv_plugin_info(){ return &gcv_plugin_info_s; }
/*
Copied: brlcad/branches/dm-fb-merge/src/libgcv/region_end.c (from rev 76084,
brlcad/trunk/src/libgcv/region_end.c)
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/region_end.c
(rev 0)
+++ brlcad/branches/dm-fb-merge/src/libgcv/region_end.c 2020-06-09 02:51:39 UTC
(rev 76085)
@@ -0,0 +1,216 @@
+/* R E G I O N _ E N D . C
+ * BRL-CAD
+ *
+ * Copyright (c) 2008-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/region_end.c
+ *
+ * Routines to process regions during a db_walk_tree.
+ *
+ */
+
+#include "common.h"
+
+#include "bu/parallel.h"
+#include "rt/wdb.h"
+#include "rt/global.h"
+#include "gcv.h"
+
+
+union tree *
+_gcv_cleanup(int state, union tree *tp)
+{
+ /* restore previous debug state */
+ nmg_debug = state;
+
+ /* Dispose of original tree, so that all associated dynamic memory
+ * is released now, not at the end of all regions. A return of
+ * TREE_NULL from this routine signals an error, and there is no
+ * point to adding _another_ message to our output, so we need to
+ * cons up an OP_NOP node to return.
+ */
+ db_free_tree(tp, &rt_uniresource); /* Does an nmg_kr() */
+
+ BU_ALLOC(tp, union tree);
+ RT_TREE_INIT(tp);
+ tp->tr_op = OP_NOP;
+ return tp;
+}
+
+
+union tree *
+gcv_region_end(struct db_tree_state *tsp, const struct db_full_path *pathp,
union tree *curtree, void *client_data)
+{
+ union tree *tp = NULL;
+ union tree *ret_tree = NULL;
+ struct nmgregion *r = NULL;
+ struct shell *s = NULL;
+ struct bu_list vhead;
+
+ int empty_region = 0;
+ int empty_model = 0;
+ int NMG_debug_state = 0;
+
+ struct gcv_region_end_data *data = (struct gcv_region_end_data
*)client_data;
+
+ if (!tsp || !curtree || !pathp || !client_data) {
+ bu_log("INTERNAL ERROR: gcv_region_end missing parameters\n");
+ return TREE_NULL;
+ }
+
+ if (!data->write_region) {
+ bu_log("INTERNAL ERROR: gcv_region_end missing conversion callback
function\n");
+ return TREE_NULL;
+ }
+
+ RT_CK_FULL_PATH(pathp);
+ RT_CK_TREE(curtree);
+ BG_CK_TESS_TOL(tsp->ts_ttol);
+ BN_CK_TOL(tsp->ts_tol);
+ NMG_CK_MODEL(*tsp->ts_m);
+
+ BU_LIST_INIT(&vhead);
+
+ if (curtree->tr_op == OP_NOP)
+ return curtree;
+
+ /* get a copy to play with as the parameters might get clobbered
+ * by a longjmp. FIXME: db_dup_subtree() doesn't create real copies
+ */
+ tp = db_dup_subtree(curtree, &rt_uniresource);
+
+ /* FIXME: we can't free curtree until we get a "real" copy form
+ * db_dup_subtree(). right now we get a fake copy just so we can
+ * keep the compiler quiet about clobbering curtree during longjmp
+ */
+ /* db_free_tree(curtree, &rt_uniresource); */
+
+ /* Sometimes the NMG library adds debugging bits when it detects
+ * an internal error, before bombing. Stash.
+ */
+ NMG_debug_state = nmg_debug;
+
+ if (!BU_SETJUMP) {
+ /* try */
+ /* perform boolean evaluation on the NMG, presently modifies
+ * curtree to an evaluated result and returns it if the evaluation
+ * is successful.
+ */
+ ret_tree = nmg_booltree_evaluate(tp, &RTG.rtg_vlfree, tsp->ts_tol,
&rt_uniresource);
+ } else {
+ /* catch */
+ /* Error, bail out */
+ char *sofar;
+
+ /* Relinquish bomb protection */
+ BU_UNSETJUMP;
+
+ sofar = db_path_to_string(pathp);
+ bu_log("FAILED in boolean evaluation: %s\n", sofar);
+ bu_free((char *)sofar, "sofar");
+
+ /* Release any intersector 2d tables */
+ nmg_isect2d_final_cleanup();
+
+ /* Get rid of (m)any other intermediate structures */
+ if ((*tsp->ts_m)->magic == NMG_MODEL_MAGIC)
+ nmg_km(*tsp->ts_m);
+ else
+ bu_log("WARNING: tsp->ts_m pointer corrupted, ignoring it.\n");
+
+ /* Now, make a new, clean model structure for next pass. */
+ *tsp->ts_m = nmg_mm();
+
+ return _gcv_cleanup(NMG_debug_state, tp);
+ } BU_UNSETJUMP; /* Relinquish bomb protection */
+
+ r = (struct nmgregion *)NULL;
+ if (ret_tree)
+ r = ret_tree->tr_d.td_r;
+
+ if (r == (struct nmgregion *)NULL)
+ return _gcv_cleanup(NMG_debug_state, tp);
+
+ /* Kill cracks */
+ s = BU_LIST_FIRST(shell, &r->s_hd);
+ while (BU_LIST_NOT_HEAD(&s->l, &r->s_hd)) {
+ struct shell *next_s;
+
+ next_s = BU_LIST_PNEXT(shell, &s->l);
+ if (nmg_kill_cracks(s)) {
+ if (nmg_ks(s)) {
+ empty_region = 1;
+ break;
+ }
+ }
+ s = next_s;
+ }
+ if (empty_region)
+ return _gcv_cleanup(NMG_debug_state, tp);
+
+ /* kill zero length edgeuses */
+ empty_model = nmg_kill_zero_length_edgeuses(*tsp->ts_m);
+ if (empty_model)
+ return _gcv_cleanup(NMG_debug_state, tp);
+
+ if (BU_SETJUMP) {
+ /* Error, bail out */
+ char *sofar;
+
+ /* Relinquish bomb protection */
+ BU_UNSETJUMP;
+
+ sofar = db_path_to_string(pathp);
+ bu_log("FAILED in triangulator: %s\n", sofar);
+ bu_free((char *)sofar, "sofar");
+
+ /* Release any intersector 2d tables */
+ nmg_isect2d_final_cleanup();
+
+ /* Get rid of (m)any other intermediate structures */
+ if ((*tsp->ts_m)->magic == NMG_MODEL_MAGIC)
+ nmg_km(*tsp->ts_m);
+ else
+ bu_log("WARNING: tsp->ts_m pointer corrupted, ignoring it.\n");
+
+ /* Now, make a new, clean model structure for next pass. */
+ *tsp->ts_m = nmg_mm();
+ nmg_kr(r);
+
+ return _gcv_cleanup(NMG_debug_state, tp);
+ } else {
+
+ /* Write the region out */
+ data->write_region(r, pathp, tsp->ts_regionid, tsp->ts_gmater,
tsp->ts_mater.ma_color, data->client_data);
+
+ } BU_UNSETJUMP; /* Relinquish bomb protection */
+
+ nmg_kr(r);
+
+ return _gcv_cleanup(NMG_debug_state, tp);
+}
+
+
+/*
+ * Local Variables:
+ * tab-width: 8
+ * mode: C
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */
Copied: brlcad/branches/dm-fb-merge/src/libgcv/region_end_mc.c (from rev 76084,
brlcad/trunk/src/libgcv/region_end_mc.c)
===================================================================
--- brlcad/branches/dm-fb-merge/src/libgcv/region_end_mc.c
(rev 0)
+++ brlcad/branches/dm-fb-merge/src/libgcv/region_end_mc.c 2020-06-09
02:51:39 UTC (rev 76085)
@@ -0,0 +1,190 @@
+/* R E G I O N _ E N D _ M C . C
+ * BRL-CAD
+ *
+ * Copyright (c) 2008-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/region_end.c
+ *
+ * Routines to process regions during a db_walk_tree using the marching cubes
+ * algorithm.
+ *
+ */
+
+#include "common.h"
+
+#include "bu/parallel.h"
+#include "rt/rt_instance.h"
+#include "gcv.h"
+
+
+/* in region_end.c */
+union tree * _gcv_cleanup(int state, union tree *tp);
+
+union tree *
+gcv_region_end_mc(struct db_tree_state *tsp, const struct db_full_path *pathp,
union tree *curtree, void *client_data)
+{
+ union tree *tp = NULL;
+ struct model *m = NULL;
+ struct nmgregion *r = NULL;
+ struct shell *s = NULL;
+ struct bu_list vhead;
+
+ int empty_region = 0;
+ int empty_model = 0;
+ int NMG_debug_state = 0;
+ int count = 0;
+
+ struct gcv_region_end_data *data = (struct gcv_region_end_data
*)client_data;
+
+ if (!tsp || !pathp || !client_data) {
+ bu_log("INTERNAL ERROR: gcv_region_end_mc missing parameters\n");
+ return TREE_NULL;
+ }
+
+ if (!data->write_region) {
+ bu_log("INTERNAL ERROR: gcv_region_end missing conversion callback
function\n");
+ return TREE_NULL;
+ }
+
+ RT_CK_FULL_PATH(pathp);
+ RT_CK_TREE(curtree);
+ BG_CK_TESS_TOL(tsp->ts_ttol);
+ BN_CK_TOL(tsp->ts_tol);
+ NMG_CK_MODEL(*tsp->ts_m);
+
+ BU_LIST_INIT(&vhead);
+
+ /*
+ if (curtree->tr_op == OP_NOP)
+ return 0;
+ */
+
+
+ /* get a copy to play with as the parameters might get clobbered
+ * by a longjmp. FIXME: db_dup_subtree() doesn't create real copies
+ */
+ tp = db_dup_subtree(curtree, &rt_uniresource);
+
+ /* FIXME: we can't free curtree until we get a "real" copy form
+ * db_dup_subtree(). right now we get a fake copy just so we can
+ * keep the compiler quiet about clobbering curtree during longjmp
+ */
+ /* db_free_tree(curtree, &rt_uniresource); */
+
+ /* Sometimes the NMG library adds debugging bits when it detects
+ * an internal error, before bombing. Stash.
+ */
+ NMG_debug_state = nmg_debug;
+
+ m = nmg_mmr();
+ r = nmg_mrsv(m);
+ s = BU_LIST_FIRST(shell, &r->s_hd);
+
+ if (tsp->ts_rtip == NULL)
+ tsp->ts_rtip = rt_new_rti(tsp->ts_dbip);
+
+ count += nmg_mc_evaluate (s, tsp->ts_rtip, pathp, tsp->ts_ttol,
tsp->ts_tol);
+
+ /* empty region? */
+ if (count == 0) {
+ char *str_path = db_path_to_string(pathp);
+ bu_log("Region %s appears to be empty.\n", str_path);
+ bu_free(str_path, "str_path");
+ return TREE_NULL;
+ }
+
+ /*
+ bu_log("Target is shot, %d triangles seen.\n", count);
+
+ bu_log("Fusing\n"); fflush(stdout);
+ nmg_model_fuse(m, tsp->ts_tol);
+ bu_log("Done\n"); fflush(stdout);
+ */
+
+ /* Kill cracks */
+ while (BU_LIST_NOT_HEAD(&s->l, &r->s_hd)) {
+ struct shell *next_s;
+
+ next_s = BU_LIST_PNEXT(shell, &s->l);
+ if (nmg_kill_cracks(s)) {
+ if (nmg_ks(s)) {
+ empty_region = 1;
+ break;
+ }
+ }
+ /*
+ nmg_shell_coplanar_face_merge(s, tsp->ts_tol, 42);
+ */
+ s = next_s;
+ }
+ if (empty_region)
+ return _gcv_cleanup(NMG_debug_state, tp);
+
+ /* kill zero length edgeuses */
+ empty_model = nmg_kill_zero_length_edgeuses(*tsp->ts_m);
+ if (empty_model)
+ return _gcv_cleanup(NMG_debug_state, tp);
+
+ if (!BU_SETJUMP) {
+ /* try */
+ /* Write the region out */
+ data->write_region(r, pathp, tsp->ts_regionid, tsp->ts_gmater,
tsp->ts_mater.ma_color, data->client_data);
+ } else {
+ /* catch */
+ /* Error, bail out */
+ char *sofar;
+
+ /* Relinquish bomb protection */
+ BU_UNSETJUMP;
+
+ sofar = db_path_to_string(pathp);
+ bu_log("FAILED in triangulator: %s\n", sofar);
+ bu_free((char *)sofar, "sofar");
+
+ /* Release any intersector 2d tables */
+ nmg_isect2d_final_cleanup();
+
+ /* Get rid of (m)any other intermediate structures */
+ if ((*tsp->ts_m)->magic == NMG_MODEL_MAGIC)
+ nmg_km(*tsp->ts_m);
+ else
+ bu_log("WARNING: tsp->ts_m pointer corrupted, ignoring it.\n");
+
+ /* Now, make a new, clean model structure for next pass. */
+ *tsp->ts_m = nmg_mm();
+ nmg_kr(r);
+
+ return _gcv_cleanup(NMG_debug_state, tp);
+
+ } BU_UNSETJUMP; /* Relinquish bomb protection */
+
+ nmg_kr(r);
+
+ return _gcv_cleanup(NMG_debug_state, tp);
+}
+
+
+/*
+ * Local Variables:
+ * tab-width: 8
+ * mode: C
+ * indent-tabs-mode: t
+ * c-file-style: "stroustrup"
+ * End:
+ * ex: shiftwidth=4 tabstop=8
+ */
Modified: brlcad/branches/dm-fb-merge/src/librt/CMakeLists.txt
===================================================================
--- brlcad/branches/dm-fb-merge/src/librt/CMakeLists.txt 2020-06-09
02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/librt/CMakeLists.txt 2020-06-09
02:51:39 UTC (rev 76085)
@@ -211,8 +211,6 @@
primitives/xxx/xxx.c
reduce.c
reduce_db.cpp
- region_end.c
- region_end_mc.c
regionfix.c
roots.c
search.c
Deleted: brlcad/branches/dm-fb-merge/src/librt/region_end.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/librt/region_end.c 2020-06-09 02:48:56 UTC
(rev 76084)
+++ brlcad/branches/dm-fb-merge/src/librt/region_end.c 2020-06-09 02:51:39 UTC
(rev 76085)
@@ -1,216 +0,0 @@
-/* R E G I O N _ E N D . C
- * BRL-CAD
- *
- * Copyright (c) 2008-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/region_end.c
- *
- * Routines to process regions during a db_walk_tree.
- *
- */
-
-#include "common.h"
-
-#include "bu/parallel.h"
-#include "rt/wdb.h"
-#include "rt/global.h"
-#include "gcv.h"
-
-
-static union tree *
-_rt_region_end_cleanup(int state, union tree *tp)
-{
- /* restore previous debug state */
- nmg_debug = state;
-
- /* Dispose of original tree, so that all associated dynamic memory
- * is released now, not at the end of all regions. A return of
- * TREE_NULL from this routine signals an error, and there is no
- * point to adding _another_ message to our output, so we need to
- * cons up an OP_NOP node to return.
- */
- db_free_tree(tp, &rt_uniresource); /* Does an nmg_kr() */
-
- BU_ALLOC(tp, union tree);
- RT_TREE_INIT(tp);
- tp->tr_op = OP_NOP;
- return tp;
-}
-
-
-union tree *
-rt_region_end(struct db_tree_state *tsp, const struct db_full_path *pathp,
union tree *curtree, void *client_data)
-{
- union tree *tp = NULL;
- union tree *ret_tree = NULL;
- struct nmgregion *r = NULL;
- struct shell *s = NULL;
- struct bu_list vhead;
-
- int empty_region = 0;
- int empty_model = 0;
- int NMG_debug_state = 0;
-
- struct rt_region_end_data *data = (struct rt_region_end_data *)client_data;
-
- if (!tsp || !curtree || !pathp || !client_data) {
- bu_log("INTERNAL ERROR: rt_region_end_region_end missing parameters\n");
- return TREE_NULL;
- }
-
- if (!data->write_region) {
- bu_log("INTERNAL ERROR: rt_region_end_region_end missing conversion
callback function\n");
- return TREE_NULL;
- }
-
- RT_CK_FULL_PATH(pathp);
- RT_CK_TREE(curtree);
- BG_CK_TESS_TOL(tsp->ts_ttol);
- BN_CK_TOL(tsp->ts_tol);
- NMG_CK_MODEL(*tsp->ts_m);
-
- BU_LIST_INIT(&vhead);
-
- if (curtree->tr_op == OP_NOP)
- return curtree;
-
- /* get a copy to play with as the parameters might get clobbered
- * by a longjmp. FIXME: db_dup_subtree() doesn't create real copies
- */
- tp = db_dup_subtree(curtree, &rt_uniresource);
-
- /* FIXME: we can't free curtree until we get a "real" copy form
- * db_dup_subtree(). right now we get a fake copy just so we can
- * keep the compiler quiet about clobbering curtree during longjmp
- */
- /* db_free_tree(curtree, &rt_uniresource); */
-
- /* Sometimes the NMG library adds debugging bits when it detects
- * an internal error, before bombing. Stash.
- */
- NMG_debug_state = nmg_debug;
-
- if (!BU_SETJUMP) {
- /* try */
- /* perform boolean evaluation on the NMG, presently modifies
- * curtree to an evaluated result and returns it if the evaluation
- * is successful.
- */
- ret_tree = nmg_booltree_evaluate(tp, &RTG.rtg_vlfree, tsp->ts_tol,
&rt_uniresource);
- } else {
- /* catch */
- /* Error, bail out */
- char *sofar;
-
- /* Relinquish bomb protection */
- BU_UNSETJUMP;
-
- sofar = db_path_to_string(pathp);
- bu_log("FAILED in boolean evaluation: %s\n", sofar);
- bu_free((char *)sofar, "sofar");
-
- /* Release any intersector 2d tables */
- nmg_isect2d_final_cleanup();
-
- /* Get rid of (m)any other intermediate structures */
- if ((*tsp->ts_m)->magic == NMG_MODEL_MAGIC)
- nmg_km(*tsp->ts_m);
- else
- bu_log("WARNING: tsp->ts_m pointer corrupted, ignoring it.\n");
-
- /* Now, make a new, clean model structure for next pass. */
- *tsp->ts_m = nmg_mm();
-
- return _rt_region_end_cleanup(NMG_debug_state, tp);
- } BU_UNSETJUMP; /* Relinquish bomb protection */
-
- r = (struct nmgregion *)NULL;
- if (ret_tree)
- r = ret_tree->tr_d.td_r;
-
- if (r == (struct nmgregion *)NULL)
- return _rt_region_end_cleanup(NMG_debug_state, tp);
-
- /* Kill cracks */
- s = BU_LIST_FIRST(shell, &r->s_hd);
- while (BU_LIST_NOT_HEAD(&s->l, &r->s_hd)) {
- struct shell *next_s;
-
- next_s = BU_LIST_PNEXT(shell, &s->l);
- if (nmg_kill_cracks(s)) {
- if (nmg_ks(s)) {
- empty_region = 1;
- break;
- }
- }
- s = next_s;
- }
- if (empty_region)
- return _rt_region_end_cleanup(NMG_debug_state, tp);
-
- /* kill zero length edgeuses */
- empty_model = nmg_kill_zero_length_edgeuses(*tsp->ts_m);
- if (empty_model)
- return _rt_region_end_cleanup(NMG_debug_state, tp);
-
- if (BU_SETJUMP) {
- /* Error, bail out */
- char *sofar;
-
- /* Relinquish bomb protection */
- BU_UNSETJUMP;
-
- sofar = db_path_to_string(pathp);
- bu_log("FAILED in triangulator: %s\n", sofar);
- bu_free((char *)sofar, "sofar");
-
- /* Release any intersector 2d tables */
- nmg_isect2d_final_cleanup();
-
- /* Get rid of (m)any other intermediate structures */
- if ((*tsp->ts_m)->magic == NMG_MODEL_MAGIC)
- nmg_km(*tsp->ts_m);
- else
- bu_log("WARNING: tsp->ts_m pointer corrupted, ignoring it.\n");
-
- /* Now, make a new, clean model structure for next pass. */
- *tsp->ts_m = nmg_mm();
- nmg_kr(r);
-
- return _rt_region_end_cleanup(NMG_debug_state, tp);
- } else {
-
- /* Write the region out */
- data->write_region(r, pathp, tsp->ts_regionid, tsp->ts_gmater,
tsp->ts_mater.ma_color, data->client_data);
-
- } BU_UNSETJUMP; /* Relinquish bomb protection */
-
- nmg_kr(r);
-
- return _rt_region_end_cleanup(NMG_debug_state, tp);
-}
-
-
-/*
- * Local Variables:
- * tab-width: 8
- * mode: C
- * indent-tabs-mode: t
- * c-file-style: "stroustrup"
- * End:
- * ex: shiftwidth=4 tabstop=8
- */
Deleted: brlcad/branches/dm-fb-merge/src/librt/region_end_mc.c
===================================================================
--- brlcad/branches/dm-fb-merge/src/librt/region_end_mc.c 2020-06-09
02:48:56 UTC (rev 76084)
+++ brlcad/branches/dm-fb-merge/src/librt/region_end_mc.c 2020-06-09
02:51:39 UTC (rev 76085)
@@ -1,206 +0,0 @@
-/* R E G I O N _ E N D _ M C . C
- * BRL-CAD
- *
- * Copyright (c) 2008-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 librt/region_end.c
- *
- * Routines to process regions during a db_walk_tree using the marching cubes
- * algorithm.
- *
- */
-
-#include "common.h"
-
-#include "bu/parallel.h"
-#include "rt/rt_instance.h"
-#include "rt/tree.h"
-
-static union tree *
-_rt_cleanup(int state, union tree *tp)
-{
- /* restore previous debug state */
- nmg_debug = state;
-
- /* Dispose of original tree, so that all associated dynamic memory
- * is released now, not at the end of all regions. A return of
- * TREE_NULL from this routine signals an error, and there is no
- * point to adding _another_ message to our output, so we need to
- * cons up an OP_NOP node to return.
- */
- db_free_tree(tp, &rt_uniresource); /* Does an nmg_kr() */
-
- BU_ALLOC(tp, union tree);
- RT_TREE_INIT(tp);
- tp->tr_op = OP_NOP;
- return tp;
-}
-
-union tree *
-rt_region_end_mc(struct db_tree_state *tsp, const struct db_full_path *pathp,
union tree *curtree, void *client_data)
-{
- union tree *tp = NULL;
- struct model *m = NULL;
- struct nmgregion *r = NULL;
- struct shell *s = NULL;
- struct bu_list vhead;
-
- int empty_region = 0;
- int empty_model = 0;
- int NMG_debug_state = 0;
- int count = 0;
-
- struct rt_region_end_data *data = (struct rt_region_end_data *)client_data;
-
- if (!tsp || !pathp || !client_data) {
- bu_log("INTERNAL ERROR: rt_region_end_mc missing parameters\n");
- return TREE_NULL;
- }
-
- if (!data->write_region) {
- bu_log("INTERNAL ERROR: rt_region_end missing conversion callback
function\n");
- return TREE_NULL;
- }
-
- RT_CK_FULL_PATH(pathp);
- RT_CK_TREE(curtree);
- BG_CK_TESS_TOL(tsp->ts_ttol);
- BN_CK_TOL(tsp->ts_tol);
- NMG_CK_MODEL(*tsp->ts_m);
-
- BU_LIST_INIT(&vhead);
-
- /*
- if (curtree->tr_op == OP_NOP)
- return 0;
- */
-
-
- /* get a copy to play with as the parameters might get clobbered
- * by a longjmp. FIXME: db_dup_subtree() doesn't create real copies
- */
- tp = db_dup_subtree(curtree, &rt_uniresource);
-
- /* FIXME: we can't free curtree until we get a "real" copy form
- * db_dup_subtree(). right now we get a fake copy just so we can
- * keep the compiler quiet about clobbering curtree during longjmp
- */
- /* db_free_tree(curtree, &rt_uniresource); */
-
- /* Sometimes the NMG library adds debugging bits when it detects
- * an internal error, before bombing. Stash.
- */
- NMG_debug_state = nmg_debug;
-
- m = nmg_mmr();
- r = nmg_mrsv(m);
- s = BU_LIST_FIRST(shell, &r->s_hd);
-
- if (tsp->ts_rtip == NULL)
- tsp->ts_rtip = rt_new_rti(tsp->ts_dbip);
-
- count += nmg_mc_evaluate (s, tsp->ts_rtip, pathp, tsp->ts_ttol,
tsp->ts_tol);
-
- /* empty region? */
- if (count == 0) {
- char *str_path = db_path_to_string(pathp);
- bu_log("Region %s appears to be empty.\n", str_path);
- bu_free(str_path, "str_path");
- return TREE_NULL;
- }
-
- /*
- bu_log("Target is shot, %d triangles seen.\n", count);
-
- bu_log("Fusing\n"); fflush(stdout);
- nmg_model_fuse(m, tsp->ts_tol);
- bu_log("Done\n"); fflush(stdout);
- */
-
- /* Kill cracks */
- while (BU_LIST_NOT_HEAD(&s->l, &r->s_hd)) {
- struct shell *next_s;
-
- next_s = BU_LIST_PNEXT(shell, &s->l);
- if (nmg_kill_cracks(s)) {
- if (nmg_ks(s)) {
- empty_region = 1;
- break;
- }
- }
- /*
- nmg_shell_coplanar_face_merge(s, tsp->ts_tol, 42);
- */
- s = next_s;
- }
- if (empty_region)
- return _rt_cleanup(NMG_debug_state, tp);
-
- /* kill zero length edgeuses */
- empty_model = nmg_kill_zero_length_edgeuses(*tsp->ts_m);
- if (empty_model)
- return _rt_cleanup(NMG_debug_state, tp);
-
- if (!BU_SETJUMP) {
- /* try */
- /* Write the region out */
- data->write_region(r, pathp, tsp->ts_regionid, tsp->ts_gmater,
tsp->ts_mater.ma_color, data->client_data);
- } else {
- /* catch */
- /* Error, bail out */
- char *sofar;
-
- /* Relinquish bomb protection */
- BU_UNSETJUMP;
-
- sofar = db_path_to_string(pathp);
- bu_log("FAILED in triangulator: %s\n", sofar);
- bu_free((char *)sofar, "sofar");
-
- /* Release any intersector 2d tables */
- nmg_isect2d_final_cleanup();
-
- /* Get rid of (m)any other intermediate structures */
- if ((*tsp->ts_m)->magic == NMG_MODEL_MAGIC)
- nmg_km(*tsp->ts_m);
- else
- bu_log("WARNING: tsp->ts_m pointer corrupted, ignoring it.\n");
-
- /* Now, make a new, clean model structure for next pass. */
- *tsp->ts_m = nmg_mm();
- nmg_kr(r);
-
- return _rt_cleanup(NMG_debug_state, tp);
-
- } BU_UNSETJUMP; /* Relinquish bomb protection */
-
- nmg_kr(r);
-
- return _rt_cleanup(NMG_debug_state, tp);
-}
-
-
-/*
- * Local Variables:
- * tab-width: 8
- * mode: C
- * indent-tabs-mode: t
- * c-file-style: "stroustrup"
- * End:
- * ex: shiftwidth=4 tabstop=8
- */
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