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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
|
local text = ""
local textPos = { 100, 100 }
local cursorIn = 0
function RL.init()
RL.SetWindowTitle( "Events" )
RL.SetWindowState( RL.FLAG_WINDOW_RESIZABLE )
RL.SetWindowState( RL.FLAG_VSYNC_HINT )
RL.SetTextLineSpacing( 24 )
end
local function getEventType( event )
if event.type == RL.GLFW_WINDOW_SIZE_EVENT then
return "Window Size"
elseif event.type == RL.GLFW_WINDOW_MAXIMIZE_EVENT then
return "Window Maximized"
elseif event.type == RL.GLFW_WINDOW_ICONYFY_EVENT then
return "Window Iconyfy"
elseif event.type == RL.GLFW_WINDOW_FOCUS_EVENT then
return "Window Focus"
elseif event.type == RL.GLFW_WINDOW_DROP_EVENT then
return "Window Drop"
elseif event.type == RL.GLFW_KEY_EVENT then
return "Key"
elseif event.type == RL.GLFW_CHAR_EVENT then
return "Char"
elseif event.type == RL.GLFW_MOUSE_BUTTON_EVENT then
return "Mouse Button"
elseif event.type == RL.GLFW_MOUSE_CURSOR_POS_EVENT then
return "Mouse Cursor Position"
elseif event.type == RL.GLFW_MOUSE_SCROLL_EVENT then
return "Mouse Scroll"
elseif event.type == RL.GLFW_CURSOR_ENTER_EVENT then
return "Cursor Enter"
elseif event.type == RL.EVENT_JOYSTICK then
return "Joystick"
elseif event.type == RL.SDL_KEYBOARD_EVENT then
return "SDL_KEYBOARD_EVENT"
end
return "Unknown"
end
local function getAction( action )
if action == RL.GLFW_RELEASE then
return "Release"
elseif action == RL.GLFW_PRESS then
return "Press"
elseif action == RL.GLFW_REPEAT then
return "Repeat"
end
return "Unknown"
end
local function keyName( key )
for item, value in pairs( RL ) do
if value == key and string.match( item, "KEY_", 0 ) ~= nil and item ~= "KEY_MENU" then
return string.sub( item, 5 )
end
end
return "Unknown"
end
local mousePos = { 0, 0 }
local cursorMode = 1
-- local pen = {
-- state = RL.SDL_EVENT_PEN_UP,
-- pos = { 0, 0 },
-- pressure = 0,
-- down = false,
-- eraser = false,
-- }
function RL.event( event )
text = "Event: "..getEventType( event ).."\n"
if event.type == RL.GLFW_WINDOW_SIZE_EVENT then
text = text.."width: "..event.width.." height: "..event.height
elseif event.type == RL.GLFW_WINDOW_MAXIMIZE_EVENT then
text = text.."maximized: "..event.maximized
elseif event.type == RL.GLFW_WINDOW_ICONYFY_EVENT then
text = text.."iconified: "..event.iconified
elseif event.type == RL.GLFW_WINDOW_FOCUS_EVENT then
text = text.."focused: "..event.focused
elseif event.type == RL.GLFW_WINDOW_DROP_EVENT then
text = text.."count: "..event.count.."\n"
for _, path in ipairs( event.paths ) do
text = text..path.."\n"
end
elseif event.type == RL.GLFW_KEY_EVENT then
text = text.."key: "..event.key.." scancode: "..event.scancode.." action: "..getAction( event.action ).." mods: "..event.mods
text = text .."\nkeyName: "..keyName( event.key )
elseif event.type == RL.GLFW_CHAR_EVENT then
text = text.."key: "..event.key
-- text = text .."\nchar: "..string.char( event.key )
text = text .."\nchar: "..utf8.char( event.key )
elseif event.type == RL.GLFW_MOUSE_BUTTON_EVENT then
text = text.."button: "..event.button.." action: "..getAction( event.action ).." mods: "..event.mods
elseif event.type == RL.GLFW_MOUSE_CURSOR_POS_EVENT then
text = text.."x: "..event.x.." y: "..event.y
elseif event.type == RL.GLFW_MOUSE_SCROLL_EVENT then
text = text.."xoffset: "..event.xoffset.." yoffset: "..event.yoffset
elseif event.type == RL.GLFW_CURSOR_ENTER_EVENT then
text = text.."enter: "..event.enter
cursorIn = event.enter
elseif event.type == RL.EVENT_JOYSTICK then
text = text.."jid: "..event.jid.." event: "..event.event
if event.event == RL.GLFW_CONNECTED then
text = text.."\nConnected"
elseif event.event == RL.GLFW_DISCONNECTED then
text = text.."\nDisconnected"
end
end
-- Some SDL events.
-- text = event.type.."\n\n"
-- if event.type == RL.SDL_KEYDOWN or event.type == RL.SDL_KEYUP then
-- text = text.."state: "..event.state.." repeat: "..event.repeating
-- elseif event.type == RL.SDL_WINDOWEVENT then
-- text = text.."event: "..event.event.." "..event.data1.." "..event.data2
-- elseif event.type == RL.SDL_MOUSEMOTION then
-- text = text.."Pos: "..event.x..", "..event.y
-- elseif event.type == RL.SDL_MOUSEBUTTONDOWN or event.type == RL.SDL_MOUSEBUTTONUP then
-- text = text.."button "..event.button.." Pos: "..event.x..", "..event.y
-- elseif event.type == RL.SDL_MOUSEWHEEL then
-- text = text.."which "..event.which.." Scroll: "..event.x..", "..event.y
-- -- elseif event.type == RL.SDL_CONTROLLERAXISMOTION then
-- elseif event.type == RL.SDL_JOYAXISMOTION then
-- text = text.."which "..event.which.." Axis: "..event.axis.." Value: "..event.value
-- -- elseif event.type == RL.SDL_CONTROLLERBUTTONDOWN or event.type == RL.SDL_CONTROLLERBUTTONUP then
-- elseif event.type == RL.SDL_JOYBUTTONDOWN or event.type == RL.SDL_JOYBUTTONUP then
-- text = text.."which "..event.which.." Button: "..event.button.." State: "..event.state
-- end
-- Experimental GLFW pen tablet events.
-- if event.type == RL.GLFW_MOUSE_CURSOR_POS_EVENT then
-- mousePos = { event.x, event.y }
-- elseif event.type == RL.GLFW_PEN_TABLET_DATA_EVENT then
-- text = "x: "..event.x.." y: "..event.y.." pressure: "..event.pressure
-- text = text.."\nMouse Pos: "..mousePos[1]..", "..mousePos[2]
-- if cursorMode == 1 then
-- text = text.."\nMode: Pen"
-- elseif cursorMode == 2 then
-- text = text.."\nMode: Eraser"
-- end
-- elseif event.type == RL.GLFW_PEN_TABLET_CURSOR_EVENT then
-- cursorMode = event.identifier
-- elseif event.type == RL.GLFW_PEN_TABLET_PROXIMITY_EVENT then
-- print( event.state )
-- end
-- Some SDL3 events.
-- text = event.type.."\n\n"
-- if event.type == RL.SDL_EVENT_KEY_DOWN or event.type == RL.SDL_EVENT_KEY_UP then
-- text = text.."key: "..event.key.." repeat: "..tostring( event.repeating )
-- elseif event.type == RL.SDL_EVENT_PEN_AXIS then
-- text = text.."pen_state: "..event.pen_state.." axis: "..event.axis.." value: "..event.value
-- pen.pressure = event.value
-- pen.state = event.pen_state
-- pen.pos[1] = event.x
-- pen.pos[2] = event.y
-- elseif event.type == RL.SDL_EVENT_PEN_MOTION then
-- text = text.."pen_state: "..event.pen_state.." pos: "..event.x..", "..event.y
-- pen.pos[1] = event.x
-- pen.pos[2] = event.y
-- elseif event.type == RL.SDL_EVENT_PEN_DOWN or event.type == RL.SDL_EVENT_PEN_UP then
-- pen.down = event.down
-- pen.eraser = event.eraser
-- elseif event.type == RL.SDL_EVENT_CLIPBOARD_UPDATE then
-- print( "SDL_EVENT_CLIPBOARD_UPDATE:" )
-- for i, t in ipairs( event.mime_types ) do
-- print( i, t )
-- end
-- elseif event.type == RL.SDL_EVENT_GAMEPAD_AXIS_MOTION then
-- text = text.."axis: "..event.axis.."value: "..event.value
-- print( "axis: "..event.axis.." value: "..event.value )
-- elseif event.type == RL.SDL_EVENT_GAMEPAD_ADDED then
-- print( "SDL_EVENT_GAMEPAD_ADDED" )
-- end
end
-- local function drawSDL3PenCircle()
-- RL.DrawCircleLines( pen.pos, 32, RL.GREEN )
-- if pen.down then
-- RL.DrawCircle( pen.pos, pen.pressure * 32, pen.eraser and RL.YELLOW or RL.BLUE )
-- end
-- end
function RL.draw()
if 0 < cursorIn then
RL.ClearBackground( RL.RAYWHITE )
else
RL.ClearBackground( RL.RED )
end
-- drawSDL3PenCircle()
RL.DrawText( text, textPos, 20, RL.BLACK )
end
|