scummvm/backends/events/sdl/sdl-events.h

139 lines
3.8 KiB
C
Raw Normal View History

2010-06-13 20:31:25 +00:00
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
* $URL$
* $Id$
*
*/
#if !defined(BACKEND_EVENTS_SDL_H) && !defined(DISABLE_DEFAULT_EVENTMANAGER)
#define BACKEND_EVENTS_SDL_H
#include "backends/events/default/default-events.h"
#if defined(__SYMBIAN32__)
#include <esdl\SDL.h>
#else
#include <SDL.h>
#endif
/**
* The SDL event source.
*/
2010-10-13 15:42:33 +00:00
class SdlEventSource : public Common::EventSource {
public:
SdlEventSource();
virtual ~SdlEventSource();
2010-06-13 20:31:25 +00:00
/**
* Gets and processes SDL events.
*/
virtual bool pollEvent(Common::Event &event);
2010-06-13 20:31:25 +00:00
/**
* Resets keyboard emulation after a video screen change
*/
virtual void resetKeyboadEmulation(int16 x_max, int16 y_max);
/**
* Toggles mouse input grab
*/
virtual void toggleMouseGrab();
2010-06-13 20:31:25 +00:00
protected:
/** @name Keyboard mouse emulation
* Disabled by fingolfin 2004-12-18.
* I am keeping the rest of the code in for now, since the joystick
* code (or rather, "hack") uses it, too.
*/
//@{
2010-06-13 20:31:25 +00:00
struct KbdMouse {
int16 x, y, x_vel, y_vel, x_max, y_max, x_down_count, y_down_count;
uint32 last_time, delay_time, x_down_time, y_down_time;
};
KbdMouse _km;
//@}
/** Scroll lock state - since SDL doesn't track it */
2010-06-13 20:31:25 +00:00
bool _scrollLock;
/** Joystick */
2010-06-13 20:31:25 +00:00
SDL_Joystick *_joystick;
/** Last screen id for checking if it was modified */
int _lastScreenID;
/**
* Pre process an event before it is dispatched.
*/
virtual void preprocessEvents(SDL_Event *event) {}
/**
* Dispatchs SDL events for each handler.
*/
2010-06-13 20:31:25 +00:00
virtual bool dispatchSDLEvent(SDL_Event &ev, Common::Event &event);
/** @name Event Handlers
* Handlers for specific SDL events, called by SdlEventSource::dispatchSDLEvent().
* This way, if a managers inherits fromt this SDL events manager, it can
* change the behavior of only a single event, without having to override all
* of SdlEventSource::dispatchSDLEvent().
*/
//@{
2010-06-13 20:31:25 +00:00
virtual bool handleKeyDown(SDL_Event &ev, Common::Event &event);
virtual bool handleKeyUp(SDL_Event &ev, Common::Event &event);
virtual bool handleMouseMotion(SDL_Event &ev, Common::Event &event);
virtual bool handleMouseButtonDown(SDL_Event &ev, Common::Event &event);
virtual bool handleMouseButtonUp(SDL_Event &ev, Common::Event &event);
virtual bool handleJoyButtonDown(SDL_Event &ev, Common::Event &event);
virtual bool handleJoyButtonUp(SDL_Event &ev, Common::Event &event);
virtual bool handleJoyAxisMotion(SDL_Event &ev, Common::Event &event);
virtual void handleKbdMouse();
//@}
2010-06-13 20:31:25 +00:00
/**
* Assigns the mouse coords to the mouse event
*/
virtual void fillMouseEvent(Common::Event &event, int x, int y);
2010-06-13 20:31:25 +00:00
/**
* Remaps key events. This allows platforms to configure
* their custom keys.
*/
2010-06-13 20:31:25 +00:00
virtual bool remapKey(SDL_Event &ev, Common::Event &event);
/**
* Maps the ASCII value of key
*/
virtual int mapKey(SDLKey key, SDLMod mod, Uint16 unicode);
/**
* Configures the key modifiers flags status
*/
virtual void SDLModToOSystemKeyFlags(SDLMod mod, Common::Event &event);
2010-06-13 20:31:25 +00:00
};
#endif