mirror of
https://github.com/dankamongmen/notcurses.git
synced 2024-11-09 19:10:48 +00:00
4de2652f8d
- fix notcurses_init unit test - fix fn call name: `nplane_at_cursor_cell` → `ncplane_at_cursor_cell`. - make LIBC_FILE & NC_FILE type aliases with doc comment. - add lib module comment. - improve direct-cursor example. - fix full-text example and rename it to full-basics.
61 lines
1.5 KiB
Rust
61 lines
1.5 KiB
Rust
//! Example 'direct-cursor'
|
|
//!
|
|
//! Explore cursor functions in direct mode
|
|
//!
|
|
|
|
// utility macro: sleep for $ms milliseconds
|
|
macro_rules! sleep {
|
|
($ms:expr) => {
|
|
std::thread::sleep(std::time::Duration::from_millis($ms));
|
|
};
|
|
}
|
|
|
|
// utility macro: convert the String $s to *mut CString
|
|
macro_rules! cstring {
|
|
($s:expr) => {
|
|
std::ffi::CString::new($s).unwrap().as_ptr();
|
|
}
|
|
}
|
|
|
|
use libnotcurses_sys::*;
|
|
|
|
fn main() {
|
|
unsafe {
|
|
let ncd = NcDirect::new();
|
|
|
|
let cols = ncdirect_dim_x(ncd);
|
|
let rows = ncdirect_dim_y(ncd);
|
|
println!("terminal size (rows, cols): {}, {}", rows, cols);
|
|
|
|
ncdirect_putstr(ncd, 0, cstring![format!("The current coordinates are")]);
|
|
ncdirect_flush(ncd);
|
|
|
|
for _n in 0..20 {
|
|
ncdirect_putstr(ncd, 0, cstring!("."));
|
|
ncdirect_flush(ncd);
|
|
sleep![50];
|
|
}
|
|
|
|
let (mut cy, mut cx) = (0, 0);
|
|
ncdirect_cursor_yx(ncd, &mut cy, &mut cx);
|
|
ncdirect_putstr(ncd, 0, cstring![format!(" ({},{})\n", cy, cx)]);
|
|
sleep![1000];
|
|
|
|
let sentence = vec!["And", "now", "I", "will", "clear", "the", "screen", ".", ".", "."];
|
|
for word in sentence {
|
|
ncdirect_putstr(ncd, 0, cstring!(format!["{} ", word]));
|
|
ncdirect_flush(ncd);
|
|
sleep![200];
|
|
}
|
|
sleep![300];
|
|
ncdirect_putstr(ncd, 0, cstring!("\nbye!\n\n"));
|
|
ncdirect_flush(ncd);
|
|
sleep![600];
|
|
|
|
ncdirect_clear(ncd);
|
|
sleep![1000];
|
|
|
|
ncdirect_stop(ncd);
|
|
}
|
|
}
|