22#ifndef COMMON_VIRTUAL_KEYBOARD_H
23#define COMMON_VIRTUAL_KEYBOARD_H
25#include "common/scummsys.h"
31#include "common/events.h"
32#include "common/hashmap.h"
33#include "common/hash-str.h"
34#include "common/keyboard.h"
35#include "common/list.h"
36#include "common/str.h"
39#include "backends/vkeybd/image-map.h"
40#include "graphics/surface.h"
47class VirtualKeyboardGUI;
48class VirtualKeyboardParser;
56class VirtualKeyboard {
97 VKEvent() : data(0) {}
104 typedef HashMap<String, VKEvent *> VKEventMap;
114 uint32 transparentColor;
118 uint32 displayFontColor;
130 typedef HashMap<String, Mode, IgnoreCase_Hash, IgnoreCase_EqualTo> ModeMap;
132 enum HorizontalAlignment {
138 enum VerticalAlignment {
144 struct VirtualKeyPress {
154 class KeyPressQueue {
157 void toggleFlags(
byte fl);
159 void insertKey(KeyState key);
167 uint getInsertIndex();
168 bool hasStringChanged();
174 typedef List<VirtualKeyPress> KeyPressList;
180 KeyPressList::iterator _keyPos;
188 virtual ~VirtualKeyboard();
197 bool loadKeyboardPack(
const String &packName);
211 void close(
bool submit);
228 DisposablePtr<Archive> _fileArchive;
230 friend class VirtualKeyboardGUI;
231 VirtualKeyboardGUI *_kbdGUI;
233 KeyPressQueue _keyQueue;
235 friend class VirtualKeyboardParser;
236 VirtualKeyboardParser *_parser;
239 bool openPack(
const String &packName, Archive *searchPath, DisposeAfterUse::Flag disposeSearchPath);
241 bool checkModeResolutions();
242 void switchMode(Mode *newMode);
243 void switchMode(
const String &newMode);
245 void handleMouseDown(int16 x, int16 y);
246 void handleMouseUp(int16 x, int16 y);
247 String findArea(int16 x, int16 y);
248 void processAreaClick(
const String &area);
256 HorizontalAlignment _hAlignment;
257 VerticalAlignment _vAlignment;
Definition: algorithm.h:29