diff --git a/README.md b/README.md new file mode 100644 index 0000000..06e6177 --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +# framebuffer graphics +This is my stupid attempt at drawing directly to the Linux framebuffer. + +The framebuffer device is hard-coded to `/dev/fb0` at the moment because I'm lazy and it's half-past 3 in the morning. + +Look, if anything is broken, just know I've only tested this on my Raspberry Pi 4, so feel free to add an issue or something; Or even better: fix it and send a PR. + +## What does this do? + +Good question. + +## How do I compile it? +`gcc src/bitmap.c src/charmap.c src/gfx.c src/draw.c -Iinclude -o draw` should do the trick. Feel free to add optimization flags or something... + +Also do `gcc src/bitmap.c src/bmconv.c -Iinclude -o bmconv` for the bitmap converter. + +## What is bmconv? +So... I made a bitmap format for creating characters because I can't be bothered to look up existing formats. It only accepts 1's or 0's, but that's kind of a mess to write as bits in a file, so I just made a human-readable version of the format (with the extension `.rbm`). Bitmaps must be rectangular delimited by newline characters after each row (look at the existing files in `res`). To convert these human-readable files to a more compressed format, you use `bmconv c {input file} {output file}`. To decompress compressed files, run `bmconv d {input file} {output file}`. + +Oh right, the bitmap format uses the `.bm` extension. If there are any issues, `bitmap.c` natively supports both the compressed and human-readable formats, so there's an upshot, I guess. + +## Why?? +I don't know. I just want to sleep + +## Features? +* It doesn't crash (I think) +* Automatic character mapping from a metadata file +* Double-buffered frames +* Character transparency +* Bitmaps are actual bits ;) + +## TODO +* Obviously fix the language in this README. This is waaaaaaay too informal +* Take a nap +* Proper bounds-detection for things being drawn (instead of just crashing or wrapping) +* Check for memory leaks +* Scale-able characters +* More characters +* Full-colour characters +* Input events system +* Support for triangles :) +* Rotation for elements on-screen +* Un-hard-code the framebuffer device +* ??? +* Profit +