<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://cegui.org.uk/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thomas</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.uk/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thomas"/>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/Special:Contributions/Thomas"/>
		<updated>2026-04-09T12:36:06Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.24.1</generator>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Building_CEGUI_for_Ogre_/_OgreRenderer&amp;diff=5406</id>
		<title>Building CEGUI for Ogre / OgreRenderer</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Building_CEGUI_for_Ogre_/_OgreRenderer&amp;diff=5406"/>
				<updated>2014-06-26T23:38:59Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &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 isn't an Ogre dependency anymore and was replaced by a very simple UI overlay mainly used for the Ogre demos. Users now have to compile the CEGUI library against Ogre on their own, to use CEGUI together with Ogre. This guide has been created to help users building CEGUI against Ogre.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;CEGUI 0.8 supports basic configurations of Ogre 1.7 and 1.8 and 1.9. Other versions and special configurations (such as using boost) are supported but might require additional steps from your side.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;CEGUI v-0 branch and releases starting with 0.8.4 will support Ogre 1.7, 1.8, 1.9. They will also be updated from time to time to support the current version of Ogre default branch (right now it works with the Ogre default branch version of 6th Jan. 2014, including Ogre's OGL3 Renderer)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;If somebody wants to use CEGUI from v0-8 together with Ogre's Direct3D 11 Renderer urgently, we can try to help you modify the CEGUIOgreRenderer for D3D 11 compatibilities - with hlsl experience it shouldn't take longer than 1 hour.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here are all the links you will need to build CEGUI and its dependencies - which is the recommended approach:&lt;br /&gt;
