#graphics #gamedev #simple

buffer-graphics-lib

Simple graphics library for buffers

62 releases (18 breaking)

0.19.0 Sep 30, 2024
0.18.0 Apr 17, 2024
0.16.2 Mar 30, 2024
0.13.0 Dec 27, 2023
0.7.1 Nov 6, 2022

#405 in Game dev

41 downloads per month
Used in pixels-graphics-lib

Custom license

385KB
8K SLoC

Crates.io Documentation

Buffer Graphics Lib

This is a simple graphics library for drawing to a buffer, mainly designed to be used with Pixels Graphics or Pixels

It has basic shape drawing, bitmap text and image rendering.

The Graphics struct needs a mutable buffer to work on and so mostly likely you'll need to create the struct and pass in the buffer from the rendering library every frame but this should be fine for performance as the struct is nearly empty.

ICI Tools can be useful when working with ICI files

ICI Image editor is a MSPaint like program for ICI and ICA files

Graphics tests has tests for this crate, and provides some examples

Integration tests shows how to use some third party libraries

Usage

Cargo

In your Cargo.toml file add

buffer-graphics-lib = "0.19.0"

Code

Setup a graphics instance

let mut buffer: [u8; 1920000] = Graphics::create_buffer(800,600); //800 x 600 RGBA 
let mut graphics = Graphics::new(&mut buffer, 800, 600)?;

Drawing is then quite simple:

let text = Text::new("Some text", (1,1), (WHITE, PixelFont::Standard6x7));
graphics.draw(&text);
graphics.draw_image(20, 20, &image);
graphics.draw_rect(Rect::new((40, 50), (100, 100)), stroke(BLUE));

Features

Default features: "serde"

image_loading

  • Load png, bmp, etc image files as Images

Code

let image = open_image("resources/example.png")?;
graphics.draw_image(40, 20, &image);

serde

  • Adds derive Serialize and Deserialize for most structs and enums
  • Enables graphics-shapes/serde, see Graphic Shapes readme

mint

notosans

Add basic Renderable impl for RasterizedChar from notosans

embedded

Adds Graphics as a target for embedded-graphics

Dependencies

~0.6–2MB
~46K SLoC