diff --git a/src/geometry/mod.rs b/src/geometry/mod.rs index 13d5121..7ab66a2 100644 --- a/src/geometry/mod.rs +++ b/src/geometry/mod.rs @@ -2,7 +2,7 @@ mod geometry; pub mod compound; pub mod primitive; -mod shape; +pub mod shape; pub mod with_rtree; pub use geometry::*; diff --git a/src/overlay/overlay.rs b/src/overlay/overlay.rs index ac20d77..770cc11 100644 --- a/src/overlay/overlay.rs +++ b/src/overlay/overlay.rs @@ -4,8 +4,12 @@ use geo::Point; use rstar::AABB; use crate::{ - drawing::{graph::PrimitiveIndex, rules::RulesTrait}, - geometry::Node, + drawing::{ + graph::{MakePrimitive, PrimitiveIndex}, + primitive::MakeShape, + rules::RulesTrait, + }, + geometry::{shape::ShapeTrait, Node}, graph::GenericIndex, layout::{zone::ZoneWeight, Layout}, }; @@ -28,7 +32,18 @@ impl Overlay { [at.x(), at.y(), f64::INFINITY], ), ) { - self.toggle_selection(geom.data); + match geom.data { + Node::Primitive(primitive) => { + if primitive + .primitive(layout.drawing()) + .shape() + .contains_point(at) + { + self.toggle_selection(geom.data); + } + } + Node::Compound(compound) => (), // TODO. + } } }