* Visit the [http://static.cegui.org.uk/docs/current/downloading.html reference manual] for instructions on obtaining the latest CEGUI source code (be sure to be on a '''stable branch''', for example v0-8) - this is the recommended approach as it will include the latest fixes.&lt;br /&gt;
'''Note''': If the branch version's source code seems to be unstable or not working, you can try the [http://sourceforge.net/projects/crayzedsgui/files/latest/download?source=files latest stable release] or select a Release version from the [http://cegui.org.uk/download downloads page].&lt;br /&gt;
* '''Additionally''' to the CEGUI source code you will need [http://sourceforge.net/projects/crayzedsgui/files/CEGUI%20Mk-2%20Dependencies/0.8.x/cegui-deps-0.8.x-src.zip/download the source code of the CEGUI dependencies]. Download it and build the dependencies on your system (debug &amp;amp; release modes are common and are recommended to be built). You can use this document as guideline for the building process if needed: [http://static.cegui.org.uk/docs/current/building_deps.html Building dependencies]. Move the &amp;quot;dependencies&amp;quot; folder, which should have been created during the build process and should contain the headers, .lib files and .dll files, 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.&lt;br /&gt;
&lt;br /&gt;
== Step-by-step guide ==&lt;br /&gt;
&lt;br /&gt;
'''Important:''' If you make a mistake such as confusing Debug and Release paths and you already clicked &amp;quot;Configure&amp;quot; again, then please trigger &amp;quot;Delete Cache&amp;quot; (File-&amp;gt;Delete Cache) in Cmake and start from 0 again!&lt;br /&gt;
Also we recommend you to switch on the &amp;quot;Advanced&amp;quot; and &amp;quot;Grouped&amp;quot; checkboxes.&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 build it yourself (recommended), you will need to compile/link it first in the modes you want to use (Debug/Release) 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 files are located (e.g. C:/CEGUI - contains folders like 'cegui' 'cmake' 'datafiles', etc. )&lt;br /&gt;
* 5 Set the '''build path''' to the directory where you want CMake to generate your build configuration(e.g. C:/CEGUI/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.&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. &lt;br /&gt;
* 8 Check if OGRE and OIS (and boost if your Ogre uses that) were found by cmake. (For more information about how boost can be found by CMake please see the Cmake docu: http://www.cmake.org/cmake/help/git-master/module/FindBoost.html) Look through the CMake GUI Utility output to see if there is a message like 'Could NOT find OGRE'. '''If both Ogre and OIS were found you can jump to step #9 now'''. &amp;lt;span style=&amp;quot;color:#327722&amp;quot;&amp;gt;  If this was not the case it means that you either have not set the environment variables for Ogre (OGRE_SDK and OGRE_HOME) and OIS (OIS_HOME) at all, or that you have not set them correctly. You can try to fix this and click configure again to see if it works. If it does you can skip to #9. If it does not work then set the paths yourself. Here are examplatory paths for the environment variables:&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#327722&amp;quot;&amp;gt;&amp;lt;p&amp;gt;We assume the Ogre dependencies lie in the main folder of Ogre, so that if Ogre is installed to C:/Ogre, the dependencies will be in  C:/Ogre/Dependencies. You can either use precompiled dependencies or build them yourself (preferred way) - take a look at the Ogre documentation for how to do this.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#327722&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;OGRE_HOME (only necessary if you build it on your own from source code) - e.g.: C:/Ogre&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;OGRE_SDK - if you use SDK e.g.: C:/OgreSDK_vc10_v1-9-0  ''' or if you build yourself e.g.:'''   C:/Ogre/build&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;OIS_HOME- You can set this to point either to your OIS home or to your Ogre dependencies: C:/Ogre/Dependencies&amp;lt;/p&amp;gt;&lt;br /&gt;
In the case that the automatical finding of Ogre still does not work, you will have to set some CMAKE variables manually. 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_H_BUILD_SETTINGS_PATH - variable of type PATH which must be set to the directory where Ogre's build settings header file &amp;quot;OgreBuildSettings.h&amp;quot; is located (e.g. C:/Ogre/build/include/)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;OGRE_H_PATH (before 0.8.3: OGRE_INCLUDE_DIR) - variable of type PATH which must be set to the directory where the OGRE header files are located (e.g. C:/Ogre/OgreMain/include)&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. C:/Ogre/build/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. C:/Ogre/build/lib/Debug/OgreMain_d.lib)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;( not in 0.8.3 anymore: OGRE_FOUND - variable of type BOOL which must be set to TRUE )&amp;lt;/p&amp;gt;&lt;br /&gt;
Set all these variables analogously for OIS, here you can reference the dependency folder you used for Ogre , e.g.:&lt;br /&gt;
&amp;lt;p&amp;gt;OIS_H_PATH - variable of type PATH which must be set to the directory where the OIS header files are located )(e.g. C:/Ogre/Dependencies/include/OIS)&amp;lt;/p&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#327722&amp;quot;&amp;gt;&lt;br /&gt;
Boost dependencies are often not found automatically. Boost requirements varied between different Ogre versions and, in addition to that, are now completely optional, but the precompiled release versions may often still depend on boost (such as Ogre 1.9 RC1 does). If you want to or have to use Boost, you should ignore the boost warnings in cmake (which are related to how CMAKE handles boost and not our fault) as we recommend you to specify the boost libraries and include directory in the project settings directly (see step #12).&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 9 After you changed all the CMake settings to your liking (deactivating/activating Image codecs, parsers, renderer, etc.) you have to rerun '''Configure'''. You need to do this in order to save your additional variables in the CMake cache and in the build configuration.&lt;br /&gt;
* 10 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;
* 11 Go to the cegui build directory and open the Visual Studio solution '''cegui.sln'''&lt;br /&gt;
* 12 If your Ogre doesn't use boost skip to 13. Otherwise add the boost include directory ( e.g.: C:/OgreSDK_vc10_v1-9-0/boost ) and the library directory ( e.g.: C:/OgreSDK_vc10_v1-9-0/boost/lib ) to the additional include directories and additional library directories of the CEGUIOgreRenderer project settings. Also add all necessary lib files in Linker/Input in the project settings. 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 project as well as adding the CEGUIOgreRenderer lib to the CEGUISampleFramework project. You will also need to do alle these steps for your own project when you set it up. You should also double-check if the CEGUIOgreRenderer and the SampleBrowser link to either OgreMain_d.lib or OgreMain.lib. If not the case, add these paths manually to the input.&lt;br /&gt;
* 13 Build the entire cegui solution.&lt;br /&gt;
* 14 (Optional) Start the SampleBrowser to see if the samples work correctly (don't forget to copy the created samples.xml from build/datafiles/samples to your datafiles/samples folder so that the SampleBrowser can find the samples you want to use. Also make sure you copied all the dlls that your setup requires to the foldering containing the SampleBrowser.exe and in Visual Studio: for Project-&amp;gt;Properties-&amp;gt;Debugging-&amp;gt;Working Directory set the value to $(OutDir) )&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;
==Errors==&lt;br /&gt;
*CEGUI Exception - bad allocation&lt;br /&gt;
This error is rather cryptic in its meaning and can occur when linking debug libraries to release libraries or vice-versa. Simply check all CMAKE paths to see if you accidently mixed up the debug and release paths for libraries (OIS, Ogre). If you did not then this might be due to a now-fixed error in 0.8.3. If this is the case you will have to change the .lib file to the OgreMain_d.lib version in Debug mode. Otherwise delete the cache (see mention above) and restart the CMake configuration.&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>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=FAQ&amp;diff=5405</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=FAQ&amp;diff=5405"/>
				<updated>2014-06-26T23:37:16Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General Questions ==&lt;br /&gt;
=== What is CEGUI? ===&lt;br /&gt;
CEGUI stands for ''Crazy Eddie's Gui System''; a free library providing windowing and widgets for graphics APIs / engines where such functionality is not natively available, or severely lacking. The library is object orientated, written in C++, and targeted at games developers who should be spending their time creating great games, not building GUI sub-systems!&lt;br /&gt;
&lt;br /&gt;
CEGUI is used as the GUI of choice in the [http://www.ogre3d.org Ogre3D project] but supports Microsoft® DirectX® 8.1 and 9, OpenGL, and the Irrlicht engine natively.&lt;br /&gt;
&lt;br /&gt;
CEGUI was started by Paul Turner (&amp;quot;[[User:CrazyEddie|CrazyEddie]]&amp;quot;) about two years ago and is currently in it's second major revision, &amp;quot;Mk2&amp;quot;. The project supports windows, linux and MacOS.&lt;br /&gt;
&lt;br /&gt;
=== How is CEGUI licensed? ===&lt;br /&gt;
Up and until version 0.4.1, CEGUI '''is''' licensed under [http://www.gnu.org/licenses/lgpl.html LGPL], which basically means you can dynamically link to it (ie. use it as a library) in a non-GPL project, as long as you fulfill the other requirements of the LGPL.&lt;br /&gt;
&lt;br /&gt;
However, from 0.5 on the library is released under the [http://www.opensource.org/licenses/mit-license.php MIT] license, which is less restrictive then LGPL. You may for example statically link to libraries. The main reason for this switch is the fact that the Ogre3D project has started to provide dual licensing to allow console development. And in order to keep CEGUI as their preferred GUI system, we have switched as well.&lt;br /&gt;
&lt;br /&gt;
=== What is the situation with the [[Falagard]] components and the Creative Commons license? ===&lt;br /&gt;
There is no situation! The Creative Commons license only applies to the documentation where that notice appears; the source code, libraries, and all other materials relating to the [[Falagard]] skinning system are licensed under LGPL or MIT (depending upon the version; see above).&lt;br /&gt;
&lt;br /&gt;
=== Why is the [[Falagard]] documentation licensed separately? Why is it not LGPL/MIT like the rest of the library? ===&lt;br /&gt;
Originally that documentation was only to be available as a PDF file intended for self-printing into a mini-book, and the &amp;quot;this work&amp;quot; portion of the license notification applies to the text of that book; the documentation is considered a separate work from the code / library itself, and so it licensed separately.&lt;br /&gt;
&lt;br /&gt;
=== How much does CEGUI cost? ===&lt;br /&gt;
Nothing. The use of CEGUI is totally free within the bounds of the license as described above.&lt;br /&gt;
&lt;br /&gt;
=== I am developing a commercial, closed-source product. Should i use the 0.4 or 0.5 version of the library? ===&lt;br /&gt;
When you are creating a product for PC, where it is possible for users to update any of your used third-party DLL's (a requirement for LGPL), you can choose both versions. However if you are shipping a product on a read-only device, such as a console DVD, you must use 0.5 or higher, because the MIT license does not require that users can update anything.&lt;br /&gt;
&lt;br /&gt;
However before deciding, do always carefully check the mentioned licenses to make sure that your project doesn't do something uncommon.&lt;br /&gt;
&lt;br /&gt;
=== I am not happy with the LGPL / MIT license, do you offer alternative licensing? ===&lt;br /&gt;
No. Alternative licensing is not available, nor is it planned. But you won't find anything much less restrictive then the MIT license.&lt;br /&gt;
&lt;br /&gt;
=== Does CEGUI rely upon any third party libraries? If so what are they? ===&lt;br /&gt;
CEGUI currently depends upon the following external libraries:&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot; &lt;br /&gt;
|| '''Library''' || '''Required''' || '''Url''' || '''License''' &lt;br /&gt;
|- &lt;br /&gt;
|| FreeType2 || yes || [http://www.freetype.org/freetype2/index.html http://www.freetype.org/freetype2/index.html] || BSD-like [http://www.freetype.org/FTL.TXT FreeType License] ou [http://www.freetype.org/GPL.TXT GPL] &lt;br /&gt;
|-&lt;br /&gt;
|| Perl C Regular Expression || yes || [http://www.pcre.org/ http://www.pcre.org/] || [http://www.pcre.org/license.txt BSD]&lt;br /&gt;
|-&lt;br /&gt;
|| Xerces-C++ || no || [http://xerces.apache.org/ http://xerces.apache.org/] || [http://www.apache.org/licenses/LICENSE-2.0.html  Apache Software License, Version 2.0]&lt;br /&gt;
|-&lt;br /&gt;
|| Expat || no || [http://expat.sourceforge.net/ http://expat.sourceforge.net/] || [http://www.opensource.org/licenses/mit-license.html MIT]&lt;br /&gt;
|-&lt;br /&gt;
|| Libxml || no ||  [http://www.xmlsoft.org/ http://www.xmlsoft.org/] || [http://www.opensource.org/licenses/mit-license.html MIT]&lt;br /&gt;
|-&lt;br /&gt;
|| DevIL || no ||  [http://openil.sourceforge.net/ http://openil.sourceforge.net/] || [http://openil.sourceforge.net/license.php  LGPL License Version 2.1] &lt;br /&gt;
|}&lt;br /&gt;
You will also require a supported rendering system, and some form of input library.&lt;br /&gt;
&lt;br /&gt;
=== Do I have to compile the third part libraries myself? ===&lt;br /&gt;
It depends. Under Linux and similar systems, you will need to perform your own compilation. For Microsoft® Windows® users, we have supplied packages containing binary versions of the libraries for a selection of popular compiler configurations. See the &amp;quot;Current Releases&amp;quot; on the home page.&lt;br /&gt;
&lt;br /&gt;
=== You mentioned something about &amp;quot;supported rendering systems&amp;quot;, what's that all about and which systems are supported? ===&lt;br /&gt;
CEGUI can be used with various rendering systems. There are currently CEGUI renderer modules for Microsoft® DirectX® 9, 10 and 11, OpenGL, the Ogre engine, and the Irrlicht engine (CEGUI 0.7). DirectFB renderer is available but experimental. A null renderer is also available but not very useful for end applications.&lt;br /&gt;
&lt;br /&gt;
=== There is no renderer module for my rendering engine or API of choice, will other rendering system be supported? ===&lt;br /&gt;
It is likely that, over time, CEGUI will add support for other APIs and engines. Having said this, it is fairly simple to write your own renderer module for CEGUI, so you might consider taking that option if you do not want to wait.&lt;br /&gt;
&lt;br /&gt;
=== And what about input libraries? ===&lt;br /&gt;
CEGUI requires you to ''inject'' inputs into it, these inputs can come from any source that you choose. All you need to do is pass mouse movements, mouse button up and down events, and keyboard inputs to CEGUI.&lt;br /&gt;
&lt;br /&gt;
=== Why doesn't CEGUI collect its own inputs? Why do I need to inject the inputs myself? ===&lt;br /&gt;
CEGUI does not collect its own input so that the system can remain as flexible as possible. We don't want to tie people down to one system or input library.&lt;br /&gt;
&lt;br /&gt;
=== I have seen mention of a Lua scripting module, how can I get this? ===&lt;br /&gt;
The Lua scripting module is provided with CEGUI and resides in the same source repository. Downloading CEGUI binary/source/svn will get you everything you need.&lt;br /&gt;
&lt;br /&gt;
=== What is the Mk-1 version of CEGUI? ===&lt;br /&gt;
The Mk-1 version was a Windows®/DirectX® only library and was really a dry run for what became the Mk-2 system. There was only ever 'alpha' versions of the Mk-1 code, and it is now considered obselete and is not supported. &lt;br /&gt;
&lt;br /&gt;
=== I am having major troubles integrating CEGUI with my project, will you do it for me? ===&lt;br /&gt;
No. The CEGUI developers have enough to do without writing users projects for them. Refer to the Howto's and Tutorials from the home page.&lt;br /&gt;
&lt;br /&gt;
=== I have (or think I have) found a bug. How should I proceed? ===&lt;br /&gt;
If you are certain that it's a bug and not, for example, a misunderstanding of what is happening, then the bug should be reported via the [http://www.cegui.org.uk/mantis/index.php Mantis Tracker] However, before submitting a bug to the tracker, it is asked that you first do a quick search to see if the bug has already been reported. If you are unsure whether something is a bug or not, then it may be discussed on the web site forums prior to submitting a bug report to the project bug tracker.&lt;br /&gt;
&lt;br /&gt;
=== I notice that feature/widget 'X' is missing. Will this be added to CEGUI? ===&lt;br /&gt;
Requests for new features and/or widgets are welcomed in this forum: http://www.cegui.org.uk/phpBB2/viewforum.php?f=3&lt;br /&gt;
This is the best way because most people will read it, including the team. This helps others to give input as well, which migth result in clearly defined requests.&lt;br /&gt;
&lt;br /&gt;
Note that no promises are made with regards to which features will and will not be added, or how long such things will take, but all requests will be seriously considered.&lt;br /&gt;
&lt;br /&gt;
=== How can I get involved with CEGUI development? ===&lt;br /&gt;
Each new member gets added by invitation by the current team. Most probably because that person has contributed some valuable patches, or is of great help in the forums. It will of course depend on the current state of the project to know which positions are required.&lt;br /&gt;
&lt;br /&gt;
So the best way to become involved is to show your face at the web site forums, the irc channel, and state what your intentions are (to help in avoiding duplicated effort), thereby becoming a constructive individual for CEGUI and its community.&lt;br /&gt;
&lt;br /&gt;
=== Is there managed code / Microsoft .Net support for the CEGUI library? ===&lt;br /&gt;
Yes, there is ''ceguisharp'' at http://ceguisharp.sourceforge.net/ This is a C# port of the library which will support Managed Direct 3D, OpenGL, as well as higher-level engines such as the excellent Axiom rendering engine.&lt;br /&gt;
&lt;br /&gt;
=== This FAQ doesn't answer my question, what should I do now? ===&lt;br /&gt;
Feel free to post your question on the web site forums, somebody will gladly answer your question and/or offer further advice.&lt;br /&gt;
&lt;br /&gt;
== Building CEGUI ==&lt;br /&gt;
&lt;br /&gt;
This section has moved to [http://www.cegui.org.uk/wiki/index.php/HOWTO:_Obtain_the_library_source_from_subversion New location]&lt;br /&gt;
&lt;br /&gt;
== Usage Questions ==&lt;br /&gt;
''(This whole section should be moved to a Tutorial or a Howto).''&lt;br /&gt;
=== What is the correct way to subscribe for an event? ===&lt;br /&gt;
Event notification is a vital aspect of GUI programming. CEGUI handles those using subscribers.&lt;br /&gt;
In order to subscribe a window for an event, you have to call the method 'Window::subscribeEvent', passing the function&lt;br /&gt;
to be called when the specified event occurs, and the instance on which the method is called.&lt;br /&gt;
&lt;br /&gt;
 class MyButtonHandler&lt;br /&gt;
 {&lt;br /&gt;
 private:&lt;br /&gt;
     PushButton* mButton;&lt;br /&gt;
 &lt;br /&gt;
 public:&lt;br /&gt;
     MyButtonHandler::MyButtonHandler(PushButton* btn) : mButton(btn)&lt;br /&gt;
     {&lt;br /&gt;
         btn-&amp;gt;subscribeEvent(PushButton::EventClicked, Event::Subscriber(&amp;amp;MyButtonHandler::ButtonClicked,this));&lt;br /&gt;
     }&lt;br /&gt;
     &lt;br /&gt;
     bool MyButtonHandler::ButtonClicked(const EventArgs&amp;amp;)&lt;br /&gt;
     {&lt;br /&gt;
         //This function gets called when the button is clicked&lt;br /&gt;
         std::cout &amp;lt;&amp;lt; &amp;quot;Button clicked&amp;quot; &amp;lt;&amp;lt; std::endl;&lt;br /&gt;
     }&lt;br /&gt;
&lt;br /&gt;
The 'subscribeEvent' method returns an Event::Connection, which can be used later to unsubscribe for a registered event with&lt;br /&gt;
the 'disconnect' method.&lt;br /&gt;
&lt;br /&gt;
 Event::Connection myCon = btn-&amp;gt;subscribeEvent(...);&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 &lt;br /&gt;
 myCon-&amp;gt;disconnect();&lt;br /&gt;
&lt;br /&gt;
In order to totally remove the event itself, you have to call the 'removeEvent' function:&lt;br /&gt;
all the connections to the specified event will be disconnected. &lt;br /&gt;
There's also an Event::ScopedConnection, which can be used to auto-unsubscribe when the event goes out of scope.&lt;br /&gt;
&lt;br /&gt;
Similar way for the scripted events, which can be subscribed with the 'subscribeScriptedEvent' method.&lt;br /&gt;
In addition, you can do it in XML, using this syntax:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;Event Name=&amp;quot;Clicked&amp;quot; Function=&amp;quot;luabtn_clicked&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== How can I make the ListBox highlight the selected item? ===&lt;br /&gt;
In order to highlight selected items you need to set selection brush image and the selection colours of that item. The selection image is modulated by the colours you set. Note, that the alpha component needs to be smaller than 1.0, for the content of the selected item to be seen.&lt;br /&gt;
 // set selection highlight to a half transparent blue to red gradient.&lt;br /&gt;
 colour blue(0.0, 0.0, 1.0, 0.5);&lt;br /&gt;
 colour red(1.0, 0.0, 0.0, 0.5);&lt;br /&gt;
 myListBoxItem-&amp;gt;setSelectionColours(blue, blue, red, red);&lt;br /&gt;
 // this default image is a simple white rectangle&lt;br /&gt;
 myListBoxItem-&amp;gt;setSelectionBrushImage(&amp;quot;TaharezLook&amp;quot;, &amp;quot;ListboxSelectionBrush&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
=== How can I remove the border of a StaticImage? ===&lt;br /&gt;
Either put the following property into the window definition:&lt;br /&gt;
 &amp;lt;Property Name=&amp;quot;FrameEnabled&amp;quot; Value=&amp;quot;false&amp;quot; /&amp;gt;&lt;br /&gt;
Or set it by code:&lt;br /&gt;
 myStaticImage-&amp;gt;setFrameEnabled(false);&lt;br /&gt;
&lt;br /&gt;
=== How can I set the background of a StaticImage? ===&lt;br /&gt;
The first thing you need in order to do this is an Imageset that defines the Image that you wish to use. When wanting to use an image file for this as you suggest, you basically have an imageset defined like this:&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;Imageset Name=&amp;quot;BackdropImageset&amp;quot; Imagefile=&amp;quot;backdrop.tga&amp;quot; NativeHorzRes=&amp;quot;1024&amp;quot; NativeVertRes=&amp;quot;768&amp;quot; AutoScaled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
 	&amp;lt;Image Name=&amp;quot;Backdrop&amp;quot; XPos=&amp;quot;0&amp;quot; YPos=&amp;quot;0&amp;quot; Width=&amp;quot;1024&amp;quot; Height=&amp;quot;768&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;/Imageset&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What this does is define an Imageset using the backdrop.tga. A single image &amp;quot;Backdrop&amp;quot; is defined that starts at location (0,0) and is 1024 x 768 in size. You should be careful in that the source image file should have dimensions that are powers of two - this is because the image is loaded as a texture, and may be stretched if the powers-of-two requirement is not observed.&amp;lt;br /&amp;gt;&lt;br /&gt;
Once you have your imageset defined, you can load it either by adding a reference to it in whichever scheme you are loading, or manually using the ImagesetManager:&lt;br /&gt;
 CEGUI::ImagesetManager::getSingleton().createImageset(&amp;quot;myImageset.imagset&amp;quot;);&lt;br /&gt;
Once the thing is loaded, you set the image into the StaticImage like so:&lt;br /&gt;
 myStaticImage-&amp;gt;setImage(&amp;quot;BackdropImageset&amp;quot;, &amp;quot;Backdrop&amp;quot;);&lt;br /&gt;
Notice that the names we specify here are the ones that were originally specified in the imageset XML file.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== I can't see the items I've added to my Combobox, how do I get the list to show when I press the button? ===&lt;br /&gt;
The height you specify for the combobox widget includes the height of the drop down list; it's not just for the 'Editbox' portion of the widget (the height of which is usually automatically determined based upon the font). Ensure that when specifying the height for your combobox, you have provided sufficient space for the list to appear.&lt;br /&gt;
&lt;br /&gt;
=== What properties are available for use in XML layouts, and what format do I use for the value strings? ===&lt;br /&gt;
If you start at the documentation for the base Property class ([http://www.cegui.org.uk/api_reference/classCEGUI_1_1Property.html Property base]), you will get an inheritance diagram showing all properties in the system. When you click one, you'll get its page. Each page has a description of the format in which you should provide its value.&lt;br /&gt;
&lt;br /&gt;
Besides, as an overview, each widget has its properties placed within an appropriately named C++ namespace within the [http://static.cegui.org.uk/docs/current/namespaces.html namespaces section of the API reference].&lt;br /&gt;
&lt;br /&gt;
Also, remember that properties are inherited. So for example, when looking up properties for a PushButton, also check the properties for ButtonBase and Window too - since these properties are also available to you.&lt;br /&gt;
&lt;br /&gt;
The [[PropertyFinder]] tool generates a list of the properties for every widget. Lists of properties for the [[Property reference for TaharezLook|Taharez]] and [[Property reference for WindowsLook|Windows]] schemes are available online.&lt;br /&gt;
&lt;br /&gt;
=== (How) can I create a menu ? ===&lt;br /&gt;
Yes you can. Rackle wrote [http://www.cegui.org.uk/wiki/index.php?title=MenuAndPopup an article] about how to create menus, submenus and popup menus, including some code.&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Scheme_files&amp;diff=5402</id>
		<title>Scheme files</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Scheme_files&amp;diff=5402"/>
				<updated>2014-06-25T21:36:44Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
CEGUI is pretty modular in many aspects. Resource loading, rendering, scripting and window-factories, can all be controlled by client modules.&lt;br /&gt;
The scheme file concerns resource loading.&lt;br /&gt;
&lt;br /&gt;
The first thing most users do when initialising CEGUI, is to load a scheme. This could for example be &amp;quot;../datafiles/schemes/TaharezLookSkin.scheme&amp;quot;. This scheme file is probably the most used currently, and will load the [[Falagard]] version of classic TaharezLook into the library.&lt;br /&gt;
&lt;br /&gt;
If one takes a closer look at this file, they'll see that it is a XML document, ready to be edited... The nice thing here is that it's no longer necessary to recompile, to change the resources to be loaded. Furthermore a scheme acts like a &amp;quot;resource package&amp;quot; as we can unload all resources that is loaded by a scheme given we know its name. From a coding perspective this is nice as it simplifies the resource management. All you have to create/destroy is the scheme it self. CEGUI worries about all the individual resources specified in the XML file for you...&lt;br /&gt;
&lt;br /&gt;
This document is largely based on the 'Readme.txt' file in the 'XMLRefSchema' directory of the source distribution by Paul himself.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' These XML files are case sensitive, so the XML Elements/Attributes will be written in the case required rather than by capitalization rules.&lt;br /&gt;
&lt;br /&gt;
== Document structure ==&lt;br /&gt;
A CEGUI sheme follows a &amp;quot;strict&amp;quot; order dependent structure that looks like this:&lt;br /&gt;
&lt;br /&gt;
* '''GUIScheme'''&lt;br /&gt;
** '''Imageset'''&lt;br /&gt;
** '''ImagesetFromImage'''&lt;br /&gt;
** '''Font'''&lt;br /&gt;
** '''LookNFeel'''&lt;br /&gt;
** '''WindowSet'''&lt;br /&gt;
*** '''WindowFactory'''&lt;br /&gt;
** '''WindowRendererSet''' (CEGUI 0.5.X only)&lt;br /&gt;
*** '''WindowRendererFactory'''&lt;br /&gt;
** '''WindowAlias'''&lt;br /&gt;
** '''FalagardMapping'''&lt;br /&gt;
&lt;br /&gt;
All elements are optional and can be repeated. Two imagesets - for example - are after all a fairly common ;-)&lt;br /&gt;
&lt;br /&gt;
Each element will be described individually below.&lt;br /&gt;
&lt;br /&gt;
== GUIScheme ==&lt;br /&gt;
Root element. Has a name attribute, and a collection of sub-elements which can be Imageset, ImagesetFromFile, Font, LookNFeel, WindowSet, FalagardMapping and WindowAlias elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''version''' - specifies the version of the resource file. Should be specified for all files, current CEGUI scheme version is: 5&lt;br /&gt;
* '''name''' - Specifies the name that the scheme will use within the system. ''Required''.&lt;br /&gt;
&lt;br /&gt;
''GUIScheme'' is the root element and is the only &amp;quot;global&amp;quot; tag.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     ... resources ...&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All schemes will have this XML as all the &amp;quot;magic&amp;quot; goes inside it :-)&lt;br /&gt;
&lt;br /&gt;
=== Imageset ===&lt;br /&gt;
Specifies an Imageset to be loaded as part of this scheme. Has attributes but no sub-elements.&lt;br /&gt;
If an imageset with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - The name of the Imageset. ''Required''.&lt;br /&gt;
* '''filename''' - Filename of the Imageset file. If the imageset created by this file does not = Name above, an exception is thrown. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the file &amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; must define the imageset named &amp;quot;MyImages&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== ImagesetFromImage ===&lt;br /&gt;
Specifies an Imageset to be loaded as part of this scheme. Has attributes but no sub-elements.&lt;br /&gt;
If an imageset with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - The name of the Imageset. ''Required''.&lt;br /&gt;
* '''filename''' - Filename of the image file to load in order to create this Imageset. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the image file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;ImagesetFromFile name=&amp;quot;MyBackground&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyBackground.tga&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the file &amp;quot;../datafiles/imagesets/MyBackground&amp;quot; is a Targa (.TGA) image file. By default an Imageset loaded like this defines a single image named '''full_image''' that covers the entire texture (the content of the image file).&lt;br /&gt;
&lt;br /&gt;
=== Font ===&lt;br /&gt;
Specifies a Font to be loaded as part of the scheme. Has attributes but no sub-elements.&lt;br /&gt;
If a font with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - The name of the Font ''Required''.&lt;br /&gt;
* '''filename''' - Filename of the Font file. If the font created by this file does not = Name above, an exception is thrown. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;Font name=&amp;quot;MyFont&amp;quot; filename=&amp;quot;../datafiles/fonts/MyFont.font&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Font element always loads font XML files. These are not covered here.&lt;br /&gt;
&lt;br /&gt;
=== LookNFeel ===&lt;br /&gt;
Specifies a LookNFeel to be loaded as part of the scheme. Has attributes but no sub-elements.&lt;br /&gt;
The XML file loaded by this element may contain many widget looks which will all become available.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''filename''' - Filename of the LookNFeel file to parse. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loading a look'n'feel specification is not enough. We must create a FalagardMapping as well. More on this soon. Just know that now the widget looks specified in MySkin.looknfeel are available to falagard mappings. At least the imageset we use in MySkin is available ;-)&lt;br /&gt;
&lt;br /&gt;
=== WindowSet ===&lt;br /&gt;
Specifies a module containing concrete GUI elements and their factories. Has attributes and zero or more WindowFactory sub-elements. That is you can optionally specify WindowFactory sub-elements. If they are omitted all available factories in the module are loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''filename''' - Specifies the name of the loadable module (dll / .so / etc). ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardBase&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.4.X provides 3 windowsets. Falagard, WindowsLook and TaharezLook. The above sample code is only valid for CEGUI 0.4.X.&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.5.X provides no widget sets. All the core widgets are part of the CEGUIBase library. It's still there though as it allows user widget modules to be loaded dynamically.&lt;br /&gt;
&lt;br /&gt;
=== WindowRendererSet (CEGUI 0.5.X only) ===&lt;br /&gt;
Specifies a module containing WindowRenderer classes and their factories. Has attributes and zero or more WindowRendererFactory sub-elements. That is you can optionally specify WindowRendererFactory sub-elements. If they are omitted all available factories in the module are loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''filename''' - Specifies the name of the loadable module (dll / .so / etc). ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;WindowRendererSet filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.5.0 only provides one WindowRendererSet. Falagard. It's perfectly possible to write your own WindowRendererSet in C++. Take a look at the CEGUIFalagardWRBase module if you're curious :)&lt;br /&gt;
&lt;br /&gt;
=== WindowFactory ===&lt;br /&gt;
Specifies the factory name (GUI window type name) from the loadable module that is to be added to the list of available factories. Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - Name of the factory / window type which is to be added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; Filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardBase&amp;quot;&amp;gt;&lt;br /&gt;
         '''&amp;lt;WindowFactory name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;'''&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example we only load the &amp;quot;Falagard/Button&amp;quot; factory. If you only need a few widgets and not the whole set, this could save you some memory.&lt;br /&gt;
&lt;br /&gt;
=== FalagardMapping in CEGUI 0.4.X ===&lt;br /&gt;
Maps a look'n'feel to a window factory and assigns the result to a new window type, in effect creating a new window factory for a specific look'n'feel.&lt;br /&gt;
Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''windowType''' - The name for the new &amp;quot;factory&amp;quot;. ''Required''.&lt;br /&gt;
* '''targetType''' - The name of the target window factory which will have the look'n'feel assigned. ''Required''.&lt;br /&gt;
* '''lookNFeel''' - The name of the look'n'feel to use. That's the WidgetLook name from the [[Falagard]] XML. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardBase&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;WindowFactory name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
     '''&amp;lt;FalagardMapping windowType=&amp;quot;My/Button&amp;quot; targetType=&amp;quot;Falagard/Button&amp;quot; lookNFeel=&amp;quot;MyButton&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would be a proper scheme to use the look'n'feel created in [[The Beginners Guide to [[Falagard]] skinning - Part I]]. The new type of button window would in this case be available from code or XML layouts by the type name &amp;quot;My/Button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== FalagardMapping in CEGUI 0.5.X ===&lt;br /&gt;
Maps a look'n'feel to a window factory and assigns the result to a new window type, in effect creating a new window factory for a specific look'n'feel.&lt;br /&gt;
Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''windowType''' - The name for the new &amp;quot;factory&amp;quot;. ''Required''.&lt;br /&gt;
* '''targetType''' - The name of the target window factory which will have the look'n'feel assigned. ''Required''.&lt;br /&gt;
* '''lookNFeel''' - The name of the look'n'feel to use. That's the WidgetLook name from the [[Falagard]] XML. ''Required''.&lt;br /&gt;
* '''renderer''' - Then name of the window renderer factory to use. This module implements the widget rendering code. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardWRBase&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;WindowFactory name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
     '''&amp;lt;FalagardMapping windowType=&amp;quot;My/Button&amp;quot; targetType=&amp;quot;CEGUI/PushButton&amp;quot; lookNFeel=&amp;quot;MyButton&amp;quot; renderer=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would be a proper scheme to use the look'n'feel created in [[The Beginners Guide to [[Falagard]] skinning - Part I]]. The new type of button window would in this case be available from code or XML layouts by the type name &amp;quot;My/Button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== WindowAlias ===&lt;br /&gt;
Specifies an alias for a given window factory type or falagard mapping. Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''alias''' - Name of the alias. This is the alternative name that 'Target' will be known by. ''Required''.&lt;br /&gt;
* '''target''' - Name of the window factory type, falagard mapping or existing alias that is to (also) be known as 'Alias'. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
The scheme is obviously a bit more than just loading resources. It also ties the resources together. All of it can be done in code, but using a scheme file is flexible, and avoids recompiling often.&lt;br /&gt;
&lt;br /&gt;
Schemes are especially useful for artists not familiar with C++ programming, as everything you &amp;quot;set up&amp;quot; in the scheme can be used from XML layouts.&lt;br /&gt;
With [[Falagard]] this means that you can totally customize the user interface if the program is properly configured to do so without ever talking to the developers ;)&lt;br /&gt;
&lt;br /&gt;
--[[User:lindquist]] 03:49, 14 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Scheme_files&amp;diff=5401</id>
		<title>Scheme files</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Scheme_files&amp;diff=5401"/>
				<updated>2014-06-25T21:36:17Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
CEGUI is pretty modular in many aspects. Resource loading, rendering, scripting and window-factories, can all be controlled by client modules.&lt;br /&gt;
The scheme file concerns resource loading.&lt;br /&gt;
&lt;br /&gt;
The first thing most users do when initialising CEGUI, is to load a scheme. This could for example be &amp;quot;../datafiles/schemes/TaharezLookSkin.scheme&amp;quot;. This scheme file is probably the most used currently, and will load the [[Falagard]] version of classic TaharezLook into the library.&lt;br /&gt;
&lt;br /&gt;
If one takes a closer look at this file, they'll see that it is a XML document, ready to be edited... The nice thing here is that it's no longer necessary to recompile, to change the resources to be loaded. Furthermore a scheme acts like a &amp;quot;resource package&amp;quot; as we can unload all resources that is loaded by a scheme given we know its name. From a coding perspective this is nice as it simplifies the resource management. All you have to create/destroy is the scheme it self. CEGUI worries about all the individual resources specified in the XML file for you...&lt;br /&gt;
&lt;br /&gt;
This document is largely based on the 'Readme.txt' file in the 'XMLRefSchema' directory of the source distribution by Paul himself.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' These XML files are case sensitive, so the XML Elements/Attributes will be written in the case required rather than by capitalization rules.&lt;br /&gt;
&lt;br /&gt;
== Document structure ==&lt;br /&gt;
A CEGUI sheme follows a &amp;quot;strict&amp;quot; order dependent structure that looks like this:&lt;br /&gt;
&lt;br /&gt;
* '''GUIScheme'''&lt;br /&gt;
** '''Imageset'''&lt;br /&gt;
** '''ImagesetFromImage'''&lt;br /&gt;
** '''Font'''&lt;br /&gt;
** '''LookNFeel'''&lt;br /&gt;
** '''WindowSet'''&lt;br /&gt;
*** '''WindowFactory'''&lt;br /&gt;
** '''WindowRendererSet''' (CEGUI 0.5.X only)&lt;br /&gt;
*** '''WindowRendererFactory'''&lt;br /&gt;
** '''WindowAlias'''&lt;br /&gt;
** '''FalagardMapping'''&lt;br /&gt;
&lt;br /&gt;
All elements are optional and can be repeated. Two imagesets - for example - are after all a fairly common ;-)&lt;br /&gt;
&lt;br /&gt;
Each element will be described individually below.&lt;br /&gt;
&lt;br /&gt;
== GUIScheme ==&lt;br /&gt;
Root element. Has a name attribute, and a collection of sub-elements which can be Imageset, ImagesetFromFile, Font, LookNFeel, WindowSet, FalagardMapping and WindowAlias elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''version''' - specifies the version of the resource file. Should be specified for all files, current CEGUI scheme version is: 5&lt;br /&gt;
* '''name''' - Specifies the name that the scheme will use within the system. ''Required''.&lt;br /&gt;
&lt;br /&gt;
''GUIScheme'' is the root element and is the only &amp;quot;global&amp;quot; tag.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     ... resources ...&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All schemes will have this XML as all the &amp;quot;magic&amp;quot; goes inside it :-)&lt;br /&gt;
&lt;br /&gt;
=== Imageset ===&lt;br /&gt;
Specifies an Imageset to be loaded as part of this scheme. Has attributes but no sub-elements.&lt;br /&gt;
If an imageset with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - The name of the Imageset. ''Required''.&lt;br /&gt;
* '''filename''' - Filename of the Imageset file. If the imageset created by this file does not = Name above, an exception is thrown. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the file &amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; must define the imageset named &amp;quot;MyImages&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== ImagesetFromImage ===&lt;br /&gt;
Specifies an Imageset to be loaded as part of this scheme. Has attributes but no sub-elements.&lt;br /&gt;
If an imageset with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - The name of the Imageset. ''Required''.&lt;br /&gt;
* '''filename''' - Filename of the image file to load in order to create this Imageset. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the image file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;ImagesetFromFile name=&amp;quot;MyBackground&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyBackground.tga&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the file &amp;quot;../datafiles/imagesets/MyBackground&amp;quot; is a Targa (.TGA) image file. By default an Imageset loaded like this defines a single image named '''full_image''' that covers the entire texture (the content of the image file).&lt;br /&gt;
&lt;br /&gt;
=== Font ===&lt;br /&gt;
Specifies a Font to be loaded as part of the scheme. Has attributes but no sub-elements.&lt;br /&gt;
If a font with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - The name of the Font ''Required''.&lt;br /&gt;
* '''filename''' - Filename of the Font file. If the font created by this file does not = Name above, an exception is thrown. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;Font name=&amp;quot;MyFont&amp;quot; filename=&amp;quot;../datafiles/fonts/MyFont.font&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Font element always loads font XML files. These are not covered here.&lt;br /&gt;
&lt;br /&gt;
=== LookNFeel ===&lt;br /&gt;
Specifies a LookNFeel to be loaded as part of the scheme. Has attributes but no sub-elements.&lt;br /&gt;
The XML file loaded by this element may contain many widget looks which will all become available.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''filename''' - Filename of the LookNFeel file to parse. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loading a look'n'feel specification is not enough. We must create a FalagardMapping as well. More on this soon. Just know that now the widget looks specified in MySkin.looknfeel are available to falagard mappings. At least the imageset we use in MySkin is available ;-)&lt;br /&gt;
&lt;br /&gt;
=== WindowSet ===&lt;br /&gt;
Specifies a module containing concrete GUI elements and their factories. Has attributes and zero or more WindowFactory sub-elements. That is you can optionally specify WindowFactory sub-elements. If they are omitted all available factories in the module are loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''filename''' - Specifies the name of the loadable module (dll / .so / etc). ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardBase&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.4.X provides 3 windowsets. Falagard, WindowsLook and TaharezLook. The above sample code is only valid for CEGUI 0.4.X.&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.5.X provides no widget sets. All the core widgets are part of the CEGUIBase library. It's still there though as it allows user widget modules to be loaded dynamically.&lt;br /&gt;
&lt;br /&gt;
=== WindowRendererSet (CEGUI 0.5.X only) ===&lt;br /&gt;
Specifies a module containing WindowRenderer classes and their factories. Has attributes and zero or more WindowRendererFactory sub-elements. That is you can optionally specify WindowRendererFactory sub-elements. If they are omitted all available factories in the module are loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''filename''' - Specifies the name of the loadable module (dll / .so / etc). ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;WindowRendererSet filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.5.0 only provides one WindowRendererSet. Falagard. It's perfectly possible to write your own WindowRendererSet in C++. Take a look at the CEGUIFalagardWRBase module if you're curious :)&lt;br /&gt;
&lt;br /&gt;
=== WindowFactory ===&lt;br /&gt;
Specifies the factory name (GUI window type name) from the loadable module that is to be added to the list of available factories. Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - Name of the factory / window type which is to be added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; Filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardBase&amp;quot;&amp;gt;&lt;br /&gt;
         '''&amp;lt;WindowFactory name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;'''&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example we only load the &amp;quot;Falagard/Button&amp;quot; factory. If you only need a few widgets and not the whole set, this could save you some memory.&lt;br /&gt;
&lt;br /&gt;
=== FalagardMapping in CEGUI 0.4.X ===&lt;br /&gt;
Maps a look'n'feel to a window factory and assigns the result to a new window type, in effect creating a new window factory for a specific look'n'feel.&lt;br /&gt;
Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''windowType''' - The name for the new &amp;quot;factory&amp;quot;. ''Required''.&lt;br /&gt;
* '''targetType''' - The name of the target window factory which will have the look'n'feel assigned. ''Required''.&lt;br /&gt;
* '''lookNFeel''' - The name of the look'n'feel to use. That's the WidgetLook name from the [[Falagard]] XML. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardBase&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;WindowFactory name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
     '''&amp;lt;FalagardMapping windowType=&amp;quot;My/Button&amp;quot; targetType=&amp;quot;Falagard/Button&amp;quot; lookNFeel=&amp;quot;MyButton&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would be a proper scheme to use the look'n'feel created in [[The Beginners Guide to [[Falagard]] skinning - Part I]]. The new type of button window would in this case be available from code or XML layouts by the type name &amp;quot;My/Button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== FalagardMapping in CEGUI 0.5.X ===&lt;br /&gt;
Maps a look'n'feel to a window factory and assigns the result to a new window type, in effect creating a new window factory for a specific look'n'feel.&lt;br /&gt;
Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''windowType''' - The name for the new &amp;quot;factory&amp;quot;. ''Required''.&lt;br /&gt;
* '''targetType''' - The name of the target window factory which will have the look'n'feel assigned. ''Required''.&lt;br /&gt;
* '''lookNFeel''' - The name of the look'n'feel to use. That's the WidgetLook name from the [[Falagard]] XML. ''Required''.&lt;br /&gt;
* '''renderer''' - Then name of the window renderer factory to use. This module implements the widget rendering code. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardWRBase&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;WindowFactory name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
     '''&amp;lt;FalagardMapping windowType=&amp;quot;My/Button&amp;quot; targetType=&amp;quot;CEGUI/PushButton&amp;quot; lookNFeel=&amp;quot;MyButton&amp;quot; renderer=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would be a proper scheme to use the look'n'feel created in [[The Beginners Guide to [[Falagard]] skinning - Part I]]. The new type of button window would in this case be available from code or XML layouts by the type name &amp;quot;My/Button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== WindowAlias ===&lt;br /&gt;
Specifies an alias for a given window factory type or falagard mapping. Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''alias''' - Name of the alias. This is the alternative name that 'Target' will be known by. ''Required''.&lt;br /&gt;
* '''target''' - Name of the window factory type, falagard mapping or existing alias that is to (also) be known as 'Alias'. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
The scheme is obviously a bit more than just loading resources. It also ties the resources together. All of it can be done in code, but using a scheme file is flexible, and avoids recompiling often.&lt;br /&gt;
&lt;br /&gt;
Schemes are especially useful for artists not familiar with C++ programming, as everything you &amp;quot;set up&amp;quot; in the scheme can be used from XML layouts.&lt;br /&gt;
With [[Falagard]] this means that you can totally customize the user interface if the program is properly configured to do so without ever talking to the developers ;)&lt;br /&gt;
&lt;br /&gt;
--[[User:lindquist]] 03:49, 14 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Imageset_files&amp;diff=5400</id>
		<title>Imageset files</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Imageset_files&amp;diff=5400"/>
				<updated>2014-06-25T21:35:19Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For the time being, this has been copy-and-pasted directly from &amp;quot;readme.txt&amp;quot; in the XMLRefSchema directory of the CEGUI source code. Some prettier formatting along the lines of '''[[Scheme files]]''' would be nice.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Imagesets define one or more images on a larger image (texture).&lt;br /&gt;
The root element must be Imageset.&lt;br /&gt;
&lt;br /&gt;
NOTE: These XML files are case sensitive, so the XML Elements/Attributes will be written in the case required rather than by capitalization rules. &lt;br /&gt;
&lt;br /&gt;
== Document structure ==&lt;br /&gt;
* '''Imageset'''&lt;br /&gt;
** '''Image Element'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Imageset Element ==&lt;br /&gt;
Has attributes and a collection of one or more Image elements.&lt;br /&gt;
&lt;br /&gt;
Imageset attributes:&lt;br /&gt;
* '''version''' - specifies the version of the resource file. Should be specified for all files, current CEGUI imageset version is: 2&lt;br /&gt;
* '''imagefile''' - Path to the image file containing the graphics. ''Required''.&lt;br /&gt;
* '''ResourceGroup''' - The resource group identifier to pass to the resource provider when loading the file.&lt;br /&gt;
* '''name''' - the name that will be assigned to the Imageset in the GUI system. ''required''.&lt;br /&gt;
* '''nativeHorzRes''' - The horizontal screen resolution that the images were are intended to be displayed at. ''Optional, default=640''.&lt;br /&gt;
* '''nativeVertRes''' - The vertical screen resolution that the images were are intended to be displayed at. ''Optional, default=480''.&lt;br /&gt;
* '''autoScaled''' - Boolean, states whether to scale imagery so it appears the same size as any resolution. ''Optional, default=false''.&lt;br /&gt;
&lt;br /&gt;
''Imageset'' is the root element and is the only &amp;quot;global&amp;quot; tag.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
  &amp;lt;Imageset version=&amp;quot;2&amp;quot; name=&amp;quot;MyLook&amp;quot; imagefile=&amp;quot;MyLook.tga&amp;quot; nativeHorzRes=&amp;quot;800&amp;quot; nativeVertRes=&amp;quot;600&amp;quot; autoScaled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    ... resources ...&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Imageset&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Image Element ==&lt;br /&gt;
Has attributes defining an sub-image area.  Can have no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Image attributes:&lt;br /&gt;
&lt;br /&gt;
* '''name''' - The name that will be used to identify the image within the Imageset. ''Required''.&lt;br /&gt;
* '''xPos''' - X pixel co-ordinate of the top-left corner of the image on the texture. ''Required''.&lt;br /&gt;
* '''yPos''' - Y pixel co-ordinate of the top-left corner of the image on the texture. ''Required''.&lt;br /&gt;
* '''width''' - Width of this image in pixels. ''Required''.&lt;br /&gt;
* '''height''' - Height of this image in pixels. ''Required''.&lt;br /&gt;
* '''xOffset''' - Horizontal offset to apply when rendering. ''Optional, default=0''.&lt;br /&gt;
* '''yOffset''' - Vertical offset to apply when rendering. ''Optional, default=0''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
  &amp;lt;Imageset version=&amp;quot;2&amp;quot; name=&amp;quot;MyLook&amp;quot; imagefile=&amp;quot;MyLook.tga&amp;quot; nativeHorzRes=&amp;quot;800&amp;quot; nativeVertRes=&amp;quot;600&amp;quot; autoScaled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Image name=&amp;quot;MyWidgetImage&amp;quot; xPos=&amp;quot;0&amp;quot; yPos=&amp;quot;0&amp;quot; width=&amp;quot;64&amp;quot; height=&amp;quot;64&amp;quot; /&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Imageset&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;br /&gt;
[[Category:Update requested]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Scheme_files&amp;diff=5399</id>
		<title>Scheme files</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Scheme_files&amp;diff=5399"/>
				<updated>2014-06-25T21:33:11Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
CEGUI is pretty modular in many aspects. Resource loading, rendering, scripting and window-factories, can all be controlled by client modules.&lt;br /&gt;
The scheme file concerns resource loading.&lt;br /&gt;
&lt;br /&gt;
The first thing most users do when initialising CEGUI, is to load a scheme. This could for example be &amp;quot;../datafiles/schemes/TaharezLookSkin.scheme&amp;quot;. This scheme file is probably the most used currently, and will load the [[Falagard]] version of classic TaharezLook into the library.&lt;br /&gt;
&lt;br /&gt;
If one takes a closer look at this file, they'll see that it is a XML document, ready to be edited... The nice thing here is that it's no longer necessary to recompile, to change the resources to be loaded. Furthermore a scheme acts like a &amp;quot;resource package&amp;quot; as we can unload all resources that is loaded by a scheme given we know its name. From a coding perspective this is nice as it simplifies the resource management. All you have to create/destroy is the scheme it self. CEGUI worries about all the individual resources specified in the XML file for you...&lt;br /&gt;
&lt;br /&gt;
This document is largely based on the 'Readme.txt' file in the 'XMLRefSchema' directory of the source distribution by Paul himself.&lt;br /&gt;
&lt;br /&gt;
'''NOTE:''' These XML files are case sensitive, so the XML Elements/Attributes will be written in the case required rather than by capitalization rules.&lt;br /&gt;
&lt;br /&gt;
== Document structure ==&lt;br /&gt;
A CEGUI sheme follows a &amp;quot;strict&amp;quot; order dependent structure that looks like this:&lt;br /&gt;
&lt;br /&gt;
* '''GUIScheme'''&lt;br /&gt;
** '''Imageset'''&lt;br /&gt;
** '''ImagesetFromImage'''&lt;br /&gt;
** '''Font'''&lt;br /&gt;
** '''LookNFeel'''&lt;br /&gt;
** '''WindowSet'''&lt;br /&gt;
*** '''WindowFactory'''&lt;br /&gt;
** '''WindowRendererSet''' (CEGUI 0.5.X only)&lt;br /&gt;
*** '''WindowRendererFactory'''&lt;br /&gt;
** '''WindowAlias'''&lt;br /&gt;
** '''FalagardMapping'''&lt;br /&gt;
&lt;br /&gt;
All elements are optional and can be repeated. Two imagesets - for example - are after all a fairly common ;-)&lt;br /&gt;
&lt;br /&gt;
Each element will be described individually below.&lt;br /&gt;
&lt;br /&gt;
== GUIScheme ==&lt;br /&gt;
Root element. Has a name attribute, and a collection of sub-elements which can be Imageset, ImagesetFromFile, Font, LookNFeel, WindowSet, FalagardMapping and WindowAlias elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''version''' - specifies the version of the resource file. Should be specified for all files, current CEGUI scheme version is: 5&lt;br /&gt;
* '''name''' - Specifies the name that the scheme will use within the system. ''Required''.&lt;br /&gt;
&lt;br /&gt;
''GUIScheme'' is the root element and is the only &amp;quot;global&amp;quot; tag.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     ... resources ...&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All schemes will have this XML as all the &amp;quot;magic&amp;quot; goes inside it :-)&lt;br /&gt;
&lt;br /&gt;
=== Imageset ===&lt;br /&gt;
Specifies an Imageset to be loaded as part of this scheme. Has attributes but no sub-elements.&lt;br /&gt;
If an imageset with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - The name of the Imageset. ''Required''.&lt;br /&gt;
* '''filename''' - Filename of the Imageset file. If the imageset created by this file does not = Name above, an exception is thrown. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the file &amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; must define the imageset named &amp;quot;MyImages&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== ImagesetFromImage ===&lt;br /&gt;
Specifies an Imageset to be loaded as part of this scheme. Has attributes but no sub-elements.&lt;br /&gt;
If an imageset with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - The name of the Imageset. ''Required''.&lt;br /&gt;
* '''filename''' - Filename of the image file to load in order to create this Imageset. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the image file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;ImagesetFromFile name=&amp;quot;MyBackground&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyBackground.tga&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the file &amp;quot;../datafiles/imagesets/MyBackground&amp;quot; is a Targa (.TGA) image file. By default an Imageset loaded like this defines a single image named '''full_image''' that covers the entire texture (the content of the image file).&lt;br /&gt;
&lt;br /&gt;
=== Font ===&lt;br /&gt;
Specifies a Font to be loaded as part of the scheme. Has attributes but no sub-elements.&lt;br /&gt;
If a font with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - The name of the Font ''Required''.&lt;br /&gt;
* '''filename''' - Filename of the Font file. If the font created by this file does not = Name above, an exception is thrown. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;Font name=&amp;quot;MyFont&amp;quot; filename=&amp;quot;../datafiles/fonts/MyFont.font&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Font element always loads font XML files. These are not covered here.&lt;br /&gt;
&lt;br /&gt;
=== LookNFeel ===&lt;br /&gt;
Specifies a LookNFeel to be loaded as part of the scheme. Has attributes but no sub-elements.&lt;br /&gt;
The XML file loaded by this element may contain many widget looks which will all become available.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''filename''' - Filename of the LookNFeel file to parse. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loading a look'n'feel specification is not enough. We must create a FalagardMapping as well. More on this soon. Just know that now the widget looks specified in MySkin.looknfeel are available to falagard mappings. At least the imageset we use in MySkin is available ;-)&lt;br /&gt;
&lt;br /&gt;
=== WindowSet ===&lt;br /&gt;
Specifies a module containing concrete GUI elements and their factories. Has attributes and zero or more WindowFactory sub-elements. That is you can optionally specify WindowFactory sub-elements. If they are omitted all available factories in the module are loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''filename''' - Specifies the name of the loadable module (dll / .so / etc). ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardBase&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.4.X provides 3 windowsets. Falagard, WindowsLook and TaharezLook. The above sample code is only valid for CEGUI 0.4.X.&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.5.X provides no widget sets. All the core widgets are part of the CEGUIBase library. It's still there though as it allows user widget modules to be loaded dynamically.&lt;br /&gt;
&lt;br /&gt;
=== WindowRendererSet (CEGUI 0.5.X only) ===&lt;br /&gt;
Specifies a module containing WindowRenderer classes and their factories. Has attributes and zero or more WindowRendererFactory sub-elements. That is you can optionally specify WindowRendererFactory sub-elements. If they are omitted all available factories in the module are loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''filename''' - Specifies the name of the loadable module (dll / .so / etc). ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;WindowRendererSet filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.5.0 only provides one WindowRendererSet. Falagard. It's perfectly possible to write your own WindowRendererSet in C++. Take a look at the CEGUIFalagardWRBase module if you're curious :)&lt;br /&gt;
&lt;br /&gt;
=== WindowFactory ===&lt;br /&gt;
Specifies the factory name (GUI window type name) from the loadable module that is to be added to the list of available factories. Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - Name of the factory / window type which is to be added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; Filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardBase&amp;quot;&amp;gt;&lt;br /&gt;
         '''&amp;lt;WindowFactory name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;'''&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example we only load the &amp;quot;Falagard/Button&amp;quot; factory. If you only need a few widgets and not the whole set, this could save you some memory.&lt;br /&gt;
&lt;br /&gt;
=== FalagardMapping in CEGUI 0.4.X ===&lt;br /&gt;
Maps a look'n'feel to a window factory and assigns the result to a new window type, in effect creating a new window factory for a specific look'n'feel.&lt;br /&gt;
Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''windowType''' - The name for the new &amp;quot;factory&amp;quot;. ''Required''.&lt;br /&gt;
* '''targetType''' - The name of the target window factory which will have the look'n'feel assigned. ''Required''.&lt;br /&gt;
* '''lookNFeel''' - The name of the look'n'feel to use. That's the WidgetLook name from the [[Falagard]] XML. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardBase&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;WindowFactory name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
     '''&amp;lt;FalagardMapping windowType=&amp;quot;My/Button&amp;quot; targetType=&amp;quot;Falagard/Button&amp;quot; lookNFeel=&amp;quot;MyButton&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would be a proper scheme to use the look'n'feel created in [[The Beginners Guide to [[Falagard]] skinning - Part I]]. The new type of button window would in this case be available from code or XML layouts by the type name &amp;quot;My/Button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== FalagardMapping in CEGUI 0.5.X ===&lt;br /&gt;
Maps a look'n'feel to a window factory and assigns the result to a new window type, in effect creating a new window factory for a specific look'n'feel.&lt;br /&gt;
Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''windowType''' - The name for the new &amp;quot;factory&amp;quot;. ''Required''.&lt;br /&gt;
* '''targetType''' - The name of the target window factory which will have the look'n'feel assigned. ''Required''.&lt;br /&gt;
* '''lookNFeel''' - The name of the look'n'feel to use. That's the WidgetLook name from the [[Falagard]] XML. ''Required''.&lt;br /&gt;
* '''renderer''' - Then name of the window renderer factory to use. This module implements the widget rendering code. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardWRBase&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;WindowFactory name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
     '''&amp;lt;FalagardMapping windowType=&amp;quot;My/Button&amp;quot; targetType=&amp;quot;CEGUI/PushButton&amp;quot; lookNFeel=&amp;quot;MyButton&amp;quot; renderer=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would be a proper scheme to use the look'n'feel created in [[The Beginners Guide to [[Falagard]] skinning - Part I]]. The new type of button window would in this case be available from code or XML layouts by the type name &amp;quot;My/Button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== WindowAlias ===&lt;br /&gt;
Specifies an alias for a given window factory type or falagard mapping. Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''alias''' - Name of the alias. This is the alternative name that 'Target' will be known by. ''Required''.&lt;br /&gt;
* '''target''' - Name of the window factory type, falagard mapping or existing alias that is to (also) be known as 'Alias'. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
The scheme is obviously a bit more than just loading resources. It also ties the resources together. All of it can be done in code, but using a scheme file is flexible, and avoids recompiling often.&lt;br /&gt;
&lt;br /&gt;
Schemes are especially useful for artists not familiar with C++ programming, as everything you &amp;quot;set up&amp;quot; in the scheme can be used from XML layouts.&lt;br /&gt;
With [[Falagard]] this means that you can totally customize the user interface if the program is properly configured to do so without ever talking to the developers ;)&lt;br /&gt;
&lt;br /&gt;
--[[User:lindquist]] 03:49, 14 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Scheme_files&amp;diff=5398</id>
		<title>Scheme files</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Scheme_files&amp;diff=5398"/>
				<updated>2014-06-25T21:32:53Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
CEGUI is pretty modular in many aspects. Resource loading, rendering, scripting and window-factories, can all be controlled by client modules.&lt;br /&gt;
The scheme file concerns resource loading.&lt;br /&gt;
&lt;br /&gt;
The first thing most users do when initialising CEGUI, is to load a scheme. This could for example be &amp;quot;../datafiles/schemes/TaharezLookSkin.scheme&amp;quot;. This scheme file is probably the most used currently, and will load the [[Falagard]] version of classic TaharezLook into the library.&lt;br /&gt;
&lt;br /&gt;
If one takes a closer look at this file, they'll see that it is a XML document, ready to be edited... The nice thing here is that it's no longer necessary to recompile, to change the resources to be loaded. Furthermore a scheme acts like a &amp;quot;resource package&amp;quot; as we can unload all resources that is loaded by a scheme given we know its name. From a coding perspective this is nice as it simplifies the resource management. All you have to create/destroy is the scheme it self. CEGUI worries about all the individual resources specified in the XML file for you...&lt;br /&gt;
&lt;br /&gt;
This document is largely based on the 'Readme.txt' file in the 'XMLRefSchema' directory of the source distribution by Paul himself.&lt;br /&gt;
&lt;br /&gt;
__NOTE:__ These XML files are case sensitive, so the XML Elements/Attributes will be written in the case required rather than by capitalization rules.&lt;br /&gt;
&lt;br /&gt;
== Document structure ==&lt;br /&gt;
A CEGUI sheme follows a &amp;quot;strict&amp;quot; order dependent structure that looks like this:&lt;br /&gt;
&lt;br /&gt;
* '''GUIScheme'''&lt;br /&gt;
** '''Imageset'''&lt;br /&gt;
** '''ImagesetFromImage'''&lt;br /&gt;
** '''Font'''&lt;br /&gt;
** '''LookNFeel'''&lt;br /&gt;
** '''WindowSet'''&lt;br /&gt;
*** '''WindowFactory'''&lt;br /&gt;
** '''WindowRendererSet''' (CEGUI 0.5.X only)&lt;br /&gt;
*** '''WindowRendererFactory'''&lt;br /&gt;
** '''WindowAlias'''&lt;br /&gt;
** '''FalagardMapping'''&lt;br /&gt;
&lt;br /&gt;
All elements are optional and can be repeated. Two imagesets - for example - are after all a fairly common ;-)&lt;br /&gt;
&lt;br /&gt;
Each element will be described individually below.&lt;br /&gt;
&lt;br /&gt;
== GUIScheme ==&lt;br /&gt;
Root element. Has a name attribute, and a collection of sub-elements which can be Imageset, ImagesetFromFile, Font, LookNFeel, WindowSet, FalagardMapping and WindowAlias elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''version''' - specifies the version of the resource file. Should be specified for all files, current CEGUI scheme version is: 5&lt;br /&gt;
* '''name''' - Specifies the name that the scheme will use within the system. ''Required''.&lt;br /&gt;
&lt;br /&gt;
''GUIScheme'' is the root element and is the only &amp;quot;global&amp;quot; tag.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme version=&amp;quot;5&amp;quot; name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     ... resources ...&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All schemes will have this XML as all the &amp;quot;magic&amp;quot; goes inside it :-)&lt;br /&gt;
&lt;br /&gt;
=== Imageset ===&lt;br /&gt;
Specifies an Imageset to be loaded as part of this scheme. Has attributes but no sub-elements.&lt;br /&gt;
If an imageset with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - The name of the Imageset. ''Required''.&lt;br /&gt;
* '''filename''' - Filename of the Imageset file. If the imageset created by this file does not = Name above, an exception is thrown. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the file &amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; must define the imageset named &amp;quot;MyImages&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== ImagesetFromImage ===&lt;br /&gt;
Specifies an Imageset to be loaded as part of this scheme. Has attributes but no sub-elements.&lt;br /&gt;
If an imageset with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - The name of the Imageset. ''Required''.&lt;br /&gt;
* '''filename''' - Filename of the image file to load in order to create this Imageset. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the image file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;ImagesetFromFile name=&amp;quot;MyBackground&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyBackground.tga&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the file &amp;quot;../datafiles/imagesets/MyBackground&amp;quot; is a Targa (.TGA) image file. By default an Imageset loaded like this defines a single image named '''full_image''' that covers the entire texture (the content of the image file).&lt;br /&gt;
&lt;br /&gt;
=== Font ===&lt;br /&gt;
Specifies a Font to be loaded as part of the scheme. Has attributes but no sub-elements.&lt;br /&gt;
If a font with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - The name of the Font ''Required''.&lt;br /&gt;
* '''filename''' - Filename of the Font file. If the font created by this file does not = Name above, an exception is thrown. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;Font name=&amp;quot;MyFont&amp;quot; filename=&amp;quot;../datafiles/fonts/MyFont.font&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Font element always loads font XML files. These are not covered here.&lt;br /&gt;
&lt;br /&gt;
=== LookNFeel ===&lt;br /&gt;
Specifies a LookNFeel to be loaded as part of the scheme. Has attributes but no sub-elements.&lt;br /&gt;
The XML file loaded by this element may contain many widget looks which will all become available.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''filename''' - Filename of the LookNFeel file to parse. ''Required''.&lt;br /&gt;
* '''resourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loading a look'n'feel specification is not enough. We must create a FalagardMapping as well. More on this soon. Just know that now the widget looks specified in MySkin.looknfeel are available to falagard mappings. At least the imageset we use in MySkin is available ;-)&lt;br /&gt;
&lt;br /&gt;
=== WindowSet ===&lt;br /&gt;
Specifies a module containing concrete GUI elements and their factories. Has attributes and zero or more WindowFactory sub-elements. That is you can optionally specify WindowFactory sub-elements. If they are omitted all available factories in the module are loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''filename''' - Specifies the name of the loadable module (dll / .so / etc). ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardBase&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.4.X provides 3 windowsets. Falagard, WindowsLook and TaharezLook. The above sample code is only valid for CEGUI 0.4.X.&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.5.X provides no widget sets. All the core widgets are part of the CEGUIBase library. It's still there though as it allows user widget modules to be loaded dynamically.&lt;br /&gt;
&lt;br /&gt;
=== WindowRendererSet (CEGUI 0.5.X only) ===&lt;br /&gt;
Specifies a module containing WindowRenderer classes and their factories. Has attributes and zero or more WindowRendererFactory sub-elements. That is you can optionally specify WindowRendererFactory sub-elements. If they are omitted all available factories in the module are loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''filename''' - Specifies the name of the loadable module (dll / .so / etc). ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;WindowRendererSet filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.5.0 only provides one WindowRendererSet. Falagard. It's perfectly possible to write your own WindowRendererSet in C++. Take a look at the CEGUIFalagardWRBase module if you're curious :)&lt;br /&gt;
&lt;br /&gt;
=== WindowFactory ===&lt;br /&gt;
Specifies the factory name (GUI window type name) from the loadable module that is to be added to the list of available factories. Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''name''' - Name of the factory / window type which is to be added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; Filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardBase&amp;quot;&amp;gt;&lt;br /&gt;
         '''&amp;lt;WindowFactory name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;'''&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example we only load the &amp;quot;Falagard/Button&amp;quot; factory. If you only need a few widgets and not the whole set, this could save you some memory.&lt;br /&gt;
&lt;br /&gt;
=== FalagardMapping in CEGUI 0.4.X ===&lt;br /&gt;
Maps a look'n'feel to a window factory and assigns the result to a new window type, in effect creating a new window factory for a specific look'n'feel.&lt;br /&gt;
Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''windowType''' - The name for the new &amp;quot;factory&amp;quot;. ''Required''.&lt;br /&gt;
* '''targetType''' - The name of the target window factory which will have the look'n'feel assigned. ''Required''.&lt;br /&gt;
* '''lookNFeel''' - The name of the look'n'feel to use. That's the WidgetLook name from the [[Falagard]] XML. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardBase&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;WindowFactory name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
     '''&amp;lt;FalagardMapping windowType=&amp;quot;My/Button&amp;quot; targetType=&amp;quot;Falagard/Button&amp;quot; lookNFeel=&amp;quot;MyButton&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would be a proper scheme to use the look'n'feel created in [[The Beginners Guide to [[Falagard]] skinning - Part I]]. The new type of button window would in this case be available from code or XML layouts by the type name &amp;quot;My/Button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== FalagardMapping in CEGUI 0.5.X ===&lt;br /&gt;
Maps a look'n'feel to a window factory and assigns the result to a new window type, in effect creating a new window factory for a specific look'n'feel.&lt;br /&gt;
Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''windowType''' - The name for the new &amp;quot;factory&amp;quot;. ''Required''.&lt;br /&gt;
* '''targetType''' - The name of the target window factory which will have the look'n'feel assigned. ''Required''.&lt;br /&gt;
* '''lookNFeel''' - The name of the look'n'feel to use. That's the WidgetLook name from the [[Falagard]] XML. ''Required''.&lt;br /&gt;
* '''renderer''' - Then name of the window renderer factory to use. This module implements the widget rendering code. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset name=&amp;quot;MyImages&amp;quot; filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet filename=&amp;quot;CEGUIFalagardWRBase&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;WindowFactory name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
     '''&amp;lt;FalagardMapping windowType=&amp;quot;My/Button&amp;quot; targetType=&amp;quot;CEGUI/PushButton&amp;quot; lookNFeel=&amp;quot;MyButton&amp;quot; renderer=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would be a proper scheme to use the look'n'feel created in [[The Beginners Guide to [[Falagard]] skinning - Part I]]. The new type of button window would in this case be available from code or XML layouts by the type name &amp;quot;My/Button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== WindowAlias ===&lt;br /&gt;
Specifies an alias for a given window factory type or falagard mapping. Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''alias''' - Name of the alias. This is the alternative name that 'Target' will be known by. ''Required''.&lt;br /&gt;
* '''target''' - Name of the window factory type, falagard mapping or existing alias that is to (also) be known as 'Alias'. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
The scheme is obviously a bit more than just loading resources. It also ties the resources together. All of it can be done in code, but using a scheme file is flexible, and avoids recompiling often.&lt;br /&gt;
&lt;br /&gt;
Schemes are especially useful for artists not familiar with C++ programming, as everything you &amp;quot;set up&amp;quot; in the scheme can be used from XML layouts.&lt;br /&gt;
With [[Falagard]] this means that you can totally customize the user interface if the program is properly configured to do so without ever talking to the developers ;)&lt;br /&gt;
&lt;br /&gt;
--[[User:lindquist]] 03:49, 14 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Layout_files&amp;diff=5397</id>
		<title>Layout files</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Layout_files&amp;diff=5397"/>
				<updated>2014-06-23T23:08:36Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For the time being, this has been copy-and-pasted directly from &amp;quot;readme.txt&amp;quot; in the XMLRefSchema directory of the CEGUI source code. Some prettier formatting along the lines of '''[[Scheme files]]''' would be nice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
A GUI Layout defines a hierachy of Window based objects to be created and a property settings for each window.&lt;br /&gt;
The root element is GUILayout.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GUILayout Element&lt;br /&gt;
=================&lt;br /&gt;
GUILayout is the root element.&lt;br /&gt;
The GUILayout must contain a single Window element only.&lt;br /&gt;
&lt;br /&gt;
GUILayout attributes&lt;br /&gt;
--------------------&lt;br /&gt;
Version         - Specifies the version of the resource file. Should be specified for all files, current CEGUI layout version is: 4&lt;br /&gt;
Parent		- Specifies the name of an existing window that this gui layout should be attached to (optional).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Window Element&lt;br /&gt;
==============&lt;br /&gt;
The Window element is used to specify a new window object to be created.&lt;br /&gt;
The Window element has attributes as described below and may contain any number of nested Window elements, any number of Property elements,&lt;br /&gt;
any number of LayoutImport elements, and any number of Event elements.&lt;br /&gt;
&lt;br /&gt;
Window attributes&lt;br /&gt;
-----------------&lt;br /&gt;
Type		- Specifies the type of Window object to be created (required).&lt;br /&gt;
Name		- Specifies the unique name for the Window.  If this is ommitted a name will be generated.  If a window with the name already exists, an exception will be thrown. (optional).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Property Element&lt;br /&gt;
================&lt;br /&gt;
The Property element is used to set properties on the Window created by the containing Window element.&lt;br /&gt;
Property has no sub-elements, but has attributes as described below.&lt;br /&gt;
&lt;br /&gt;
Property attributes&lt;br /&gt;
-------------------&lt;br /&gt;
Name		- The name of the property to be set.  If no such property exists for the target window, an exception may be thrown.  (required).&lt;br /&gt;
Value		- The value to be assigned to the property.  This must be in a format expected by the property or an exception may be thrown.  (required).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
LayoutImport Element&lt;br /&gt;
====================&lt;br /&gt;
The LayoutImport element is used to reference (import) a layout file into another.  The root window of the imported layout is attached to the Window where the import occurrs.&lt;br /&gt;
The LayoutImport element has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
LayoutImport attributes&lt;br /&gt;
-----------------------&lt;br /&gt;
Filename	- Specifies the filename of the layout XML file to be imported.&lt;br /&gt;
ResourceGroup - The resource group identifier to pass to the resource provider when loading the file.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Event Element&lt;br /&gt;
=============&lt;br /&gt;
The Event element is used to create bindings between Gui elements and script functions.&lt;br /&gt;
The Event element has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Event attributes&lt;br /&gt;
----------------&lt;br /&gt;
Name		- Specifies the name of the target event.&lt;br /&gt;
Function	- Specifies the name of the script function that is to be bound to the event.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;br /&gt;
[[Category:NeedsRefinement]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Font_files&amp;diff=5396</id>
		<title>Font files</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Font_files&amp;diff=5396"/>
				<updated>2014-06-23T23:07:26Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.5}} {{VersionBadge|0.6}} {{VersionBadge|0.7}} {{VersionBadge|0.8}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the time being, this has been copy-and-pasted directly from &amp;quot;readme.txt&amp;quot; in the XMLRefSchema directory of the CEGUI source code. Some prettier formatting along the lines of '''[[Scheme files]]''' would be nice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Font files can define one of two types of font; a static bitmapped font based on an Imageset stored on disc, or a dynamically created font made from a true-type font file (.ttf).&lt;br /&gt;
&lt;br /&gt;
The Root element must be Font.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Font Element&lt;br /&gt;
============&lt;br /&gt;
Font is the root element, it has some attributes and optional 'Mapping', 'GlyphSet', 'GlyphRange', and 'Glyph' elements.&lt;br /&gt;
Mapping elements are only of importance for static / bitmap fonts, any Mapping elements defined for a dynamic font should be ignored.&lt;br /&gt;
GlyphSet, GlyphRange, and Glyph elements are only valid for dynamic fonts.&lt;br /&gt;
&lt;br /&gt;
Font attributes&lt;br /&gt;
---------------&lt;br /&gt;
Version         - specifies the version of the resource file. Should be specified for all files, current CEGUI font version is: 3&lt;br /&gt;
Name		- the name that will be used to identify the Font within the system. (required).&lt;br /&gt;
Filename	- filename for the font.  For Static fonts this is an Imageset.  For Dynamic fonts this is a .ttf file. (required).&lt;br /&gt;
ResourceGroup - The resource group identifier to pass to the resource provider when loading the file.&lt;br /&gt;
Type		- Specifies the type of font.  Valid options are 'Static' or 'Dynamic' (required).&lt;br /&gt;
Size		- Specifies the point size for a dynamic font, ignored for Static fonts.  (optional, default=12).&lt;br /&gt;
FirstCodepoint	- Specifies the first codepoint to be available on the dynamic font.  (optional, default=32).&lt;br /&gt;
LastCodepoint	- Specifies the last codepoint to be available on the dynamic font.  (optional, default=127).&lt;br /&gt;
NativeHorzRes	- The horizontal screen resolution that the images were are intended to be displayed at (optional, default=640).&lt;br /&gt;
NativeVertRes	- The vertical screen resolution that the images were are intended to be displayed at (optional, default=480).&lt;br /&gt;
AutoScaled	- Boolean, states whether to scale imagery so it appears the same size at any resolution (optional, default=false).&lt;br /&gt;
AntiAlias	- Boolean, states whether the font should be anti-aliased, applies to dynamic fonts only.  (optional, default=true).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mapping Element&lt;br /&gt;
===============&lt;br /&gt;
Used for static fonts only, defines a mapping between a code-point and a Image on the associated Imageset.&lt;br /&gt;
A Mapping must be supplied for every codepoint that the font is to have available.  A Mapping has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Mapping attributes&lt;br /&gt;
------------------&lt;br /&gt;
Codepoint	- Unicode codepoint which should be mapped. (required).&lt;br /&gt;
Image		- Name of the image to map.  This image shold be defined for the Imageset specified in Filename for the Font.&lt;br /&gt;
HorzAdvance	- Number of pixels to advance the 'pen' position after rendering.  -1 indicates the values should be auto-calculated.  (optional, default=-1).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GlyphSet Element&lt;br /&gt;
================&lt;br /&gt;
Used for dynamic fonts only.  Defines a set of codepoints for which glyphs should be made available in the font.&lt;br /&gt;
Multiple GlyphSet elements may be specified.  A GlyphSet element has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
GlyphSet attributes&lt;br /&gt;
-------------------&lt;br /&gt;
Glyphs		- String defining the character / codepoint glyphs to be available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GlyphRange Element&lt;br /&gt;
==================&lt;br /&gt;
Used for dynamic fonts only.  Defines a range of codepoints for which glyphs should be made available in the font.&lt;br /&gt;
Multiple GlyphRange elements may be specified.  A GlyphRange element has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
GlyphRange attributes&lt;br /&gt;
---------------------&lt;br /&gt;
StartCodepoint	- U+ codepoint of the first glyph that is part of this range.&lt;br /&gt;
EndCodepoint	- U+ codepoint of the last glyph that is part of this range.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Glyph Element&lt;br /&gt;
=============&lt;br /&gt;
Used for dynamic fonts only.  Defines a singal codepoint for which a glyph should be made available in the font.&lt;br /&gt;
Multiple Glyph elements may be specified.  A Glyph element has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Glyph attributes&lt;br /&gt;
----------------&lt;br /&gt;
Codepoint	- U+ codepoint of the glyph to be added to the font.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;br /&gt;
[[Category:WIP]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Font_files&amp;diff=5395</id>
		<title>Font files</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Font_files&amp;diff=5395"/>
				<updated>2014-06-23T23:07:06Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.5}} {{VersionBadge|0.6}} {{VersionBadge|0.7}} {{VersionBadge|0.8}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For the time being, this has been copy-and-pasted directly from &amp;quot;readme.txt&amp;quot; in the XMLRefSchema directory of the CEGUI source code. Some prettier formatting along the lines of '''[[Scheme files]]''' would be nice.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Font files can define one of two types of font; a static bitmapped font based on an Imageset stored on disc, or a dynamically created font made from a true-type font file (.ttf).&lt;br /&gt;
&lt;br /&gt;
The Root element must be Font.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Font Element&lt;br /&gt;
============&lt;br /&gt;
Font is the root element, it has some attributes and optional 'Mapping', 'GlyphSet', 'GlyphRange', and 'Glyph' elements.&lt;br /&gt;
Mapping elements are only of importance for static / bitmap fonts, any Mapping elements defined for a dynamic font should be ignored.&lt;br /&gt;
GlyphSet, GlyphRange, and Glyph elements are only valid for dynamic fonts.&lt;br /&gt;
&lt;br /&gt;
Font attributes&lt;br /&gt;
---------------&lt;br /&gt;
Version: specifies the version of the resource file. Should be specified for all files, current CEGUI font version is: 3&lt;br /&gt;
Name		- the name that will be used to identify the Font within the system. (required).&lt;br /&gt;
Filename	- filename for the font.  For Static fonts this is an Imageset.  For Dynamic fonts this is a .ttf file. (required).&lt;br /&gt;
ResourceGroup - The resource group identifier to pass to the resource provider when loading the file.&lt;br /&gt;
Type		- Specifies the type of font.  Valid options are 'Static' or 'Dynamic' (required).&lt;br /&gt;
Size		- Specifies the point size for a dynamic font, ignored for Static fonts.  (optional, default=12).&lt;br /&gt;
FirstCodepoint	- Specifies the first codepoint to be available on the dynamic font.  (optional, default=32).&lt;br /&gt;
LastCodepoint	- Specifies the last codepoint to be available on the dynamic font.  (optional, default=127).&lt;br /&gt;
NativeHorzRes	- The horizontal screen resolution that the images were are intended to be displayed at (optional, default=640).&lt;br /&gt;
NativeVertRes	- The vertical screen resolution that the images were are intended to be displayed at (optional, default=480).&lt;br /&gt;
AutoScaled	- Boolean, states whether to scale imagery so it appears the same size at any resolution (optional, default=false).&lt;br /&gt;
AntiAlias	- Boolean, states whether the font should be anti-aliased, applies to dynamic fonts only.  (optional, default=true).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Mapping Element&lt;br /&gt;
===============&lt;br /&gt;
Used for static fonts only, defines a mapping between a code-point and a Image on the associated Imageset.&lt;br /&gt;
A Mapping must be supplied for every codepoint that the font is to have available.  A Mapping has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Mapping attributes&lt;br /&gt;
------------------&lt;br /&gt;
Codepoint	- Unicode codepoint which should be mapped. (required).&lt;br /&gt;
Image		- Name of the image to map.  This image shold be defined for the Imageset specified in Filename for the Font.&lt;br /&gt;
HorzAdvance	- Number of pixels to advance the 'pen' position after rendering.  -1 indicates the values should be auto-calculated.  (optional, default=-1).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GlyphSet Element&lt;br /&gt;
================&lt;br /&gt;
Used for dynamic fonts only.  Defines a set of codepoints for which glyphs should be made available in the font.&lt;br /&gt;
Multiple GlyphSet elements may be specified.  A GlyphSet element has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
GlyphSet attributes&lt;br /&gt;
-------------------&lt;br /&gt;
Glyphs		- String defining the character / codepoint glyphs to be available.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GlyphRange Element&lt;br /&gt;
==================&lt;br /&gt;
Used for dynamic fonts only.  Defines a range of codepoints for which glyphs should be made available in the font.&lt;br /&gt;
Multiple GlyphRange elements may be specified.  A GlyphRange element has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
GlyphRange attributes&lt;br /&gt;
---------------------&lt;br /&gt;
StartCodepoint	- U+ codepoint of the first glyph that is part of this range.&lt;br /&gt;
EndCodepoint	- U+ codepoint of the last glyph that is part of this range.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Glyph Element&lt;br /&gt;
=============&lt;br /&gt;
Used for dynamic fonts only.  Defines a singal codepoint for which a glyph should be made available in the font.&lt;br /&gt;
Multiple Glyph elements may be specified.  A Glyph element has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Glyph attributes&lt;br /&gt;
----------------&lt;br /&gt;
Codepoint	- U+ codepoint of the glyph to be added to the font.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;br /&gt;
[[Category:WIP]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Imageset_files&amp;diff=5394</id>
		<title>Imageset files</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Imageset_files&amp;diff=5394"/>
				<updated>2014-06-23T23:05:50Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For the time being, this has been copy-and-pasted directly from &amp;quot;readme.txt&amp;quot; in the XMLRefSchema directory of the CEGUI source code. Some prettier formatting along the lines of '''[[Scheme files]]''' would be nice.&lt;br /&gt;
&lt;br /&gt;
== Introduction ==&lt;br /&gt;
Imagesets define one or more images on a larger image (texture).&lt;br /&gt;
The root element must be Imageset.&lt;br /&gt;
&lt;br /&gt;
== Document structure ==&lt;br /&gt;
* '''Imageset'''&lt;br /&gt;
** '''Image Element'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Imageset Element ==&lt;br /&gt;
Has attributes and a collection of one or more Image elements.&lt;br /&gt;
&lt;br /&gt;
Imageset attributes:&lt;br /&gt;
* '''Version''' - specifies the version of the resource file. Should be specified for all files, current CEGUI imageset version is: 2&lt;br /&gt;
* '''Imagefile''' - Path to the image file containing the graphics. ''Required''.&lt;br /&gt;
* '''ResourceGroup''' - The resource group identifier to pass to the resource provider when loading the file.&lt;br /&gt;
* '''Name''' - the name that will be assigned to the Imageset in the GUI system. ''required''.&lt;br /&gt;
* '''NativeHorzRes''' - The horizontal screen resolution that the images were are intended to be displayed at. ''Optional, default=640''.&lt;br /&gt;
* '''NativeVertRes''' - The vertical screen resolution that the images were are intended to be displayed at. ''Optional, default=480''.&lt;br /&gt;
* '''AutoScaled''' - Boolean, states whether to scale imagery so it appears the same size as any resolution. ''Optional, default=false''.&lt;br /&gt;
&lt;br /&gt;
''Imageset'' is the root element and is the only &amp;quot;global&amp;quot; tag.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
  &amp;lt;Imageset Name=&amp;quot;MyLook&amp;quot; Imagefile=&amp;quot;MyLook.tga&amp;quot; NativeHorzRes=&amp;quot;800&amp;quot; NativeVertRes=&amp;quot;600&amp;quot; AutoScaled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    ... resources ...&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Imageset&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Image Element ==&lt;br /&gt;
Has attributes defining an sub-image area.  Can have no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Image attributes:&lt;br /&gt;
&lt;br /&gt;
* '''Name''' - The name that will be used to identify the image within the Imageset. ''Required''.&lt;br /&gt;
* '''XPos''' - X pixel co-ordinate of the top-left corner of the image on the texture. ''Required''.&lt;br /&gt;
* '''YPos''' - Y pixel co-ordinate of the top-left corner of the image on the texture. ''Required''.&lt;br /&gt;
* '''Width''' - Width of this image in pixels. ''Required''.&lt;br /&gt;
* '''Height''' - Height of this image in pixels. ''Required''.&lt;br /&gt;
* '''XOffset''' - Horizontal offset to apply when rendering. ''Optional, default=0''.&lt;br /&gt;
* '''YOffset''' - Vertical offset to apply when rendering. ''Optional, default=0''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
  &amp;lt;Imageset Name=&amp;quot;MyLook&amp;quot; Imagefile=&amp;quot;MyLook.tga&amp;quot; NativeHorzRes=&amp;quot;800&amp;quot; NativeVertRes=&amp;quot;600&amp;quot; AutoScaled=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
    &amp;lt;Image Name=&amp;quot;MyWidgetImage&amp;quot; XPos=&amp;quot;0&amp;quot; YPos=&amp;quot;0&amp;quot; Width=&amp;quot;64&amp;quot; Height=&amp;quot;64&amp;quot; /&amp;gt;&lt;br /&gt;
    ...&lt;br /&gt;
  &amp;lt;/Imageset&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;br /&gt;
[[Category:Update requested]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Scheme_files&amp;diff=5393</id>
		<title>Scheme files</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Scheme_files&amp;diff=5393"/>
				<updated>2014-06-23T23:04:27Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
CEGUI is pretty modular in many aspects. Resource loading, rendering, scripting and window-factories, can all be controlled by client modules.&lt;br /&gt;
The scheme file concerns resource loading.&lt;br /&gt;
&lt;br /&gt;
The first thing most users do when initialising CEGUI, is to load a scheme. This could for example be &amp;quot;../datafiles/schemes/TaharezLookSkin.scheme&amp;quot;. This scheme file is probably the most used currently, and will load the [[Falagard]] version of classic TaharezLook into the library.&lt;br /&gt;
&lt;br /&gt;
If one takes a closer look at this file, they'll see that it is a XML document, ready to be edited... The nice thing here is that it's no longer necessary to recompile, to change the resources to be loaded. Furthermore a scheme acts like a &amp;quot;resource package&amp;quot; as we can unload all resources that is loaded by a scheme given we know its name. From a coding perspective this is nice as it simplifies the resource management. All you have to create/destroy is the scheme it self. CEGUI worries about all the individual resources specified in the XML file for you...&lt;br /&gt;
&lt;br /&gt;
This document is largely based on the 'Readme.txt' file in the 'XMLRefSchema' directory of the source distribution by Paul himself.&lt;br /&gt;
&lt;br /&gt;
== Document structure ==&lt;br /&gt;
A CEGUI sheme follows a &amp;quot;strict&amp;quot; order dependent structure that looks like this:&lt;br /&gt;
&lt;br /&gt;
* '''GUIScheme'''&lt;br /&gt;
** '''Imageset'''&lt;br /&gt;
** '''ImagesetFromImage'''&lt;br /&gt;
** '''Font'''&lt;br /&gt;
** '''LookNFeel'''&lt;br /&gt;
** '''WindowSet'''&lt;br /&gt;
*** '''WindowFactory'''&lt;br /&gt;
** '''WindowRendererSet''' (CEGUI 0.5.X only)&lt;br /&gt;
*** '''WindowRendererFactory'''&lt;br /&gt;
** '''WindowAlias'''&lt;br /&gt;
** '''FalagardMapping'''&lt;br /&gt;
&lt;br /&gt;
All elements are optional and can be repeated. Two imagesets - for example - are after all a fairly common ;-)&lt;br /&gt;
&lt;br /&gt;
Each element will be described individually below.&lt;br /&gt;
&lt;br /&gt;
== GUIScheme ==&lt;br /&gt;
Root element. Has a name attribute, and a collection of sub-elements which can be Imageset, ImagesetFromFile, Font, LookNFeel, WindowSet, FalagardMapping and WindowAlias elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''Version''' - specifies the version of the resource file. Should be specified for all files, current CEGUI scheme version is: 5&lt;br /&gt;
* '''Name''' - Specifies the name that the scheme will use within the system. ''Required''.&lt;br /&gt;
&lt;br /&gt;
''GUIScheme'' is the root element and is the only &amp;quot;global&amp;quot; tag.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme Name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     ...&lt;br /&gt;
     ... resources ...&lt;br /&gt;
     ...&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All schemes will have this XML as all the &amp;quot;magic&amp;quot; goes inside it :-)&lt;br /&gt;
&lt;br /&gt;
=== Imageset ===&lt;br /&gt;
Specifies an Imageset to be loaded as part of this scheme. Has attributes but no sub-elements.&lt;br /&gt;
If an imageset with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''Name''' - The name of the Imageset. ''Required''.&lt;br /&gt;
* '''Filename''' - Filename of the Imageset file. If the imageset created by this file does not = Name above, an exception is thrown. ''Required''.&lt;br /&gt;
* '''ResourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme Name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;Imageset Name=&amp;quot;MyImages&amp;quot; Filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the file &amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; must define the imageset named &amp;quot;MyImages&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== ImagesetFromFile ===&lt;br /&gt;
Specifies an Imageset to be loaded as part of this scheme. Has attributes but no sub-elements.&lt;br /&gt;
If an imageset with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''Name''' - The name of the Imageset. ''Required''.&lt;br /&gt;
* '''Filename''' - Filename of the image file to load in order to create this Imageset. ''Required''.&lt;br /&gt;
* '''ResourceGroup''' - The resource group identifier to pass to the resource provider when loading the image file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme Name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;ImagesetFromFile Name=&amp;quot;MyBackground&amp;quot; Filename=&amp;quot;../datafiles/imagesets/MyBackground.tga&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the file &amp;quot;../datafiles/imagesets/MyBackground&amp;quot; is a Targa (.TGA) image file. By default an Imageset loaded like this defines a single image named '''full_image''' that covers the entire texture (the content of the image file).&lt;br /&gt;
&lt;br /&gt;
=== Font ===&lt;br /&gt;
Specifies a Font to be loaded as part of the scheme. Has attributes but no sub-elements.&lt;br /&gt;
If a font with the requested name already exists, the file specified is not loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''Name''' - The name of the Font ''Required''.&lt;br /&gt;
* '''Filename''' - Filename of the Font file. If the font created by this file does not = Name above, an exception is thrown. ''Required''.&lt;br /&gt;
* '''ResourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme Name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     '''&amp;lt;Font Name=&amp;quot;MyFont&amp;quot; Filename=&amp;quot;../datafiles/fonts/MyFont.font&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Font element always loads font XML files. These are not covered here.&lt;br /&gt;
&lt;br /&gt;
=== LookNFeel ===&lt;br /&gt;
Specifies a LookNFeel to be loaded as part of the scheme. Has attributes but no sub-elements.&lt;br /&gt;
The XML file loaded by this element may contain many widget looks which will all become available.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''Filename''' - Filename of the LookNFeel file to parse. ''Required''.&lt;br /&gt;
* '''ResourceGroup''' - The resource group identifier to pass to the resource provider when loading the file. ''Optional''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme Name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset Name=&amp;quot;MyImages&amp;quot; Filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;LookNFeel Filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Loading a look'n'feel specification is not enough. We must create a FalagardMapping as well. More on this soon. Just know that now the widget looks specified in MySkin.looknfeel are available to falagard mappings. At least the imageset we use in MySkin is available ;-)&lt;br /&gt;
&lt;br /&gt;
=== WindowSet ===&lt;br /&gt;
Specifies a module containing concrete GUI elements and their factories. Has attributes and zero or more WindowFactory sub-elements. That is you can optionally specify WindowFactory sub-elements. If they are omitted all available factories in the module are loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''Filename''' - Specifies the name of the loadable module (dll / .so / etc). ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme Name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset Name=&amp;quot;MyImages&amp;quot; Filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel Filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;WindowSet Filename=&amp;quot;CEGUIFalagardBase&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.4.X provides 3 windowsets. Falagard, WindowsLook and TaharezLook. The above sample code is only valid for CEGUI 0.4.X.&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.5.X provides no widget sets. All the core widgets are part of the CEGUIBase library. It's still there though as it allows user widget modules to be loaded dynamically.&lt;br /&gt;
&lt;br /&gt;
=== WindowRendererSet (CEGUI 0.5.X only) ===&lt;br /&gt;
Specifies a module containing WindowRenderer classes and their factories. Has attributes and zero or more WindowRendererFactory sub-elements. That is you can optionally specify WindowRendererFactory sub-elements. If they are omitted all available factories in the module are loaded.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''Filename''' - Specifies the name of the loadable module (dll / .so / etc). ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme Name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset Name=&amp;quot;MyImages&amp;quot; Filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel Filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     '''&amp;lt;WindowRendererSet Filename=&amp;quot;CEGUIFalagardWRBase&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
CEGUI 0.5.0 only provides one WindowRendererSet. Falagard. It's perfectly possible to write your own WindowRendererSet in C++. Take a look at the CEGUIFalagardWRBase module if you're curious :)&lt;br /&gt;
&lt;br /&gt;
=== WindowFactory ===&lt;br /&gt;
Specifies the factory name (GUI window type name) from the loadable module that is to be added to the list of available factories. Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''Name''' - Name of the factory / window type which is to be added.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme Name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset Name=&amp;quot;MyImages&amp;quot; Filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel Filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet Filename=&amp;quot;CEGUIFalagardBase&amp;quot;&amp;gt;&lt;br /&gt;
         '''&amp;lt;WindowFactory Name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;'''&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example we only load the &amp;quot;Falagard/Button&amp;quot; factory. If you only need a few widgets and not the whole set, this could save you some memory.&lt;br /&gt;
&lt;br /&gt;
=== FalagardMapping in CEGUI 0.4.X ===&lt;br /&gt;
Maps a look'n'feel to a window factory and assigns the result to a new window type, in effect creating a new window factory for a specific look'n'feel.&lt;br /&gt;
Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''WindowType''' - The name for the new &amp;quot;factory&amp;quot;. ''Required''.&lt;br /&gt;
* '''TargetType''' - The name of the target window factory which will have the look'n'feel assigned. ''Required''.&lt;br /&gt;
* '''LookNFeel''' - The name of the look'n'feel to use. That's the WidgetLook name from the [[Falagard]] XML. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme Name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset Name=&amp;quot;MyImages&amp;quot; Filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel Filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet Filename=&amp;quot;CEGUIFalagardBase&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;WindowFactory Name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
     '''&amp;lt;FalagardMapping WindowType=&amp;quot;My/Button&amp;quot; TargetType=&amp;quot;Falagard/Button&amp;quot; LookNFeel=&amp;quot;MyButton&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would be a proper scheme to use the look'n'feel created in [[The Beginners Guide to [[Falagard]] skinning - Part I]]. The new type of button window would in this case be available from code or XML layouts by the type name &amp;quot;My/Button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== FalagardMapping in CEGUI 0.5.X ===&lt;br /&gt;
Maps a look'n'feel to a window factory and assigns the result to a new window type, in effect creating a new window factory for a specific look'n'feel.&lt;br /&gt;
Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''WindowType''' - The name for the new &amp;quot;factory&amp;quot;. ''Required''.&lt;br /&gt;
* '''TargetType''' - The name of the target window factory which will have the look'n'feel assigned. ''Required''.&lt;br /&gt;
* '''LookNFeel''' - The name of the look'n'feel to use. That's the WidgetLook name from the [[Falagard]] XML. ''Required''.&lt;br /&gt;
* '''Renderer''' - Then name of the window renderer factory to use. This module implements the widget rendering code. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;
 &amp;lt;GUIScheme Name=&amp;quot;MyScheme&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;Imageset Name=&amp;quot;MyImages&amp;quot; Filename=&amp;quot;../datafiles/imagesets/MyImages.imageset&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;LookNFeel Filename=&amp;quot;../datafiles/looknfeel/MySkin.looknfeel&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;WindowSet Filename=&amp;quot;CEGUIFalagardWRBase&amp;quot;&amp;gt;&lt;br /&gt;
         &amp;lt;WindowFactory Name=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;/WindowSet&amp;gt;&lt;br /&gt;
     '''&amp;lt;FalagardMapping WindowType=&amp;quot;My/Button&amp;quot; TargetType=&amp;quot;CEGUI/PushButton&amp;quot; LookNFeel=&amp;quot;MyButton&amp;quot; Renderer=&amp;quot;Falagard/Button&amp;quot; /&amp;gt;'''&lt;br /&gt;
 &amp;lt;/GUIScheme&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would be a proper scheme to use the look'n'feel created in [[The Beginners Guide to [[Falagard]] skinning - Part I]]. The new type of button window would in this case be available from code or XML layouts by the type name &amp;quot;My/Button&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== WindowAlias ===&lt;br /&gt;
Specifies an alias for a given window factory type or falagard mapping. Has attributes but no sub-elements.&lt;br /&gt;
&lt;br /&gt;
Attributes:&lt;br /&gt;
* '''Alias''' - Name of the alias. This is the alternative name that 'Target' will be known by. ''Required''.&lt;br /&gt;
* '''Target''' - Name of the window factory type, falagard mapping or existing alias that is to (also) be known as 'Alias'. ''Required''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Discussion ==&lt;br /&gt;
The scheme is obviously a bit more than just loading resources. It also ties the resources together. All of it can be done in code, but using a scheme file is flexible, and avoids recompiling often.&lt;br /&gt;
&lt;br /&gt;
Schemes are especially useful for artists not familiar with C++ programming, as everything you &amp;quot;set up&amp;quot; in the scheme can be used from XML layouts.&lt;br /&gt;
With [[Falagard]] this means that you can totally customize the user interface if the program is properly configured to do so without ever talking to the developers ;)&lt;br /&gt;
&lt;br /&gt;
--[[User:lindquist]] 03:49, 14 Dec 2005 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Manuals]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Onscreen_feedback_effect&amp;diff=5391</id>
		<title>Onscreen feedback effect</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Onscreen_feedback_effect&amp;diff=5391"/>
				<updated>2014-06-19T22:25:04Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.8}}&lt;br /&gt;
&lt;br /&gt;
This is a simple tutorial on how to make a cool effect for Onscreen Feedback for players in a game.&lt;br /&gt;
&lt;br /&gt;
Examples are when a player gets hit, there is some indicator of the attack (often in First Person Shooters there is some sense of which direction the attack came from, but this won't get that detailed).&lt;br /&gt;
&lt;br /&gt;
This tutorial comes from a vampire game; when the player attacks an NPC to suck his/her blood there is an onscreen effect to indicate the player is successfully feeding off the NPC, this is done by having blood fade on and off the screen.&lt;br /&gt;
&lt;br /&gt;
You could also fade the entire screen to black for transition effects.&lt;br /&gt;
&lt;br /&gt;
First some variables:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::Window *BloodScreen; // Window to display blood&lt;br /&gt;
bool showBlood; // Bool as to whether blood is shown or not&lt;br /&gt;
float bloodTime; // Amount of time blood will be visible on screen&lt;br /&gt;
float bloodCount; // Used to set alpha value for fading on/off screen&lt;br /&gt;
bool bloodUp; // Whether to add to or subtract from bloodCount&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are pretty straightforward.&lt;br /&gt;
&lt;br /&gt;
These variables need to be setup within either a constructor or initializing method:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
bloodCount = 0.0;&lt;br /&gt;
bloodUp = false;&lt;br /&gt;
showBlood = false;&lt;br /&gt;
&lt;br /&gt;
if(!BloodScreen) {&lt;br /&gt;
    BloodScreen = CEGUI::WindowManager::getSingleton().createWindow(&amp;quot;TaharezLook/StaticImage&amp;quot;,&amp;quot;BloodUI&amp;quot;);&lt;br /&gt;
    BloodScreen-&amp;gt;setPosition(CEGUI::UVector2(CEGUI::UDim(0, 0), CEGUI::UDim(0, 0)));&lt;br /&gt;
    BloodScreen-&amp;gt;setSize(CEGUI::USize(CEGUI::UDim(1, 0), CEGUI::UDim(1, 0)));&lt;br /&gt;
    BloodScreen-&amp;gt;setProperty(&amp;quot;Image&amp;quot;, &amp;quot;CustomImages/Blood&amp;quot;);&lt;br /&gt;
    BloodScreen-&amp;gt;setAlpha(0);&lt;br /&gt;
    BloodScreen-&amp;gt;setVisible(false);&lt;br /&gt;
    ceguiContext-&amp;gt;getRootWindow()-&amp;gt;addChild(BloodScreen);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up the window to display the blood onscreen; it simply uses a StaticImage in this case from TaharezLook (though you can customize one).  The trouble with TaharezLook/StaticImage is that it will have a border around your image as well as a background.  You will probably want to make a custom one by simply removing the frames and background.  A hacked up version of the TaharezLook will be posted at the end.&lt;br /&gt;
&lt;br /&gt;
Next the size is set by setting the first parameter of each UDim within the USize to 1, this will cause the blood effect to take up the entire screen.  Because of this, the position should be top left at 0, 0.&lt;br /&gt;
&lt;br /&gt;
Next an image property is set, which is an image made to show on the screen.  You'll want transparency on the image so it doesn't hide too much on screen as this will frustrate players.&lt;br /&gt;
&lt;br /&gt;
Next within a logical update method in your game, you need to check whether the effect needs to be executed:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void Player::update(const flooat timeSinceLastFrame) {&lt;br /&gt;
...&lt;br /&gt;
if (PLAYER_FEED) { // Check if player attempted to feed&lt;br /&gt;
    disableAction(PLAYER_FEED); // Disable feeding action&lt;br /&gt;
    feedSuccess(); // Player has fed&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (showBlood)&lt;br /&gt;
    displayBlood(timeSinceLastFrame);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is within the player update method to see if the player has attempted to feed off an NPC, if the player has, then PLAYER_FEED will be true; so you will need to change this to handle events in whichever way you've built you game.&lt;br /&gt;
&lt;br /&gt;
Next is the feedSuccess method:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void Player::feedSuccess() {&lt;br /&gt;
    BloodScreen-&amp;gt;setVisible(true); // Set BloodScreen visibility to true&lt;br /&gt;
    showBlood = true; // show blood is true&lt;br /&gt;
    bloodTime = getCurrentTime() + 4000;  // Show blood on screen for 4000 milliseconds&lt;br /&gt;
    bloodCount = 0.0; // Blood is off, so it will fade on&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This method will prepare the related variables so the blood can start to be shown on the screen.&lt;br /&gt;
&lt;br /&gt;
And finally the display blood method:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void Player::displayBlood(const float timeSinceLastFrame) {&lt;br /&gt;
    if (bloodTime &amp;lt; getCurrentTime()) { // Check if alotted time has passed&lt;br /&gt;
        showBlood = false;              // Set showBlood to false&lt;br /&gt;
        BloodScreen-&amp;gt;setVisible(false); // Hide blood window&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (bloodCount &amp;lt;= 0)  // If blood is completely transparent, turn alpha up&lt;br /&gt;
        bloodUp = true;&lt;br /&gt;
    else if (bloodCount &amp;gt;= 1.0) // Otherwise turn alpha down&lt;br /&gt;
        bloodUp = false;&lt;br /&gt;
    if (bloodUp)&lt;br /&gt;
        bloodCount += 0.4 * timeSinceLastFrame;&lt;br /&gt;
    else&lt;br /&gt;
        bloodCount -= 0.4 * timeSinceLastFrame;&lt;br /&gt;
    BloodScreen-&amp;gt;setAlpha(bloodCount);&lt;br /&gt;
    BloodScreen-&amp;gt;invalidate();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Essentially here we check if enough time has passed for displaying the onscreen effect, if it has then we turn it off.&lt;br /&gt;
&lt;br /&gt;
Otherwise we need to check if the alpha of the onscreen effect needs to increase or decrease, this allows for the fade on/off effect.&lt;br /&gt;
&lt;br /&gt;
Next the alpha level is calculated depending on how much time has passed.&lt;br /&gt;
The alpha level of the window is set and then it's invalidated.&lt;br /&gt;
&lt;br /&gt;
The invalidate() tells CEGUI this window has changed and needs to be redrawn, otherwise nothing will appear to happen.&lt;br /&gt;
&lt;br /&gt;
And all done.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Onscreen_feedback_effect&amp;diff=5390</id>
		<title>Onscreen feedback effect</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Onscreen_feedback_effect&amp;diff=5390"/>
				<updated>2014-06-19T22:24:36Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a simple tutorial on how to make a cool effect for Onscreen Feedback for players in a game.&lt;br /&gt;
&lt;br /&gt;
Examples are when a player gets hit, there is some indicator of the attack (often in First Person Shooters there is some sense of which direction the attack came from, but this won't get that detailed).&lt;br /&gt;
&lt;br /&gt;
This tutorial comes from a vampire game; when the player attacks an NPC to suck his/her blood there is an onscreen effect to indicate the player is successfully feeding off the NPC, this is done by having blood fade on and off the screen.&lt;br /&gt;
&lt;br /&gt;
You could also fade the entire screen to black for transition effects.&lt;br /&gt;
&lt;br /&gt;
First some variables:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::Window *BloodScreen; // Window to display blood&lt;br /&gt;
bool showBlood; // Bool as to whether blood is shown or not&lt;br /&gt;
float bloodTime; // Amount of time blood will be visible on screen&lt;br /&gt;
float bloodCount; // Used to set alpha value for fading on/off screen&lt;br /&gt;
bool bloodUp; // Whether to add to or subtract from bloodCount&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are pretty straightforward.&lt;br /&gt;
&lt;br /&gt;
These variables need to be setup within either a constructor or initializing method:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
bloodCount = 0.0;&lt;br /&gt;
bloodUp = false;&lt;br /&gt;
showBlood = false;&lt;br /&gt;
&lt;br /&gt;
if(!BloodScreen) {&lt;br /&gt;
    BloodScreen = CEGUI::WindowManager::getSingleton().createWindow(&amp;quot;TaharezLook/StaticImage&amp;quot;,&amp;quot;BloodUI&amp;quot;);&lt;br /&gt;
    BloodScreen-&amp;gt;setPosition(CEGUI::UVector2(CEGUI::UDim(0, 0), CEGUI::UDim(0, 0)));&lt;br /&gt;
    BloodScreen-&amp;gt;setSize(CEGUI::USize(CEGUI::UDim(1, 0), CEGUI::UDim(1, 0)));&lt;br /&gt;
    BloodScreen-&amp;gt;setProperty(&amp;quot;Image&amp;quot;, &amp;quot;CustomImages/Blood&amp;quot;);&lt;br /&gt;
    BloodScreen-&amp;gt;setAlpha(0);&lt;br /&gt;
    BloodScreen-&amp;gt;setVisible(false);&lt;br /&gt;
    ceguiContext-&amp;gt;getRootWindow()-&amp;gt;addChild(BloodScreen);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up the window to display the blood onscreen; it simply uses a StaticImage in this case from TaharezLook (though you can customize one).  The trouble with TaharezLook/StaticImage is that it will have a border around your image as well as a background.  You will probably want to make a custom one by simply removing the frames and background.  A hacked up version of the TaharezLook will be posted at the end.&lt;br /&gt;
&lt;br /&gt;
Next the size is set by setting the first parameter of each UDim within the USize to 1, this will cause the blood effect to take up the entire screen.  Because of this, the position should be top left at 0, 0.&lt;br /&gt;
&lt;br /&gt;
Next an image property is set, which is an image made to show on the screen.  You'll want transparency on the image so it doesn't hide too much on screen as this will frustrate players.&lt;br /&gt;
&lt;br /&gt;
Next within a logical update method in your game, you need to check whether the effect needs to be executed:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void Player::update(const flooat timeSinceLastFrame) {&lt;br /&gt;
...&lt;br /&gt;
if (PLAYER_FEED) { // Check if player attempted to feed&lt;br /&gt;
    disableAction(PLAYER_FEED); // Disable feeding action&lt;br /&gt;
    feedSuccess(); // Player has fed&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (showBlood)&lt;br /&gt;
    displayBlood(timeSinceLastFrame);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is within the player update method to see if the player has attempted to feed off an NPC, if the player has, then PLAYER_FEED will be true; so you will need to change this to handle events in whichever way you've built you game.&lt;br /&gt;
&lt;br /&gt;
Next is the feedSuccess method:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void Player::feedSuccess() {&lt;br /&gt;
    BloodScreen-&amp;gt;setVisible(true); // Set BloodScreen visibility to true&lt;br /&gt;
    showBlood = true; // show blood is true&lt;br /&gt;
    bloodTime = getCurrentTime() + 4000;  // Show blood on screen for 4000 milliseconds&lt;br /&gt;
    bloodCount = 0.0; // Blood is off, so it will fade on&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This method will prepare the related variables so the blood can start to be shown on the screen.&lt;br /&gt;
&lt;br /&gt;
And finally the display blood method:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void Player::displayBlood(const float timeSinceLastFrame) {&lt;br /&gt;
    if (bloodTime &amp;lt; getCurrentTime()) { // Check if alotted time has passed&lt;br /&gt;
        showBlood = false;              // Set showBlood to false&lt;br /&gt;
        BloodScreen-&amp;gt;setVisible(false); // Hide blood window&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (bloodCount &amp;lt;= 0)  // If blood is completely transparent, turn alpha up&lt;br /&gt;
        bloodUp = true;&lt;br /&gt;
    else if (bloodCount &amp;gt;= 1.0) // Otherwise turn alpha down&lt;br /&gt;
        bloodUp = false;&lt;br /&gt;
    if (bloodUp)&lt;br /&gt;
        bloodCount += 0.4 * timeSinceLastFrame;&lt;br /&gt;
    else&lt;br /&gt;
        bloodCount -= 0.4 * timeSinceLastFrame;&lt;br /&gt;
    BloodScreen-&amp;gt;setAlpha(bloodCount);&lt;br /&gt;
    BloodScreen-&amp;gt;invalidate();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Essentially here we check if enough time has passed for displaying the onscreen effect, if it has then we turn it off.&lt;br /&gt;
&lt;br /&gt;
Otherwise we need to check if the alpha of the onscreen effect needs to increase or decrease, this allows for the fade on/off effect.&lt;br /&gt;
&lt;br /&gt;
Next the alpha level is calculated depending on how much time has passed.&lt;br /&gt;
The alpha level of the window is set and then it's invalidated.&lt;br /&gt;
&lt;br /&gt;
The invalidate() tells CEGUI this window has changed and needs to be redrawn, otherwise nothing will appear to happen.&lt;br /&gt;
&lt;br /&gt;
And all done.&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=Onscreen_feedback_effect&amp;diff=5389</id>
		<title>Onscreen feedback effect</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=Onscreen_feedback_effect&amp;diff=5389"/>
				<updated>2014-06-19T22:20:59Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: Created page with &amp;quot;This is a simple tutorial on how to make a cool effect for Onscreen Feedback for players in a game.  Examples are when a player gets hit, there is some indicator of the attack...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a simple tutorial on how to make a cool effect for Onscreen Feedback for players in a game.&lt;br /&gt;
&lt;br /&gt;
Examples are when a player gets hit, there is some indicator of the attack (often in First Person Shooters there is some sense of which direction the attack came from, but this won't get that detailed).&lt;br /&gt;
&lt;br /&gt;
This tutorial comes from a vampire game; when the player attacks an NPC to suck his/her blood there is an onscreen effect to indicate the player is successfully feeding off the NPC, this is done by having blood fade on and off the screen.&lt;br /&gt;
&lt;br /&gt;
You could also fade the entire screen to black for transition effects.&lt;br /&gt;
&lt;br /&gt;
First some variables:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::Window *BloodScreen; // Window to display blood&lt;br /&gt;
bool showBlood; // Bool as to whether blood is shown or not&lt;br /&gt;
float bloodTime; // Amount of time blood will be visible on screen&lt;br /&gt;
float bloodCount; // Used to set alpha value for fading on/off screen&lt;br /&gt;
bool bloodUp; // Whether to add to or subtract from bloodCount&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
These are pretty straightforward.&lt;br /&gt;
&lt;br /&gt;
These variables need to be setup within either a constructor or initializing method:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
bloodCount = 0.0;&lt;br /&gt;
bloodUp = false;&lt;br /&gt;
showBlood = false;&lt;br /&gt;
&lt;br /&gt;
if(!BloodScreen) {&lt;br /&gt;
    BloodScreen = CEGUI::WindowManager::getSingleton().createWindow(&amp;quot;TaharezLook/StaticImage&amp;quot;,&amp;quot;BloodUI&amp;quot;);&lt;br /&gt;
    BloodScreen-&amp;gt;setPosition(CEGUI::UVector2(CEGUI::UDim(0, 0), CEGUI::UDim(0, 0)));&lt;br /&gt;
    BloodScreen-&amp;gt;setSize(CEGUI::USize(CEGUI::UDim(1, 0), CEGUI::UDim(1, 0)));&lt;br /&gt;
    BloodScreen-&amp;gt;setProperty(&amp;quot;Image&amp;quot;, &amp;quot;CustomImages/Blood&amp;quot;);&lt;br /&gt;
    BloodScreen-&amp;gt;setAlpha(0);&lt;br /&gt;
    BloodScreen-&amp;gt;setVisible(false);&lt;br /&gt;
    ceguiContext-&amp;gt;getRootWindow()-&amp;gt;addChild(BloodScreen);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up the window to display the blood onscreen; it simply uses a StaticImage in this case from TaharezLook (though you can customize one).  The trouble with TaharezLook/StaticImage is that it will have a border around your image as well as a background.  You will probably want to make a custom one by simply removing the frames and background.  A hacked up version of the TaharezLook will be posted at the end.&lt;br /&gt;
&lt;br /&gt;
Next the size is set by setting the first parameter of each UDim within the USize to 1, this will cause the blood effect to take up the entire screen.  Because of this, the position should be top left at 0, 0.&lt;br /&gt;
&lt;br /&gt;
Next an image property is set, which is an image made to show on the screen.  You'll want transparency on the image so it doesn't hide too much on screen as this will frustrate players.&lt;br /&gt;
&lt;br /&gt;
Next within a logical update method in your game, you need to check whether the effect needs to be executed:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void Player::update(const flooat timeSinceLastFrame) {&lt;br /&gt;
...&lt;br /&gt;
if (PLAYER_FEED) { // Check if player attempted to feed&lt;br /&gt;
    disableAction(PLAYER_FEED); // Disable feeding action&lt;br /&gt;
    feedSuccess(); // Player has fed&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if (showBlood)&lt;br /&gt;
    displayBlood(timeSinceLastFrame);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is within the player update method to see if the player has attempted to feed off an NPC, if the player has, then PLAYER_FEED will be true; so you will need to change this to handle events in whichever way you've built you game.&lt;br /&gt;
&lt;br /&gt;
Next is the feedSuccess method:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void Player::feedSuccess() {&lt;br /&gt;
    BloodScreen-&amp;gt;setVisible(true); // Set BloodScreen visibility to true&lt;br /&gt;
    showBlood = true; // show blood is true&lt;br /&gt;
    bloodTime = getCurrentTime() + 4000;  // Show blood on screen for 4000 milliseconds&lt;br /&gt;
    bloodCount = 0.0; // Blood is off, so it will fade on&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This method will prepare the related variables so the blood can start to be shown on the screen.&lt;br /&gt;
&lt;br /&gt;
And finally the display blood method:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void Player::displayBlood(const float timeSinceLastFrame) {&lt;br /&gt;
    if (bloodTime &amp;lt; getCurrentTime()) { // Check if alotted time has passed&lt;br /&gt;
        showBlood = false;              // Set showBlood to false&lt;br /&gt;
        BloodScreen-&amp;gt;setVisible(false); // Hide blood window&lt;br /&gt;
        return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if (bloodCount &amp;lt;= 0)  // If blood is completely transparent, turn alpha up&lt;br /&gt;
        bloodUp = true;&lt;br /&gt;
    else if (bloodCount &amp;gt;= 1.0) // Otherwise turn alpha down&lt;br /&gt;
        bloodUp = false;&lt;br /&gt;
    if (bloodUp)&lt;br /&gt;
        bloodCount += 0.4 * timeSinceLastFrame;&lt;br /&gt;
    else&lt;br /&gt;
        bloodCount -= 0.4 * timeSinceLastFrame;&lt;br /&gt;
    BloodScreen-&amp;gt;setAlpha(bloodCount);&lt;br /&gt;
    BloodScreen-&amp;gt;invalidate();&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Essentially here we check if enough time has passed for displaying the onscreen effect, if it has then we turn it off.&lt;br /&gt;
&lt;br /&gt;
Otherwise we need to check if the alpha of the onscreen effect needs to increase or decrease, this allows for the fade on/off effect.&lt;br /&gt;
&lt;br /&gt;
Next the alpha level is calculated depending on how much time has passed.&lt;br /&gt;
The alpha level of the window is set and then it's invalidated.&lt;br /&gt;
&lt;br /&gt;
The invalidate() tells CEGUI this window has changed and needs to be redrawn, otherwise nothing will appear to happen.&lt;br /&gt;
&lt;br /&gt;
And all done.&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	<entry>
		<id>http://cegui.org.uk/wiki/index.php?title=CEGUI_In_Practice_-_Managing_input&amp;diff=5236</id>
		<title>CEGUI In Practice - Managing input</title>
		<link rel="alternate" type="text/html" href="http://cegui.org.uk/wiki/index.php?title=CEGUI_In_Practice_-_Managing_input&amp;diff=5236"/>
				<updated>2014-04-12T02:46:52Z</updated>
		
		<summary type="html">&lt;p&gt;Thomas: /* On ward! */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{VersionBadge|0.8}}&lt;br /&gt;
{{Series|CEGUI In Practice|3}}&lt;br /&gt;
&lt;br /&gt;
== CEGUI In-Practice ==&lt;br /&gt;
&lt;br /&gt;
Once again Welcome back! In this tutorial we will learn how to interact with the CEGUI System at runtime, a VERY useful feature to have for a Graphical User '''Interface'''! &lt;br /&gt;
&lt;br /&gt;
CEGUI Has been designed to work on many systems, using many different renderers. As such it is tied to no particular input system. Unfortunately for us to demonstrate how to interact with CEGUI, we need to pick one and USE it don't we? So I have decided to use OIS [http://sourceforge.net/projects/wgois/]. Although I will attempt to keep OIS Specific functions and structures seperate, if they slip in, there is the reference to the system I'm using.&lt;br /&gt;
&lt;br /&gt;
==== Input Injection ====&lt;br /&gt;
&lt;br /&gt;
The first thing to note, is that not surprisingly CEGUI has made it easy to deal with inputing user actions into CEGUI. Whenever an action happens (User typing, hitting Escape, clicking a button) CEGUI will need to be informed about it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
CEGUI::System::getSingleton().getDefaultGUIContext().injectKeyDown(uint key_code); // Tells CEGUI Key has been Pressed&lt;br /&gt;
CEGUI::System::getSingleton().getDefaultGUIContext().injectKeyUp(uint key_code); // Tells CEGUI Key has been Released&lt;br /&gt;
&lt;br /&gt;
CEGUI::System::getSingleton().getDefaultGUIContext().injectChar(utf32 code_point); &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Inject keydown/up are good for sending Shift, controls, enters, etc. While the injectChar is pretty self explanatory for what it means, it injects a 'letter'.&lt;br /&gt;
&lt;br /&gt;
Handling the mouse works in a similiar method as above. The following code shows how you would inform CEGUI about a Left Mouse Button Keypress.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonDown(CEGUI::MouseButton::LeftButton);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As you can imagine, there is a injectMouseButtonUp() as well for letting CEGUI know when the mouse is released.&lt;br /&gt;
&lt;br /&gt;
And what about when the mouse itself moves? Of course thats covered&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseMove(float delta_x, float delta_y);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The delta is in Screen pixels that the mouse moved since the last CEGUI Update. &lt;br /&gt;
&lt;br /&gt;
Up until know, we haven't actually given CEGUI any processor time. If we're going to be moving a mouse, or clicking buttons, we're going to want CEGUI to display these actions. So we need to let CEGUI know how much time has passed since its last render.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;CEGUI::System::getSingleton().injectTimePulse(float timeElapsed);&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows you to inject a time pulse, based on the number of Seconds that have passed. However often you update CEGUI is up to you, but most games will want to update the GUI by injectingTime pulses during every update cycle. If you're building more of a Tool Application you might not need constant updates.&lt;br /&gt;
&lt;br /&gt;
==== On ward! ====&lt;br /&gt;
&lt;br /&gt;
I'm going to assume that you are using OIS and are knowledgable about its uses. Here are two functions which will allow you to interact with CEGUI&lt;br /&gt;
&lt;br /&gt;
The following will input keypresses when typing. It injects the key down and up actions (By key code) and the characters that associate with those keypresses.&lt;br /&gt;
&lt;br /&gt;
Note: OIS key code needs to be cast to CEGUI for this to work.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void InjectOISKey(bool bButtonDown, OIS::KeyEvent inKey)&lt;br /&gt;
{&lt;br /&gt;
	if (bButtonDown)&lt;br /&gt;
	{&lt;br /&gt;
		CEGUI::System::getSingleton().getDefaultGUIContext().injectKeyDown((CEGUI::Key::Scan)inKey.key);&lt;br /&gt;
		CEGUI::System::getSingleton().getDefaultGUIContext().injectChar(inKey.text);&lt;br /&gt;
	}&lt;br /&gt;
	else&lt;br /&gt;
	{&lt;br /&gt;
		CEGUI::System::getSingleton().getDefaultGUIContext().injectKeyUp((CEGUI::Key::Scan)inKey.key);&lt;br /&gt;
	}&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following function will handle injection of OIS Mouse Button presses and releases&lt;br /&gt;
&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
void InjectOISMouseButton(bool bButtonDown, OIS::MouseButtonID inButton)&lt;br /&gt;
{&lt;br /&gt;
	if (bButtonDown == true)&lt;br /&gt;
	{&lt;br /&gt;
		switch (inButton)&lt;br /&gt;
		{&lt;br /&gt;
		case OIS::MB_Left:&lt;br /&gt;
			CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonDown(CEGUI::LeftButton);&lt;br /&gt;
			break;&lt;br /&gt;
		case OIS::MB_Middle:&lt;br /&gt;
			CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonDown(CEGUI::MiddleButton);&lt;br /&gt;
			break;&lt;br /&gt;
		case OIS::MB_Right:&lt;br /&gt;
			CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonDown(CEGUI::RightButton);&lt;br /&gt;
			break;&lt;br /&gt;
		case OIS::MB_Button3:&lt;br /&gt;
			CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonDown(CEGUI::X1Button);&lt;br /&gt;
			break;&lt;br /&gt;
		case OIS::MB_Button4:&lt;br /&gt;
			CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonDown(CEGUI::X2Button);&lt;br /&gt;
			break;&lt;br /&gt;
		default:	&lt;br /&gt;
			break;&lt;br /&gt;
&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	else // bButtonDown = false&lt;br /&gt;
	{&lt;br /&gt;
		switch (inButton)&lt;br /&gt;
		{&lt;br /&gt;
		case OIS::MB_Left:&lt;br /&gt;
			CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonUp(CEGUI::LeftButton);&lt;br /&gt;
			break;&lt;br /&gt;
		case OIS::MB_Middle:&lt;br /&gt;
			CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonUp(CEGUI::MiddleButton);&lt;br /&gt;
			break;&lt;br /&gt;
		case OIS::MB_Right:&lt;br /&gt;
			CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonUp(CEGUI::RightButton);&lt;br /&gt;
			break;&lt;br /&gt;
		case OIS::MB_Button3:&lt;br /&gt;
			CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonUp(CEGUI::X1Button);&lt;br /&gt;
			break;&lt;br /&gt;
		case OIS::MB_Button4:&lt;br /&gt;
			CEGUI::System::getSingleton().getDefaultGUIContext().injectMouseButtonUp(CEGUI::X2Button);&lt;br /&gt;
			break;&lt;br /&gt;
		default:	&lt;br /&gt;
			break;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This above function will Convert a OIS Input for the mouse and change it to CEGUI. Right now the codes match, but if they ever change it will provide an example of how to use OIS with CEGUI.&lt;br /&gt;
&lt;br /&gt;
==== Conclusion ====&lt;br /&gt;
&lt;br /&gt;
Understandably this section is a little quicker. But it gives you information about how to start interacting with CEGUI. The next tutorial will teach us how to actually deal with keypresses and make interesting things happen. Until then!&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorials]]&lt;/div&gt;</summary>
		<author><name>Thomas</name></author>	</entry>

	</feed>