mod line;
mod rect;
use crate::model::{PresetGeometryDef, PresetShapeType};
use crate::render::geometry::PtSize;
use super::ShapePath;
pub fn build_preset(def: &PresetGeometryDef, extent: PtSize) -> Option<ShapePath> {
match def.preset {
PresetShapeType::Line => Some(line::build(extent)),
PresetShapeType::Rect => Some(rect::build(extent)),
_ => {
log::warn!(
"shape_geometry: preset {:?} not yet implemented",
def.preset
);
None
}
}
}
#[cfg(test)]
mod tests {
use super::*;
use crate::render::dimension::Pt;
fn def(preset: PresetShapeType) -> PresetGeometryDef {
PresetGeometryDef {
preset,
adjust_values: vec![],
}
}
#[test]
fn line_dispatches() {
let p = build_preset(
&def(PresetShapeType::Line),
PtSize::new(Pt::new(10.0), Pt::new(20.0)),
);
assert!(p.is_some());
}
#[test]
fn rect_dispatches() {
let p = build_preset(
&def(PresetShapeType::Rect),
PtSize::new(Pt::new(10.0), Pt::new(20.0)),
);
assert!(p.is_some());
}
#[test]
fn unknown_preset_returns_none() {
let p = build_preset(
&def(PresetShapeType::Star12),
PtSize::new(Pt::new(10.0), Pt::new(20.0)),
);
assert!(p.is_none());
}
}