gosu 0.8.6-x64-mingw32

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.
Files changed (63) hide show
  1. checksums.yaml +7 -0
  2. data/Gosu/Audio.hpp +171 -0
  3. data/Gosu/AutoLink.hpp +16 -0
  4. data/Gosu/Bitmap.hpp +96 -0
  5. data/Gosu/Buttons.hpp +265 -0
  6. data/Gosu/Color.hpp +204 -0
  7. data/Gosu/Directories.hpp +36 -0
  8. data/Gosu/Font.hpp +83 -0
  9. data/Gosu/Fwd.hpp +31 -0
  10. data/Gosu/Gosu.hpp +34 -0
  11. data/Gosu/Graphics.hpp +115 -0
  12. data/Gosu/GraphicsBase.hpp +110 -0
  13. data/Gosu/IO.hpp +269 -0
  14. data/Gosu/Image.hpp +122 -0
  15. data/Gosu/ImageData.hpp +61 -0
  16. data/Gosu/Input.hpp +149 -0
  17. data/Gosu/Inspection.hpp +14 -0
  18. data/Gosu/Math.hpp +135 -0
  19. data/Gosu/Platform.hpp +93 -0
  20. data/Gosu/Sockets.hpp +156 -0
  21. data/Gosu/TR1.hpp +56 -0
  22. data/Gosu/Text.hpp +71 -0
  23. data/Gosu/TextInput.hpp +70 -0
  24. data/Gosu/Timing.hpp +16 -0
  25. data/Gosu/Utility.hpp +28 -0
  26. data/Gosu/Version.hpp +19 -0
  27. data/Gosu/WinUtility.hpp +75 -0
  28. data/Gosu/Window.hpp +145 -0
  29. data/examples/ChipmunkIntegration.rb +275 -0
  30. data/examples/CptnRuby.rb +223 -0
  31. data/examples/GosuZen.rb +68 -0
  32. data/examples/MoreChipmunkAndRMagick.rb +155 -0
  33. data/examples/OpenGLIntegration.rb +226 -0
  34. data/examples/RMagickIntegration.rb +417 -0
  35. data/examples/TextInput.rb +154 -0
  36. data/examples/Tutorial.rb +131 -0
  37. data/examples/media/Beep.wav +0 -0
  38. data/examples/media/CptnRuby Gem.png +0 -0
  39. data/examples/media/CptnRuby Map.txt +25 -0
  40. data/examples/media/CptnRuby Tileset.png +0 -0
  41. data/examples/media/CptnRuby.png +0 -0
  42. data/examples/media/Cursor.png +0 -0
  43. data/examples/media/Earth.png +0 -0
  44. data/examples/media/Explosion.wav +0 -0
  45. data/examples/media/Landscape.svg +10 -0
  46. data/examples/media/LargeStar.png +0 -0
  47. data/examples/media/Smoke.png +0 -0
  48. data/examples/media/Soldier.png +0 -0
  49. data/examples/media/Space.png +0 -0
  50. data/examples/media/Star.png +0 -0
  51. data/examples/media/Starfighter.bmp +0 -0
  52. data/lib/gosu.rb +20 -0
  53. data/lib/gosu/patches.rb +81 -0
  54. data/lib/gosu/preview.rb +139 -0
  55. data/lib/gosu/run.rb +11 -0
  56. data/lib/gosu/swig_patches.rb +60 -0
  57. data/lib/gosu/zen.rb +89 -0
  58. data/lib64/2.1/gosu.so +0 -0
  59. data/lib64/FreeImage.dll +0 -0
  60. data/lib64/OpenAL32.dll +0 -0
  61. data/lib64/SDL2.dll +0 -0
  62. data/lib64/libsndfile.dll +0 -0
  63. metadata +110 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7f282d54c20fe0e84512af2478321dacbe7e07ea
