Releases: iShape-Rust/iOverlay
v6.0.0
Migration: FloatPointCompatible now uses an associated scalar type
FloatPointCompatible no longer takes the scalar as a generic parameter. Implementations should define type Scalar instead.
Before:
impl FloatPointCompatible<f32> for MyPoint {
fn from_xy(x: f32, y: f32) -> Self { ... }
fn x(&self) -> f32 { ... }
fn y(&self) -> f32 { ... }
}After:
impl FloatPointCompatible for MyPoint {
type Scalar = f32;
fn from_xy(x: f32, y: f32) -> Self { ... }
fn x(&self) -> f32 { ... }
fn y(&self) -> f32 { ... }
}Public float overlay APIs were simplified accordingly. Types that previously carried both point and scalar generics now generally use only the point type, with scalar values expressed as P::Scalar.
v5.0.0
Starting with 5.0.0, i_overlay follows SemVer release cycles.
Changes
- Switched release policy to SemVer.
- Added
cargo-semver-checksto CI.
v4.5.0
Changes
- Changed: Reworked buffering algorithm. Now it's relay on default boolean overlay graph. Old legacy buffering overlay graph removed. New algorithm must be more precision stable and safe.
- Added: Unit tests.
v4.2.1
Changes
- Changed: License updated from MIT to dual MIT OR Apache-2.0.
- Added: Integration tests.
v4.2.0
Changes
- Added OGC-valid output mode to split composite holes into valid contours.
- Added fixed-scale/grid_size float overlay support to make operations more stable and predictable.
v4.0.0
Added
no_stdsupport
std math replaced with libm.
Modified
-
Memory-efficient API
FloatOverlayandOverlayuse a reusable buffer to reduce allocation overhead, improving performance by 5–15% in repeated operations.
OverlayGraphis now a reference view (no longer owns geometry data) -
Optional multithreading
allow_multithreadingis 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_customextract_shapes_customslice_custom_by
...and others
The slicing algorithm has been reworked and became more stable.