rubysdl 1.3.1 → 2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data/MANIFEST +22 -2
  2. data/NEWS.en +80 -0
  3. data/NEWS.ja +83 -0
  4. data/README.en +2 -1
  5. data/README.ja +2 -2
  6. data/doc-en/Makefile +18 -0
  7. data/doc-en/cdrom.rsd +417 -0
  8. data/doc-en/collision.rsd +174 -0
  9. data/doc-en/event.rsd +1476 -0
  10. data/doc-en/font.rsd +811 -0
  11. data/doc-en/general.rsd +43 -0
  12. data/doc-en/init.rsd +168 -0
  13. data/doc-en/joystick.rsd +401 -0
  14. data/doc-en/mixer.rsd +869 -0
  15. data/doc-en/mpeg.rsd +585 -0
  16. data/doc-en/opengl.rsd +155 -0
  17. data/doc-en/sdlskk.rsd +472 -0
  18. data/doc-en/time.rsd +46 -0
  19. data/doc-en/video.rsd +2806 -0
  20. data/doc-en/wm.rsd +112 -0
  21. data/doc/Makefile +1 -1
  22. data/doc/cdrom.rsd +3 -3
  23. data/doc/event.rsd +178 -179
  24. data/doc/general.rsd +10 -0
  25. data/doc/init.rsd +2 -2
  26. data/doc/joystick.rsd +29 -5
  27. data/doc/mixer.rsd +20 -0
  28. data/doc/rsd.rb +42 -9
  29. data/doc/sdlskk.rsd +7 -7
  30. data/doc/video.rsd +461 -168
  31. data/doc/wm.rsd +2 -2
  32. data/extconf.rb +1 -8
  33. data/lib/rubysdl_aliases.rb +52 -190
  34. data/lib/rubysdl_compatible_ver1.rb +243 -0
  35. data/lib/sdl.rb +58 -92
  36. data/rubysdl.h +59 -68
  37. data/rubysdl_cdrom.c +125 -102
  38. data/{rubysdl_doc.en.rd → rubysdl_doc_old.en.rd} +3 -2
  39. data/rubysdl_event.c +318 -255
  40. data/rubysdl_event_key.c +299 -287
  41. data/rubysdl_image.c +37 -13
  42. data/rubysdl_joystick.c +180 -67
  43. data/rubysdl_kanji.c +61 -75
  44. data/rubysdl_main.c +65 -138
  45. data/rubysdl_mixer.c +339 -214
  46. data/rubysdl_mouse.c +50 -43
  47. data/rubysdl_opengl.c +31 -28
  48. data/rubysdl_pixel.c +17 -28
  49. data/rubysdl_ref.en.html +5658 -0
  50. data/rubysdl_ref.en.rd +6337 -0
  51. data/rubysdl_ref.html +2253 -1964
  52. data/rubysdl_ref.rd +823 -469
  53. data/rubysdl_rwops.c +9 -6
  54. data/rubysdl_sdlskk.c +137 -165
  55. data/rubysdl_sge_video.c +355 -469
  56. data/rubysdl_smpeg.c +189 -190
  57. data/rubysdl_time.c +1 -1
  58. data/rubysdl_ttf.c +147 -215
  59. data/rubysdl_video.c +486 -405
  60. data/rubysdl_wm.c +30 -30
  61. data/sample/aadraw.rb +9 -9
  62. data/sample/alpha.rb +12 -13
  63. data/sample/alphadraw.rb +10 -10
  64. data/sample/bfont.rb +4 -4
  65. data/sample/cdrom.rb +11 -4
  66. data/sample/collision.rb +20 -20
  67. data/sample/cursor.rb +5 -5
  68. data/sample/ellipses.rb +20 -16
  69. data/sample/event2.rb +11 -9
  70. data/sample/font.rb +4 -4
  71. data/sample/fpstimer.rb +3 -3
  72. data/sample/icon.bmp.gz +0 -0
  73. data/sample/icon.png +0 -0
  74. data/sample/joy2.rb +14 -14
  75. data/sample/kanji.rb +7 -7
  76. data/sample/load_from_io.rb +44 -0
  77. data/sample/movesp.rb +13 -12
  78. data/sample/playmod.rb +2 -3
  79. data/sample/plaympeg.rb +8 -8
  80. data/sample/playwave.rb +5 -6
  81. data/sample/sdlskk.rb +11 -11
  82. data/sample/sgetest.rb +14 -12
  83. data/sample/stetris.rb +12 -13
  84. data/sample/testgl.rb +13 -14
  85. data/sample/testsprite.rb +12 -11
  86. data/sample/transformblit.rb +23 -22
  87. metadata +62 -35
  88. data/rubysdl_event2.c +0 -417
