#[derive(Debug, Clone, Copy)]
pub enum ItemFragment {
Fragment(Fragment),
LineBreak,
}
impl ItemFragment {
pub fn width(&self) -> f32 {
match self {
ItemFragment::Fragment(frag) => frag.width,
ItemFragment::LineBreak => 0.0,
}
}
pub fn height(&self) -> f32 {
match self {
ItemFragment::Fragment(frag) => frag.height,
ItemFragment::LineBreak => 0.0,
}
}
pub fn is_line_break(&self) -> bool {
matches!(self, ItemFragment::LineBreak)
}
}
#[derive(Debug, Clone, Copy)]
pub struct Fragment {
pub width: f32,
pub height: f32,
}
#[derive(Debug, Clone, Copy, PartialEq)]
pub struct FragmentPlacement {
pub offset: (f32, f32),
pub line_index: usize,
}