CEGUI

Last updated
CEGUI
CEGUI example game menu.png
An example game menu using CEGUI
Original author(s) Paul D Turner
Developer(s) CEGUI Team
Initial releaseDecember 2004;17 years ago (2004-12)
Stable release 0.8.7 (April 28, 2016;6 years ago (2016-04-28)) [±] [1]
Written in C++
Operating system Linux, OS X, Windows
Type Widget toolkit
License MIT
Before version 0.5.0:
GNU LGPL [2]
Website cegui.org.uk

Crazy Eddie's GUI (CEGUI) is a graphical user interface (GUI) library for the programming language C++. It was designed for the needs of video games, but is usable for non-game tasks, such as applications and tools. It is designed for user flexibility in look-and-feel, and to be adaptable to the user's choice in tools and operating systems.

Contents

Configurability

The strengths CEGUI are its robustness [3] and its configurability. The system does not directly load files, render windows, directly display text, or even fetch input from the system. CEGUI interfaces with these through user-defined code, though its source code package comes with a number of modules for using certain components and libraries.

This freedom allows using CEGUI in any kind of resource management system or operating environment. Input is expected to be gathered by the user's code, possibly filtered as the user sees fit, and then passed to CEGUI for window processing.

CEGUI comes with a reasonable set of widgets, comparable to those of the average widget toolkit.

Tools

CEGUI can be fully customized using standard image, xml, and/or code editing tools. However, CEGUI also provides tools designed to aid in designing and developing CEGUI based interfaces.

Older CEGUI versions, before 0.8, provided separate tools to edit different aspects of the interface. The most notable of those being the Imageset and Layout editors.

Since CEGUI 0.8, there exists a new unified editing tool called CEGUI unified editor (CEED) which is being actively developed. [4] It incorporates all aspects of GUI development into one tool.

Rendering

Rendering is performed by a back-end Rendering Module. CEGUI provides modules for Direct3D, OpenGL, the OGRE 3D engine, and the Irrlicht Engine. Other modules can be written for custom engines.

CEGUI's GUI components are organized in a tree (graph) [5] and are rendered in the order of the tree traversal.

Resource management

File loading and resource management are handled through a back-end "Resource Provider Module". Users can create custom modules to define how resources are accessed. This allows the library to be used in virtually any operating environment. The default resource provider is cross-platform and provides standard file-access mechanics for loading resources. An optional minizip module enables resource-loading from zip-archives.

Memory management

CEGUI has a flexible Memory Management system. This system was based on OGRE and allows clients to map different types of allocators to different types of objects. By default all objects use the operating system's default allocator. CEGUI provides support for OGRE and nedmalloc allocators.

Scripting

CEGUI has an optional back-end Scripting Module. Lua and Python scripting modules are provided by CEGUI. The full CEGUI application programming interface (API) is available via script so that clients can create windows, define relationships, and handle events all within a scripted environment.

Look and feel

CEGUI has a powerful system for defining the look and feel of various widgets. The system, named Falagard, allows defining the look of a widget via XML files, or C++ code, if the user prefers. It can also change the layout behavior of any widgets.

Animation

CEGUI has a built-in animation system. This system allows many standard transitional effects from moving and resizing windows to color transforms and image sequencing. Animations can be defined in XML and triggered by any event. The client can specify window-properties as key-frames, how to transition between frames, and the transition-time between frames.

Unicode

CEGUI is Unicode-aware and has support for bi-directional languages via an optional back-end Bidi Module. This support is provided by MiniBidi or FriBidi.

Library dependencies

CEGUI can be built with no dependencies to outside libraries. However, typical configurations require FreeType, a rendering module, an XML parser module, and an image codec module. CEGUI already provides support for several external libraries thanks to its modular design:

