diff options
author | bubnikv <bubnikv@gmail.com> | 2016-10-18 17:44:05 +0300 |
---|---|---|
committer | bubnikv <bubnikv@gmail.com> | 2016-10-18 17:44:05 +0300 |
commit | 53907a9cfee63abf99940bbffe5f1785d151e843 (patch) | |
tree | 3744bcdcbc4dc32e6dff3723786af0b57123beed /xs | |
parent | 26349b30c5ea31a457fcad18e8c8a14353db9582 (diff) |
Fix of a crash when setting a viewport over an empty platter.
Exported bounding box 'empty' method to perl.
Diffstat (limited to 'xs')
-rw-r--r-- | xs/src/libslic3r/BoundingBox.hpp | 4 | ||||
-rw-r--r-- | xs/src/libslic3r/libslic3r.h | 1 | ||||
-rw-r--r-- | xs/xsp/BoundingBox.xsp | 3 |
3 files changed, 6 insertions, 2 deletions
diff --git a/xs/src/libslic3r/BoundingBox.hpp b/xs/src/libslic3r/BoundingBox.hpp index 7746515cb..21c2e384e 100644 --- a/xs/src/libslic3r/BoundingBox.hpp +++ b/xs/src/libslic3r/BoundingBox.hpp @@ -102,13 +102,13 @@ inline bool operator!=(const BoundingBoxBase<VT> &bb1, const BoundingBoxBase<VT> template<typename VT> inline bool empty(const BoundingBoxBase<VT> &bb) { - return bb.min.x > bb.max.x || bb.min.y > bb.max.y; + return ! bb.defined || bb.min.x > bb.max.x || bb.min.y > bb.max.y; } template<typename VT> inline bool empty(const BoundingBox3Base<VT> &bb) { - return bb.min.x > bb.max.x || bb.min.y > bb.max.y || bb.min.z > bb.max.z; + return ! bb.defined || bb.min.x > bb.max.x || bb.min.y > bb.max.y || bb.min.z > bb.max.z; } } // namespace Slic3r diff --git a/xs/src/libslic3r/libslic3r.h b/xs/src/libslic3r/libslic3r.h index e92124536..fb37afcd0 100644 --- a/xs/src/libslic3r/libslic3r.h +++ b/xs/src/libslic3r/libslic3r.h @@ -17,6 +17,7 @@ // Scaling factor for a conversion from coord_t to coordf_t: 10e-6 // This scaling generates a following fixed point representation with for a 32bit integer: // 0..4294mm with 1nm resolution +// int32_t fits an interval of (-2147.48mm, +2147.48mm) #define SCALING_FACTOR 0.000001 // RESOLUTION, SCALED_RESOLUTION: Used as an error threshold for a Douglas-Peucker polyline simplification algorithm. #define RESOLUTION 0.0125 diff --git a/xs/xsp/BoundingBox.xsp b/xs/xsp/BoundingBox.xsp index efb5dea3b..fd07713f2 100644 --- a/xs/xsp/BoundingBox.xsp +++ b/xs/xsp/BoundingBox.xsp @@ -21,6 +21,7 @@ Clone<Polygon> polygon(); Clone<Point> size(); Clone<Point> center(); + bool empty() %code{% RETVAL = empty(*THIS); %}; double radius(); Clone<Point> min_point() %code{% RETVAL = THIS->min; %}; Clone<Point> max_point() %code{% RETVAL = THIS->max; %}; @@ -56,6 +57,7 @@ new_from_points(CLASS, points) Clone<Pointf> size(); Clone<Pointf> center(); double radius(); + bool empty() %code{% RETVAL = empty(*THIS); %}; Clone<Pointf> min_point() %code{% RETVAL = THIS->min; %}; Clone<Pointf> max_point() %code{% RETVAL = THIS->max; %}; double x_min() %code{% RETVAL = THIS->min.x; %}; @@ -94,6 +96,7 @@ new_from_points(CLASS, points) Clone<Pointf3> size(); Clone<Pointf3> center(); double radius(); + bool empty() %code{% RETVAL = empty(*THIS); %}; Clone<Pointf3> min_point() %code{% RETVAL = THIS->min; %}; Clone<Pointf3> max_point() %code{% RETVAL = THIS->max; %}; double x_min() %code{% RETVAL = THIS->min.x; %}; |