Crazy Eddie's GUI System 0.8.7
System.h
1/***********************************************************************
2 created: 20/2/2004
3 author: Paul D Turner
4
5 purpose: Defines interface for main GUI system class
6*************************************************************************/
7/***************************************************************************
8 * Copyright (C) 2004 - 2012 Paul D Turner & The CEGUI Development Team
9 *
10 * Permission is hereby granted, free of charge, to any person obtaining
11 * a copy of this software and associated documentation files (the
12 * "Software"), to deal in the Software without restriction, including
13 * without limitation the rights to use, copy, modify, merge, publish,
14 * distribute, sublicense, and/or sell copies of the Software, and to
15 * permit persons to whom the Software is furnished to do so, subject to
16 * the following conditions:
17 *
18 * The above copyright notice and this permission notice shall be
19 * included in all copies or substantial portions of the Software.
20 *
21 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27 * OTHER DEALINGS IN THE SOFTWARE.
28 ***************************************************************************/
29#ifndef _CEGUISystem_h_
30#define _CEGUISystem_h_
31
32#include "CEGUI/Base.h"
33#include "CEGUI/String.h"
34#include "CEGUI/Singleton.h"
35#include "CEGUI/EventSet.h"
36#include "CEGUI/Renderer.h"
37#include "CEGUI/InputEvent.h"
38#include "CEGUI/ResourceProvider.h"
39#include <vector>
40
41#if defined(__WIN32__) || defined(_WIN32)
42# include "CEGUI/Win32StringTranscoder.h"
43#else
44# include "CEGUI/IconvStringTranscoder.h"
45#endif
46
47#if defined(_MSC_VER)
48# pragma warning(push)
49# pragma warning(disable : 4275)
50# pragma warning(disable : 4251)
51#endif
52
53
54// Start of CEGUI namespace section
55namespace CEGUI
56{
65class CEGUIEXPORT System :
66 public Singleton<System>,
67 public EventSet,
68 public AllocatedObject<System>
69{
70public:
71 static const String EventNamespace;
72
73 /*************************************************************************
74 Constants
75 *************************************************************************/
76 // event names
87
88 /*************************************************************************
89 Construction and Destruction
90 *************************************************************************/
123 static System& create(Renderer& renderer,
124 ResourceProvider* resourceProvider = 0,
125 XMLParser* xmlParser = 0,
126 ImageCodec* imageCodec = 0,
127 ScriptModule* scriptModule = 0,
128 const String& configFile = "",
129 const String& logFile = "CEGUI.log",
130 const int abi = CEGUI_VERSION_ABI);
131
133 static void destroy();
134
143 static unsigned int getMajorVersion();
144
153 static unsigned int getMinorVersion();
154
163 static unsigned int getPatchVersion();
164
173 static const String& getVersion();
174
183 static const String& getVerboseVersion();
184
192 Renderer* getRenderer(void) const {return d_renderer;}
193
194
202 static System& getSingleton(void);
203
204
212 static System* getSingletonPtr(void);
213
218 Clipboard* getClipboard() const {return d_clipboard;}
219
220 GUIContext& getDefaultGUIContext() const;
221
229
230
239
250 void setScriptingModule(ScriptModule* scriptModule);
251
260
271 void executeScriptFile(const String& filename, const String& resourceGroup = "") const;
272
273
285 int executeScriptGlobal(const String& function_name) const;
286
287
298 void executeScriptString(const String& str) const;
299
300
313 void setXMLParser(const String& parserName);
314
332 void setXMLParser(XMLParser* parser);
333
338 XMLParser* getXMLParser(void) const { return d_xmlParser; }
339
340
385 static void setDefaultXMLParserName(const String& parserName);
386
397
403
408 void setImageCodec(const String& codecName);
409
421
426 static void setDefaultImageCodecName(const String& codecName);
427
433
451 void notifyDisplaySizeChanged(const Sizef& new_size);
452
467
483
495
510
513
515 bool injectTimePulse(float timeElapsed);
516
517 GUIContext& createGUIContext(RenderTarget& rt);
518 void destroyGUIContext(GUIContext& context);
519
529
532
534 static void performVersionTest(const int expected, const int received,
535 const String& func);
536
537private:
538 // unimplemented constructors / assignment
539 System(const System& obj);
540 System& operator=(const System& obj);
541
542protected:
543 /*************************************************************************
544 Implementation Functions
545 *************************************************************************/
575 System(Renderer& renderer, ResourceProvider* resourceProvider,
576 XMLParser* xmlParser, ImageCodec* imageCodec,
577 ScriptModule* scriptModule, const String& configFile,
578 const String& logFile);
579
584 ~System(void);
585
588
591
594
597
600
602 void setupImageCodec(const String& codecName);
603
606
609
610 /*************************************************************************
611 Implementation Data
612 *************************************************************************/
615 bool d_ourResourceProvider;
616
618
619 // scripting
622
625 DynamicModule* d_parserModule;
626
628
643
644 typedef std::vector<GUIContext* CEGUI_VECTOR_ALLOC(GUIContext*)> GUIContextCollection;
645 GUIContextCollection d_guiContexts;
647#if defined(__WIN32__) || defined(_WIN32)
648 static const Win32StringTranscoder d_stringTranscoder;
649#else
651#endif
652};
653
654} // End of CEGUI namespace section
655
656
657#if defined(_MSC_VER)
658# pragma warning(pop)
659#endif
660
661#endif // end of guard _CEGUISystem_h_
Definition: MemoryAllocatedObject.h:110
Defines a clipboard handling class.
Definition: Clipboard.h:84
Class that wraps and gives access to a dynamically linked module (.dll, .so, etc.....
Definition: DynamicModule.h:43
Interface providing event signaling and handling.
Definition: EventSet.h:167
Definition: GUIContext.h:70
Implementation of StringTranscoder that uses iconv.
Definition: IconvStringTranscoder.h:37
Abstract ImageLoader class. An image loader encapsulate the loading of a texture.
Definition: ImageCodec.h:47
Interface for Regex matching support classes.
Definition: RegexMatcher.h:41
Defines interface to some surface that can be rendered to. Concrete instances of objects that impleme...
Definition: RenderTarget.h:60
Specifies interface for classes that parse text into RenderedString objects.
Definition: RenderedStringParser.h:39
Abstract class defining the basic required interface for Renderer objects.
Definition: Renderer.h:84
Abstract class that defines the required interface for all resource provider sub-classes.
Definition: ResourceProvider.h:49
Abstract interface required for all scripting support modules to be used with the CEGUI system.
Definition: ScriptModule.h:47
Definition: Singleton.h:56
Interface for a string transcoding utility. Instances of classes that implement this interface can be...
Definition: StringTranscoder.h:43
String class used within the GUI system.
Definition: String.h:64
The System class is the CEGUI class that provides access to all other elements in this system.
Definition: System.h:69
static const String getDefaultXMLParserName()
Return the name of the currently set default xml parser module.
void setImageCodec(ImageCodec &codec)
Set the image codec to use from an existing image codec.
bool d_ourImageCodec
true when we created the image codec.
Definition: System.h:632
int executeScriptGlobal(const String &function_name) const
Execute a scripted global function if possible. The function should not take any parameters and shoul...
static String d_defaultXMLParserName
pointer to parser module.
Definition: System.h:627
void cleanupImageCodec()
cleanup image codec
static System & create(Renderer &renderer, ResourceProvider *resourceProvider=0, XMLParser *xmlParser=0, ImageCodec *imageCodec=0, ScriptModule *scriptModule=0, const String &configFile="", const String &logFile="CEGUI.log", const int abi=CEGUI_VERSION_ABI)
Create the System object and return a reference to it.
void outputLogHeader()
output the standard log header
bool d_ourLogger
true when we created the CEGUI::Logger based object.
Definition: System.h:640
System(Renderer &renderer, ResourceProvider *resourceProvider, XMLParser *xmlParser, ImageCodec *imageCodec, ScriptModule *scriptModule, const String &configFile, const String &logFile)
Construct a new System object.
XMLParser * d_xmlParser
XMLParser object we use to process xml files.
Definition: System.h:623
void invalidateAllWindows()
invalidate all windows and any rendering surfaces they may be using.
void setXMLParser(const String &parserName)
Set a new XML parser module to be used.
Clipboard * d_clipboard
Internal clipboard with optional sync with native clipboard.
Definition: System.h:617
void destroyRegexMatcher(RegexMatcher *rm) const
destroy a RegexMatcher instance returned by System::createRegexMatcher.
static const String EventDisplaySizeChanged
Definition: System.h:82
void setDefaultCustomRenderedStringParser(RenderedStringParser *parser)
Set the global default custom RenderedStringParser object. This change is reflected the next time an ...
static const StringTranscoder & getStringTranscoder()
Return the system StringTranscoder object.
void executeScriptFile(const String &filename, const String &resourceGroup="") const
Execute a script file if possible.
static const IconvStringTranscoder d_stringTranscoder
instance of class that can convert string encodings
Definition: System.h:650
~System(void)
Destructor for System objects.
void notifyDisplaySizeChanged(const Sizef &new_size)
Notification function to be called when the main display changes size. Client code should call this f...
void setImageCodec(const String &codecName)
Set the image codec to be used by the system.
static const String EventNamespace
Namespace for global events.
Definition: System.h:71
static void setDefaultXMLParserName(const String &parserName)
Static member to set the name of the default XML parser module that should be used.
void destroySingletons()
cleanup the core system singleton objects
void invalidateAllCachedRendering()
Invalidate all imagery and geometry caches for CEGUI managed elements.
bool d_ourXmlParser
true when we created the xml parser.
Definition: System.h:624
Renderer * getRenderer(void) const
Return a pointer to the Renderer object being used by the system.
Definition: System.h:192
static const String & getVerboseVersion()
Retrieves CEGUI's "verbose" version, includes info about compiler, platform, etc.....
void setScriptingModule(ScriptModule *scriptModule)
Set the ScriptModule to be used for scripting within the GUI system.
ResourceProvider * d_resourceProvider
Holds the pointer to the ResourceProvider object given to us by the renderer or the System constructo...
Definition: System.h:614
void setupImageCodec(const String &codecName)
setup image codec
static const String & getVersion()
Retrieves CEGUI's "short" version ("1.2.3" for example)
bool injectTimePulse(float timeElapsed)
call this to ensure system-level time based updates occur.
String d_termScriptName
Name of the script to run upon system shutdown.
Definition: System.h:621
static unsigned int getPatchVersion()
Retrieves CEGUI's patch version as an integer.
ResourceProvider * getResourceProvider(void) const
Return a pointer to the ResourceProvider being used within the GUI system.
Renderer * d_renderer
Holds the pointer to the Renderer object given to us in the constructor.
Definition: System.h:613
static const String & getDefaultImageCodecName()
Get the name of the default image codec.
static unsigned int getMinorVersion()
Retrieves CEGUI's minor version as an integer.
XMLParser * getXMLParser(void) const
Return the XMLParser object.
Definition: System.h:338
void addStandardWindowFactories()
adds factories for all the basic window types
Clipboard * getClipboard() const
Retrieves internal CEGUI clipboard, optionally synced with system wide clipboard.
Definition: System.h:218
static String d_defaultImageCodecName
Holds the name of the default codec to use.
Definition: System.h:638
void executeScriptString(const String &str) const
If possible, execute script code contained in the given CEGUI::String object.
static void destroy()
Destroy the System object.
void createSingletons()
create the other core system singleton objects (except the logger)
static System * getSingletonPtr(void)
Return pointer to singleton System object.
ScriptModule * getScriptingModule(void) const
Return a pointer to the ScriptModule being used for scripting within the GUI system.
static void performVersionTest(const int expected, const int received, const String &func)
Internal CEGUI version validation function.
void setupXMLParser()
handle creation and initialisation of the XML parser.
RegexMatcher * createRegexMatcher() const
Create a RegexMatcher instance if support is available.
void setXMLParser(XMLParser *parser)
Sets the XMLParser object to be used by the system.
void cleanupXMLParser()
handle cleanup of the XML parser
ImageCodec & getImageCodec() const
Retrieve the image codec to be used by the system.
RenderedStringParser * getDefaultCustomRenderedStringParser() const
Return pointer to the currently set global default custom RenderedStringParser object.
static const String EventRenderedStringParserChanged
Definition: System.h:86
DynamicModule * d_imageCodecModule
Definition: System.h:636
RenderedStringParser * d_customRenderedStringParser
currently set global RenderedStringParser.
Definition: System.h:642
static unsigned int getMajorVersion()
Retrieves CEGUI's major version as an integer.
void renderAllGUIContexts()
Depending upon the internal state, for each GUIContext this may either re-use cached rendering from l...
ScriptModule * d_scriptModule
Points to the scripting support module.
Definition: System.h:620
ImageCodec * d_imageCodec
Holds a pointer to the image codec to use.
Definition: System.h:630
static System & getSingleton(void)
Return singleton System object.
static void setDefaultImageCodecName(const String &codecName)
Set the name of the default image codec to be used.
Implementation of StringTranscoder that uses Win32.
Definition: Win32StringTranscoder.h:37
This is an abstract class that is used by CEGUI to interface with XML parser libraries.
Definition: XMLParser.h:44
Main namespace for Crazy Eddie's GUI Library.
Definition: arch_overview.dox:1