1#[cfg(feature = "default")]
2extern crate sensehat_screen;
3
4#[cfg(feature = "default")]
5use sensehat_screen::Offset;
6#[cfg(feature = "default")]
7use sensehat_screen::{font_to_pixel_frame, PixelColor, PixelFrame, Screen, FONT_COLLECTION};
8
9#[cfg(not(feature = "default"))]
10fn main() {
11 unimplemented!("This examples needs the 'default' features.");
12}
13
14#[cfg(feature = "default")]
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 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}