Crazy Eddie's GUI System  0.8.5
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
55 namespace CEGUI
56 {
65 class CEGUIEXPORT System :
66  public Singleton<System>,
67  public EventSet,
68  public AllocatedObject<System>
69 {
70 public:
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 
228  void renderAllGUIContexts();
229 
230 
238  ScriptModule* getScriptingModule(void) const;
239 
250  void setScriptingModule(ScriptModule* scriptModule);
251 
259  ResourceProvider* getResourceProvider(void) const;
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 
396  static const String getDefaultXMLParserName();
397 
402  ImageCodec& getImageCodec() const;
403 
408  void setImageCodec(const String& codecName);
409 
420  void setImageCodec(ImageCodec& codec);
421 
426  static void setDefaultImageCodecName(const String& codecName);
427 
432  static const String& getDefaultImageCodecName();
433 
451  void notifyDisplaySizeChanged(const Sizef& new_size);
452 
466  RenderedStringParser* getDefaultCustomRenderedStringParser() const;
467 
482  void setDefaultCustomRenderedStringParser(RenderedStringParser* parser);
483 
494  void invalidateAllCachedRendering();
495 
509  RegexMatcher* createRegexMatcher() const;
510 
512  void destroyRegexMatcher(RegexMatcher* rm) const;
513 
515  bool injectTimePulse(float timeElapsed);
516 
517  GUIContext& createGUIContext(RenderTarget& rt);
518  void destroyGUIContext(GUIContext& context);
519 
528  void addStandardWindowFactories();
529 
531  static const StringTranscoder& getStringTranscoder();
532 
534  static void performVersionTest(const int expected, const int received,
535  const String& func);
536 
537 private:
538  // unimplemented constructors / assignment
539  System(const System& obj);
540  System& operator=(const System& obj);
541 
542 protected:
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 
587  void outputLogHeader();
588 
590  void createSingletons();
591 
593  void destroySingletons();
594 
596  void setupXMLParser();
597 
599  void cleanupXMLParser();
600 
602  void setupImageCodec(const String& codecName);
603 
605  void cleanupImageCodec();
606 
608  void invalidateAllWindows();
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_
Abstract ImageLoader class. An image loader encapsulate the loading of a texture. ...
Definition: ImageCodec.h:45
Abstract interface required for all scripting support modules to be used with the CEGUI system...
Definition: ScriptModule.h:45
Definition: GUIContext.h:68
DynamicModule * d_imageCodecModule
Definition: System.h:636
Definition: MemoryAllocatedObject.h:109
Class that wraps and gives access to a dynamically linked module (.dll, .so, etc...)
Definition: DynamicModule.h:41
Abstract class that defines the required interface for all resource provider sub-classes.
Definition: ResourceProvider.h:47
Main namespace for Crazy Eddie's GUI Library.
Definition: arch_overview.dox:1
String d_termScriptName
Name of the script to run upon system shutdown.
Definition: System.h:621
Clipboard * d_clipboard
Internal clipboard with optional sync with native clipboard.
Definition: System.h:617
Interface for a string transcoding utility. Instances of classes that implement this interface can be...
Definition: StringTranscoder.h:41
Interface for Regex matching support classes.
Definition: RegexMatcher.h:39
XMLParser * getXMLParser(void) const
Return the XMLParser object.
Definition: System.h:338
static const String EventRenderedStringParserChanged
Definition: System.h:86
Defines a clipboard handling class.
Definition: Clipboard.h:82
ImageCodec * d_imageCodec
Holds a pointer to the image codec to use.
Definition: System.h:630
static const String EventDisplaySizeChanged
Definition: System.h:82
static const String EventNamespace
Namespace for global events.
Definition: System.h:71
Definition: Singleton.h:55
Abstract class defining the basic required interface for Renderer objects.
Definition: Renderer.h:82
bool d_ourImageCodec
true when we created the image codec.
Definition: System.h:632
ScriptModule * d_scriptModule
Points to the scripting support module.
Definition: System.h:620
bool d_ourXmlParser
true when we created the xml parser.
Definition: System.h:624
bool d_ourLogger
true when we created the CEGUI::Logger based object.
Definition: System.h:640
ResourceProvider * d_resourceProvider
Holds the pointer to the ResourceProvider object given to us by the renderer or the System constructo...
Definition: System.h:614
RenderedStringParser * d_customRenderedStringParser
currently set global RenderedStringParser.
Definition: System.h:642
Implementation of StringTranscoder that uses Win32.
Definition: Win32StringTranscoder.h:36
Implementation of StringTranscoder that uses iconv.
Definition: IconvStringTranscoder.h:36
Interface providing event signaling and handling.
Definition: EventSet.h:166
Defines interface to some surface that can be rendered to. Concrete instances of objects that impleme...
Definition: RenderTarget.h:57
Clipboard * getClipboard() const
Retrieves internal CEGUI clipboard, optionally synced with system wide clipboard. ...
Definition: System.h:218
Specifies interface for classes that parse text into RenderedString objects.
Definition: RenderedStringParser.h:37
Renderer * d_renderer
Holds the pointer to the Renderer object given to us in the constructor.
Definition: System.h:613
XMLParser * d_xmlParser
XMLParser object we use to process xml files.
Definition: System.h:623
Renderer * getRenderer(void) const
Return a pointer to the Renderer object being used by the system.
Definition: System.h:192
The System class is the CEGUI class that provides access to all other elements in this system...
Definition: System.h:65
This is an abstract class that is used by CEGUI to interface with XML parser libraries.
Definition: XMLParser.h:41
static const IconvStringTranscoder d_stringTranscoder
instance of class that can convert string encodings
Definition: System.h:650
static String d_defaultXMLParserName
pointer to parser module.
Definition: System.h:627
static String d_defaultImageCodecName
Holds the name of the default codec to use.
Definition: System.h:638
String class used within the GUI system.
Definition: String.h:62