Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/xs
diff options
context:
space:
mode:
authorbubnikv <bubnikv@gmail.com>2016-10-18 17:44:05 +0300
committerbubnikv <bubnikv@gmail.com>2016-10-18 17:44:05 +0300
commit53907a9cfee63abf99940bbffe5f1785d151e843 (patch)
tree3744bcdcbc4dc32e6dff3723786af0b57123beed /xs
parent26349b30c5ea31a457fcad18e8c8a14353db9582 (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.hpp4
-rw-r--r--xs/src/libslic3r/libslic3r.h1
-rw-r--r--xs/xsp/BoundingBox.xsp3
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; %};