pub struct Screen { /* private fields */ }Expand description
This is the main type for interacting with the LED Matrix Screen.
Implementations§
Source§impl Screen
impl Screen
Sourcepub fn open(path: &str) -> Result<Self, ScreenError>
pub fn open(path: &str) -> Result<Self, ScreenError>
Open the framebuffer to the screen at the given file-system path.
Examples found in repository?
examples/letter.rs (line 17)
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
examples/scroll-bottom-top.rs (line 15)
13fn main() {
14 // Connect to our LED Matrix screen.
15 let mut screen = Screen::open("/dev/fb1").unwrap();
16
17 // Get the default `FontCollection`.
18 let fonts = FontCollection::new();
19 // Create a sanitized `FontString`.
20 let sanitized = fonts.sanitize_str(" ^^^123^^^ ").unwrap();
21 // Render the `FontString` as a vector of pixel frames, with
22 // a stroke color of CYAN and a BLACK background.
23 let pixel_frames = sanitized.pixel_frames(PixelColor::CYAN, PixelColor::BLACK);
24
25 // Create a `Scroll` from the pixel frame vector.
26 let scroll = Scroll::new(&pixel_frames);
27
28 // Consume the `FrameSequence` returned by the `bottom_to_top` method.
29 scroll.bottom_to_top().for_each(|frame| {
30 println!("Now printing:");
31 println!("{:?}", frame);
32 screen.write_frame(&frame.frame_line());
33 ::std::thread::sleep(::std::time::Duration::from_millis(250));
34 });
35}examples/scroll-left-right.rs (line 15)
13fn main() {
14 // Connect to our LED Matrix screen.
15 let mut screen = Screen::open("/dev/fb1").unwrap();
16
17 // Get the default `FontCollection`.
18 let fonts = FontCollection::new();
19 // Create a sanitized `FontString`.
20 let sanitized = fonts.sanitize_str(" >>>123>>> ").unwrap();
21 // Render the `FontString` as a vector of pixel frames, with
22 // a stroke color of YELLOW and a BLACK background.
23 let pixel_frames = sanitized.pixel_frames(PixelColor::YELLOW, PixelColor::BLACK);
24
25 // Create a `Scroll` from the pixel frame vector.
26 let scroll = Scroll::new(&pixel_frames);
27
28 // Consume the `FrameSequence` returned by the `left_to_right` method.
29 scroll.left_to_right().for_each(|frame| {
30 println!("Now printing:");
31 println!("{:?}", frame);
32 screen.write_frame(&frame.frame_line());
33 ::std::thread::sleep(::std::time::Duration::from_millis(250));
34 });
35}examples/scroll-top-bottom.rs (line 15)
13fn main() {
14 // Connect to our LED Matrix screen.
15 let mut screen = Screen::open("/dev/fb1").unwrap();
16
17 // Get the default `FontCollection`.
18 let fonts = FontCollection::new();
19 // Create a sanitized `FontString`.
20 let sanitized = fonts.sanitize_str(" vvv123vvv ").unwrap();
21 // Render the `FontString` as a vector of pixel frames, with
22 // a stroke color of YELLOW and a BLACK background.
23 let pixel_frames = sanitized.pixel_frames(PixelColor::YELLOW, PixelColor::BLACK);
24
25 // Create a `Scroll` from the pixel frame vector.
26 let scroll = Scroll::new(&pixel_frames);
27
28 // Consume the `FrameSequence` returned by the `top_to_bottom` method.
29 scroll.top_to_bottom().for_each(|frame| {
30 println!("Now printing:");
31 println!("{:?}", frame);
32 screen.write_frame(&frame.frame_line());
33 ::std::thread::sleep(::std::time::Duration::from_millis(250));
34 });
35}examples/scroll-right-left.rs (line 15)
13fn main() {
14 // Connect to our LED Matrix screen.
15 let mut screen = Screen::open("/dev/fb1").unwrap();
16
17 // Get the default `FontCollection`.
18 let fonts = FontCollection::new();
19 // Create a sanitized `FontString`.
20 let sanitized = fonts.sanitize_str(" «««123««« ").unwrap();
21 // Render the `FontString` as a vector of pixel frames, with
22 // a stroke color of GREEN and a BLACK background.
23 let pixel_frames = sanitized.pixel_frames(PixelColor::GREEN, PixelColor::BLACK);
24
25 // Create a `Scroll` from the pixel frame vector.
26 let scroll = Scroll::new(&pixel_frames);
27
28 // Consume the `FrameSequence` returned by the `right_to_left` method.
29 scroll.right_to_left().for_each(|frame| {
30 println!("Now printing:");
31 println!("{:?}", frame);
32 screen.write_frame(&frame.frame_line());
33 ::std::thread::sleep(::std::time::Duration::from_millis(250));
34 });
35}examples/clip.rs (line 16)
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}Additional examples can be found in:
Sourcepub fn write_frame(&mut self, frame: &FrameLine)
pub fn write_frame(&mut self, frame: &FrameLine)
Write the contents of a FrameLine into the framebuffer. This will
render the frameline on the screen.
Examples found in repository?
examples/letter.rs (line 28)
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
examples/scroll-bottom-top.rs (line 32)
13fn main() {
14 // Connect to our LED Matrix screen.
15 let mut screen = Screen::open("/dev/fb1").unwrap();
16
17 // Get the default `FontCollection`.
18 let fonts = FontCollection::new();
19 // Create a sanitized `FontString`.
20 let sanitized = fonts.sanitize_str(" ^^^123^^^ ").unwrap();
21 // Render the `FontString` as a vector of pixel frames, with
22 // a stroke color of CYAN and a BLACK background.
23 let pixel_frames = sanitized.pixel_frames(PixelColor::CYAN, PixelColor::BLACK);
24
25 // Create a `Scroll` from the pixel frame vector.
26 let scroll = Scroll::new(&pixel_frames);
27
28 // Consume the `FrameSequence` returned by the `bottom_to_top` method.
29 scroll.bottom_to_top().for_each(|frame| {
30 println!("Now printing:");
31 println!("{:?}", frame);
32 screen.write_frame(&frame.frame_line());
33 ::std::thread::sleep(::std::time::Duration::from_millis(250));
34 });
35}examples/scroll-left-right.rs (line 32)
13fn main() {
14 // Connect to our LED Matrix screen.
15 let mut screen = Screen::open("/dev/fb1").unwrap();
16
17 // Get the default `FontCollection`.
18 let fonts = FontCollection::new();
19 // Create a sanitized `FontString`.
20 let sanitized = fonts.sanitize_str(" >>>123>>> ").unwrap();
21 // Render the `FontString` as a vector of pixel frames, with
22 // a stroke color of YELLOW and a BLACK background.
23 let pixel_frames = sanitized.pixel_frames(PixelColor::YELLOW, PixelColor::BLACK);
24
25 // Create a `Scroll` from the pixel frame vector.
26 let scroll = Scroll::new(&pixel_frames);
27
28 // Consume the `FrameSequence` returned by the `left_to_right` method.
29 scroll.left_to_right().for_each(|frame| {
30 println!("Now printing:");
31 println!("{:?}", frame);
32 screen.write_frame(&frame.frame_line());
33 ::std::thread::sleep(::std::time::Duration::from_millis(250));
34 });
35}examples/scroll-top-bottom.rs (line 32)
13fn main() {
14 // Connect to our LED Matrix screen.
15 let mut screen = Screen::open("/dev/fb1").unwrap();
16
17 // Get the default `FontCollection`.
18 let fonts = FontCollection::new();
19 // Create a sanitized `FontString`.
20 let sanitized = fonts.sanitize_str(" vvv123vvv ").unwrap();
21 // Render the `FontString` as a vector of pixel frames, with
22 // a stroke color of YELLOW and a BLACK background.
23 let pixel_frames = sanitized.pixel_frames(PixelColor::YELLOW, PixelColor::BLACK);
24
25 // Create a `Scroll` from the pixel frame vector.
26 let scroll = Scroll::new(&pixel_frames);
27
28 // Consume the `FrameSequence` returned by the `top_to_bottom` method.
29 scroll.top_to_bottom().for_each(|frame| {
30 println!("Now printing:");
31 println!("{:?}", frame);
32 screen.write_frame(&frame.frame_line());
33 ::std::thread::sleep(::std::time::Duration::from_millis(250));
34 });
35}examples/scroll-right-left.rs (line 32)
13fn main() {
14 // Connect to our LED Matrix screen.
15 let mut screen = Screen::open("/dev/fb1").unwrap();
16
17 // Get the default `FontCollection`.
18 let fonts = FontCollection::new();
19 // Create a sanitized `FontString`.
20 let sanitized = fonts.sanitize_str(" «««123««« ").unwrap();
21 // Render the `FontString` as a vector of pixel frames, with
22 // a stroke color of GREEN and a BLACK background.
23 let pixel_frames = sanitized.pixel_frames(PixelColor::GREEN, PixelColor::BLACK);
24
25 // Create a `Scroll` from the pixel frame vector.
26 let scroll = Scroll::new(&pixel_frames);
27
28 // Consume the `FrameSequence` returned by the `right_to_left` method.
29 scroll.right_to_left().for_each(|frame| {
30 println!("Now printing:");
31 println!("{:?}", frame);
32 screen.write_frame(&frame.frame_line());
33 ::std::thread::sleep(::std::time::Duration::from_millis(250));
34 });
35}examples/clip.rs (line 45)
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}Additional examples can be found in:
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Screen
impl RefUnwindSafe for Screen
impl Send for Screen
impl Sync for Screen
impl Unpin for Screen
impl UnwindSafe for Screen
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more