1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef GUI_H
#define GUI_H
#include <list>
#include <boost/signals2/connection.hpp>
#include <boost/signals2/shared_connection_block.hpp>
union SDL_Event;
namespace agui
{
class GuiElement;
class Gui
{
public:
Gui();
virtual ~Gui();
void Clean();
void Draw();
void AddElement(GuiElement*, bool asBackground = false);
/// deletes the element on the next draw
void RmElement(GuiElement*);
void UpdateScreenGeometry(int screenx, int screeny, int screenOffsetX, int screenOffsetY);
bool MouseOverElement(const GuiElement*, int x, int y) const;
private:
bool HandleEvent(const SDL_Event& ev);
boost::signals2::scoped_connection inputCon;
boost::signals2::shared_connection_block inputConBlock;
struct GuiItem
{
GuiItem(GuiElement* el, bool back) : element(el), asBackground(back) {};
GuiElement* element;
bool asBackground;
};
typedef std::list<GuiItem> ElList;
ElList elements;
ElList toBeRemoved;
ElList toBeAdded;
};
extern Gui* gui;
void InitGui();
void FreeGui();
}
#endif
|