pub struct VStack {
x: usize,
y: usize,
spacing: usize,
count: usize,
}
impl VStack {
pub fn new(x: usize, y: usize, spacing: usize) -> Self {
Self { x, y, spacing, count: 0 }
}
pub fn next(&mut self, height: usize) -> (usize, usize) {
let pos = (self.x, self.y);
self.y += height + self.spacing;
self.count += 1;
pos
}
pub fn current_y(&self) -> usize {
self.y
}
pub fn count(&self) -> usize {
self.count
}
}
pub struct HStack {
x: usize,
y: usize,
spacing: usize,
count: usize,
}
impl HStack {
pub fn new(x: usize, y: usize, spacing: usize) -> Self {
Self { x, y, spacing, count: 0 }
}
pub fn next(&mut self, width: usize) -> (usize, usize) {
let pos = (self.x, self.y);
self.x += width + self.spacing;
self.count += 1;
pos
}
pub fn current_x(&self) -> usize {
self.x
}
pub fn count(&self) -> usize {
self.count
}
}