02_centered/
02_centered.rs1use milk_tea::{
4 area::Area,
5 draw_call::{DrawCall, DrawCallKind},
6 event::{Event, KeyCode, KeyEvent, KeyEventKind},
7 run,
8 text_size::UnicodeSize,
9};
10
11fn main() {
12 run(Model::default(), view, update).unwrap();
13}
14
15fn view(_model: &Model, area: &mut Area) {
16 let text_0 = "this text is centered!".limit_size(area.size());
17 let text_1 = "try resizing the window ^.^".limit_size(area.size());
18
19 let pos_0 = area.center_rect(text_0.rect()).pos;
21 let pos_1 = area.center_rect(text_1.rect()).pos.map_y(|y| y + 1);
22
23 area.push_all(vec![
24 DrawCall::new(pos_0, DrawCallKind::PrintLine(text_0)),
25 DrawCall::new(pos_1, DrawCallKind::PrintLine(text_1)),
26 ]);
27}
28
29fn update(event: Event, model: &mut Model) {
30 if let Event::Key(KeyEvent {
31 code: KeyCode::Esc,
32 kind: KeyEventKind::Press,
33 ..
34 }) = event
35 {
36 model.0 = true;
37 }
38}
39
40#[derive(Default, Clone, PartialEq, Eq)]
41struct Model(bool);
42
43impl milk_tea::Model for Model {
44 fn should_exit(&self) -> bool {
45 self.0
46 }
47}