Initial commit
This commit is contained in:
@@ -0,0 +1,106 @@
|
||||
use embedded_components::{Calendar, ComponentStyle, Gauge, ScrollingCalendar};
|
||||
use embedded_graphics::{
|
||||
pixelcolor::{raw::RawU2, BinaryColor, Rgb888},
|
||||
prelude::*,
|
||||
};
|
||||
use embedded_graphics_simulator::{
|
||||
BinaryColorTheme, OutputSettingsBuilder, SimulatorDisplay, Window,
|
||||
};
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq)]
|
||||
enum TriColor {
|
||||
White,
|
||||
Black,
|
||||
Red,
|
||||
}
|
||||
|
||||
impl PixelColor for TriColor {
|
||||
type Raw = RawU2;
|
||||
}
|
||||
|
||||
impl From<BinaryColor> for TriColor {
|
||||
fn from(value: BinaryColor) -> TriColor {
|
||||
match value {
|
||||
BinaryColor::On => TriColor::Black,
|
||||
BinaryColor::Off => TriColor::White,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Into<Rgb888> for TriColor {
|
||||
fn into(self) -> Rgb888 {
|
||||
match self {
|
||||
TriColor::Black => Rgb888::new(0, 0, 0),
|
||||
TriColor::White => Rgb888::new(255, 255, 255),
|
||||
TriColor::Red => Rgb888::new(180, 0, 0),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Rgb888> for TriColor {
|
||||
fn from(value: Rgb888) -> TriColor {
|
||||
match value {
|
||||
_ => TriColor::White,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() -> Result<(), core::convert::Infallible> {
|
||||
//let mut display = SimulatorDisplay::<BinaryColor>::new(Size::new(212, 104));
|
||||
//let mut display = SimulatorDisplay::<BinaryColor>::new(Size::new(800, 480));
|
||||
let mut display = SimulatorDisplay::<TriColor>::new(Size::new(800, 480));
|
||||
|
||||
let fg_color = TriColor::Black;
|
||||
let bg_color = TriColor::White;
|
||||
let hi_color = Some(TriColor::Red);
|
||||
|
||||
let gauge = Gauge {
|
||||
top_left: Point::new(300, 300),
|
||||
bezel: 1,
|
||||
border: 1,
|
||||
size: Size::new(200, 20),
|
||||
ratio: 0.5,
|
||||
fg_color,
|
||||
bg_color,
|
||||
text: "test test test test test",
|
||||
};
|
||||
gauge.draw(&mut display)?;
|
||||
|
||||
let calendar = Calendar {
|
||||
top_left: Point::new(10, 10),
|
||||
size: Size::new(196, 196),
|
||||
border: 1,
|
||||
fg_color,
|
||||
bg_color,
|
||||
hi_color,
|
||||
};
|
||||
calendar.draw(&mut display)?;
|
||||
|
||||
let calendar_style = ComponentStyle {
|
||||
border: 1,
|
||||
bezel: 1,
|
||||
fg_color,
|
||||
bg_color,
|
||||
hi_color: TriColor::Red,
|
||||
};
|
||||
|
||||
let calendar_week = ScrollingCalendar {
|
||||
top_left: Point::new(400, 10),
|
||||
size: Size::new(396, 396),
|
||||
style: calendar_style,
|
||||
day: chrono::Local::now()
|
||||
.naive_local()
|
||||
.date()
|
||||
.checked_add_signed(chrono::Duration::days(28 * 4))
|
||||
.unwrap(),
|
||||
weeks: 5,
|
||||
};
|
||||
calendar_week.draw(&mut display)?;
|
||||
|
||||
let output_settings = OutputSettingsBuilder::new()
|
||||
.theme(BinaryColorTheme::Default)
|
||||
.build();
|
||||
Window::new("Hello World", &output_settings).show_static(&display);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
Reference in New Issue
Block a user