Crazy Eddie's GUI System  ${CEGUI_VERSION}
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();
57  void deinitialise();
58 
59  void addSampleDataCppModule(CEGUI::String sampleName, CEGUI::String summary,
60  CEGUI::String description,
61  SampleType sampleTypeEnum, CEGUI::String credits);
62 
63  void handleSampleSelection(CEGUI::Window* sampleWindow);
64  void handleStartDisplaySample(CEGUI::Window* sampleWindow);
65 
66  virtual void update(float passedTime);
67 
68  virtual void handleNewWindowSize(float width, float height);
69 
70  virtual void renderGUIContexts();
71 
72  SampleData* findSampleData(CEGUI::Window* sampleWindow);
73 
74  virtual bool injectKeyDown(const CEGUI::Key::Scan& ceguiKey);
75  virtual bool injectKeyUp(const CEGUI::Key::Scan& ceguiKey);
76  virtual bool injectChar(int character);
77  virtual bool injectMouseButtonDown(const CEGUI::MouseButton& ceguiMouseButton);
78  virtual bool injectMouseButtonUp(const CEGUI::MouseButton& ceguiMouseButton);
79  virtual bool injectMouseWheelChange(float position);
80  virtual bool injectMousePosition(float x, float y);
81 
82  static const CEGUI::String XMLSchemaName;
83 
84 protected:
85  void initialiseLoadScreenLayout();
86 
87  void initialiseSampleBrowserLayout();
88  void loadSamplesDataFromXML(const CEGUI::String& filename);
89  void getSampleInstanceFromDLL(SampleData& sampleData);
90 
91  void addSample(SampleData* sampleData);
92 
93  bool initialiseSampleStepwise(int sampleNumber);
94 
95  void displaySampleLoadProgress(int sampleNumber);
96  void initialisationFinalisation();
97  void unloadSamples();
98 
99  void stopDisplaySample();
100 
101  void updateSamples(float passedTime);
102  bool updateInitialisationStep();
103 
104  void displaySampleBrowserLayoutLoadProgress();
105  bool handleSampleExitButtonClicked(const CEGUI::EventArgs& args);
106  void renderSampleGUIContexts();
107 
108  bool areWindowsIntersecting(CEGUI::Window* window1, CEGUI::Window* window2);
109 
110  CEGUI::Window* d_root;
111 
112  CEGUI::PushButton* d_sampleExitButton;
113 
114  std::vector<SampleData*> d_samples;
115 
116  MetaDataWindowManager* d_metaDataWinMgr;
117  SamplesBrowserManager* d_samplesWinMgr;
118 
119  SampleData* d_selectedSampleData;
120 
121  CEGUI::ProgressBar* d_loadingProgressBar;
122  CEGUI::Window* d_loadingScreenText;
123  CEGUI::Window* d_loadScreenChunkProgressText;
124 
125  bool d_quittingSampleView;
126 
127  CEGUI::String d_samplesXMLFilename;
128 };
129 
130 #endif
virtual bool injectMouseButtonDown(const CEGUI::MouseButton &ceguiMouseButton)
Function to inject mouse button down to GUIContexts.
Definition: SamplesFramework.cpp:246
virtual bool injectMouseButtonUp(const CEGUI::MouseButton &ceguiMouseButton)
Function to inject mouse button up to GUIContexts.
Definition: SamplesFramework.cpp:261
virtual void renderGUIContexts()
Draw function to draw GUIContexts.
Definition: SamplesFramework.cpp:362
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:234
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:289
Base class for progress bars.
Definition: cegui/include/CEGUI/widgets/ProgressBar.h:49
virtual bool injectMouseWheelChange(float position)
Function to inject mouse wheel changes to GUIContexts.
Definition: SamplesFramework.cpp:276
void deinitialise()
deinitialise the resources allocated in the initialise if needed.
Definition: SamplesFramework.cpp:109
bool initialise()
Sample specific initialisation goes here. This method is called by the application base object create...
Definition: SamplesFramework.cpp:97
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:42
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:196
virtual bool injectKeyUp(const CEGUI::Key::Scan &ceguiKey)
Function to inject key up to GUIContexts.
Definition: SamplesFramework.cpp:222
Definition: SampleData.h:51
virtual void handleNewWindowSize(float width, float height)
Update function for window size changes.
Definition: SamplesFramework.cpp:337
virtual void update(float passedTime)
Update function called before rendering.
Definition: SamplesFramework.cpp:301
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