better import of 'elephant foot' (spelled elefant in prusa) that is now first_layer_size_compensation, using 'legacy to amke the convert.
advantage: it reverse the sign now.
drawback : no easy export to prusa.
- now has a setting & a threshold
- when reverse_direction trigger on the external loop, it also trigger for all other loops on this side (so, no more U-turn)
- do not depends on extra_perimeter anymore
- now extra_perimeters split into extra_perimeters (the old useless one) and extra_perimeters_overhangs
- reordering settings in the tab.
Also some option to only apply to hole (or others)
Also some fixes to some loops options in the codepath.
also a test to thin walls, suspected a bug but can't find it.
Seam position default to corners (hidden) from "nearest", to avoid confusion when migrating from a prusaslicer config.
fix for modifiers with no_perimeter_unsupported_algo
npuaBridges surface fix
If the Elephant foot compensation is applied to the 1st object's layer,
the uncompensated 1st object's slice is newly used for calculation
of bridges, overhans, skirt, brim, raft and supports.
Layer::slices were renamed to Layer::lslices to simplify reading
of the code, to differentiate from LayerRegion::slices.
clean a bit some methods with newer c++
add more const to surfacecollection & create surfaceconstptr & a slice() method in layerregion that return const surfacecollection.
Layer newly remembers bounding boxes of slices,
the bounding boxes are used by G-code generator & newly the support
generator.
Slices are stored as ExPolygons, not ExPolygonCollection.
not merged: fill.cpp, perimeter_generator, because they ahve been reworked and need to be understand fully before adding my extensive modifications.
To verify: glcanvas: maybe filament color selection is deleted (or the other one i added?)
The gap fill was disabled for zero infill.
Now the gap fill is enabled in between the perimeters, but disabled between
the inner-most perimeter and infill in case the infill is set to zero.
Also in case there are multiple infill regions inside a perimeter,
the mutliple infills are considered as non-zero if at least one infill
is non-zero, therefore the gap fill will be added inside the inner-most
perimeter.
Integration of the "cereal" serialization library.
Serialization / deserialization of the DynamicConfig / DynamicPrintConfig.
DynamicPrintConfig serializes ordinal identifiers instead
of the option key strings to conserve space.
they are presented in the UI.
Parallelized the slice stealing when splitting regions with modifier meshes.
Rewrote Layer::make_perimeters() to C++11 loops.
- reworked thin_variable_width (discretization into segments of constant width)
- bugfix taper_ends
- add setting thin_walls_overlap to control the perimeter/thin wall overlap