1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
//! `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][img1]
//!
//! # Examples
//!
//! The most convenient way to use this crate is by using the [`SevenSegmentStyle`] as a
//! character style for an [`embedded-graphics`] [`Text`]:
//!
//! ```
//! # fn main() -> Result<(), core::convert::Infallible> {
//! use embedded_graphics::{prelude::*, text::Text, pixelcolor::Rgb888};
//! use eg_seven_segment::SevenSegmentStyleBuilder;
//! # use embedded_graphics::mock_display::MockDisplay;
//! # let mut display = MockDisplay::new();
//! # display.set_allow_out_of_bounds_drawing(true);
//!
//! // 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)?;
//! # Ok(())
//! # }
//! ```
//!
//! Individual digits can also be drawn by using the [`Digit`] drawable:
//!
//! ```
//! # fn main() -> Result<(), core::convert::Infallible> {
//! use embedded_graphics::{prelude::*, text::Text, pixelcolor::Rgb888};
//! use eg_seven_segment::{SevenSegmentStyleBuilder, Digit, Segments};
//! # use embedded_graphics::mock_display::MockDisplay;
//! # let mut display = MockDisplay::new();
//! # display.set_allow_out_of_bounds_drawing(true);
//!
//! // 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)?;
//! # Ok(())
//! # }
//! ```
//!
//! <!-- README-LINKS
//! [`embedded-graphics`]: https://docs.rs/embedded-graphics
//! [`Text`]: https://docs.rs/embedded-graphics/latest/embeddded_graphics/text/struct.Text.html
//! [`DrawTarget`]: https://docs.rs/embedded-graphics/latest/embeddded_graphics/draw_target/struct.DrawTarget.html
//! [`SevenSegmentStyle`]: https://docs.rs/eg-seven-segment/latest/eg_seven_segment/struct.SevenSegmentStyle.html
//! [`Digit`]: https://docs.rs/eg-seven-segment/latest/eg_seven_segment/struct.Digit.html
//! [img1]: assets/styles.png
//! README-LINKS -->
//!
//! [`embedded-graphics`]: embedded_graphics
//! [`Text`]: embedded_graphics::text::Text
//! [`DrawTarget`]: embedded_graphics::draw_target::DrawTarget
//
pub use Digit;
pub use Segments;
pub use SevenSegmentStyle;
pub use SevenSegmentStyleBuilder;