Allow deleting artboards (#533)

This commit is contained in:
0HyperCube
2022-02-10 20:03:14 +00:00
committed by Keavon Chambers
parent c4fdc28449
commit e22030ffb2
4 changed files with 26 additions and 6 deletions

View File

@@ -18,9 +18,12 @@ pub enum ArtboardMessage {
position: (f64, f64),
size: (f64, f64),
},
DeleteArtboard {
artboard: LayerId,
},
RenderArtboards,
ResizeArtboard {
artboard: Vec<LayerId>,
artboard: LayerId,
position: (f64, f64),
size: (f64, f64),
},

View File

@@ -55,6 +55,13 @@ impl MessageHandler<ArtboardMessage, ()> for ArtboardMessageHandler {
responses.push_back(DocumentMessage::RenderDocument.into());
}
DeleteArtboard { artboard } => {
self.artboard_ids.retain(|&id| id != artboard);
responses.push_back(ArtboardMessage::DispatchOperation(Box::new(DocumentOperation::DeleteLayer { path: vec![artboard] })).into());
responses.push_back(DocumentMessage::RenderDocument.into());
}
RenderArtboards => {
// Render an infinite canvas if there are no artboards
if self.artboard_ids.is_empty() {
@@ -76,7 +83,7 @@ impl MessageHandler<ArtboardMessage, ()> for ArtboardMessageHandler {
ResizeArtboard { artboard, position, size } => {
responses.push_back(
ArtboardMessage::DispatchOperation(Box::new(DocumentOperation::SetLayerTransform {
path: artboard,
path: vec![artboard],
transform: DAffine2::from_scale_angle_translation(size.into(), 0., position.into()).to_cols_array(),
}))
.into(),