CEGUI
Encyclopedia
Crazy Eddie's GUI system is a graphical user interface
Graphical user interface
In computing, a graphical user interface is a type of user interface that allows users to interact with electronic devices with images rather than text commands. GUIs can be used in computers, hand-held devices such as MP3 players, portable media players or gaming devices, household appliances and...

 C++
C++
C++ is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features. It was developed by Bjarne Stroustrup starting in 1979 at Bell...

 library. It is designed particularly for the needs of videogames
Computer and video games
A video game is an electronic game that involves human interaction with a user interface to generate visual feedback on a video device. The word video in video game traditionally referred to a raster display device, but following popularization of the term "video game", it now implies any type of...

, but the library is usable for non-game tasks. It is designed for user flexibility in look-and-feel, as well as being adaptable to the user's choice in tools and operating systems.

Configurability

The strength of CEGUI's design is that it is highly configurable. The CEGUI system itself 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 the CEGUI source code package comes with a number of modules for using certain components and libraries.

This freedom allows the user to use 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 delivered to the CEGUI for window processing.

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

Tools

CEGUI can be completely customized using standard image, xml, and/or code editing tools. However, CEGUI also provides tools designed specifically to aid in the design and development of CEGUI based interfaces. Older versions of CEGUI provided separate tools for editing different aspects of the interface. The most notable of those being the Imageset and Layout editors. A new unified editing tool is being actively developed to incorporate all aspects of GUI development into a single tool.

Rendering

Rendering is accomplished by a back-end Rendering Module. CEGUI provides modules for Direct3D
Direct3D
Direct3D is part of Microsoft's DirectX application programming interface . Direct3D is available for Microsoft Windows operating systems , and for other platforms through the open source software Wine. It is the base for the graphics API on the Xbox and Xbox 360 console systems...

, OpenGL
OpenGL
OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...

, the OGRE 3D engine
OGRE Engine
OGRE is a scene-oriented, flexible 3D rendering engine written in C++ designed to make it easier and intuitive for developers to produce applications utilizing hardware-accelerated 3D graphics...

, and the Irrlicht engine
Irrlicht Engine
Irrlicht is an open source 3D engine written in C++. It is cross-platform, officially running on Windows, Mac OS X, Linux and Windows CE and due to its open nature ports to other systems are available, including Xbox, PlayStation Portable, SymbianOS and iPhone.Irrlicht is known for its small size...

. Other modules can be written for custom engines.

Resource Management

File loading and resource management are handled through a back-end "Resource Provider Module". The user 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
OGRE Engine
OGRE is a scene-oriented, flexible 3D rendering engine written in C++ designed to make it easier and intuitive for developers to produce applications utilizing hardware-accelerated 3D graphics...

 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
OGRE Engine
OGRE is a scene-oriented, flexible 3D rendering engine written in C++ designed to make it easier and intuitive for developers to produce applications utilizing hardware-accelerated 3D graphics...

 and nedmalloc allocators.

Scripting

CEGUI has an optional back-end Scripting Module. A Lua scripting module and Python
Python (programming language)
Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...

 module are provided by CEGUI. The full CEGUI 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
Widget (computing)
In computer programming, a widget is an element of a graphical user interface that displays an information arrangement changeable by the user, such as a window or a text box. The defining characteristic of a widget is to provide a single interaction point for the direct manipulation of a given...

. This system, known as Falagard, allows the user to define 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
Unicode
Unicode is a computing industry standard for the consistent encoding, representation and handling of text expressed in most of the world's writing systems...

-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 without any dependencies to outside libraries. However, typical configurations require FreeType
FreeType
FreeType is a software library written in C that implements a font rasterization engine. It is used to render text on to bitmaps and provides support for other font-related operations.-Details:...

, a rendering module, an XML parser, and an image codec. CEGUI already provides support for several external libraries thanks to its modular design:

Bi-Directional Language Modules
  • MiniBIDI
  • FriBIDI


Font Modules
  • FreeType
    FreeType
    FreeType is a software library written in C that implements a font rasterization engine. It is used to render text on to bitmaps and provides support for other font-related operations.-Details:...



Image Codec Modules
  • DevIL
    DevIL
    Developer's Image Library or DevIL , started by Denton Woods, is a cross-platform image library which aims to provide a common API for different image file formats...

  • FreeImage
  • OGRE
    OGRE Engine
    OGRE is a scene-oriented, flexible 3D rendering engine written in C++ designed to make it easier and intuitive for developers to produce applications utilizing hardware-accelerated 3D graphics...

  • SILLY


Memory Management
  • OGRE
    OGRE Engine
    OGRE is a scene-oriented, flexible 3D rendering engine written in C++ designed to make it easier and intuitive for developers to produce applications utilizing hardware-accelerated 3D graphics...

  • nedmalloc


Regular Expression Modules
  • PCRE


Rendering Modules
  • Direct3D
    Direct3D
    Direct3D is part of Microsoft's DirectX application programming interface . Direct3D is available for Microsoft Windows operating systems , and for other platforms through the open source software Wine. It is the base for the graphics API on the Xbox and Xbox 360 console systems...

  • Irrlicht
    Irrlicht Engine
    Irrlicht is an open source 3D engine written in C++. It is cross-platform, officially running on Windows, Mac OS X, Linux and Windows CE and due to its open nature ports to other systems are available, including Xbox, PlayStation Portable, SymbianOS and iPhone.Irrlicht is known for its small size...

  • OGRE
    OGRE Engine
    OGRE is a scene-oriented, flexible 3D rendering engine written in C++ designed to make it easier and intuitive for developers to produce applications utilizing hardware-accelerated 3D graphics...

  • OpenGL
    OpenGL
    OpenGL is a standard specification defining a cross-language, cross-platform API for writing applications that produce 2D and 3D computer graphics. The interface consists of over 250 different function calls which can be used to draw complex three-dimensional scenes from simple primitives. OpenGL...



Resource Provider Modules
  • Default (standard cross-platform file-access)
  • minizip
  • OGRE
    OGRE Engine
    OGRE is a scene-oriented, flexible 3D rendering engine written in C++ designed to make it easier and intuitive for developers to produce applications utilizing hardware-accelerated 3D graphics...



Scripting Modules
  • Lua
  • Python
    Python (programming language)
    Python is a general-purpose, high-level programming language whose design philosophy emphasizes code readability. Python claims to "[combine] remarkable power with very clear syntax", and its standard library is large and comprehensive...



XML Modules
  • Expat
    Expat (XML)
    In computing, Expat is a stream-oriented XML 1.0 parser library, written in C. As one of the first available open-source XML parsers, Expat has found a place in many open-source projects. Such projects include the Apache HTTP Server, Mozilla, Perl, Python and PHP...

  • LibXML2
    LibXML
    libxml2 is a software library for parsing XML documents. It is also the basis for the libxslt library which processes XSLT-1.0 stylesheets.-Description:...

  • RapidXml
    Rapidxml
    RapidXml is a very fast and stable XML DOM-style parser written in C++. It is aimed primarily at embedded environments, computer games, or any other applications where available memory or CPU processing power comes at a premium...

  • TinyXML
    TinyXML
    TinyXML is a small, simple XML parser for the C++ language. It is free and open source software, distributed under the terms of the license of zlib/libpng.- Features :...

  • Xerces-C++
    Xerces
    Xerces is a collection of software libraries for parsing, validating, serializing and manipulating XML. The library implements a number of standard APIs for XML parsing, including DOM, SAX and SAX2. The implementation is available in Java, C++ and Perl programming languages.-External...


External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK