//! based on the proof of concept at ../../src/poc/direct.c use core::convert::TryInto; use libnotcurses_sys::*; fn main() -> NcResult<()> { let dm = NcDirect::new()?; let dimy = dm.dim_y() as i32; let dimx = dm.dim_x() as i32; for _ in 0..dimy { for _ in 0..dimx { printf!("X"); } } dm.flush()?; dm.set_fg_rgb(0xff8080)?; printf!(" erp erp \n"); dm.set_fg_rgb(0x80ff80)?; printf!(" erp erp \n"); dm.set_fg_rgb(0xff8080)?; printf!(" erp erp \n"); dm.cursor_right(dimx / 2)?; dm.cursor_up(dimy / 2)?; printf!(" erperperp! \n"); let (mut y, x); if let Ok((_y, _x)) = dm.cursor_yx() { y = _y; x = _x; printf!("\n\tRead cursor position: y: %d x: %d\n", y, x); y += 2; while y > 3 { let up = if y >= 3 { 3 } else { y }; dm.cursor_up(up.try_into().unwrap_or(0))?; dm.flush()?; y -= up; let newy; if let Ok((_y, _)) = dm.cursor_yx() { newy = _y; } else { break; } if newy != y { eprintln!("Expected {}, got {}", y, newy); break; } printf!("\n\tRead cursor position: y: %d x: %d\n", newy, x); y += 2; } } else { return Err(NcError::with_msg(-10, "Couldn't read cursor position.")); } dm.stop()?; Ok(()) }