Skip to content

Commit

Permalink
Merge pull request #196 from bemyak/binary-color-compat
Browse files Browse the repository at this point in the history
Update to work with latest e-g and tinybmp (add Rgb565, Rgb555 the missing Color → RawU1 conversions) thanks to @bemyak
  • Loading branch information
caemor authored Dec 5, 2024
2 parents 2df6608 + 9c0fb76 commit 6992771
Showing 1 changed file with 69 additions and 2 deletions.
71 changes: 69 additions & 2 deletions src/color.rs
Original file line number Diff line number Diff line change
Expand Up @@ -300,6 +300,13 @@ impl From<embedded_graphics_core::pixelcolor::raw::RawU1> for Color {
}
}

#[cfg(feature = "graphics")]
impl From<Color> for embedded_graphics_core::pixelcolor::raw::RawU1 {
fn from(color: Color) -> Self {
Self::new(color.get_bit_value())
}
}

#[cfg(feature = "graphics")]
impl PixelColor for Color {
type Raw = embedded_graphics_core::pixelcolor::raw::RawU1;
Expand Down Expand Up @@ -339,8 +346,68 @@ impl From<Color> for embedded_graphics_core::pixelcolor::Rgb888 {
fn from(color: Color) -> Self {
use embedded_graphics_core::pixelcolor::RgbColor;
match color {
Color::Black => embedded_graphics_core::pixelcolor::Rgb888::BLACK,
Color::White => embedded_graphics_core::pixelcolor::Rgb888::WHITE,
Color::Black => Self::BLACK,
Color::White => Self::WHITE,
}
}
}

#[cfg(feature = "graphics")]
impl From<embedded_graphics_core::pixelcolor::Rgb565> for Color {
fn from(rgb: embedded_graphics_core::pixelcolor::Rgb565) -> Self {
use embedded_graphics_core::pixelcolor::RgbColor;
if rgb == RgbColor::BLACK {
Color::Black
} else if rgb == RgbColor::WHITE {
Color::White
} else {
// choose closest color
if (rgb.r() as u16 + rgb.g() as u16 + rgb.b() as u16) > 255 * 3 / 2 {
Color::White
} else {
Color::Black
}
}
}
}

#[cfg(feature = "graphics")]
impl From<Color> for embedded_graphics_core::pixelcolor::Rgb565 {
fn from(color: Color) -> Self {
use embedded_graphics_core::pixelcolor::RgbColor;
match color {
Color::Black => Self::BLACK,
Color::White => Self::WHITE,
}
}
}

#[cfg(feature = "graphics")]
impl From<embedded_graphics_core::pixelcolor::Rgb555> for Color {
fn from(rgb: embedded_graphics_core::pixelcolor::Rgb555) -> Self {
use embedded_graphics_core::pixelcolor::RgbColor;
if rgb == RgbColor::BLACK {
Color::Black
} else if rgb == RgbColor::WHITE {
Color::White
} else {
// choose closest color
if (rgb.r() as u16 + rgb.g() as u16 + rgb.b() as u16) > 255 * 3 / 2 {
Color::White
} else {
Color::Black
}
}
}
}

#[cfg(feature = "graphics")]
impl From<Color> for embedded_graphics_core::pixelcolor::Rgb555 {
fn from(color: Color) -> Self {
use embedded_graphics_core::pixelcolor::RgbColor;
match color {
Color::Black => Self::BLACK,
Color::White => Self::WHITE,
}
}
}
Expand Down

0 comments on commit 6992771

Please sign in to comment.