Embedded graphics

Build Status

A small 2D graphics library to draw things on embedded graphical LCDs, like the SSD1306 OLED display.

It currently only supports monochrome displays. Contributions to support full colour as well are very welcome!

Example from the SSD1306 driver:

```rust

![no_std]

extern crate cortexm; extern crate embeddedgraphics; extern crate embeddedhal as hal; extern crate panicabort; extern crate ssd1306; extern crate stm32f103xxhal as bluepill;

use bluepill::i2c::{DutyCycle, I2c, Mode}; use bluepill::prelude::; use embedded_graphics::image::Image1BPP; use embedded_graphics::prelude::; use ssd1306::{mode::GraphicsMode, Builder};

fn main() { let dp = bluepill::stm32f103xx::Peripherals::take().unwrap(); let mut flash = dp.FLASH.constrain(); let mut rcc = dp.RCC.constrain(); let clocks = rcc.cfgr.freeze(&mut flash.acr); let mut afio = dp.AFIO.constrain(&mut rcc.apb2); let mut gpiob = dp.GPIOB.split(&mut rcc.apb2); let scl = gpiob.pb8.intoalternateopendrain(&mut gpiob.crh); let sda = gpiob.pb9.intoalternateopen_drain(&mut gpiob.crh);

let i2c = I2c::i2c1(
    dp.I2C1,
    (scl, sda),
    &mut afio.mapr,
    Mode::Fast {
        frequency: 400_000,
        duty_cycle: DutyCycle::Ratio1to1,
    },
    clocks,
    &mut rcc.apb1,
);

let im = Image1BPP::new(include_bytes!("./rust.raw"), 64, 64).translate((32, 0));
let mut disp: GraphicsMode<_> = Builder::new().connect_i2c(i2c).into();

disp.init().unwrap();
disp.flush().unwrap();
disp.draw(im.into_iter());
disp.flush().unwrap();

} ```

Documentation

Features

TODO

Attribution

All source font PNGs are taken from the excellent Uzebox Wiki page.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.