Movatterモバイル変換


[0]ホーム

URL:


Jump to content
WikipediaThe Free Encyclopedia
Search

CEGUI

From Wikipedia, the free encyclopedia
Graphical user interface library
The topic of this articlemay not meet Wikipedia'snotability guidelines for products and services. Please help to demonstrate the notability of the topic by citingreliable secondary sources that areindependent of the topic and provide significant coverage of it beyond a mere trivial mention. If notability cannot be shown, the article is likely to bemerged,redirected, ordeleted.
Find sources: "CEGUI" – news ·newspapers ·books ·scholar ·JSTOR
(November 2018) (Learn how and when to remove this message)
CEGUI
An example game menu using CEGUI
Original authorPaul D Turner
DeveloperCEGUI Team
Initial releaseDecember 2004; 21 years ago (2004-12)
Stable release0.8.7 (April 28, 2016; 9 years ago (2016-04-28)) [±][1]
Written inC++
Operating systemLinux,OS X,Windows
TypeWidget toolkit
LicenseMIT
Before version 0.5.0:
GNU LGPL[2]
Websitecegui.org.uk
Repository

Crazy Eddie's GUI (CEGUI) is agraphical user interface (GUI)library for the programming languageC++. It was designed for the needs ofvideo 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.

Configurability

[edit]

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

[edit]

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

[edit]

Rendering is performed by a back-endRendering Module. CEGUI provides modules forDirect3D,OpenGL, theOGRE 3D engine, and theIrrlicht 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

[edit]

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 optionalminizip module enables resource-loading from zip-archives.

Memory management

[edit]

CEGUI has a flexibleMemory 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 andnedmalloc allocators.

Scripting

[edit]

CEGUI has an optional back-endScripting Module.Lua andPython scripting modules are provided by CEGUI. The full CEGUIapplication 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

[edit]

CEGUI has a powerful system for defining the look and feel of variouswidgets. 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

[edit]

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

[edit]

CEGUI isUnicode-aware and has support for bi-directional languages via an optional back-endBidi Module. This support is provided byMiniBidi orFriBidi.

Library dependencies

[edit]

CEGUI can be built with no dependencies to outside libraries. However, typical configurations requireFreeType, 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 ModuleOpenGL 3.2+ Core ProfileUses 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.
OpenGLUses 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 Direct3DMicrosoft Direct3D 9, 10, and 11 are supported using separate modules.
OGREThe latest stable Ogre version is supported in the releases.
Irrlicht EngineThe latest stable Irrlicht version is supported in the releases.
Image Codec ModuleSimple Image Loading LibrarY (SILLY)Default image codec, which is based on the SILLY library. Supports many formats.[6]
DevILImage codec based on the DevIL library.
FreeImageImage codec based on the FreeImage library.
OGREImage 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.
OGREOgre 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.
minizipCEGUI's MinizipResourceProvider allows providing the ability to load resource files from locations within .zip files.
XML Parser ModuleExpatDefault XML parser of CEGUI. Uses theExpat library for XML parsing.
LibXML2Uses theLibXML2 library for XML parsing.
RapidXmlUses the RapidXml library for XML parsing.
TinyXMLUses theTinyXML 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 ModuleFreeTypeFreeType is the default font library of CEGUI and currently the only officially supported one.
Regular Expression ModulePerl Compatible Regular Expressions (PCRE)Default regular expression library and currently the only officially supported one. Uses PCRE.
Scripting ModuleLuaProvides lua bindings using tolua++.
PythonOfficial Python bindings are available using PyCEGUI[7]
Memory ManagementOGREOgre's memory allocator can optionally be used for CEGUI's memory management.
nedmallocnedmalloc can optionally be used as memory allocator.
Bi-Directional Language ModuleMiniBIDIMiniBIDI 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

[edit]
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

[edit]

References

[edit]
  1. ^https://github.com/cegui/cegui/releases/tag/v0-8-7
  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.{{cite book}}: CS1 maint: location missing publisher (link)
  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. ^"Home".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".

External links

[edit]
Low-level platform-specific
OnAmigaOS
OnClassic Mac OS,macOS
OnWindows
OnUnix
OnBeOS,Haiku
OnAndroid
CLI
Low Level Cross-platform
CLI
C
Java
High-level, platform-specific
OnAmigaOS
OnClassic Mac OS,macOS
Object Pascal
Objective-C,Swift
C++
CLI
OnWindows
CLI
C++
Object Pascal
OnUnix andX11
High-level, cross-platform
C
C++
Objective-C
CLI
Adobe Flash
Go
Haskell
Java
JavaScript
Common Lisp
Lua
Pascal
Object Pascal
Perl
PHP
Python
Ruby
Tcl
XML
shell
Dart
Retrieved from "https://en.wikipedia.org/w/index.php?title=CEGUI&oldid=1333901063"
Categories:
Hidden categories:

[8]ページ先頭

©2009-2026 Movatter.jp