GUI
GUISystem.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2017 by Maciej Wiecierzewski
3  */
4 
5 #ifndef GUISYSTEM_H
6 #define GUISYSTEM_H
7 
8 #include <forward_list>
9 #include <map>
10 #include <string>
11 
12 #include "Button.h"
13 #include "EditBox.h"
14 #include "Event.h"
15 #include "EventQueue.h"
16 #include "Handle.h"
17 #include "Renderer.h"
18 #include "Scrollbar.h"
19 #include "TextField.h"
20 #include "Widget.h"
21 
23 
24 namespace gui
25 {
26 
27 typedef std::function<Widget*(GUISystem*)> CreateWidget;
28 typedef std::function<EventObject*(EventObject*)> CreateEventObject;
29 
31 
32 class GUISystem
33 {
34  public:
35  typedef std::map<EventType, CreateEventObject> Map;
36 
37  GUISystem();
38  ~GUISystem();
39 
46 
52  Renderer* getRenderer() { return renderer; }
53 
57  void render();
58 
65  void addEventType(EventType eventType, CreateEventObject createFunc);
66 
70  void handleEvents();
71 
74  void mouseMove(int x, int y);
75 
78  void mouseButtonUp();
79 
82  void mouseButtonDown();
83 
86  void keyChar(int unichar);
87 
90  void keyDown(int keyCode);
91 
102  Handle<Button> addButton(int x, int y, int w, int h, std::string text);
103 
114  Handle<TextField> addTextField(int x, int y, int w, int h, std::string text);
115 
126  Handle<EditBox> addEditBox(int x, int y, int w, int h, bool multiline = false);
127 
137  Handle<Scrollbar> addScrollbar(int x, int y, int w, int h);
138 
146  Handle<Widget> addWidget(CreateWidget createWidget, bool setEventQueue);
147 
154  Event createEvent(EventType eventType);
155 
162  Event cloneEvent(const Event& event);
163 
171  EventObject* createNull(EventObject* obj = NULL) { return NULL; };
172 
180 
188 
195 
196  int mouseX;
197  int mouseY;
198 
199  protected:
200 
201  private:
203  std::forward_list<Widget*> widgets;
206 
208 };
209 
210 }
211 
212 #endif // GUISYSTEM_H