Use Frame for rendering instead of Buffer

This commit is contained in:
Joscha 2022-05-21 22:33:37 +02:00
parent cc2f102141
commit add2f25aba
5 changed files with 85 additions and 53 deletions

41
src/frame.rs Normal file
View file

@ -0,0 +1,41 @@
use crossterm::style::ContentStyle;
use crate::buffer::Buffer;
pub use crate::buffer::{Pos, Size};
#[derive(Debug, Default)]
pub struct Frame {
pub(crate) buffer: Buffer,
cursor: Option<Pos>,
}
impl Frame {
pub fn size(&self) -> Size {
self.buffer.size()
}
pub fn reset(&mut self) {
self.buffer.reset();
self.cursor = None;
}
pub fn cursor(&self) -> Option<Pos> {
self.cursor
}
pub fn set_cursor(&mut self, pos: Option<Pos>) {
self.cursor = pos;
}
pub fn show_cursor(&mut self, pos: Pos) {
self.set_cursor(Some(pos));
}
pub fn hide_cursor(&mut self) {
self.set_cursor(None);
}
pub fn write(&mut self, pos: Pos, content: &str, style: ContentStyle) {
self.buffer.write(pos, content, style);
}
}