Module embedded_graphics_core::pixelcolor
source · Expand description
Pixel color types.
This module contains structs for commonly used pixel color formats and
conversions between them. The raw
module provides additional functions
to convert colors to and from raw data for use with images and displays.
§Implementing custom color types
Custom color types can be added by implementing the PixelColor
trait.
The following example shows how to implement a new color type for a
3 color EPD display.
use embedded_graphics::{
geometry::Size, prelude::*, primitives::{Rectangle, PrimitiveStyle},
};
/// Color with 3 states.
#[derive(Copy, Clone, Eq, PartialEq, Ord, PartialOrd, Hash, Debug)]
pub enum EpdColor {
White,
Black,
Red,
}
/// The `Raw` can be is set to `()` because `EpdColor` doesn't need to be
/// converted to raw data for the display and isn't stored in images.
impl PixelColor for EpdColor {
type Raw = ();
}
/// Mock EPD display.
pub struct EpdDisplay {}
impl DrawTarget for EpdDisplay {
type Color = EpdColor;
type Error = core::convert::Infallible;
fn draw_iter<I>(&mut self, pixels: I) -> Result<(), Self::Error>
where
I: IntoIterator<Item = Pixel<Self::Color>>,
{
for Pixel(point, color) in pixels.into_iter() {
match color {
EpdColor::White => {} // draw white pixel at `point`
EpdColor::Black => {} // draw black pixel at `point`
EpdColor::Red => {} // draw red pixel at `point`
}
}
Ok(())
}
}
impl OriginDimensions for EpdDisplay {
fn size(&self) -> Size {
Size::new(300, 300)
}
}
let mut display = EpdDisplay {};
Rectangle::new(Point::new(0, 0), Size::new(100, 100))
.into_styled(PrimitiveStyle::with_fill(EpdColor::White))
.draw(&mut display)?;
Rectangle::new(Point::new(100, 0), Size::new(100, 100))
.into_styled(PrimitiveStyle::with_fill(EpdColor::Black))
.draw(&mut display)?;
Rectangle::new(Point::new(200, 0), Size::new(100, 100))
.into_styled(PrimitiveStyle::with_fill(EpdColor::Red))
.draw(&mut display)?;
The implementation of the DrawTarget
trait uses a match
statement to
draw the specified color and doesn’t depend on the raw data conversions,
see the raw
module documentation for an example that uses this feature.
Modules§
- Raw color types.
Structs§
- Bgr555 color.
- Bgr565 color.
- Bgr666 color.
- Bgr888 color.
- 2 bit grayscale color.
- 4 bit grayscale color.
- 8 bit grayscale color.
- Rgb555 color.
- Rgb565 color.
- Rgb666 color.
- Rgb888 color.
Enums§
- Binary color.
Traits§
- Grayscale color.
- Convert a
PixelColor
into its underlying storage type - Pixel color trait.
- RGB color.
- Named colors as defined in the CSS specification.