logo
macro_rules! egline {
    (start = $start:expr, end = $end:expr $(,)?) => { ... };
    (start = $start:expr, end = $end:expr, style = $style:expr $(,)?) => { ... };
}
Expand description

Create a Line with optional styling using a convenient macro.

Note that only the stroke property has any effect on lines currently.

use embedded_graphics::{
    egline,
    pixelcolor::Rgb565,
    prelude::*,
    primitive_style,
    primitives::Line,
    style::{PrimitiveStyle, Styled},
};

let line: Styled<Line, PrimitiveStyle<Rgb565>> = egline!(start = (10, 20), end = (30, 40));

let stroke_line: Styled<Line, PrimitiveStyle<Rgb565>> = egline!(
    start = (10, 20),
    end = (30, 40),
    style = primitive_style!(stroke_color = Rgb565::BLUE)
);

Style properties like stroke_color map to methods on the PrimitiveStyleBuilder struct. For example, the following code makes two identical lines:

use embedded_graphics::{
    egline,
    pixelcolor::Rgb565,
    prelude::*,
    primitive_style,
    primitives::Line,
    style::{PrimitiveStyle, PrimitiveStyleBuilder, Styled},
};

let line_1: Styled<Line, PrimitiveStyle<Rgb565>> = egline!(
    start = (10, 20),
    end = (30, 40),
    style = primitive_style!(
        stroke_color = Rgb565::BLUE,
        fill_color = Rgb565::YELLOW,
        stroke_width = 1
    )
);

let style = PrimitiveStyleBuilder::new()
    .fill_color(Rgb565::YELLOW)
    .stroke_color(Rgb565::BLUE)
    .stroke_width(1)
    .build();

let line_2: Styled<Line, PrimitiveStyle<Rgb565>> =
    Line::new(Point::new(10, 20), Point::new(30, 40)).into_styled(style);

assert_eq!(line_1, line_2);