Guiliani  Version 2.5 revision 6773 (build 33)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Main Page

Guiliani

GUI_4c.gif


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