diff --git a/Cargo.lock b/Cargo.lock index 83acb93..8a465d3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -148,6 +148,7 @@ dependencies = [ name = "showbits-thermal-printer" version = "0.0.0" dependencies = [ + "palette", "showbits-common", ] diff --git a/Cargo.toml b/Cargo.toml index 0f24f4d..90dbe07 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,6 +7,7 @@ version = "0.0.0" edition = "2021" [workspace.dependencies] +palette = "0.7.5" showbits-common.path = "./showbits-common" [workspace.lints] diff --git a/showbits-common/Cargo.toml b/showbits-common/Cargo.toml index f34942a..5f02ead 100644 --- a/showbits-common/Cargo.toml +++ b/showbits-common/Cargo.toml @@ -5,7 +5,7 @@ edition.workspace = true [dependencies] anyhow = "1.0.80" -palette = "0.7.5" +palette.workspace = true [lints] workspace = true diff --git a/showbits-thermal-printer/Cargo.toml b/showbits-thermal-printer/Cargo.toml index 68140a7..b721531 100644 --- a/showbits-thermal-printer/Cargo.toml +++ b/showbits-thermal-printer/Cargo.toml @@ -4,6 +4,7 @@ version.workspace = true edition.workspace = true [dependencies] +palette.workspace = true showbits-common.workspace = true [lints] diff --git a/showbits-thermal-printer/src/color.rs b/showbits-thermal-printer/src/color.rs new file mode 100644 index 0000000..5183c8b --- /dev/null +++ b/showbits-thermal-printer/src/color.rs @@ -0,0 +1,32 @@ +use palette::Srgb; +use showbits_common::Color; + +#[derive(Clone, Copy)] +pub enum PixelBw { + Black, + White, + Transparent, + Invert, +} + +impl Color for PixelBw { + fn to_srgb(self) -> Srgb { + match self { + Self::Black => Srgb::new(0.0, 0.0, 0.0), + Self::White => Srgb::new(1.0, 1.0, 1.0), + _ => Srgb::new(1.0, 0.0, 1.0), + } + } + + fn over(self, other: Self) -> Self { + match (self, other) { + (Self::Black, _) => Self::Black, + (Self::White, _) => Self::White, + (Self::Transparent, p) => p, + (Self::Invert, Self::Black) => Self::White, + (Self::Invert, Self::White) => Self::Black, + (Self::Invert, Self::Invert) => Self::Transparent, + (Self::Invert, Self::Transparent) => Self::Invert, + } + } +} diff --git a/showbits-thermal-printer/src/main.rs b/showbits-thermal-printer/src/main.rs index bed65fa..0009322 100644 --- a/showbits-thermal-printer/src/main.rs +++ b/showbits-thermal-printer/src/main.rs @@ -1,3 +1,5 @@ +mod color; + use showbits_common::Vec2; fn main() {