use super::edit::*;
use super::layer::*;
use super::editable::*;
use std::time::Duration;
pub trait Animation :
Send+Sync {
fn size(&self) -> (f64, f64);
fn duration(&self) -> Duration;
fn frame_length(&self) -> Duration;
fn get_layer_ids(&self) -> Vec<u64>;
fn get_layer_with_id<'a>(&'a self, layer_id: u64) -> Option<Reader<'a, Layer>>;
fn get_log<'a>(&'a self) -> Reader<'a, EditLog<AnimationEdit>>;
fn edit<'a>(&'a self) -> Editor<'a, PendingEditLog<AnimationEdit>>;
fn edit_layer<'a>(&'a self, layer_id: u64) -> Editor<'a, PendingEditLog<LayerEdit>>;
}
pub trait MutableAnimation :
Send {
fn set_size(&mut self, size: (f64, f64));
fn add_layer(&mut self, new_layer_id: u64);
fn remove_layer(&mut self, old_layer_id: u64);
fn edit_layer<'a>(&'a mut self, layer_id: u64) -> Option<Editor<'a, Layer>>;
}