<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://cegui.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mmixlinus</id>
		<title>CEGUI Wiki - Crazy Eddie's GUI System (Open Source) - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://cegui.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Mmixlinus"/>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/Special:Contributions/Mmixlinus"/>
		<updated>2026-05-10T22:30:54Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Building_from_source&amp;diff=5746</id>
		<title>Building from source</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Building_from_source&amp;diff=5746"/>
				<updated>2015-11-05T07:55:51Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: /* Documentation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.8}}&lt;br /&gt;
{{notice|message=This article is a work in progress and thus incomplete}}&lt;br /&gt;
&lt;br /&gt;
==Official documentation==&lt;br /&gt;
PLEASE use the documentation of your CEGUI version as your main source of information, e.g.: [http://static.cegui.org.uk/docs/current/compiling.html Latest API docs for building/compiling]&lt;br /&gt;
&lt;br /&gt;
==Stable Releases==&lt;br /&gt;
Source code from the stable mercurial branches is released at various points in time and made available as source code packages. These packages can be found on the [[Downloads]] page.&lt;br /&gt;
&lt;br /&gt;
==Mercurial==&lt;br /&gt;
The source code is kept in mercurial repositories at bitbucket.org. There are code repositories for the main CEGUI libraries as well as for other related items.&lt;br /&gt;
&lt;br /&gt;
A mercurial client (GUI or &amp;lt;abbr title=&amp;quot;Command-line Interface&amp;quot;&amp;gt;CLI&amp;lt;/abbr&amp;gt;) is required to access the mercurial repositories and download code. The command necessary to obtain a copy of the code is 'clone':&lt;br /&gt;
 hg clone SOURCE DESTINATION&lt;br /&gt;
where ''source'' is the URL of the repository to clone and ''destination'' is the local directory. To download a copy of CEGUI and place it in the ''cegui-source'' directory, you might use the following command:&lt;br /&gt;
 hg clone https://bitbucket.org/cegui/cegui cegui-source&lt;br /&gt;
&lt;br /&gt;
Once you have this, the cloned repository is updated to the default (latest, unstable) code, so you most likely will want to switch to a stable branch instead, like this:&lt;br /&gt;
 hg update -C v0-8&lt;br /&gt;
{{Warning|Be aware that the -C option here will discard any local file changes without additional warning}}&lt;br /&gt;
&lt;br /&gt;
===Repositories===&lt;br /&gt;
The available repositories can be found [https://bitbucket.org/cegui/ here] where you can also browse their code from your web browser. A couple of examples:&lt;br /&gt;
* Core CEGUI libraries - [https://bitbucket.org/cegui/cegui/src cegui]&lt;br /&gt;
 hg clone https://bitbucket.org/cegui/cegui cegui-source&lt;br /&gt;
* CEED unified editor - [https://bitbucket.org/cegui/ceed/src CEED]&lt;br /&gt;
 hg clone https://bitbucket.org/cegui/ceed&lt;br /&gt;
&lt;br /&gt;
{{Note|The difference between the ''hg clone'' URLs and the web-interface URLs is the appended ''/src'' on the web URLs}}&lt;br /&gt;
&lt;br /&gt;
=Building=&lt;br /&gt;
CEGUI uses [http://www.cmake.org/ CMake] as a build system. CMake is cross-platform and open source so it's available on many platforms. There are binaries available for Windows, Mac and Linux, although on Linux your distribution will most probably have a CMake package ready. Make sure you have some 2.8.X version installed because CMake 3.x.x will break with our scripts at the moment.&lt;br /&gt;
{{Note|CMake does not build the code directly, it generates native makefiles and workspaces that can be used in the compiler environment of your choice.}}&lt;br /&gt;
Thanks to CMake and CEGUI's modular design, configuring and building CEGUI is a breeze.&lt;br /&gt;
&lt;br /&gt;
The following instructions assume you have a ''cegui'' directory somewhere on your system so that all CEGUI related projects reside in it.&lt;br /&gt;
 cegui              (root working directory)&lt;br /&gt;
 cegui/cegui_mk2    (core CEGUI)&lt;br /&gt;
 cegui/CEED         (editor)&lt;br /&gt;
 cegui/...          (something else)&lt;br /&gt;
&lt;br /&gt;
==CEGUI==&lt;br /&gt;
This section will focus on building the core CEGUI libraries, which is all you need to use CEGUI in a project. Most people will also want [[Building from source#CEED|CEED]], the unified editor for CEGUI, but it is not required.&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
CEGUI can be built without any dependencies to outside libraries. However, typical configurations require [http://en.wikipedia.org/wiki/FreeType FreeType], a rendering module, an XML parser, and an image codec. CEGUI already provides support for several external libraries thanks to its modular design:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|+ External libraries supported by CEGUI&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Type&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Name&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; halign=&amp;quot;left&amp;quot; | Additional information&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #eaffe8;&amp;quot; &lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | Rendering Module&lt;br /&gt;
| OpenGL 3.2+ Core Profile&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 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 required functionalities are available.&lt;br /&gt;
|- style=&amp;quot;background: #eaffe8;&amp;quot; &lt;br /&gt;
| OpenGL&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 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.&lt;br /&gt;
|- style=&amp;quot;background: #eaffe8;&amp;quot;&lt;br /&gt;
| Microsoft Direct3D&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Microsoft Direct3D 9, 10, and 11 are supported using seperate modules.&lt;br /&gt;
|- style=&amp;quot;background: #eaffe8;&amp;quot;&lt;br /&gt;
| OGRE&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | The latest stable Ogre version is supported in the releases.&lt;br /&gt;
|- style=&amp;quot;background: #eaffe8;&amp;quot;&lt;br /&gt;
| Irrlicht&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | The latest stable Irrlicht version is supported in the releases.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #edfcfb;&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;4&amp;quot; | Image Codec Module&lt;br /&gt;
| SILLY&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Default image codec, which is based on the SILLY library. Supports many formats, see [[SILLY]]&lt;br /&gt;
|- style=&amp;quot;background: #edfcfb;&amp;quot;&lt;br /&gt;
| DevIL&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Image codec based on the DevIL library.&lt;br /&gt;
|- style=&amp;quot;background: #edfcfb;&amp;quot;&lt;br /&gt;
| FreeImage&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Image codec based on the FreeImage library.&lt;br /&gt;
|- style=&amp;quot;background: #edfcfb;&amp;quot;&lt;br /&gt;
| OGRE&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Image codec that loads data via image loading facilities of OGRE.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #dfeff1;&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot; | Resource Provider Module&lt;br /&gt;
| Default&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | The default resource provider of CEGUI uses standard cross-platform file-access.&lt;br /&gt;
|- style=&amp;quot;background: #dfeff1;&amp;quot;&lt;br /&gt;
| OGRE&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | 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.&lt;br /&gt;
|- style=&amp;quot;background: #dfeff1;&amp;quot;&lt;br /&gt;
| minizip&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | CEGUI's MinizipResourceProvider allows users to provides the ability to load the resource files from locations within .zip files.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #e9ebfc;&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;5&amp;quot; | XML Parser Module&lt;br /&gt;
| Expat&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Ddefault XML parser of CEGUI. Uses the Expat library for XML parsing.&lt;br /&gt;
|- style=&amp;quot;background: #e9ebfc;&amp;quot;&lt;br /&gt;
| LibXML2&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Uses the LibXML2 library for XML parsing.&lt;br /&gt;
|- style=&amp;quot;background: #e9ebfc;&amp;quot;&lt;br /&gt;
| RapidXml&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Uses the RapidXml library for XML parsing.&lt;br /&gt;
|- style=&amp;quot;background: #e9ebfc;&amp;quot;&lt;br /&gt;
| TinyXML&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Uses the TinyXML library for XML parsing.&lt;br /&gt;
|- style=&amp;quot;background: #e9ebfc;&amp;quot;&lt;br /&gt;
| Xerces-C++&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Uses the Xerces library for XML parsing. It can do schema validation using the .xsd files provided in CEGUI's resources.&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #fae9fc;&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | Font Module&lt;br /&gt;
| FreeType&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | FreeType is the default font library of CEGUI and currently the only officially supported one.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #f4e0e7;&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;1&amp;quot; | Regular Expression Module&lt;br /&gt;
| Perl Compatible Regular Expressions (PCRE)&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Default regular expression library and currently the only officially supported one. Uses the PCRE library.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #fcf3e9;&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Scripting Module&lt;br /&gt;
| Lua&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Provides lua bindings using tolua++.&lt;br /&gt;
|- style=&amp;quot;background: #fcf3e9;&amp;quot;&lt;br /&gt;
| Python&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Official Python bindings are available using [[PyCEGUI]]&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #f2eeca;&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Memory Management&lt;br /&gt;
| OGRE&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | Ogre's memory allocator can optionally be used for CEGUI's memory management.&lt;br /&gt;
|- style=&amp;quot;background: #f2eeca;&amp;quot;&lt;br /&gt;
| nedmalloc&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | nedmalloc can optionally be used as memory allocator.&lt;br /&gt;
&lt;br /&gt;
|- style=&amp;quot;background: #f6fce9;&amp;quot;&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot; | Bi-Directional Language Module&lt;br /&gt;
| MiniBIDI&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | MiniBIDI based implementation of CEGUI's Bidi visual mapping.&lt;br /&gt;
|- style=&amp;quot;background: #f6fce9;&amp;quot;&lt;br /&gt;
| FriBIDI&lt;br /&gt;
| style=&amp;quot;text-align: left;&amp;quot; | FriBIDI based implementation of CEGUI's Bidi visual mapping.&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
CMake will automatically detect which external libraries exist on your system and will build CEGUI accordingly so make sure you install any external libraries you want to use before proceeding.&lt;br /&gt;
{{Note|You can turn off individual CEGUI modules from building (even if you have the required libraries installed) by changing the default [[Building from source#Build Options|Build Options]].}}&lt;br /&gt;
&lt;br /&gt;
===Directories===&lt;br /&gt;
If you're following the directory structure outlined above, you should have something like:&lt;br /&gt;
 cegui                          (root working directory)&lt;br /&gt;
 cegui/cegui_mk2                (core CEGUI)&lt;br /&gt;
Create the directory ''cegui/cegui_mk2/build'' and clone the ''cegui'' repository inside cegui/cegui_mk2 with the name ''source''. Example:&lt;br /&gt;
{{CLI|~/cegui|mkdir cegui_mk2/build}}&lt;br /&gt;
{{CLI|~/cegui|hg clone https://bitbucket.org/cegui/cegui cegui_mk2/source}}&lt;br /&gt;
The result should be:&lt;br /&gt;
 cegui/cegui_mk2                (core CEGUI)&lt;br /&gt;
 cegui/cegui_mk2/build          (will build here)&lt;br /&gt;
 cegui/cegui_mk2/source         (the mercurial repository copy)&lt;br /&gt;
&lt;br /&gt;
{{Todo|Add instructions on where to extract the stable source packages (when available) so that we maintain a common directory structure}}&lt;br /&gt;
&lt;br /&gt;
===Build Options===&lt;br /&gt;
There are several build options (or variables) supported by the CEGUI build system. To view them, you can use the command like or CMake GUI.&lt;br /&gt;
&lt;br /&gt;
====Using the command line====&lt;br /&gt;
Enter the ''build'' directory and issue the following cmake command:&lt;br /&gt;
 {{CLI|~/cegui/cegui_mk2|cd build}}&lt;br /&gt;
 {{CLI|~/cegui/cegui_mk2/build|cmake -LH ../source}}&lt;br /&gt;
{{Note|On systems that default to python3 (like Arch Linux) you have to tell it to use python2 like this:}}&lt;br /&gt;
 {{CLI|~/cegui/cegui_mk2/build|2=cmake -LH -DPYTHON_EXECUTABLE=/usr/bin/python2 ../source}}&lt;br /&gt;
CMake will run, it will look for the build systems available on your platform, will look for dependencies and then will print a list of variables, along with their description. For example:&lt;br /&gt;
 // Select whether bi-directional text is enabled and which library should be used:&lt;br /&gt;
     0: Disabled.&lt;br /&gt;
     1: Use integrated minibidi library.&lt;br /&gt;
     2: Use external fribidi library.&lt;br /&gt;
 CEGUI_BIDI_SUPPORT:STRING=0&lt;br /&gt;
 // Specifies whether to use embedded GLEW when external library was found&lt;br /&gt;
 CEGUI_BUILD_EMBEDDED_GLEW:BOOL=OFF&lt;br /&gt;
&lt;br /&gt;
====Using CMake GUI====&lt;br /&gt;
Start cmake-gui, select our ''source'' and ''build'' directories and click the ''Configure'' button. The available options will be listed in the main window. You can hover the mouse over an option and CMake will show a tooltip with a more detailed description.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Note|Changing the options and building is explained below, in [[#Building|Building]].}}&lt;br /&gt;
&lt;br /&gt;
===Building===&lt;br /&gt;
====Configuring and Generating makefiles====&lt;br /&gt;
The first step is to use CMake to configure the build and generate native makefiles. Without making any configuration changes, the command would be:&lt;br /&gt;
{{CLI|~/cegui/cegui_mk2/build|cmake ../source}}&lt;br /&gt;
The same can be done using the CMake GUI. Select the ''source'' and ''build'' directories, click configure and finally click generate.&lt;br /&gt;
&lt;br /&gt;
The build options can be changed via the GUI or via the CLI. If, for example, we want to turn off the slotted installation option and the python bindings we would run cmake like this:&lt;br /&gt;
{{CLI|~/cegui/cegui_mk2/build|2=cmake ../source -DCEGUI_SLOTTED_INSTALLATION:BOOL=OFF -DCEGUI_BUILD_PYTHON_MODULES:BOOL=OFF}}&lt;br /&gt;
{{Note|The python bindings are required by [[#CEED|CEED]] so don't disable them if you plan to use it.}}&lt;br /&gt;
&lt;br /&gt;
Another noteworthy option is the installation path, which is where CEGUI will be installed if you plan to install it via ''make install''. Change the value of the CMAKE_INSTALL_PREFIX configuration variable to set it. Example:&lt;br /&gt;
{{CLI|~/cegui/cegui_mk2/build|2=cmake ../source &amp;lt;other options here&amp;gt; -DCMAKE_INSTALL_PREFIX:PATH=/opt}}&lt;br /&gt;
so it will be installed in /opt/CEGUI (or /opt/CEGUI-0.8 if you use slotted installation).&lt;br /&gt;
&lt;br /&gt;
====Make====&lt;br /&gt;
The second (and last required) step is using the generated native makefiles to build it. This is specific to your build environment; you may need to open the generated solution with MSVC or Xcode, or simply issue the ''make'' command.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
GNU Make=&lt;br /&gt;
* You can speed ''make'' up significantly if you have a multi-core CPU by adding the ''-jN'' parameter, when N is the number of CPU cores on your machine.&lt;br /&gt;
{{CLI|~/cegui/cegui_mk2/build|make -j4}}&lt;br /&gt;
* Optionally, run ''make install'' to install the binaries and the shared datafiles on your system.&lt;br /&gt;
|-|&lt;br /&gt;
MSVC=&lt;br /&gt;
{{Todo|MSVC notes}}&lt;br /&gt;
|-|&lt;br /&gt;
Xcode=&lt;br /&gt;
{{Todo|Xcode notes}}&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Running the samples===&lt;br /&gt;
Now that the build has finished, you can run the sample applications to check your build. The binaries should be in the ''bin'' directory:&lt;br /&gt;
 cegui/cegui_mk2/build/bin&lt;br /&gt;
&lt;br /&gt;
The samples may fail to run initially because they can't find the required data files.&lt;br /&gt;
According to ''&amp;quot;cegui/cegui_mk2/source/Samples/common/include/CEGUISamplesConfig.h.in&amp;quot;'', the samples will look for the datafiles on ''&amp;quot;../datafiles&amp;quot;'' on Windows and on ''${CMAKE_INSTALL_PREFIX}/${CEGUI_DATA_INSTALL_DIR}'' on other platforms.&lt;br /&gt;
&lt;br /&gt;
It is possible to change this path without rebuilding, using the environment variable ''CEGUI_SAMPLE_DATAPATH''.&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
Linux=&lt;br /&gt;
{{CLI|~/cegui/cegui_mk2/build|2=CEGUI_SAMPLE_DATAPATH=../source/datafiles bin/CEGUIDemo8-0.8}}&lt;br /&gt;
|-|&lt;br /&gt;
Windows=&lt;br /&gt;
{{CLI|C:\Users\User\cegui\cegui_mk2\build|2=SET CEGUI_SAMPLE_DATAPATH=&amp;quot;C:\Users\User\cegui\cegui_mk2\source\datafiles&amp;quot;}}&lt;br /&gt;
{{CLI|C:\Users\User\cegui\cegui_mk2\build|2=bin/CEGUIDemo8-0.8.exe}}&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Documentation===&lt;br /&gt;
{{Note|The documentation for stable releases can be found online [http://static.cegui.org.uk/docs/ here]}}&lt;br /&gt;
&lt;br /&gt;
The documentation is written in doxygen format so you need [http://www.doxygen.org/ Doxygen] to build it. If you want to generate the nice class diagrams too, you need to install [http://graphviz.org/ Graphviz].&lt;br /&gt;
&lt;br /&gt;
Building the docs with the default options is easy:&lt;br /&gt;
{{CLI|~/cegui/cegui_mk2/build|cd ../source/doc/doxygen}}&lt;br /&gt;
{{CLI|~/cegui/cegui_mk2/source/doc/doxygen|doxygen}}&lt;br /&gt;
&lt;br /&gt;
This will create a directory named ''html'' with plenty of files, just open ''index.html''.&lt;br /&gt;
&lt;br /&gt;
If you'd rather change some of doxygen's options, you can edit the file ''source/doc/doxygen/doxyfile'' or, alternatively, use ''doxywizard'' (GUI).&lt;br /&gt;
To change doxygen's output directory, one might do something like this:&lt;br /&gt;
{{CLI|~/cegui/cegui_mk2/source/doc/doxygen|mkdir ../../../build/doc}}&lt;br /&gt;
{{CLI|~/cegui/cegui_mk2/source/doc/doxygen|nano doxyfile           or use your editor of choice to edit ''doxyfile''}}&lt;br /&gt;
&lt;br /&gt;
Find the line &lt;br /&gt;
 OUTPUT_DIRECTORY = &lt;br /&gt;
and change it to&lt;br /&gt;
 OUTPUT_DIRECTORY = ../../../build/doc&lt;br /&gt;
&lt;br /&gt;
Now run doxygen and it will create the html docs in ''build/doc''.&lt;br /&gt;
&lt;br /&gt;
==CEED==&lt;br /&gt;
CEED is the new CEGUI unified editor. It can edit layouts and imagesets, supports projects and multiple open file tabs, visual and source editing, preview and more. Please see [[CEED]] for a detailed description.&lt;br /&gt;
&lt;br /&gt;
CEED is written in [http://www.python.org/ Python] so there's no need to build it; all that's required is Python2 and it's dependencies.&lt;br /&gt;
&lt;br /&gt;
{{Note|If you'd rather use a stable package that includes dependencies, please follow [[Downloads]]}}&lt;br /&gt;
&lt;br /&gt;
===Dependencies===&lt;br /&gt;
CEED requires a Python 2 interpreter, version 2.6 or higher.&lt;br /&gt;
Apart from [[PyCEGUI]] (the CEGUI Python bindings), it depends on the following libraries:&lt;br /&gt;
* PyOpenGL&lt;br /&gt;
* Qt4, PySide (+ PySide Tools)&lt;br /&gt;
* Boost.Python&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tabber&amp;gt;&lt;br /&gt;
Windows=&lt;br /&gt;
{{Todo|Windows dependencies notes}}&lt;br /&gt;
|-|&lt;br /&gt;
Mac=&lt;br /&gt;
{{Todo|Mac dependencies notes}}&lt;br /&gt;
|-|&lt;br /&gt;
Arch Linux=&lt;br /&gt;
You need at least python2, boost, python-opengl, pyside (AUR), pyside-tools (AUR).&lt;br /&gt;
{{Note|The packages from AUR may have been included in the ''[community]'' repository by now so check there first.}}&lt;br /&gt;
|-|&lt;br /&gt;
Debian=&lt;br /&gt;
;Wheezy&lt;br /&gt;
&lt;br /&gt;
PySide is part of Sid at the moment, so you have to add its repository address to your /etc/apt/sources.list and then:&lt;br /&gt;
&lt;br /&gt;
{{CLI||sudo apt-get update}}&lt;br /&gt;
{{CLI||sudo apt-get install cmake python-opengl pyside-tools boost-python}}&lt;br /&gt;
|-|&lt;br /&gt;
Fedora=&lt;br /&gt;
You need boost-devel, python-devel, python-opengl, python-pyside, pyside-tools.&lt;br /&gt;
|-|&lt;br /&gt;
Gentoo=&lt;br /&gt;
You can use these supplied ebuilds:[https://bitbucket.org/ChrisTrenkamp/gentoo-ogre3d-tools]. Copy these ebuilds to your local overlay[http://en.gentoo-wiki.com/wiki/Overlay#Local_Overlays], add the necessary options to your package.keywords and package.use files, and run '''''emerge -av dev-util/ceed'''''&lt;br /&gt;
&amp;lt;/tabber&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Running===&lt;br /&gt;
{{Todo|Update this section when CEED/CEGUI 0.8 is released}}&lt;br /&gt;
If you're following the directory structure outlined in [[#Building|Building]], you should have something like:&lt;br /&gt;
 cegui                          (root working directory)&lt;br /&gt;
 cegui/CEED                     (CEED repository copy)&lt;br /&gt;
&lt;br /&gt;
{{Todo|Add instructions on where to extract the stable source packages (when available) so that we maintain a common directory structure}}&lt;br /&gt;
&lt;br /&gt;
Running the main ''ceed-gui'' application could be as simple as:&lt;br /&gt;
{{CLI|~/cegui/CEED|2=PYTHONPATH=.:$PYTHONPATH python2 bin/ceed-gui}}&lt;br /&gt;
&lt;br /&gt;
If you don't have PyCEGUI installed system-wide but built it in ''cegui/cegui_mk2/build'', you can run ''ceed-gui'' like this:&lt;br /&gt;
{{CLI|~/cegui/CEED|2=PYTHONPATH=../cegui_mk2/build/lib:.:$PYTHONPATH python2 bin/ceed-gui}}&lt;br /&gt;
&lt;br /&gt;
====Running from Mercurial====&lt;br /&gt;
If you've cloned the CEED mercurial repository, you will most likely get the following error when you try to run ''ceed-gui'':&lt;br /&gt;
 ImportError: No module named mainwindow&lt;br /&gt;
This is because the compiled .ui files are not part of the repository. Edit the file ''ceed/version.py'' with your favorite text editor and change the value of '''CEED_developerMode''' from '''False''' to '''True'''.&lt;br /&gt;
&lt;br /&gt;
=Troubleshooting=&lt;br /&gt;
If you encounter a problem that's not listed here, please make a post on the appropriate forum: [http://www.cegui.org.uk/phpBB2/viewforum.php?f=10 CEGUI], [http://www.cegui.org.uk/phpBB2/viewforum.php?f=15 CEED].&lt;br /&gt;
&lt;br /&gt;
For comments about this article, you may use it's discussion page.&lt;br /&gt;
&lt;br /&gt;
=Related articles=&lt;br /&gt;
* [[Eclipse and CEGUI]]&lt;br /&gt;
* [[Contribution|Contributing to the development of CEGUI]]&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Rendering_to_texture_(RTT)_in_CEGUI&amp;diff=5169</id>
		<title>Rendering to texture (RTT) in CEGUI</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Rendering_to_texture_(RTT)_in_CEGUI&amp;diff=5169"/>
				<updated>2014-03-04T22:32:49Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.8}}&lt;br /&gt;
&lt;br /&gt;
Since version 0.8 the new GUIContext class allows it to render your CEGUI interface into a texture instead of rendering it normally into your main buffer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::System&amp;amp; ceguiSystem = CEGUI::System::getSingleton();&lt;br /&gt;
&lt;br /&gt;
//Taking some random values as example for a GUIContext size.&lt;br /&gt;
int width = 1024;&lt;br /&gt;
int height = 800;&lt;br /&gt;
CEGUI::Sizef size(static_cast&amp;lt;float&amp;gt;(width), static_cast&amp;lt;float&amp;gt;(height));&lt;br /&gt;
&lt;br /&gt;
// We create a CEGUI texture target and create a GUIContext that will use it.&lt;br /&gt;
CEGUI::TextureTarget* renderTextureTarget = ceguiSystem.getRenderer()-&amp;gt;createTextureTarget();&lt;br /&gt;
CEGUI::GUIContext&amp;amp; renderGuiContext = ceguiSystem.createGUIContext(static_cast&amp;lt;CEGUI::RenderTarget&amp;amp;&amp;gt;(*renderTextureTarget) );&lt;br /&gt;
renderTextureTarget-&amp;gt;declareRenderSize(size);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following section is only necessary if you want to use the rendered texture as a CEGUI Image again. Basically to render a CEGUI layout inside CEGUI. This won't be the case if you just want to render CEGUI into a texture and use it somewhere in your 3D application.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
// We create a BasicImage and set the Texture&lt;br /&gt;
CEGUI::BasicImage* textureTargetImage = static_cast&amp;lt;CEGUI::BasicImage*&amp;gt;(&amp;amp;CEGUI::ImageManager::getSingleton().create(&amp;quot;BasicImage&amp;quot;, &amp;quot;MyTextureGroup/MyTextureName&amp;quot;));&lt;br /&gt;
textureTargetImage-&amp;gt;setTexture(&amp;amp;renderTextureTarget-&amp;gt;getTexture());&lt;br /&gt;
&lt;br /&gt;
//Flipping is necessary due to differences between renderers regarding top or bottom being the origin&lt;br /&gt;
bool isTextureTargetVerticallyFlipped = renderTextureTarget-&amp;gt;isRenderingInverted();&lt;br /&gt;
CEGUI::Rectf renderArea;&lt;br /&gt;
&lt;br /&gt;
if (isTextureTargetVerticallyFlipped)&lt;br /&gt;
    renderArea = CEGUI::Rectf(0.0f, height, width, 0.0f);&lt;br /&gt;
else&lt;br /&gt;
    renderArea = CEGUI::Rectf(0.0f, 0.0f, width, height);&lt;br /&gt;
&lt;br /&gt;
textureTargetImage-&amp;gt;setArea(renderArea);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For rendering you need to call the rendering function of your new GuiContext directly. Here is an example of how to call the renderer and the guicontext in the right order when rendering:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
    CEGUI::Renderer* gui_renderer(gui_system.getRenderer());&lt;br /&gt;
    gui_renderer-&amp;gt;beginRendering();&lt;br /&gt;
&lt;br /&gt;
    renderTextureTarget-&amp;gt;clear();&lt;br /&gt;
    renderGuiContext.draw();&lt;br /&gt;
&lt;br /&gt;
    gui_renderer-&amp;gt;endRendering();&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Also do not forget to correctly update CEGUI and the GUIContext with all timepulses and inputs, just as you would do it normally but by using your new GUIContext instead of the default one!&lt;br /&gt;
&lt;br /&gt;
If you want to retrieve the renderer-specific texture from a CEGUI texture you will need to cast it:&lt;br /&gt;
&lt;br /&gt;
For example for OpenGL:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::OpenGLTexture&amp;amp; glTexture = static_cast&amp;lt;CEGUI::OpenGLTexture&amp;amp;&amp;gt;(d_textureTarget-&amp;gt;getTexture());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you can use the member function to receive whatever render-specific traits you need, such as the textureID in Opengl as an unsigned integer, etc.&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Rendering_to_texture_(RTT)_in_CEGUI&amp;diff=5155</id>
		<title>Rendering to texture (RTT) in CEGUI</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Rendering_to_texture_(RTT)_in_CEGUI&amp;diff=5155"/>
				<updated>2014-03-03T19:19:41Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.8}}&lt;br /&gt;
&lt;br /&gt;
Since version 0.8 the new GUIContext class allows it to render your CEGUI interface into a texture instead of rendering it normally into your main buffer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::System&amp;amp; ceSystem = CEGUI::System::getSingleton();&lt;br /&gt;
//Taking some random values as example for a GUIContext size.&lt;br /&gt;
int width = 1024;&lt;br /&gt;
int height = 800;&lt;br /&gt;
CEGUI::Sizef size(static_cast&amp;lt;float&amp;gt;(width), static_cast&amp;lt;float&amp;gt;(height));&lt;br /&gt;
&lt;br /&gt;
// We create a CEGUI texture target and create a GUIContext that will use it.&lt;br /&gt;
CEGUI::TextureTarget* renderTextureTarget = ceSystem.getRenderer()-&amp;gt;createTextureTarget();&lt;br /&gt;
CEGUI::GUIContext* renderGuiContext = ceSystem.createGUIContext(static_cast&amp;lt;CEGUI::RenderTarget&amp;amp;&amp;gt;(*renderTextureTarget) );&lt;br /&gt;
renderTextureTarget-&amp;gt;declareRenderSize(size);&lt;br /&gt;
&lt;br /&gt;
// We create a BasicImage and set the Texture&lt;br /&gt;
textureTargetImage = static_cast&amp;lt;CEGUI::BitmapImage*&amp;gt;(&amp;amp;CEGUI::ImageManager::getSingleton().create(&amp;quot;BitmapImage&amp;quot;, &amp;quot;SomeGroup/MyTexturesName&amp;quot;));&lt;br /&gt;
textureTargetImage-&amp;gt;setTexture(&amp;amp;renderTextureTarget-&amp;gt;getTexture());&lt;br /&gt;
&lt;br /&gt;
// We size the image using a function&lt;br /&gt;
setTextureTargetImageArea(static_cast&amp;lt;float&amp;gt;(height), static_cast&amp;lt;float&amp;gt;(width));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the function for sizing the BasicImage:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setTextureTargetImageArea(float height, float width)&lt;br /&gt;
{&lt;br /&gt;
    if(d_textureTarget)&lt;br /&gt;
    {&lt;br /&gt;
        bool isTextureTargetVerticallyFlipped = renderTextureTarget-&amp;gt;isRenderingInverted();&lt;br /&gt;
        CEGUI::Rectf renderArea;&lt;br /&gt;
        if (isTextureTargetVerticallyFlipped)&lt;br /&gt;
            renderArea = CEGUI::Rectf(0.0f, height, width, 0.0f);&lt;br /&gt;
        else&lt;br /&gt;
            renderArea = CEGUI::Rectf(0.0f, 0.0f, width, height);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if(textureTargetImage)&lt;br /&gt;
            textureTargetImage-&amp;gt;setImageArea(renderArea);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you want to retrieve the renderer-specific texture from a CEGUI texture you will need to cast it:&lt;br /&gt;
&lt;br /&gt;
For example for OpenGL:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::OpenGLTexture&amp;amp; glTexture = static_cast&amp;lt;CEGUI::OpenGLTexture&amp;amp;&amp;gt;(d_textureTarget-&amp;gt;getTexture());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that you can use the member function to receive whatever render-specific traits you need, such as the textureID in Opengl as an unsigned integer, etc.&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Rendering_to_texture_(RTT)_in_CEGUI&amp;diff=5154</id>
		<title>Rendering to texture (RTT) in CEGUI</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Rendering_to_texture_(RTT)_in_CEGUI&amp;diff=5154"/>
				<updated>2014-03-03T19:09:45Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.8}}&lt;br /&gt;
&lt;br /&gt;
Since version 0.8 the new GUIContext class allows it to render your CEGUI interface into a texture instead of rendering it normally into your main buffer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
//Taking some random values as example for a guicontext size.&lt;br /&gt;
int width = 1024;&lt;br /&gt;
int height = 800;&lt;br /&gt;
CEGUI::Sizef size(static_cast&amp;lt;float&amp;gt;(width), static_cast&amp;lt;float&amp;gt;(height));&lt;br /&gt;
&lt;br /&gt;
// We create a CEGUI texture target and create a GUIContext that will use it.&lt;br /&gt;
CEGUI::TextureTarget* renderTextureTarget = system.getRenderer()-&amp;gt;createTextureTarget();&lt;br /&gt;
CEGUI::GUIContext* renderGuiContext = &amp;amp;CEGUI::System::getSingleton().createGUIContext(static_cast&amp;lt;CEGUI::RenderTarget&amp;amp;&amp;gt;(*renderTextureTarget) );&lt;br /&gt;
renderTextureTarget-&amp;gt;declareRenderSize(size);&lt;br /&gt;
&lt;br /&gt;
// We create a BasicImage and set the Texture&lt;br /&gt;
d_textureTargetImage = static_cast&amp;lt;CEGUI::BitmapImage*&amp;gt;(&amp;amp;CEGUI::ImageManager::getSingleton().create(&amp;quot;BitmapImage&amp;quot;, &amp;quot;SomeGroup/MyTexturesName&amp;quot;));&lt;br /&gt;
d_textureTargetImage-&amp;gt;setTexture(&amp;amp;d_textureTargetImage-&amp;gt;getTexture());&lt;br /&gt;
&lt;br /&gt;
// We size the image using a function&lt;br /&gt;
setTextureTargetImageArea(static_cast&amp;lt;float&amp;gt;(height), static_cast&amp;lt;float&amp;gt;(width));&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the function for sizing the BasicImage:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void setTextureTargetImageArea(float height, float width)&lt;br /&gt;
{&lt;br /&gt;
    if(d_textureTarget)&lt;br /&gt;
    {&lt;br /&gt;
        bool isTextureTargetVerticallyFlipped = d_textureTarget-&amp;gt;isRenderingInverted();&lt;br /&gt;
        CEGUI::Rectf renderArea;&lt;br /&gt;
        if(isTextureTargetVerticallyFlipped)&lt;br /&gt;
            renderArea = CEGUI::Rectf(0.0f, height, width, 0.0f);&lt;br /&gt;
        else&lt;br /&gt;
            renderArea = CEGUI::Rectf(0.0f, 0.0f, width, height);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        if(d_textureTargetImage)&lt;br /&gt;
            d_textureTargetImage-&amp;gt;setImageArea(renderArea);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if you want to retrieve the renderer-specific texture from a CEGUI texture you will need to cast it:&lt;br /&gt;
&lt;br /&gt;
For example for OpenGL:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::OpenGLTexture&amp;amp; glTexture = static_cast&amp;lt;CEGUI::OpenGLTexture&amp;amp;&amp;gt;(d_textureTarget-&amp;gt;getTexture());&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After that u can use the member function to receive whatever render-specific traits you need, such as the textureID in Opengl as an unsigned integer, etc.&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5142</id>
		<title>Porting tips and changes from 0.7.X to 0.8.X</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5142"/>
				<updated>2014-01-25T22:23:05Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Introduction|2=&lt;br /&gt;
The 0.8.x branch has already seen releases. Please see the sourceforge page for tarball downloads.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Major renames/API changes|2=&lt;br /&gt;
* CEGUI::Window was renamed to CEGUI::Widget as Widget is the coined term for that, WindowManager renamed to WidgetManager, etc... (not in mercurial yet!)&lt;br /&gt;
* The stock/standard window renderer set (now widget renderer set) FalagardWRBase was renamed to StandardWRSet to avoid confusion with core [[Falagard]] facilities (not in mercurial yet!)&lt;br /&gt;
* Windows now don't have absolute names! Every window's name only has to be unique in it's parent window. Therefore WindowManager::getSingleton().getWindow no longer made sense and was removed. If root's name was &amp;quot;Root&amp;quot; and your the window name was &amp;quot;Root/Stuff/After/Root/Name&amp;quot;, you can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;). It's recommended to migrate to a more encapsulated model.&lt;br /&gt;
* CEGUI::GUIContext class has been created that is responsible for injecting input and event handling, setting the default font, setting the root window, setting a default tooltip object and type, and manipulating the mouse cursor.&lt;br /&gt;
* CEGUI::GUIContext needs time impulses injected separately! You should also inject time pulses into CEGUI::System. This API &amp;quot;wart&amp;quot; may disappear in future versions.&lt;br /&gt;
* CEGUI::MouseCursor is no longer a singleton, and can be accessed and manipulated from CEGUI::GUIContext.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=General|2=&lt;br /&gt;
* All XML attributes must now be in lowercase, e.g. &amp;lt;WidgetLook Name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt; must be &amp;lt;WidgetLook name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt;&lt;br /&gt;
* PropertyHelper has been turned into a template class, instead of PropertyHelper::uintToString you do PropertyHelper&amp;lt;uint&amp;gt;::toString, instead of PropertyHelper::stringToUint you do PropertyHelper&amp;lt;uint&amp;gt;::fromString&lt;br /&gt;
* All instances of the word caret that were incorrectly spelt 'carat' have been corrected.  This affects all APIs, properties, events and datafiles.&lt;br /&gt;
* Window::EventWindowUpdated renamed to Window::EventUpdated and the associated string is changed from &amp;quot;WindowUpdate&amp;quot; to &amp;quot;Updated&amp;quot;&lt;br /&gt;
* ListHeader::SegmentNameSuffix changed type from character array to CEGUI::String&lt;br /&gt;
* BiDiVisualMapping renamed to BidiVisualMapping.  Also renamed the files, so CEGUIBiDiVisualMapping.h is now CEGUIBidiVisualMapping.h&lt;br /&gt;
* class colour renamed to Colour, as a side effect the &amp;quot;colour&amp;quot; interpolator is now &amp;quot;Colour&amp;quot; interpolator, this breaks animation definitions!&lt;br /&gt;
* Point typedef removed, please use Vector2 instead&lt;br /&gt;
* Many event string values changed to match the C++ name (but without the Event prefix).  A list of which strings changed value will appear here soon.&lt;br /&gt;
* Window::setRestoreCapture renamed to Window::setRestoreOldCapture&lt;br /&gt;
* CEGUI now supports custom memory allocation, see [[Memory Allocation]] to check if this concerns you or not.&lt;br /&gt;
* Window::addChildWindow renamed to Window::addChild, Window::removeChildWindow renamed to Window::removeChild, several other methods (mostly in layout containers) changed from *ChildWindow* to *Child*&lt;br /&gt;
* CEGUI::String can now be just a typedef or a class, depending on String configuration (CEGUI can now use std::string as CEGUI::String for apps not requiring unicode)&lt;br /&gt;
* Window::getChild_impl method completely removed, it was only used by Window::getParentPixelSize, shouldn't be hard to replace&lt;br /&gt;
* Vector2, Vector3, Size and Rect are now templated, you should use Vector2&amp;lt;float&amp;gt; (or just Vector2&amp;lt;&amp;gt; as a shortcut since float is the default type) instead of Vector2, UVector2 class was removed, UVector2 is now just a typedef to Vector2&amp;lt;UDim&amp;gt;. Same with Vector3, Size and Rect.&lt;br /&gt;
* Texture::saveToMemory is renamed Texture::blitToMemory.&lt;br /&gt;
* Renderer and Texture interfaces changed in order to support named textures.&lt;br /&gt;
* Window::isDisabled(localOnly) is now split into Window::isDisabled (= old isDisabled(true) and Window::isEffectiveDisabled (= old isDisabled(false))&lt;br /&gt;
* Window::isVisible(localOnly) is now split into Window::isVisible (= old isDisabled(true) and Window::isEffectiveVisible (= old isVisible(false))&lt;br /&gt;
* WindowManager::loadWindowLayout is renamed to WindowManager::loadLayoutFromFile&lt;br /&gt;
* NamedXMLResourceManager::create is renamed to NamedXMLResourceManager::createFromFile  (Ex. CEGUI::SchemeManager::createFromFile)&lt;br /&gt;
* CEGUI::DefaultLogger no longer throws const char* but a real exception in setLogFilename - http://www.cegui.org.uk/mantis/view.php?id=443&lt;br /&gt;
* CEGUI now has inbuilt copy, cut, paste support, if you used a custom solution, you might want to check CEGUI::Clipboard and System::inject{Copy,Cut,Paste}Request&lt;br /&gt;
* CEGUI::ProgressBar::getStep renamed to getStepSize for consistency with setStepSize&lt;br /&gt;
* CEGUI::WidgetLookManager::parseLookNFeelSpecification is now called parseLookNFeelSpecificationFromFile, variants for loading from string and raw data container have been added&lt;br /&gt;
* XRotation, YRotation, ZRotation properties merged into the new Rotation property, which is a Quaternion.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Property Name Changes|2=&lt;br /&gt;
* Property from Window called &amp;quot;ZOrderChangeEnabled&amp;quot; renamed to &amp;quot;ZOrderingEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;MouseButtonDownAutoRepeat&amp;quot; renamed to &amp;quot;MouseAutoRepeatEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;CustomTooltipType&amp;quot; renamed to &amp;quot;TooltipType&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;Tooltip&amp;quot; renamed to &amp;quot;TooltipText&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;RiseOnClick&amp;quot; renamed to &amp;quot;RiseOnClickEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;UnifiedAreaRect&amp;quot; renamed to &amp;quot;Area&amp;quot;, &amp;quot;UnifiedSize&amp;quot; renamed to &amp;quot;Size&amp;quot;, etc...&lt;br /&gt;
* Property &amp;quot;MaxEditTextLength&amp;quot; renamed to &amp;quot;MaxTextLength&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Event Name Changes|2=&lt;br /&gt;
* EventMouseEnters renamed to EventMouseEntersSurface (old name removed)&lt;br /&gt;
* EventMouseLeaves renamed to EventMouseLeavesSurface (old name removed)&lt;br /&gt;
* CheckStateChanged renamed to SelectStateChanged (for ToggleButton (old Checkbox))&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Image and ImageManager|2=&lt;br /&gt;
* Image::draw renamed to Image::render&lt;br /&gt;
* Image class is now an abstract interface.  BasicImage implementation is provided, and used for internally created Image objects.&lt;br /&gt;
* Imageset class is removed. It remains a CEGUI format that allows to conveniently define multiple images on one texture but the data is no longer stored in any class. When Imageset is loaded, the ImageManager creates a new BasicImage for each of the images in the imageset. Only the images themselves will remain after imageset is loaded. You now use the new ImageManager to access defined images.&lt;br /&gt;
* ImagesetManager class is removed.  You now use the new ImageManager.&lt;br /&gt;
* Images belonging to a certain imageset can be accessed like so: &amp;quot;ImageSetName/ImageName&amp;quot; (ex. &amp;quot;AlfiskoSkin/MouseArrow&amp;quot;).&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=GUIContext|2=&lt;br /&gt;
A lot of API has been moved from CEGUI::System to CEGUI::GUIContext. CEGUI now allows you to create multiple independent GUI contexts with their own input injection.&lt;br /&gt;
&lt;br /&gt;
As a rule of thumb, whenever you see &amp;quot;There is no CEGUI::System::some_foobar_method method&amp;quot;, it is likely that you can replace the call with CEGUI::System::getSingleton().getDefaultGUIContext().someFoobarMethod(). This holds for all the System::inject* methods for example.&lt;br /&gt;
&lt;br /&gt;
WindowManager::getSingleton().getWindow() was removed. You can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;).&lt;br /&gt;
To get Root Window you can call GUIContext::getRootWindow();&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: The chain call of methods CEGUI::System::getSingleton().getDefaultGUIContext() should be called as rarely as possible, instead one should keep it's result in appropriate variable.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=PyCEGUI|2=&lt;br /&gt;
* EventSet.subscribeEvent now has a different, more pythonic syntax, any python callable (bound member function, free function, lambda, functor, ...) is allowed (EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance, &amp;quot;someMethodInIt&amp;quot;) is now EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance.someMethodInIt)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Datafiles|2=&lt;br /&gt;
* All XML datafiles must specify a version attribute. Example: &amp;lt;GUILayout '''version=&amp;quot;4&amp;quot;'''&amp;gt;&lt;br /&gt;
* All attributes in datafiles must begin with a lower-case letter. Example: &amp;lt;Property '''n'''ame=&amp;quot;Alpha&amp;quot;               '''v'''alue=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
* See '''Property Name Changes''' and '''Event Name Changes''' above&lt;br /&gt;
&lt;br /&gt;
* '''.looknfeel:'''&lt;br /&gt;
** &amp;lt;Falagard version=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
** old: &amp;lt;Image '''type'''=&amp;quot;TopEdge&amp;quot; '''imageset'''=&amp;quot;TaharezLook&amp;quot; '''image'''=&amp;quot;TitlebarTop&amp;quot; /&amp;gt; &amp;lt;br /&amp;gt;new: &amp;lt;Image '''component'''=&amp;quot;TopEdge&amp;quot; '''name'''=&amp;quot;TaharezLook/TitlebarTop&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: MaxEditTextLength &amp;amp;rarr; MaxTextLength&lt;br /&gt;
** Change: MouseButtonDownAutoRepeat &amp;amp;rarr; MouseAutoRepeatEnabled&lt;br /&gt;
** Change: DimOperator &amp;amp;rarr; OperatorDim. Please compare [http://static.cegui.org.uk/docs/0.7.9/fal_element_ref.html#fal_elem_ref_sec_10 0.7.9] with [http://static.cegui.org.uk/docs/current/fal_element_ref.html#fal_elem_ref_sec_operatordim latest] for functional change description&lt;br /&gt;
*** old formatting: VALUE1 { DIMOPERATOR() { VALUE2 } }&amp;lt;br /&amp;gt; new formatting: OPERATORDIM() { VALUE1, VALUE2 }&lt;br /&gt;
* '''.scheme:'''&lt;br /&gt;
** &amp;lt;GUIScheme name=&amp;quot;MySkin&amp;quot; version=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
** Change: &amp;lt;WindowRendererSet Filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt; &amp;amp;rarr; &amp;lt;WindowRendererSet filename=&amp;quot;CEGUICoreWindowRendererSet&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: renderer=&amp;quot;Falagard/... &amp;amp;rarr; renderer=&amp;quot;Core/...&lt;br /&gt;
** Change: &amp;quot;Core/SystemButton&amp;quot; &amp;amp;rarr; &amp;quot;Core/Button&amp;quot;&lt;br /&gt;
** Change: &amp;quot;CEGUI/Checkbox&amp;quot; &amp;amp;rarr; &amp;quot;CEGUI/ToggleButton&amp;quot;&lt;br /&gt;
* '''.layout:'''&lt;br /&gt;
** &amp;lt;GUILayout version=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
** UnifiedPosition, UnifiedAreaRect, UnifiedSize, UnifiedMinSize, UnifiedMaxSize &amp;amp;rarr; Position, Area, Size, MinSize, MaxSize&lt;br /&gt;
** Tooltip &amp;amp;rarr; TooltipText&lt;br /&gt;
** old: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;set:Buttons image:Settings&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;new: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;Buttons/Settings&amp;quot; /&amp;gt;&lt;br /&gt;
* '''.imageset:'''&lt;br /&gt;
** &amp;lt;Imageset version=&amp;quot;2&amp;quot; ... /&amp;gt;&lt;br /&gt;
* '''.font:'''&lt;br /&gt;
** &amp;lt;Font version=&amp;quot;3&amp;quot; ... /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5141</id>
		<title>Porting tips and changes from 0.7.X to 0.8.X</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5141"/>
				<updated>2014-01-25T22:22:38Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Introduction|2=&lt;br /&gt;
The 0.8.x branch has already seen releases. Please see the sourceforge page for tarball downloads.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Major renames/API changes|2=&lt;br /&gt;
* CEGUI::Window was renamed to CEGUI::Widget as Widget is the coined term for that, WindowManager renamed to WidgetManager, etc... (not in mercurial yet!)&lt;br /&gt;
* The stock/standard window renderer set (now widget renderer set) FalagardWRBase was renamed to StandardWRSet to avoid confusion with core [[Falagard]] facilities (not in mercurial yet!)&lt;br /&gt;
* Windows now don't have absolute names! Every window's name only has to be unique in it's parent window. Therefore WindowManager::getSingleton().getWindow no longer made sense and was removed. If root's name was &amp;quot;Root&amp;quot; and your the window name was &amp;quot;Root/Stuff/After/Root/Name&amp;quot;, you can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;). It's recommended to migrate to a more encapsulated model.&lt;br /&gt;
* CEGUI::GUIContext class has been created that is responsible for injecting input and event handling, setting the default font, setting the root window, setting a default tooltip object and type, and manipulating the mouse cursor.&lt;br /&gt;
* CEGUI::GUIContext needs time impulses injected separately! You should also inject time pulses into CEGUI::System. This API &amp;quot;wart&amp;quot; may disappear in future versions.&lt;br /&gt;
* CEGUI::MouseCursor is no longer a singleton, and can be accessed and manipulated from CEGUI::GUIContext.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=General|2=&lt;br /&gt;
* All XML attributes must now be in lowercase, e.g. &amp;lt;WidgetLook Name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt; must be &amp;lt;WidgetLook name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt;&lt;br /&gt;
* PropertyHelper has been turned into a template class, instead of PropertyHelper::uintToString you do PropertyHelper&amp;lt;uint&amp;gt;::toString, instead of PropertyHelper::stringToUint you do PropertyHelper&amp;lt;uint&amp;gt;::fromString&lt;br /&gt;
* All instances of the word caret that were incorrectly spelt 'carat' have been corrected.  This affects all APIs, properties, events and datafiles.&lt;br /&gt;
* Window::EventWindowUpdated renamed to Window::EventUpdated and the associated string is changed from &amp;quot;WindowUpdate&amp;quot; to &amp;quot;Updated&amp;quot;&lt;br /&gt;
* ListHeader::SegmentNameSuffix changed type from character array to CEGUI::String&lt;br /&gt;
* BiDiVisualMapping renamed to BidiVisualMapping.  Also renamed the files, so CEGUIBiDiVisualMapping.h is now CEGUIBidiVisualMapping.h&lt;br /&gt;
* class colour renamed to Colour, as a side effect the &amp;quot;colour&amp;quot; interpolator is now &amp;quot;Colour&amp;quot; interpolator, this breaks animation definitions!&lt;br /&gt;
* Point typedef removed, please use Vector2 instead&lt;br /&gt;
* Many event string values changed to match the C++ name (but without the Event prefix).  A list of which strings changed value will appear here soon.&lt;br /&gt;
* Window::setRestoreCapture renamed to Window::setRestoreOldCapture&lt;br /&gt;
* CEGUI now supports custom memory allocation, see [[Memory Allocation]] to check if this concerns you or not.&lt;br /&gt;
* Window::addChildWindow renamed to Window::addChild, Window::removeChildWindow renamed to Window::removeChild, several other methods (mostly in layout containers) changed from *ChildWindow* to *Child*&lt;br /&gt;
* CEGUI::String can now be just a typedef or a class, depending on String configuration (CEGUI can now use std::string as CEGUI::String for apps not requiring unicode)&lt;br /&gt;
* Window::getChild_impl method completely removed, it was only used by Window::getParentPixelSize, shouldn't be hard to replace&lt;br /&gt;
* Vector2, Vector3, Size and Rect are now templated, you should use Vector2&amp;lt;float&amp;gt; (or just Vector2&amp;lt;&amp;gt; as a shortcut since float is the default type) instead of Vector2, UVector2 class was removed, UVector2 is now just a typedef to Vector2&amp;lt;UDim&amp;gt;. Same with Vector3, Size and Rect.&lt;br /&gt;
* Texture::saveToMemory is renamed Texture::blitToMemory.&lt;br /&gt;
* Renderer and Texture interfaces changed in order to support named textures.&lt;br /&gt;
* Window::isDisabled(localOnly) is now split into Window::isDisabled (= old isDisabled(true) and Window::isEffectiveDisabled (= old isDisabled(false))&lt;br /&gt;
* Window::isVisible(localOnly) is now split into Window::isVisible (= old isDisabled(true) and Window::isEffectiveVisible (= old isVisible(false))&lt;br /&gt;
* WindowManager::loadWindowLayout is renamed to WindowManager::loadLayoutFromFile&lt;br /&gt;
* NamedXMLResourceManager::create is renamed to NamedXMLResourceManager::createFromFile  (Ex. CEGUI::SchemeManager::createFromFile)&lt;br /&gt;
* CEGUI::DefaultLogger no longer throws const char* but a real exception in setLogFilename - http://www.cegui.org.uk/mantis/view.php?id=443&lt;br /&gt;
* CEGUI now has inbuilt copy, cut, paste support, if you used a custom solution, you might want to check CEGUI::Clipboard and System::inject{Copy,Cut,Paste}Request&lt;br /&gt;
* CEGUI::ProgressBar::getStep renamed to getStepSize for consistency with setStepSize&lt;br /&gt;
* CEGUI::WidgetLookManager::parseLookNFeelSpecification is now called parseLookNFeelSpecificationFromFile, variants for loading from string and raw data container have been added&lt;br /&gt;
* XRotation, YRotation, ZRotation properties merged into the new Rotation property, which is a Quaternion.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Property Name Changes|2=&lt;br /&gt;
* Property from Window called &amp;quot;ZOrderChangeEnabled&amp;quot; renamed to &amp;quot;ZOrderingEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;MouseButtonDownAutoRepeat&amp;quot; renamed to &amp;quot;MouseAutoRepeatEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;CustomTooltipType&amp;quot; renamed to &amp;quot;TooltipType&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;Tooltip&amp;quot; renamed to &amp;quot;TooltipText&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;RiseOnClick&amp;quot; renamed to &amp;quot;RiseOnClickEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;UnifiedAreaRect&amp;quot; renamed to &amp;quot;Area&amp;quot;, &amp;quot;UnifiedSize&amp;quot; renamed to &amp;quot;Size&amp;quot;, etc...&lt;br /&gt;
* Property &amp;quot;MaxEditTextLength&amp;quot; renamed to &amp;quot;MaxTextLength&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Event Name Changes|2=&lt;br /&gt;
* EventMouseEnters renamed to EventMouseEntersSurface (old name removed)&lt;br /&gt;
* EventMouseLeaves renamed to EventMouseLeavesSurface (old name removed)&lt;br /&gt;
* CheckStateChanged renamed to SelectStateChanged (for ToggleButton (old Checkbox))&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Image and ImageManager|2=&lt;br /&gt;
* Image::draw renamed to Image::render&lt;br /&gt;
* Image class is now an abstract interface.  BasicImage implementation is provided, and used for internally created Image objects.&lt;br /&gt;
* Imageset class is removed. It remains a CEGUI format that allows to conveniently define multiple images on one texture but the data is no longer stored in any class. When Imageset is loaded, the ImageManager creates a new BasicImage for each of the images in the imageset. Only the images themselves will remain after imageset is loaded. You now use the new ImageManager to access defined images.&lt;br /&gt;
* ImagesetManager class is removed.  You now use the new ImageManager.&lt;br /&gt;
* Images belonging to a certain imageset can be accessed like so: &amp;quot;ImageSetName/ImageName&amp;quot; (ex. &amp;quot;AlfiskoSkin/MouseArrow&amp;quot;).&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=GUIContext|2=&lt;br /&gt;
A lot of API has been moved from CEGUI::System to CEGUI::GUIContext. CEGUI now allows you to create multiple independent GUI contexts with their own input injection.&lt;br /&gt;
&lt;br /&gt;
As a rule of thumb, whenever you see &amp;quot;There is no CEGUI::System::some_foobar_method method&amp;quot;, it is likely that you can replace the call with CEGUI::System::getSingleton().getDefaultGUIContext().someFoobarMethod(). This holds for all the System::inject* methods for example.&lt;br /&gt;
&lt;br /&gt;
WindowManager::getSingleton().getWindow() was removed. You can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;).&lt;br /&gt;
To get Root Window you can call GUIContext::getRootWindow();&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: The chain call of methods CEGUI::System::getSingleton().getDefaultGUIContext() should be called as rarely as possible, instead one should keep it's result in appropriate variable.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=PyCEGUI|2=&lt;br /&gt;
* EventSet.subscribeEvent now has a different, more pythonic syntax, any python callable (bound member function, free function, lambda, functor, ...) is allowed (EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance, &amp;quot;someMethodInIt&amp;quot;) is now EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance.someMethodInIt)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Datafiles|2=&lt;br /&gt;
* All XML datafiles must specify a version attribute. Example: &amp;lt;GUILayout '''version=&amp;quot;4&amp;quot;'''&amp;gt;&lt;br /&gt;
* All attributes in datafiles must begin with a lower-case letter. Example: &amp;lt;Property '''n'''ame=&amp;quot;Alpha&amp;quot;               '''v'''alue=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
* See '''Property Name Changes''' and '''Event Name Changes''' above&lt;br /&gt;
&lt;br /&gt;
* '''.looknfeel:'''&lt;br /&gt;
** &amp;lt;Falagard version=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
** old: &amp;lt;Image '''type'''=&amp;quot;TopEdge&amp;quot; '''imageset'''=&amp;quot;TaharezLook&amp;quot; '''image'''=&amp;quot;TitlebarTop&amp;quot; /&amp;gt; &amp;lt;br /&amp;gt;new: &amp;lt;Image '''component'''=&amp;quot;TopEdge&amp;quot; '''name'''=&amp;quot;TaharezLook/TitlebarTop&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: MaxEditTextLength &amp;amp;rarr; MaxTextLength&lt;br /&gt;
** Change: MouseButtonDownAutoRepeat &amp;amp;rarr; MouseAutoRepeatEnabled&lt;br /&gt;
** Change: DimOperator &amp;amp;rarr; OperatorDim. Please compare [http://static.cegui.org.uk/docs/0.7.9/fal_element_ref.html#fal_elem_ref_sec_10 0.7.9] with [http://static.cegui.org.uk/docs/current/fal_element_ref.html#fal_elem_ref_sec_operatordim latest] for functional change description&lt;br /&gt;
*** old formatting: VALUE1 { DIMOPERATOR() { VALUE2 } }&amp;lt;br /&amp;gt; new formatting: OPERATORDIM() { VALUE1, VALUE2 }&lt;br /&gt;
* '''.scheme:'''&lt;br /&gt;
** &amp;lt;GUIScheme name=&amp;quot;MySkin&amp;quot; version=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
** Change: &amp;lt;WindowRendererSet Filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt; &amp;amp;rarr; &amp;lt;WindowRendererSet filename=&amp;quot;CEGUICoreWindowRendererSet&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: renderer=&amp;quot;Falagard/... &amp;amp;rarr; renderer=&amp;quot;Core/...&lt;br /&gt;
** Change: &amp;quot;Core/SystemButton&amp;quot; &amp;amp;rarr; &amp;quot;Core/Button&amp;quot;&lt;br /&gt;
** Change: &amp;quot;CEGUI/Checkbox&amp;quot; &amp;amp;rarr; &amp;quot;CEGUI/ToggleButton&amp;quot;&lt;br /&gt;
* '''.layout:'''&lt;br /&gt;
** &amp;lt;GUILayout version=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
** UnifiedPosition, UnifiedAreaRect, UnifiedSize, UnifiedMinSize, UnifiedMaxSize &amp;amp;rarr; Position, Area, Size, MinSize, MaxSize&lt;br /&gt;
** Tooltip &amp;amp;rarr; TooltipText&lt;br /&gt;
** old: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;set:Buttons image:Settings&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;new: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;Buttons/Settings&amp;quot; /&amp;gt;&lt;br /&gt;
* '''.imageset:'''&lt;br /&gt;
** &amp;lt;Font version=&amp;quot;2&amp;quot; ... /&amp;gt;&lt;br /&gt;
* '''.font:'''&lt;br /&gt;
** &amp;lt;Font version=&amp;quot;3&amp;quot; ... /&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5140</id>
		<title>Porting tips and changes from 0.7.X to 0.8.X</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5140"/>
				<updated>2014-01-23T16:08:26Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Introduction|2=&lt;br /&gt;
The 0.8.x branch has already seen releases. Please see the sourceforge page for tarball downloads.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Major renames/API changes|2=&lt;br /&gt;
* CEGUI::Window was renamed to CEGUI::Widget as Widget is the coined term for that, WindowManager renamed to WidgetManager, etc... (not in mercurial yet!)&lt;br /&gt;
* The stock/standard window renderer set (now widget renderer set) FalagardWRBase was renamed to StandardWRSet to avoid confusion with core [[Falagard]] facilities (not in mercurial yet!)&lt;br /&gt;
* Windows now don't have absolute names! Every window's name only has to be unique in it's parent window. Therefore WindowManager::getSingleton().getWindow no longer made sense and was removed. If root's name was &amp;quot;Root&amp;quot; and your the window name was &amp;quot;Root/Stuff/After/Root/Name&amp;quot;, you can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;). It's recommended to migrate to a more encapsulated model.&lt;br /&gt;
* CEGUI::GUIContext class has been created that is responsible for injecting input and event handling, setting the default font, setting the root window, setting a default tooltip object and type, and manipulating the mouse cursor.&lt;br /&gt;
* CEGUI::GUIContext needs time impulses injected separately! You should also inject time pulses into CEGUI::System. This API &amp;quot;wart&amp;quot; may disappear in future versions.&lt;br /&gt;
* CEGUI::MouseCursor is no longer a singleton, and can be accessed and manipulated from CEGUI::GUIContext.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=General|2=&lt;br /&gt;
* All XML attributes must now be in lowercase, e.g. &amp;lt;WidgetLook Name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt; must be &amp;lt;WidgetLook name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt;&lt;br /&gt;
* PropertyHelper has been turned into a template class, instead of PropertyHelper::uintToString you do PropertyHelper&amp;lt;uint&amp;gt;::toString, instead of PropertyHelper::stringToUint you do PropertyHelper&amp;lt;uint&amp;gt;::fromString&lt;br /&gt;
* All instances of the word caret that were incorrectly spelt 'carat' have been corrected.  This affects all APIs, properties, events and datafiles.&lt;br /&gt;
* Window::EventWindowUpdated renamed to Window::EventUpdated and the associated string is changed from &amp;quot;WindowUpdate&amp;quot; to &amp;quot;Updated&amp;quot;&lt;br /&gt;
* ListHeader::SegmentNameSuffix changed type from character array to CEGUI::String&lt;br /&gt;
* BiDiVisualMapping renamed to BidiVisualMapping.  Also renamed the files, so CEGUIBiDiVisualMapping.h is now CEGUIBidiVisualMapping.h&lt;br /&gt;
* class colour renamed to Colour, as a side effect the &amp;quot;colour&amp;quot; interpolator is now &amp;quot;Colour&amp;quot; interpolator, this breaks animation definitions!&lt;br /&gt;
* Point typedef removed, please use Vector2 instead&lt;br /&gt;
* Many event string values changed to match the C++ name (but without the Event prefix).  A list of which strings changed value will appear here soon.&lt;br /&gt;
* Window::setRestoreCapture renamed to Window::setRestoreOldCapture&lt;br /&gt;
* CEGUI now supports custom memory allocation, see [[Memory Allocation]] to check if this concerns you or not.&lt;br /&gt;
* Window::addChildWindow renamed to Window::addChild, Window::removeChildWindow renamed to Window::removeChild, several other methods (mostly in layout containers) changed from *ChildWindow* to *Child*&lt;br /&gt;
* CEGUI::String can now be just a typedef or a class, depending on String configuration (CEGUI can now use std::string as CEGUI::String for apps not requiring unicode)&lt;br /&gt;
* Window::getChild_impl method completely removed, it was only used by Window::getParentPixelSize, shouldn't be hard to replace&lt;br /&gt;
* Vector2, Vector3, Size and Rect are now templated, you should use Vector2&amp;lt;float&amp;gt; (or just Vector2&amp;lt;&amp;gt; as a shortcut since float is the default type) instead of Vector2, UVector2 class was removed, UVector2 is now just a typedef to Vector2&amp;lt;UDim&amp;gt;. Same with Vector3, Size and Rect.&lt;br /&gt;
* Texture::saveToMemory is renamed Texture::blitToMemory.&lt;br /&gt;
* Renderer and Texture interfaces changed in order to support named textures.&lt;br /&gt;
* Window::isDisabled(localOnly) is now split into Window::isDisabled (= old isDisabled(true) and Window::isEffectiveDisabled (= old isDisabled(false))&lt;br /&gt;
* Window::isVisible(localOnly) is now split into Window::isVisible (= old isDisabled(true) and Window::isEffectiveVisible (= old isVisible(false))&lt;br /&gt;
* WindowManager::loadWindowLayout is renamed to WindowManager::loadLayoutFromFile&lt;br /&gt;
* NamedXMLResourceManager::create is renamed to NamedXMLResourceManager::createFromFile  (Ex. CEGUI::SchemeManager::createFromFile)&lt;br /&gt;
* CEGUI::DefaultLogger no longer throws const char* but a real exception in setLogFilename - http://www.cegui.org.uk/mantis/view.php?id=443&lt;br /&gt;
* CEGUI now has inbuilt copy, cut, paste support, if you used a custom solution, you might want to check CEGUI::Clipboard and System::inject{Copy,Cut,Paste}Request&lt;br /&gt;
* CEGUI::ProgressBar::getStep renamed to getStepSize for consistency with setStepSize&lt;br /&gt;
* CEGUI::WidgetLookManager::parseLookNFeelSpecification is now called parseLookNFeelSpecificationFromFile, variants for loading from string and raw data container have been added&lt;br /&gt;
* XRotation, YRotation, ZRotation properties merged into the new Rotation property, which is a Quaternion.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Property Name Changes|2=&lt;br /&gt;
* Property from Window called &amp;quot;ZOrderChangeEnabled&amp;quot; renamed to &amp;quot;ZOrderingEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;MouseButtonDownAutoRepeat&amp;quot; renamed to &amp;quot;MouseAutoRepeatEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;CustomTooltipType&amp;quot; renamed to &amp;quot;TooltipType&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;Tooltip&amp;quot; renamed to &amp;quot;TooltipText&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;RiseOnClick&amp;quot; renamed to &amp;quot;RiseOnClickEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;UnifiedAreaRect&amp;quot; renamed to &amp;quot;Area&amp;quot;, &amp;quot;UnifiedSize&amp;quot; renamed to &amp;quot;Size&amp;quot;, etc...&lt;br /&gt;
* Property &amp;quot;MaxEditTextLength&amp;quot; renamed to &amp;quot;MaxTextLength&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Event Name Changes|2=&lt;br /&gt;
* EventMouseEnters renamed to EventMouseEntersSurface (old name removed)&lt;br /&gt;
* EventMouseLeaves renamed to EventMouseLeavesSurface (old name removed)&lt;br /&gt;
* CheckStateChanged renamed to SelectStateChanged (for ToggleButton (old Checkbox))&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Image and ImageManager|2=&lt;br /&gt;
* Image::draw renamed to Image::render&lt;br /&gt;
* Image class is now an abstract interface.  BasicImage implementation is provided, and used for internally created Image objects.&lt;br /&gt;
* Imageset class is removed. It remains a CEGUI format that allows to conveniently define multiple images on one texture but the data is no longer stored in any class. When Imageset is loaded, the ImageManager creates a new BasicImage for each of the images in the imageset. Only the images themselves will remain after imageset is loaded. You now use the new ImageManager to access defined images.&lt;br /&gt;
* ImagesetManager class is removed.  You now use the new ImageManager.&lt;br /&gt;
* Images belonging to a certain imageset can be accessed like so: &amp;quot;ImageSetName/ImageName&amp;quot; (ex. &amp;quot;AlfiskoSkin/MouseArrow&amp;quot;).&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=GUIContext|2=&lt;br /&gt;
A lot of API has been moved from CEGUI::System to CEGUI::GUIContext. CEGUI now allows you to create multiple independent GUI contexts with their own input injection.&lt;br /&gt;
&lt;br /&gt;
As a rule of thumb, whenever you see &amp;quot;There is no CEGUI::System::some_foobar_method method&amp;quot;, it is likely that you can replace the call with CEGUI::System::getSingleton().getDefaultGUIContext().someFoobarMethod(). This holds for all the System::inject* methods for example.&lt;br /&gt;
&lt;br /&gt;
WindowManager::getSingleton().getWindow() was removed. You can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;).&lt;br /&gt;
To get Root Window you can call GUIContext::getRootWindow();&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: The chain call of methods CEGUI::System::getSingleton().getDefaultGUIContext() should be called as rarely as possible, instead one should keep it's result in appropriate variable.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=PyCEGUI|2=&lt;br /&gt;
* EventSet.subscribeEvent now has a different, more pythonic syntax, any python callable (bound member function, free function, lambda, functor, ...) is allowed (EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance, &amp;quot;someMethodInIt&amp;quot;) is now EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance.someMethodInIt)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Datafiles|2=&lt;br /&gt;
* All XML datafiles must specify a version attribute. Example: &amp;lt;GUILayout '''version=&amp;quot;4&amp;quot;'''&amp;gt;&lt;br /&gt;
* All attributes in datafiles must begin with a lower-case letter. Example: &amp;lt;Property '''n'''ame=&amp;quot;Alpha&amp;quot;               '''v'''alue=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
* See '''Property Name Changes''' and '''Event Name Changes''' above&lt;br /&gt;
&lt;br /&gt;
* '''.looknfeel:'''&lt;br /&gt;
** &amp;lt;Falagard version=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
** old: &amp;lt;Image '''type'''=&amp;quot;TopEdge&amp;quot; '''imageset'''=&amp;quot;TaharezLook&amp;quot; '''image'''=&amp;quot;TitlebarTop&amp;quot; /&amp;gt; &amp;lt;br /&amp;gt;new: &amp;lt;Image '''component'''=&amp;quot;TopEdge&amp;quot; '''name'''=&amp;quot;TaharezLook/TitlebarTop&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: MaxEditTextLength &amp;amp;rarr; MaxTextLength&lt;br /&gt;
** Change: MouseButtonDownAutoRepeat &amp;amp;rarr; MouseAutoRepeatEnabled&lt;br /&gt;
** Change: DimOperator &amp;amp;rarr; OperatorDim. Please compare [http://static.cegui.org.uk/docs/0.7.9/fal_element_ref.html#fal_elem_ref_sec_10 0.7.9] with [http://static.cegui.org.uk/docs/current/fal_element_ref.html#fal_elem_ref_sec_operatordim latest] for functional change description&lt;br /&gt;
*** old formatting: VALUE1 { DIMOPERATOR() { VALUE2 } }&amp;lt;br /&amp;gt; new formatting: OPERATORDIM() { VALUE1, VALUE2 }&lt;br /&gt;
* '''.scheme:'''&lt;br /&gt;
** &amp;lt;GUIScheme name=&amp;quot;MySkin&amp;quot; version=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
** Change: &amp;lt;WindowRendererSet Filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt; &amp;amp;rarr; &amp;lt;WindowRendererSet filename=&amp;quot;CEGUICoreWindowRendererSet&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: renderer=&amp;quot;Falagard/... &amp;amp;rarr; renderer=&amp;quot;Core/...&lt;br /&gt;
** Change: &amp;quot;Core/SystemButton&amp;quot; &amp;amp;rarr; &amp;quot;Core/Button&amp;quot;&lt;br /&gt;
** Change: &amp;quot;CEGUI/Checkbox&amp;quot; &amp;amp;rarr; &amp;quot;CEGUI/ToggleButton&amp;quot;&lt;br /&gt;
* '''.layout:'''&lt;br /&gt;
** &amp;lt;GUILayout version=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
** UnifiedPosition, UnifiedAreaRect, UnifiedSize, UnifiedMinSize, UnifiedMaxSize &amp;amp;rarr; Position, Area, Size, MinSize, MaxSize&lt;br /&gt;
** Tooltip &amp;amp;rarr; TooltipText&lt;br /&gt;
** old: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;set:Buttons image:Settings&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;new: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;Buttons/Settings&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5139</id>
		<title>Porting tips and changes from 0.7.X to 0.8.X</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5139"/>
				<updated>2014-01-23T15:56:58Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Introduction|2=&lt;br /&gt;
The 0.8.x branch has already seen releases. Please see the sourceforge page for tarball downloads.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Major renames/API changes|2=&lt;br /&gt;
* CEGUI::Window was renamed to CEGUI::Widget as Widget is the coined term for that, WindowManager renamed to WidgetManager, etc... (not in mercurial yet!)&lt;br /&gt;
* The stock/standard window renderer set (now widget renderer set) FalagardWRBase was renamed to StandardWRSet to avoid confusion with core [[Falagard]] facilities (not in mercurial yet!)&lt;br /&gt;
* Windows now don't have absolute names! Every window's name only has to be unique in it's parent window. Therefore WindowManager::getSingleton().getWindow no longer made sense and was removed. If root's name was &amp;quot;Root&amp;quot; and your the window name was &amp;quot;Root/Stuff/After/Root/Name&amp;quot;, you can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;). It's recommended to migrate to a more encapsulated model.&lt;br /&gt;
* CEGUI::GUIContext class has been created that is responsible for injecting input and event handling, setting the default font, setting the root window, setting a default tooltip object and type, and manipulating the mouse cursor.&lt;br /&gt;
* CEGUI::GUIContext needs time impulses injected separately! You should also inject time pulses into CEGUI::System. This API &amp;quot;wart&amp;quot; may disappear in future versions.&lt;br /&gt;
* CEGUI::MouseCursor is no longer a singleton, and can be accessed and manipulated from CEGUI::GUIContext.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=General|2=&lt;br /&gt;
* All XML attributes must now be in lowercase, e.g. &amp;lt;WidgetLook Name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt; must be &amp;lt;WidgetLook name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt;&lt;br /&gt;
* PropertyHelper has been turned into a template class, instead of PropertyHelper::uintToString you do PropertyHelper&amp;lt;uint&amp;gt;::toString, instead of PropertyHelper::stringToUint you do PropertyHelper&amp;lt;uint&amp;gt;::fromString&lt;br /&gt;
* All instances of the word caret that were incorrectly spelt 'carat' have been corrected.  This affects all APIs, properties, events and datafiles.&lt;br /&gt;
* Window::EventWindowUpdated renamed to Window::EventUpdated and the associated string is changed from &amp;quot;WindowUpdate&amp;quot; to &amp;quot;Updated&amp;quot;&lt;br /&gt;
* ListHeader::SegmentNameSuffix changed type from character array to CEGUI::String&lt;br /&gt;
* BiDiVisualMapping renamed to BidiVisualMapping.  Also renamed the files, so CEGUIBiDiVisualMapping.h is now CEGUIBidiVisualMapping.h&lt;br /&gt;
* class colour renamed to Colour, as a side effect the &amp;quot;colour&amp;quot; interpolator is now &amp;quot;Colour&amp;quot; interpolator, this breaks animation definitions!&lt;br /&gt;
* Point typedef removed, please use Vector2 instead&lt;br /&gt;
* Many event string values changed to match the C++ name (but without the Event prefix).  A list of which strings changed value will appear here soon.&lt;br /&gt;
* Window::setRestoreCapture renamed to Window::setRestoreOldCapture&lt;br /&gt;
* CEGUI now supports custom memory allocation, see [[Memory Allocation]] to check if this concerns you or not.&lt;br /&gt;
* Window::addChildWindow renamed to Window::addChild, Window::removeChildWindow renamed to Window::removeChild, several other methods (mostly in layout containers) changed from *ChildWindow* to *Child*&lt;br /&gt;
* CEGUI::String can now be just a typedef or a class, depending on String configuration (CEGUI can now use std::string as CEGUI::String for apps not requiring unicode)&lt;br /&gt;
* Window::getChild_impl method completely removed, it was only used by Window::getParentPixelSize, shouldn't be hard to replace&lt;br /&gt;
* Vector2, Vector3, Size and Rect are now templated, you should use Vector2&amp;lt;float&amp;gt; (or just Vector2&amp;lt;&amp;gt; as a shortcut since float is the default type) instead of Vector2, UVector2 class was removed, UVector2 is now just a typedef to Vector2&amp;lt;UDim&amp;gt;. Same with Vector3, Size and Rect.&lt;br /&gt;
* Texture::saveToMemory is renamed Texture::blitToMemory.&lt;br /&gt;
* Renderer and Texture interfaces changed in order to support named textures.&lt;br /&gt;
* Window::isDisabled(localOnly) is now split into Window::isDisabled (= old isDisabled(true) and Window::isEffectiveDisabled (= old isDisabled(false))&lt;br /&gt;
* Window::isVisible(localOnly) is now split into Window::isVisible (= old isDisabled(true) and Window::isEffectiveVisible (= old isVisible(false))&lt;br /&gt;
* WindowManager::loadWindowLayout is renamed to WindowManager::loadLayoutFromFile&lt;br /&gt;
* NamedXMLResourceManager::create is renamed to NamedXMLResourceManager::createFromFile  (Ex. CEGUI::SchemeManager::createFromFile)&lt;br /&gt;
* CEGUI::DefaultLogger no longer throws const char* but a real exception in setLogFilename - http://www.cegui.org.uk/mantis/view.php?id=443&lt;br /&gt;
* CEGUI now has inbuilt copy, cut, paste support, if you used a custom solution, you might want to check CEGUI::Clipboard and System::inject{Copy,Cut,Paste}Request&lt;br /&gt;
* CEGUI::ProgressBar::getStep renamed to getStepSize for consistency with setStepSize&lt;br /&gt;
* CEGUI::WidgetLookManager::parseLookNFeelSpecification is now called parseLookNFeelSpecificationFromFile, variants for loading from string and raw data container have been added&lt;br /&gt;
* XRotation, YRotation, ZRotation properties merged into the new Rotation property, which is a Quaternion.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Property Name Changes|2=&lt;br /&gt;
* Property from Window called &amp;quot;ZOrderChangeEnabled&amp;quot; renamed to &amp;quot;ZOrderingEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;MouseButtonDownAutoRepeat&amp;quot; renamed to &amp;quot;MouseAutoRepeatEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;CustomTooltipType&amp;quot; renamed to &amp;quot;TooltipType&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;Tooltip&amp;quot; renamed to &amp;quot;TooltipText&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;RiseOnClick&amp;quot; renamed to &amp;quot;RiseOnClickEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;UnifiedAreaRect&amp;quot; renamed to &amp;quot;Area&amp;quot;, &amp;quot;UnifiedSize&amp;quot; renamed to &amp;quot;Size&amp;quot;, etc...&lt;br /&gt;
* Property &amp;quot;MaxEditTextLength&amp;quot; renamed to &amp;quot;MaxTextLength&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Event NameChanges|2=&lt;br /&gt;
* EventMouseEnters renamed to EventMouseEntersSurface (old name removed)&lt;br /&gt;
* EventMouseLeaves renamed to EventMouseLeavesSurface (old name removed)&lt;br /&gt;
* CheckStateChanged renamed to SelectStateChanged (for ToggleButton (old Checkbox))&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Image and ImageManager|2=&lt;br /&gt;
* Image::draw renamed to Image::render&lt;br /&gt;
* Image class is now an abstract interface.  BasicImage implementation is provided, and used for internally created Image objects.&lt;br /&gt;
* Imageset class is removed. It remains a CEGUI format that allows to conveniently define multiple images on one texture but the data is no longer stored in any class. When Imageset is loaded, the ImageManager creates a new BasicImage for each of the images in the imageset. Only the images themselves will remain after imageset is loaded. You now use the new ImageManager to access defined images.&lt;br /&gt;
* ImagesetManager class is removed.  You now use the new ImageManager.&lt;br /&gt;
* Images belonging to a certain imageset can be accessed like so: &amp;quot;ImageSetName/ImageName&amp;quot; (ex. &amp;quot;AlfiskoSkin/MouseArrow&amp;quot;).&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=GUIContext|2=&lt;br /&gt;
A lot of API has been moved from CEGUI::System to CEGUI::GUIContext. CEGUI now allows you to create multiple independent GUI contexts with their own input injection.&lt;br /&gt;
&lt;br /&gt;
As a rule of thumb, whenever you see &amp;quot;There is no CEGUI::System::some_foobar_method method&amp;quot;, it is likely that you can replace the call with CEGUI::System::getSingleton().getDefaultGUIContext().someFoobarMethod(). This holds for all the System::inject* methods for example.&lt;br /&gt;
&lt;br /&gt;
WindowManager::getSingleton().getWindow() was removed. You can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;).&lt;br /&gt;
To get Root Window you can call GUIContext::getRootWindow();&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: The chain call of methods CEGUI::System::getSingleton().getDefaultGUIContext() should be called as rarely as possible, instead one should keep it's result in appropriate variable.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=PyCEGUI|2=&lt;br /&gt;
* EventSet.subscribeEvent now has a different, more pythonic syntax, any python callable (bound member function, free function, lambda, functor, ...) is allowed (EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance, &amp;quot;someMethodInIt&amp;quot;) is now EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance.someMethodInIt)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Datafiles|2=&lt;br /&gt;
* All XML datafiles must specify a version attribute. Example: &amp;lt;GUILayout '''version=&amp;quot;4&amp;quot;'''&amp;gt;&lt;br /&gt;
* All attributes in datafiles must begin with a lower-case letter. Example: &amp;lt;Property '''n'''ame=&amp;quot;Alpha&amp;quot;               '''v'''alue=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
* '''.looknfeel:'''&lt;br /&gt;
** &amp;lt;Falagard version=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
** old: &amp;lt;Image '''type'''=&amp;quot;TopEdge&amp;quot; '''imageset'''=&amp;quot;TaharezLook&amp;quot; '''image'''=&amp;quot;TitlebarTop&amp;quot; /&amp;gt; &amp;lt;br /&amp;gt;new: &amp;lt;Image '''component'''=&amp;quot;TopEdge&amp;quot; '''name'''=&amp;quot;TaharezLook/TitlebarTop&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: MaxEditTextLength &amp;amp;rarr; MaxTextLength&lt;br /&gt;
** Change: MouseButtonDownAutoRepeat &amp;amp;rarr; MouseAutoRepeatEnabled&lt;br /&gt;
** Change: DimOperator &amp;amp;rarr; OperatorDim. Please compare [http://static.cegui.org.uk/docs/0.7.9/fal_element_ref.html#fal_elem_ref_sec_10 0.7.9] with [http://static.cegui.org.uk/docs/current/fal_element_ref.html#fal_elem_ref_sec_operatordim latest] for functional change description&lt;br /&gt;
* '''.scheme:'''&lt;br /&gt;
** &amp;lt;GUIScheme name=&amp;quot;MySkin&amp;quot; version=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
** Change: &amp;lt;WindowRendererSet Filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt; &amp;amp;rarr; &amp;lt;WindowRendererSet filename=&amp;quot;CEGUICoreWindowRendererSet&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: renderer=&amp;quot;Falagard/... &amp;amp;rarr; renderer=&amp;quot;Core/...&lt;br /&gt;
** Change: &amp;quot;Core/SystemButton&amp;quot; &amp;amp;rarr; &amp;quot;Core/Button&amp;quot;&lt;br /&gt;
** Change: &amp;quot;CEGUI/Checkbox&amp;quot; &amp;amp;rarr; &amp;quot;CEGUI/ToggleButton&amp;quot;&lt;br /&gt;
* '''.layout:'''&lt;br /&gt;
** &amp;lt;GUILayout version=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
** see '''Event-related Changes''' above&lt;br /&gt;
** UnifiedPosition, UnifiedAreaRect, UnifiedSize, UnifiedMinSize, UnifiedMaxSize &amp;amp;rarr; Position, Area, Size, MinSize, MaxSize&lt;br /&gt;
** Tooltip &amp;amp;rarr; TooltipText&lt;br /&gt;
** old: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;set:Buttons image:Settings&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;new: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;Buttons/Settings&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5138</id>
		<title>Porting tips and changes from 0.7.X to 0.8.X</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5138"/>
				<updated>2014-01-21T22:27:39Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Introduction|2=&lt;br /&gt;
The 0.8.x branch has already seen releases. Please see the sourceforge page for tarball downloads.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Major renames/API changes|2=&lt;br /&gt;
* CEGUI::Window was renamed to CEGUI::Widget as Widget is the coined term for that, WindowManager renamed to WidgetManager, etc... (not in mercurial yet!)&lt;br /&gt;
* The stock/standard window renderer set (now widget renderer set) FalagardWRBase was renamed to StandardWRSet to avoid confusion with core [[Falagard]] facilities (not in mercurial yet!)&lt;br /&gt;
* Windows now don't have absolute names! Every window's name only has to be unique in it's parent window. Therefore WindowManager::getSingleton().getWindow no longer made sense and was removed. If root's name was &amp;quot;Root&amp;quot; and your the window name was &amp;quot;Root/Stuff/After/Root/Name&amp;quot;, you can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;). It's recommended to migrate to a more encapsulated model.&lt;br /&gt;
* CEGUI::GUIContext class has been created that is responsible for injecting input and event handling, setting the default font, setting the root window, setting a default tooltip object and type, and manipulating the mouse cursor.&lt;br /&gt;
* CEGUI::GUIContext needs time impulses injected separately! You should also inject time pulses into CEGUI::System. This API &amp;quot;wart&amp;quot; may disappear in future versions.&lt;br /&gt;
* CEGUI::MouseCursor is no longer a singleton, and can be accessed and manipulated from CEGUI::GUIContext.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=General|2=&lt;br /&gt;
* All XML attributes must now be in lowercase, e.g. &amp;lt;WidgetLook Name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt; must be &amp;lt;WidgetLook name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt;&lt;br /&gt;
* PropertyHelper has been turned into a template class, instead of PropertyHelper::uintToString you do PropertyHelper&amp;lt;uint&amp;gt;::toString, instead of PropertyHelper::stringToUint you do PropertyHelper&amp;lt;uint&amp;gt;::fromString&lt;br /&gt;
* All instances of the word caret that were incorrectly spelt 'carat' have been corrected.  This affects all APIs, properties, events and datafiles.&lt;br /&gt;
* Window::EventWindowUpdated renamed to Window::EventUpdated and the associated string is changed from &amp;quot;WindowUpdate&amp;quot; to &amp;quot;Updated&amp;quot;&lt;br /&gt;
* ListHeader::SegmentNameSuffix changed type from character array to CEGUI::String&lt;br /&gt;
* BiDiVisualMapping renamed to BidiVisualMapping.  Also renamed the files, so CEGUIBiDiVisualMapping.h is now CEGUIBidiVisualMapping.h&lt;br /&gt;
* class colour renamed to Colour, as a side effect the &amp;quot;colour&amp;quot; interpolator is now &amp;quot;Colour&amp;quot; interpolator, this breaks animation definitions!&lt;br /&gt;
* Point typedef removed, please use Vector2 instead&lt;br /&gt;
* Many event string values changed to match the C++ name (but without the Event prefix).  A list of which strings changed value will appear here soon.&lt;br /&gt;
* Window::setRestoreCapture renamed to Window::setRestoreOldCapture&lt;br /&gt;
* CEGUI now supports custom memory allocation, see [[Memory Allocation]] to check if this concerns you or not.&lt;br /&gt;
* Window::addChildWindow renamed to Window::addChild, Window::removeChildWindow renamed to Window::removeChild, several other methods (mostly in layout containers) changed from *ChildWindow* to *Child*&lt;br /&gt;
* CEGUI::String can now be just a typedef or a class, depending on String configuration (CEGUI can now use std::string as CEGUI::String for apps not requiring unicode)&lt;br /&gt;
* Window::getChild_impl method completely removed, it was only used by Window::getParentPixelSize, shouldn't be hard to replace&lt;br /&gt;
* Vector2, Vector3, Size and Rect are now templated, you should use Vector2&amp;lt;float&amp;gt; (or just Vector2&amp;lt;&amp;gt; as a shortcut since float is the default type) instead of Vector2, UVector2 class was removed, UVector2 is now just a typedef to Vector2&amp;lt;UDim&amp;gt;. Same with Vector3, Size and Rect.&lt;br /&gt;
* Texture::saveToMemory is renamed Texture::blitToMemory.&lt;br /&gt;
* Renderer and Texture interfaces changed in order to support named textures.&lt;br /&gt;
* Window::isDisabled(localOnly) is now split into Window::isDisabled (= old isDisabled(true) and Window::isEffectiveDisabled (= old isDisabled(false))&lt;br /&gt;
* Window::isVisible(localOnly) is now split into Window::isVisible (= old isDisabled(true) and Window::isEffectiveVisible (= old isVisible(false))&lt;br /&gt;
* WindowManager::loadWindowLayout is renamed to WindowManager::loadLayoutFromFile&lt;br /&gt;
* NamedXMLResourceManager::create is renamed to NamedXMLResourceManager::createFromFile  (Ex. CEGUI::SchemeManager::createFromFile)&lt;br /&gt;
* Property from Window called &amp;quot;ZOrderChangeEnabled&amp;quot; renamed to &amp;quot;ZOrderingEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;MouseButtonDownAutoRepeat&amp;quot; renamed to &amp;quot;MouseAutoRepeatEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;CustomTooltipType&amp;quot; renamed to &amp;quot;TooltipType&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;Tooltip&amp;quot; renamed to &amp;quot;TooltipText&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;RiseOnClick&amp;quot; renamed to &amp;quot;RiseOnClickEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;UnifiedAreaRect&amp;quot; renamed to &amp;quot;Area&amp;quot;, &amp;quot;UnifiedSize&amp;quot; renamed to &amp;quot;Size&amp;quot;, etc...&lt;br /&gt;
* CEGUI::DefaultLogger no longer throws const char* but a real exception in setLogFilename - http://www.cegui.org.uk/mantis/view.php?id=443&lt;br /&gt;
* CEGUI now has inbuilt copy, cut, paste support, if you used a custom solution, you might want to check CEGUI::Clipboard and System::inject{Copy,Cut,Paste}Request&lt;br /&gt;
* CEGUI::ProgressBar::getStep renamed to getStepSize for consistency with setStepSize&lt;br /&gt;
* CEGUI::WidgetLookManager::parseLookNFeelSpecification is now called parseLookNFeelSpecificationFromFile, variants for loading from string and raw data container have been added&lt;br /&gt;
* XRotation, YRotation, ZRotation properties merged into the new Rotation property, which is a Quaternion.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Event-related Changes|2=&lt;br /&gt;
* EventMouseEnters renamed to EventMouseEntersSurface (old name removed)&lt;br /&gt;
* EventMouseLeaves renamed to EventMouseLeavesSurface (old name removed)&lt;br /&gt;
* CheckStateChanged renamed to SelectStateChanged (for ToggleButton (old Checkbox))&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Image and ImageManager|2=&lt;br /&gt;
* Image::draw renamed to Image::render&lt;br /&gt;
* Image class is now an abstract interface.  BasicImage implementation is provided, and used for internally created Image objects.&lt;br /&gt;
* Imageset class is removed. It remains a CEGUI format that allows to conveniently define multiple images on one texture but the data is no longer stored in any class. When Imageset is loaded, the ImageManager creates a new BasicImage for each of the images in the imageset. Only the images themselves will remain after imageset is loaded. You now use the new ImageManager to access defined images.&lt;br /&gt;
* ImagesetManager class is removed.  You now use the new ImageManager.&lt;br /&gt;
* Images belonging to a certain imageset can be accessed like so: &amp;quot;ImageSetName/ImageName&amp;quot; (ex. &amp;quot;AlfiskoSkin/MouseArrow&amp;quot;).&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=GUIContext|2=&lt;br /&gt;
A lot of API has been moved from CEGUI::System to CEGUI::GUIContext. CEGUI now allows you to create multiple independent GUI contexts with their own input injection.&lt;br /&gt;
&lt;br /&gt;
As a rule of thumb, whenever you see &amp;quot;There is no CEGUI::System::some_foobar_method method&amp;quot;, it is likely that you can replace the call with CEGUI::System::getSingleton().getDefaultGUIContext().someFoobarMethod(). This holds for all the System::inject* methods for example.&lt;br /&gt;
&lt;br /&gt;
WindowManager::getSingleton().getWindow() was removed. You can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;).&lt;br /&gt;
To get Root Window you can call GUIContext::getRootWindow();&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: The chain call of methods CEGUI::System::getSingleton().getDefaultGUIContext() should be called as rarely as possible, instead one should keep it's result in appropriate variable.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=PyCEGUI|2=&lt;br /&gt;
* EventSet.subscribeEvent now has a different, more pythonic syntax, any python callable (bound member function, free function, lambda, functor, ...) is allowed (EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance, &amp;quot;someMethodInIt&amp;quot;) is now EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance.someMethodInIt)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Datafiles|2=&lt;br /&gt;
* All XML datafiles must specify a version attribute. Example: &amp;lt;GUILayout '''version=&amp;quot;4&amp;quot;'''&amp;gt;&lt;br /&gt;
* All attributes in datafiles must begin with a lower-case letter. Example: &amp;lt;Property '''n'''ame=&amp;quot;Alpha&amp;quot;               '''v'''alue=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
* '''.looknfeel:'''&lt;br /&gt;
** &amp;lt;Falagard version=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
** old: &amp;lt;Image '''type'''=&amp;quot;TopEdge&amp;quot; '''imageset'''=&amp;quot;TaharezLook&amp;quot; '''image'''=&amp;quot;TitlebarTop&amp;quot; /&amp;gt; &amp;lt;br /&amp;gt;new: &amp;lt;Image '''component'''=&amp;quot;TopEdge&amp;quot; '''name'''=&amp;quot;TaharezLook/TitlebarTop&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: MaxEditTextLength &amp;amp;rarr; MaxTextLength&lt;br /&gt;
** Change: MouseButtonDownAutoRepeat &amp;amp;rarr; MouseAutoRepeatEnabled&lt;br /&gt;
** Change: DimOperator &amp;amp;rarr; OperatorDim. Please compare [http://static.cegui.org.uk/docs/0.7.9/fal_element_ref.html#fal_elem_ref_sec_10 0.7.9] with [http://static.cegui.org.uk/docs/current/fal_element_ref.html#fal_elem_ref_sec_operatordim latest] for functional change description&lt;br /&gt;
* '''.scheme:'''&lt;br /&gt;
** &amp;lt;GUIScheme name=&amp;quot;MySkin&amp;quot; version=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
** Change: &amp;lt;WindowRendererSet Filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt; &amp;amp;rarr; &amp;lt;WindowRendererSet filename=&amp;quot;CEGUICoreWindowRendererSet&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: renderer=&amp;quot;Falagard/... &amp;amp;rarr; renderer=&amp;quot;Core/...&lt;br /&gt;
** Change: &amp;quot;Core/SystemButton&amp;quot; &amp;amp;rarr; &amp;quot;Core/Button&amp;quot;&lt;br /&gt;
** Change: &amp;quot;CEGUI/Checkbox&amp;quot; &amp;amp;rarr; &amp;quot;CEGUI/ToggleButton&amp;quot;&lt;br /&gt;
* '''.layout:'''&lt;br /&gt;
** &amp;lt;GUILayout version=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
** see '''Event-related Changes''' above&lt;br /&gt;
** UnifiedPosition, UnifiedAreaRect, UnifiedSize, UnifiedMinSize, UnifiedMaxSize &amp;amp;rarr; Position, Area, Size, MinSize, MaxSize&lt;br /&gt;
** Tooltip &amp;amp;rarr; TooltipText&lt;br /&gt;
** old: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;set:Buttons image:Settings&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;new: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;Buttons/Settings&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5137</id>
		<title>Porting tips and changes from 0.7.X to 0.8.X</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Porting_tips_and_changes_from_0.7.X_to_0.8.X&amp;diff=5137"/>
				<updated>2014-01-21T22:24:49Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: Added changes for datafiles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Introduction|2=&lt;br /&gt;
The 0.8.x branch has already seen releases. Please see the sourceforge page for tarball downloads.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Major renames/API changes|2=&lt;br /&gt;
* CEGUI::Window was renamed to CEGUI::Widget as Widget is the coined term for that, WindowManager renamed to WidgetManager, etc... (not in mercurial yet!)&lt;br /&gt;
* The stock/standard window renderer set (now widget renderer set) FalagardWRBase was renamed to StandardWRSet to avoid confusion with core [[Falagard]] facilities (not in mercurial yet!)&lt;br /&gt;
* Windows now don't have absolute names! Every window's name only has to be unique in it's parent window. Therefore WindowManager::getSingleton().getWindow no longer made sense and was removed. If root's name was &amp;quot;Root&amp;quot; and your the window name was &amp;quot;Root/Stuff/After/Root/Name&amp;quot;, you can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;). It's recommended to migrate to a more encapsulated model.&lt;br /&gt;
* CEGUI::GUIContext class has been created that is responsible for injecting input and event handling, setting the default font, setting the root window, setting a default tooltip object and type, and manipulating the mouse cursor.&lt;br /&gt;
* CEGUI::GUIContext needs time impulses injected separately! You should also inject time pulses into CEGUI::System. This API &amp;quot;wart&amp;quot; may disappear in future versions.&lt;br /&gt;
* CEGUI::MouseCursor is no longer a singleton, and can be accessed and manipulated from CEGUI::GUIContext.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=General|2=&lt;br /&gt;
* All XML attributes must now be in lowercase, e.g. &amp;lt;WidgetLook Name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt; must be &amp;lt;WidgetLook name=&amp;quot;TaharezLook/FrameWindow&amp;quot;&amp;gt;&lt;br /&gt;
* PropertyHelper has been turned into a template class, instead of PropertyHelper::uintToString you do PropertyHelper&amp;lt;uint&amp;gt;::toString, instead of PropertyHelper::stringToUint you do PropertyHelper&amp;lt;uint&amp;gt;::fromString&lt;br /&gt;
* All instances of the word caret that were incorrectly spelt 'carat' have been corrected.  This affects all APIs, properties, events and datafiles.&lt;br /&gt;
* Window::EventWindowUpdated renamed to Window::EventUpdated and the associated string is changed from &amp;quot;WindowUpdate&amp;quot; to &amp;quot;Updated&amp;quot;&lt;br /&gt;
* ListHeader::SegmentNameSuffix changed type from character array to CEGUI::String&lt;br /&gt;
* BiDiVisualMapping renamed to BidiVisualMapping.  Also renamed the files, so CEGUIBiDiVisualMapping.h is now CEGUIBidiVisualMapping.h&lt;br /&gt;
* class colour renamed to Colour, as a side effect the &amp;quot;colour&amp;quot; interpolator is now &amp;quot;Colour&amp;quot; interpolator, this breaks animation definitions!&lt;br /&gt;
* Point typedef removed, please use Vector2 instead&lt;br /&gt;
* Many event string values changed to match the C++ name (but without the Event prefix).  A list of which strings changed value will appear here soon.&lt;br /&gt;
* Window::setRestoreCapture renamed to Window::setRestoreOldCapture&lt;br /&gt;
* CEGUI now supports custom memory allocation, see [[Memory Allocation]] to check if this concerns you or not.&lt;br /&gt;
* Window::addChildWindow renamed to Window::addChild, Window::removeChildWindow renamed to Window::removeChild, several other methods (mostly in layout containers) changed from *ChildWindow* to *Child*&lt;br /&gt;
* CEGUI::String can now be just a typedef or a class, depending on String configuration (CEGUI can now use std::string as CEGUI::String for apps not requiring unicode)&lt;br /&gt;
* Window::getChild_impl method completely removed, it was only used by Window::getParentPixelSize, shouldn't be hard to replace&lt;br /&gt;
* Vector2, Vector3, Size and Rect are now templated, you should use Vector2&amp;lt;float&amp;gt; (or just Vector2&amp;lt;&amp;gt; as a shortcut since float is the default type) instead of Vector2, UVector2 class was removed, UVector2 is now just a typedef to Vector2&amp;lt;UDim&amp;gt;. Same with Vector3, Size and Rect.&lt;br /&gt;
* Texture::saveToMemory is renamed Texture::blitToMemory.&lt;br /&gt;
* Renderer and Texture interfaces changed in order to support named textures.&lt;br /&gt;
* Window::isDisabled(localOnly) is now split into Window::isDisabled (= old isDisabled(true) and Window::isEffectiveDisabled (= old isDisabled(false))&lt;br /&gt;
* Window::isVisible(localOnly) is now split into Window::isVisible (= old isDisabled(true) and Window::isEffectiveVisible (= old isVisible(false))&lt;br /&gt;
* WindowManager::loadWindowLayout is renamed to WindowManager::loadLayoutFromFile&lt;br /&gt;
* NamedXMLResourceManager::create is renamed to NamedXMLResourceManager::createFromFile  (Ex. CEGUI::SchemeManager::createFromFile)&lt;br /&gt;
* Property from Window called &amp;quot;ZOrderChangeEnabled&amp;quot; renamed to &amp;quot;ZOrderingEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;MouseButtonDownAutoRepeat&amp;quot; renamed to &amp;quot;MouseAutoRepeatEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;CustomTooltipType&amp;quot; renamed to &amp;quot;TooltipType&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;Tooltip&amp;quot; renamed to &amp;quot;TooltipText&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;RiseOnClick&amp;quot; renamed to &amp;quot;RiseOnClickEnabled&amp;quot;&lt;br /&gt;
* Property from Window called &amp;quot;UnifiedAreaRect&amp;quot; renamed to &amp;quot;Area&amp;quot;, &amp;quot;UnifiedSize&amp;quot; renamed to &amp;quot;Size&amp;quot;, etc...&lt;br /&gt;
* CEGUI::DefaultLogger no longer throws const char* but a real exception in setLogFilename - http://www.cegui.org.uk/mantis/view.php?id=443&lt;br /&gt;
* CEGUI now has inbuilt copy, cut, paste support, if you used a custom solution, you might want to check CEGUI::Clipboard and System::inject{Copy,Cut,Paste}Request&lt;br /&gt;
* CEGUI::ProgressBar::getStep renamed to getStepSize for consistency with setStepSize&lt;br /&gt;
* CEGUI::WidgetLookManager::parseLookNFeelSpecification is now called parseLookNFeelSpecificationFromFile, variants for loading from string and raw data container have been added&lt;br /&gt;
* XRotation, YRotation, ZRotation properties merged into the new Rotation property, which is a Quaternion.&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Event-related Changes|2=&lt;br /&gt;
* EventMouseEnters renamed to EventMouseEntersSurface (old name removed)&lt;br /&gt;
* EventMouseLeaves renamed to EventMouseLeavesSurface (old name removed)&lt;br /&gt;
* CheckStateChanged renamed to SelectStateChanged (for ToggleButton (old Checkbox))&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=Image and ImageManager|2=&lt;br /&gt;
* Image::draw renamed to Image::render&lt;br /&gt;
* Image class is now an abstract interface.  BasicImage implementation is provided, and used for internally created Image objects.&lt;br /&gt;
* Imageset class is removed. It remains a CEGUI format that allows to conveniently define multiple images on one texture but the data is no longer stored in any class. When Imageset is loaded, the ImageManager creates a new BasicImage for each of the images in the imageset. Only the images themselves will remain after imageset is loaded. You now use the new ImageManager to access defined images.&lt;br /&gt;
* ImagesetManager class is removed.  You now use the new ImageManager.&lt;br /&gt;
* Images belonging to a certain imageset can be accessed like so: &amp;quot;ImageSetName/ImageName&amp;quot; (ex. &amp;quot;AlfiskoSkin/MouseArrow&amp;quot;).&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=GUIContext|2=&lt;br /&gt;
A lot of API has been moved from CEGUI::System to CEGUI::GUIContext. CEGUI now allows you to create multiple independent GUI contexts with their own input injection.&lt;br /&gt;
&lt;br /&gt;
As a rule of thumb, whenever you see &amp;quot;There is no CEGUI::System::some_foobar_method method&amp;quot;, it is likely that you can replace the call with CEGUI::System::getSingleton().getDefaultGUIContext().someFoobarMethod(). This holds for all the System::inject* methods for example.&lt;br /&gt;
&lt;br /&gt;
WindowManager::getSingleton().getWindow() was removed. You can emulate its behaviour with root-&amp;gt;getChild(&amp;quot;Stuff/After/Root/Name&amp;quot;).&lt;br /&gt;
To get Root Window you can call GUIContext::getRootWindow();&lt;br /&gt;
&lt;br /&gt;
SIDE NOTE: The chain call of methods CEGUI::System::getSingleton().getDefaultGUIContext() should be called as rarely as possible, instead one should keep it's result in appropriate variable.&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
{{Section|1=PyCEGUI|2=&lt;br /&gt;
* EventSet.subscribeEvent now has a different, more pythonic syntax, any python callable (bound member function, free function, lambda, functor, ...) is allowed (EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance, &amp;quot;someMethodInIt&amp;quot;) is now EventSet.subscribeEvent(&amp;quot;EventName&amp;quot;, instance.someMethodInIt)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Section|1=Datafiles|2=&lt;br /&gt;
* All XML datafiles must specify a version attribute. Example: &amp;lt;GUILayout '''version=&amp;quot;4&amp;quot;'''&amp;gt;&lt;br /&gt;
* All attributes in datafiles must begin with a lower-case letter. Example: &amp;lt;Property '''n'''ame=&amp;quot;Alpha&amp;quot;               '''v'''alue=&amp;quot;1.0&amp;quot; /&amp;gt;&lt;br /&gt;
* '''.looknfeel:'''&lt;br /&gt;
** &amp;lt;Falagard version=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;
** old: &amp;lt;Image '''type'''=&amp;quot;TopEdge&amp;quot; '''imageset'''=&amp;quot;TaharezLook&amp;quot; '''image'''=&amp;quot;TitlebarTop&amp;quot; /&amp;gt; &amp;lt;br /&amp;gt;new: &amp;lt;Image '''component'''=&amp;quot;TopEdge&amp;quot; '''name'''=&amp;quot;TaharezLook/TitlebarTop&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: MaxEditTextLength &amp;amp;rarr; MaxTextLength&lt;br /&gt;
** Change: MouseButtonDownAutoRepeat &amp;amp;rarr; MouseAutoRepeatEnabled&lt;br /&gt;
** Change: DimOperator &amp;amp;rarr; OperatorDim. Please compare [http://static.cegui.org.uk/docs/0.7.9/fal_element_ref.html#fal_elem_ref_sec_10 0.7.9] with [http://static.cegui.org.uk/docs/current/fal_element_ref.html#fal_elem_ref_sec_operatordim latest] for functional change description&lt;br /&gt;
* '''.scheme:'''&lt;br /&gt;
** &amp;lt;GUIScheme name=&amp;quot;MySkin&amp;quot; version=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;
** Change: &amp;lt;WindowRendererSet Filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt; &amp;amp;rarr; &amp;lt;WindowRendererSet filename=&amp;quot;CEGUICoreWindowRendererSet&amp;quot; /&amp;gt;&lt;br /&gt;
** Change: renderer=&amp;quot;Falagard/... &amp;amp;rarr; renderer=&amp;quot;Core/...&lt;br /&gt;
** Change: &amp;quot;Core/SystemButton&amp;quot; &amp;amp;rarr; &amp;quot;Core/Button&amp;quot;&lt;br /&gt;
** Change: &amp;quot;CEGUI/Checkbox&amp;quot; &amp;amp;rarr; &amp;quot;CEGUI/ToggleButton&amp;quot;&lt;br /&gt;
* '''.layout:'''&lt;br /&gt;
** &amp;lt;GUILayout version=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
** see '''Event-related Changes''' above&lt;br /&gt;
** UnifiedPosition, UnifiedAreaRect, UnifiedSize, UnifiedMinSize, UnifiedMaxSize &amp;amp;rarr; Position, Area, Size, MinSize, MaxSize&lt;br /&gt;
** Tooltip &amp;amp;rarr; TooltipText&lt;br /&gt;
** old: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;set:Buttons image:Settings&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;new: &amp;lt;Property name=&amp;quot;Image&amp;quot; value=&amp;quot;Buttons/Settings&amp;quot; /&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
* The attributes of the Image elements are now:&lt;br /&gt;
** (&amp;quot;component&amp;quot;) and &amp;quot;name&amp;quot;, instead of:&lt;br /&gt;
** (&amp;quot;type&amp;quot;), &amp;quot;imageset&amp;quot; and &amp;quot;image&amp;quot;&lt;br /&gt;
*** For example an up-to-date Image element inside a FrameComponent element would be: &amp;lt;Image component=&amp;quot;LeftEdge&amp;quot; name=&amp;quot;TaharezLook/EditBoxLeft&amp;quot; /&amp;gt;&lt;br /&gt;
* The OperatorDim has changed to DimOperator and works slightly differently. See the new datafiles and the API for more information.&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Performance_tips&amp;diff=5020</id>
		<title>Performance tips</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Performance_tips&amp;diff=5020"/>
				<updated>2013-11-25T22:00:21Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: /* Small tiled images */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}} {{VersionBadge|0.8}}&lt;br /&gt;
