pub struct Interface<'a> { /* private fields */ }
Expand description
A TTY-based user-interface providing optimized update rendering.
Implementations§
Source§impl Interface<'_>
impl Interface<'_>
Sourcepub fn new_alternate<'a>(device: &'a mut dyn Device) -> Result<Interface<'a>>
pub fn new_alternate<'a>(device: &'a mut dyn Device) -> Result<Interface<'a>>
Create a new interface for the specified device on the alternate screen.
§Examples
use tty_interface::Interface;
let interface = Interface::new_alternate(&mut device)?;
Sourcepub fn new_relative<'a>(device: &'a mut dyn Device) -> Result<Interface<'a>>
pub fn new_relative<'a>(device: &'a mut dyn Device) -> Result<Interface<'a>>
Create a new interface for the specified device which renders relatively in the buffer.
§Examples
use tty_interface::Interface;
let interface = Interface::new_relative(&mut device)?;
Sourcepub fn exit(self) -> Result<()>
pub fn exit(self) -> Result<()>
When finished using this interface, uninitialize its terminal configuration.
§Examples
use tty_interface::Interface;
let interface = Interface::new_alternate(&mut device)?;
interface.exit()?;
Sourcepub fn set(&mut self, position: Position, text: &str)
pub fn set(&mut self, position: Position, text: &str)
Update the interface’s text at the specified position. Changes are staged until applied.
§Examples
use tty_interface::{Interface, Position, pos};
let mut interface = Interface::new_alternate(&mut device)?;
interface.set(pos!(1, 1), "Hello, world!");
Sourcepub fn set_styled(&mut self, position: Position, text: &str, style: Style)
pub fn set_styled(&mut self, position: Position, text: &str, style: Style)
Update the interface’s text at the specified position. Changes are staged until applied.
§Examples
use tty_interface::{Interface, Style, Position, pos};
let mut interface = Interface::new_alternate(&mut device)?;
interface.set_styled(pos!(1, 1), "Hello, world!", Style::new().set_bold(true));
Sourcepub fn clear_line(&mut self, line: u16)
pub fn clear_line(&mut self, line: u16)
Clear all text on the specified line. Changes are staged until applied.
§Examples
use tty_interface::{Interface, Style, Position, pos};
let mut interface = Interface::new_alternate(&mut device)?;
// Write "Hello," and "world!" on two different lines
interface.set(pos!(0, 0), "Hello,");
interface.set(pos!(0, 1), "world!");
interface.apply()?;
// Clear the second line, "world!"
interface.clear_line(1);
interface.apply()?;
Sourcepub fn clear_rest_of_line(&mut self, from: Position)
pub fn clear_rest_of_line(&mut self, from: Position)
Clear the remainder of the line from the specified position. Changes are staged until applied.
§Examples
use tty_interface::{Interface, Style, Position, pos};
let mut interface = Interface::new_alternate(&mut device)?;
// Write "Hello, world!" to the first line
interface.set(pos!(0, 0), "Hello, world!");
interface.apply()?;
// Clear everything after "Hello"
interface.clear_rest_of_line(pos!(5, 0));
interface.apply()?;
Sourcepub fn clear_rest_of_interface(&mut self, from: Position)
pub fn clear_rest_of_interface(&mut self, from: Position)
Clear the remainder of the interface from the specified position. Changes are staged until applied.
§Examples
use tty_interface::{Interface, Style, Position, pos};
let mut interface = Interface::new_alternate(&mut device)?;
// Write two lines of content
interface.set(pos!(0, 0), "Hello, world!");
interface.set(pos!(0, 1), "Another line");
interface.apply()?;
// Clear everything after "Hello", including the second line
interface.clear_rest_of_interface(pos!(5, 0));
interface.apply()?;
Sourcepub fn set_cursor(&mut self, position: Option<Position>)
pub fn set_cursor(&mut self, position: Option<Position>)
Update the interface’s cursor to the specified position, or hide it if unspecified.
§Examples
use tty_interface::{Interface, Position, pos};
let mut interface = Interface::new_alternate(&mut device)?;
interface.set_cursor(Some(pos!(1, 2)));