diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/csgterm.cc | 42 | ||||
| -rw-r--r-- | src/dxfdim.cc | 11 | ||||
| -rw-r--r-- | src/handle_dep.cc | 8 | ||||
| -rw-r--r-- | src/import.cc | 4 | ||||
| -rw-r--r-- | src/linalg.h | 4 | 
5 files changed, 49 insertions, 20 deletions
| diff --git a/src/csgterm.cc b/src/csgterm.cc index 0e68320..aed97b2 100644 --- a/src/csgterm.cc +++ b/src/csgterm.cc @@ -66,16 +66,29 @@ shared_ptr<CSGTerm> CSGTerm::createCSGTerm(type_e type, shared_ptr<CSGTerm> left    // http://www.cc.gatech.edu/~turk/my_papers/pxpl_csg.pdf  	const BoundingBox &leftbox = left->getBoundingBox();  	const BoundingBox &rightbox = right->getBoundingBox(); +	Vector3d newmin, newmax;  	if (type == TYPE_INTERSECTION) { -		BoundingBox newbox(leftbox.min().cwise().max(rightbox.min()), -											 leftbox.max().cwise().min(rightbox.max())); +#if EIGEN_WORLD_VERSION == 2 +		newmin = leftbox.min().cwise().max( rightbox.min() ); +		newmax = leftbox.max().cwise().min( rightbox.max() ); +#else +		newmin = leftbox.min().array().cwiseMax( rightbox.min().array() ); +		newmax = leftbox.max().array().cwiseMin( rightbox.max().array() ); +#endif +		BoundingBox newbox( newmin, newmax );  		if (newbox.isNull()) {  			return shared_ptr<CSGTerm>(); // Prune entire product  		}  	}  	else if (type == TYPE_DIFFERENCE) { -		BoundingBox newbox(leftbox.min().cwise().max(rightbox.min()), -											 leftbox.max().cwise().min(rightbox.max())); +#if EIGEN_WORLD_VERSION == 2 +		newmin = leftbox.min().cwise().max( rightbox.min() ); +		newmax = leftbox.max().cwise().min( rightbox.max() ); +#else +		newmin = leftbox.min().array().cwiseMax( rightbox.min().array() ); +		newmax = leftbox.max().array().cwiseMin( rightbox.max().array() ); +#endif +		BoundingBox newbox( newmin, newmax );  		if (newbox.isNull()) {  			return left; // Prune the negative component  		} @@ -119,14 +132,27 @@ void CSGTerm::initBoundingBox()  	else {  		const BoundingBox &leftbox = this->left->getBoundingBox();  		const BoundingBox &rightbox = this->right->getBoundingBox(); +		Vector3d newmin, newmax;  		switch (this->type) {  		case TYPE_UNION: -			this->bbox = this->m * BoundingBox(leftbox.min().cwise().min(rightbox.min()),  -																				 leftbox.max().cwise().max(rightbox.max())); +#if EIGEN_WORLD_VERSION == 2 +			newmin = leftbox.min().cwise().min( rightbox.min() ); +			newmax = leftbox.max().cwise().max( rightbox.max() ); +#else +			newmin = leftbox.min().array().cwiseMin( rightbox.min().array() ); +			newmax = leftbox.max().array().cwiseMax( rightbox.max().array() ); +#endif +			this->bbox = this->m * BoundingBox( newmin, newmax );  			break;  		case TYPE_INTERSECTION: -			this->bbox = this->m * BoundingBox(leftbox.min().cwise().max(rightbox.min()), -																				 leftbox.max().cwise().min(rightbox.max())); +#if EIGEN_WORLD_VERSION == 2 +			newmin = leftbox.min().cwise().max( rightbox.min() ); +			newmax = leftbox.max().cwise().min( rightbox.max() ); +#else +			newmin = leftbox.min().array().cwiseMax( rightbox.min().array() ); +			newmax = leftbox.max().array().cwiseMin( rightbox.max().array() ); +#endif +			this->bbox = this->m * BoundingBox( newmin, newmax );  			break;  		case TYPE_DIFFERENCE:  			this->bbox = this->m * leftbox; diff --git a/src/dxfdim.cc b/src/dxfdim.cc index 8f68ac6..1ed37fa 100644 --- a/src/dxfdim.cc +++ b/src/dxfdim.cc @@ -36,10 +36,9 @@  #include <sstream>  #include <boost/filesystem.hpp> -using namespace boost::filesystem; -  boost::unordered_map<std::string,Value> dxf_dim_cache;  boost::unordered_map<std::string,Value> dxf_cross_cache; +namespace fs = boost::filesystem;  Value builtin_dxf_dim(const Context *ctx, const std::vector<std::string> &argnames, const std::vector<Value> &args)  { @@ -65,8 +64,8 @@ Value builtin_dxf_dim(const Context *ctx, const std::vector<std::string> &argnam  	std::stringstream keystream;  	keystream << filename << "|" << layername << "|" << name << "|" << xorigin -						<< "|" << yorigin <<"|" << scale << "|" << last_write_time(filename) -						<< "|" << file_size(filename); +						<< "|" << yorigin <<"|" << scale << "|" << fs::last_write_time(filename) +						<< "|" << fs::file_size(filename);  	std::string key = keystream.str();  	if (dxf_dim_cache.find(key) != dxf_dim_cache.end())  		return dxf_dim_cache.find(key)->second; @@ -147,8 +146,8 @@ Value builtin_dxf_cross(const Context *ctx, const std::vector<std::string> &argn  	std::stringstream keystream;  	keystream << filename << "|" << layername << "|" << xorigin << "|" << yorigin -						<< "|" << scale << "|" << last_write_time(filename) -						<< "|" << file_size(filename); +						<< "|" << scale << "|" << fs::last_write_time(filename) +						<< "|" << fs::file_size(filename);  	std::string key = keystream.str();  	if (dxf_cross_cache.find(key) != dxf_cross_cache.end()) diff --git a/src/handle_dep.cc b/src/handle_dep.cc index cbf7157..2d6f3ff 100644 --- a/src/handle_dep.cc +++ b/src/handle_dep.cc @@ -6,7 +6,7 @@  #include <boost/foreach.hpp>  #include <boost/regex.hpp>  #include <boost/filesystem.hpp> -using namespace boost::filesystem; +namespace fs = boost::filesystem;  #include "boosty.h"  boost::unordered_set<std::string> dependencies; @@ -14,14 +14,14 @@ const char *make_command = NULL;  void handle_dep(const std::string &filename)  { -	path filepath(filename); +	fs::path filepath(filename);  	if ( boosty::is_absolute( filepath )) {  		dependencies.insert(filename);  	}  	else { -		dependencies.insert((current_path() / filepath).string()); +		dependencies.insert((fs::current_path() / filepath).string());  	} -	if (!exists(filepath) && make_command) { +	if (!fs::exists(filepath) && make_command) {  		std::stringstream buf;  		buf << make_command << " '" << boost::regex_replace(filename, boost::regex("'"), "'\\''") << "'";  		system(buf.str().c_str()); // FIXME: Handle error diff --git a/src/import.cc b/src/import.cc index dc40c8d..1073459 100644 --- a/src/import.cc +++ b/src/import.cc @@ -47,7 +47,7 @@  #include <boost/regex.hpp>  #include <boost/lexical_cast.hpp>  #include <boost/filesystem.hpp> -using namespace boost::filesystem; +namespace fs = boost::filesystem;  #include <boost/assign/std/vector.hpp>  using namespace boost::assign; // bring 'operator+=()' into scope  #include "boosty.h" @@ -80,7 +80,7 @@ AbstractNode *ImportModule::evaluate(const Context *ctx, const ModuleInstantiati  	std::string filename = c.getAbsolutePath(v.isUndefined() ? "" : v.toString());  	import_type_e actualtype = this->type;  	if (actualtype == TYPE_UNKNOWN) { -		std::string extraw = boosty::extension_str( path(filename) ); +		std::string extraw = boosty::extension_str( fs::path(filename) );  		std::string ext = boost::algorithm::to_lower_copy( extraw );  		if (ext == ".stl") actualtype = TYPE_STL;  		else if (ext == ".off") actualtype = TYPE_OFF; diff --git a/src/linalg.h b/src/linalg.h index baff7f1..450e593 100644 --- a/src/linalg.h +++ b/src/linalg.h @@ -12,7 +12,11 @@ typedef Eigen::AlignedBox<double, 3> BoundingBox;  using Eigen::Matrix3f;  using Eigen::Matrix3d;  using Eigen::Matrix4d; +#if EIGEN_WORLD_VERSION >= 3 +#define Transform3d Eigen::Affine3d +#else  using Eigen::Transform3d; +#endif  bool matrix_contains_infinity( const Eigen::Transform3d &m );  bool matrix_contains_nan( const Eigen::Transform3d &m ); | 
