25 #include <guichan/sdl/sdlinput.hpp>
26 #include <guichan/key.hpp>
27 #include <guichan/focushandler.hpp>
28 #include <guichan.hpp>
62 m_gcn_gui(new gcn::Gui()),
64 m_gcn_topcontainer(new gcn::Container()),
66 m_input(new gcn::SDLInput()),
70 m_logic_executed(false) {
92 std::vector<GuiFont*>::iterator i =
m_fonts.begin();
101 FL_WARN(
_log,
"GUIChanManager, GuichanGUI->getInput == 0 ... discarding events!");
108 case SDL_MOUSEBUTTONDOWN:
125 case SDL_MOUSEBUTTONUP:
145 case SDL_MOUSEMOTION:
172 case SDL_ACTIVEEVENT:
207 if( backend ==
"SDL" ) {
211 else if (backend ==
"OpenGL") {
214 else if (backend ==
"OpenGLe") {
230 std::string fontpath = path;
231 std::string fontglyphs = glyphs;
232 int32_t fontsize = size;
241 if(fontglyphs ==
"") {
247 if( bfs::extension(fontpath) ==
".ttf" || bfs::extension(fontpath) ==
".ttc" ) {
259 std::vector<GuiFont*>::iterator i =
m_fonts.begin();
271 std::vector<GuiFont*>::iterator it =
m_fonts.begin();
301 if(gcnevt.getType() == gcn::KeyEvent::PRESSED)
303 else if(gcnevt.getType() == gcn::KeyEvent::RELEASED)
306 FL_WARN(
_log,
LMsg(
"GUIChanManager::translateKeyEvent() - ") <<
"Unknown event type: " << gcnevt.getType());
316 int32_t keyval = gcnevt.getKey().getValue();
319 keyevt.
setKey(
Key(static_cast<Key::KeyType>(keyval), keyval));
330 mouseevt.
setX(gcnevt.getX());
331 mouseevt.
setY(gcnevt.getY());
333 switch(gcnevt.getType()) {
334 case gcn::MouseEvent::PRESSED:
337 case gcn::MouseEvent::RELEASED:
340 case gcn::MouseEvent::MOVED:
343 case gcn::MouseEvent::CLICKED:
346 case gcn::MouseEvent::ENTERED:
349 case gcn::MouseEvent::EXITED:
352 case gcn::MouseEvent::DRAGGED:
355 case gcn::MouseEvent::WHEEL_MOVED_DOWN:
358 case gcn::MouseEvent::WHEEL_MOVED_UP:
365 switch(gcnevt.getButton()) {
366 case gcn::MouseInput::LEFT:
369 case gcn::MouseInput::RIGHT:
372 case gcn::MouseInput::MIDDLE:
389 case gcn::Key::LEFT_ALT:
392 case gcn::Key::RIGHT_ALT:
395 case gcn::Key::LEFT_SHIFT:
398 case gcn::Key::RIGHT_SHIFT:
401 case gcn::Key::LEFT_CONTROL:
404 case gcn::Key::RIGHT_CONTROL:
407 case gcn::Key::BACKSPACE:
410 case gcn::Key::PAUSE:
413 case gcn::Key::SPACE:
416 case gcn::Key::ESCAPE:
419 case gcn::Key::DELETE:
422 case gcn::Key::INSERT:
431 case gcn::Key::PAGE_UP:
434 case gcn::Key::PRINT_SCREEN:
437 case gcn::Key::PAGE_DOWN:
485 case gcn::Key::NUM_LOCK:
488 case gcn::Key::CAPS_LOCK:
491 case gcn::Key::SCROLL_LOCK:
494 case gcn::Key::RIGHT_META:
497 case gcn::Key::LEFT_META:
500 case gcn::Key::LEFT_SUPER:
503 case gcn::Key::RIGHT_SUPER:
506 case gcn::Key::ALT_GR:
518 case gcn::Key::RIGHT:
521 case gcn::Key::ENTER:
527 if (value >= 1 && value <= 26) {
529 value = value - 1 +
'a';
530 }
else if (value >=
'A' && value <=
'Z') {
531 value = value -
'A' +
'a';
GuiFont * setDefaultFont(const std::string &path, uint32_t size, const std::string &glyphs)
Set the global font properties.
#define FL_WARN(logger, msg)
void resizeTopContainer(uint32_t x, uint32_t y, uint32_t width, uint32_t height)
Resizes the top container.
gcn::Gui * getGuichanGUI() const
Gets the member pointer to the Guichan GUI.
gcn::Graphics * m_gui_graphics
MouseEvent translateMouseEvent(const gcn::MouseEvent &evt)
void setKey(const Key &key)
Helper class to create log strings out from separate parts Usage: LMsg("some text") << variable << "...
gcn::Container * m_gcn_topcontainer
virtual void setControlPressed(bool pressed)
virtual void setShiftPressed(bool pressed)
virtual void turn()
Performs the GUI logic and draws the GUI accordingly.
KeyEvent translateKeyEvent(const gcn::KeyEvent &evt)
static Logger _log(LM_AUDIO)
GuiFont * createFont(const std::string &path="", uint32_t size=0, const std::string &glyphs="")
Gets font with given properties.
void remove(gcn::Widget *widget)
Removes a widget.
void add(gcn::Widget *widget)
Adds a new widget.
gcn::FocusHandler * m_focushandler
virtual void setControlPressed(bool pressed)
virtual void setAltPressed(bool pressed)
void releaseFont(GuiFont *font)
Releases given font.
virtual void setShiftPressed(bool pressed)
void init(const std::string &backend, int32_t screenWidth, int32_t screenHeight)
Inits the GUI Manager.
virtual void setMetaPressed(bool pressed)
SDL True Type Font implementation of Font.
Represents a key or a character.
void setNumericPad(bool ispad)
void setButton(MouseButtonType type)
virtual void setMetaPressed(bool pressed)
void setType(KeyEventType type)
GuiImageLoader * m_imgloader
Pure abstract Font interface.
Overrides Guichan Graphics to enable usage of normal fife images & related facilities.
Imagefont that is able to read glyphs from single image sheet, see e.g.
static int32_t convertGuichanKeyToFifeKey(int32_t value)
void setType(MouseEventType type)
GUIChanManager()
Constructor.
void reLayout()
Layouts the console to match e.g.
virtual bool onSdlEvent(SDL_Event &evt)
Called when an SDL event is received from SDL.
virtual ~GUIChanManager()
Destructor.
std::set< gcn::Widget * > m_widgets
std::vector< GuiFont * > m_fonts
virtual void setAltPressed(bool pressed)
Overrides Guichan Graphics to enable usage of normal fife images & related facilities.
Overrides Guichan Graphics to enable usage of normal fife images & related facilities.