Version 6, last updated by poliklosio at August 17, 2009 19:20 UTC
Four layers of code modules (each of them needs only the lower layers).:
Lowest layer:
- Support for fonts, including bitmap fonts from any files and the TTF fonts, for ASCII, UTF16 and UTF8 text formats.
- Smart pointer class for easy memory management.
- Encapsulation of rendering context for the whole GUI. Currently implemented contexts include OpenGL and SDL based contexts.
- Interface for performing multiple useful operations, including multiple blitting, overlaying and drawing on graphical surfaces. Many drawing algoritms are abstracted away to templates such that they can be applied to anything.
- Text displaying on arbitrary rendering context, implemented as convenient PKtext class with multiple text properties, caching rendered lines or single characters.
- A functionality for image dissection and assembly, useful for bitmap fonts and GUI skins.
- Unit Testing framework.
- A module which eases calling any Loki functor (a.k.a. delegate) with tuple of arguments.
- Macros which can be used to easily create a fast dynamic type information interface for a hierarchy of classes.
- A lot of elements to ease the use of SDL types and functions.
"Base" layer:
- PKGUI class which manages the widgets and the runtime of the GUI.
- Manager of surfaces used by the widgets.
- Base classes for widgets, decorators and composites.
- The PKlayer class which manages a single collection of widgets/submenu.
- Manager of prototypes - widgets whose members can be automatically copied to other widgets.
"Specific" layer:
- Widgets: Simple widget, caption, editbox, button, checkbox, described checkbox, tooltip, progress bar, table, diagram.
- Decorators: frames for widgets, a decorator which clips a widget inside a rectangle at another position, slider.
- Components to be used as parts of widgets: appearance component, text modifier, caret, mouse and hotkey handler, component for composites, diagram.
- Composite widgets: drop-down list, tabbed view, multibox, slider, versatile composite.
- Some simple geometric shapes which work as widgets.
- Anchor, to define the way widgets move (or not move) when their master window is resized.
High layer:
- Widget factory which simplifies creating and configuring widgets.
- Modules to handle storing and distributing texts to widgets in multilanguage applications.
- Support for very simple automatic positioning of widgets when they are created.
The list has been created at the time when the last SVN revision was 44 but it may be complete much later as well.