Skip to content

Releases: iShape-Rust/iOverlay

v4.0.0

26 May 19:02
Compare
Choose a tag to compare

Added

  • no_std support
    std math replaced with libm.

Modified

  • Memory-efficient API
    FloatOverlay and Overlay 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

27 Apr 17:34
Compare
Choose a tag to compare

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

23 Apr 12:48
Compare
Choose a tag to compare

Modified

Area type changed: usize -> u64
Using usize caused incorrect results on WebAssembly.

v3.1.1

22 Apr 11:32
Compare
Choose a tag to compare

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

17 Apr 16:54
Compare
Choose a tag to compare

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

20 Feb 13:08
Compare
Choose a tag to compare

Added

Buffering:

  • Path offset.
  • Polygon offset.

v1.10.0

02 Feb 17:35
Compare
Choose a tag to compare

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

20 Nov 14:27
Compare
Choose a tag to compare

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

11 Nov 07:48
Compare
Choose a tag to compare

🚀 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 an OverlayGraph, 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.