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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
/* 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.
*
*/
/*
* This code is based on Labyrinth of Time code with assistance of
*
* Copyright (c) 1993 Terra Nova Development
* Copyright (c) 2004 The Wyrmkeep Entertainment Co.
*
*/
#include "lab/vga.h"
#include "common/keyboard.h"
#ifndef LAB_INTEFACE_H
#define LAB_INTEFACE_H
namespace Lab {
struct IntuiMessage {
uint32 Class;
uint16 Code, Qualifier, MouseX, MouseY, GadgetID;
uint32 Seconds, Micros;
};
struct Gadget {
uint16 x, y, GadgetID;
#if !defined(DOSCODE)
uint16 KeyEquiv; // if not zero, a key that activates gadget
#endif
uint32 GadgetFlags;
Image *Im, *ImAlt;
Gadget *NextGadget;
};
extern Common::KeyState _keyPressed;
/* Defines for the GadgetFlags portion */
#define GADGETOFF 0x01
/* Defines for the Class variable in IntuiMessage */
#define SIZEVERIFY 0x00000001
#define NEWSIZE 0x00000002
#define REFRESHWINDOW 0x00000004
#define MOUSEBUTTONS 0x00000008
#define MOUSEMOVE 0x00000010
#define GADGETDOWN 0x00000020
#define GADGETUP 0x00000040
#define REQSET 0x00000080
#define MENUPICK 0x00000100
#define CLOSEWINDOW 0x00000200
#define RAWKEY 0x00000400
#define REQVERIFY 0x00000800
#define REQCLEAR 0x00001000
#define MENUVERIFY 0x00002000
#define NEWPREFS 0x00004000
#define DISKINSERTED 0x00008000
#define DISKREMOVED 0x00010000
#define WBENCHMESSAGE 0x00020000 /* System use only */
#define ACTIVEWINDOW 0x00040000
#define INACTIVEWINDOW 0x00080000
#define DELTAMOVE 0x00100000
#define VANULLLAKEY 0x00200000
/* Defines for the Qualifier variable in IntuiMessage */
#define IEQUALIFIER_LSHIFT 0x0001
#define IEQUALIFIER_RSHIFT 0x0002
#define IEQUALIFIER_CAPSLOCK 0x0004
#define IEQUALIFIER_CONTROL 0x0008
#define IEQUALIFIER_LALT 0x0010
#define IEQUALIFIER_RALT 0x0020
#define IEQUALIFIER_LCOMMAND 0x0040
#define IEQUALIFIER_RCOMMAND 0x0080
#define IEQUALIFIER_NUMERICPAD 0x0100
#define IEQUALIFIER_REPEAT 0x0200
#define IEQUALIFIER_INTERRUPT 0x0400
#define IEQUALIFIER_MULTIBROADCAST 0x0800
#define IEQUALIFIER_MIDBUTTON 0x1000
#define IEQUALIFIER_RBUTTON 0x2000
#define IEQUALIFIER_LEFTBUTTON 0x4000
#if !defined(DOSCODE)
// these values come from the SDL virtual key table
#define VKEY_UPARROW 273
#define VKEY_DNARROW 274
#define VKEY_RTARROW 275
#define VKEY_LTARROW 276
#endif
/*---------------------------------------------------------------------------*/
/*--------------------------- Function Prototypes ---------------------------*/
/*---------------------------------------------------------------------------*/
Gadget *createButton(uint16 x, uint16 y, uint16 id, uint16 key, Image *im, Image *imalt);
void freeButtonList(void *gptrlist);
void drawGadgetList(Gadget *gadlist);
void ghoastGadget(Gadget *curgad, uint16 pencolor);
void unGhoastGadget(Gadget *curgad);
IntuiMessage *getMsg(void);
void replyMsg(void *Msg);
} // End of namespace Lab
#endif /* LAB_INTEFACE_H */
|