@@ -0,0 +1,43 @@
1
+ = Contents
2
+ * ((<"Ruby/SDL Outline">))
3
+ * ((<Initialize>))
4
+ * ((<Video>))
5
+ * ((<OpenGL>))
6
+ * ((<Window Management>))
7
+ * ((<Event>))
8
+ * ((<Joystick>))
9
+ * ((<CD-ROM>))
10
+ * ((<Audio>))
11
+ * ((<Time>))
12
+ * ((<Font>))
13
+ * ((<Collision Detection>))
14
+ * ((<SDLSKK>))
15
+ * ((<MPEG playback>))
16
+
17
+ = Ruby/SDL Outline
18
+ Ruby/SDL is Ruby extension library for
19
+ ((<SDL|URL:http://www.libsdl.org/>)).
20
+ This library enables you to create games, demo, or so on.
21
+
22
+ Ruby/SDL has following functions.
23
+ * ((<access to 2D video framebuffer|Video>))
24
+ * Access ((<Keyboard and mouse|Event>)), ((<Joystick>)) input
25
+ * ((<Audio Playback|Audio>)) with ((<SDL_mixer|URL:http://www.libsdl.org/projects/SDL_mixer/index.html>))
26
+ * ((<Control CD-ROM|CD-ROM>))
27
+ * ((<Font drawing |Font>)) with ((<SDL_ttf|URL:http://www.libsdl.org/projects/SDL_ttf/index.html>)),
28
+ ((<SDL_kanji|URL:http://shinh.skr.jp/sdlkanji/>)) and
29
+ ((<SGE|URL:http://www.etek.chalmers.se/~e8cal1/sge/index.html>))
30
+ * ((<Using OpenGL|OpenGL>)) via ((<OpenGL Interface|URL:http://www2.giganet.net/~yoshi/>))
31
+ * ((<Dealing with time|Time>))
32
+ * ((<SKK like Japanese input|SDLSKK>)) with ((<SDLSKK|URL:http://www.kmc.gr.jp/~ohai/sdlskk.html>))
33
+ * ((<MPEG playback>)) with ((<SMPGE|URL:http://www.icculus.org/smpeg/>))
34
+ * ((<Window Management>)) and ((<Collision Detection>))
35
+
36
+ == SDL::Error
37
+ A Exception class for SDL specific errors.
38
+ This class is subclass of StandardError.
39
+
40
+ == SDL::VERSION
41
+ Ruby/SDL version string.
42
+
43
+
data/doc-en/init.rsd ADDED
@@ -0,0 +1,168 @@
1
+ = Initialize
2
+ TOC
3
+
4
+ Before SDL can be used in a program it must be initialized
5
+ with @[init]. @[init] initializes all the subsystems that
6
+ the user requests (video, audio, joystick, timers and/or cdrom).
7
+
8
+ == Methods
9
+ %%%
10
+ NAME init
11
+ TYPE .
12
+ PURPOSE Initializes SDL
13
+
14
+ PROTO
15
+ init(flags)
16
+
17
+ DESC
18
+ Initializes SDL. This should be called before all other
19
+ Ruby/SDL methods. The $[flags] parameter specifies what
20
+ part(s) of SDL to initialize.
21
+ :SDL::INIT_AUDIO
22
+ Initialize autio subsystems.
23
+ :SDL::INIT_VIDEO
24
+ Initialize @[Video] subsystem.
25
+ :SDL::INIT_CDROM
26
+ Initialize @[CDROM] subsystem.
27
+ :SDL::INIT_JOYSTICK
28
+ Initialize @[Joystick] subsystem.
29
+ :SDL::INIT_EVERYTHING
30
+ Initialize all of the avobe.
31
+
32
+ EXCEPTION *
33
+
34
+ %%
35
+ NAME quit
36
+ TYPE .
37
+ PURPOSE Shut down SDL
38
+
39
+ PROTO
40
+ quit
41
+
42
+ DESC
43
+ This method shots down all SDL subsystem and frees the resources
44
+ allocated to them. Because this method is automatically called
45
+ when ruby stops, you don't have to call this function normally.
46
+
47
+ You should know SDL and Ruby/SDL very well when you use
48
+ this method.
49
+
50
+ %%
51
+ NAME inited_system
52
+ TYPE .
53
+ PURPOSE Check which subsystems are initialized
54
+ RVAL UINT
55
+
56
+ PROTO
57
+ inited_system(flags)
58
+ initedSystem(flags)
59
+
60
+ DESC
61
+ This method allows you to see which SDL subsytems have
62
+ been @[initialized|init]. $[flags] is a bitwise OR'd
63
+ combination of the subsystems you wish to check
64
+ (see @[init] for a list of subsystem flags).
65
+
66
+ RET
67
+ Returns a bitwised OR'd combination of the initialized subsystems.
68
+
69
+ EXAMPLE
70
+ # Here are several ways you can use SDL.inited_system
71
+
72
+ # Get init data on all the subsystem
73
+ subsystem_init = SDL.inited_system(SDL::INIT_EVERYTHING)
74
+
75
+ if subsystem_init & SDL::INIT_VIDEO
76
+ puts "video is initialized"
77
+ else
78
+ puts "video is not initialized"
79
+ end
80
+
81
+ # Just check for one specfic subsystem
82
+
83
+ if SDL.inited_system(SDL::INIT_VIDEO) != 0
84
+ puts "Video is initialized"
85
+ else
86
+ puts "Video is not initialized "
87
+ end
88
+
89
+ # Check for two subsystem
90
+
91
+ subsystem_mask = SDL::INIT_VIDEO|SDL::INIT_AUDIO;
92
+
93
+ if SDL.inited_system(subsystem_mask) == subsystem_mask
94
+ puts "Video and Audio initialized."
95
+ else
96
+ puts "Video and Audio not initialized"
97
+ end
98
+
99
+ SEEALSO
100
+ init
101
+
102
+ %%
103
+ NAME getenv
104
+ TYPE .
105
+ PURPOSE Get an environmental variable
106
+ RVAL String
107
+
108
+ PROTO
109
+ getenv(var)
110
+
111
+ DESC
112
+ Returns the environment variable string matched by $[var].
113
+
114
+
115
+ %%
116
+ NAME putenv
117
+ TYPE .
118
+ PURPOSE Change or add an environmental variable
119
+
120
+ PROTO
121
+ putenv(string)
122
+
123
+ DESC
124
+ Add or Change the value of environmental variables.
125
+ The argument $[string] is of the form "name=value"
126
+
127
+ If you want to change SDL_WINDOWID or SDL_VIDEODRIVER environmental variable
128
+ to modify the behavior of SDL in your program, you should use
129
+ this function instead of ENV.
130
+
131
+ EXCEPTION *
132
+
133
+ EXAMPLE
134
+ # from http://moriq.tdiary.net/20051006.html
135
+ # Apollo with Ruby/SDL
136
+ require 'phi'
137
+ require 'sdl'
138
+
139
+ # Create form
140
+ form = Phi::Form.new
141
+ $terminated = false
142
+ form.on_close{ $terminated = true }
143
+ form.caption = "Ruby/SDL on Phi::Form"
144
+ # Create a panel on new form
145
+ panel = Phi::Panel.new(form)
146
+ panel.align = Phi::AL_LEFT
147
+
148
+ # Put SDL window on panel with WINDOWID hack
149
+ SDL.putenv("SDL_VIDEODRIVER=windib")
150
+ SDL.putenv("SDL_WINDOWID=#{panel.handle}")
151
+ form.show
152
+
153
+ # initialize SDL
154
+ SDL.init(SDL::INIT_VIDEO)
155
+ screen = SDL.setVideoMode(640, 480, 16, SDL::SWSURFACE)
156
+
157
+ # main loop
158
+ unless $terminated
159
+ while event = SDL::Event2.poll
160
+ case event
161
+ when SDL::Event2::KeyDown, SDL::Event2::Quit
162
+ exit
163
+ end
164
+ end
165
+
166
+ sleep 0.05
167
+ end
168
+
@@ -0,0 +1,401 @@
1
+ = Joystick
2
+ * ((<Joystick Overview>))
3
+ * ((<SDL::Joystick>))
4
+ * Methods for Joystick
5
+ TOC
6
+
7
+ == Joystick Overview
8
+ Joysticks, and other similar input devices, have a very
9
+ strong role
10
+ in game playing and SDL provides comprehensive support for them.
11
+ Axes, Buttons, POV Hats and trackballs are all supported.
12
+
13
+ Joystick support is initialized
14
+ by passed the SDL::INIT_JOYSTICK flag
15
+ to @[init]. Once initilized joysticks must be opened
16
+ using @[Joystick.open].
17
+
18
+ While using the functions describe in this secton
19
+ may seem like the best way
20
+ to access and read from joysticks, in most cases they aren't.
21
+ Ideally joysticks should be read
22
+ using the @[Event] system.
23
+ To enable this, you must set the joystick event processing state
24
+ with @[Joystick.poll=].
25
+ Joysticks must be @[opened|Joystick.open]
26
+ before they can be used of course.
27
+
28
+ * NOTES
29
+
30
+ If you are ((*not*)) handling the joystick
31
+ via the event queue then you must explicitly
32
+ request a joystick update by calling @[Joystick.update_all].
33
+
34
+ Force Feedback is not yet support.
35
+
36
+ == SDL::Joystick
37
+ The class represents one joystick.
38
+
39
+ METHODS(Joystick)
40
+
41
+ == Methods
42
+ %%%
43
+ NAME num
44
+ MOD Joystick
45
+ TYPE .
46
+ PURPOSE Count available joysticks.
47
+ RVAL Integer
48
+
49
+ PROTO
50
+ num
51
+
52
+ DESC
53
+ Counts the number of joysticks attached to the system.
54
+
55
+ SEEALSO
56
+ Joystick.index_name
57
+ Joystick.open
58
+
59
+ %%
60
+ NAME index_name
61
+ MOD Joystick
62
+ TYPE .
63
+ PURPOSE Get joystick name.
64
+ RVAL String
65
+
66
+ PROTO
67
+ index_name(index)
68
+ indexName(index)
69
+
70
+ DESC
71
+ Get the implementation dependent name of joystick.
72
+ The $[index] parameter
73
+ refers to the N'th joystick on the system.
74
+
75
+ EXAMPLE
76
+ # Print the names of all attached joysticks
77
+ num_joy = SDL::Joystick.num
78
+ printf("%d joysticks found\n", num_joy)
79
+ num_joy.times do |i|
80
+ puts SDL::Joystick.index_name(i)
81
+ end
82
+
83
+ SEEALSO
84
+ Joystick.open
85
+
86
+ %%
87
+ NAME open
88
+ MOD Joystick
89
+ TYPE .
90
+ PURPOSE Opens a joystick for use.
91
+ RVAL SDL::Joystick
92
+
93
+ PROTO
94
+ open(index)
95
+
96
+ DESC
97
+ Opens a joystick for use within SDL. The $[index] refers to the N'th
98
+ joystick in the system. A joystick must be opened before it can be
99
+ used.
100
+
101
+ RET
102
+ Returns a @[Joystick] instance on success.
103
+
104
+ EXCEPTION *
105
+
106
+ EXAMPLE
107
+ # Check for joystick
108
+ if SDL::Joystick.num > 0
109
+ # Open joystick
110
+ joy = SDL::Joystick.open(0)
111
+
112
+ printf("Opened Joystick 0\n");
113
+ printf("Name: %s\n", SDL::Joystick.name(0))
114
+ printf("Number of Axes: %d\n", joy.num_axes)
115
+ printf("Number of Buttons: %d\n", joy.num_buttons)
116
+ printf("Number of Balls: %d\n", joy.num_balls)
117
+ end
118
+
119
+ %%
120
+ NAME open?
121
+ MOD Joystick
122
+ TYPE .
123
+ PURPOSE Determine if a joystick has been opened
124
+ RVAL true/false
125
+
126
+ PROTO
127
+ open?(index)
128
+
129
+ DESC
130
+ Determines whether a joystick has already been opened within the
131
+ application. $[index] refers to the N'th joystick on the system.
132
+
133
+ RET
134
+ Returns true if the joystick has been opened, or false if it has not.
135
+
136
+ SEEALSO
137
+ Joystick.open
138
+
139
+ %%
140
+ NAME index
141
+ MOD Joystick
142
+ TYPE #
143
+ PURPOSE Get the index of an joystick.
144
+ RVAL Integer
145
+
146
+ PROTO
147
+ index
148
+
149
+ DESC
150
+ Returns the index of $[self].
151
+
152
+ %%
153
+ NAME num_axes
154
+ MOD Joystick
155
+ TYPE #
156
+ PURPOSE Get the number of joystick axes
157
+ RVAL Integer
158
+
159
+ PROTO
160
+ num_axes
161
+ numAxes
162
+
163
+ DESC
164
+ Return the number of axes available.
165
+
166
+ NOTES
167
+ This method counts two dimensional axes as two axes.
168
+
169
+ SEEALSO
170
+ Joystick#axis
171
+
172
+ %%
173
+ NAME num_balls
174
+ MOD Joystick
175
+ TYPE #
176
+ PURPOSE Get the number of joystick trackballs
177
+ RVAL Integer
178
+
179
+ PROTO
180
+ num_balls
181
+ numBalls
182
+
183
+ DESC
184
+ Return the number of trackballs available.
185
+
186
+ SEEALSO
187
+ Joystick#ball
188
+
189
+ %%
190
+ NAME num_hats
191
+ MOD Joystick
192
+ TYPE #
193
+ PURPOSE Get the number of joystick hats
194
+ RVAL Integer
195
+
196
+ PROTO
197
+ num_hats
198
+ numHats
199
+
200
+ DESC
201
+ Return the number of hats available.
202
+
203
+ SEEALSO
204
+ Joystick#hat
205
+
206
+ %%
207
+ NAME num_buttons
208
+ MOD Joystick
209
+ TYPE #
210
+ PURPOSE Get the number of joystick buttons
211
+ RVAL Integer
212
+
213
+ PROTO
214
+ num_buttons
215
+ numButtons
216
+
217
+ DESC
218
+ Return the number of buttons available.
219
+
220
+ SEEALSO
221
+ Joystick#button
222
+
223
+ %%
224
+ NAME poll=
225
+ MOD Joystick
226
+ TYPE .
227
+ PURPOSE Enable/disable joystick event polling
228
+
229
+ PROTO
230
+ poll=(enable)
231
+
232
+ DESC
233
+ This function is used to enable or disable joystick event
234
+ processing. With joystick event processing disabled you will have
235
+ to update joystick states with @[Joystick.update_all] and read the
236
+ joystick information manually.
237
+
238
+ Joystick event polling is enabled by default.
239
+
240
+ NOTE
241
+ Joystick event handling is preferred.
242
+
243
+ Even if joystick event processing is enabled,
244
+ individual joysticks must be opened before they generate
245
+ events.
246
+
247
+ Calling this method may delete all events
248
+ currently in SDL's event queue.
249
+
250
+ SEEALSO
251
+ Joystick.update_all
252
+ Joystick.poll
253
+ Event2::JoyAxis
254
+ Event2::JoyBall
255
+ Event2::JoyButtonDown
256
+ Event2::JoyButtonUp
257
+ Event2::JoyHat
258
+
259
+ %%
260
+ NAME poll
261
+ MOD Joystick
262
+ TYPE .
263
+ PURPOSE Gets the current state of joysick event polling
264
+ RVAL true/false
265
+
266
+ PROTO
267
+ poll
268
+
269
+ DESC
270
+ Returns true if joysick event polling is enabled, otherwise
271
+ returns false. You will also read @[Joystick.poll=].
272
+
273
+ %%
274
+ NAME update_all
275
+ MOD Joystick
276
+ TYPE .
277
+ PURPOSE Updates the state of all joysticks
278
+
279
+ PROTO
280
+ update_all
281
+ updateAll
282
+
283
+ DESC
284
+ Updates the state(position, buttons, etc.) of all open joysticks.
285
+ If joystick events have been enabled with @[Joystick.poll=]
286
+ then this is called automatically in the event loop.
287
+
288
+ %%
289
+ NAME axis
290
+ MOD Joystick
291
+ TYPE #
292
+ PURPOSE Get the current state of an axis
293
+ RVAL Integer
294
+
295
+ PROTO
296
+ axis(axis_index)
297
+
298
+ DESC
299
+ Returns the current state of given $[axis_index] on $[self].
300
+
301
+ On most modern joysticks the X axis is usually represented by
302
+ axis 0 and the Y axis by axis 1. The value returned by
303
+ this method is a signed integer (-32768 to 32767)
304
+ representing the current position of the axis, it may be
305
+ necessary to impose certain tolerances on these values to account
306
+ for jitter.
307
+
308
+ EXAMPLE
309
+ joy = SDL::Joystick.open(0)
310
+ .
311
+ .
312
+ x_move = joy.axis(0)
313
+ y_move = joy.axis(1)
314
+
315
+ SEEALSO
316
+ Joystick#num_axes
317
+
318
+ %%
319
+ NAME hat
320
+ MOD Joystick
321
+ TYPE #
322
+ PURPOSE Get the current state of a joystick hat
323
+ RVAL UINT
324
+
325
+ PROTO
326
+ hat(hat_index)
327
+
328
+ DESC
329
+ Returns the current state of the given $[hat_index].
330
+
331
+ RET
332
+ The current state is returned as a unsinged integer
333
+ which is an OR'd combination of one or more of the following
334
+
335
+ * SDL::Joystick::HAT_CENTERED
336
+ * SDL::Joystick::HAT_UP
337
+ * SDL::Joystick::HAT_RIGHT
338
+ * SDL::Joystick::HAT_DOWN
339
+ * SDL::Joystick::HAT_LEFT
340
+ * SDL::Joystick::HAT_RIGHTUP
341
+ * SDL::Joystick::HAT_RIGHTDOWN
342
+ * SDL::Joystick::HAT_LEFTUP
343
+ * SDL::Joystick::HAT_LEFTDOWN
344
+
345
+ SEEALSO
346
+ Joystick#num_hats
347
+
348
+ %%
349
+ NAME button
350
+ MOD Joystick
351
+ TYPE #
352
+ PURPOSE Get the current state of a given button
353
+ RVAL true/false
354
+
355
+ PROTO
356
+ button(button_index)
357
+
358
+ DESC
359
+ returns the current state of the given $[button_index].
360
+ Returns true if the button is pressed, otherwise returns false.
361
+
362
+ SEEALSO
363
+ Joystick#num_buttons
364
+
365
+ %%
366
+ NAME ball
367
+ MOD Joystick
368
+ TYPE #
369
+ PURPOSE Get relative trackball motion
370
+ RVAL [Integer, Integer]
371
+
372
+ PROTO
373
+ ball(ball_index)
374
+
375
+ DESC
376
+ Get the ball axis change.
377
+ Trackballs can only return relative motion since the last call to
378
+ this method, these motion deltas are returned as
379
+ an array of two elements, [dx, dy].
380
+
381
+ EXCEPTION *
382
+
383
+ EXAMPLE
384
+ delta_x, delta_y = joy.ball(0)
385
+ printf("Trackball Delta- X:%d, Y:%d\n", delta_x, delta_y)
386
+
387
+ %%
388
+ NAME close
389
+ MOD Joystick
390
+ TYPE #
391
+ PURPOSE Closes a previously opened joystick
392
+
393
+ PROTO
394
+ close
395
+
396
+ DESC
397
+ Close a joystick that was previously opened with @[Joystick.open].
398
+
399
+ SEEALSO
400
+ Joystick.open
401
+ Joystick.open?