Skip to content

Commit

Permalink
Allow configuring of the i_overlay dep, Rayon transitive dep, and d…
Browse files Browse the repository at this point in the history
…ocument more features.
  • Loading branch information
frewsxcv committed Nov 1, 2024
1 parent ceca778 commit 6e5b719
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 9 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ jobs:
uses: actions/checkout@v3
- run: cargo check --all-targets --no-default-features
# we don't want to test `proj-network` because it only enables the `proj` feature
- run: cargo test --features "use-proj use-serde"
- run: cargo test --features "use-proj use-serde i_overlay earcutr multithreading"

geo_traits:
name: geo-traits
Expand Down
5 changes: 3 additions & 2 deletions geo/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,11 @@ rust-version = "1.75"
categories = ["science::geo"]

[features]
default = ["earcutr", "spade"]
default = ["earcutr", "spade", "i_overlay", "multithreading"]
use-proj = ["proj"]
proj-network = ["use-proj", "proj/network"]
use-serde = ["serde", "geo-types/serde"]
multithreading = ["i_overlay/allow_multithreading"]

[dependencies]
earcutr = { version = "0.4.2", optional = true }
Expand All @@ -30,7 +31,7 @@ proj = { version = "0.27.0", optional = true }
robust = "1.1.0"
rstar = "0.12.0"
serde = { version = "1.0", optional = true, features = ["derive"] }
i_overlay = "1.7.2"
i_overlay = { version = "1.7.2", optional = true }

[dev-dependencies]
approx = ">= 0.4.0, < 0.6.0"
Expand Down
2 changes: 2 additions & 0 deletions geo/src/algorithm/bool_ops/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ use crate::geometry::{LineString, MultiLineString, MultiPolygon, Polygon};

/// Boolean Operations on geometry.
///
/// Requires the `"i_overlay"` feature, which is enabled by default.
///
/// Boolean operations are set operations on geometries considered as a subset
/// of the 2-D plane. The operations supported are: intersection, union, xor or
/// symmetric difference, and set-difference on pairs of 2-D geometries and
Expand Down
8 changes: 7 additions & 1 deletion geo/src/algorithm/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,12 @@ pub use kernels::{Kernel, Orientation};
pub mod area;
pub use area::Area;

/// Boolean Ops such as union, xor, difference;
/// Boolean Ops such as union, xor, difference.
///
/// Requires the `"i_overlay"` feature, which is enabled by default.
#[cfg(feature = "i_overlay")]
pub mod bool_ops;
#[cfg(feature = "i_overlay")]
pub use bool_ops::{BooleanOps, OpType};

/// Calculate the bounding rectangle of a `Geometry`.
Expand Down Expand Up @@ -254,6 +258,8 @@ pub mod translate;
pub use translate::Translate;

/// Triangulate polygons using an [ear-cutting algorithm](https://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf).
///
/// Requires the `"earcutr"` feature.
#[cfg(feature = "earcutr")]
pub mod triangulate_earcut;
#[cfg(feature = "earcutr")]
Expand Down
2 changes: 2 additions & 0 deletions geo/src/algorithm/triangulate_earcut.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
use crate::{coord, CoordFloat, CoordsIter, Polygon, Triangle};

/// Triangulate polygons using an [ear-cutting algorithm](https://www.geometrictools.com/Documentation/TriangulationByEarClipping.pdf).
///
/// Requires the `"earcutr"` feature, which is enabled by default.
pub trait TriangulateEarcut<T: CoordFloat> {
/// # Examples
///
Expand Down
26 changes: 21 additions & 5 deletions geo/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
//!
//! ## Boolean Operations
//!
//! - **[`BooleanOps`]**: combine or split (Multi)Polygons using intersecton, union, xor, or difference operations
//! - **[`BooleanOps`]**: combine or split (Multi)Polygons using intersecton, union, xor, or difference operations. Requires the `"i_overlay"` feature, which is enabled by default.
//!
//! ## Outlier Detection
//!
Expand Down Expand Up @@ -112,7 +112,7 @@
//!
//! ## Triangulation
//!
//! - **[`TriangulateEarcut`](triangulate_earcut)**: Triangulate polygons using the earcut algorithm (requires the `earcutr` feature).
//! - **[`TriangulateEarcut`](triangulate_earcut)**: Triangulate polygons using the earcut algorithm. Requires the `"earcutr"` feature, which is enabled by default.
//!
//! ## Winding
//!
Expand Down Expand Up @@ -177,9 +177,25 @@
//!
//! The following optional [Cargo features] are available:
//!
//! - `proj-network`: Enables [network grid] support for the [`proj` crate]. After enabling this feature, [further configuration][proj crate file download] is required to use the network grid
//! - `use-proj`: Enables coordinate conversion and transformation of `Point` geometries using the [`proj` crate]
//! - `use-serde`: Allows geometry types to be serialized and deserialized with [Serde]
//! - `i_overlay`:
//! - Enables the `i_overlay` crate, which provides boolean operations on geometries.
//! - ☑ Enabled by default.
//! - `earcutr`:
//! - Enables the `earcutr` crate, which provides triangulation of polygons using the earcut algorithm.
//! - ☑ Enabled by default.
//! - `proj-network`:
//! - Enables [network grid] support for the [`proj` crate].
//! - After enabling this feature, [further configuration][proj crate file download] is required to use the network grid.
//! - ☐ Disabled by default.
//! - `use-proj`:
//! - Enables coordinate conversion and transformation of `Point` geometries using the [`proj` crate]
//! - ☐ Disabled by default.
//! - `use-serde`:
//! - Allows geometry types to be serialized and deserialized with [Serde].
//! - ☐ Disabled by default.
//! - `multithreading`:
//! - Enables multithreading support for the `i_overlay` crate.
//! - ☑ Enabled by default.
//!
//! # Ecosystem
//!
Expand Down

0 comments on commit 6e5b719

Please sign in to comment.