use zhc_utils::graphics::{Frame, Size};
use super::*;
pub trait Element {
fn solve_size(&mut self, stylesheet: &StyleSheet);
fn solve_frame(&mut self, stylesheet: &StyleSheet, available: Frame);
fn get_size(&self) -> Size;
fn get_frame(&self) -> Frame;
fn get_variable_cell(&self) -> VariableCell;
}
impl<T: Element> Element for Option<T> {
fn solve_size(&mut self, stylesheet: &StyleSheet) {
match self {
Some(e) => e.solve_size(stylesheet),
None => {}
}
}
fn solve_frame(&mut self, stylesheet: &StyleSheet, available: Frame) {
match self {
Some(e) => e.solve_frame(stylesheet, available),
None => {}
}
}
fn get_size(&self) -> Size {
match self {
Some(e) => e.get_size(),
None => panic!(),
}
}
fn get_frame(&self) -> Frame {
match self {
Some(e) => e.get_frame(),
None => panic!(),
}
}
fn get_variable_cell(&self) -> VariableCell {
match self {
Some(e) => e.get_variable_cell(),
None => panic!(),
}
}
}