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
diff options
context:
space:
mode:
authorbubnikv <bubnikv@gmail.com>2018-02-12 20:16:10 +0300
committerbubnikv <bubnikv@gmail.com>2018-02-12 20:16:10 +0300
commit47d904a628ec35a1a0f08ab2ad7bd664cc0c601f (patch)
treece602e1e0f2bdb1f01cf86c0c32f4ab6080b269a
parentadc9e749c4b6d82314a3693555991db19809fd94 (diff)
Changed the Slic3r coordinate type from long to int32 to match
the point type on Windows / Linux / OSX to achieve the same behavior on all the 32 / 64bit systems. (Windows always treats the long as 32bit int, while Linux treats long as a 64bit int).
-rw-r--r--xs/src/admesh/util.cpp6
-rw-r--r--xs/src/libslic3r/Point.hpp20
-rw-r--r--xs/src/libslic3r/libslic3r.h4
-rw-r--r--xs/xsp/BoundingBox.xsp8
-rw-r--r--xs/xsp/BridgeDetector.xsp4
-rw-r--r--xs/xsp/Flow.xsp4
-rw-r--r--xs/xsp/Point.xsp18
7 files changed, 22 insertions, 42 deletions
diff --git a/xs/src/admesh/util.cpp b/xs/src/admesh/util.cpp
index b0c31469d..f3bf59b56 100644
--- a/xs/src/admesh/util.cpp
+++ b/xs/src/admesh/util.cpp
@@ -171,12 +171,11 @@ stl_scale(stl_file *stl, float factor) {
}
static void calculate_normals(stl_file *stl) {
- long i;
float normal[3];
if (stl->error) return;
- for(i = 0; i < stl->stats.number_of_facets; i++) {
+ for(uint32_t i = 0; i < stl->stats.number_of_facets; i++) {
stl_calculate_normal(normal, &stl->facet_start[i]);
stl_normalize_vector(normal);
stl->facet_start[i].normal.x = normal[0];
@@ -381,7 +380,6 @@ stl_mirror_xz(stl_file *stl) {
}
static float get_volume(stl_file *stl) {
- long i;
stl_vertex p0;
stl_vertex p;
stl_normal n;
@@ -396,7 +394,7 @@ static float get_volume(stl_file *stl) {
p0.y = stl->facet_start[0].vertex[0].y;
p0.z = stl->facet_start[0].vertex[0].z;
- for(i = 0; i < stl->stats.number_of_facets; i++) {
+ for(uint32_t i = 0; i < stl->stats.number_of_facets; i++) {
p.x = stl->facet_start[i].vertex[0].x - p0.x;
p.y = stl->facet_start[i].vertex[0].y - p0.y;
p.z = stl->facet_start[i].vertex[0].z - p0.z;
diff --git a/xs/src/libslic3r/Point.hpp b/xs/src/libslic3r/Point.hpp
index 77e07bec8..09c292b5a 100644
--- a/xs/src/libslic3r/Point.hpp
+++ b/xs/src/libslic3r/Point.hpp
@@ -32,8 +32,7 @@ public:
coord_t x;
coord_t y;
Point(coord_t _x = 0, coord_t _y = 0): x(_x), y(_y) {};
- Point(int _x, int _y): x(_x), y(_y) {};
- Point(long long _x, long long _y): x(coord_t(_x)), y(coord_t(_y)) {}; // for Clipper
+ Point(int64_t _x, int64_t _y): x(coord_t(_x)), y(coord_t(_y)) {}; // for Clipper
Point(double x, double y);
static Point new_scale(coordf_t x, coordf_t y) { return Point(coord_t(scale_(x)), coord_t(scale_(y))); }
@@ -272,23 +271,6 @@ template<typename TO> inline TO convert_to(const Pointf3 &src) { return TO(typen
#include <boost/polygon/polygon.hpp>
namespace boost { namespace polygon {
template <>
- struct geometry_concept<coord_t> { typedef coordinate_concept type; };
-
-/* Boost.Polygon already defines a specialization for coordinate_traits<long> as of 1.60:
- https://github.com/boostorg/polygon/commit/0ac7230dd1f8f34cb12b86c8bb121ae86d3d9b97 */
-#if BOOST_VERSION < 106000
- template <>
- struct coordinate_traits<coord_t> {
- typedef coord_t coordinate_type;
- typedef long double area_type;
- typedef long long manhattan_area_type;
- typedef unsigned long long unsigned_area_type;
- typedef long long coordinate_difference;
- typedef long double coordinate_distance;
- };
-#endif
-
- template <>
struct geometry_concept<Slic3r::Point> { typedef point_concept type; };
template <>
diff --git a/xs/src/libslic3r/libslic3r.h b/xs/src/libslic3r/libslic3r.h
index 7c694b05e..e58b01582 100644
--- a/xs/src/libslic3r/libslic3r.h
+++ b/xs/src/libslic3r/libslic3r.h
@@ -17,8 +17,8 @@
#define SLIC3R_VERSION "1.39.0"
#define SLIC3R_BUILD "UNKNOWN"
-typedef long coord_t;
-typedef double coordf_t;
+typedef int32_t coord_t;
+typedef double coordf_t;
//FIXME This epsilon value is used for many non-related purposes:
// For a threshold of a squared Euclidean distance,
diff --git a/xs/xsp/BoundingBox.xsp b/xs/xsp/BoundingBox.xsp
index a326c7501..df8e6baea 100644
--- a/xs/xsp/BoundingBox.xsp
+++ b/xs/xsp/BoundingBox.xsp
@@ -25,10 +25,10 @@
double radius();
Clone<Point> min_point() %code{% RETVAL = THIS->min; %};
Clone<Point> max_point() %code{% RETVAL = THIS->max; %};
- long x_min() %code{% RETVAL = THIS->min.x; %};
- long x_max() %code{% RETVAL = THIS->max.x; %};
- long y_min() %code{% RETVAL = THIS->min.y; %};
- long y_max() %code{% RETVAL = THIS->max.y; %};
+ int x_min() %code{% RETVAL = THIS->min.x; %};
+ int x_max() %code{% RETVAL = THIS->max.x; %};
+ int y_min() %code{% RETVAL = THIS->min.y; %};
+ int y_max() %code{% RETVAL = THIS->max.y; %};
std::string serialize() %code{% char buf[2048]; sprintf(buf, "%ld,%ld;%ld,%ld", THIS->min.x, THIS->min.y, THIS->max.x, THIS->max.y); RETVAL = buf; %};
bool defined() %code{% RETVAL = THIS->defined; %};
diff --git a/xs/xsp/BridgeDetector.xsp b/xs/xsp/BridgeDetector.xsp
index c7ac409df..0039d3579 100644
--- a/xs/xsp/BridgeDetector.xsp
+++ b/xs/xsp/BridgeDetector.xsp
@@ -23,7 +23,7 @@ BridgeDetector*
BridgeDetector::new(expolygon, lower_slices, extrusion_width)
ExPolygon* expolygon;
ExPolygonCollection* lower_slices;
- long extrusion_width;
+ int extrusion_width;
CODE:
RETVAL = new BridgeDetector(*expolygon, *lower_slices, extrusion_width);
OUTPUT:
@@ -33,7 +33,7 @@ BridgeDetector*
BridgeDetector::new_expolygons(expolygons, lower_slices, extrusion_width)
ExPolygonCollection* expolygons;
ExPolygonCollection* lower_slices;
- long extrusion_width;
+ int extrusion_width;
CODE:
RETVAL = new BridgeDetector(expolygons->expolygons, *lower_slices, extrusion_width);
OUTPUT:
diff --git a/xs/xsp/Flow.xsp b/xs/xsp/Flow.xsp
index d9b7a45c0..b57df5e37 100644
--- a/xs/xsp/Flow.xsp
+++ b/xs/xsp/Flow.xsp
@@ -26,8 +26,8 @@
float spacing();
float spacing_to(Flow* other)
%code{% RETVAL = THIS->spacing(*other); %};
- long scaled_width();
- long scaled_spacing();
+ int scaled_width();
+ int scaled_spacing();
double mm3_per_mm();
%{
diff --git a/xs/xsp/Point.xsp b/xs/xsp/Point.xsp
index d0f9260c7..b7aded6a0 100644
--- a/xs/xsp/Point.xsp
+++ b/xs/xsp/Point.xsp
@@ -8,7 +8,7 @@
%}
%name{Slic3r::Point} class Point {
- Point(long _x = 0, long _y = 0);
+ Point(int _x = 0, int _y = 0);
~Point();
Clone<Point> clone()
%code{% RETVAL=THIS; %};
@@ -18,13 +18,13 @@
%code{% RETVAL = to_SV_pureperl(THIS); %};
SV* pp()
%code{% RETVAL = to_SV_pureperl(THIS); %};
- long x()
+ int x()
%code{% RETVAL = THIS->x; %};
- long y()
+ int y()
%code{% RETVAL = THIS->y; %};
- void set_x(long val)
+ void set_x(int val)
%code{% THIS->x = val; %};
- void set_y(long val)
+ void set_y(int val)
%code{% THIS->y = val; %};
int nearest_point_index(Points points);
Clone<Point> nearest_point(Points points)
@@ -77,15 +77,15 @@ Point::coincides_with(point_sv)
};
%name{Slic3r::Point3} class Point3 {
- Point3(long _x = 0, long _y = 0, long _z = 0);
+ Point3(int _x = 0, int _y = 0, int _z = 0);
~Point3();
Clone<Point3> clone()
%code{% RETVAL = THIS; %};
- long x()
+ int x()
%code{% RETVAL = THIS->x; %};
- long y()
+ int y()
%code{% RETVAL = THIS->y; %};
- long z()
+ int z()
%code{% RETVAL = THIS->z; %};
std::string serialize() %code{% char buf[2048]; sprintf(buf, "%ld,%ld,%ld", THIS->x, THIS->y, THIS->z); RETVAL = buf; %};
};