Struct PixelColor

Source
pub struct PixelColor {
    pub red: u8,
    pub green: u8,
    pub blue: u8,
}
Expand description

24-bit RGB color pixel.

This is the fundamental representation for RGB colors.

Fields§

§red: u8§green: u8§blue: u8

Implementations§

Source§

impl PixelColor

Source

pub const BLACK: PixelColor

Source

pub const RED: PixelColor

Source

pub const BLUE: PixelColor

Source

pub const GREEN: PixelColor

Source

pub const WHITE: PixelColor

Source

pub const YELLOW: PixelColor

Source

pub const CYAN: PixelColor

Source

pub const MAGENTA: PixelColor

Source

pub fn new(red: u8, green: u8, blue: u8) -> Self

Create a new LED pixel color.

Source

pub fn from_rgb565_bytes(color: [u8; 2]) -> Self

Create a new LED pixel color from a pair of RGB565-encoded bytes.

Source

pub fn rgb565(&self) -> [u8; 2]

Encodes the current LED pixel color into a pair of RGB565-encoded bytes.

Source

pub fn dim(self, scale: f32) -> PixelColor

Sets the brightness of this colour.

The scale value should be between 0 and 1. Values outside this range are clamped.

Examples found in repository?
examples/letter.rs (line 19)
16fn main() {
17    let mut screen = Screen::open("/dev/fb1").unwrap();
18
19    let white_50_pct = PixelColor::WHITE.dim(0.5);
20
21    let letter = "Dear Toño, I am well. Thank you. Bye. - ゆにち";
22
23    let screen_text = FONT_COLLECTION.sanitize_str(letter).unwrap();
24
25    for unicode in screen_text.chars() {
26        if let Some(symbol) = FONT_COLLECTION.get(unicode) {
27            let frame = font_to_frame(symbol.byte_array(), white_50_pct);
28            screen.write_frame(&frame);
29        }
30        thread::sleep(Duration::from_millis(800));
31    }
32}
More examples
Hide additional examples
examples/clip.rs (line 19)
15fn main() {
16    let mut screen = Screen::open("/dev/fb1").unwrap();
17
18    let letters = "a e i o u ";
19    let letter_color = PixelColor::YELLOW.dim(0.5);
20
21    let frames = letters
22        .chars()
23        .map(|sym| {
24            let font = FONT_COLLECTION.get(sym).unwrap();
25            font_to_pixel_frame(font.byte_array(), letter_color)
26        })
27        .collect::<Vec<PixelFrame>>();
28
29    // create a sequence of clips that will scroll each character-whitespace pair
30    // from appearing to move from right to left.
31    let frame_reel: Vec<PixelFrame> = frames.chunks(2).fold(Vec::new(), |mut v, chunk| match chunk
32        .len()
33    {
34        2 => {
35            let clip = chunk[0].build_clip(&chunk[1]);
36            for i in 0..=8 {
37                v.push(clip.offset(Offset::left(i)));
38            }
39            v
40        }
41        _ => panic!("this frame reel will only display &str of even length (divisible by 2)"),
42    });
43
44    for frame in &frame_reel {
45        screen.write_frame(&frame.frame_line());
46        ::std::thread::sleep(::std::time::Duration::from_millis(750));
47    }
48}
examples/offset.rs (line 18)
14fn main() {
15    let mut screen = Screen::open("/dev/fb1").unwrap();
16    let fonts = FontCollection::new();
17
18    for &(sym, color) in &[('þ', PixelColor::CYAN), ('ß', PixelColor::WHITE.dim(0.5))] {
19        let font = fonts.get(sym).unwrap();
20        let symbol = font_to_pixel_frame(font.byte_array(), color);
21
22        // Starts with an empty screen, then the symbol slides from the left,
23        // reaching the offset = 0 position, which renders the entire symbol on
24        // the screen.
25        for i in 0..=8 {
26            screen.write_frame(&symbol.offset(Offset::left(8 - i)).frame_line());
27            ::std::thread::sleep(::std::time::Duration::from_millis(500));
28        }
29        // Slides the displayed symbol to the right until it disappears.
30        for i in 0..=8 {
31            screen.write_frame(&symbol.offset(Offset::right(i)).frame_line());
32            ::std::thread::sleep(::std::time::Duration::from_millis(500));
33        }
34
35        // Starts with an empty screen, then the symbol slides from the top,
36        // reaching the offset = 0 position, which renders the entire symbol on
37        // the screen.
38        for i in 0..=8 {
39            screen.write_frame(&symbol.offset(Offset::top(8 - i)).frame_line());
40            ::std::thread::sleep(::std::time::Duration::from_millis(500));
41        }
42        // Slides the displayed symbol to the bottom until it disappears.
43        for i in 0..=8 {
44            screen.write_frame(&symbol.offset(Offset::bottom(i)).frame_line());
45            ::std::thread::sleep(::std::time::Duration::from_millis(500));
46        }
47    }
48    screen.write_frame(&PixelFrame::new(&[PixelColor::BLACK; 64]).frame_line());
49}

Trait Implementations§

Source§

impl Clone for PixelColor

Source§

fn clone(&self) -> PixelColor

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PixelColor

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for PixelColor

Source§

fn default() -> PixelColor

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for PixelColor

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<'a> From<&'a PixelColor> for Rgb565

Source§

fn from(color: &'a PixelColor) -> Self

Converts to this type from the input type.
Source§

impl From<(u8, u8, u8)> for PixelColor

Source§

fn from(color: (u8, u8, u8)) -> Self

Converts to this type from the input type.
Source§

impl From<PixelColor> for Rgb565

Source§

fn from(color: PixelColor) -> Self

Converts to this type from the input type.
Source§

impl From<Rgb565> for PixelColor

Source§

fn from(color: Rgb565) -> Self

Converts to this type from the input type.
Source§

impl Into<(u8, u8, u8)> for PixelColor

Source§

fn into(self) -> (u8, u8, u8)

Converts this type into the (usually inferred) input type.
Source§

impl PartialEq for PixelColor

Source§

fn eq(&self, other: &PixelColor) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for PixelColor

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl Copy for PixelColor

Source§

impl StructuralPartialEq for PixelColor

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,