Releases: iShape-Rust/iOverlay
v4.0.0
Added
no_std
support
std math replaced with libm.
Modified
-
Memory-efficient API
FloatOverlay
andOverlay
use a reusable buffer to reduce allocation overhead, improving performance by 5–15% in repeated operations.
OverlayGraph
is now a reference view (no longer owns geometry data) -
Optional multithreading
allow_multithreading
is now an optional feature and disabled by default.
v3.3.0
Fixed
API Design: options
were mistakenly present in both the constructor and the custom
function. Now they are only in the constructor.
v3.2.0
Modified
Area type changed: usize
-> u64
Using usize caused incorrect results on WebAssembly.
v3.1.1
Added
IntOverlayOptions
: options for integer boolean operations.
- preserve_input_collinear: Preserve collinear points before operations.
- output_direction: Desired output winding order.
- preserve_output_collinear: Preserve collinear points after operations.
- min_output_area: Minimum area threshold for output contours.
OverlayOptions<T>
: options for float boolean operations.
- preserve_input_collinear: Preserve collinear points before operations.
- output_direction: Desired output winding order.
- preserve_output_collinear: Preserve collinear points after operations.
- min_output_area: Minimum area threshold for output contours.
- pub clean_result: If true, the result will be cleaned from precision-related issues (moved from
ContourFilter
)
❌ Removed
ContourFilter<T>
: Previously used for controlling output simplification and area threshold; now replaced by the more unified OverlayOptions
.
3.0.1
Changed
Starting from this version:
- Outer contours are returned in counter-clockwise order
- Hole contours are in clockwise order
This aligns with the standard mathematical convention and improves compatibility with other geometry libraries.
Now it also can be adjustable with enum ContourDirection
API Cleanup
Advanced methods have been renamed for clarity and now use the *_custom suffix:
overlay_custom
extract_shapes_custom
slice_custom_by
...and others
The slicing algorithm has been reworked and became more stable.
v2.0.0
Added
Buffering:
- Path offset.
- Polygon offset.
v1.10.0
Changed
- Snap by radius can now grow without limit.
- Enum Precision converted to struct.
Added
- New SimplifyShape API
simplify_shape_with_solver
which allow to set Solver.
v1.9.0
Added
Improved splitting logic for large datasets:
- Reworked fragment solver.
- Introduced a multithreaded solver, boosting performance up to 2x in some cases.
Removed
Deprecated f32
/f64
API. Use the templated Float
API instead.
v1.8.0
🚀 Added
- New Float API: Introducing a template-based Float API that works with iterators to eliminate data cloning. This API can work directly with user-defined Point structures. (Note: The older
F32
/F64
API is now deprecated). - Single Boolean Operation -
overlay
: A faster Boolean operation that doesn’t require creating anOverlayGraph
, giving a 10-20% performance boost in some cases.
🔄 Changed
- String Line API: Now officially supported.
- Clip Operation: Improved to maintain the original path order, keeping output more predictable and intuitive.
🛠️ Fixed
- Hole Solver: Reworked to ensure holes are connected more accurately.