External libraries supported by CEGUI
TypeNameAdditional information
Rendering Module OpenGL 3.2+ Core Profile Uses the programmable rendering pipeline and only non-deprecated functionality and is therefore compatible with OpenGL Core Profile contexts (available since OpenGL 3.2). It can also be used with older OpenGL versions and/or Compatibility Profile, as long as the needed functions are available.
OpenGL Uses the fixed-function rendering pipeline. It is designed to be compatible with very early OpenGL versions, as early as OpenGL 1.2, using some OpenGL extensions.
Microsoft Direct3D Microsoft Direct3D 9, 10, and 11 are supported using separate modules.
OGRE The latest stable Ogre version is supported in the releases.
Irrlicht Engine The latest stable Irrlicht version is supported in the releases.
Image Codec Module Simple Image Loading LibrarY (SILLY)Default image codec, which is based on the SILLY library. Supports many formats. [6]
DevIL Image codec based on the DevIL library.
FreeImage Image codec based on the FreeImage library.
OGRE Image codec that loads data via image loading facilities of OGRE.
Resource Provider ModuleDefaultThe internal resource provider of CEGUI can be used without requiring an extra module. It uses standard cross-platform file-access.
OGRE Ogre users can use CEGUI's Ogre ResourceManager. This way the resource locations of CEGUI can be specified in the same way as it is done for the Ogre resources already.
minizip CEGUI's MinizipResourceProvider allows providing the ability to load resource files from locations within .zip files.
XML Parser Module Expat Default XML parser of CEGUI. Uses the Expat library for XML parsing.
LibXML2 Uses the LibXML2 library for XML parsing.
RapidXmlUses the RapidXml library for XML parsing.
TinyXML Uses the TinyXML library for XML parsing.
Xerces-C++Uses the Xerces-C++ library for XML parsing. It can validate schemas using the .xsd files provided in CEGUI's resources.
Font Module FreeType FreeType is the default font library of CEGUI and currently the only officially supported one.
Regular Expression Module Perl Compatible Regular Expressions (PCRE)Default regular expression library and currently the only officially supported one. Uses PCRE.
Scripting Module Lua Provides lua bindings using tolua++.
Python Official Python bindings are available using PyCEGUI [7]
Memory Management OGRE Ogre's memory allocator can optionally be used for CEGUI's memory management.
nedmalloc nedmalloc can optionally be used as memory allocator.
Bi-Directional Language Module MiniBIDI MiniBIDI based implementation of CEGUI's Bidi visual mapping.
FriBIDI [8] FriBIDI based implementation of CEGUI's Bidi visual mapping.

The Ogre3D library used to depend on the CEGUI library for its UI [9] but Ogre3D has since changed to include its own UI solution, which is slimmer but also provides less functionality.

Release history

VersionRelease date
0.1.02004-12-19 [10]
0.1.12005-01-23
0.2.02005-02-17
0.2.12005-05-30
0.3.02005-06-30
0.4.02005-09-07
0.4.12005-11-26
0.5.02006-11-06
0.6.02008-03-27
0.6.22008-12-03
0.7.02009-09-20
0.7.12009-10-26
0.7.22010-08-29
0.7.32010-10-08
0.7.42010-10-11
0.7.52010-11-20
0.7.62012-01-22
0.7.72012-06-23
0.7.82013-01-08
0.7.92013-01-13
0.8.02013-05-26
0.8.12013-06-05
0.8.22013-06-12
0.8.32013-12-07
0.8.42014-07-07
0.8.52016-03-12

See also

Related Research Articles

A widget toolkit, widget library, GUI toolkit, or UX library is a library or a collection of libraries containing a set of graphical control elements used to construct the graphical user interface (GUI) of programs.

Irrlicht is an open-source game engine written in C++. It is cross-platform, officially running on Windows, macOS, Linux and Windows CE and due to its open nature ports to other systems are available, including FreeBSD, Xbox, PlayStation Portable, Symbian, iPhone, AmigaOS 4, Sailfish OS via a QT/Qml wrapper, and Google Native Client.

Text-based user interface Type of interface based on outputting to or controlling a text display

In computing, text-based user interfaces (TUI), is a retronym describing a type of user interface (UI) common as an early form of human–computer interaction, before the advent of graphical user interfaces (GUIs). Like GUIs, they may use the entire screen area and accept mouse and other inputs. They may also use color and often structure the display using special graphical characters such as ┌ and ╣, referred to in Unicode as the "box drawing" set. The modern context of use is usually a terminal emulator.

Graphical widget Element of interaction in a graphical user interface

A graphical widget in a graphical user interface is an element of interaction, such as a button or a scroll bar. Controls are software components that a computer user interacts with through direct manipulation to read or edit information about an application. User interface libraries such as Windows Presentation Foundation, Qt, GTK, and Cocoa, contain a collection of controls and the logic to render these.

Glade Interface Designer GTK+ rapid application development tool

Glade Interface Designer is a graphical user interface builder for GTK, with additional components for GNOME. In its third version, Glade is programming language–independent, and does not produce code for events, but rather an XML file that is then used with an appropriate binding. See List of language bindings for GTK for the available ones.

PyQt

PyQt is a Python binding of the cross-platform GUI toolkit Qt, implemented as a Python plug-in. PyQt is free software developed by the British firm Riverbank Computing. It is available under similar terms to Qt versions older than 4.5; this means a variety of licenses including GNU General Public License (GPL) and commercial license, but not the GNU Lesser General Public License (LGPL). PyQt supports Microsoft Windows as well as various flavours of UNIX, including Linux and MacOS.

