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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#[cfg(any(test, doc))]
use crate::*;
#[cfg(not(any(test, doc)))]
use libnotcurses_sys::*;
fn main() -> NcResult<()> {
let mut nc = unsafe { Nc::new()? };
let (t_rows, t_cols) = nc.term_dim_yx();
let mut stdplane = unsafe { nc.stdplane() };
assert_eq![(t_rows, t_cols), stdplane.dim_yx()];
stdplane.set_base("¬", 0, NcChannels::from_rgb(0x88aa00, 0x222288))?;
nc_render_sleep![&mut nc, 1];
let plane_green = NcPlane::new_child_sized(&mut stdplane, 8, 0, 16, 30)?;
plane_green.set_base("·", 0, NcChannels::from_rgb(0x224411, 0x229922))?;
let plane_red = NcPlane::new_child_sized(&mut stdplane, 0, 18, 12, 22)?;
plane_red.set_base("~", 0, NcChannels::from_rgb(0xaadd2b, 0x882222))?;
nc_render_sleep![&mut nc, 0, 500];
stdplane.putstr("000 STDPLANE 000")?;
plane_green.putstr("111 PLANE 111")?;
plane_red.putstr("222 PLANE 222")?;
nc_render_sleep![&mut nc, 0, 500];
for _ in 0..16 {
plane_green.move_rel(1, 1)?;
nc_render_sleep![&mut nc, 0, 20];
}
for _ in 0..16 {
plane_green.move_rel(-1, -1)?;
nc_render_sleep![&mut nc, 0, 20];
}
for _ in 0..16 {
plane_red.move_rel(-1, -1)?;
nc_render_sleep![&mut nc, 0, 20];
}
for _ in 0..16 {
plane_red.move_rel(1, 1)?;
nc_render_sleep![&mut nc, 0, 20];
}
sleep![1];
let lorem_ipsum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat";
plane_green.set_scrolling(true);
plane_green.putstr(lorem_ipsum)?;
plane_red.set_scrolling(true);
plane_red.putstr(lorem_ipsum)?;
nc_render_sleep![&mut nc, 0, 500];
plane_green.move_above(plane_red)?;
nc_render_sleep![&mut nc, 0, 500];
plane_green.move_below(plane_red)?;
nc_render_sleep![&mut nc, 0, 500];
plane_green.move_bottom();
nc_render_sleep![&mut nc, 0, 500];
plane_green.move_top();
nc_render_sleep![&mut nc, 0, 500];
plane_green.resize_simple(6, 12)?;
plane_red.resize_simple(4, 8)?;
nc_render_sleep![&mut nc, 0, 300];
plane_green.resize_simple(16, 30)?;
plane_red.resize_simple(12, 22)?;
nc_render_sleep![&mut nc, 0, 300];
nc_render_sleep![&mut nc, 3];
exit(0, &mut nc, vec![plane_green, plane_red])?;
Ok(())
}
fn exit(ecode: i32, nc: &mut Nc, planes: Vec<&mut NcPlane>) -> NcResult<()> {
for p in planes {
p.destroy()?;
}
unsafe { nc.stop()? };
std::process::exit(ecode);
}