use super::writer::*;
use std::io::*;
#[derive(Clone, Debug, Hash, Eq, PartialEq)]
pub struct PlaceholderPrinter {
pub id: usize,
pub position: Option<(usize, usize)>,
pub background_color: Option<usize>,
}
impl PlaceholderPrinter {
pub fn new(id: usize) -> Self {
Self { id, background_color: None, position: None }
}
pub fn set_background_color(&mut self, background_color: usize) {
self.background_color = Some(background_color);
}
pub fn with_background_color(mut self, background_color: usize) -> Self {
self.set_background_color(background_color);
self
}
pub fn set_position(&mut self, x: usize, y: usize) {
self.position = Some((x, y));
}
pub fn with_position(mut self, x: usize, y: usize) -> Self {
self.set_position(x, y);
self
}
pub fn print_cell(&self, column: usize, row: usize) {
let mut writer = stdout().lock();
writer
.write_placeholder_cell(self.id, column, row, self.position, self.background_color)
.expect("write_placeholder_cell");
writer.flush().expect("flush");
}
pub fn print_row(&self, start_column: usize, row: usize, columns: usize) {
let mut writer = stdout().lock();
writer
.write_placeholder_row(self.id, start_column, row, columns, self.position, self.background_color)
.expect("write_placeholder_row");
writer.flush().expect("flush");
}
pub fn print_block(&self, start_column: usize, start_row: usize, columns: usize, rows: usize) {
let mut writer = stdout().lock();
writer
.write_placeholder_block(
self.id,
start_column,
start_row,
columns,
rows,
self.position,
self.background_color,
)
.expect("write_placeholder_block");
writer.flush().expect("flush");
}
}