rubygl 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +13 -5
- data/.travis/push-rdoc-to-gh-pages.sh +22 -0
- data/.travis.yml +18 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +12 -0
- data/LICENSE +21 -21
- data/README.md +40 -0
- data/Rakefile +98 -83
- data/bin/ffi_code_gen.rb +166 -166
- data/bin/gl_code_gen.rb +458 -458
- data/examples/faceted_example.rb +71 -64
- data/examples/instanced_example.rb +135 -127
- data/examples/phong_example.rb +80 -71
- data/ext/windows/RubyGL.so +0 -0
- data/lib/rubygl/event.rb +64 -0
- data/lib/{RubyGL → rubygl}/geometry.rb +216 -211
- data/lib/{RubyGL → rubygl}/math.rb +300 -300
- data/lib/{RubyGL → rubygl}/memory.rb +125 -121
- data/lib/rubygl/native/all_enums.rb +641 -0
- data/lib/{RubyGL/Native → rubygl/native}/glcontext.rb +23 -47
- data/lib/{RubyGL/Native → rubygl/native}/include/GLContext.h +36 -36
- data/lib/{RubyGL/Native → rubygl/native}/include/Input.h +15 -15
- data/lib/{RubyGL/Native → rubygl/native}/include/Window.h +27 -27
- data/lib/rubygl/native/input.rb +247 -0
- data/lib/{RubyGL/Native → rubygl/native}/opengl.rb +2808 -2032
- data/lib/{RubyGL/Native → rubygl/native}/src/GLContext.c +72 -72
- data/lib/{RubyGL/Native → rubygl/native}/src/Input.c +25 -25
- data/lib/{RubyGL/Native → rubygl/native}/src/Window.c +57 -57
- data/lib/{RubyGL/Native → rubygl/native}/window.rb +24 -24
- data/lib/{RubyGL → rubygl}/setup.rb +50 -50
- data/lib/{RubyGL → rubygl}/shader.rb +203 -203
- data/lib/{RubyGL → rubygl}/util.rb +77 -77
- data/lib/rubygl.rb +49 -48
- data/{RubyGL.gemspec → rubygl.gemspec} +20 -23
- data/test/test_util.rb +19 -0
- metadata +36 -33
- data/lib/RubyGL/Native/input.rb +0 -13
- data/lib/RubyGL/callback.rb +0 -10
@@ -1,48 +1,24 @@
|
|
1
|
-
require 'ffi'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
:context_flags,
|
25
|
-
:context_profile_mask,
|
26
|
-
:share_with_current_context,
|
27
|
-
:framebuffer_srgb_capable ]
|
28
|
-
|
29
|
-
attach_function :loadLibrary, [:pointer], :int
|
30
|
-
attach_function :unloadLibrary, [], :void
|
31
|
-
attach_function :createContext, [:pointer], :pointer
|
32
|
-
attach_function :deleteContext, [:pointer], :void
|
33
|
-
attach_function :setAttribute, [:attr, :int], :int
|
34
|
-
attach_function :makeCurrent, [:pointer, :pointer], :int
|
35
|
-
attach_function :setSwapInterval, [:int], :int
|
36
|
-
attach_function :swapWindow, [:pointer], :void
|
37
|
-
|
38
|
-
# SDL_GLcontextFlag
|
39
|
-
attach_variable :CONTEXT_DEBUG_FLAG, :int
|
40
|
-
attach_variable :CONTEXT_FORWARD_COMPATIBLE_FLAG, :int
|
41
|
-
attach_variable :CONTEXT_ROBUST_ACCESS_FLAG, :int
|
42
|
-
attach_variable :CONTEXT_RESET_ISOLATION_FLAG, :int
|
43
|
-
|
44
|
-
# SDL_GLprofile
|
45
|
-
attach_variable :CONTEXT_PROFILE_CORE, :int
|
46
|
-
attach_variable :CONTEXT_PROFILE_COMPATIBILITY, :int
|
47
|
-
attach_variable :CONTEXT_PROFILE_ES, :int
|
1
|
+
require 'ffi'
|
2
|
+
require_relative './all_enums'
|
3
|
+
|
4
|
+
module RubyGL::Native
|
5
|
+
attach_function :loadLibrary, [:pointer], :int
|
6
|
+
attach_function :unloadLibrary, [], :void
|
7
|
+
attach_function :createContext, [:pointer], :pointer
|
8
|
+
attach_function :deleteContext, [:pointer], :void
|
9
|
+
attach_function :setAttribute, [:attribute, :int], :int
|
10
|
+
attach_function :makeCurrent, [:pointer, :pointer], :int
|
11
|
+
attach_function :setSwapInterval, [:int], :int
|
12
|
+
attach_function :swapWindow, [:pointer], :void
|
13
|
+
|
14
|
+
# SDL_GLcontextFlag
|
15
|
+
attach_variable :CONTEXT_DEBUG_FLAG, :int
|
16
|
+
attach_variable :CONTEXT_FORWARD_COMPATIBLE_FLAG, :int
|
17
|
+
attach_variable :CONTEXT_ROBUST_ACCESS_FLAG, :int
|
18
|
+
attach_variable :CONTEXT_RESET_ISOLATION_FLAG, :int
|
19
|
+
|
20
|
+
# SDL_GLprofile
|
21
|
+
attach_variable :CONTEXT_PROFILE_CORE, :int
|
22
|
+
attach_variable :CONTEXT_PROFILE_COMPATIBILITY, :int
|
23
|
+
attach_variable :CONTEXT_PROFILE_ES, :int
|
48
24
|
end
|
@@ -1,37 +1,37 @@
|
|
1
|
-
#ifndef GLCONTEXT_H
|
2
|
-
#define GLCONTEXT_H
|
3
|
-
|
4
|
-
#include "SDL.h"
|
5
|
-
|
6
|
-
int loadLibrary(const char* path);
|
7
|
-
|
8
|
-
void unloadLibrary(void);
|
9
|
-
|
10
|
-
SDL_GLContext createContext(SDL_Window* window);
|
11
|
-
|
12
|
-
void deleteContext(SDL_GLContext context);
|
13
|
-
|
14
|
-
int setAttribute(SDL_GLattr attr, int value);
|
15
|
-
|
16
|
-
int makeCurrent(SDL_Window* window, SDL_GLContext context);
|
17
|
-
|
18
|
-
int setSwapInterval(int interval);
|
19
|
-
|
20
|
-
void swapWindow(SDL_Window* window);
|
21
|
-
|
22
|
-
const SDL_GLattr RED_SIZE, GREEN_SIZE, BLUE_SIZE, ALPHA_SIZE, BUFFER_SIZE,
|
23
|
-
DOUBLEBUFFER, DEPTH_SIZE, STENCIL_SIZE, ACCUM_RED_SIZE,
|
24
|
-
ACCUM_GREEN_SIZE, ACCUM_BLUE_SIZE, ACCUM_ALPHA_SIZE, STEREO,
|
25
|
-
MULTISAMPLEBUFFERS, MULTISAMPLESAMPLES, ACCELERATED_VISUAL,
|
26
|
-
CONTEXT_MAJOR_VERSION, CONTEXT_MINOR_VERSION, CONTEXT_FLAGS,
|
27
|
-
CONTEXT_PROFILE_MASK, SHARE_WITH_CURRENT_CONTEXT,
|
28
|
-
FRAMEBUFFER_SRGB_CAPABLE;
|
29
|
-
|
30
|
-
const SDL_GLcontextFlag CONTEXT_DEBUG_FLAG, CONTEXT_FORWARD_COMPATIBLE_FLAG,
|
31
|
-
CONTEXT_ROBUST_ACCESS_FLAG,
|
32
|
-
CONTEXT_RESET_ISOLATION_FLAG;
|
33
|
-
|
34
|
-
const SDL_GLprofile CONTEXT_PROFILE_CORE, CONTEXT_PROFILE_COMPATIBILITY,
|
35
|
-
CONTEXT_PROFILE_ES;
|
36
|
-
|
1
|
+
#ifndef GLCONTEXT_H
|
2
|
+
#define GLCONTEXT_H
|
3
|
+
|
4
|
+
#include "SDL.h"
|
5
|
+
|
6
|
+
int loadLibrary(const char* path);
|
7
|
+
|
8
|
+
void unloadLibrary(void);
|
9
|
+
|
10
|
+
SDL_GLContext createContext(SDL_Window* window);
|
11
|
+
|
12
|
+
void deleteContext(SDL_GLContext context);
|
13
|
+
|
14
|
+
int setAttribute(SDL_GLattr attr, int value);
|
15
|
+
|
16
|
+
int makeCurrent(SDL_Window* window, SDL_GLContext context);
|
17
|
+
|
18
|
+
int setSwapInterval(int interval);
|
19
|
+
|
20
|
+
void swapWindow(SDL_Window* window);
|
21
|
+
|
22
|
+
const SDL_GLattr RED_SIZE, GREEN_SIZE, BLUE_SIZE, ALPHA_SIZE, BUFFER_SIZE,
|
23
|
+
DOUBLEBUFFER, DEPTH_SIZE, STENCIL_SIZE, ACCUM_RED_SIZE,
|
24
|
+
ACCUM_GREEN_SIZE, ACCUM_BLUE_SIZE, ACCUM_ALPHA_SIZE, STEREO,
|
25
|
+
MULTISAMPLEBUFFERS, MULTISAMPLESAMPLES, ACCELERATED_VISUAL,
|
26
|
+
CONTEXT_MAJOR_VERSION, CONTEXT_MINOR_VERSION, CONTEXT_FLAGS,
|
27
|
+
CONTEXT_PROFILE_MASK, SHARE_WITH_CURRENT_CONTEXT,
|
28
|
+
FRAMEBUFFER_SRGB_CAPABLE;
|
29
|
+
|
30
|
+
const SDL_GLcontextFlag CONTEXT_DEBUG_FLAG, CONTEXT_FORWARD_COMPATIBLE_FLAG,
|
31
|
+
CONTEXT_ROBUST_ACCESS_FLAG,
|
32
|
+
CONTEXT_RESET_ISOLATION_FLAG;
|
33
|
+
|
34
|
+
const SDL_GLprofile CONTEXT_PROFILE_CORE, CONTEXT_PROFILE_COMPATIBILITY,
|
35
|
+
CONTEXT_PROFILE_ES;
|
36
|
+
|
37
37
|
#endif // GLCONTEXT_H
|
@@ -1,16 +1,16 @@
|
|
1
|
-
#ifndef INPUT_H
|
2
|
-
#define INPUT_H
|
3
|
-
|
4
|
-
#include "SDL.h"
|
5
|
-
|
6
|
-
int initInput();
|
7
|
-
|
8
|
-
void quitInput();
|
9
|
-
|
10
|
-
void addEventWatch(SDL_EventFilter filter, void* userdata);
|
11
|
-
|
12
|
-
void deleteEventWatch(SDL_EventFilter filter, void* userdata);
|
13
|
-
|
14
|
-
void pumpEvents(void);
|
15
|
-
|
1
|
+
#ifndef INPUT_H
|
2
|
+
#define INPUT_H
|
3
|
+
|
4
|
+
#include "SDL.h"
|
5
|
+
|
6
|
+
int initInput();
|
7
|
+
|
8
|
+
void quitInput();
|
9
|
+
|
10
|
+
void addEventWatch(SDL_EventFilter filter, void* userdata);
|
11
|
+
|
12
|
+
void deleteEventWatch(SDL_EventFilter filter, void* userdata);
|
13
|
+
|
14
|
+
void pumpEvents(void);
|
15
|
+
|
16
16
|
#endif // INPUT_H
|
@@ -1,28 +1,28 @@
|
|
1
|
-
#ifndef WINDOW_H
|
2
|
-
#define WINDOW_H
|
3
|
-
|
4
|
-
#include "SDL.h"
|
5
|
-
|
6
|
-
int initWindow();
|
7
|
-
|
8
|
-
void quitWindow();
|
9
|
-
|
10
|
-
SDL_Window* createWindow(const char* title, int x, int y, int w, int h,
|
11
|
-
Uint32 flags);
|
12
|
-
|
13
|
-
void destroyWindow(SDL_Window* window);
|
14
|
-
|
15
|
-
void hideWindow(SDL_Window* window);
|
16
|
-
|
17
|
-
void showWindow(SDL_Window* window);
|
18
|
-
|
19
|
-
int setWindowBrightness(SDL_Window* window, float brightness);
|
20
|
-
|
21
|
-
int showSimpleMessageBox(Uint32 flags, const char* title, const char* message,
|
22
|
-
SDL_Window* window);
|
23
|
-
|
24
|
-
const SDL_WindowFlags FULLSCREEN, OPENGL, SHOWN, HIDDEN, BORDERLESS, RESIZABLE,
|
25
|
-
MINIMIZED, MAXIMIZED, INPUT_GRABBED, INPUT_FOCUS,
|
26
|
-
MOUSE_FOCUS, FULLSCREEN_DESKTOP , FOREIGN, ALLOW_HIGHDPI;
|
27
|
-
|
1
|
+
#ifndef WINDOW_H
|
2
|
+
#define WINDOW_H
|
3
|
+
|
4
|
+
#include "SDL.h"
|
5
|
+
|
6
|
+
int initWindow();
|
7
|
+
|
8
|
+
void quitWindow();
|
9
|
+
|
10
|
+
SDL_Window* createWindow(const char* title, int x, int y, int w, int h,
|
11
|
+
Uint32 flags);
|
12
|
+
|
13
|
+
void destroyWindow(SDL_Window* window);
|
14
|
+
|
15
|
+
void hideWindow(SDL_Window* window);
|
16
|
+
|
17
|
+
void showWindow(SDL_Window* window);
|
18
|
+
|
19
|
+
int setWindowBrightness(SDL_Window* window, float brightness);
|
20
|
+
|
21
|
+
int showSimpleMessageBox(Uint32 flags, const char* title, const char* message,
|
22
|
+
SDL_Window* window);
|
23
|
+
|
24
|
+
const SDL_WindowFlags FULLSCREEN, OPENGL, SHOWN, HIDDEN, BORDERLESS, RESIZABLE,
|
25
|
+
MINIMIZED, MAXIMIZED, INPUT_GRABBED, INPUT_FOCUS,
|
26
|
+
MOUSE_FOCUS, FULLSCREEN_DESKTOP , FOREIGN, ALLOW_HIGHDPI;
|
27
|
+
|
28
28
|
#endif // WINDOW_H
|
@@ -0,0 +1,247 @@
|
|
1
|
+
require 'ffi'
|
2
|
+
require_relative './all_enums'
|
3
|
+
|
4
|
+
module RubyGL::Native
|
5
|
+
attach_function :initInput, [], :int
|
6
|
+
attach_function :quitInput, [], :void
|
7
|
+
attach_function :addEventWatch, [:pointer, :pointer], :void
|
8
|
+
attach_function :deleteEventWatch, [:pointer, :pointer], :void
|
9
|
+
attach_function :pumpEvents, [], :void
|
10
|
+
|
11
|
+
# Overlaps With Layout Of Other Events; Used To Figure Out Current Event
|
12
|
+
class CommonEvent < FFI::Struct
|
13
|
+
layout :type, :uint32,
|
14
|
+
:timestamp, :uint32
|
15
|
+
end
|
16
|
+
|
17
|
+
# WindowEvents Are Identified By:
|
18
|
+
# :window_event
|
19
|
+
class WindowEvent < FFI::Struct
|
20
|
+
layout :type, :uint32,
|
21
|
+
:timestamp, :uint32,
|
22
|
+
:window_id, :uint32,
|
23
|
+
:event, :uint8,
|
24
|
+
:padding1, :uint8,
|
25
|
+
:padding2, :uint8,
|
26
|
+
:padding3, :uint8,
|
27
|
+
:data1, :int32,
|
28
|
+
:data2, :int32
|
29
|
+
end
|
30
|
+
|
31
|
+
# KeyboardEvents Are Identified By:
|
32
|
+
# :key_down
|
33
|
+
# :key_up
|
34
|
+
class Keysym < FFI::Struct
|
35
|
+
layout :scan_code, :scancode,
|
36
|
+
:sym, :keycode,
|
37
|
+
:mod, :uint16,
|
38
|
+
:unused, :uint32
|
39
|
+
end
|
40
|
+
class KeyboardEvent < FFI::Struct
|
41
|
+
layout :type, :uint32,
|
42
|
+
:timestamp, :uint32,
|
43
|
+
:window_id, :uint32,
|
44
|
+
:state, :uint8,
|
45
|
+
:repeat, :uint8,
|
46
|
+
:padding1, :uint8,
|
47
|
+
:padding2, :uint8,
|
48
|
+
:keysym, Keysym
|
49
|
+
end
|
50
|
+
|
51
|
+
# TextEditingEvents Are Identified By:
|
52
|
+
# :text_editing
|
53
|
+
class TextEditingEvent < FFI::Struct
|
54
|
+
layout :type, :uint32,
|
55
|
+
:timestamp, :uint32,
|
56
|
+
:window_id, :uint32,
|
57
|
+
:text, [:uint8, 32], # The Value Of SDL_TEXTEDITINGEVENT_TEXT_SIZE Is 32
|
58
|
+
:start, :int32,
|
59
|
+
:length, :int32
|
60
|
+
end
|
61
|
+
|
62
|
+
# TextInputEvents Are Identified By:
|
63
|
+
# :text_input
|
64
|
+
class TextInputEvent < FFI::Struct
|
65
|
+
layout :type, :uint32,
|
66
|
+
:timestamp, :uint32,
|
67
|
+
:window_id, :uint32,
|
68
|
+
:text, [:uint8, 32] # The Value Of SDL_TEXTEDITINGEVENT_TEXT_SIZE Is 32
|
69
|
+
end
|
70
|
+
|
71
|
+
# MouseMotionEvents Are Identified By:
|
72
|
+
# :mouse_motion
|
73
|
+
class MouseMotionEvent < FFI::Struct
|
74
|
+
layout :type, :uint32,
|
75
|
+
:timestamp, :uint32,
|
76
|
+
:window_id, :uint32,
|
77
|
+
:which, :uint32,
|
78
|
+
:state, :uint32,
|
79
|
+
:x, :int32,
|
80
|
+
:y, :int32,
|
81
|
+
:xrel, :int32,
|
82
|
+
:yrel, :int32
|
83
|
+
end
|
84
|
+
|
85
|
+
# MouseButtonEvents Are Identified By:
|
86
|
+
# :mouse_button_down
|
87
|
+
# :mouse_button_up
|
88
|
+
class MouseButtonEvent < FFI::Struct
|
89
|
+
layout :type, :uint32,
|
90
|
+
:timestamp, :uint32,
|
91
|
+
:window_id, :uint32,
|
92
|
+
:which, :uint32,
|
93
|
+
:button, :uint8,
|
94
|
+
:state, :uint8,
|
95
|
+
:clicks, :uint8,
|
96
|
+
:padding1, :uint8,
|
97
|
+
:x, :int32,
|
98
|
+
:y, :int32
|
99
|
+
end
|
100
|
+
|
101
|
+
# MouseWheelEvents Are Identified By:
|
102
|
+
# :mouse_wheel
|
103
|
+
class MouseWheelEvent < FFI::Struct
|
104
|
+
layout :type, :uint32,
|
105
|
+
:timestamp, :uint32,
|
106
|
+
:window_id, :uint32,
|
107
|
+
:which, :uint32,
|
108
|
+
:x, :int32,
|
109
|
+
:y, :int32
|
110
|
+
end
|
111
|
+
|
112
|
+
# JoyAxisEvents Are Identified By:
|
113
|
+
# :joy_axis_motion
|
114
|
+
class JoyAxisEvent < FFI::Struct
|
115
|
+
layout :type, :uint32,
|
116
|
+
:timestamp, :uint32,
|
117
|
+
:which, :int32,
|
118
|
+
:axis, :uint8,
|
119
|
+
:padding1, :uint8,
|
120
|
+
:padding2, :uint8,
|
121
|
+
:padding3, :uint8,
|
122
|
+
:value, :int16,
|
123
|
+
:padding4, :uint16
|
124
|
+
end
|
125
|
+
|
126
|
+
# JoyBallEvents Are Identified By:
|
127
|
+
# :joy_ball_motion
|
128
|
+
class JoyBallEvent < FFI::Struct
|
129
|
+
layout :type, :uint32,
|
130
|
+
:timestamp, :uint32,
|
131
|
+
:which, :int32,
|
132
|
+
:ball, :uint8,
|
133
|
+
:padding1, :uint8,
|
134
|
+
:padding2, :uint8,
|
135
|
+
:padding3, :uint8,
|
136
|
+
:xrel, :int16,
|
137
|
+
:yrel, :int16
|
138
|
+
end
|
139
|
+
|
140
|
+
# JoyHatEvents Are Identified By:
|
141
|
+
# :joy_hat_motion
|
142
|
+
class JoyHatEvent < FFI::Struct
|
143
|
+
layout :type, :uint32,
|
144
|
+
:timestamp, :uint32,
|
145
|
+
:which, :int32,
|
146
|
+
:hat, :uint8,
|
147
|
+
:value, :uint8,
|
148
|
+
:padding1, :uint8,
|
149
|
+
:padding2, :uint8
|
150
|
+
end
|
151
|
+
|
152
|
+
# JoyButtonEvents Are Identified By:
|
153
|
+
# :joy_button_down
|
154
|
+
# :joy_button_up
|
155
|
+
class JoyButtonEvent < FFI::Struct
|
156
|
+
layout :type, :uint32,
|
157
|
+
:timestamp, :uint32,
|
158
|
+
:which, :int32,
|
159
|
+
:button, :uint8,
|
160
|
+
:state, :uint8,
|
161
|
+
:padding1, :uint8,
|
162
|
+
:padding2, :uint8
|
163
|
+
end
|
164
|
+
|
165
|
+
# JoyDeviceEvents Are Identified By:
|
166
|
+
# :joy_device_added
|
167
|
+
# :joy_device_removed
|
168
|
+
class JoyDeviceEvent < FFI::Struct
|
169
|
+
layout :type, :uint32,
|
170
|
+
:timestamp, :uint32,
|
171
|
+
:which, :int32
|
172
|
+
end
|
173
|
+
|
174
|
+
# ControllerAxisEvents Are Identified By:
|
175
|
+
# :conroller_axis_motion
|
176
|
+
class ControllerAxisEvent < FFI::Struct
|
177
|
+
layout :type, :uint32,
|
178
|
+
:timestamp, :uint32,
|
179
|
+
:which, :int32,
|
180
|
+
:axis, :uint8,
|
181
|
+
:padding1, :uint8,
|
182
|
+
:padding2, :uint8,
|
183
|
+
:padding3, :uint8,
|
184
|
+
:value, :int16,
|
185
|
+
:padding4, :uint16
|
186
|
+
end
|
187
|
+
|
188
|
+
# ControllerButtonEvents Are Identified By:
|
189
|
+
# :controller_button_down
|
190
|
+
# :controller_button_up
|
191
|
+
class ControllerButtonEvent < FFI::Struct
|
192
|
+
layout :type, :uint32,
|
193
|
+
:timestamp, :uint32,
|
194
|
+
:which, :int32,
|
195
|
+
:button, :uint8,
|
196
|
+
:state, :uint8,
|
197
|
+
:padding1, :uint8,
|
198
|
+
:padding2, :uint8
|
199
|
+
end
|
200
|
+
|
201
|
+
# ControllerDeviceEvents Are Identified By:
|
202
|
+
# :controller_device_added
|
203
|
+
# :controller_device_removed
|
204
|
+
# :controller_device_remapped
|
205
|
+
class ControllerDeviceEvent < FFI::Struct
|
206
|
+
layout :type, :uint32,
|
207
|
+
:timestamp, :uint32,
|
208
|
+
:which, :int32
|
209
|
+
end
|
210
|
+
|
211
|
+
# DropEvents Are Identified By:
|
212
|
+
# :drop_file
|
213
|
+
class DropEvent < FFI::Struct
|
214
|
+
layout :type, :uint32,
|
215
|
+
:timestamp, :uint32,
|
216
|
+
:file, :string
|
217
|
+
end
|
218
|
+
|
219
|
+
# QuitEvents Are Identified By:
|
220
|
+
# :quit
|
221
|
+
class QuitEvent < FFI::Struct
|
222
|
+
layout :type, :uint32,
|
223
|
+
:timestamp, :uint32
|
224
|
+
end
|
225
|
+
|
226
|
+
class Event < FFI::Union
|
227
|
+
layout :common, CommonEvent,
|
228
|
+
:window, WindowEvent,
|
229
|
+
:key, KeyboardEvent,
|
230
|
+
:edit, TextEditingEvent,
|
231
|
+
:text, TextInputEvent,
|
232
|
+
:motion, MouseMotionEvent,
|
233
|
+
:button, MouseButtonEvent,
|
234
|
+
:wheel, MouseWheelEvent,
|
235
|
+
:jaxis, JoyAxisEvent,
|
236
|
+
:jball, JoyBallEvent,
|
237
|
+
:jhat, JoyHatEvent,
|
238
|
+
:jbutton, JoyButtonEvent,
|
239
|
+
:jdevice, JoyDeviceEvent,
|
240
|
+
:caxis, ControllerAxisEvent,
|
241
|
+
:cbutton, ControllerButtonEvent,
|
242
|
+
:cdevice, ControllerDeviceEvent,
|
243
|
+
:quit, QuitEvent,
|
244
|
+
:drop, DropEvent
|
245
|
+
end
|
246
|
+
|
247
|
+
end
|