Commit graph

35 commits

Author SHA1 Message Date
Alessandro Ranellucci
6adc3477c9 Moved C++ code into new libslic3r directory 2014-08-03 19:42:29 +02:00
Alessandro Ranellucci
a3bd1b5302 New seal_position option that replaces randomize_start, start_perimeters_at_concave_points and start_perimeters_at_non_overhang. The two latter options are now always on by default. A new "Aligned" seal position value has been added, that forces starting points to be aligned when not randomized. #1741 #925 2014-05-22 19:34:49 +02:00
Alessandro Ranellucci
f2c5e799b1 Enforce seam alignment and blend in spiral vase. #2023 2014-05-22 12:28:12 +02:00
Alessandro Ranellucci
76a8ec3d9e Replace to_SV_ref() and to_SV_clone_ref() with templated glue functions 2014-05-08 14:52:48 +02:00
Alessandro Ranellucci
c37ef2f18b New semantics for ExtrusionLoop objects. Early processing of perimeter overhangs for paralellizing such work and making G-code export lighter. Lots of refactoring. This should fix a number of minor bugs, including reversals of perimeter overhangs. 2014-05-08 11:07:37 +02:00
Alessandro Ranellucci
d2d885fc53 Turn ExtrusionLoop into a collection of polylines. Includes some changes to the Polygon API to avoid returning newly allocatd objects 2014-05-07 12:02:09 +02:00
Alessandro Ranellucci
9734a40647 Fix Polygon::contains_point() overflowing on Windows. #1950 2014-04-30 16:55:20 +02:00
Alessandro Ranellucci
2720000a17 New get_trapezoids() implementation. Maybe heavier but it doesn't fail with some versions of GCC like the one provided by Boost.Polygon. #1965 2014-04-28 20:14:20 +02:00
Petr Ledvina
115aa6885f Implement type checking for XS objects
Type handling is mainly done using templates.
Template Slic3r::ClassTraits is used to store info about exported types (perl class name). Currently only perl class name and refference name is used.
Template values are initialized by REGISTER_CLASS macro. This macro is used in .cpp file of class ( it needs to be used exactly for each type).

Ref<type> class is used to return value as perl reference. Operator overloading is used to make c++ and XSpp happy, only pointer value should be possible to return.

Clone<type> class is used to return copy of value ( using new and copy constructor). Copy is created on assigment, this should be probably improved (memory leak on multiple assignments).
It is overloaded to be able to return type, type* and type&.

Typechecking in ExtrusionEntityCollection updated to check all passed types.
2014-04-27 19:38:56 +02:00
Alessandro Ranellucci
37c7b958d4 New ExPolygon::triangulate() method 2014-04-24 17:06:16 +02:00
Alessandro Ranellucci
bb0ce3cccd New Polygon::triangulate_convex() method 2014-04-24 16:59:36 +02:00
Alessandro Ranellucci
ca4d4211c9 Refactored signatures of many C++ methods for more efficient and safer style. Includes a bugfix for Point::nearest_point() which was returning a pointer to freed memory. #1961 2014-04-24 16:40:10 +02:00
Alessandro Ranellucci
eadffe4a9e Merge branch 'master' into boost-medialaxis
Conflicts:
	lib/Slic3r/Layer/Region.pm
	xs/src/ExPolygon.cpp
	xs/src/Point.cpp
	xs/src/Point.hpp
	xs/src/TriangleMesh.cpp
	xs/t/01_trianglemesh.t
2014-03-02 22:36:20 +01:00
Alessandro Ranellucci
a51743a8c1 Bugfix: lack of strong type checking when passing arrayref objects to XS caused random lack of infill. Now added strong type checking for all XS entities. Also fixes a potential issue with bridges caused by the same error. #1652
Conflicts:

	lib/Slic3r/Layer/Region.pm
2014-01-12 00:54:10 +01:00
Alessandro Ranellucci
bf91f3096a Incomplete work for using Boost.Polygon to compute medial axis 2014-01-09 17:26:39 +01:00
Alessandro Ranellucci
c8a48b4527 Implement modifier volumes and port _merge_loops() to XS 2014-01-07 15:40:38 +01:00
Alessandro Ranellucci
df8d889481 More unfinished work 2013-11-22 02:16:10 +01:00
Alessandro Ranellucci
518798beb3 Incomplete work for porting simplify() to XS 2013-11-21 20:25:24 +01:00
Alessandro Ranellucci
5f2b2c90b6 Fix error in contains_point() port 2013-11-21 18:42:16 +01:00
Alessandro Ranellucci
5f81292f3f Ported encloses_point() to XS and renamed to contains_point() 2013-11-21 16:21:42 +01:00
Alessandro Ranellucci
3025c77675 Use Clipper for line clipping 2013-11-21 14:15:38 +01:00
Alessandro Ranellucci
1d6a18071a Support the new Clipper API 2013-11-20 15:59:19 +01:00
Alessandro Ranellucci
885ab5844e Ported regular_points() to XS and renamed it to equally_spaced_points() 2013-11-11 20:59:58 +01:00
Alessandro Ranellucci
4dce461aaf Minor optimizations 2013-09-13 15:19:15 +02:00
Alessandro Ranellucci
6e22a82e7d Conditional compilation to exclude all Perl/XS stuff from C++ code 2013-09-13 14:48:40 +02:00
Alessandro Ranellucci
a49dc603cc Many changes and fixes to remove leaks and return objects by reference 2013-09-03 19:26:58 +02:00
Alessandro Ranellucci
275422fac7 Don't return first_point() and last_point() by reference 2013-09-02 22:33:03 +02:00
Alessandro Ranellucci
c0789506e4 Return objects by reference instead of always cloning 2013-09-02 20:22:20 +02:00
Alessandro Ranellucci
fb763b0187 Removed dependency on Math::Clipper 2013-08-27 01:26:44 +02:00
Alessandro Ranellucci
fe42427a54 Ported Polygon->is_valid() and ExPolygon->is_valid() 2013-08-26 23:27:51 +02:00
Alessandro Ranellucci
706851f836 Ported ExPolygon->area() 2013-08-26 22:50:26 +02:00
Alessandro Ranellucci
792fcba7be Ported Polygon->area 2013-08-26 22:44:40 +02:00
Alessandro Ranellucci
1f734807b9 Ported Polygon->split_at() 2013-08-26 22:39:35 +02:00
Alessandro Ranellucci
f7ada2b5db Ported make_clockwise() and make_counter_clockwise() 2013-07-16 21:09:29 +02:00
Alessandro Ranellucci
fe061b19ad Ported Polygon->is_counter_clockwise() and rearranged code in .cpp files 2013-07-16 21:04:14 +02:00