4
+ data.tar.gz: c14fe19a090cabe204765e8084e0af97531cefed
5
+ SHA512:
6
+ metadata.gz: b05d18e2b574b9a8f24c2fdd3bba60657d080031d3e579d8ba684c06f99f04804707a77c0a15fe5fdbe6ef2616b41b083b645cbe70a91339b29e3f4523cdb694
7
+ data.tar.gz: 8ec21f369a02cb2b46af9965d4bad34a1d279652dcd465e115111e73ba26d36e8700ae4b9bc9bf7ddb0f503838bf5c7b2eb1d730d086fecf311504c923c700ba
@@ -0,0 +1,171 @@
1
+ //! \file Audio.hpp
2
+ //! Contains all the classes of Gosu's audio system.
3
+
4
+ #ifndef GOSU_AUDIO_HPP
5
+ #define GOSU_AUDIO_HPP
6
+
7
+ #ifdef WIN32
8
+ #ifndef NOMINMAX
9
+ #define NOMINMAX
10
+ #endif
11
+ #include <windows.h>
12
+ #endif
13
+ #include <Gosu/Fwd.hpp>
14
+ #include <Gosu/IO.hpp>
15
+ #include <Gosu/Platform.hpp>
16
+ #include <Gosu/TR1.hpp>
17
+ #include <memory>
18
+ #include <string>
19
+
20
+ namespace Gosu
21
+ {
22
+ // Deprecated.
23
+ #ifndef SWIG
24
+ class GOSU_DEPRECATED Audio;
25
+ #endif
26
+
27
+ //! An instance of a Sample playing. Can be used to stop sounds dynamically,
28
+ //! or to check if they are finished.
29
+ //! It is recommended that you throw away sample instances if possible,
30
+ //! as they could accidentally refer to other sounds being played after
31
+ //! a very long time has passed.
32
+ class SampleInstance
33
+ {
34
+ int handle, extra;
35
+ bool alive() const;
36
+
37
+ public:
38
+ //! Called by Sample, do not use.
39
+ SampleInstance(int handle, int extra);
40
+
41
+ bool playing() const;
42
+ bool paused() const;
43
+ //! Pauses this instance to be resumed afterwards. It will still keep a channel filled while paused.
44
+ void pause();
45
+ void resume();
46
+ //! Stops this instance of a sound being played.
47
+ //! Calling this twice, or too late, does not do any harm.
48
+ void stop();
49
+
50
+ //! \param volume Can be anything from 0.0 (silence) to 1.0 (full
51
+ //! volume).
52
+ void changeVolume(double volume);
53
+ //! \param pan Can be anything from -1.0 (left) to 1.0 (right).
54
+ void changePan(double pan);
55
+ //! \param speed Playback speed is only limited by FMOD's
56
+ //! capabilities and can accept very high or low values. Use 1.0 for
57
+ //! normal playback speed.
58
+ void changeSpeed(double speed);
59
+ };
60
+
61
+ //! A sample is a short sound that is completely loaded in memory, can be
62
+ //! played multiple times at once and offers very flexible playback
63
+ //! parameters. Use samples for everything that's not music.
64
+ class Sample
65
+ {
66
+ struct SampleData;
67
+ std::tr1::shared_ptr<SampleData> data;
68
+
69
+ public:
70
+ //! Constructs a sample that can be played on the specified audio
71
+ //! system and loads the sample from a file.
72
+ explicit Sample(const std::wstring& filename);
73
+
74
+ //! Constructs a sample that can be played on the specified audio
75
+ //! system and loads the sample data from a stream.
76
+ explicit Sample(Reader reader);
77
+
78
+ //! Plays the sample without panning.
79
+ //! \param volume Can be anything from 0.0 (silence) to 1.0 (full
80
+ //! volume).
81
+ //! \param speed Playback speed is only limited by the underlying audio library,
82
+ //! and can accept very high or low values. Use 1.0 for
83
+ //! normal playback speed.
84
+ SampleInstance play(double volume = 1, double speed = 1,
85
+ bool looping = false) const;
86
+
87
+ //! Plays the sample with panning. Even if pan is 0.0, the sample will
88
+ //! not be as loud as if it were played by calling play() due to the
89
+ //! way the panning works.
90
+ //! \param pan Can be anything from -1.0 (left) to 1.0 (right).
91
+ //! \param volume Can be anything from 0.0 (silence) to 1.0 (full
92
+ //! volume).
93
+ //! \param speed Playback speed is only limited by by the underlying audio library,
94
+ //! and can accept very high
95
+ //! or low values. Use 1.0 for normal playback speed.
96
+ SampleInstance playPan(double pan, double volume = 1, double speed = 1,
97
+ bool looping = false) const;
98
+
99
+ #ifndef SWIG
100
+ GOSU_DEPRECATED Sample(Audio& audio, const std::wstring& filename);
101
+ GOSU_DEPRECATED Sample(Audio& audio, Reader reader);
102
+ #endif
103
+ };
104
+
105
+ //! Songs are less flexible than samples in that they can only be played
106
+ //! one at a time and without panning or speed parameters.
107
+ class Song
108
+ {
109
+ class BaseData;
110
+ class ModuleData;
111
+ class StreamData;
112
+ GOSU_UNIQUE_PTR<BaseData> data;
113
+
114
+ #if defined(GOSU_CPP11_ENABLED)
115
+ Song(Song&&) = delete;
116
+ Song& operator=(Song&&) = delete;
117
+ Song(const Song&) = delete;
118
+ Song& operator=(const Song&) = delete;
119
+ #else
120
+ Song(const Song&);
121
+ Song& operator=(const Song&);
122
+ #endif
123
+
124
+ public:
125
+ //! Constructs a song that can be played on the provided audio system
126
+ //! and loads the song from a file. The type is determined from the
127
+ //! filename.
128
+ explicit Song(const std::wstring& filename);
129
+
130
+ //! Constructs a song of the specified type that can be played on the
131
+ //! provided audio system and loads the song data from a stream.
132
+ explicit Song(Reader reader);
133
+
134
+ ~Song();
135
+
136
+ //! Returns the song currently being played or paused, or 0 if
137
+ //! no song has been played yet or the last song has finished
138
+ //! playing.
139
+ static Song* currentSong();
140
+
141
+ //! Starts or resumes playback of the song. This will stop all other
142
+ //! songs and set the current song to this object.
143
+ void play(bool looping = false);
144
+ //! Pauses playback of the song. It is not considered being played.
145
+ //! currentSong will stay the same.
146
+ void pause();
147
+ //! Returns true if the song is the current song, but in paused
148
+ //! mode.
149
+ bool paused() const;
150
+ //! Stops playback of this song if it is currently played or paused.
151
+ //! Afterwards, currentSong will return 0.
152
+ void stop();
153
+ //! Returns true if the song is currently playing.
154
+ bool playing() const;
155
+ //! Returns the current volume of the song.
156
+ double volume() const;
157
+ //! Changes the volume of the song.
158
+ void changeVolume(double volume);
159
+
160
+ //! Called every tick by Window for management purposes.
161
+ static void update();
162
+
163
+ #ifndef SWIG
164
+ enum Type { stStream, stModule };
165
+ GOSU_DEPRECATED Song(Audio&, const std::wstring& filename);
166
+ GOSU_DEPRECATED Song(Audio&, Type type, Reader reader);
167
+ #endif
168
+ };
169
+ }
170
+
171
+ #endif
@@ -0,0 +1,16 @@
1
+ //! \file AutoLink.hpp
2
+ //! Contains pragmas that make MSVC link against all the necessary libraries
3
+ //! automatically.
4
+
5
+ #ifdef _MSC_VER
6
+ #ifndef GOSU_AUTOLINK_HPP
7
+ #define GOSU_AUTOLINK_HPP
8
+
9
+ #ifdef NDEBUG
10
+ #pragma comment(lib, "Gosu.lib")
11
+ #else
12
+ #pragma comment(lib, "GosuDebug.lib")
13
+ #endif
14
+
15
+ #endif
16
+ #endif
@@ -0,0 +1,96 @@
1
+ //! \file Bitmap.hpp
2
+ //! Interface of the Bitmap class.
3
+
4
+ #ifndef GOSU_BITMAP_HPP
5
+ #define GOSU_BITMAP_HPP
6
+
7
+ #include <Gosu/Color.hpp>
8
+ #include <Gosu/Fwd.hpp>
9
+ #include <Gosu/GraphicsBase.hpp>
10
+ #include <Gosu/Platform.hpp>
11
+ #include <string>
12
+ #include <vector>
13
+
14
+ namespace Gosu
15
+ {
16
+ //! Rectangular area of pixels, each represented by a Color value. Provides
17
+ //! minimal drawing functionality and serves as a temporary holder for
18
+ //! graphical resources which are usually turned into Images later.
19
+ //! Has (expensive) value semantics.
20
+ class Bitmap
21
+ {
22
+ unsigned w, h;
23
+ std::vector<Color> pixels;
24
+
25
+ public:
26
+ Bitmap() : w(0), h(0) {}
27
+ Bitmap(unsigned w, unsigned h, Color c = Color::NONE) : w(w), h(h), pixels(w * h, c) {}
28
+
29
+ unsigned width() const { return w; }
30
+ unsigned height() const { return h; }
31
+
32
+ void swap(Bitmap& other);
33
+
34
+ void resize(unsigned width, unsigned height, Color c = Color::NONE);
35
+
36
+ //! Returns the color at the specified position. x and y must be on the
37
+ //! bitmap.
38
+ Color getPixel(unsigned x, unsigned y) const { return pixels[y * w + x]; }
39
+
40
+ //! Sets the pixel at the specified position to a color. x and y must
41
+ //! be on the bitmap.
42
+ void setPixel(unsigned x, unsigned y, Color c) { pixels[y * w + x] = c; }
43
+
44
+ //! Inserts a bitmap at the given position. Parts of the inserted
45
+ //! bitmap that would be outside of the target bitmap will be
46
+ //! clipped away.
47
+ void insert(const Bitmap& source, int x, int y);
48
+
49
+ //! Inserts a portion of a bitmap at the given position. Parts of the
50
+ //! inserted bitmap that would be outside of the target bitmap will be
51
+ //! clipped away.
52
+ void insert(const Bitmap& source, int x, int y, unsigned srcX,
53
+ unsigned srcY, unsigned srcWidth, unsigned srcHeight);
54
+
55
+ //! Direct access to the array of color values. May be useful for optimized
56
+ //! OpenGL operations.
57
+ const Color* data() const { return &pixels[0]; }
58
+ Color* data() { return &pixels[0]; }
59
+
60
+ // Work with data() instead if you need fast operations.
61
+ GOSU_DEPRECATED void fill(Color c);
62
+ GOSU_DEPRECATED void replace(Color oldColor, Color newColor);
63
+ };
64
+
65
+ //! Loads any supported image into a Bitmap.
66
+ void loadImageFile(Bitmap& bitmap, const std::wstring& filename);
67
+ //! Loads any supported image into a Bitmap.
68
+ void loadImageFile(Bitmap& bitmap, Reader input);
69
+
70
+ //! Saves a Bitmap to a file.
71
+ void saveImageFile(const Bitmap& bitmap, const std::wstring& filename);
72
+ //! Saves a Bitmap to an arbitrary resource.
73
+ void saveImageFile(const Bitmap& bitmap, Gosu::Writer writer,
74
+ const std::wstring& formatHint = L"png");
75
+
76
+ //! Set the alpha value of all pixels which are equal to the color key
77
+ //! to zero. Color values are adjusted so that no borders show up when
78
+ //! the image is stretched or rotated.
79
+ void applyColorKey(Bitmap& bitmap, Color key);
80
+
81
+ //! The reverse of applyColorKey. Resets all fully transparent pixels by
82
+ //! a background color, makes all other pixels fully opaque.
83
+ void unapplyColorKey(Bitmap& bitmap, Color background);
84
+
85
+ void applyBorderFlags(Bitmap& dest, const Bitmap& source,
86
+ unsigned srcX, unsigned srcY, unsigned srcWidth, unsigned srcHeight,
87
+ unsigned borderFlags);
88
+
89
+ // Use loadImageFile/saveImageFile instead.
90
+ GOSU_DEPRECATED Reader loadFromBMP(Bitmap& bmp, Reader reader);
91
+ GOSU_DEPRECATED Writer saveToBMP(const Bitmap& bmp, Writer writer);
92
+ GOSU_DEPRECATED Reader loadFromPNG(Bitmap& bmp, Reader reader);
93
+ GOSU_DEPRECATED Writer saveToPNG(const Bitmap& bmp, Writer writer);
94
+ }
95
+
96
+ #endif
@@ -0,0 +1,265 @@
1
+ #ifndef GOSU_BUTTONS_HPP
2
+ #define GOSU_BUTTONS_HPP
3
+
4
+ #include <Gosu/Platform.hpp>
5
+
6
+ #ifdef GOSU_IS_MAC
7
+ #define GOSU_SCANCODE(mac, windows_or_linux) mac
8
+ #define GOSU_SPECIAL_SCANCODE(mac, windows, linux) mac
9
+ #else
10
+ #define GOSU_SCANCODE(mac, linux_or_windows) linux_or_windows
11
+ #ifdef GOSU_IS_WIN
12
+ #define GOSU_SPECIAL_SCANCODE(mac, windows, linux) windows
13
+ #else
14
+ #define GOSU_SPECIAL_SCANCODE(mac, windows, linux) linux
15
+ #endif
16
+ #endif
17
+
18
+ namespace Gosu
19
+ {
20
+ //! List of button ids that can be used with Gosu::Input.
21
+ //! This enumeration contains ids for keyboard keys (kb*),
22
+ //! mouse buttons and mouse wheel (ms*) and gamepad buttons (gp*).
23
+ enum ButtonName
24
+ {
25
+ kbRangeBegin,
26
+ kbEscape = 41,
27
+ kbF1 = 58,
28
+ kbF2 = 59,
29
+ kbF3 = 60,
30
+ kbF4 = 61,
31
+ kbF5 = 62,
32
+ kbF6 = 63,
33
+ kbF7 = 64,
34
+ kbF8 = 65,
35
+ kbF9 = 66,
36
+ kbF10 = 67,
37
+ kbF11 = 68,
38
+ kbF12 = 69,
39
+ kb0 = 39,
40
+ kb1 = 30,
41
+ kb2 = 31,
42
+ kb3 = 32,
43
+ kb4 = 33,
44
+ kb5 = 34,
45
+ kb6 = 35,
46
+ kb7 = 36,
47
+ kb8 = 37,
48
+ kb9 = 38,
49
+ kbTab = 43,
50
+ kbReturn = 40,
51
+ kbSpace = 44,
52
+ kbLeftShift = 225,
53
+ kbRightShift = 229,
54
+ kbLeftControl = 224,
55
+ kbRightControl = 228,
56
+ kbLeftAlt = 226,
57
+ kbRightAlt = 230,
58
+ kbLeftMeta = 227,
59
+ kbRightMeta = 231,
60
+ kbBackspace = 42,
61
+ kbLeft = 80,
62
+ kbRight = 79,
63
+ kbUp = 82,
64
+ kbDown = 81,
65
+ kbHome = 74,
66
+ kbEnd = 77,
67
+ kbInsert = 73,
68
+ kbDelete = 76,
69
+ kbPageUp = 75,
70
+ kbPageDown = 78,
71
+ kbEnter = 88,
72
+ kbBacktick = 53,
73
+ kbMinus = 45,
74
+ kbEqual = 46, // TODO: Rename ->kbEquals
75
+ kbBracketLeft = 47, // TODO: Rename ->kbLeftBracket
76
+ kbBracketRight = 48, // TODO: Rename ->kbRightBracket
77
+ kbBackslash = 49,
78
+ kbSemicolon = 51,
79
+ kbApostrophe = 52,
80
+ kbComma = 54,
81
+ kbPeriod = 55,
82
+ kbSlash = 49,
83
+ kbA = 4,
84
+ kbB = 5,
85
+ kbC = 6,
86
+ kbD = 7,
87
+ kbE = 8,
88
+ kbF = 9,
89
+ kbG = 10,
90
+ kbH = 11,
91
+ kbI = 12,
92
+ kbJ = 13,
93
+ kbK = 14,
94
+ kbL = 15,
95
+ kbM = 16,
96
+ kbN = 17,
97
+ kbO = 18,
98
+ kbP = 19,
99
+ kbQ = 20,
100
+ kbR = 21,
101
+ kbS = 22,
102
+ kbT = 23,
103
+ kbU = 24,
104
+ kbV = 25,
105
+ kbW = 26,
106
+ kbX = 27,
107
+ kbY = 28,
108
+ kbZ = 29,
109
+ // ` on US/UK Mac, < on EU Mac, \ in US/UK Windows
110
+ kbISO = 100,
111
+ kbNumpad0 = 98,
112
+ kbNumpad1 = 89,
113
+ kbNumpad2 = 90,
114
+ kbNumpad3 = 91,
115
+ kbNumpad4 = 92,
116
+ kbNumpad5 = 93,
117
+ kbNumpad6 = 94,
118
+ kbNumpad7 = 95,
119
+ kbNumpad8 = 96,
120
+ kbNumpad9 = 97,
121
+ kbNumpadAdd = 87, // TODO: Rename ->kbNumpadPlus
122
+ kbNumpadSubtract = 86, // TODO: Rename ->kbNumpadMinus
123
+ kbNumpadMultiply = 85,
124
+ kbNumpadDivide = 84,
125
+ kbRangeEnd = 0xff,
126
+
127
+ msRangeBegin,
128
+ msLeft = msRangeBegin,
129
+ msMiddle,
130
+ msRight,
131
+ msWheelUp,
132
+ msWheelDown,
133
+ msOther0,
134
+ msOther1,
135
+ msOther2,
136
+ msOther3,
137
+ msOther4,
138
+ msOther5,
139
+ msOther6,
140
+ msOther7,
141
+ msRangeEnd = 0x110,
142
+
143
+ gpRangeBegin,
144
+ gpLeft = gpRangeBegin,
145
+ gpRight,
146
+ gpUp,
147
+ gpDown,
148
+ gpButton0,
149
+ gpButton1,
150
+ gpButton2,
151
+ gpButton3,
152
+ gpButton4,
153
+ gpButton5,
154
+ gpButton6,
155
+ gpButton7,
156
+ gpButton8,
157
+ gpButton9,
158
+ gpButton10,
159
+ gpButton11,
160
+ gpButton12,
161
+ gpButton13,
162
+ gpButton14,
163
+ gpButton15,
164
+
165
+ gp0Left,
166
+ gp0Right,
167
+ gp0Up,
168
+ gp0Down,
169
+ gp0Button0,
170
+ gp0Button1,
171
+ gp0Button2,
172
+ gp0Button3,
173
+ gp0Button4,
174
+ gp0Button5,
175
+ gp0Button6,
176
+ gp0Button7,
177
+ gp0Button8,
178
+ gp0Button9,
179
+ gp0Button10,
180
+ gp0Button11,
181
+ gp0Button12,
182
+ gp0Button13,
183
+ gp0Button14,
184
+ gp0Button15,
185
+
186
+ gp1Left,
187
+ gp1Right,
188
+ gp1Up,
189
+ gp1Down,
190
+ gp1Button0,
191
+ gp1Button1,
192
+ gp1Button2,
193
+ gp1Button3,
194
+ gp1Button4,
195
+ gp1Button5,
196
+ gp1Button6,
197
+ gp1Button7,
198
+ gp1Button8,
199
+ gp1Button9,
200
+ gp1Button10,
201
+ gp1Button11,
202
+ gp1Button12,
203
+ gp1Button13,
204
+ gp1Button14,
205
+ gp1Button15,
206
+
207
+ gp2Left,
208
+ gp2Right,
209
+ gp2Up,
210
+ gp2Down,
211
+ gp2Button0,
212
+ gp2Button1,
213
+ gp2Button2,
214
+ gp2Button3,
215
+ gp2Button4,
216
+ gp2Button5,
217
+ gp2Button6,
218
+ gp2Button7,
219
+ gp2Button8,
220
+ gp2Button9,
221
+ gp2Button10,
222
+ gp2Button11,
223
+ gp2Button12,
224
+ gp2Button13,
225
+ gp2Button14,
226
+ gp2Button15,
227
+
228
+ gp3Left,
229
+ gp3Right,
230
+ gp3Up,
231
+ gp3Down,
232
+ gp3Button0,
233
+ gp3Button1,
234
+ gp3Button2,
235
+ gp3Button3,
236
+ gp3Button4,
237
+ gp3Button5,
238
+ gp3Button6,
239
+ gp3Button7,
240
+ gp3Button8,
241
+ gp3Button9,
242
+ gp3Button10,
243
+ gp3Button11,
244
+ gp3Button12,
245
+ gp3Button13,
246
+ gp3Button14,
247
+ gp3Button15,
248
+
249
+ gpRangeEnd = gp3Button15,
250
+
251
+ numButtons = gpRangeEnd + 1,
252
+ numGamepads = 4,
253
+ noButton = 0xffffffff,
254
+
255
+ kbNum = kbRangeEnd - kbRangeBegin + 1,
256
+ msNum = msRangeEnd - msRangeBegin + 1,
257
+ gpNum = gpRangeEnd - gpRangeBegin + 1,
258
+ gpNumPerGamepad = gpNum / (numGamepads + 1)
259
+ };
260
+ }
261
+
262
+ #undef GOSU_SCANCODE
263
+ #undef GOSU_SPECIAL_SCANCODE
264
+
265
+ #endif