Tfblib
is a simple and low-level graphics library for drawing to the Linux
framebuffer. Currently, it is capable of drawing lines, rectangles and text.
It has support both for embedded (compiled-in) fonts in the library and
dynamically loaded PSF
fonts at runtime. In addition to drawing functions,
Tfblib
has a minimal support for keyboard input that allows simple
applications to put the TTY input in raw mode and read keystrokes. Both
blocking and non-blocking modes are supported.
Building Tfblib
as a static library is simple as executing (in project's root
directory):
$ mkdir build
$ cd build
$ cmake ..
$ make
The make
command will build the library along with the programs in the
examples/ directory. In case a release build (with optimizations) is desired,
the cmake
command has to be run this way (assuming the current working
directory is the build directory):
cmake -DCMAKE_BUILD_TYPE=Release ..
Or:
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
In case a release build with debug info is desired.
Using Tfblib
is extremely simple. Here below, there's an example about how
to initialize the library and draw a rectangle at the center of the screen.
#include <stdio.h>
#include <tfblib/tfblib.h>
#include <tfblib/tfb_colors.h>
int main(int argc, char **argv)
{
int rc;
if ((rc = tfb_acquire_fb(0, NULL, NULL)) != TFB_SUCCESS) {
fprintf(stderr, "tfb_acquire_fb() failed with error code: %d\n", rc);
return 1;
}
uint32_t w = tfb_screen_width();
uint32_t h = tfb_screen_height();
uint32_t rect_w = w / 2;
uint32_t rect_h = h / 2;
/* Paint the whole screen in black */
tfb_clear_screen(tfb_black);
/* Draw some text on-screen */
tfb_draw_string(10, 10, tfb_white, tfb_black, "Press ENTER to quit");
/* Draw a red rectangle at the center of the screen */
tfb_draw_rect(w / 2 - rect_w / 2, /* x coordinate */
h / 2 - rect_h / 2, /* y coordinate */
rect_w, /* width */
rect_h, /* height */
tfb_red /* color */);
getchar();
tfb_release_fb();
return 0;
}
Tfblib
has been designed to work on the Linux
kernel, on any hardware. It has
been tested on x86
and on ARM
machines (Raspberry Pi 3). It addition to that,
it works on Tilck, which is a small Linux
compatible kernel.
In order to compile Tfblib
for Tilck
is necessary to use a 32-bit x86
Linux GCC
toolchian using libmusl
and link everything statically. After
compiling this way, the examples will run both on Linux and on Tilck natively.
But, the easiest way to do that is just to use Tilck's build system.
Just drop a copy (or a symlink) of Tfblib
's main directory in the following
subdirectory of the Tilck
project:
userapps/extra
Than just run:
$ ./scripts/cmake_run
And finally build Tilck with make
. The Tfblib
examples will be visible in
/usr/bin/
, on Tilck.
For the moment, the library supports only 32-bpp video modes.
A pre-generated doxygen
documentation is available at:
https://vvaltchev.github.io/tfblib/tfblib_8h.html
In order to generate the documentation locally, make sure you have doxygen
installed on your system and just run it in project's root directory.
The output html files will be placed in <PROJECT_ROOT_DIR>/doxydocs/html
.
Just open index.html
with your browser.