use crate::{
geometry::Geometry,
objects::Objects,
presentation::Presentation,
validation::{Validation, ValidationConfig},
};
use super::Layer;
pub struct Layers {
pub objects: Layer<Objects>,
pub geometry: Layer<Geometry>,
pub validation: Layer<Validation>,
pub presentation: Layer<Presentation>,
}
impl Layers {
pub fn new() -> Self {
let objects = Objects::new();
let geometry = Geometry::new(&objects);
Self {
objects: Layer::new(objects),
geometry: Layer::new(geometry),
validation: Layer::default(),
presentation: Layer::default(),
}
}
pub fn with_validation_config(config: ValidationConfig) -> Self {
Self {
validation: Layer::new(Validation::with_validation_config(config)),
..Self::new()
}
}
}
impl Default for Layers {
fn default() -> Self {
Self::new()
}
}