Expand description

embedded-graphics-core contains the core components of embedded-graphics that are required to add embedded-graphics support to display drivers, image libraries, text renderers and other third party crates.

This crate should only be used by crates that extend embedded-graphics. Applications should instead depend on embedded-graphics itself.

Like any other crate, embedded-graphics-core will change over time, however it will change at a much slower rate than embedded-graphics itself, and will likely release fewer breaking changes. This will provide more stability and compatability for the weider embedded-graphics ecosystem, whilst allowing non-core features of embedded-graphics to evolve at a faster pace. The same version of embedded-graphics-core may be used for multiple major versions of embedded-graphics.

Core functionality

  • DrawTarget - By implementing a draw target for a display driver, all embedded-graphics drawables can be drawn to that display.
  • Drawable - This trait can be implemented to make an object drawable to any DrawTarget. Examples include shapes, text, UI elements, etc.
  • ImageDrawable
  • Color types - see below.
  • Geometry - Point, Size and Rectangle provide ways of defining positions, dimensions and rectangular areas respectively.


The pixelcolor module provides various standard color types, from BinaryColor to Rgb888. See the pixelcolor module documentation for the complete list of color depths and formats available.

Display drivers

See the DrawTarget documentation for examples on how to integrate embedded-graphics with a display driver using the DrawTarget trait.


The ImageDrawable trait should be implemented for any image or image-like item, for example a spritemap.


  • defmt - implements defmt::Format for all types where this is possible.




  • Marks an object as “drawable”. Must be implemented for all graphics objects