zui_widgets/backend/
mod.rs1use std::io;
2
3use crate::buffer::Cell;
4use crate::layout::Rect;
5
6#[cfg(feature = "termion")]
7mod termion;
8#[cfg(feature = "termion")]
9pub use self::termion::TermionBackend;
10
11pub mod zui;
12pub use self::zui::ZuiBackend;
13
14#[cfg(feature = "crossterm")]
15mod crossterm;
16#[cfg(feature = "crossterm")]
17pub use self::crossterm::CrosstermBackend;
18
19pub trait Backend {
20 fn draw<'a, I>(&mut self, content: I) -> Result<(), io::Error>
21 where
22 I: Iterator<Item = (u16, u16, &'a Cell)>;
23 fn hide_cursor(&mut self) -> Result<(), io::Error>;
24 fn show_cursor(&mut self) -> Result<(), io::Error>;
25 fn get_cursor(&mut self) -> Result<(u16, u16), io::Error>;
26 fn set_cursor(&mut self, x: u16, y: u16) -> Result<(), io::Error>;
27 fn clear(&mut self) -> Result<(), io::Error>;
28 fn size(&self) -> Result<Rect, io::Error>;
29 fn flush(&mut self) -> Result<(), io::Error>;
30}