gosu 0.7.13.3 → 0.7.14

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 (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
+ }