gosu 0.7.13.3 → 0.7.14

Sign up to get free protection for your applications and to get access to all the features.
Files changed (478) hide show
  1. data/Gosu/Audio.hpp +10 -4
  2. data/Gosu/Math.hpp +23 -10
  3. data/Gosu/Platform.hpp +2 -0
  4. data/Gosu/Version.hpp +9 -0
  5. data/GosuImpl/Audio/ALChannelManagement.hpp +13 -3
  6. data/GosuImpl/Audio/AudioFile.hpp +45 -0
  7. data/GosuImpl/Audio/AudioOpenAL.mm +533 -0
  8. data/GosuImpl/Audio/AudioToolboxFile.hpp +217 -0
  9. data/GosuImpl/Audio/OggFile.hpp +114 -0
  10. data/GosuImpl/AudioFmod.cpp +4 -0
  11. data/GosuImpl/AudioSDL.cpp +4 -0
  12. data/GosuImpl/Graphics/GosuView.mm +2 -2
  13. data/GosuImpl/Graphics/Texture.cpp +9 -4
  14. data/GosuImpl/Math.cpp +1 -1
  15. data/GosuImpl/RubyGosu.swg +10 -1
  16. data/GosuImpl/RubyGosu_wrap.cxx +175 -1416
  17. data/GosuImpl/RubyGosu_wrap.cxx.rej +187 -0
  18. data/GosuImpl/WinUtility.cpp +1 -1
  19. data/GosuImpl/WindowMac.mm +1 -0
  20. data/GosuImpl/WindowTouch.mm +1 -0
  21. data/README.txt +5 -5
  22. data/Rakefile +48 -9
  23. data/examples/media/Starfighter.bmp +0 -0
  24. data/linux/configure +1166 -975
  25. data/linux/configure.ac +14 -30
  26. data/linux/extconf.rb +2 -5
  27. data/mac/Gosu.xcodeproj/jlnr.pbxuser +330 -267
  28. data/mac/Gosu.xcodeproj/jlnr.perspectivev3 +48 -47
  29. data/mac/Gosu.xcodeproj/project.pbxproj +626 -74
  30. data/mac/RubyGosu App-Info.plist +1 -1
  31. data/reference/cpp/_audio_8hpp-source.html +81 -75
  32. data/reference/cpp/_math_8hpp-source.html +57 -48
  33. data/reference/cpp/_math_8hpp.html +7 -1
  34. data/reference/cpp/_platform_8hpp-source.html +58 -56
  35. data/reference/cpp/_platform_8hpp.html +21 -2
  36. data/reference/cpp/_version_8hpp-source.html +77 -0
  37. data/reference/cpp/_version_8hpp.html +153 -0
  38. data/reference/cpp/class_gosu_1_1_audio-members.html +1 -0
  39. data/reference/cpp/class_gosu_1_1_audio.html +22 -0
  40. data/reference/cpp/class_gosu_1_1_sample.html +1 -1
  41. data/reference/cpp/class_gosu_1_1_sample_instance.html +1 -1
  42. data/reference/cpp/class_gosu_1_1_song.html +2 -2
  43. data/reference/cpp/files.html +1 -0
  44. data/reference/cpp/functions_0x67.html +1 -3
  45. data/reference/cpp/functions_0x74.html +2 -2
  46. data/reference/cpp/functions_0x75.html +3 -2
  47. data/reference/cpp/functions_func_0x67.html +1 -3
  48. data/reference/cpp/functions_func_0x74.html +2 -2
  49. data/reference/cpp/functions_func_0x75.html +3 -2
  50. data/reference/cpp/globals.html +10 -0
  51. data/reference/cpp/globals_defs.html +10 -0
  52. data/reference/rdoc/classes/Gosu.html +1547 -0
  53. data/reference/rdoc/classes/Gosu/Color.html +563 -0
  54. data/reference/rdoc/classes/Gosu/Font.html +538 -0
  55. data/reference/rdoc/classes/Gosu/GLTexInfo.html +404 -0
  56. data/reference/rdoc/classes/Gosu/Image.html +702 -0
  57. data/reference/rdoc/classes/Gosu/Sample.html +469 -0
  58. data/reference/rdoc/classes/Gosu/SampleInstance.html +516 -0
  59. data/reference/rdoc/classes/Gosu/Song.html +561 -0
  60. data/reference/rdoc/classes/Gosu/TextInput.html +398 -0
  61. data/reference/rdoc/classes/Gosu/Window.html +913 -0
  62. data/reference/rdoc/classes/Numeric.html +416 -0
  63. data/reference/rdoc/created.rid +1 -0
  64. data/reference/rdoc/files/COPYING_txt.html +386 -0
  65. data/reference/rdoc/files/README_txt.html +381 -0
  66. data/reference/rdoc/files/reference/DeploymentOnOSX_rdoc.html +390 -0
  67. data/reference/rdoc/files/reference/DeploymentOnWindows_rdoc.html +392 -0
  68. data/reference/rdoc/files/reference/DrawingWithColors_rdoc.html +357 -0
  69. data/reference/rdoc/files/reference/OrderOfCorners_rdoc.html +352 -0
  70. data/reference/rdoc/files/reference/Tileability_rdoc.html +368 -0
  71. data/reference/rdoc/files/reference/ZOrdering_rdoc.html +355 -0
  72. data/reference/rdoc/files/reference/gosu_rb.html +342 -0
  73. data/reference/rdoc/fr_class_index.html +12 -0
  74. data/reference/rdoc/fr_file_index.html +10 -0
  75. data/reference/rdoc/fr_method_index.html +63 -0
  76. data/reference/rdoc/index.html +1 -0
  77. data/reference/rdoc/rdoc-style.css +318 -0
  78. data/windows/Gosu.vcproj +33 -33
  79. data/windows/RubyGosu.vcproj +2 -2
  80. metadata +36 -400
  81. data/GosuImpl/Audio/AudioFileMac.hpp +0 -105
  82. data/GosuImpl/AudioOpenAL.mm +0 -486
  83. data/mac/libboost_thread_1_34_1_universal.a +0 -0
  84. data/mac/libboost_thread_d_1_34_1_universal.a +0 -0
  85. data/mac/libfmod_universal.a +0 -0
  86. data/mac/libpng_universal.a +0 -0
  87. data/mac/libz_universal.a +0 -0
  88. data/windows/zlib, libpng/libpng/ANNOUNCE +0 -61
  89. data/windows/zlib, libpng/libpng/CHANGES +0 -2173
  90. data/windows/zlib, libpng/libpng/INSTALL +0 -199
  91. data/windows/zlib, libpng/libpng/KNOWNBUG +0 -22
  92. data/windows/zlib, libpng/libpng/LICENSE +0 -109
  93. data/windows/zlib, libpng/libpng/README +0 -264
  94. data/windows/zlib, libpng/libpng/TODO +0 -24
  95. data/windows/zlib, libpng/libpng/Y2KINFO +0 -55
  96. data/windows/zlib, libpng/libpng/configure +0 -13
  97. data/windows/zlib, libpng/libpng/contrib/gregbook/COPYING +0 -340
  98. data/windows/zlib, libpng/libpng/contrib/gregbook/LICENSE +0 -50
  99. data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.mingw32 +0 -130
  100. data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.sgi +0 -104
  101. data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.unx +0 -132
  102. data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.w32 +0 -113
  103. data/windows/zlib, libpng/libpng/contrib/gregbook/README +0 -186
  104. data/windows/zlib, libpng/libpng/contrib/gregbook/makevms.com +0 -132
  105. data/windows/zlib, libpng/libpng/contrib/gregbook/readpng.c +0 -304
  106. data/windows/zlib, libpng/libpng/contrib/gregbook/readpng.h +0 -88
  107. data/windows/zlib, libpng/libpng/contrib/gregbook/readpng2.c +0 -645
  108. data/windows/zlib, libpng/libpng/contrib/gregbook/readpng2.h +0 -121
  109. data/windows/zlib, libpng/libpng/contrib/gregbook/readppm.c +0 -179
  110. data/windows/zlib, libpng/libpng/contrib/gregbook/rpng-win.c +0 -684
  111. data/windows/zlib, libpng/libpng/contrib/gregbook/rpng-x.c +0 -904
  112. data/windows/zlib, libpng/libpng/contrib/gregbook/rpng2-win.c +0 -1225
  113. data/windows/zlib, libpng/libpng/contrib/gregbook/rpng2-x.c +0 -2127
  114. data/windows/zlib, libpng/libpng/contrib/gregbook/toucan.png +0 -0
  115. data/windows/zlib, libpng/libpng/contrib/gregbook/wpng.c +0 -853
  116. data/windows/zlib, libpng/libpng/contrib/gregbook/writepng.c +0 -392
  117. data/windows/zlib, libpng/libpng/contrib/gregbook/writepng.h +0 -133
  118. data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/README +0 -6
  119. data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/gather.sh +0 -8
  120. data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/makefile.std +0 -44
  121. data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/pngusr.h +0 -67
  122. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/README +0 -6
  123. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/dummy_inflate.c +0 -27
  124. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/gather.sh +0 -9
  125. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/makefile.std +0 -43
  126. data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/pngusr.h +0 -66
  127. data/windows/zlib, libpng/libpng/contrib/pngminus/README +0 -153
  128. data/windows/zlib, libpng/libpng/contrib/pngminus/makefile.std +0 -65
  129. data/windows/zlib, libpng/libpng/contrib/pngminus/makefile.tc3 +0 -38
  130. data/windows/zlib, libpng/libpng/contrib/pngminus/makevms.com +0 -92
  131. data/windows/zlib, libpng/libpng/contrib/pngminus/png2pnm.bat +0 -41
  132. data/windows/zlib, libpng/libpng/contrib/pngminus/png2pnm.c +0 -430
  133. data/windows/zlib, libpng/libpng/contrib/pngminus/png2pnm.sh +0 -42
  134. data/windows/zlib, libpng/libpng/contrib/pngminus/pngminus.bat +0 -4
  135. data/windows/zlib, libpng/libpng/contrib/pngminus/pngminus.sh +0 -5
  136. data/windows/zlib, libpng/libpng/contrib/pngminus/pnm2png.bat +0 -41
  137. data/windows/zlib, libpng/libpng/contrib/pngminus/pnm2png.c +0 -533
  138. data/windows/zlib, libpng/libpng/contrib/pngminus/pnm2png.sh +0 -42
  139. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g01.png +0 -0
  140. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g02.png +0 -0
  141. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g04.png +0 -0
  142. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g08.png +0 -0
  143. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g16.png +0 -0
  144. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn2c08.png +0 -0
  145. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn2c16.png +0 -0
  146. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p01.png +0 -0
  147. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p02.png +0 -0
  148. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p04.png +0 -0
  149. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p08.png +0 -0
  150. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn4a08.png +0 -0
  151. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn4a16.png +0 -0
  152. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn6a08.png +0 -0
  153. data/windows/zlib, libpng/libpng/contrib/pngsuite/basn6a16.png +0 -0
  154. data/windows/zlib, libpng/libpng/contrib/visupng/PngFile.c +0 -439
  155. data/windows/zlib, libpng/libpng/contrib/visupng/PngFile.h +0 -27
  156. data/windows/zlib, libpng/libpng/contrib/visupng/README.txt +0 -58
  157. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.c +0 -961
  158. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.dsp +0 -147
  159. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.dsw +0 -29
  160. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.ico +0 -0
  161. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.png +0 -0
  162. data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.rc +0 -152
  163. data/windows/zlib, libpng/libpng/contrib/visupng/cexcept.h +0 -243
  164. data/windows/zlib, libpng/libpng/contrib/visupng/resource.h +0 -23
  165. data/windows/zlib, libpng/libpng/example.c +0 -814
  166. data/windows/zlib, libpng/libpng/libpng-1.2.29.txt +0 -2906
  167. data/windows/zlib, libpng/libpng/libpng.3 +0 -3680
  168. data/windows/zlib, libpng/libpng/libpngpf.3 +0 -274
  169. data/windows/zlib, libpng/libpng/png.5 +0 -74
  170. data/windows/zlib, libpng/libpng/png.c +0 -798
  171. data/windows/zlib, libpng/libpng/png.h +0 -3569
  172. data/windows/zlib, libpng/libpng/pngbar.jpg +0 -0
  173. data/windows/zlib, libpng/libpng/pngbar.png +0 -0
  174. data/windows/zlib, libpng/libpng/pngconf.h +0 -1481
  175. data/windows/zlib, libpng/libpng/pngerror.c +0 -343
  176. data/windows/zlib, libpng/libpng/pnggccrd.c +0 -103
  177. data/windows/zlib, libpng/libpng/pngget.c +0 -901
  178. data/windows/zlib, libpng/libpng/pngmem.c +0 -608
  179. data/windows/zlib, libpng/libpng/pngnow.png +0 -0
  180. data/windows/zlib, libpng/libpng/pngpread.c +0 -1598
  181. data/windows/zlib, libpng/libpng/pngread.c +0 -1479
  182. data/windows/zlib, libpng/libpng/pngrio.c +0 -167
  183. data/windows/zlib, libpng/libpng/pngrtran.c +0 -4292
  184. data/windows/zlib, libpng/libpng/pngrutil.c +0 -3183
  185. data/windows/zlib, libpng/libpng/pngset.c +0 -1268
  186. data/windows/zlib, libpng/libpng/pngtest.c +0 -1563
  187. data/windows/zlib, libpng/libpng/pngtest.png +0 -0
  188. data/windows/zlib, libpng/libpng/pngtrans.c +0 -662
  189. data/windows/zlib, libpng/libpng/pngvcrd.c +0 -1
  190. data/windows/zlib, libpng/libpng/pngwio.c +0 -234
  191. data/windows/zlib, libpng/libpng/pngwrite.c +0 -1532
  192. data/windows/zlib, libpng/libpng/pngwtran.c +0 -572
  193. data/windows/zlib, libpng/libpng/pngwutil.c +0 -2802
  194. data/windows/zlib, libpng/libpng/projects/beos/x86-shared.proj +0 -0
  195. data/windows/zlib, libpng/libpng/projects/beos/x86-shared.txt +0 -22
  196. data/windows/zlib, libpng/libpng/projects/beos/x86-static.proj +0 -0
  197. data/windows/zlib, libpng/libpng/projects/beos/x86-static.txt +0 -22
  198. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.bpf +0 -22
  199. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.bpg +0 -25
  200. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.bpr +0 -157
  201. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.cpp +0 -29
  202. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.readme.txt +0 -25
  203. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpngstat.bpf +0 -22
  204. data/windows/zlib, libpng/libpng/projects/cbuilder5/libpngstat.bpr +0 -109
  205. data/windows/zlib, libpng/libpng/projects/cbuilder5/zlib.readme.txt +0 -14
  206. data/windows/zlib, libpng/libpng/projects/netware.txt +0 -6
  207. data/windows/zlib, libpng/libpng/projects/visualc6/README.txt +0 -57
  208. data/windows/zlib, libpng/libpng/projects/visualc6/libpng.dsp +0 -472
  209. data/windows/zlib, libpng/libpng/projects/visualc6/libpng.dsw +0 -59
  210. data/windows/zlib, libpng/libpng/projects/visualc6/pngtest.dsp +0 -314
  211. data/windows/zlib, libpng/libpng/projects/visualc71/PRJ0041.mak +0 -21
  212. data/windows/zlib, libpng/libpng/projects/visualc71/README.txt +0 -57
  213. data/windows/zlib, libpng/libpng/projects/visualc71/README_zlib.txt +0 -44
  214. data/windows/zlib, libpng/libpng/projects/visualc71/libpng.sln +0 -88
  215. data/windows/zlib, libpng/libpng/projects/visualc71/libpng.vcproj +0 -702
  216. data/windows/zlib, libpng/libpng/projects/visualc71/pngtest.vcproj +0 -459
  217. data/windows/zlib, libpng/libpng/projects/visualc71/zlib.vcproj +0 -670
  218. data/windows/zlib, libpng/libpng/projects/wince.txt +0 -6
  219. data/windows/zlib, libpng/libpng/scripts/CMakeLists.txt +0 -210
  220. data/windows/zlib, libpng/libpng/scripts/SCOPTIONS.ppc +0 -7
  221. data/windows/zlib, libpng/libpng/scripts/descrip.mms +0 -52
  222. data/windows/zlib, libpng/libpng/scripts/libpng-config-body.in +0 -96
  223. data/windows/zlib, libpng/libpng/scripts/libpng-config-head.in +0 -21
  224. data/windows/zlib, libpng/libpng/scripts/libpng-config.in +0 -124
  225. data/windows/zlib, libpng/libpng/scripts/libpng.icc +0 -44
  226. data/windows/zlib, libpng/libpng/scripts/libpng.pc-configure.in +0 -10
  227. data/windows/zlib, libpng/libpng/scripts/libpng.pc.in +0 -10
  228. data/windows/zlib, libpng/libpng/scripts/makefile.32sunu +0 -254
  229. data/windows/zlib, libpng/libpng/scripts/makefile.64sunu +0 -254
  230. data/windows/zlib, libpng/libpng/scripts/makefile.acorn +0 -51
  231. data/windows/zlib, libpng/libpng/scripts/makefile.aix +0 -113
  232. data/windows/zlib, libpng/libpng/scripts/makefile.amiga +0 -48
  233. data/windows/zlib, libpng/libpng/scripts/makefile.atari +0 -51
  234. data/windows/zlib, libpng/libpng/scripts/makefile.bc32 +0 -152
  235. data/windows/zlib, libpng/libpng/scripts/makefile.beos +0 -226
  236. data/windows/zlib, libpng/libpng/scripts/makefile.bor +0 -162
  237. data/windows/zlib, libpng/libpng/scripts/makefile.cygwin +0 -299
  238. data/windows/zlib, libpng/libpng/scripts/makefile.darwin +0 -234
  239. data/windows/zlib, libpng/libpng/scripts/makefile.dec +0 -214
  240. data/windows/zlib, libpng/libpng/scripts/makefile.dj2 +0 -55
  241. data/windows/zlib, libpng/libpng/scripts/makefile.elf +0 -275
  242. data/windows/zlib, libpng/libpng/scripts/makefile.freebsd +0 -48
  243. data/windows/zlib, libpng/libpng/scripts/makefile.gcc +0 -79
  244. data/windows/zlib, libpng/libpng/scripts/makefile.gcmmx +0 -271
  245. data/windows/zlib, libpng/libpng/scripts/makefile.hp64 +0 -235
  246. data/windows/zlib, libpng/libpng/scripts/makefile.hpgcc +0 -245
  247. data/windows/zlib, libpng/libpng/scripts/makefile.hpux +0 -232
  248. data/windows/zlib, libpng/libpng/scripts/makefile.ibmc +0 -71
  249. data/windows/zlib, libpng/libpng/scripts/makefile.intel +0 -102
  250. data/windows/zlib, libpng/libpng/scripts/makefile.knr +0 -99
  251. data/windows/zlib, libpng/libpng/scripts/makefile.linux +0 -249
  252. data/windows/zlib, libpng/libpng/scripts/makefile.mingw +0 -289
  253. data/windows/zlib, libpng/libpng/scripts/makefile.mips +0 -83
  254. data/windows/zlib, libpng/libpng/scripts/makefile.msc +0 -86
  255. data/windows/zlib, libpng/libpng/scripts/makefile.ne12bsd +0 -45
  256. data/windows/zlib, libpng/libpng/scripts/makefile.netbsd +0 -45
  257. data/windows/zlib, libpng/libpng/scripts/makefile.nommx +0 -252
  258. data/windows/zlib, libpng/libpng/scripts/makefile.openbsd +0 -73
  259. data/windows/zlib, libpng/libpng/scripts/makefile.os2 +0 -69
  260. data/windows/zlib, libpng/libpng/scripts/makefile.sco +0 -229
  261. data/windows/zlib, libpng/libpng/scripts/makefile.sggcc +0 -242
  262. data/windows/zlib, libpng/libpng/scripts/makefile.sgi +0 -245
  263. data/windows/zlib, libpng/libpng/scripts/makefile.so9 +0 -251
  264. data/windows/zlib, libpng/libpng/scripts/makefile.solaris +0 -249
  265. data/windows/zlib, libpng/libpng/scripts/makefile.solaris-x86 +0 -248
  266. data/windows/zlib, libpng/libpng/scripts/makefile.std +0 -92
  267. data/windows/zlib, libpng/libpng/scripts/makefile.sunos +0 -97
  268. data/windows/zlib, libpng/libpng/scripts/makefile.tc3 +0 -89
  269. data/windows/zlib, libpng/libpng/scripts/makefile.vcawin32 +0 -99
  270. data/windows/zlib, libpng/libpng/scripts/makefile.vcwin32 +0 -99
  271. data/windows/zlib, libpng/libpng/scripts/makefile.watcom +0 -109
  272. data/windows/zlib, libpng/libpng/scripts/makevms.com +0 -144
  273. data/windows/zlib, libpng/libpng/scripts/pngos2.def +0 -257
  274. data/windows/zlib, libpng/libpng/scripts/pngw32.def +0 -238
  275. data/windows/zlib, libpng/libpng/scripts/pngw32.rc +0 -112
  276. data/windows/zlib, libpng/libpng/scripts/smakefile.ppc +0 -30
  277. data/windows/zlib, libpng/zlib/ChangeLog +0 -855
  278. data/windows/zlib, libpng/zlib/FAQ +0 -339
  279. data/windows/zlib, libpng/zlib/INDEX +0 -51
  280. data/windows/zlib, libpng/zlib/Makefile +0 -154
  281. data/windows/zlib, libpng/zlib/Makefile.in +0 -154
  282. data/windows/zlib, libpng/zlib/README +0 -125
  283. data/windows/zlib, libpng/zlib/adler32.c +0 -149
  284. data/windows/zlib, libpng/zlib/algorithm.txt +0 -209
  285. data/windows/zlib, libpng/zlib/amiga/Makefile.pup +0 -66
  286. data/windows/zlib, libpng/zlib/amiga/Makefile.sas +0 -65
  287. data/windows/zlib, libpng/zlib/as400/bndsrc +0 -132
  288. data/windows/zlib, libpng/zlib/as400/compile.clp +0 -123
  289. data/windows/zlib, libpng/zlib/as400/readme.txt +0 -111
  290. data/windows/zlib, libpng/zlib/as400/zlib.inc +0 -331
  291. data/windows/zlib, libpng/zlib/compress.c +0 -79
  292. data/windows/zlib, libpng/zlib/configure +0 -459
  293. data/windows/zlib, libpng/zlib/contrib/README.contrib +0 -71
  294. data/windows/zlib, libpng/zlib/contrib/ada/buffer_demo.adb +0 -106
  295. data/windows/zlib, libpng/zlib/contrib/ada/mtest.adb +0 -156
  296. data/windows/zlib, libpng/zlib/contrib/ada/read.adb +0 -156
  297. data/windows/zlib, libpng/zlib/contrib/ada/readme.txt +0 -65
  298. data/windows/zlib, libpng/zlib/contrib/ada/test.adb +0 -463
  299. data/windows/zlib, libpng/zlib/contrib/ada/zlib-streams.adb +0 -225
  300. data/windows/zlib, libpng/zlib/contrib/ada/zlib-streams.ads +0 -114
  301. data/windows/zlib, libpng/zlib/contrib/ada/zlib-thin.adb +0 -141
  302. data/windows/zlib, libpng/zlib/contrib/ada/zlib-thin.ads +0 -450
  303. data/windows/zlib, libpng/zlib/contrib/ada/zlib.adb +0 -701
  304. data/windows/zlib, libpng/zlib/contrib/ada/zlib.ads +0 -328
  305. data/windows/zlib, libpng/zlib/contrib/ada/zlib.gpr +0 -20
  306. data/windows/zlib, libpng/zlib/contrib/asm586/README.586 +0 -43
  307. data/windows/zlib, libpng/zlib/contrib/asm586/match.S +0 -364
  308. data/windows/zlib, libpng/zlib/contrib/asm686/README.686 +0 -34
  309. data/windows/zlib, libpng/zlib/contrib/asm686/match.S +0 -329
  310. data/windows/zlib, libpng/zlib/contrib/blast/Makefile +0 -8
  311. data/windows/zlib, libpng/zlib/contrib/blast/README +0 -4
  312. data/windows/zlib, libpng/zlib/contrib/blast/blast.c +0 -444
  313. data/windows/zlib, libpng/zlib/contrib/blast/blast.h +0 -71
  314. data/windows/zlib, libpng/zlib/contrib/blast/test.pk +0 -0
  315. data/windows/zlib, libpng/zlib/contrib/blast/test.txt +0 -1
  316. data/windows/zlib, libpng/zlib/contrib/delphi/ZLib.pas +0 -557
  317. data/windows/zlib, libpng/zlib/contrib/delphi/ZLibConst.pas +0 -11
  318. data/windows/zlib, libpng/zlib/contrib/delphi/readme.txt +0 -76
  319. data/windows/zlib, libpng/zlib/contrib/delphi/zlibd32.mak +0 -93
  320. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib.build +0 -33
  321. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib.chm +0 -0
  322. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib.sln +0 -21
  323. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs +0 -58
  324. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs +0 -202
  325. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs +0 -83
  326. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/CodecBase.cs +0 -198
  327. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/Deflater.cs +0 -106
  328. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/DotZLib.cs +0 -288
  329. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj +0 -141
  330. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/GZipStream.cs +0 -301
  331. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/Inflater.cs +0 -105
  332. data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/UnitTests.cs +0 -274
  333. data/windows/zlib, libpng/zlib/contrib/dotzlib/LICENSE_1_0.txt +0 -23
  334. data/windows/zlib, libpng/zlib/contrib/dotzlib/readme.txt +0 -58
  335. data/windows/zlib, libpng/zlib/contrib/infback9/README +0 -1
  336. data/windows/zlib, libpng/zlib/contrib/infback9/infback9.c +0 -608
  337. data/windows/zlib, libpng/zlib/contrib/infback9/infback9.h +0 -37
  338. data/windows/zlib, libpng/zlib/contrib/infback9/inffix9.h +0 -107
  339. data/windows/zlib, libpng/zlib/contrib/infback9/inflate9.h +0 -47
  340. data/windows/zlib, libpng/zlib/contrib/infback9/inftree9.c +0 -323
  341. data/windows/zlib, libpng/zlib/contrib/infback9/inftree9.h +0 -55
  342. data/windows/zlib, libpng/zlib/contrib/inflate86/inffas86.c +0 -1157
  343. data/windows/zlib, libpng/zlib/contrib/inflate86/inffast.S +0 -1368
  344. data/windows/zlib, libpng/zlib/contrib/iostream/test.cpp +0 -24
  345. data/windows/zlib, libpng/zlib/contrib/iostream/zfstream.cpp +0 -329
  346. data/windows/zlib, libpng/zlib/contrib/iostream/zfstream.h +0 -128
  347. data/windows/zlib, libpng/zlib/contrib/iostream2/zstream.h +0 -307
  348. data/windows/zlib, libpng/zlib/contrib/iostream2/zstream_test.cpp +0 -25
  349. data/windows/zlib, libpng/zlib/contrib/iostream3/README +0 -35
  350. data/windows/zlib, libpng/zlib/contrib/iostream3/TODO +0 -17
  351. data/windows/zlib, libpng/zlib/contrib/iostream3/test.cc +0 -50
  352. data/windows/zlib, libpng/zlib/contrib/iostream3/zfstream.cc +0 -479
  353. data/windows/zlib, libpng/zlib/contrib/iostream3/zfstream.h +0 -466
  354. data/windows/zlib, libpng/zlib/contrib/masm686/match.asm +0 -413
  355. data/windows/zlib, libpng/zlib/contrib/masmx64/bld_ml64.bat +0 -2
  356. data/windows/zlib, libpng/zlib/contrib/masmx64/gvmat64.asm +0 -513
  357. data/windows/zlib, libpng/zlib/contrib/masmx64/gvmat64.obj +0 -0
  358. data/windows/zlib, libpng/zlib/contrib/masmx64/inffas8664.c +0 -186
  359. data/windows/zlib, libpng/zlib/contrib/masmx64/inffasx64.asm +0 -392
  360. data/windows/zlib, libpng/zlib/contrib/masmx64/inffasx64.obj +0 -0
  361. data/windows/zlib, libpng/zlib/contrib/masmx64/readme.txt +0 -28
  362. data/windows/zlib, libpng/zlib/contrib/masmx86/bld_ml32.bat +0 -2
  363. data/windows/zlib, libpng/zlib/contrib/masmx86/gvmat32.asm +0 -972
  364. data/windows/zlib, libpng/zlib/contrib/masmx86/gvmat32.obj +0 -0
  365. data/windows/zlib, libpng/zlib/contrib/masmx86/gvmat32c.c +0 -62
  366. data/windows/zlib, libpng/zlib/contrib/masmx86/inffas32.asm +0 -1083
  367. data/windows/zlib, libpng/zlib/contrib/masmx86/inffas32.obj +0 -0
  368. data/windows/zlib, libpng/zlib/contrib/masmx86/mkasm.bat +0 -3
  369. data/windows/zlib, libpng/zlib/contrib/masmx86/readme.txt +0 -21
  370. data/windows/zlib, libpng/zlib/contrib/minizip/ChangeLogUnzip +0 -67
  371. data/windows/zlib, libpng/zlib/contrib/minizip/Makefile +0 -25
  372. data/windows/zlib, libpng/zlib/contrib/minizip/crypt.h +0 -132
  373. data/windows/zlib, libpng/zlib/contrib/minizip/ioapi.c +0 -177
  374. data/windows/zlib, libpng/zlib/contrib/minizip/ioapi.h +0 -75
  375. data/windows/zlib, libpng/zlib/contrib/minizip/iowin32.c +0 -270
  376. data/windows/zlib, libpng/zlib/contrib/minizip/iowin32.h +0 -21
  377. data/windows/zlib, libpng/zlib/contrib/minizip/miniunz.c +0 -585
  378. data/windows/zlib, libpng/zlib/contrib/minizip/minizip.c +0 -420
  379. data/windows/zlib, libpng/zlib/contrib/minizip/mztools.c +0 -281
  380. data/windows/zlib, libpng/zlib/contrib/minizip/mztools.h +0 -31
  381. data/windows/zlib, libpng/zlib/contrib/minizip/unzip.c +0 -1598
  382. data/windows/zlib, libpng/zlib/contrib/minizip/unzip.h +0 -354
  383. data/windows/zlib, libpng/zlib/contrib/minizip/zip.c +0 -1219
  384. data/windows/zlib, libpng/zlib/contrib/minizip/zip.h +0 -235
  385. data/windows/zlib, libpng/zlib/contrib/pascal/example.pas +0 -599
  386. data/windows/zlib, libpng/zlib/contrib/pascal/readme.txt +0 -76
  387. data/windows/zlib, libpng/zlib/contrib/pascal/zlibd32.mak +0 -93
  388. data/windows/zlib, libpng/zlib/contrib/pascal/zlibpas.pas +0 -236
  389. data/windows/zlib, libpng/zlib/contrib/puff/Makefile +0 -8
  390. data/windows/zlib, libpng/zlib/contrib/puff/README +0 -63
  391. data/windows/zlib, libpng/zlib/contrib/puff/puff.c +0 -837
  392. data/windows/zlib, libpng/zlib/contrib/puff/puff.h +0 -31
  393. data/windows/zlib, libpng/zlib/contrib/puff/zeros.raw +0 -0
  394. data/windows/zlib, libpng/zlib/contrib/testzlib/testzlib.c +0 -275
  395. data/windows/zlib, libpng/zlib/contrib/testzlib/testzlib.txt +0 -10
  396. data/windows/zlib, libpng/zlib/contrib/untgz/Makefile +0 -14
  397. data/windows/zlib, libpng/zlib/contrib/untgz/Makefile.msc +0 -17
  398. data/windows/zlib, libpng/zlib/contrib/untgz/untgz.c +0 -674
  399. data/windows/zlib, libpng/zlib/contrib/vstudio/readme.txt +0 -73
  400. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/miniunz.vcproj +0 -126
  401. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/minizip.vcproj +0 -126
  402. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/testzlib.vcproj +0 -126
  403. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlib.rc +0 -32
  404. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibstat.vcproj +0 -246
  405. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibvc.def +0 -92
  406. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibvc.sln +0 -78
  407. data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibvc.vcproj +0 -445
  408. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/miniunz.vcproj +0 -566
  409. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/minizip.vcproj +0 -563
  410. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/testzlib.vcproj +0 -948
  411. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/testzlibdll.vcproj +0 -567
  412. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlib.rc +0 -32
  413. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibstat.vcproj +0 -870
  414. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibvc.def +0 -92
  415. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibvc.sln +0 -144
  416. data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibvc.vcproj +0 -1219
  417. data/windows/zlib, libpng/zlib/crc32.c +0 -423
  418. data/windows/zlib, libpng/zlib/crc32.h +0 -441
  419. data/windows/zlib, libpng/zlib/deflate.c +0 -1736
  420. data/windows/zlib, libpng/zlib/deflate.h +0 -331
  421. data/windows/zlib, libpng/zlib/example.c +0 -565
  422. data/windows/zlib, libpng/zlib/examples/README.examples +0 -42
  423. data/windows/zlib, libpng/zlib/examples/fitblk.c +0 -233
  424. data/windows/zlib, libpng/zlib/examples/gun.c +0 -693
  425. data/windows/zlib, libpng/zlib/examples/gzappend.c +0 -500
  426. data/windows/zlib, libpng/zlib/examples/gzjoin.c +0 -448
  427. data/windows/zlib, libpng/zlib/examples/gzlog.c +0 -413
  428. data/windows/zlib, libpng/zlib/examples/gzlog.h +0 -58
  429. data/windows/zlib, libpng/zlib/examples/zlib_how.html +0 -523
  430. data/windows/zlib, libpng/zlib/examples/zpipe.c +0 -191
  431. data/windows/zlib, libpng/zlib/examples/zran.c +0 -404
  432. data/windows/zlib, libpng/zlib/gzio.c +0 -1026
  433. data/windows/zlib, libpng/zlib/infback.c +0 -623
  434. data/windows/zlib, libpng/zlib/inffast.c +0 -318
  435. data/windows/zlib, libpng/zlib/inffast.h +0 -11
  436. data/windows/zlib, libpng/zlib/inffixed.h +0 -94
  437. data/windows/zlib, libpng/zlib/inflate.c +0 -1368
  438. data/windows/zlib, libpng/zlib/inflate.h +0 -115
  439. data/windows/zlib, libpng/zlib/inftrees.c +0 -329
  440. data/windows/zlib, libpng/zlib/inftrees.h +0 -55
  441. data/windows/zlib, libpng/zlib/make_vms.com +0 -461
  442. data/windows/zlib, libpng/zlib/minigzip.c +0 -322
  443. data/windows/zlib, libpng/zlib/msdos/Makefile.bor +0 -109
  444. data/windows/zlib, libpng/zlib/msdos/Makefile.dj2 +0 -104
  445. data/windows/zlib, libpng/zlib/msdos/Makefile.emx +0 -69
  446. data/windows/zlib, libpng/zlib/msdos/Makefile.msc +0 -106
  447. data/windows/zlib, libpng/zlib/msdos/Makefile.tc +0 -94
  448. data/windows/zlib, libpng/zlib/old/Makefile.riscos +0 -151
  449. data/windows/zlib, libpng/zlib/old/README +0 -3
  450. data/windows/zlib, libpng/zlib/old/descrip.mms +0 -48
  451. data/windows/zlib, libpng/zlib/old/os2/Makefile.os2 +0 -136
  452. data/windows/zlib, libpng/zlib/old/os2/zlib.def +0 -51
  453. data/windows/zlib, libpng/zlib/old/visual-basic.txt +0 -160
  454. data/windows/zlib, libpng/zlib/old/zlib.html +0 -971
  455. data/windows/zlib, libpng/zlib/projects/README.projects +0 -41
  456. data/windows/zlib, libpng/zlib/projects/visualc6/README.txt +0 -73
  457. data/windows/zlib, libpng/zlib/projects/visualc6/example.dsp +0 -278
  458. data/windows/zlib, libpng/zlib/projects/visualc6/minigzip.dsp +0 -278
  459. data/windows/zlib, libpng/zlib/projects/visualc6/zlib.dsp +0 -609
  460. data/windows/zlib, libpng/zlib/projects/visualc6/zlib.dsw +0 -59
  461. data/windows/zlib, libpng/zlib/qnx/package.qpg +0 -141
  462. data/windows/zlib, libpng/zlib/trees.c +0 -1219
  463. data/windows/zlib, libpng/zlib/trees.h +0 -128
  464. data/windows/zlib, libpng/zlib/uncompr.c +0 -61
  465. data/windows/zlib, libpng/zlib/win32/DLL_FAQ.txt +0 -397
  466. data/windows/zlib, libpng/zlib/win32/Makefile.bor +0 -107
  467. data/windows/zlib, libpng/zlib/win32/Makefile.emx +0 -69
  468. data/windows/zlib, libpng/zlib/win32/Makefile.gcc +0 -141
  469. data/windows/zlib, libpng/zlib/win32/Makefile.msc +0 -126
  470. data/windows/zlib, libpng/zlib/win32/VisualC.txt +0 -3
  471. data/windows/zlib, libpng/zlib/win32/zlib.def +0 -60
  472. data/windows/zlib, libpng/zlib/win32/zlib1.rc +0 -39
  473. data/windows/zlib, libpng/zlib/zconf.h +0 -332
  474. data/windows/zlib, libpng/zlib/zconf.in.h +0 -332
  475. data/windows/zlib, libpng/zlib/zlib.3 +0 -159
  476. data/windows/zlib, libpng/zlib/zlib.h +0 -1357
  477. data/windows/zlib, libpng/zlib/zutil.c +0 -318
  478. data/windows/zlib, libpng/zlib/zutil.h +0 -269
