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
385KB
8K
SLoC
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
Image
s
Code
let image = open_image("resources/example.png")?;
graphics.draw_image(40, 20, &image);
serde
- Adds derive
Serialize
andDeserialize
for most structs and enums - Enables
graphics-shapes/serde
, see Graphic Shapes readme
mint
- Enables
graphics-shapes/mint
, see Graphic Shapes readme
notosans
Add basic Renderable
impl for RasterizedChar
from notosans
embedded
Adds Graphics
as a target for embedded-graphics
Dependencies
~0.6–2MB
~46K SLoC