Guiliani
Introduction
Guiliani is a flexible C++ framework for graphical user interfaces suited for the use in embedded systems with a special focus on platform independence.
Abstraction from underlying hardware and operating systems is achieved through a number of wrapper classes, like graphics wrappers for graphics output, font wrappers for text rendering or sound wrappers for basic audio output.
Guiliani features very high quality visual appearance offering sub-pixel rendering, including advanced functionality such as alpha blending and anti-aliasing, making optimum use of the underlying graphics API. Depending on the hardware also special features like OpenGL are supported. This enables development of appealing GUIs for applications running on a wide range of embedded devices, ranging from cost-optimized to high-end hardware platforms.
A key feature of Guiliani is the built-in support for animations and effects. This includes, for example, transition effects when switching menus, soft-scrolling within list-boxes and support for animated bitmaps.
Guiliani is targeting international markets: It offerings the possibility to switch between languages at runtime with minimal programming effort.
Guiliani follows a clearly defined, object-oriented approach implementing several widely established and approved design patterns including Observer, Chain-of-Responsibility or Composite-Object-Patterns. To help faster development of GUIs, Guiliani offers various predefined controls.
The most important functionalities of the library Guiliani are:
- Platform independent architecture
Guiliani's architecture allows to easily migrate the created applications on a wide range of target platforms.
- Resource-saving design
Guiliani reduces the usage of required memory and CPU time of an application, e.g. by loading graphics dynamically when needed, or by sending the Guiliani application into a "sleep" mode when inactive.
- Available set of standard GUI elements
Guiliani comes with a set of standard elements for creating graphical user interfaces, which can be used for designing own applications. These are e.g.: button, slider, text field, image and progress bar.
- GUI specification by XML
Guiliani is able to reconstruct the presentation of a GUI out of a descriptive XML file. This enables you to make changes to the GUI, without the necessity to compile the software's source code again thereafter.
- Optimized re-drawing of screen content
Mostly, only a small part of the screen content will be changed while the major part of the screen will be untouched. Guiliani supports the partial update of the so-called "Dirty Rectangles" which will result in a reduction of the CPU load.
- Support of different graphics libraries
Guiliani is not bound to a specific graphics library for showing graphics (rendering). For instance, linking to both OpenGL and eGML will be supported. Also an expansion to other or proprietary libraries is possible.
- Support of standard file formats for images
Guiliani has the ability to interact with libraries for decoding of standard image formats like libpng. This allows you to use the images of the respective format (e.g. ".png") without the necessity of converting it.
- Support of standard file formats for fonts
Guiliani has the ability to interact with libraries for displaying of standard font formats like FreeType. This allows the using of fonts of the respective format (e.g. ".ttf") without the necessity of converting it.
- Multi language support
Using Guiliani you are able to design a multilingual application (Major-European languages are supported by default others can be offered optionally), whose displayed texts can be switched during runtime. The text flow is from left to right, non-standard text flows are optional.
- Multi modalities
Guiliani is able to support different input methods (touch screen, hard keys, mouse, rotary, ...).
Further reading