jagua_rs/entities/
placed_item.rs1use crate::entities::Item;
2use crate::geometry::DTransformation;
3use crate::geometry::geo_traits::Transformable;
4use crate::geometry::primitives::SPolygon;
5use slotmap::new_key_type;
6use std::sync::Arc;
7
8#[cfg(doc)]
9use crate::entities::Layout;
10
11new_key_type! {
12 pub struct PItemKey;
14}
15
16#[derive(Clone, Debug)]
18pub struct PlacedItem {
19 pub item_id: usize,
21 pub d_transf: DTransformation,
23 pub shape: Arc<SPolygon>,
25}
26
27impl PlacedItem {
28 #[must_use]
29 pub fn new(item: &Item, d_transf: DTransformation) -> Self {
30 let transf = d_transf.compose();
31 let shape = item.shape_cd.transform_clone(&transf);
32
33 PlacedItem {
34 item_id: item.id,
35 d_transf,
36 shape: Arc::new(shape),
37 }
38 }
39}