1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
use crate::svg::{Rectangle, rectangle}; #[derive(Copy, Clone, Debug)] pub struct VerticalLayout { pub start: [f32; 2], pub y: f32, pub width: f32, } impl VerticalLayout { pub fn new(x: f32, y: f32, width: f32) -> Self { VerticalLayout { start: [x, y], y, width, } } pub fn advance(&mut self, by: f32) { self.y += by; } pub fn push_rectangle(&mut self, height: f32) -> Rectangle { let rect = rectangle(self.start[0], self.y, self.width, self.y + height); self.y += height; rect } pub fn total_rectangle(&self) -> Rectangle { rectangle( self.start[0], self.start[1], self.start[0] + self.width, self.y, ) } pub fn start_here(&mut self) { self.start[1] = self.y; } }