use crate::entities::Item;
use crate::geometry::DTransformation;
use crate::geometry::geo_traits::Transformable;
use crate::geometry::primitives::SPolygon;
use slotmap::new_key_type;
use std::sync::Arc;
#[cfg(doc)]
use crate::entities::Layout;
new_key_type! {
pub struct PItemKey;
}
#[derive(Clone, Debug)]
pub struct PlacedItem {
pub item_id: usize,
pub d_transf: DTransformation,
pub shape: Arc<SPolygon>,
}
impl PlacedItem {
pub fn new(item: &Item, d_transf: DTransformation) -> Self {
let transf = d_transf.compose();
let shape = Arc::new(item.shape_cd.transform_clone(&transf));
PlacedItem {
item_id: item.id,
d_transf,
shape,
}
}
}