Crazy Eddie's GUI System  0.8.4
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
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_