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
211
212
213
|
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 )
-- RL.EnableEventWaiting()
-- RL.DisableEventWaiting()
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
|