Add thumbnails for layers (#286)

Fixes: #285
This commit is contained in:
TrueDoctor 2021-07-21 11:30:49 +02:00 committed by GitHub
parent 06c26f44d0
commit 255cdead28
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 35 additions and 3 deletions

View file

@ -212,8 +212,8 @@ impl Document {
/// Adds a new layer to the folder specified by `path`.
/// Passing a negative `insert_index` indexes relative to the end.
/// -1 is equivalent to adding the layer to the top.
pub fn add_layer(&mut self, path: &[LayerId], layer: Layer, insert_index: isize) -> Result<LayerId, DocumentError> {
let _ = self.layer_mut(path).map(|x| x.cache_dirty = true);
pub fn add_layer(&mut self, path: &[LayerId], mut layer: Layer, insert_index: isize) -> Result<LayerId, DocumentError> {
layer.render();
let folder = self.folder_mut(path)?;
folder.add_layer(layer, insert_index).ok_or(DocumentError::IndexOutOfBounds)
}

View file

@ -74,6 +74,10 @@ impl Folder {
self.layers.as_slice()
}
pub fn layers_mut(&mut self) -> &mut [Layer] {
self.layers.as_mut_slice()
}
pub fn layer(&self, id: LayerId) -> Option<&Layer> {
let pos = self.layer_ids.iter().position(|x| *x == id)?;
Some(&self.layers[pos])

View file

@ -175,6 +175,10 @@ impl Layer {
self.data.to_kurbo_path(self.transform, self.style)
}
pub fn current_bounding_box(&self) -> Option<[DVec2; 2]> {
self.bounding_box(self.transform, self.style)
}
pub fn bounding_box(&self, transform: glam::DAffine2, style: style::PathStyle) -> Option<[DVec2; 2]> {
if let Ok(folder) = self.as_folder() {
folder.bounding_box(transform)