#embedded-graphics #graphics #font #text

no-std eg-seven-segment

Seven-segment displays for embedded-graphics

2 unstable releases

0.2.0 Sep 28, 2023
0.1.0 Mar 27, 2022

#316 in Embedded development

Download history 1/week @ 2024-01-17 82/week @ 2024-01-24 48/week @ 2024-01-31 4/week @ 2024-02-14 38/week @ 2024-02-21 128/week @ 2024-02-28 58/week @ 2024-03-06 41/week @ 2024-03-13 95/week @ 2024-03-20 6/week @ 2024-03-27

202 downloads per month
Used in stm32h7xx-hal

MIT/Apache

78KB
1.5K SLoC

eg-seven-segment

CI Crates.io Docs.rs embedded-graphics on Matrix

eg-seven-segment is a seven-segment display text renderer for use with embedded-graphics. It can be used to display virtual seven-segment displays on any embedded-graphics DrawTarget. The appearance of the drawn digits can be configured to achieve a wide variety of styles.

eg-seven-segment example

Examples

The most convenient way to use this crate is by using the SevenSegmentStyle as a character style for an embedded-graphics Text:

use embedded_graphics::{prelude::*, text::Text, pixelcolor::Rgb888};
use eg_seven_segment::SevenSegmentStyleBuilder;

// Define a new style.
let style = SevenSegmentStyleBuilder::new()
    .digit_size(Size::new(10, 20)) // digits are 10x20 pixels
    .digit_spacing(5)              // 5px spacing between digits
    .segment_width(5)              // 5px wide segments
    .segment_color(Rgb888::GREEN)  // active segments are green
    .build();

// Use the style to draw text to a embedded-graphics `DrawTarget`.
Text::new("12:42", Point::new(5, 25), style).draw(&mut display)?;

Individual digits can also be drawn by using the Digit drawable:

use embedded_graphics::{prelude::*, text::Text, pixelcolor::Rgb888};
use eg_seven_segment::{SevenSegmentStyleBuilder, Digit, Segments};

// Define a new style.
let style = SevenSegmentStyleBuilder::new()
    .digit_size(Size::new(10, 20)) // digits are 10x20 pixels
    .digit_spacing(5)              // 5px spacing between digits
    .segment_width(5)              // 5px wide segments
    .segment_color(Rgb888::GREEN)  // active segments are green
    .build();

// Draw digit with active segment A at the origin.
let next = Digit::new(Segments::A, Point::zero())
    .into_styled(style)
    .draw(&mut display)?;

// Draw `0` digit the the right of the previous digit.
Digit::new('0'.try_into().unwrap(), next)
    .into_styled(style)
    .draw(&mut display)?;

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Dependencies

~3.5MB
~38K SLoC