@@ -26,12 +26,14 @@ namespace Gosu
26
26
  class Audio : boost::noncopyable
27
27
  {
28
28
  public:
29
- #ifdef GOSU_IS_WIN
29
+ #ifdef GOSU_IS_WIN
30
30
  explicit Audio(HWND window);
31
- #else
31
+ #else
32
32
  Audio();
33
- #endif
33
+ #endif
34
34
  ~Audio();
35
+
36
+ void update();
35
37
  };
36
38
 
37
39
  //! An instance of a Sample playing. Can be used to stop sounds dynamically,
@@ -117,7 +119,11 @@ namespace Gosu
117
119
  class ModuleData;
118
120
  class StreamData;
119
121
  boost::scoped_ptr<BaseData> data;
120
-
122
+
123
+ #ifdef GOSU_IS_MAC
124
+ void update();
125
+ friend class Audio;
126
+ #endif
121
127
  public:
122
128
  //! There are two types of songs that can be loaded as a Song: Streamed
123
129
  //! songs (like OGG) and modules (like MOD or XM).
@@ -8,14 +8,14 @@ namespace Gosu
8
8
  {
9
9
  //! Pi.
10
10
  const double pi = 3.1415926536;
11
-
11
+
12
12
  //! Truncates the fractional part of a real value. Equivalent to
13
13
  //! static_cast<long>.
14
14
  inline long trunc(double value)
15
15
  {
16
16
  return static_cast<long>(value);
17
17
  }
18
-
18
+
19
19
  //! Rounds a real value towards the next integer.
20
20
  inline long round(double value)
21
21
  {
@@ -24,11 +24,11 @@ namespace Gosu
24
24
  else
25
25
  return static_cast<long>(value - 0.5);
26
26
  }
27
-
28
- //! Returns a real value between min and max. Uses std::rand (so you have
29
- //! to call std::srand before using it).
27
+
28
+ //! Returns a real value between min (inclusive) and max (exclusive).
29
+ //! Uses std::rand, so you should call std::srand before using it.
30
30
  double random(double min, double max);
31
-
31
+
32
32
  //! Translates between Gosu's angle system and radians.
33
33
  inline double gosuToRadians(double angle)
34
34
  {
@@ -40,6 +40,19 @@ namespace Gosu
40
40
  return angle * 180 / pi + 90;
41
41
  }
42
42
 
43
+ //! Translates between Gosu's angle scaling and radians, i.e. it
44
+ //! does not change the 'origin' of the angle system.
45
+ inline double gosuToRadianScale(double angle)
46
+ {
47
+ return angle * pi / 180;
48
+ }
49
+ //! Translates between Gosu's angle scaling and radians, i.e. it
50
+ //! does not change the 'origin' of the angle system.
51
+ inline double radiansScaleToGosu(double angle)
52
+ {
53
+ return angle * 180 / pi;
54
+ }
55
+
43
56
  //! Returns the horizontal distance between the origin and the point to
44
57
  //! which you would get if you moved radius pixels in the direction
45
58
  //! specified by angle.
@@ -59,14 +72,14 @@ namespace Gosu
59
72
  double angleDiff(double angle1, double angle2);
60
73
  //! Normalizes an angle to fit into the range [0; 360[.
61
74
  double normalizeAngle(double angle);
62
-
75
+
63
76
  //! Returns value * value.
64
77
  template<typename T>
65
78
  T square(T value)
66
79
  {
67
80
  return value * value;
68
81
  }
69
-
82
+
70
83
  //! Returns min if value is smaller than min, max if value is larger than
71
84
  //! max and value otherwise.
72
85
  template<typename T>
@@ -85,13 +98,13 @@ namespace Gosu
85
98
  {
86
99
  return clamp(value, min, max);
87
100
  }
88
-
101
+
89
102
  //! Returns the square of the distance between two points.
90
103
  inline double distanceSqr(double x1, double y1, double x2, double y2)
91
104
  {
92
105
  return square(x1 - x2) + square(y1 - y2);
93
106
  }
94
-
107
+
95
108
  //! Returns the distance between two points.
96
109
  double distance(double x1, double y1, double x2, double y2);
97
110
 
@@ -5,11 +5,13 @@
5
5
  #define GOSU_PLATFORM_HPP
6
6
 
7
7
  #ifdef __BIG_ENDIAN__
8
+ #define GOSU_IS_BIG_ENDIAN
8
9
  #define IDENTITY_FUN bigToNative
9
10
  #define IDENTITY_FUN2 nativeToBig
10
11
  #define CONV_FUN littleToNative
11
12
  #define CONV_FUN2 nativeToLittle
12
13
  #else
14
+ #define GOSU_IS_LITTLE_ENDIAN
13
15
  #define IDENTITY_FUN littleToNative
14
16
  #define IDENTITY_FUN2 nativeToLittle
15
17
  #define CONV_FUN bigToNative
@@ -0,0 +1,9 @@
1
+ #ifndef GOSU_VERSION_HPP
2
+ #define GOSU_VERSION_HPP
3
+
4
+ #define GOSU_MAJOR_VERSION 0
5
+ #define GOSU_MINOR_VERSION 7
6
+ #define GOSU_POINT_VERSION 14
7
+ #define GOSU_VERSION "0.7.14"
8
+
9
+ #endif
@@ -18,7 +18,12 @@ namespace Gosu
18
18
 
19
19
  public:
20
20
  enum { NO_TOKEN = -1, NO_SOURCE = -1, NO_FREE_CHANNEL = -1 };
21
-
21
+
22
+ static ALCdevice* device()
23
+ {
24
+ return alDevice;
25
+ }
26
+
22
27
  ALChannelManagement()
23
28
  {
24
29
  // Open preferred device
@@ -42,7 +47,7 @@ namespace Gosu
42
47
  std::pair<int, int> reserveChannel()
43
48
  {
44
49
  int i;
45
- for (i = 0; i <= NUM_SOURCES; ++i)
50
+ for (i = 1; i <= NUM_SOURCES; ++i)
46
51
  {
47
52
  if (i == NUM_SOURCES)
48
53
  return std::make_pair<int, int>(NO_FREE_CHANNEL, NO_TOKEN);
@@ -60,10 +65,15 @@ namespace Gosu
60
65
 
61
66
  int sourceIfStillPlaying(int channel, int token) const
62
67
  {
63
- if (currentTokens[channel] == token)
68
+ if (channel != NO_FREE_CHANNEL && currentTokens[channel] == token)
64
69
  return alSources[channel];
65
70
  return NO_SOURCE;
66
71
  }
72
+
73
+ int sourceForSongs() const
74
+ {
75
+ return alSources[0];
76
+ }
67
77
  };
68
78
  ALCdevice* ALChannelManagement::alDevice = 0;
69
79
  ALCcontext* ALChannelManagement::alContext = 0;
@@ -0,0 +1,45 @@
1
+ #ifndef GOSUIMPL_AUDIO_AUDIOFILE_HPP
2
+ #define GOSUIMPL_AUDIO_AUDIOFILE_HPP
3
+
4
+ #include <boost/noncopyable.hpp>
5
+ #include <vector>
6
+ #import <OpenAL/al.h>
7
+
8
+ namespace Gosu
9
+ {
10
+ class AudioFile : boost::noncopyable
11
+ {
12
+ std::vector<char> decodedData_;
13
+
14
+ public:
15
+ virtual ~AudioFile() {}
16
+ virtual ALenum format() const = 0;
17
+ virtual ALuint sampleRate() const = 0;
18
+ virtual std::size_t readData(void* dest, std::size_t length) = 0;
19
+ virtual void rewind() = 0;
20
+
21
+ const std::vector<char>& decodedData()
22
+ {
23
+ static const unsigned INCREMENT = 512*1024;
24
+
25
+ if (!decodedData_.empty())
26
+ return decodedData_;
27
+
28
+ for (;;)
29
+ {
30
+ decodedData_.resize(decodedData_.size() + INCREMENT);
31
+ int readBytes = readData(&decodedData_[decodedData_.size() - INCREMENT],
32
+ INCREMENT);
33
+ if (readBytes < INCREMENT)
34
+ {
35
+ decodedData_.resize(decodedData_.size() - INCREMENT + readBytes);
36
+ break;
37
+ }
38
+ }
39
+
40
+ return decodedData_;
41
+ }
42
+ };
43
+ }
44
+
45
+ #endif
@@ -0,0 +1,533 @@
1
+ #include <GosuImpl/MacUtility.hpp>
2
+ #include <GosuImpl/Audio/AudioToolboxFile.hpp>
3
+ #include <GosuImpl/Audio/ALChannelManagement.hpp>
4
+ #include <GosuImpl/Audio/OggFile.hpp>
5
+
6
+ #include <Gosu/Audio.hpp>
7
+ #include <Gosu/Math.hpp>
8
+ #include <Gosu/IO.hpp>
9
+ #include <Gosu/Utility.hpp>
10
+ #include <Gosu/Platform.hpp>
11
+
12
+ #include <boost/algorithm/string.hpp>
13
+ #include <boost/lexical_cast.hpp>
14
+ #include <boost/optional.hpp>
15
+
16
+ #include <cassert>
17
+ #include <cstdlib>
18
+ #include <algorithm>
19
+ #include <stdexcept>
20
+ #include <vector>
21
+
22
+ #include <OpenAL/al.h>
23
+ #include <OpenAL/alc.h>
24
+
25
+ #if __LP64__ || NS_BUILD_32_LIKE_64
26
+ typedef long NSInteger;
27
+ typedef unsigned long NSUInteger;
28
+ #else
29
+ typedef int NSInteger;
30
+ typedef unsigned int NSUInteger;
31
+ #endif
32
+
33
+ using namespace std;
34
+
35
+ namespace
36
+ {
37
+ using namespace Gosu;
38
+
39
+ GOSU_NORETURN void throwLastALError(const char* action)
40
+ {
41
+ string message = "OpenAL error " +
42
+ boost::lexical_cast<string>(alcGetError(ALChannelManagement::device()));
43
+ if (action)
44
+ message += " while ", message += action;
45
+ throw runtime_error(message);
46
+ }
47
+
48
+ inline void alCheck(const char* action = 0)
49
+ {
50
+ if (alcGetError(ALChannelManagement::device()) != ALC_NO_ERROR)
51
+ throwLastALError(action);
52
+ }
53
+
54
+ bool isOggFile(Gosu::Reader reader)
55
+ {
56
+ char magicBytes[4];
57
+ reader.read(magicBytes, 4);
58
+ return magicBytes[0] == 'O' && magicBytes[1] == 'g' &&
59
+ magicBytes[2] == 'g' && magicBytes[3] == 'S';
60
+ }
61
+
62
+ bool isOggFile(const std::wstring& filename)
63
+ {
64
+ Gosu::File file(filename);
65
+ return isOggFile(file.frontReader());
66
+ }
67
+
68
+ Song* curSong = 0;
69
+ bool curSongLooping;
70
+ }
71
+
72
+ Gosu::Audio::Audio()
73
+ {
74
+ if (alChannelManagement)
75
+ throw std::logic_error("Multiple Gosu::Audio instances not supported");
76
+ alChannelManagement.reset(new ALChannelManagement);
77
+ }
78
+
79
+ Gosu::Audio::~Audio()
80
+ {
81
+ alChannelManagement.reset();
82
+ }
83
+
84
+ void Gosu::Audio::update()
85
+ {
86
+ if (Song::currentSong())
87
+ Song::currentSong()->update();
88
+ }
89
+
90
+ Gosu::SampleInstance::SampleInstance(int handle, int extra)
91
+ : handle(handle), extra(extra)
92
+ {
93
+ }
94
+
95
+ bool Gosu::SampleInstance::playing() const
96
+ {
97
+ NSUInteger source = alChannelManagement->sourceIfStillPlaying(handle, extra);
98
+ if (source == ALChannelManagement::NO_SOURCE)
99
+ return false;
100
+ ALint state;
101
+ alGetSourcei(source, AL_SOURCE_STATE, &state);
102
+ return state == AL_PLAYING;
103
+ }
104
+
105
+ bool Gosu::SampleInstance::paused() const
106
+ {
107
+ NSUInteger source = alChannelManagement->sourceIfStillPlaying(handle, extra);
108
+ if (source == ALChannelManagement::NO_SOURCE)
109
+ return false;
110
+ ALint state;
111
+ alGetSourcei(source, AL_SOURCE_STATE, &state);
112
+ return state == AL_PAUSED;
113
+ }
114
+
115
+ void Gosu::SampleInstance::pause()
116
+ {
117
+ NSUInteger source = alChannelManagement->sourceIfStillPlaying(handle, extra);
118
+ if (source == ALChannelManagement::NO_SOURCE)
119
+ return;
120
+ alSourcePause(source);
121
+ }
122
+
123
+ void Gosu::SampleInstance::resume()
124
+ {
125
+ NSUInteger source = alChannelManagement->sourceIfStillPlaying(handle, extra);
126
+ if (source == ALChannelManagement::NO_SOURCE)
127
+ return;
128
+ ALint state;
129
+ alGetSourcei(source, AL_SOURCE_STATE, &state);
130
+ if (state == AL_PAUSED)
131
+ alSourcePlay(source);
132
+ }
133
+
134
+ void Gosu::SampleInstance::stop()
135
+ {
136
+ NSUInteger source = alChannelManagement->sourceIfStillPlaying(handle, extra);
137
+ if (source == ALChannelManagement::NO_SOURCE)
138
+ return;
139
+ alSourceStop(source);
140
+ }
141
+
142
+ void Gosu::SampleInstance::changeVolume(double volume)
143
+ {
144
+ NSUInteger source = alChannelManagement->sourceIfStillPlaying(handle, extra);
145
+ if (source == ALChannelManagement::NO_SOURCE)
146
+ return;
147
+ alSourcef(source, AL_GAIN, volume);
148
+ }
149
+
150
+ void Gosu::SampleInstance::changePan(double pan)
151
+ {
152
+ NSUInteger source = alChannelManagement->sourceIfStillPlaying(handle, extra);
153
+ if (source == ALChannelManagement::NO_SOURCE)
154
+ return;
155
+ // TODO: This is not the old panning behavior!
156
+ alSource3f(source, AL_POSITION, pan * 10, 0, 0);
157
+ }
158
+
159
+ void Gosu::SampleInstance::changeSpeed(double speed)
160
+ {
161
+ NSUInteger source = alChannelManagement->sourceIfStillPlaying(handle, extra);
162
+ if (source == ALChannelManagement::NO_SOURCE)
163
+ return;
164
+ alSourcef(source, AL_PITCH, speed);
165
+ }
166
+
167
+ struct Gosu::Sample::SampleData : boost::noncopyable
168
+ {
169
+ NSUInteger buffer, source;
170
+
171
+ SampleData(AudioFile& audioFile)
172
+ {
173
+ alGenBuffers(1, &buffer);
174
+ alBufferData(buffer,
175
+ audioFile.format(),
176
+ &audioFile.decodedData().front(),
177
+ audioFile.decodedData().size(),
178
+ audioFile.sampleRate());
179
+ }
180
+
181
+ ~SampleData()
182
+ {
183
+ // It's hard to free things in the right order in Ruby/Gosu.
184
+ // Make sure buffer isn't deleted after the context/device are shut down.
185
+
186
+ if (!alChannelManagement)
187
+ return;
188
+
189
+ alDeleteBuffers(1, &buffer);
190
+ }
191
+ };
192
+
193
+ Gosu::Sample::Sample(Audio& audio, const std::wstring& filename)
194
+ {
195
+ if (isOggFile(filename))
196
+ {
197
+ Gosu::Buffer buffer;
198
+ Gosu::loadFile(buffer, filename);
199
+ OggFile oggFile(buffer.frontReader());
200
+ data.reset(new SampleData(oggFile));
201
+ }
202
+ else
203
+ {
204
+ AudioToolboxFile audioFile(filename);
205
+ data.reset(new SampleData(audioFile));
206
+ }
207
+ }
208
+
209
+ Gosu::Sample::Sample(Audio& audio, Reader reader)
210
+ {
211
+ if (isOggFile(reader))
212
+ {
213
+ OggFile oggFile(reader);
214
+ data.reset(new SampleData(oggFile));
215
+ }
216
+ else
217
+ {
218
+ AudioToolboxFile audioFile(reader);
219
+ data.reset(new SampleData(audioFile));
220
+ }
221
+ }
222
+
223
+ Gosu::Sample::~Sample()
224
+ {
225
+ }
226
+
227
+ Gosu::SampleInstance Gosu::Sample::play(double volume, double speed,
228
+ bool looping) const
229
+ {
230
+ return playPan(0, volume, speed, looping);
231
+ }
232
+
233
+ Gosu::SampleInstance Gosu::Sample::playPan(double pan, double volume,
234
+ double speed, bool looping) const
235
+ {
236
+ std::pair<int, int> channelAndToken = alChannelManagement->reserveChannel();
237
+ if (channelAndToken.first == ALChannelManagement::NO_FREE_CHANNEL)
238
+ return Gosu::SampleInstance(channelAndToken.first, channelAndToken.second);
239
+
240
+ NSUInteger source = alChannelManagement->sourceIfStillPlaying(channelAndToken.first,
241
+ channelAndToken.second);
242
+ assert(source != ALChannelManagement::NO_SOURCE);
243
+ alSourcei(source, AL_BUFFER, data->buffer);
244
+ // TODO: This is not the old panning behavior!
245
+ alSource3f(source, AL_POSITION, pan * 10, 0, 0);
246
+ alSourcef(source, AL_GAIN, volume);
247
+ alSourcef(source, AL_PITCH, speed);
248
+ alSourcei(source, AL_LOOPING, looping ? AL_TRUE : AL_FALSE);
249
+ alSourcePlay(source);
250
+
251
+ return Gosu::SampleInstance(channelAndToken.first, channelAndToken.second);
252
+ }
253
+
254
+ class Gosu::Song::BaseData : boost::noncopyable
255
+ {
256
+ double volume_;
257
+
258
+ protected:
259
+ BaseData() : volume_(1) {}
260
+ virtual void applyVolume() = 0;
261
+
262
+ public:
263
+ virtual ~BaseData() {}
264
+
265
+ virtual void play() = 0;
266
+ virtual void pause() = 0;
267
+ virtual void resume() = 0;
268
+ virtual bool paused() const = 0;
269
+ virtual void stop() = 0;
270
+
271
+ virtual void update() = 0;
272
+
273
+ double volume() const
274
+ {
275
+ return volume_;
276
+ }
277
+
278
+ void changeVolume(double volume)
279
+ {
280
+ volume_ = clamp(volume, 0.0, 1.0);
281
+ applyVolume();
282
+ }
283
+ };
284
+
285
+ class Gosu::Song::StreamData : public BaseData
286
+ {
287
+ boost::scoped_ptr<AudioFile> file;
288
+ NSUInteger buffers[2];
289
+
290
+ void applyVolume()
291
+ {
292
+ int source = lookupSource();
293
+ if (source != ALChannelManagement::NO_SOURCE)
294
+ alSourcef(source, AL_GAIN, volume());
295
+ }
296
+
297
+ int lookupSource() const
298
+ {
299
+ return alChannelManagement->sourceForSongs();
300
+ }
301
+
302
+ bool streamToBuffer(NSUInteger buffer)
303
+ {
304
+ #ifdef GOSU_IS_IPHONE
305
+ static const unsigned BUFFER_SIZE = 4096 * 4;
306
+ #else
307
+ static const unsigned BUFFER_SIZE = 4096 * 8;
308
+ #endif
309
+ char audioData[BUFFER_SIZE];
310
+ std::size_t readBytes = file->readData(audioData, BUFFER_SIZE);
311
+ if (readBytes > 0)
312
+ alBufferData(buffer, file->format(), audioData, readBytes, file->sampleRate());
313
+ return readBytes > 0;
314
+ }
315
+
316
+ public:
317
+ StreamData(const std::wstring& filename)
318
+ {
319
+ if (isOggFile(filename))
320
+ {
321
+ Gosu::File sourceFile(filename);
322
+ file.reset(new OggFile(sourceFile.frontReader()));
323
+ }
324
+ else
325
+ file.reset(new AudioToolboxFile(filename));
326
+ alGenBuffers(2, buffers);
327
+ }
328
+
329
+ StreamData(Reader reader)
330
+ {
331
+ if (isOggFile(reader))
332
+ file.reset(new OggFile(reader));
333
+ else
334
+ file.reset(new AudioToolboxFile(reader));
335
+ alGenBuffers(2, buffers);
336
+ }
337
+
338
+ ~StreamData()
339
+ {
340
+ if (alChannelManagement)
341
+ {
342
+ stop();
343
+ alDeleteBuffers(2, buffers);
344
+ }
345
+ }
346
+
347
+ void play()
348
+ {
349
+ int source = lookupSource();
350
+ if (source != ALChannelManagement::NO_SOURCE)
351
+ {
352
+ alSource3f(source, AL_POSITION, 0, 0, 0);
353
+ alSourcef(source, AL_GAIN, volume());
354
+ alSourcef(source, AL_PITCH, 1);
355
+ alSourcei(source, AL_LOOPING, AL_FALSE); // need to implement this manually...
356
+
357
+ streamToBuffer(buffers[0]);
358
+ streamToBuffer(buffers[1]);
359
+
360
+ // TODO: Not good for songs with less than two buffers full of data.
361
+
362
+ alSourceQueueBuffers(source, 2, buffers);
363
+ alSourcePlay(source);
364
+ }
365
+ }
366
+
367
+ void stop()
368
+ {
369
+ int source = lookupSource();
370
+ if (source != ALChannelManagement::NO_SOURCE)
371
+ {
372
+ alSourceStop(source);
373
+
374
+ NSUInteger buffer;
375
+
376
+ // The number of QUEUED buffers apparently includes the number of
377
+ // PROCESSED ones, so getting rid of the QUEUED ones is enough.
378
+
379
+ int queued;
380
+ alGetSourcei(source, AL_BUFFERS_QUEUED, &queued);
381
+ while (queued--)
382
+ alSourceUnqueueBuffers(source, 1, &buffer);
383
+
384
+ //int processed;
385
+ //alGetSourcei(source, AL_BUFFERS_PROCESSED, &processed);
386
+ //while (processed--)
387
+ // alSourceUnqueueBuffers(source, 1, &buffer);
388
+ }
389
+ file->rewind();
390
+ }
391
+
392
+ void pause()
393
+ {
394
+ int source = lookupSource();
395
+ if (source != ALChannelManagement::NO_SOURCE)
396
+ alSourcePause(source);
397
+ }
398
+
399
+ void resume()
400
+ {
401
+ int source = lookupSource();
402
+ if (source != ALChannelManagement::NO_SOURCE)
403
+ alSourcePlay(source);
404
+ }
405
+
406
+ bool paused() const
407
+ {
408
+ int source = lookupSource();
409
+ if (source == ALChannelManagement::NO_SOURCE)
410
+ return false;
411
+ ALint state;
412
+ alGetSourcei(source, AL_SOURCE_STATE, &state);
413
+ return state == AL_PAUSED;
414
+ }
415
+
416
+ void update()
417
+ {
418
+ int source = lookupSource();
419
+
420
+ NSUInteger buffer;
421
+ int queued, processed;
422
+ bool active = true;
423
+
424
+ alGetSourcei(source, AL_BUFFERS_PROCESSED, &processed);
425
+ for (int i = 0; i < processed; ++i)
426
+ {
427
+ alSourceUnqueueBuffers(source, 1, &buffer);
428
+ active = streamToBuffer(buffer);
429
+ if (active)
430
+ alSourceQueueBuffers(source, 1, &buffer);
431
+ }
432
+
433
+ ALint state;
434
+ alGetSourcei(source, AL_SOURCE_STATE, &state);
435
+ if (active && state != AL_PLAYING && state != AL_PAUSED)
436
+ {
437
+ // We seemingly got starved.
438
+ alSourcePlay(source);
439
+ }
440
+ else if (!active)
441
+ {
442
+ // We got starved and there is nothing to play left.
443
+ // In any case, shut down the playback logic for a moment.
444
+ stop();
445
+
446
+ if (curSongLooping)
447
+ // Start anew.
448
+ play();
449
+ else
450
+ // Let the world know we're finished.
451
+ curSong = 0;
452
+ }
453
+ }
454
+ };
455
+
456
+ void Gosu::Song::update()
457
+ {
458
+ data->update();
459
+ }
460
+
461
+ Gosu::Song::Song(Audio& audio, const std::wstring& filename)
462
+ : data(new StreamData(filename))
463
+ {
464
+ }
465
+
466
+ Gosu::Song::Song(Audio& audio, Type type, Reader reader)
467
+ : data(new StreamData(reader))
468
+ {
469
+ }
470
+
471
+ Gosu::Song::~Song()
472
+ {
473
+ if (alChannelManagement)
474
+ stop();
475
+ }
476
+
477
+ Gosu::Song* Gosu::Song::currentSong()
478
+ {
479
+ return curSong;
480
+ }
481
+
482
+ void Gosu::Song::play(bool looping)
483
+ {
484
+ if (paused())
485
+ data->resume();
486
+
487
+ if (curSong && curSong != this)
488
+ {
489
+ curSong->stop();
490
+ assert(curSong == 0);
491
+ }
492
+
493
+ if (curSong == 0)
494
+ data->play();
495
+
496
+ curSong = this;
497
+ curSongLooping = looping;
498
+ }
499
+
500
+ void Gosu::Song::pause()
501
+ {
502
+ if (curSong == this)
503
+ data->pause(); // may be redundant
504
+ }
505
+
506
+ bool Gosu::Song::paused() const
507
+ {
508
+ return curSong == this && data->paused();
509
+ }
510
+
511
+ void Gosu::Song::stop()
512
+ {
513
+ if (curSong == this)
514
+ {
515
+ data->stop();
516
+ curSong = 0;
517
+ }
518
+ }
519
+
520
+ bool Gosu::Song::playing() const
521
+ {
522
+ return curSong == this && !data->paused();
523
+ }
524
+
525
+ double Gosu::Song::volume() const
526
+ {
527
+ return data->volume();
528
+ }
529
+
530
+ void Gosu::Song::changeVolume(double volume)
531
+ {
532
+ data->changeVolume(volume);
533
+ }