Graphite/libraries/path-bool/Cargo.toml
Dennis Kobert a4ec50d8ba
Some checks are pending
Editor: Dev & CI / build (push) Waiting to run
Editor: Dev & CI / cargo-deny (push) Waiting to run
Improve robustness and performance of the boolean operation algorithm (#2191)
* Improve perf of path bool lib

* Use swap remove

* Use outer/inner bounding box for inclusion testing

* Reuse allocations for hit testing

* Use direct root finding for inclusion testing

* Reuse bounding box

* Use faster hash and specify capacities

* Use hashmap based approach for find vertices

* Unroll find_vertecies loop and use 32 bit positions

* Tune initial vec capacities

* Remove unused bounding boxes

* Use smallvec for storing outgoing edges

* Improve allocations for compute_minor

* Use approximate bounding box for edge finding

* Transition aabb to use glam vecs

* Make find vertecies use 64 bit again this is slower but less likely to cause issues

* Improve intersection candidate finding

* Remove loop check in bit vec iter

* Special case cubic line intersections

* Optimize grid rounding and add debug output

* Remove file write

* Remove faulty line intersection

* Fix grid rounding

* Improve robustness and cleanaup code

* Make elided lifetime explicit

* Fix tests

* Fix a boolean ops crash

* Add comment

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
2025-08-21 23:15:36 +00:00

50 lines
836 B
TOML

[package]
name = "path-bool"
version = "0.1.0"
rust-version = "1.85"
authors = ["Graphite Authors <contact@graphite.rs>", "Adam Platkevič"]
edition = "2024"
keywords = [
"bezier",
"curve",
"boolean",
"path",
"geometry",
"computational geometry",
"vector graphics",
"2d",
"graphics",
]
categories = ["graphics", "mathematics"]
license = "MIT OR Apache-2.0"
[features]
logging = ["parsing"]
parsing = []
default = ["parsing"]
[dependencies]
glam = "0.29.0"
regex = "1.10.6"
slotmap = "1.0.7"
lyon_geom = "1.0"
roots = "0.0.8"
rustc-hash = "2.0.0"
smallvec = "1.13.2"
[dev-dependencies]
glob = "0.3"
svg = "0.18"
resvg = "0.44"
image = "0.25"
# Required dependencies
criterion = { workspace = true }
# Benchmarks
[[bench]]
name = "painted_dreams"
harness = false
[[bench]]
name = "path_segment_intersection"
harness = false