Artboard nodes (#1328)

* Create artboard nodes

* Update node when resizing artboard

* Render clipped artboards

* More stable feature

* Do not render old artboards

* Fix some issues with transforms

* Fix crash when drawing rectangle

* Format

* Allow renaming document from Properties panel

* Adjust artboard label styling

* Fix document graph refresh so artboards show up

* Make "Clear Artboards" coming soon

* Fix displaying an infinite canvas

* Show document name in node graph options bar

* info!() to debug!()

* Fix Properties panel not being cleared when all docs closed

* Remove dead code

* Remove debug logs added in this branch

---------

Co-authored-by: Keavon Chambers <keavon@keavon.com>
This commit is contained in:
0HyperCube
2023-07-27 07:35:17 +01:00
committed by Keavon Chambers
co-authored by Keavon Chambers
parent ad0dc3276e
commit 08f9be6aaf
26 changed files with 636 additions and 182 deletions
@@ -61,9 +61,11 @@ impl MessageHandler<ArtboardMessage, &PersistentData> for ArtboardMessageHandler
responses.add(DocumentMessage::RenderDocument);
}
ClearArtboards => {
for &artboard in self.artboard_ids.iter() {
responses.add_front(ArtboardMessage::DeleteArtboard { artboard });
}
// TODO: Make this remove the artboard layers from the graph (and cleanly reconnect the artwork)
responses.add(DialogMessage::RequestComingSoonDialog { issue: None });
// for &artboard in self.artboard_ids.iter() {
// responses.add_front(ArtboardMessage::DeleteArtboard { artboard });
// }
}
DeleteArtboard { artboard } => {
self.artboard_ids.retain(|&id| id != artboard);
@@ -78,11 +80,13 @@ impl MessageHandler<ArtboardMessage, &PersistentData> for ArtboardMessageHandler
responses.add(FrontendMessage::UpdateDocumentArtboards {
svg: r##"<rect width="100%" height="100%" fill="#ffffff" />"##.to_string(),
})
} else {
let render_data = RenderData::new(&persistent_data.font_cache, ViewMode::Normal, None);
responses.add(FrontendMessage::UpdateDocumentArtboards {
svg: self.artboards_document.render_root(&render_data),
});
// TODO: Delete this whole legacy code path when cleaning up/removing the old (non-node based) artboard implementation
// TODO: The below code was used to draw the non-node based artboards, but we still need the above code to draw the infinite canvas until the refactor is complete and all this code can be removed
// } else {
// let render_data = RenderData::new(&persistent_data.font_cache, ViewMode::Normal, None);
// responses.add(FrontendMessage::UpdateDocumentArtboards {
// svg: self.artboards_document.render_root(&render_data),
// });
}
}
ResizeArtboard { artboard, position, mut size } => {