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
use super::*;

#[derive(Default)]
pub struct Label {
	offset: Vec2,
	size: Vec2,
	scale: f32,
	text: String,
}
impl Label {
	pub fn draw<'s>(&'s mut self, r: &mut RenderLock<'s>, t: &'s Theme, pos: Vec2, size: Vec2, text: &str) {
		if self.text != text || self.size != size {
			let (offset, scale) = util::fit_text(text, t, size);

			*self = Self {
				offset,
				size,
				scale,
				text: text.into(),
			};
		}

		r.draw(Rect { pos, size, color: t.fg });
		r.draw(Text {
			pos: pos.sum(self.offset),
			color: t.text,
			scale: self.scale,
			text,
			font: &t.font,
		});
	}
}