pub trait Backend {
fn poll_event(&mut self) -> Option<Event>;
fn set_title(&mut self, title: String);
fn refresh(&mut self);
fn has_colors(&self) -> bool;
fn screen_size(&self) -> XY<usize>;
fn print_at(&self, pos: XY<usize>, text: &str);
fn clear(&self, color: Color);
fn set_color(&self, colors: ColorPair) -> ColorPair;
fn set_effect(&self, effect: Effect);
fn unset_effect(&self, effect: Effect);
fn print_at_rep(&self, pos: XY<usize>, repetitions: usize, text: &str) { ... }
fn name(&self) -> &str { ... }
}
Expand description
Trait defining the required methods to be a backend.
A backend is the interface between the abstract view tree and the actual input/output, like a terminal.
It usually delegates the work to a terminal-handling library like ncurses
or termion, or it can entirely simulate a terminal and show it as a
graphical window (BearLibTerminal
).
When creating a new cursive tree with Cursive::new()
, you will need to
provide a backend initializer - usually their init()
function.
Backends are responsible for handling input and converting it to Event
.
Input must be non-blocking, it will be polled regularly.
Required Methods
sourcefn poll_event(&mut self) -> Option<Event>
fn poll_event(&mut self) -> Option<Event>
Polls the backend for any input.
Should return immediately:
None
if no event is currently available.Some(event)
for each event to process.
Sets the title for the backend.
This usually sets the terminal window title.
Refresh the screen.
This will be called each frame after drawing has been done.
A backend could, for example, buffer any print command, and apply everything when refresh() is called.
sourcefn has_colors(&self) -> bool
fn has_colors(&self) -> bool
Should return true
if this backend supports colors.
sourcefn screen_size(&self) -> XY<usize>
fn screen_size(&self) -> XY<usize>
Returns the screen size.
Starts using a new color.
This should return the previously active color.
Any call to print_at
from now on should use the given color.
sourcefn set_effect(&self, effect: Effect)
fn set_effect(&self, effect: Effect)
Enables the given effect.
Any call to print_at
from now on should use the given effect.
sourcefn unset_effect(&self, effect: Effect)
fn unset_effect(&self, effect: Effect)
Disables the given effect.
Provided Methods
Efficient method to print repetitions of the same text.
Usually used to draw horizontal lines/borders.
It is a small optimization to avoid moving the cursor after each step.
Implementors
impl Backend for cursive::backends::blt::Backend
blt-backend
only.impl Backend for cursive::backends::crossterm::Backend
crossterm-backend
only.impl Backend for cursive::backends::curses::n::Backend
ncurses-backend
only.impl Backend for cursive::backends::curses::pan::Backend
pancurses-backend
only.impl Backend for cursive::backends::puppet::Backend
impl Backend for cursive::backends::termion::Backend
termion-backend
only.