pub struct Buffer { /* private fields */ }
Expand description
A screen buffer that can be rendered to, has a size
This is the backbone of ascii-forge
Example
use ascii_forge::prelude::*;
// A 30x30 buffer window
let mut buffer = Buffer::new(30, 30);
// Render Hello World to the top left of the buffer
render!(
buffer, {
(0, 0) => "Hello World!"
}
);
Implementations§
Source§impl Buffer
impl Buffer
Sourcepub fn new(size: impl Into<Vec2>) -> Self
pub fn new(size: impl Into<Vec2>) -> Self
Creates a new buffer of empty cells with the given size.
Sourcepub fn set<C: Into<Cell>>(&mut self, loc: impl Into<Vec2>, cell: C)
pub fn set<C: Into<Cell>>(&mut self, loc: impl Into<Vec2>, cell: C)
Sets a cell at the given location to the given cell
Sourcepub fn fill<C: Into<Cell>>(&mut self, cell: C)
pub fn fill<C: Into<Cell>>(&mut self, cell: C)
Sets all cells at the given location to the given cell
Sourcepub fn get(&self, loc: impl Into<Vec2>) -> &Cell
pub fn get(&self, loc: impl Into<Vec2>) -> &Cell
Returns a reverence to the cell at the given location.
Sourcepub fn get_mut(&mut self, loc: impl Into<Vec2>) -> &mut Cell
pub fn get_mut(&mut self, loc: impl Into<Vec2>) -> &mut Cell
Returns a mutable reference to the cell at the given location.
Sourcepub fn diff<'a>(&self, other: &'a Buffer) -> Vec<(Vec2, &'a Cell)>
pub fn diff<'a>(&self, other: &'a Buffer) -> Vec<(Vec2, &'a Cell)>
Returns the cells and locations that are different between the two buffers
Sourcepub fn shrink(&mut self)
pub fn shrink(&mut self)
Shrinks the buffer to the given size by dropping any cells that are only whitespace
Sourcepub fn resize(&mut self, new_size: impl Into<Vec2>)
pub fn resize(&mut self, new_size: impl Into<Vec2>)
Resizes the buffer while retaining elements that have already been rendered
Sourcepub fn sized_element<R: Render>(item: R) -> Self
pub fn sized_element<R: Render>(item: R) -> Self
Creates a Buffer from the given element with the minimum size it could have for that element. Useful for if you want to store any set of render elements in a custom element.