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.
- data/Gosu/Audio.hpp +10 -4
- data/Gosu/Math.hpp +23 -10
- data/Gosu/Platform.hpp +2 -0
- data/Gosu/Version.hpp +9 -0
- data/GosuImpl/Audio/ALChannelManagement.hpp +13 -3
- data/GosuImpl/Audio/AudioFile.hpp +45 -0
- data/GosuImpl/Audio/AudioOpenAL.mm +533 -0
- data/GosuImpl/Audio/AudioToolboxFile.hpp +217 -0
- data/GosuImpl/Audio/OggFile.hpp +114 -0
- data/GosuImpl/AudioFmod.cpp +4 -0
- data/GosuImpl/AudioSDL.cpp +4 -0
- data/GosuImpl/Graphics/GosuView.mm +2 -2
- data/GosuImpl/Graphics/Texture.cpp +9 -4
- data/GosuImpl/Math.cpp +1 -1
- data/GosuImpl/RubyGosu.swg +10 -1
- data/GosuImpl/RubyGosu_wrap.cxx +175 -1416
- data/GosuImpl/RubyGosu_wrap.cxx.rej +187 -0
- data/GosuImpl/WinUtility.cpp +1 -1
- data/GosuImpl/WindowMac.mm +1 -0
- data/GosuImpl/WindowTouch.mm +1 -0
- data/README.txt +5 -5
- data/Rakefile +48 -9
- data/examples/media/Starfighter.bmp +0 -0
- data/linux/configure +1166 -975
- data/linux/configure.ac +14 -30
- data/linux/extconf.rb +2 -5
- data/mac/Gosu.xcodeproj/jlnr.pbxuser +330 -267
- data/mac/Gosu.xcodeproj/jlnr.perspectivev3 +48 -47
- data/mac/Gosu.xcodeproj/project.pbxproj +626 -74
- data/mac/RubyGosu App-Info.plist +1 -1
- data/reference/cpp/_audio_8hpp-source.html +81 -75
- data/reference/cpp/_math_8hpp-source.html +57 -48
- data/reference/cpp/_math_8hpp.html +7 -1
- data/reference/cpp/_platform_8hpp-source.html +58 -56
- data/reference/cpp/_platform_8hpp.html +21 -2
- data/reference/cpp/_version_8hpp-source.html +77 -0
- data/reference/cpp/_version_8hpp.html +153 -0
- data/reference/cpp/class_gosu_1_1_audio-members.html +1 -0
- data/reference/cpp/class_gosu_1_1_audio.html +22 -0
- data/reference/cpp/class_gosu_1_1_sample.html +1 -1
- data/reference/cpp/class_gosu_1_1_sample_instance.html +1 -1
- data/reference/cpp/class_gosu_1_1_song.html +2 -2
- data/reference/cpp/files.html +1 -0
- data/reference/cpp/functions_0x67.html +1 -3
- data/reference/cpp/functions_0x74.html +2 -2
- data/reference/cpp/functions_0x75.html +3 -2
- data/reference/cpp/functions_func_0x67.html +1 -3
- data/reference/cpp/functions_func_0x74.html +2 -2
- data/reference/cpp/functions_func_0x75.html +3 -2
- data/reference/cpp/globals.html +10 -0
- data/reference/cpp/globals_defs.html +10 -0
- data/reference/rdoc/classes/Gosu.html +1547 -0
- data/reference/rdoc/classes/Gosu/Color.html +563 -0
- data/reference/rdoc/classes/Gosu/Font.html +538 -0
- data/reference/rdoc/classes/Gosu/GLTexInfo.html +404 -0
- data/reference/rdoc/classes/Gosu/Image.html +702 -0
- data/reference/rdoc/classes/Gosu/Sample.html +469 -0
- data/reference/rdoc/classes/Gosu/SampleInstance.html +516 -0
- data/reference/rdoc/classes/Gosu/Song.html +561 -0
- data/reference/rdoc/classes/Gosu/TextInput.html +398 -0
- data/reference/rdoc/classes/Gosu/Window.html +913 -0
- data/reference/rdoc/classes/Numeric.html +416 -0
- data/reference/rdoc/created.rid +1 -0
- data/reference/rdoc/files/COPYING_txt.html +386 -0
- data/reference/rdoc/files/README_txt.html +381 -0
- data/reference/rdoc/files/reference/DeploymentOnOSX_rdoc.html +390 -0
- data/reference/rdoc/files/reference/DeploymentOnWindows_rdoc.html +392 -0
- data/reference/rdoc/files/reference/DrawingWithColors_rdoc.html +357 -0
- data/reference/rdoc/files/reference/OrderOfCorners_rdoc.html +352 -0
- data/reference/rdoc/files/reference/Tileability_rdoc.html +368 -0
- data/reference/rdoc/files/reference/ZOrdering_rdoc.html +355 -0
- data/reference/rdoc/files/reference/gosu_rb.html +342 -0
- data/reference/rdoc/fr_class_index.html +12 -0
- data/reference/rdoc/fr_file_index.html +10 -0
- data/reference/rdoc/fr_method_index.html +63 -0
- data/reference/rdoc/index.html +1 -0
- data/reference/rdoc/rdoc-style.css +318 -0
- data/windows/Gosu.vcproj +33 -33
- data/windows/RubyGosu.vcproj +2 -2
- metadata +36 -400
- data/GosuImpl/Audio/AudioFileMac.hpp +0 -105
- data/GosuImpl/AudioOpenAL.mm +0 -486
- data/mac/libboost_thread_1_34_1_universal.a +0 -0
- data/mac/libboost_thread_d_1_34_1_universal.a +0 -0
- data/mac/libfmod_universal.a +0 -0
- data/mac/libpng_universal.a +0 -0
- data/mac/libz_universal.a +0 -0
- data/windows/zlib, libpng/libpng/ANNOUNCE +0 -61
- data/windows/zlib, libpng/libpng/CHANGES +0 -2173
- data/windows/zlib, libpng/libpng/INSTALL +0 -199
- data/windows/zlib, libpng/libpng/KNOWNBUG +0 -22
- data/windows/zlib, libpng/libpng/LICENSE +0 -109
- data/windows/zlib, libpng/libpng/README +0 -264
- data/windows/zlib, libpng/libpng/TODO +0 -24
- data/windows/zlib, libpng/libpng/Y2KINFO +0 -55
- data/windows/zlib, libpng/libpng/configure +0 -13
- data/windows/zlib, libpng/libpng/contrib/gregbook/COPYING +0 -340
- data/windows/zlib, libpng/libpng/contrib/gregbook/LICENSE +0 -50
- data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.mingw32 +0 -130
- data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.sgi +0 -104
- data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.unx +0 -132
- data/windows/zlib, libpng/libpng/contrib/gregbook/Makefile.w32 +0 -113
- data/windows/zlib, libpng/libpng/contrib/gregbook/README +0 -186
- data/windows/zlib, libpng/libpng/contrib/gregbook/makevms.com +0 -132
- data/windows/zlib, libpng/libpng/contrib/gregbook/readpng.c +0 -304
- data/windows/zlib, libpng/libpng/contrib/gregbook/readpng.h +0 -88
- data/windows/zlib, libpng/libpng/contrib/gregbook/readpng2.c +0 -645
- data/windows/zlib, libpng/libpng/contrib/gregbook/readpng2.h +0 -121
- data/windows/zlib, libpng/libpng/contrib/gregbook/readppm.c +0 -179
- data/windows/zlib, libpng/libpng/contrib/gregbook/rpng-win.c +0 -684
- data/windows/zlib, libpng/libpng/contrib/gregbook/rpng-x.c +0 -904
- data/windows/zlib, libpng/libpng/contrib/gregbook/rpng2-win.c +0 -1225
- data/windows/zlib, libpng/libpng/contrib/gregbook/rpng2-x.c +0 -2127
- data/windows/zlib, libpng/libpng/contrib/gregbook/toucan.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/gregbook/wpng.c +0 -853
- data/windows/zlib, libpng/libpng/contrib/gregbook/writepng.c +0 -392
- data/windows/zlib, libpng/libpng/contrib/gregbook/writepng.h +0 -133
- data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/README +0 -6
- data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/gather.sh +0 -8
- data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/makefile.std +0 -44
- data/windows/zlib, libpng/libpng/contrib/pngminim/decoder/pngusr.h +0 -67
- data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/README +0 -6
- data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/dummy_inflate.c +0 -27
- data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/gather.sh +0 -9
- data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/makefile.std +0 -43
- data/windows/zlib, libpng/libpng/contrib/pngminim/encoder/pngusr.h +0 -66
- data/windows/zlib, libpng/libpng/contrib/pngminus/README +0 -153
- data/windows/zlib, libpng/libpng/contrib/pngminus/makefile.std +0 -65
- data/windows/zlib, libpng/libpng/contrib/pngminus/makefile.tc3 +0 -38
- data/windows/zlib, libpng/libpng/contrib/pngminus/makevms.com +0 -92
- data/windows/zlib, libpng/libpng/contrib/pngminus/png2pnm.bat +0 -41
- data/windows/zlib, libpng/libpng/contrib/pngminus/png2pnm.c +0 -430
- data/windows/zlib, libpng/libpng/contrib/pngminus/png2pnm.sh +0 -42
- data/windows/zlib, libpng/libpng/contrib/pngminus/pngminus.bat +0 -4
- data/windows/zlib, libpng/libpng/contrib/pngminus/pngminus.sh +0 -5
- data/windows/zlib, libpng/libpng/contrib/pngminus/pnm2png.bat +0 -41
- data/windows/zlib, libpng/libpng/contrib/pngminus/pnm2png.c +0 -533
- data/windows/zlib, libpng/libpng/contrib/pngminus/pnm2png.sh +0 -42
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g01.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g02.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g04.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g08.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn0g16.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn2c08.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn2c16.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p01.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p02.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p04.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn3p08.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn4a08.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn4a16.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn6a08.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/pngsuite/basn6a16.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/visupng/PngFile.c +0 -439
- data/windows/zlib, libpng/libpng/contrib/visupng/PngFile.h +0 -27
- data/windows/zlib, libpng/libpng/contrib/visupng/README.txt +0 -58
- data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.c +0 -961
- data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.dsp +0 -147
- data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.dsw +0 -29
- data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.ico +0 -0
- data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.png +0 -0
- data/windows/zlib, libpng/libpng/contrib/visupng/VisualPng.rc +0 -152
- data/windows/zlib, libpng/libpng/contrib/visupng/cexcept.h +0 -243
- data/windows/zlib, libpng/libpng/contrib/visupng/resource.h +0 -23
- data/windows/zlib, libpng/libpng/example.c +0 -814
- data/windows/zlib, libpng/libpng/libpng-1.2.29.txt +0 -2906
- data/windows/zlib, libpng/libpng/libpng.3 +0 -3680
- data/windows/zlib, libpng/libpng/libpngpf.3 +0 -274
- data/windows/zlib, libpng/libpng/png.5 +0 -74
- data/windows/zlib, libpng/libpng/png.c +0 -798
- data/windows/zlib, libpng/libpng/png.h +0 -3569
- data/windows/zlib, libpng/libpng/pngbar.jpg +0 -0
- data/windows/zlib, libpng/libpng/pngbar.png +0 -0
- data/windows/zlib, libpng/libpng/pngconf.h +0 -1481
- data/windows/zlib, libpng/libpng/pngerror.c +0 -343
- data/windows/zlib, libpng/libpng/pnggccrd.c +0 -103
- data/windows/zlib, libpng/libpng/pngget.c +0 -901
- data/windows/zlib, libpng/libpng/pngmem.c +0 -608
- data/windows/zlib, libpng/libpng/pngnow.png +0 -0
- data/windows/zlib, libpng/libpng/pngpread.c +0 -1598
- data/windows/zlib, libpng/libpng/pngread.c +0 -1479
- data/windows/zlib, libpng/libpng/pngrio.c +0 -167
- data/windows/zlib, libpng/libpng/pngrtran.c +0 -4292
- data/windows/zlib, libpng/libpng/pngrutil.c +0 -3183
- data/windows/zlib, libpng/libpng/pngset.c +0 -1268
- data/windows/zlib, libpng/libpng/pngtest.c +0 -1563
- data/windows/zlib, libpng/libpng/pngtest.png +0 -0
- data/windows/zlib, libpng/libpng/pngtrans.c +0 -662
- data/windows/zlib, libpng/libpng/pngvcrd.c +0 -1
- data/windows/zlib, libpng/libpng/pngwio.c +0 -234
- data/windows/zlib, libpng/libpng/pngwrite.c +0 -1532
- data/windows/zlib, libpng/libpng/pngwtran.c +0 -572
- data/windows/zlib, libpng/libpng/pngwutil.c +0 -2802
- data/windows/zlib, libpng/libpng/projects/beos/x86-shared.proj +0 -0
- data/windows/zlib, libpng/libpng/projects/beos/x86-shared.txt +0 -22
- data/windows/zlib, libpng/libpng/projects/beos/x86-static.proj +0 -0
- data/windows/zlib, libpng/libpng/projects/beos/x86-static.txt +0 -22
- data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.bpf +0 -22
- data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.bpg +0 -25
- data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.bpr +0 -157
- data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.cpp +0 -29
- data/windows/zlib, libpng/libpng/projects/cbuilder5/libpng.readme.txt +0 -25
- data/windows/zlib, libpng/libpng/projects/cbuilder5/libpngstat.bpf +0 -22
- data/windows/zlib, libpng/libpng/projects/cbuilder5/libpngstat.bpr +0 -109
- data/windows/zlib, libpng/libpng/projects/cbuilder5/zlib.readme.txt +0 -14
- data/windows/zlib, libpng/libpng/projects/netware.txt +0 -6
- data/windows/zlib, libpng/libpng/projects/visualc6/README.txt +0 -57
- data/windows/zlib, libpng/libpng/projects/visualc6/libpng.dsp +0 -472
- data/windows/zlib, libpng/libpng/projects/visualc6/libpng.dsw +0 -59
- data/windows/zlib, libpng/libpng/projects/visualc6/pngtest.dsp +0 -314
- data/windows/zlib, libpng/libpng/projects/visualc71/PRJ0041.mak +0 -21
- data/windows/zlib, libpng/libpng/projects/visualc71/README.txt +0 -57
- data/windows/zlib, libpng/libpng/projects/visualc71/README_zlib.txt +0 -44
- data/windows/zlib, libpng/libpng/projects/visualc71/libpng.sln +0 -88
- data/windows/zlib, libpng/libpng/projects/visualc71/libpng.vcproj +0 -702
- data/windows/zlib, libpng/libpng/projects/visualc71/pngtest.vcproj +0 -459
- data/windows/zlib, libpng/libpng/projects/visualc71/zlib.vcproj +0 -670
- data/windows/zlib, libpng/libpng/projects/wince.txt +0 -6
- data/windows/zlib, libpng/libpng/scripts/CMakeLists.txt +0 -210
- data/windows/zlib, libpng/libpng/scripts/SCOPTIONS.ppc +0 -7
- data/windows/zlib, libpng/libpng/scripts/descrip.mms +0 -52
- data/windows/zlib, libpng/libpng/scripts/libpng-config-body.in +0 -96
- data/windows/zlib, libpng/libpng/scripts/libpng-config-head.in +0 -21
- data/windows/zlib, libpng/libpng/scripts/libpng-config.in +0 -124
- data/windows/zlib, libpng/libpng/scripts/libpng.icc +0 -44
- data/windows/zlib, libpng/libpng/scripts/libpng.pc-configure.in +0 -10
- data/windows/zlib, libpng/libpng/scripts/libpng.pc.in +0 -10
- data/windows/zlib, libpng/libpng/scripts/makefile.32sunu +0 -254
- data/windows/zlib, libpng/libpng/scripts/makefile.64sunu +0 -254
- data/windows/zlib, libpng/libpng/scripts/makefile.acorn +0 -51
- data/windows/zlib, libpng/libpng/scripts/makefile.aix +0 -113
- data/windows/zlib, libpng/libpng/scripts/makefile.amiga +0 -48
- data/windows/zlib, libpng/libpng/scripts/makefile.atari +0 -51
- data/windows/zlib, libpng/libpng/scripts/makefile.bc32 +0 -152
- data/windows/zlib, libpng/libpng/scripts/makefile.beos +0 -226
- data/windows/zlib, libpng/libpng/scripts/makefile.bor +0 -162
- data/windows/zlib, libpng/libpng/scripts/makefile.cygwin +0 -299
- data/windows/zlib, libpng/libpng/scripts/makefile.darwin +0 -234
- data/windows/zlib, libpng/libpng/scripts/makefile.dec +0 -214
- data/windows/zlib, libpng/libpng/scripts/makefile.dj2 +0 -55
- data/windows/zlib, libpng/libpng/scripts/makefile.elf +0 -275
- data/windows/zlib, libpng/libpng/scripts/makefile.freebsd +0 -48
- data/windows/zlib, libpng/libpng/scripts/makefile.gcc +0 -79
- data/windows/zlib, libpng/libpng/scripts/makefile.gcmmx +0 -271
- data/windows/zlib, libpng/libpng/scripts/makefile.hp64 +0 -235
- data/windows/zlib, libpng/libpng/scripts/makefile.hpgcc +0 -245
- data/windows/zlib, libpng/libpng/scripts/makefile.hpux +0 -232
- data/windows/zlib, libpng/libpng/scripts/makefile.ibmc +0 -71
- data/windows/zlib, libpng/libpng/scripts/makefile.intel +0 -102
- data/windows/zlib, libpng/libpng/scripts/makefile.knr +0 -99
- data/windows/zlib, libpng/libpng/scripts/makefile.linux +0 -249
- data/windows/zlib, libpng/libpng/scripts/makefile.mingw +0 -289
- data/windows/zlib, libpng/libpng/scripts/makefile.mips +0 -83
- data/windows/zlib, libpng/libpng/scripts/makefile.msc +0 -86
- data/windows/zlib, libpng/libpng/scripts/makefile.ne12bsd +0 -45
- data/windows/zlib, libpng/libpng/scripts/makefile.netbsd +0 -45
- data/windows/zlib, libpng/libpng/scripts/makefile.nommx +0 -252
- data/windows/zlib, libpng/libpng/scripts/makefile.openbsd +0 -73
- data/windows/zlib, libpng/libpng/scripts/makefile.os2 +0 -69
- data/windows/zlib, libpng/libpng/scripts/makefile.sco +0 -229
- data/windows/zlib, libpng/libpng/scripts/makefile.sggcc +0 -242
- data/windows/zlib, libpng/libpng/scripts/makefile.sgi +0 -245
- data/windows/zlib, libpng/libpng/scripts/makefile.so9 +0 -251
- data/windows/zlib, libpng/libpng/scripts/makefile.solaris +0 -249
- data/windows/zlib, libpng/libpng/scripts/makefile.solaris-x86 +0 -248
- data/windows/zlib, libpng/libpng/scripts/makefile.std +0 -92
- data/windows/zlib, libpng/libpng/scripts/makefile.sunos +0 -97
- data/windows/zlib, libpng/libpng/scripts/makefile.tc3 +0 -89
- data/windows/zlib, libpng/libpng/scripts/makefile.vcawin32 +0 -99
- data/windows/zlib, libpng/libpng/scripts/makefile.vcwin32 +0 -99
- data/windows/zlib, libpng/libpng/scripts/makefile.watcom +0 -109
- data/windows/zlib, libpng/libpng/scripts/makevms.com +0 -144
- data/windows/zlib, libpng/libpng/scripts/pngos2.def +0 -257
- data/windows/zlib, libpng/libpng/scripts/pngw32.def +0 -238
- data/windows/zlib, libpng/libpng/scripts/pngw32.rc +0 -112
- data/windows/zlib, libpng/libpng/scripts/smakefile.ppc +0 -30
- data/windows/zlib, libpng/zlib/ChangeLog +0 -855
- data/windows/zlib, libpng/zlib/FAQ +0 -339
- data/windows/zlib, libpng/zlib/INDEX +0 -51
- data/windows/zlib, libpng/zlib/Makefile +0 -154
- data/windows/zlib, libpng/zlib/Makefile.in +0 -154
- data/windows/zlib, libpng/zlib/README +0 -125
- data/windows/zlib, libpng/zlib/adler32.c +0 -149
- data/windows/zlib, libpng/zlib/algorithm.txt +0 -209
- data/windows/zlib, libpng/zlib/amiga/Makefile.pup +0 -66
- data/windows/zlib, libpng/zlib/amiga/Makefile.sas +0 -65
- data/windows/zlib, libpng/zlib/as400/bndsrc +0 -132
- data/windows/zlib, libpng/zlib/as400/compile.clp +0 -123
- data/windows/zlib, libpng/zlib/as400/readme.txt +0 -111
- data/windows/zlib, libpng/zlib/as400/zlib.inc +0 -331
- data/windows/zlib, libpng/zlib/compress.c +0 -79
- data/windows/zlib, libpng/zlib/configure +0 -459
- data/windows/zlib, libpng/zlib/contrib/README.contrib +0 -71
- data/windows/zlib, libpng/zlib/contrib/ada/buffer_demo.adb +0 -106
- data/windows/zlib, libpng/zlib/contrib/ada/mtest.adb +0 -156
- data/windows/zlib, libpng/zlib/contrib/ada/read.adb +0 -156
- data/windows/zlib, libpng/zlib/contrib/ada/readme.txt +0 -65
- data/windows/zlib, libpng/zlib/contrib/ada/test.adb +0 -463
- data/windows/zlib, libpng/zlib/contrib/ada/zlib-streams.adb +0 -225
- data/windows/zlib, libpng/zlib/contrib/ada/zlib-streams.ads +0 -114
- data/windows/zlib, libpng/zlib/contrib/ada/zlib-thin.adb +0 -141
- data/windows/zlib, libpng/zlib/contrib/ada/zlib-thin.ads +0 -450
- data/windows/zlib, libpng/zlib/contrib/ada/zlib.adb +0 -701
- data/windows/zlib, libpng/zlib/contrib/ada/zlib.ads +0 -328
- data/windows/zlib, libpng/zlib/contrib/ada/zlib.gpr +0 -20
- data/windows/zlib, libpng/zlib/contrib/asm586/README.586 +0 -43
- data/windows/zlib, libpng/zlib/contrib/asm586/match.S +0 -364
- data/windows/zlib, libpng/zlib/contrib/asm686/README.686 +0 -34
- data/windows/zlib, libpng/zlib/contrib/asm686/match.S +0 -329
- data/windows/zlib, libpng/zlib/contrib/blast/Makefile +0 -8
- data/windows/zlib, libpng/zlib/contrib/blast/README +0 -4
- data/windows/zlib, libpng/zlib/contrib/blast/blast.c +0 -444
- data/windows/zlib, libpng/zlib/contrib/blast/blast.h +0 -71
- data/windows/zlib, libpng/zlib/contrib/blast/test.pk +0 -0
- data/windows/zlib, libpng/zlib/contrib/blast/test.txt +0 -1
- data/windows/zlib, libpng/zlib/contrib/delphi/ZLib.pas +0 -557
- data/windows/zlib, libpng/zlib/contrib/delphi/ZLibConst.pas +0 -11
- data/windows/zlib, libpng/zlib/contrib/delphi/readme.txt +0 -76
- data/windows/zlib, libpng/zlib/contrib/delphi/zlibd32.mak +0 -93
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib.build +0 -33
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib.chm +0 -0
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib.sln +0 -21
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/AssemblyInfo.cs +0 -58
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/ChecksumImpl.cs +0 -202
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/CircularBuffer.cs +0 -83
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/CodecBase.cs +0 -198
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/Deflater.cs +0 -106
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/DotZLib.cs +0 -288
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/DotZLib.csproj +0 -141
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/GZipStream.cs +0 -301
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/Inflater.cs +0 -105
- data/windows/zlib, libpng/zlib/contrib/dotzlib/DotZLib/UnitTests.cs +0 -274
- data/windows/zlib, libpng/zlib/contrib/dotzlib/LICENSE_1_0.txt +0 -23
- data/windows/zlib, libpng/zlib/contrib/dotzlib/readme.txt +0 -58
- data/windows/zlib, libpng/zlib/contrib/infback9/README +0 -1
- data/windows/zlib, libpng/zlib/contrib/infback9/infback9.c +0 -608
- data/windows/zlib, libpng/zlib/contrib/infback9/infback9.h +0 -37
- data/windows/zlib, libpng/zlib/contrib/infback9/inffix9.h +0 -107
- data/windows/zlib, libpng/zlib/contrib/infback9/inflate9.h +0 -47
- data/windows/zlib, libpng/zlib/contrib/infback9/inftree9.c +0 -323
- data/windows/zlib, libpng/zlib/contrib/infback9/inftree9.h +0 -55
- data/windows/zlib, libpng/zlib/contrib/inflate86/inffas86.c +0 -1157
- data/windows/zlib, libpng/zlib/contrib/inflate86/inffast.S +0 -1368
- data/windows/zlib, libpng/zlib/contrib/iostream/test.cpp +0 -24
- data/windows/zlib, libpng/zlib/contrib/iostream/zfstream.cpp +0 -329
- data/windows/zlib, libpng/zlib/contrib/iostream/zfstream.h +0 -128
- data/windows/zlib, libpng/zlib/contrib/iostream2/zstream.h +0 -307
- data/windows/zlib, libpng/zlib/contrib/iostream2/zstream_test.cpp +0 -25
- data/windows/zlib, libpng/zlib/contrib/iostream3/README +0 -35
- data/windows/zlib, libpng/zlib/contrib/iostream3/TODO +0 -17
- data/windows/zlib, libpng/zlib/contrib/iostream3/test.cc +0 -50
- data/windows/zlib, libpng/zlib/contrib/iostream3/zfstream.cc +0 -479
- data/windows/zlib, libpng/zlib/contrib/iostream3/zfstream.h +0 -466
- data/windows/zlib, libpng/zlib/contrib/masm686/match.asm +0 -413
- data/windows/zlib, libpng/zlib/contrib/masmx64/bld_ml64.bat +0 -2
- data/windows/zlib, libpng/zlib/contrib/masmx64/gvmat64.asm +0 -513
- data/windows/zlib, libpng/zlib/contrib/masmx64/gvmat64.obj +0 -0
- data/windows/zlib, libpng/zlib/contrib/masmx64/inffas8664.c +0 -186
- data/windows/zlib, libpng/zlib/contrib/masmx64/inffasx64.asm +0 -392
- data/windows/zlib, libpng/zlib/contrib/masmx64/inffasx64.obj +0 -0
- data/windows/zlib, libpng/zlib/contrib/masmx64/readme.txt +0 -28
- data/windows/zlib, libpng/zlib/contrib/masmx86/bld_ml32.bat +0 -2
- data/windows/zlib, libpng/zlib/contrib/masmx86/gvmat32.asm +0 -972
- data/windows/zlib, libpng/zlib/contrib/masmx86/gvmat32.obj +0 -0
- data/windows/zlib, libpng/zlib/contrib/masmx86/gvmat32c.c +0 -62
- data/windows/zlib, libpng/zlib/contrib/masmx86/inffas32.asm +0 -1083
- data/windows/zlib, libpng/zlib/contrib/masmx86/inffas32.obj +0 -0
- data/windows/zlib, libpng/zlib/contrib/masmx86/mkasm.bat +0 -3
- data/windows/zlib, libpng/zlib/contrib/masmx86/readme.txt +0 -21
- data/windows/zlib, libpng/zlib/contrib/minizip/ChangeLogUnzip +0 -67
- data/windows/zlib, libpng/zlib/contrib/minizip/Makefile +0 -25
- data/windows/zlib, libpng/zlib/contrib/minizip/crypt.h +0 -132
- data/windows/zlib, libpng/zlib/contrib/minizip/ioapi.c +0 -177
- data/windows/zlib, libpng/zlib/contrib/minizip/ioapi.h +0 -75
- data/windows/zlib, libpng/zlib/contrib/minizip/iowin32.c +0 -270
- data/windows/zlib, libpng/zlib/contrib/minizip/iowin32.h +0 -21
- data/windows/zlib, libpng/zlib/contrib/minizip/miniunz.c +0 -585
- data/windows/zlib, libpng/zlib/contrib/minizip/minizip.c +0 -420
- data/windows/zlib, libpng/zlib/contrib/minizip/mztools.c +0 -281
- data/windows/zlib, libpng/zlib/contrib/minizip/mztools.h +0 -31
- data/windows/zlib, libpng/zlib/contrib/minizip/unzip.c +0 -1598
- data/windows/zlib, libpng/zlib/contrib/minizip/unzip.h +0 -354
- data/windows/zlib, libpng/zlib/contrib/minizip/zip.c +0 -1219
- data/windows/zlib, libpng/zlib/contrib/minizip/zip.h +0 -235
- data/windows/zlib, libpng/zlib/contrib/pascal/example.pas +0 -599
- data/windows/zlib, libpng/zlib/contrib/pascal/readme.txt +0 -76
- data/windows/zlib, libpng/zlib/contrib/pascal/zlibd32.mak +0 -93
- data/windows/zlib, libpng/zlib/contrib/pascal/zlibpas.pas +0 -236
- data/windows/zlib, libpng/zlib/contrib/puff/Makefile +0 -8
- data/windows/zlib, libpng/zlib/contrib/puff/README +0 -63
- data/windows/zlib, libpng/zlib/contrib/puff/puff.c +0 -837
- data/windows/zlib, libpng/zlib/contrib/puff/puff.h +0 -31
- data/windows/zlib, libpng/zlib/contrib/puff/zeros.raw +0 -0
- data/windows/zlib, libpng/zlib/contrib/testzlib/testzlib.c +0 -275
- data/windows/zlib, libpng/zlib/contrib/testzlib/testzlib.txt +0 -10
- data/windows/zlib, libpng/zlib/contrib/untgz/Makefile +0 -14
- data/windows/zlib, libpng/zlib/contrib/untgz/Makefile.msc +0 -17
- data/windows/zlib, libpng/zlib/contrib/untgz/untgz.c +0 -674
- data/windows/zlib, libpng/zlib/contrib/vstudio/readme.txt +0 -73
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/miniunz.vcproj +0 -126
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/minizip.vcproj +0 -126
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/testzlib.vcproj +0 -126
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlib.rc +0 -32
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibstat.vcproj +0 -246
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibvc.def +0 -92
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibvc.sln +0 -78
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc7/zlibvc.vcproj +0 -445
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/miniunz.vcproj +0 -566
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/minizip.vcproj +0 -563
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/testzlib.vcproj +0 -948
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/testzlibdll.vcproj +0 -567
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlib.rc +0 -32
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibstat.vcproj +0 -870
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibvc.def +0 -92
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibvc.sln +0 -144
- data/windows/zlib, libpng/zlib/contrib/vstudio/vc8/zlibvc.vcproj +0 -1219
- data/windows/zlib, libpng/zlib/crc32.c +0 -423
- data/windows/zlib, libpng/zlib/crc32.h +0 -441
- data/windows/zlib, libpng/zlib/deflate.c +0 -1736
- data/windows/zlib, libpng/zlib/deflate.h +0 -331
- data/windows/zlib, libpng/zlib/example.c +0 -565
- data/windows/zlib, libpng/zlib/examples/README.examples +0 -42
- data/windows/zlib, libpng/zlib/examples/fitblk.c +0 -233
- data/windows/zlib, libpng/zlib/examples/gun.c +0 -693
- data/windows/zlib, libpng/zlib/examples/gzappend.c +0 -500
- data/windows/zlib, libpng/zlib/examples/gzjoin.c +0 -448
- data/windows/zlib, libpng/zlib/examples/gzlog.c +0 -413
- data/windows/zlib, libpng/zlib/examples/gzlog.h +0 -58
- data/windows/zlib, libpng/zlib/examples/zlib_how.html +0 -523
- data/windows/zlib, libpng/zlib/examples/zpipe.c +0 -191
- data/windows/zlib, libpng/zlib/examples/zran.c +0 -404
- data/windows/zlib, libpng/zlib/gzio.c +0 -1026
- data/windows/zlib, libpng/zlib/infback.c +0 -623
- data/windows/zlib, libpng/zlib/inffast.c +0 -318
- data/windows/zlib, libpng/zlib/inffast.h +0 -11
- data/windows/zlib, libpng/zlib/inffixed.h +0 -94
- data/windows/zlib, libpng/zlib/inflate.c +0 -1368
- data/windows/zlib, libpng/zlib/inflate.h +0 -115
- data/windows/zlib, libpng/zlib/inftrees.c +0 -329
- data/windows/zlib, libpng/zlib/inftrees.h +0 -55
- data/windows/zlib, libpng/zlib/make_vms.com +0 -461
- data/windows/zlib, libpng/zlib/minigzip.c +0 -322
- data/windows/zlib, libpng/zlib/msdos/Makefile.bor +0 -109
- data/windows/zlib, libpng/zlib/msdos/Makefile.dj2 +0 -104
- data/windows/zlib, libpng/zlib/msdos/Makefile.emx +0 -69
- data/windows/zlib, libpng/zlib/msdos/Makefile.msc +0 -106
- data/windows/zlib, libpng/zlib/msdos/Makefile.tc +0 -94
- data/windows/zlib, libpng/zlib/old/Makefile.riscos +0 -151
- data/windows/zlib, libpng/zlib/old/README +0 -3
- data/windows/zlib, libpng/zlib/old/descrip.mms +0 -48
- data/windows/zlib, libpng/zlib/old/os2/Makefile.os2 +0 -136
- data/windows/zlib, libpng/zlib/old/os2/zlib.def +0 -51
- data/windows/zlib, libpng/zlib/old/visual-basic.txt +0 -160
- data/windows/zlib, libpng/zlib/old/zlib.html +0 -971
- data/windows/zlib, libpng/zlib/projects/README.projects +0 -41
- data/windows/zlib, libpng/zlib/projects/visualc6/README.txt +0 -73
- data/windows/zlib, libpng/zlib/projects/visualc6/example.dsp +0 -278
- data/windows/zlib, libpng/zlib/projects/visualc6/minigzip.dsp +0 -278
- data/windows/zlib, libpng/zlib/projects/visualc6/zlib.dsp +0 -609
- data/windows/zlib, libpng/zlib/projects/visualc6/zlib.dsw +0 -59
- data/windows/zlib, libpng/zlib/qnx/package.qpg +0 -141
- data/windows/zlib, libpng/zlib/trees.c +0 -1219
- data/windows/zlib, libpng/zlib/trees.h +0 -128
- data/windows/zlib, libpng/zlib/uncompr.c +0 -61
- data/windows/zlib, libpng/zlib/win32/DLL_FAQ.txt +0 -397
- data/windows/zlib, libpng/zlib/win32/Makefile.bor +0 -107
- data/windows/zlib, libpng/zlib/win32/Makefile.emx +0 -69
- data/windows/zlib, libpng/zlib/win32/Makefile.gcc +0 -141
- data/windows/zlib, libpng/zlib/win32/Makefile.msc +0 -126
- data/windows/zlib, libpng/zlib/win32/VisualC.txt +0 -3
- data/windows/zlib, libpng/zlib/win32/zlib.def +0 -60
- data/windows/zlib, libpng/zlib/win32/zlib1.rc +0 -39
- data/windows/zlib, libpng/zlib/zconf.h +0 -332
- data/windows/zlib, libpng/zlib/zconf.in.h +0 -332
- data/windows/zlib, libpng/zlib/zlib.3 +0 -159
- data/windows/zlib, libpng/zlib/zlib.h +0 -1357
- data/windows/zlib, libpng/zlib/zutil.c +0 -318
- data/windows/zlib, libpng/zlib/zutil.h +0 -269
data/Gosu/Audio.hpp
CHANGED
|
@@ -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).
|
data/Gosu/Math.hpp
CHANGED
|
@@ -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
|
|
29
|
-
//!
|
|
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
|
|
data/Gosu/Platform.hpp
CHANGED
|
@@ -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
|
data/Gosu/Version.hpp
ADDED
|
@@ -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 =
|
|
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
|
+
}
|