use crate::{usage_types::coordinates::Coordinate, VectorGrid};
impl<ItemType: Clone> VectorGrid<ItemType> {
pub fn stamp(&mut self, stamp_grid: &VectorGrid<ItemType>, at: Coordinate) {
for (i, stamp_item) in stamp_grid.items.iter().enumerate() {
let mut stamp_coordinate = stamp_grid.get_index_coordinate(i);
println!("Stamp coordinate at {} + {}", at, stamp_coordinate);
stamp_coordinate.add(&at);
self.set_item_if_contained(stamp_coordinate, stamp_item.clone())
}
}
}
impl<ItemType: Clone + Default> VectorGrid<ItemType> {
pub fn stamp_with_extend(&mut self, stamp_grid: &VectorGrid<ItemType>, mut at: Coordinate) {
self.scale_to_encompace(&mut at);
let mut corner: Coordinate = Coordinate::new(stamp_grid.defined_shape_isize()).into();
corner.add(&at);
self.scale_to_encompace(&mut corner);
let mut end_coordinate: Coordinate = stamp_grid.get_index_coordinate(stamp_grid.items.len()).into();
end_coordinate.add(&at);
println!("End coordinate: {} + {} = {}", stamp_grid.get_index_coordinate(stamp_grid.items.len()), at, end_coordinate);
self.scale_to_encompace(&mut end_coordinate);
self.stamp(stamp_grid, at.into());
}
}