use crate::diag::SourceResult;
use crate::engine::Engine;
use crate::foundations::{elem, Content, NativeElement, Packed, Show, StyleChain};
use crate::layout::{Abs, Angle, Axes, BlockElem, Length, Rel};
use crate::visualize::Stroke;
#[elem(Show)]
pub struct LineElem {
#[resolve]
pub start: Axes<Rel<Length>>,
#[resolve]
pub end: Option<Axes<Rel<Length>>>,
#[resolve]
#[default(Abs::pt(30.0).into())]
pub length: Rel<Length>,
pub angle: Angle,
#[resolve]
#[fold]
pub stroke: Stroke,
}
impl Show for Packed<LineElem> {
fn show(&self, engine: &mut Engine, _: StyleChain) -> SourceResult<Content> {
Ok(BlockElem::single_layouter(self.clone(), engine.routines.layout_line)
.pack()
.spanned(self.span()))
}
}