1use serde::{Deserialize, Serialize};
2
3mod colour;
4pub use colour::*;
5
6#[derive(Serialize, Deserialize, Clone, Debug)]
7pub struct Render {
8 glyph: char,
9 fg: String,
10 bg: Option<String>,
11 x: i32,
12 y: i32,
13}
14
15pub type RenderVec = Vec<Render>;
16
17pub trait Renderable {
18 fn fg(&self) -> Colour;
19
20 fn bg(&self) -> Option<Colour>;
21
22 fn char(&self) -> char;
23
24 fn make_render(&self, x: i32, y: i32) -> Render {
25 Render {
26 x,
27 y,
28 fg: self.fg().to_string(),
29 bg: self.bg().map(|bg| bg.to_string()),
30 glyph: self.char(),
31 }
32 }
33}