The core classes provide the base framework for all other GLAM classes.
Important core classes
Every GLAM component that has the potential to interact with the user derives from this class. Its single contribution is the ability to allocate and de-allocate unique IDs for components in the system. This ID can be used for a variety of uniqueness tests and is used by default for the user interface object picking code (ie: What object did the user just click on?).
Any component that will have a visual representation on screen is derived from this class. The GmDrawable class provides a variety of size, color and position information to OpenGL and the layout managers so that the component is represented accurately on screen.
The GmDrawable class also contains the definition for all possible 2D and 3D rendering methods. For example, any drawable can have a 2D, 3D and 2D selection buffer representation. It is these rendering methods that are overloaded if developers want to give the component a particular visual look.
The GmContainer class is the base class for all primitive containers. Containers offer a method of grouping and arranging most user interface components. They are responsible for the logical, aesthetic layout of all their child components. Examples of containers would be menus, list boxes, panels, and dialog boxes.
The GmInteractiveWidget class is the base class for all GLAM components that will recieve any sort of user event such as a mouse press or key press. It contains a variety of methods to handle every sort of event that can occur in GLAM. It is these user event handling methods that are overloaded if developers want to give the component a particular behavior based on user input.
The GmOptions singleton handles a slew of variables that are read from a file on disk. These variables are used to set the defaults for a GLAM application. Defaults such as base color, border width, tooltip popup timeout, text resolution and points size are query-able via the GmOptions object.
The GmFileManager singleton handles all file access and is used mostly as an image and icon cache to prevent textures being loaded more than once from disk.
The GmFontManager is a wrapper factory around the OGLFT library. Its primary purpose is to ease the complexity in creating and managing scalable, TrueType fonts in GLAM.