Skip to content

irajkovic/maligui

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

What is mali-gui?

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.

Why does it exist?

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.

How could I use it?

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.

Random hints

Before more comprehensive documentation is written, here are a few tips.

FontRenderer

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.

Examples

Example code showcases the Calculator, developed using the mali-gui library. Code can be found in qt-demo folder.

Calculator demo

About

Header only C++ micro GUI framework

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published