Crate embedded_layout[−][src]
Expand description
Enable simple layout operations in embedded-graphics
This crate extends embedded-graphics with tools that ease positioning of drawable objects.
embedded-layout consists of three main parts:
- alignments that can be used to position two objects relative to one another
horizontalNoAlignment,Left,Right,CenterLeftToRight,RightToLeft
verticalNoAlignment,Top,Bottom,CenterTopToBottom,BottomToTop
- layouts that can be used to arrange multiple views
LinearLayout
- view groups which are collections of view objects
Chainto create ad-hoc collections (can hold views of different types)Viewsto create view groups from arrays and slices (can only hold views of a single type)derive(ViewGroup)to turn any plain old Rust struct into a view group
Views
The term “view” refers to anything embedded-layout can work with. Basically, a view is an
object that can be displayed. View is the most basic trait in embedded-layout. Views
implement the View trait to enable translation and alignment operations on them, and also to
allow them to be used with layouts.
View is implemented for embedded-graphics display objects. There’s also an example about
how you can implement custom View objects.
Examples
The examples are based on the embedded-graphics simulator. The simulator is built on top of
SDL2. See the simulator README for more information.
Draw some text to the center of the display
use embedded_graphics::{ mono_font::{ascii::FONT_6X9, MonoTextStyle}, pixelcolor::BinaryColor, prelude::*, text::Text, }; use embedded_layout::prelude::*; // Create a Rectangle from the display's dimensions let display_area = display.bounding_box(); let text_style = MonoTextStyle::new(&FONT_6X9, BinaryColor::On); Text::new("Hello!", Point::zero(), text_style) // align text to the center of the display .align_to(&display_area, horizontal::Center, vertical::Center) .draw(&mut display) .unwrap();
Use LinearLayout to arrange multiple objects
use embedded_graphics::{ mono_font::{ascii::FONT_6X9, MonoTextStyle}, pixelcolor::BinaryColor, prelude::*, text::Text, }; use embedded_layout::{layout::linear::LinearLayout, prelude::*}; let display_area = display.bounding_box(); let text_style = MonoTextStyle::new(&FONT_6X9, BinaryColor::On); LinearLayout::vertical( Chain::new(Text::new("Vertical", Point::zero(), text_style)) .append(Text::new("Linear", Point::zero(), text_style)) .append(Text::new("Layout", Point::zero(), text_style)) ) .with_alignment(horizontal::Center) .arrange() .align_to(&display_area, horizontal::Center, vertical::Center) .draw(&mut display) .unwrap();
Modules
Alignment operations
Layouts - arrange multiple views
Create static chains of objects with different types.
The essentials. Also contains most of embedded-graphics' prelude.
Utility collection module
ViewGroup definition and implementation for common types.
Macros
Creates an object chain from the argument types.
Traits
A View is the base unit for most of the embedded-layout operations.