Struct tuig_iosys::fmt::Cell
source · pub struct Cell {
pub ch: char,
/* private fields */
}
Expand description
A single character with associated formatting.
Fields§
§ch: char
Implementations§
source§impl Cell
impl Cell
sourcepub const fn of(ch: char) -> Self
pub const fn of(ch: char) -> Self
Examples found in repository?
examples/list-actions.rs (line 12)
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
fn list_events(mut sys: Box<dyn IoSystem>) {
let mut log = vec!["press escape to exit when you're done".to_owned()];
let mut screen = Screen::new(sys.size());
loop {
screen.resize(sys.size());
for (line, row) in log.iter().rev().zip((0..screen.size().y()).rev()) {
for (char, col) in line.chars().zip(0..screen.size().x()) {
screen[row][col] = Cell::of(char);
}
}
sys.draw(&screen).expect("failed to render screen");
match sys.input().expect("failed to get input") {
Action::Closed | Action::KeyPress { key: Key::Escape } => break,
Action::Error(e) => panic!("{1}: {:?}", e, "got an error for input"),
other => log.push(format!("{:?}", other)),
}
if log.len() > screen.size().y() {
let diff = log.len() - screen.size().y();
log.drain(..diff);
}
}
sys.stop();
}
More examples
examples/color-demo.rs (line 21)
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
fn color_demo(mut sys: Box<dyn IoSystem>) {
let color_width = Color::all()
.into_iter()
.map(|c| format!("{:?}", c).len())
.max()
.unwrap();
let mut lines: Vec<Vec<Cell>> = Color::all()
.into_iter()
.map(|bg| {
let mut line = vec![];
for fg in Color::all() {
let text = format!("{:?} on {1:<2$} ", fg, format!("{:?}", bg), color_width);
line.extend(text.chars().map(move |c| Cell::of(c).fg(fg).bg(bg)));
}
line
})
.collect();
let width: usize = lines.iter().map(|l| l.len()).max().unwrap() + 5;
for line in &mut lines {
let bg = line[0].get_fmt().bg;
line.extend(repeat(Cell::of(' ').bg(bg)).take(width - line.len()));
}
let mut screen = Screen::new(XY(0, 0));
let mut pos = 0;
let mut moving = true;
'main: loop {
while let Some(action) = sys.poll_input().unwrap() {
match action {
Action::Closed | Action::KeyPress { key: Key::Escape } => break 'main,
Action::KeyPress {
key: Key::Char(' '),
} => moving = !moving,
_ => (),
}
}
if moving || sys.size() != screen.size() {
screen.resize(sys.size());
for row in 0..screen.size().y() {
let o_row = (row + pos) % lines.len();
for col in 0..screen.size().x() {
let o_col = (col + pos * 3) % width;
screen[row][col] = lines[o_row][o_col].clone();
}
}
sys.draw(&screen).expect("failed to render screen");
}
if moving {
pos += 1;
thread::sleep(Duration::from_millis(250));
} else {
thread::sleep(Duration::from_millis(50));
}
}
sys.stop();
}
pub fn data(self, ch: char) -> Self
Trait Implementations§
source§impl PartialEq for Cell
impl PartialEq for Cell
impl Eq for Cell
impl StructuralEq for Cell
impl StructuralPartialEq for Cell
Auto Trait Implementations§
impl RefUnwindSafe for Cell
impl Send for Cell
impl Sync for Cell
impl Unpin for Cell
impl UnwindSafe for Cell
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
source§impl<F> FormattedExt for Fwhere
F: Formatted,
impl<F> FormattedExt for Fwhere
F: Formatted,
source§fn fmt_of(self, rhs: &dyn Formatted) -> Self
fn fmt_of(self, rhs: &dyn Formatted) -> Self
Copy another item’s formatting into this one. Read more