&lt;br /&gt;
This page provides some generic tips on getting the most performance out of CEGUI. People often claim that CEGUI is slow and don't realise it could be them doing something wrong. I will try to gather some areas where people claim CEGUI is slow and &amp;quot;just sucks&amp;quot; and try to provide tips about what is wrong.&lt;br /&gt;
&lt;br /&gt;
== Debug vs Release mode ==&lt;br /&gt;
The performance difference between Debug and Release (optimisations enabled) CEGUI can be quite dramatic. Ensure you run everything in release mode when judging performance.&lt;br /&gt;
&lt;br /&gt;
== Small tiled images ==&lt;br /&gt;
A very common mistake. If you have a very small (lets say 1px * 1px image) in your imageset and you set your looknfeel to tile that image over 100 px, CEGUI has to generate a lot of triangles to fulfil your wishes! This will lead to very bad performance and should be avoided. Tiling is fine but keep it under control!&lt;br /&gt;
&lt;br /&gt;
(Note: Stretching doesn't have the same caveat, you can stretch 1px image over as many pixels as you want with just 2 triangles and one batch.)&lt;br /&gt;
&lt;br /&gt;
== [[Imageset]]s &amp;amp; Texture atlases ==&lt;br /&gt;
Texture switching is a very expensive operation, which is why CEGUI uses [[Imageset|imagesets]]. [[Imageset]]s allows you to put several images in one texture ([[imageset]] ~= texture atlas), thus (potentially) lowering the amount of texture switches when rendering. If you however are from the &amp;quot;[[Imageset]]s suck, it sucks that CEGUI uses them!&amp;quot; and use one bitmap file and one [[imageset]] per image, you might expect very poor performance (many many texture switches even when rendering a single widgets - all corners are in separate file, also batching is simply not possible since you need a separate texture per every rectangle, so one widget might end up being 20 batches or even more!).&lt;br /&gt;
&lt;br /&gt;
The bottom line is: Use [[Imageset|imagesets]], don't hate them! And if you still hate them and use separate files, stop whining that CEGUI is slow and sucks :-D&lt;br /&gt;
&lt;br /&gt;
(Note: CEGUI 0.8 will completely change the way imagesets work. We will have images, these will simply have a reference to texture file and UV coords of the rectangle we should use in the texture file, .imageset files will still load though, so all of this still applies, furthermore the new [[CEED]] editor will support automatic imageset/atlas creation from multiple files to lessen the imageset maintenance pain)&lt;br /&gt;
&lt;br /&gt;
== Problem: Loading layouts takes few seconds and halts my application! ==&lt;br /&gt;
This is a complaint I have seen multiple times. The reporter usually has a dialog that in its constructor loads a XML layout off the HDD and constructs its hierarchy based on that. Depending on how the layout is complex, this can indeed take a few seconds (depending on many many factors). What is flawed about this is the fact that the user loads the layout always when the dialog is constructed. Wouldn't it be better if we loaded the layout once, stored it somewhere and reused that whenever the dialog has to reappear instead of deleting the layout when user closes the dialog and loading it from scratch when it's opened?&lt;br /&gt;
&lt;br /&gt;
There are two ways of avoiding this. If the dialog is modal and can only appear once, it pays off to just load it, set it to invisible and the show/hide as necessary. This is the fastest solution.&lt;br /&gt;
&lt;br /&gt;
If you need multiple instances of the dialog, you need to clone the widget tree somehow. This is why Widget (Window in 0.7 and previous) ::clone method has been implemented (only CEGUI 0.7.5 and newer!). It allows you to clone the entire widget hiearchy. The idea is to load this when the dialog is first used (or even when loading the application, depends on how the dialog is used). Store the widget pointer somewhere (could be a static member variable in the Dialog class) and upon construction, just clone the hierarchy and add the cloned widget while leaving the original alone for further cloning.&lt;br /&gt;
(TODO: add some example code)&lt;br /&gt;
&lt;br /&gt;
== Speeding up a rarely changing info window (or any widget) with complex elements inside it ==&lt;br /&gt;
CEGUI allows caching. This is done with the &amp;quot;AutoRenderingSurface&amp;quot; property. What this means is that the widget gets rendered once with its child widgets (the entire hierarchy). The result is stored in a texture and from this moment on, whenever rendering needs to be done, just one quad with the texture is drawn. When widgets change inside, it invalidates the cache and everything is redrawn from scratch. This is especially useful for complex deep hierarchy widgets that users rarely interact with or aren't interactive at all.&lt;br /&gt;
&lt;br /&gt;
Caveat: The texture caching causes the widget to hard clip its children to its dimensions! That means that a combobox at the bottom of a frame window will get &amp;quot;cut&amp;quot; when you open the options of it. This is likely to get fixed but as of now (5th January 2011) it's still a problem in both 0.7 and 0.8.&lt;br /&gt;
&lt;br /&gt;
== A quick and (relatively) painless way to get roughly 40% performance increase in certain areas (0.8 only!) ==&lt;br /&gt;
By default, CEGUI uses no custom allocators at all. That means the plain old new and delete. You can set the allocator to anything you want but we recommend nedmalloc. It's a very robust memory allocator tailored to give maximum performance. It speeds things up especially when initialising, loading layouts, creating windows, ... Give it a try. See [[Memory Allocation]] for more details.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;br /&gt;
[[Category:WIP]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Performance_tips&amp;diff=5019</id>
		<title>Performance tips</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Performance_tips&amp;diff=5019"/>
				<updated>2013-11-25T21:59:18Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: /* Imagesets &amp;amp; Texture atlases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}} {{VersionBadge|0.8}}&lt;br /&gt;
&lt;br /&gt;
This page provides some generic tips on getting the most performance out of CEGUI. People often claim that CEGUI is slow and don't realise it could be them doing something wrong. I will try to gather some areas where people claim CEGUI is slow and &amp;quot;just sucks&amp;quot; and try to provide tips about what is wrong.&lt;br /&gt;
&lt;br /&gt;
== Debug vs Release mode ==&lt;br /&gt;
The performance difference between Debug and Release (optimisations enabled) CEGUI can be quite dramatic. Ensure you run everything in release mode when judging performance.&lt;br /&gt;
&lt;br /&gt;
== Small tiled images ==&lt;br /&gt;
A very common mistake. If you have a very small (lets say 1px * 1px image) in your imageset and you set your looknfeel to tile that image over 100 px, CEGUI has to generate a lot of triangles to fulfil your wishes! This will lead into very bad performance and should be avoided. Tiling is fine but keep it under control!&lt;br /&gt;
&lt;br /&gt;
(Note: Stretching doesn't have the same caveat, you can stretch 1px image over as many pixels as you want with just 2 triangles and one batch.)&lt;br /&gt;
&lt;br /&gt;
== [[Imageset]]s &amp;amp; Texture atlases ==&lt;br /&gt;
Texture switching is a very expensive operation, which is why CEGUI uses [[Imageset|imagesets]]. [[Imageset]]s allows you to put several images in one texture ([[imageset]] ~= texture atlas), thus (potentially) lowering the amount of texture switches when rendering. If you however are from the &amp;quot;[[Imageset]]s suck, it sucks that CEGUI uses them!&amp;quot; and use one bitmap file and one [[imageset]] per image, you might expect very poor performance (many many texture switches even when rendering a single widgets - all corners are in separate file, also batching is simply not possible since you need a separate texture per every rectangle, so one widget might end up being 20 batches or even more!).&lt;br /&gt;
&lt;br /&gt;
The bottom line is: Use [[Imageset|imagesets]], don't hate them! And if you still hate them and use separate files, stop whining that CEGUI is slow and sucks :-D&lt;br /&gt;
&lt;br /&gt;
(Note: CEGUI 0.8 will completely change the way imagesets work. We will have images, these will simply have a reference to texture file and UV coords of the rectangle we should use in the texture file, .imageset files will still load though, so all of this still applies, furthermore the new [[CEED]] editor will support automatic imageset/atlas creation from multiple files to lessen the imageset maintenance pain)&lt;br /&gt;
&lt;br /&gt;
== Problem: Loading layouts takes few seconds and halts my application! ==&lt;br /&gt;
This is a complaint I have seen multiple times. The reporter usually has a dialog that in its constructor loads a XML layout off the HDD and constructs its hierarchy based on that. Depending on how the layout is complex, this can indeed take a few seconds (depending on many many factors). What is flawed about this is the fact that the user loads the layout always when the dialog is constructed. Wouldn't it be better if we loaded the layout once, stored it somewhere and reused that whenever the dialog has to reappear instead of deleting the layout when user closes the dialog and loading it from scratch when it's opened?&lt;br /&gt;
&lt;br /&gt;
There are two ways of avoiding this. If the dialog is modal and can only appear once, it pays off to just load it, set it to invisible and the show/hide as necessary. This is the fastest solution.&lt;br /&gt;
&lt;br /&gt;
If you need multiple instances of the dialog, you need to clone the widget tree somehow. This is why Widget (Window in 0.7 and previous) ::clone method has been implemented (only CEGUI 0.7.5 and newer!). It allows you to clone the entire widget hiearchy. The idea is to load this when the dialog is first used (or even when loading the application, depends on how the dialog is used). Store the widget pointer somewhere (could be a static member variable in the Dialog class) and upon construction, just clone the hierarchy and add the cloned widget while leaving the original alone for further cloning.&lt;br /&gt;
(TODO: add some example code)&lt;br /&gt;
&lt;br /&gt;
== Speeding up a rarely changing info window (or any widget) with complex elements inside it ==&lt;br /&gt;
CEGUI allows caching. This is done with the &amp;quot;AutoRenderingSurface&amp;quot; property. What this means is that the widget gets rendered once with its child widgets (the entire hierarchy). The result is stored in a texture and from this moment on, whenever rendering needs to be done, just one quad with the texture is drawn. When widgets change inside, it invalidates the cache and everything is redrawn from scratch. This is especially useful for complex deep hierarchy widgets that users rarely interact with or aren't interactive at all.&lt;br /&gt;
&lt;br /&gt;
Caveat: The texture caching causes the widget to hard clip its children to its dimensions! That means that a combobox at the bottom of a frame window will get &amp;quot;cut&amp;quot; when you open the options of it. This is likely to get fixed but as of now (5th January 2011) it's still a problem in both 0.7 and 0.8.&lt;br /&gt;
&lt;br /&gt;
== A quick and (relatively) painless way to get roughly 40% performance increase in certain areas (0.8 only!) ==&lt;br /&gt;
By default, CEGUI uses no custom allocators at all. That means the plain old new and delete. You can set the allocator to anything you want but we recommend nedmalloc. It's a very robust memory allocator tailored to give maximum performance. It speeds things up especially when initialising, loading layouts, creating windows, ... Give it a try. See [[Memory Allocation]] for more details.&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;br /&gt;
[[Category:WIP]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Building_CEGUI_for_Ogre_/_OgreRenderer&amp;diff=5018</id>
		<title>Building CEGUI for Ogre / OgreRenderer</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Building_CEGUI_for_Ogre_/_OgreRenderer&amp;diff=5018"/>
				<updated>2013-11-15T15:29:22Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: /* General */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.7}}&lt;br /&gt;
{{VersionBadge|0.8}}&lt;br /&gt;
{{notice|message=This article is a work in progress and thus incomplete}}&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
Since Ogre version 1.7 the CEGUI library has stopped being an Ogre dependency and was replaced with a very simple UI overlay used for the demos. Users now have to compile the CEGUI against Ogre by themselves. This guide was made to help accomplish this.&lt;br /&gt;
&lt;br /&gt;
This means that from now on, you have to build CEGUI for your Ogre project yourself, in case you want to use the latest Ogre or CEGUI versions. Otherwise, you can grab the latest precompiled dependencies from [http://www.ogre3d.org/download the Ogre download section] and [http://www.cegui.org.uk/wiki/index.php/Downloads the CEGUI download section].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The recommended approach however is to build CEGUI against the Ogre version you want to use.&lt;br /&gt;
&lt;br /&gt;
Here are all the links you will need:&lt;br /&gt;
* Visit the [http://static.cegui.org.uk/docs/current/downloading.html reference manual] for instructions on obtaining the source code.&lt;br /&gt;
'''Note''': If the branch version's source code seems to be unstable or not working at all, you can try the [http://sourceforge.net/projects/crayzedsgui/files/CEGUI%20Mk-2/snapshot latest stable snapshot]&lt;br /&gt;
* '''Additionally''' to the source code you will need [http://sourceforge.net/projects/crayzedsgui/files/ dependencies suiting your compiler]. Download them for your CEGUI version and unpack the &amp;quot;dependencies&amp;quot; folder into your CEGUI main folder, so that it will co-exist next to the folders &amp;quot;bin&amp;quot;, &amp;quot;cegui&amp;quot;, &amp;quot;datafiles&amp;quot; etc. - You are then required to build the dependencies that you want to use and - if using Windows - to place the required dll's into the folder of your executable.&lt;br /&gt;
&lt;br /&gt;
== Step-by-step guide ==&lt;br /&gt;
* 1. Get the appropriate '''CEGUI''' version from the CEGUI download page or get the very latest CEGUI version from the SVN repository (see links and info above).&lt;br /&gt;
&lt;br /&gt;
* 2. Get the latest '''Ogre''' version. If you are compiling it yourself, you will need to build it first to get Ogre's .lib and .dll files ready for CEGUI.&lt;br /&gt;
&lt;br /&gt;
=== Steps for Microsoft Visual Studio ===&lt;br /&gt;
&lt;br /&gt;
====CEGUI 0.8.x ====&lt;br /&gt;
* 3 Open the CMake GUI Utility&lt;br /&gt;
* 4 Set the '''source path''' to the directory where your CEGUI source code is located(e.g. C:/soft/cegui/cegui-0.8.2)&lt;br /&gt;
* 5 Set the '''build path''' to the directory where you want CMake to generate your build configuration(e.g. C:/soft/cegui/cegui-0.8.2/build)&lt;br /&gt;
* 6 Press the '''Configure''' button. At this stage CMake will ask you for a generator for this project(e.g. Visual Studio 10) and then will try to find the required packages needed by CEGUI. Please note that you should have the CEGUI dependencies built and installed in your CEGUI_ROOT directory. If you don't know how to build and install the CEGUI dependencies then follow this tutorial: [http://www.cegui.org.uk/docs/0.8.2/building_deps.html building_deps]&lt;br /&gt;
* 7 Search the '''CEGUI_BUILD_RENDERER_OGRE''' boolean variable in the list of CMake GUI Utility and set the value to TRUE by clicking on the checkbox. Optionally, you can set the CEGUI_SAMPLES_USE_OGRE aswell.&lt;br /&gt;
* 8 Check if Boost, OGRE and OIS were found by cmake. Look in the CMake GUI Utility output and if you spot a message like 'Could NOT find OGRE' then you need to set some variables manually, otherwise you can jump to step #10&lt;br /&gt;
* 9 In case CMake didn't found OGRE or other mandatory packages then you neeed to add some entries. For example, if the OGRE package was not found then you need to set the following variables:&lt;br /&gt;
&amp;lt;p&amp;gt;OGRE_FOUND - variable of type BOOL which must be set to TRUE&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;OGRE_INCLUDE_DIR - variable of type PATH which must be set to the directory where the OGRE header files are(e.g. C:/soft/OgreSDK/include/OGRE)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;OGRE_LIBRARIES - variable of type FILEPATH which must be set to the full file path of OgreMain.lib (e.g. OGRE_HOME/lib/release/OgreMain.lib)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;OGRE_LIBRARIES_DBG(optional - if you don't intend to debug or are using CEGUI's &amp;quot;Release with Debug&amp;quot; build) - variable of type FILEPATH which must be set to the full file path of OgreMain_d.lib (e.g. OGRE_HOME/lib/debug/OgreMain_d.lib)&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 10 Rerun '''Configure'''. You need to do this in order to save your additional variables in the CMake cache and in the build configuration.Note that cmake will still say that it didn't found your package even if you set the variables correctly but when you will generate a solution, cmake will take the correct values from its cache.&lt;br /&gt;
* 11 Press the '''Generate''' button. At this stage CMake will read your build configuration and then generate a solution using your selected generator.&lt;br /&gt;
* 12 Go to the cegui build directory and open the Visual Studio solution '''cegui.sln'''&lt;br /&gt;
* 13 Add boost include directory(BOOST_ROOT) and libraries(BOOST_ROOT/lib or BOOST_ROOT/stage/lib) to the additional include directories and additional library directories for the CEGUIOgreRenderer-0 project. You need to do this because Ogre forwards the boost dependency to CEGUI. If you set the CEGUI_SAMPLES_USE_OGRE then you need to do the same thing for the CEGUISampleFramework-0.8 project.&lt;br /&gt;
* 14 Build the entire cegui solution&lt;br /&gt;
* 15 (Optional) Build the INSTALL project(skipped by default) inside cegui.sln to install cegui and ogre renderer to Program Files/cegui&lt;br /&gt;
&lt;br /&gt;
====CEGUI 0.7.x ====&lt;br /&gt;
* 3. In your CEGUI folder there should be a folder called &amp;quot;'''projects'''&amp;quot; with a subfolder called &amp;quot;'''premake'''&amp;quot;. It is recommended to use the [https://sourceforge.net/projects/crayzedsgui/files/CEGUI%20Mk-2/premake/premake-3.7-custom.zip/download custom premake version of CEGUI]. Otherwise you can get version 3.6 or 3.7 of premake. Once you have premake extract the '''premake.exe''' file into the said folder.&lt;br /&gt;
&lt;br /&gt;
* 4. Open '''config.lua''' in the premake folder and edit the Ogre and OIS paths accordingly, so that they will point to the dependency files. In my case for example the 2 lines look like this (having the OGRE and CEGUI main folders on the same level):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OGRE_PATHS = { &amp;quot;../OGRE&amp;quot;, &amp;quot;include/OGRE&amp;quot;, &amp;quot;lib&amp;quot; }&lt;br /&gt;
OIS_PATHS = { &amp;quot;../OGRE&amp;quot;, &amp;quot;include/OIS&amp;quot;, &amp;quot;lib&amp;quot; }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note:''' Remember to use forward slashes here! Just copying the paths from the Windows explorer will give you backward slashes. Replace them!&lt;br /&gt;
&lt;br /&gt;
Next, set all Renderers you do not need to &amp;quot;false&amp;quot;, in this case we will only need ''OGRE_RENDERER''. You can also set all samples to false, except maybe ''SAMPLES_OGRE'' if you want to compile those.&lt;br /&gt;
&lt;br /&gt;
'''Important:''' Since Ogre 1.7 the &amp;quot;boost&amp;quot; library is a new dependency of OGRE. If you are unsure if your Ogre version needs boost, you might want to check if there is a boost folder in your Ogre main folder. In case your Ogre version makes use of boost, you will additionally add boost to the extra paths of CEGUIOgreRenderer, in my case it looks like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CEGUI_EXTRA_PATHS = { &lt;br /&gt;
{ &amp;quot;../OGRE/boost_1_42&amp;quot;, &amp;quot;&amp;quot;, &amp;quot;lib&amp;quot;, &amp;quot;CEGUIOgreRenderer&amp;quot; }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 5. Next, we create our Visual Studio Projects - Execute '''build_vs2008.bat''' to create a Visual Studio 2008 project or execute any other .bat file for your respective compiler version.&lt;br /&gt;
&lt;br /&gt;
* 6. This should create '''CEGUI.sln''' in the premake folder. Open it.&lt;br /&gt;
&lt;br /&gt;
* 7. If you have the Ogre lib files seperated into a Debug and Release folder, you will have to change the path in the '''Linker''' settings of the project so they will point to the '''lib/Debug''' or '''lib/Release''' folder for each configuration respectively.&lt;br /&gt;
&lt;br /&gt;
* 8. '''Build''' the '''CEGUIOgreRenderer''' in Debug and Release mode.&lt;br /&gt;
* 9. Now that you have built the .dll files and .lib files for CEGUI by yourself, you only have to change the linker settings of your project so that the needed .lib files and their folder paths are included there. Also you might want to include the dll's into a folder where your executable application will find them (for example just the folder your executable starts from). Finally remember to set the CEGUI '''include''' directory (for example &amp;quot;..\..\CEGUI\cegui\include\cegui&amp;quot;) inside your C++ project settings.&lt;br /&gt;
&lt;br /&gt;
=== Steps for GNU and Unix-like environments ===&lt;br /&gt;
====CEGUI 0.8.x ====&lt;br /&gt;
'''TODO'''&lt;br /&gt;
&lt;br /&gt;
====CEGUI 0.7.x ====&lt;br /&gt;
Going to the extracted CEGUI source directory and running the following commands seems to work (noobnote: don't include the dollar-signs at the start of the lines. They represent the prompt.):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./bootstrap &amp;amp;&amp;amp; mkdir build &amp;amp;&amp;amp; cd build&lt;br /&gt;
&lt;br /&gt;
$ export NUMBER_OF_CORES=`cat /proc/cpuinfo | grep &amp;quot;cpu cores&amp;quot; | uniq | awk '{print $4}'`&lt;br /&gt;
&lt;br /&gt;
$ ../configure &amp;amp;&amp;amp; make -j$NUMBER_OF_CORES&lt;br /&gt;
&lt;br /&gt;
$ sudo make install&lt;br /&gt;
&lt;br /&gt;
$ sudo ldconfig&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If everything worked out, you now have CEGUI up and running!&lt;br /&gt;
&lt;br /&gt;
==Questions==&lt;br /&gt;
Feel free to edit this page using your CEGUI forum account login if you want to append something. If you have questions you can ask in the CEGUI forum or join our IRC channel #cegui on irc.freenode.net - &lt;br /&gt;
In case you need help building Ogre in general, I'd recommend reading for example [http://blog.tidalware.com/2009/08/building-ogre-with-visual-studio/ this short guide (might be outdated though)].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the Ogre-wiki version of this article you can also check this link: http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Building+CEGUI&lt;br /&gt;
&lt;br /&gt;
[[Category:HowTo]]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	<entry>
		<id>http://cegui.org/wiki/index.php?title=Projects_Using_CEGUI&amp;diff=4875</id>
		<title>Projects Using CEGUI</title>
		<link rel="alternate" type="text/html" href="http://cegui.org/wiki/index.php?title=Projects_Using_CEGUI&amp;diff=4875"/>
				<updated>2013-02-15T10:20:35Z</updated>
		
		<summary type="html">&lt;p&gt;Mmixlinus: /* Applications */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
This page lists finished projects which make use of the CEGUI library. The intros are mostly quoted from the original locations.&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
=== Open source ===&lt;br /&gt;
* [http://wiki.worldforge.org/wiki/Ember Ember] A GPL 3d client for the Worldforge system&lt;br /&gt;
* [http://www.ryzom.com/ Ryzom] MMORPG that recently got released under AGPL (including all art!)&lt;br /&gt;
* [http://www.secretmaryo.org/ Secret Maryo Chronicles] A GPL 2D platform game using SDL and OpenGL.&lt;br /&gt;
* [http://www.sumwars.org/ Summoning Wars] open source role-playing game, featuring both a single-player and a multiplayer mode for about 2 to 8 players&lt;br /&gt;
* [http://www.orxonox.net/ Orxonox] open source spacecraft shooter that plays in the post-apocalyptic world of our future&lt;br /&gt;
* [http://opengamestudio.org/ OGS Mahjong] is a simple mahjong solitaire game with nice 3D graphics and relaxing soundtrack&lt;br /&gt;
* [http://sourceforge.net/projects/opendungeons/ Open Dungeons] OpenDungeons is an open source game based on the Dungeon Keeper series of games with a different story and new creatures.&lt;br /&gt;
* [http://tnlgame.net/ Thunder&amp;amp;Lightning] An Open Source Futuristic Action Flight Simulator Game Inspired By Carrier Command&lt;br /&gt;
&lt;br /&gt;
=== Proprietary ===&lt;br /&gt;
* [http://www.torchlightgame.com/ Torchlight] An action role-playing game by [http://www.runicgames.com/ Runic Games]&lt;br /&gt;
* [http://www.salvationprophecy.com/ Salvation Prophecy] A military space epic. Human, mutant, and robotic factions are at war for galactic domination.&lt;br /&gt;
* [http://www.ankh-game.com/ Ankh 3] A commercial adventure point and click game.&lt;br /&gt;
* [http://www.jack-keane-game.de/ Jack Keane] A commercial adventure point and click game.&lt;br /&gt;
* [http://www.shipsim.com/products/shipsimulatorextremes Ship Simulator Extremes] A commercial hardcore simulator game by [http://www.vstep.nl/ VSTEP]&lt;br /&gt;
* [http://www.dawntide.net/ Dawntide] Open-ended sandbox MMORPG by [http://www.waisoft.com/ WAISOFT]&lt;br /&gt;
* [http://www.venetica-game.com/ Venetica] Fantasy themed adventure game.&lt;br /&gt;
* [http://www.matrixgames.com/products/374/details/Operation.Barbarossa.-.The.Struggle.for.Russia/ Operation Barbarossa - The Struggle for Russia] A commercial turnbased strategy game&lt;br /&gt;
* [http://global.lunia.com/ Lunia] MMORPG featuring anime characters.&lt;br /&gt;
* [http://en.wikipedia.org/wiki/The_Book_of_Unwritten_Tales The Book of Unwritten Tales] 3D adventure game by HMH Interactive&lt;br /&gt;
* [http://voiddestroyer.com/ Void Destroyer] An independent (self funded) space combat simulator with real time strategy elements.&lt;br /&gt;
* [http://www.lifeon.pl/ LifeON] A MMO Virtual Worlds 3D Game using Ogre and CEGUI&lt;br /&gt;
* [http://www.worldofbattles.com/ World of battles] Free Online MMORTS&lt;br /&gt;
* [http://edeneternal.aeriagames.com/ Eden Eternal] A free Anime MMORPG Game from Aeria Games&lt;br /&gt;
* [http://www.snakeworldsgame.com/ Snakeworlds - Spherical 3D snake game] The game classic on spheres / globes.&lt;br /&gt;
* [http://www.wiraingames.com/ Interstellar defense troops] Tower defense style game in space by Winter rain games&lt;br /&gt;
* [http://www.ivan.org.es/showcase/gameview.php?id=2 Photopolys] A challenge for your mind in which you must compose puzzles based on your own photos.&lt;br /&gt;
* [http://www.dancingdots-studio.com/ Ride!] An equestrian simulation by Dancing Dots.&lt;br /&gt;
* [http://www.moonpod.com/English/about_pirateprincess.php/ Pirate Princess] Semi-casual word game based adventure in a pirate setting.&lt;br /&gt;
* [http://www.zeroballistics.com/game_info.php?um=1&amp;amp;lm=1 Zero Ballistics] a unique blend of multiplayer first person shooter and tank combat game&lt;br /&gt;
&lt;br /&gt;
=== Educational ===&lt;br /&gt;
* [http://citycardriving.com/ City Car Driving] is designed to help users feel the car driving in ? big city or in a country&lt;br /&gt;
&lt;br /&gt;
=== Addons ===&lt;br /&gt;
* [http://www.mtasa.com/ Multi Theft Auto: SA] Third party mod for GTA3: San Andreas providing multiplayer&lt;br /&gt;
* [http://www.iv-multiplayer.com/ IV:M] Third party mod for GTA4 providing multiplayer&lt;br /&gt;
&lt;br /&gt;
=== Defunct? ===&lt;br /&gt;
* [http://www.cubecombat.net/ Cube Combat] 3D Bomberman like game, supporting up to 4 player through lan or internet.&lt;br /&gt;
* [http://www.opengate.ontheserver.de OpenGate] Opengate is an open source remake of the game Jumpgate©&lt;br /&gt;
* [http://www.smootsy.com/ Smootsy] A MMO Social Network 3D Game using Ogre&lt;br /&gt;
&lt;br /&gt;
== Applications ==&lt;br /&gt;
* [http://www.psychosynth.com PsychoSynth] aims to create an interactive modular soft-synth inspired by the ideas of the Reactable.&lt;br /&gt;
* [http://www.navit-project.org/ NAVIT] is a car navigation system with routing engine.&lt;br /&gt;
* [http://mmix.me/ MMiX.Me] 3D Media Player for Microsoft Windows.&lt;br /&gt;
&lt;br /&gt;
== Engines and frameworks ==&lt;br /&gt;
=== The Delta3D Open Source Game Engine ===&lt;br /&gt;
The Delta3D Game Engine integrates the functionality of CEGUI, allowing users to have robust user interfaces active in their applications. The Delta3D Game Engine was an early adopter of the CEGUI technology and has contributed to its development over the years.&lt;br /&gt;
&lt;br /&gt;
For more information, see [http://delta3d.org http://delta3d.org].&lt;br /&gt;
&lt;br /&gt;
=== Reality factory ===&lt;br /&gt;
Reality Factory is a program that, in conjunction with other tools, allows you to create first- and third- person perspective games - without programming!&lt;br /&gt;
&lt;br /&gt;
CEGUI is used in version 2.0 and upwards.&lt;br /&gt;
More at [http://www.realityfactory.info http://www.realityfactory.info] and [http://realityfactory2.sourceforge.net/ http://realityfactory2.sourceforge.net/]&lt;br /&gt;
&lt;br /&gt;
== Game related tools ==&lt;br /&gt;
=== TeamSpeak 3 overlay ===&lt;br /&gt;
TeamSpeak 3 overlay is an injection engine that displays TeamSpeak activities (e.g. when people are talking) while in-game.&lt;br /&gt;
&lt;br /&gt;
For more information, check [http://ts3overlay.r-dev.de ts3overlay.r-dev.de]&lt;br /&gt;
&lt;br /&gt;
=== OGRE particle editor ===&lt;br /&gt;
&amp;quot;The OGRE Particle Editor is a real-time visual particle system editor. It is a tool that provides the ability to rapidly create OGRE particle system templates that can be used in any OGRE driven application. The effects are stored and loaded as templates via standard OGRE particle scripts (*.particle).&amp;quot;&lt;br /&gt;
&lt;br /&gt;
It can be downloaded [http://www.ogre3d.org/index.php?option=com_remository&amp;amp;Itemid=74&amp;amp;func=fileinfo&amp;amp;filecatid=35&amp;amp;parent=category here]. &lt;br /&gt;
&lt;br /&gt;
And the manual can be found [http://www.game-cat.com/ogre/pe/docs/ here].&lt;br /&gt;
&lt;br /&gt;
=== Nimble 3D ===&lt;br /&gt;
Nimble is WMI's second realtime visualization product. Based on advanced physics models, Nimble follows in its predecessor's footsteps and delivers another first in simulation graphics- truly photorealistic 3D clouds, completely in realtime&lt;br /&gt;
&lt;br /&gt;
For more information, see [http://www.windwardmark.net/products.php?page=nimble&amp;amp;sub=technology| windwardmark.net]&lt;/div&gt;</summary>
		<author><name>Mmixlinus</name></author>	</entry>

	</feed>