use std::convert::Infallible;
use embedded_graphics::{
mono_font::{ascii::FONT_6X10, MonoTextStyleBuilder},
pixelcolor::Rgb888,
prelude::*,
primitives::Rectangle,
text::LineHeight,
};
use embedded_graphics_simulator::{OutputSettingsBuilder, SimulatorDisplay, Window};
use embedded_text::{
style::{HeightMode, TextBoxStyleBuilder},
TextBox,
};
fn main() -> Result<(), Infallible> {
let text = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.";
let text_box_style = TextBoxStyleBuilder::new()
.height_mode(HeightMode::FitToText)
.line_height(LineHeight::Pixels(12))
.build();
let underlined_style = MonoTextStyleBuilder::new()
.font(&FONT_6X10)
.text_color(Rgb888::WHITE)
.underline_with_color(Rgb888::GREEN)
.build();
let strikethrough_style = MonoTextStyleBuilder::new()
.font(&FONT_6X10)
.text_color(Rgb888::WHITE)
.strikethrough_with_color(Rgb888::RED)
.build();
let background_style = MonoTextStyleBuilder::new()
.font(&FONT_6X10)
.text_color(Rgb888::WHITE)
.background_color(Rgb888::CSS_STEEL_BLUE)
.build();
let text_box = TextBox::with_textbox_style(
text,
Rectangle::new(Point::zero(), Size::new(97, 0)),
underlined_style,
text_box_style,
);
let text_box2 = TextBox::with_textbox_style(
text,
Rectangle::new(Point::new(96, 0), Size::new(97, 0)),
strikethrough_style,
text_box_style,
);
let text_box3 = TextBox::with_textbox_style(
text,
Rectangle::new(Point::new(192, 0), Size::new(97, 0)),
background_style,
text_box_style,
);
let mut display = SimulatorDisplay::new(Size::new(
text_box.bounding_box().size.width
+ text_box2.bounding_box().size.width
+ text_box3.bounding_box().size.width,
text_box
.bounding_box()
.size
.height
.max(text_box2.bounding_box().size.height)
.max(text_box3.bounding_box().size.height),
));
text_box.draw(&mut display)?;
text_box2.draw(&mut display)?;
text_box3.draw(&mut display)?;
let output_settings = OutputSettingsBuilder::new().scale(2).build();
Window::new("Hello TextBox", &output_settings).show_static(&display);
Ok(())
}