Ticket #8711: backends-lib.v3.2.patch
File backends-lib.v3.2.patch, 18.7 KB (added by , 17 years ago) |
---|
-
D:/programming/projects/gsoc/scummvm/backends/events/default/default-events.cpp
35 35 36 36 DefaultEventManager::DefaultEventManager(OSystem *boss) : 37 37 _boss(boss), 38 _keyMapper(boss->getKeyMapper()), 39 _virtualKeyboard(boss->getVirtualKeyboard()), 38 40 _buttonState(0), 39 41 _modifierState(0), 40 42 _shouldQuit(false) { … … 52 54 result = _boss->pollEvent(event); 53 55 54 56 if (result) { 57 // check if we have to resolve virtual keyboard event 58 bool lbutton = event.type == Common::EVENT_LBUTTONDOWN || event.type == Common::EVENT_LBUTTONUP; 59 if (_boss->getFeatureState(OSystem::kFeatureVirtualKeyboard) && _virtualKeyboard && lbutton) { // possibly a virtual keyboard event 60 _virtualKeyboard->resolve(event); // try to resolve a virtual keyboard event 61 } 62 63 // check if we have to resolve key mapping 64 if (_keyMapper) { 65 _keyMapper->resolve(event); 66 } 67 55 68 event.synthetic = false; 56 69 switch (event.type) { 57 70 case Common::EVENT_KEYDOWN: … … 128 141 return result; 129 142 } 130 143 144 void DefaultEventManager::registerActions(const Common::ActionList actions) { 145 _keyMapper->registerActions(actions); 146 } 147 void DefaultEventManager::unregisterActions() { 148 _keyMapper->unregisterActions(); 149 } 150 151 131 152 #endif // !defined(DISABLE_DEFAULT_EVENTMANAGER) -
D:/programming/projects/gsoc/scummvm/backends/events/default/default-events.h
43 43 44 44 class DefaultEventManager : public Common::EventManager { 45 45 OSystem *_boss; 46 KeyMapper *_keyMapper; 47 VirtualKeyboard *_virtualKeyboard; 46 48 47 49 Common::Point _mousePos; 48 50 int _buttonState; … … 67 69 68 70 virtual bool pollEvent(Common::Event &event); 69 71 72 virtual void registerActions(const Common::ActionList); 73 virtual void unregisterActions(); 74 70 75 virtual Common::Point getMousePos() const { return _mousePos; } 71 76 virtual int getButtonState() const { return _buttonState; } 72 77 virtual int getModifierState() const { return _modifierState; } -
D:/programming/projects/gsoc/scummvm/backends/platform/sdl/sdl.cpp
257 257 memset(&_mouseCurState, 0, sizeof(_mouseCurState)); 258 258 259 259 _inited = false; 260 261 _keyMapper = new KeyMapper(); 262 _virtualKeyboard = new VirtualKeyboard(); 260 263 } 261 264 262 265 OSystem_SDL::~OSystem_SDL() { … … 271 274 delete _savefile; 272 275 delete _mixer; 273 276 delete _timer; 277 278 delete _keyMapper; 279 delete _virtualKeyboard; 274 280 } 275 281 276 282 uint32 OSystem_SDL::getMillis() { -
D:/programming/projects/gsoc/scummvm/backends/platform/sdl/events.cpp
444 444 } 445 445 return false; 446 446 } 447 KeyMapper *OSystem_SDL::getKeyMapper() { 448 return _keyMapper; 449 } 447 450 451 VirtualKeyboard *OSystem_SDL::getVirtualKeyboard() { 452 return _virtualKeyboard; 453 } 454 448 455 bool OSystem_SDL::remapKey(SDL_Event &ev, Common::Event &event) { 449 456 #ifdef LINUPY 450 457 // On Yopy map the End button to quit -
D:/programming/projects/gsoc/scummvm/backends/platform/sdl/sdl-common.h
131 131 // Returns true if an event was retrieved. 132 132 virtual bool pollEvent(Common::Event &event); // overloaded by CE backend 133 133 134 virtual KeyMapper *getKeyMapper(); 135 136 virtual VirtualKeyboard *getVirtualKeyboard(); 137 134 138 // Set function that generates samples 135 139 typedef void (*SoundProc)(void *param, byte *buf, int len); 136 140 virtual bool setSoundCallback(SoundProc proc, void *param); // overloaded by CE backend … … 411 415 virtual bool remapKey(SDL_Event &ev, Common::Event &event); 412 416 413 417 void handleScalerHotkeys(const SDL_KeyboardEvent &key); 418 419 private: 420 KeyMapper *_keyMapper; 421 VirtualKeyboard *_virtualKeyboard; 422 414 423 }; 415 424 416 425 #endif -
D:/programming/projects/gsoc/scummvm/backends/platform/common/key-mapper.h
1 /* ScummVM - Graphic Adventure Engine 2 * 3 * ScummVM is the legal property of its developers, whose names 4 * are too numerous to list here. Please refer to the COPYRIGHT 5 * file distributed with this source distribution. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * 21 */ 22 23 #ifndef COMMON_KEY_MAPPER_H 24 #define COMMON_KEY_MAPPER_H 25 26 #include "common/stdafx.h" 27 #include "common/scummsys.h" 28 #include "common/keyboard.h" 29 #include "common/events.h" 30 31 #include <list> 32 #include <map> 33 34 typedef std::map<Common::KeyState, Common::UserAction> KeyActionMap; 35 36 class KeyMapper { 37 38 public: 39 40 KeyMapper(); 41 42 virtual void registerActions(const Common::ActionList); 43 virtual void unregisterActions(); 44 45 virtual void mapActions(); 46 47 void resolve(Common::Event &); 48 49 private: 50 bool _registered; 51 Common::ActionList _supportedActions; 52 KeyActionMap _mappings; // available keys and action mappings 53 }; 54 55 #endif 56 No newline at end of file -
D:/programming/projects/gsoc/scummvm/backends/platform/common/virtual-keyboard.cpp
1 /* ScummVM - Graphic Adventure Engine 2 * 3 * ScummVM is the legal property of its developers, whose names 4 * are too numerous to list here. Please refer to the COPYRIGHT 5 * file distributed with this source distribution. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * 21 */ 22 23 #include "backends/platform/common/virtual-keyboard.h" 24 25 VirtualKeyboard::VirtualKeyboard() { 26 } 27 28 void VirtualKeyboard::resolve(Common::Event &event) { 29 } -
D:/programming/projects/gsoc/scummvm/backends/platform/common/virtual-keyboard.h
1 /* ScummVM - Graphic Adventure Engine 2 * 3 * ScummVM is the legal property of its developers, whose names 4 * are too numerous to list here. Please refer to the COPYRIGHT 5 * file distributed with this source distribution. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * 21 */ 22 23 #ifndef COMMON_VIRTUAL_KEYBOARD_H 24 #define COMMON_VIRTUAL_KEYBOARD_H 25 26 #include "common/stdafx.h" 27 #include "common/scummsys.h" 28 #include "common/events.h" 29 30 class VirtualKeyboard { 31 32 public: 33 VirtualKeyboard(); 34 void resolve(Common::Event &); 35 }; 36 37 #endif 38 No newline at end of file -
D:/programming/projects/gsoc/scummvm/backends/platform/common/module.mk
1 MODULE := backends/platform/common 2 3 MODULE_OBJS := \ 4 common-system.o 5 6 MODULE_DIRS += \ 7 backends/platform/common/ 8 9 # We don't use the rules.mk here on purpose 10 OBJS := $(addprefix $(MODULE)/, $(MODULE_OBJS)) $(OBJS) -
D:/programming/projects/gsoc/scummvm/backends/platform/common/key-mapper.cpp
1 /* ScummVM - Graphic Adventure Engine 2 * 3 * ScummVM is the legal property of its developers, whose names 4 * are too numerous to list here. Please refer to the COPYRIGHT 5 * file distributed with this source distribution. 6 * 7 * This program is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU General Public License 9 * as published by the Free Software Foundation; either version 2 10 * of the License, or (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License 18 * along with this program; if not, write to the Free Software 19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * 21 */ 22 23 #include "backends/platform/common/key-mapper.h" 24 25 KeyMapper::KeyMapper() : 26 _registered(false) { 27 } 28 29 void KeyMapper::registerActions(const Common::ActionList supportedActions) { 30 this->unregisterActions(); 31 _supportedActions = supportedActions; 32 for (Common::ActionList::iterator mIt = _supportedActions.begin(); mIt != _supportedActions.end(); mIt++) { 33 // actions are mapped to default keys to substitute later the type of event 34 _mappings[mIt->defaultKey] = *mIt; 35 } 36 // open the keys dialog or look up mappings in the tables for the rest of actions 37 // ... 38 _registered = true; 39 } 40 41 void KeyMapper::unregisterActions() { 42 _supportedActions.clear(); 43 _mappings.clear(); 44 _registered = false; 45 } 46 47 void KeyMapper::mapActions() { 48 } 49 50 void KeyMapper::resolve(Common::Event &event) { 51 if (!_registered || _mappings.empty()) { 52 return; 53 } 54 KeyActionMap::iterator it = _mappings.find(event.kbd); 55 if (it != _mappings.end()) { 56 event.kbd = it->second.defaultKey; 57 if (it->second.type != Common::EVENT_INVALID) { 58 event.type = it->second.type; 59 } 60 } 61 } -
D:/programming/projects/gsoc/scummvm/common/keyboard.h
28 28 29 29 #include "common/scummsys.h" 30 30 31 #include <list> 32 31 33 namespace Common { 32 34 33 35 enum KeyCode { … … 259 261 keycode = KEYCODE_INVALID; 260 262 ascii = flags = 0; 261 263 } 264 265 bool operator <(const KeyState keyState) const { 266 return keycode < keyState.keycode; 267 } 268 262 269 }; 263 270 264 271 } // End of namespace Common -
D:/programming/projects/gsoc/scummvm/common/system.h
31 31 #include "common/noncopyable.h" 32 32 #include "common/rect.h" 33 33 34 #include "backends/platform/common/key-mapper.h" 35 #include "backends/platform/common/virtual-keyboard.h" 36 34 37 namespace Audio { 35 38 class Mixer; 36 39 } … … 724 727 */ 725 728 virtual bool pollEvent(Common::Event &event) = 0; 726 729 730 virtual KeyMapper *getKeyMapper() { return NULL; } 731 732 virtual VirtualKeyboard *getVirtualKeyboard() { return NULL; } 733 727 734 public: 735 728 736 /** Get the number of milliseconds since the program was started. */ 729 737 virtual uint32 getMillis() = 0; 730 738 … … 743 751 */ 744 752 virtual Common::EventManager *getEventManager(); 745 753 754 746 755 //@} 747 756 748 757 … … 894 903 * refer to the SaveFileManager documentation. 895 904 */ 896 905 virtual Common::SaveFileManager *getSavefileManager() = 0; 897 898 906 //@} 899 907 }; 900 908 -
D:/programming/projects/gsoc/scummvm/common/events.h
28 28 29 29 #include "common/keyboard.h" 30 30 #include "common/rect.h" 31 #include "common/system.h"32 31 #include "common/noncopyable.h" 33 32 33 #include <list> 34 34 35 namespace Common { 35 36 36 37 /** … … 43 44 * indicates which button was pressed. 44 45 */ 45 46 enum EventType { 47 48 EVENT_INVALID = 0, 46 49 /** A key was pressed, details in Event::kbd. */ 47 50 EVENT_KEYDOWN = 1, 48 51 /** A key was released, details in Event::kbd. */ … … 107 110 * Keyboard data; only valid for keyboard events (EVENT_KEYDOWN and 108 111 * EVENT_KEYUP). For all other event types, content is undefined. 109 112 */ 110 KeyState kbd;113 Common::KeyState kbd; 111 114 /** 112 115 * The mouse coordinates, in virtual screen coordinates. Only valid 113 116 * for mouse events. … … 115 118 * screen area as defined by the most recent call to initSize(). 116 119 */ 117 120 Common::Point mouse; 121 122 Event(Common::EventType et = Common::EVENT_INVALID, bool s = false, 123 Common::KeyState ks = Common::KeyState(), Common::Point p = Common::Point()) { 124 125 type = et; 126 synthetic = s; 127 kbd = ks; 128 mouse = p; 129 } 130 131 void reset() { 132 type = Common::EVENT_INVALID; 133 synthetic = false; 134 kbd = Common::KeyState(); 135 mouse = Common::Point(); 136 } 118 137 }; 119 138 139 enum Priority { 140 PRIORITY_HIGHEST, 141 PRIORITY_HIGH, 142 PRIORITY_NORMAL, 143 PRIORITY_LOW, 144 PRIORITY_LOWEST 145 }; 120 146 147 struct UserAction { 148 Common::KeyState defaultKey; // default key combo used for mapping; includes modifier state 149 Common::EventType type; // event type like key up/down, quit, save/load 150 String description; // human readable description, for a GUI keymapping config dialog 151 Common::Priority priority; // mapping priority 152 153 UserAction(Common::KeyState ks = Common::KeyState(Common::KEYCODE_ESCAPE), 154 Common::EventType et = Common::EVENT_KEYDOWN, String d = "Action name", 155 Common::Priority p = Common::PRIORITY_NORMAL) { 156 157 defaultKey = ks; 158 type = et; 159 description = d; 160 priority = p; 161 } 162 163 UserAction(Common::KeyState ks, String d, Common::Priority p = Common::PRIORITY_NORMAL) { 164 defaultKey = ks; 165 type = Common::EVENT_INVALID; 166 description = d; 167 priority = p; 168 } 169 170 }; 171 172 typedef std::list<Common::UserAction> ActionList; 173 121 174 /** 122 175 * The EventManager provides user input events to the client code. 123 176 * In addition, it keeps track of the state of various input devices, … … 166 219 // TODO: Keyboard repeat support? 167 220 168 221 // TODO: Consider removing OSystem::getScreenChangeID and 169 // replacing it by a generic getScreenChangeID method here 222 // replacing it by a generic getScreenChaneID method here 223 224 virtual void registerActions(const ActionList) = 0; 225 226 virtual void unregisterActions() = 0; 170 227 }; 171 228 172 229 } // End of namespace Common -
D:/programming/projects/gsoc/scummvm/engines/sky/sky.cpp
30 30 #include "common/config-manager.h" 31 31 #include "common/file.h" 32 32 #include "common/fs.h" 33 #include "common/keyboard.h" 33 34 #include "common/events.h" 34 35 #include "common/system.h" 35 36 #include "common/timer.h" … … 183 184 184 185 SkyEngine::SkyEngine(OSystem *syst) 185 186 : Engine(syst), _fastMode(0), _debugger(0) { 187 Common::ActionList actions; 188 189 Common::KeyState key = Common::KeyState(Common::KEYCODE_F5); 190 Common::UserAction action = Common::UserAction(key, "Menu"); 191 actions.push_back(action); 192 193 194 key = Common::KeyState(Common::KEYCODE_ESCAPE); 195 action = Common::UserAction(key, "Esc"); 196 actions.push_back(action); 197 198 key = Common::KeyState(Common::KEYCODE_p); 199 action = Common::UserAction(key, "Pause"); 200 actions.push_back(action); 201 202 _eventMan->registerActions(actions); 186 203 } 187 204 188 205 SkyEngine::~SkyEngine() {