Graphical user interface builder Software development tool

A graphical user interface builder, also known as GUI designer or sometimes RAD IDE, is a software development tool that simplifies the creation of GUIs by allowing the designer to arrange graphical control elements using a drag-and-drop WYSIWYG editor. Without a GUI builder, a GUI must be built by manually specifying each widget's parameters in source-code, with no visual feedback until the program is run. Such tools usually called the term RAD IDE.

OpenSceneGraph

OpenSceneGraph is an open-source 3D graphics application programming interface, used by application developers in fields such as visual simulation, computer games, virtual reality, scientific visualization and modeling.

Magic User Interface Widget toolkit for AmigaOS

The Magic User Interface is an object-oriented system by Stefan Stuntz to generate and maintain graphical user interfaces. With the aid of a preferences program, the user of an application has the ability to customize the system according to personal taste.

A user interface markup language is a markup language that renders and describes graphical user interfaces and controls. Many of these markup languages are dialects of XML and are dependent upon a pre-existing scripting language engine, usually a JavaScript engine, for rendering of controls and extra scriptability.

ARINC 661 is a standard which aims to normalize the definition of a Cockpit Display System (CDS), and the communication between the CDS and User Applications (UA) which manage aircraft avionics functions. The GUI definition is completely defined in binary Definition Files (DF).

ReAction GUI is the widget toolkit engine that is used in AmigaOS 3.2-4.1.

XBLite is a free Open Source BASIC programming language compiler and development system. It was started in 2001 by David Szafranski in order to provide a Windows exclusive version of the XBasic dialect. XBLite is released under the GNU GPL licensing scheme, Standard libraries are released under the GNU LGPL licensing scheme.

AmigaOS Operating system for Amiga computers

AmigaOS is a family of proprietary native operating systems of the Amiga and AmigaOne personal computers. It was developed first by Commodore International and introduced with the launch of the first Amiga, the Amiga 1000, in 1985. Early versions of AmigaOS required the Motorola 68000 series of 16-bit and 32-bit microprocessors. Later versions were developed by Haage & Partner and then Hyperion Entertainment. A PowerPC microprocessor is required for the most recent release, AmigaOS 4.

A software widget is a relatively simple and easy-to-use software application or component made for one or more different software platforms.

Abstract Window Toolkit Java-based GUI toolkit

The Abstract Window Toolkit (AWT) is Java's original platform-dependent windowing, graphics, and user-interface widget toolkit, preceding Swing. The AWT is part of the Java Foundation Classes (JFC) — the standard API for providing a graphical user interface (GUI) for a Java program. AWT is also the GUI toolkit for a number of Java ME profiles. For example, Connected Device Configuration profiles require Java runtimes on mobile telephones to support the Abstract Window Toolkit.

In computer science and visualization, a canvas is a container that holds various drawing elements. It takes its name from the canvas used in visual arts. It is sometimes called a scene graph because it arranges the logical representation of a user interface or graphical scene. Some implementations also define the spatial representation and allow the user to interact with the elements via a graphical user interface.

Art of Illusion

Art of Illusion is a free software, and open source software package for making 3D graphics.

Immediate mode GUI

An immediate mode graphic user interface (GUI), also known as IMGUI, is a graphical user interface design pattern which uses an immediate mode graphics library to create the GUI. The other major pattern of API design in graphics libraries is the retained mode.

References

  1. http://cegui.org.uk/download/cegui-087
  2. "Simple DirectMedia Layer - License".
  3. MacDonald, Mickey (29 January 2018). Mastering C++ game development : create professional and realistic 3D games using C++ 17. Birmingham, UK. ISBN   978-1-78862-983-6. OCLC   1023864109.
  4. CEED
  5. Pervasive computing and the networked world : Joint International Conference, ICPCA/SWS 2012, Istanbul, Turkey, November 28-30, 2012, Revised selected papers. Zu, Qiaohong., Hu, Bo., Elçi, Atilla., IEEE Symposium on Web Society (2012 : Istanbul, Turkey). Berlin: Springer. 2013. ISBN   978-3-642-37015-1. OCLC   830532405.{{cite book}}: CS1 maint: others (link)
  6. "SILLY - CEGUI Wiki - Crazy Eddie's GUI System (Open Source)".
  7. "PyCEGUI - CEGUI Wiki - Crazy Eddie's GUI System (Open Source)".
  8. http://www.fribidi.org
  9. Thorn, Alan. (2008). Cross-platform game development. Plano, Tex.: Wordware Pub. ISBN   978-1-59822-056-8. OCLC   213408662.
  10. "Crazy Eddies GUI System (CEGUI) - Browse /CEGUI Mk-2/0.1.0 at SourceForge.net".