embedded_graphics_core/
lib.rs

1//! embedded-graphics-core contains the core components of [embedded-graphics] that are required to
2//! add embedded-graphics support to display drivers, image libraries, text renderers and other
3//! third party crates.
4//!
5//! This crate should only be used by crates that extend embedded-graphics.
6//! Applications should instead depend on [embedded-graphics] itself.
7//!
8//! Like any other crate, embedded-graphics-core will change over time, however it will change at a
9//! much slower rate than embedded-graphics itself, and will likely release fewer breaking changes.
10//! This will provide more stability and compatability for the weider embedded-graphics ecosystem,
11//! whilst allowing non-core features of embedded-graphics to evolve at a faster pace. The same
12//! version of embedded-graphics-core may be used for multiple major versions of embedded-graphics.
13//!
14//! ## Core functionality
15//!
16//! * [`DrawTarget`] - By implementing a draw target for a display driver, all embedded-graphics drawables can be drawn to that display.
17//! * [`Drawable`] - This trait can be implemented to make an object drawable to any [`DrawTarget`]. Examples include shapes, text, UI elements, etc.
18//! * [`ImageDrawable`]
19//! * Color types - see below.
20//! * Geometry - [`Point`], [`Size`] and [`Rectangle`] provide ways of defining positions, dimensions and rectangular areas respectively.
21//!
22//! # Colors
23//!
24//! The [`pixelcolor`] module provides various standard color types, from [`BinaryColor`] to
25//! [`Rgb888`]. See the [`pixelcolor`] module documentation for the complete list of color depths
26//! and formats available.
27//!
28//! # Display drivers
29//!
30//! See the [`DrawTarget`] documentation for examples on how to integrate embedded-graphics with a
31//! display driver using the [`DrawTarget`] trait.
32//!
33//! # Images
34//!
35//! The [`ImageDrawable`] trait should be implemented for any image or image-like item, for example
36//! a spritemap.
37//!
38//! <!-- README-LINKS
39//! [`Pixel`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/drawable/struct.Pixel.html
40//! [`Point`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/geometry/struct.Point.html
41//! [`Size`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/geometry/struct.Size.html
42//! [`Drawable`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/drawable/trait.Drawable.html
43//! [`DrawTarget`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/draw_target/trait.DrawTarget.html
44//! [`Rectangle`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_primitives-core/rectangle/struct.Rectangle.html
45//! [`Dimensions`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/geometry/trait.Dimensions.html
46//! [`OriginDimensions`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/geometry/trait.OriginDimensions.html
47//! [`BinaryColor`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/pixelcolor/enum.BinaryColor.html
48//! [`Rgb888`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/pixelcolor/struct.Rgb888.html
49//! [`ImageDrawable`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/image/trait.ImageDrawable.html
50//! [`pixelcolor`]: https://docs.rs/embedded-graphics-core/latest/embedded_graphics_core/pixelcolor/trait.PixelColor.html
51//! README-LINKS -->
52//!
53//! # Features
54//!
55//!  - `defmt` - implements `defmt::Format` for all types where this is possible.
56//!
57//! [embedded-graphics]: https://docs.rs/embedded-graphics
58//! [`Pixel`]: drawable::Pixel
59//! [`Point`]: geometry::Point
60//! [`Size`]: geometry::Size
61//! [`Drawable`]: drawable::Drawable
62//! [`DrawTarget`]: draw_target::DrawTarget
63//! [`Rectangle`]: primitives::rectangle::Rectangle
64//! [`Dimensions`]: geometry::Dimensions
65//! [`OriginDimensions`]: geometry::OriginDimensions
66//! [`BinaryColor`]: pixelcolor::BinaryColor
67//! [`Rgb888`]: pixelcolor::Rgb888
68//! [`ImageDrawable`]: image::ImageDrawable
69
70#![doc(
71    html_logo_url = "https://raw.githubusercontent.com/embedded-graphics/embedded-graphics/b225511f390c0ed9bc065eb67d05125845312148/assets/logo_core.svg?sanitize=true"
72)]
73#![no_std]
74#![deny(missing_docs)]
75#![deny(missing_debug_implementations)]
76#![deny(missing_copy_implementations)]
77#![deny(trivial_casts)]
78#![deny(trivial_numeric_casts)]
79#![deny(unsafe_code)]
80#![deny(unstable_features)]
81#![deny(unused_import_braces)]
82#![deny(unused_qualifications)]
83#![deny(rustdoc::broken_intra_doc_links)]
84#![deny(rustdoc::private_intra_doc_links)]
85
86pub mod draw_target;
87mod drawable;
88pub mod geometry;
89pub mod image;
90pub mod pixelcolor;
91pub mod prelude;
92pub mod primitives;
93
94pub use drawable::{Drawable, Pixel};