It's a light weight, header only C++ GUI micro framework. It supports basic concepts needed to implement GUI application, such as widgets (supporting creation of widget hierarchies and event propagation), painter (class for drawing geometry primitives and text rendering), etc.
It's a hobby project. The idea was to try to make basic library that allows for creation of GUI applications - from scratch. Being such a small library, it should be very easy to use it in embedded projects, for example to create GUIs for devices with various types of screens. The library uses C++ templates to allow for custom definition of the Pixel type, so it can support screens of any depth, be it monochrome or color, in a memory effective way.
The libary is still very early in the development. However, it should be possible to port it to any platform by implementing the very thin HAL layer.
The Concept of Hardware Abstraction Layer is implemented through the Device base class. To port the library, inherit abstract Device class and implement needed methods that interract with the underlying hardware. This mainly means putting pixels on screen and delivering press events back to the library. Look at qt-wrapper/device_emulator.hpp for an example implementation.
Before more comprehensive documentation is written, here are a few tips.
Text rendering withing the Painter class is developed in a trivial way: the font pixmaps are prepared before hand (during compile time) and the painter copies these maps to the screen. CLI tool called FontRenderer is developed to create these maps. By default, some sample fonts are given in the repo, within file maligui/fonts/autogen.h.
Content of this file can be autogenerated via FontRenderer with the command:
./tools/FontRenderer 33 127 maligui::Font _FONTS_[] "Consolas" 24 > mali-gui/fonts/autogen.h
FontRenderer is a separate github project, available here.
Example code showcases the Calculator, developed using the mali-gui library. Code can be found in qt-demo folder.