Crazy Eddie's GUI System  ${CEGUI_VERSION}
 All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Friends Pages
SamplesFramework.h
1 /***********************************************************************
2 created: 24/5/2012
3 author: Lukas E Meindl
4 *************************************************************************/
5 /***************************************************************************
6 * Copyright (C) 2004 - 2012 Paul D Turner & The CEGUI Development Team
7 *
8 * Permission is hereby granted, free of charge, to any person obtaining
9 * a copy of this software and associated documentation files (the
10 * "Software"), to deal in the Software without restriction, including
11 * without limitation the rights to use, copy, modify, merge, publish,
12 * distribute, sublicense, and/or sell copies of the Software, and to
13 * permit persons to whom the Software is furnished to do so, subject to
14 * the following conditions:
15 *
16 * The above copyright notice and this permission notice shall be
17 * included in all copies or substantial portions of the Software.
18 *
19 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
20 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
21 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
22 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
23 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
24 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
25 * OTHER DEALINGS IN THE SOFTWARE.
26 ***************************************************************************/
27 #ifndef _Samples_Framework_h_
28 #define _Samples_Framework_h_
29 
30 #include "SamplesFrameworkBase.h"
31 #include "SampleData.h"
32 
33 #include <vector>
34 
35 // forward declarations
36 #include "CEGUI/ForwardRefs.h"
37 
38 class SampleData;
39 class Sample;
42 
43 
49 {
50 public:
51  SamplesFramework(const CEGUI::String& xml_filename);
52  virtual ~SamplesFramework();
53 
54  static void setDefaultResourceGroup(const CEGUI::String& resourceGroup);
55 
56  bool initialise(const CEGUI::String& logFile,
57  const CEGUI::String& dataPathPrefixOverride);
58  void cleanup();
59 
60  void addSampleDataCppModule(CEGUI::String sampleName, CEGUI::String summary,
61  CEGUI::String description,
62  SampleType sampleTypeEnum, CEGUI::String credits);
63 
64  void handleSampleSelection(CEGUI::Window* sampleWindow);
65  void handleStartDisplaySample(CEGUI::Window* sampleWindow);
66 
67  virtual void update(float passedTime);
68 
69  virtual void handleNewWindowSize(float width, float height);
70 
71  virtual void renderGUIContexts();
72 
73  SampleData* findSampleData(CEGUI::Window* sampleWindow);
74 
75  virtual bool injectKeyDown(const CEGUI::Key::Scan& ceguiKey);
76  virtual bool injectKeyUp(const CEGUI::Key::Scan& ceguiKey);
77  virtual bool injectChar(int character);
78  virtual bool injectMouseButtonDown(const CEGUI::MouseButton& ceguiMouseButton);
79  virtual bool injectMouseButtonUp(const CEGUI::MouseButton& ceguiMouseButton);
80  virtual bool injectMouseWheelChange(float position);
81  virtual bool injectMousePosition(float x, float y);
82 
83  static const CEGUI::String XMLSchemaName;
84 
85 protected:
86  void initialiseLoadScreenLayout();
87 
88  void initialiseSampleBrowserLayout();
89  void loadSamplesDataFromXML(const CEGUI::String& filename);
90  void getSampleInstanceFromDLL(SampleData& sampleData);
91 
92  void addSample(SampleData* sampleData);
93 
94  bool initialiseSampleStepwise(int sampleNumber);
95 
96  void displaySampleLoadProgress(int sampleNumber);
97  void initialisationFinalisation();
98  void unloadSamples();
99 
100  void stopDisplaySample();
101 
102  void updateSamples(float passedTime);
103  bool updateInitialisationStep();
104 
105  void displaySampleBrowserLayoutLoadProgress();
106  bool handleSampleExitButtonClicked(const CEGUI::EventArgs& args);
107  void renderSampleGUIContexts();
108 
109  bool areWindowsIntersecting(CEGUI::Window* window1, CEGUI::Window* window2);
110 
111  CEGUI::Window* d_root;
112 
113  CEGUI::PushButton* d_sampleExitButton;
114 
115  std::vector<SampleData*> d_samples;
116 
117  MetaDataWindowManager* d_metaDataWinMgr;
118  SamplesBrowserManager* d_samplesWinMgr;
119 
120  SampleData* d_selectedSampleData;
121 
122  CEGUI::ProgressBar* d_loadingProgressBar;
123  CEGUI::Window* d_loadingScreenText;
124  CEGUI::Window* d_loadScreenChunkProgressText;
125 
126  bool d_quittingSampleView;
127 
128  CEGUI::String d_samplesXMLFilename;
129 };
130 
131 #endif
virtual bool injectMouseButtonDown(const CEGUI::MouseButton &ceguiMouseButton)
Function to inject mouse button down to GUIContexts.
Definition: SamplesFramework.cpp:262
virtual bool injectMouseButtonUp(const CEGUI::MouseButton &ceguiMouseButton)
Function to inject mouse button up to GUIContexts.
Definition: SamplesFramework.cpp:277
virtual void renderGUIContexts()
Draw function to draw GUIContexts.
Definition: SamplesFramework.cpp:378
Base class used as the argument to all subscribers Event object.
Definition: cegui/include/CEGUI/EventArgs.h:49
virtual bool injectChar(int character)
Function to inject characters to GUIContexts.
Definition: SamplesFramework.cpp:250
MouseButton
Enumeration of mouse buttons.
Definition: cegui/include/CEGUI/InputEvent.h:209
virtual bool injectMousePosition(float x, float y)
Function to inject the mouse position to GUIContexts.
Definition: SamplesFramework.cpp:305
Base class for progress bars.
Definition: cegui/include/CEGUI/widgets/ProgressBar.h:49
bool initialise(const CEGUI::String &logFile, const CEGUI::String &dataPathPrefixOverride)
Initialises the sample system, this includes asking the user for a render to use and the subsequent c...
Definition: SamplesFramework.cpp:112
virtual bool injectMouseWheelChange(float position)
Function to inject mouse wheel changes to GUIContexts.
Definition: SamplesFramework.cpp:292
This is.
Definition: SamplesFramework.h:48
This is a base class that is intended to be used for all sample applications. Here we take care of co...
Definition: SamplesFrameworkBase.h:43
Base class to provide logic for push button type widgets.
Definition: cegui/include/CEGUI/widgets/PushButton.h:47
An abstract base class providing common functionality and specifying the required interface for deriv...
Definition: cegui/include/CEGUI/Window.h:149
virtual bool injectKeyDown(const CEGUI::Key::Scan &ceguiKey)
Function to inject key down to GUIContexts.
Definition: SamplesFramework.cpp:212
virtual bool injectKeyUp(const CEGUI::Key::Scan &ceguiKey)
Function to inject key up to GUIContexts.
Definition: SamplesFramework.cpp:238
Definition: SampleData.h:51
virtual void handleNewWindowSize(float width, float height)
Update function for window size changes.
Definition: SamplesFramework.cpp:353
virtual void update(float passedTime)
Update function called before rendering.
Definition: SamplesFramework.cpp:317
Definition: MetaDataWindowManager.h:37
Definition: SamplesBrowserManager.h:40
String class used within the GUI system.
Definition: cegui/include/CEGUI/String.h:62
Definition: Sample.h:36