Guest User

Untitled

a guest
Apr 17th, 2010
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.38 KB | None | 0 0
  1. ////////////////////////////////////////////////////////////
  2. //
  3. // SFML - Simple and Fast Multimedia Library
  4. // Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
  5. //
  6. // This software is provided 'as-is', without any express or implied warranty.
  7. // In no event will the authors be held liable for any damages arising from the use of this software.
  8. //
  9. // Permission is granted to anyone to use this software for any purpose,
  10. // including commercial applications, and to alter it and redistribute it freely,
  11. // subject to the following restrictions:
  12. //
  13. // 1. The origin of this software must not be misrepresented;
  14. //    you must not claim that you wrote the original software.
  15. //    If you use this software in a product, an acknowledgment
  16. //    in the product documentation would be appreciated but is not required.
  17. //
  18. // 2. Altered source versions must be plainly marked as such,
  19. //    and must not be misrepresented as being the original software.
  20. //
  21. // 3. This notice may not be removed or altered from any source distribution.
  22. //
  23. ////////////////////////////////////////////////////////////
  24.  
  25. #ifndef SFML_MUSIC2_HPP
  26. #define SFML_MUSIC2_HPP
  27.  
  28. ////////////////////////////////////////////////////////////
  29. // Headers
  30. ////////////////////////////////////////////////////////////
  31. #include <SFML/Audio/SoundStream.hpp>
  32. #include <string>
  33. #include <vector>
  34.  
  35.  
  36. namespace sf
  37. {
  38. namespace priv
  39. {
  40.     class SoundFile;
  41. }
  42.  
  43. ////////////////////////////////////////////////////////////
  44. /// Music defines a big sound played using streaming,
  45. /// so usually what we call a music :)
  46. ////////////////////////////////////////////////////////////
  47. class SFML_API Music2 : public SoundStream
  48. {
  49. public :
  50.  
  51.     ////////////////////////////////////////////////////////////
  52.     /// Construct the music with a buffer size
  53.     ///
  54.     /// \param BufferSize : Size of the internal buffer, expressed in number of samples
  55.     ///                     (ie. size taken by the music in memory) (44100 by default)
  56.     ///
  57.     ////////////////////////////////////////////////////////////
  58.     explicit Music2(std::size_t BufferSize = 44100);
  59.  
  60.     ////////////////////////////////////////////////////////////
  61.     /// Destructor
  62.     ///
  63.     ////////////////////////////////////////////////////////////
  64.     ~Music2();
  65.  
  66.     ////////////////////////////////////////////////////////////
  67.     /// Open a music file (doesn't play it -- call Play() for that)
  68.     ///
  69.     /// \param Filename : Path of the music file to open
  70.     ///
  71.     /// \return True if loading has been successful
  72.     ///
  73.     ////////////////////////////////////////////////////////////
  74.     bool OpenFromFile(const std::string& FilenameA,const std::string& FilenameB);
  75.  
  76.     ////////////////////////////////////////////////////////////
  77.     /// Open a music file from memory (doesn't play it -- call Play() for that)
  78.     ///
  79.     /// \param Data :        Pointer to the file data in memory
  80.     /// \param SizeInBytes : Size of the data to load, in bytes
  81.     ///
  82.     /// \return True if loading has been successful
  83.     ///
  84.     ////////////////////////////////////////////////////////////
  85.     bool OpenFromMemory(const char* DataA, std::size_t SizeInBytesA,const char* DataB, std::size_t SizeInBytesB);
  86.  
  87.     ////////////////////////////////////////////////////////////
  88.     /// Get the music duration
  89.     ///
  90.     /// \return Music duration, in seconds
  91.     ///
  92.     ////////////////////////////////////////////////////////////
  93.     float GetDuration() const;
  94.  
  95. private :
  96.  
  97.     ////////////////////////////////////////////////////////////
  98.     /// /see SoundStream::OnStart
  99.     ///
  100.     ////////////////////////////////////////////////////////////
  101.     virtual bool OnStart();
  102.  
  103.     ////////////////////////////////////////////////////////////
  104.     /// /see SoundStream::OnGetData
  105.     ///
  106.     ////////////////////////////////////////////////////////////
  107.     virtual bool OnGetData(Chunk& Data);
  108.  
  109.     ////////////////////////////////////////////////////////////
  110.     // Member data
  111.     ////////////////////////////////////////////////////////////
  112.     priv::SoundFile*   myFiles[2]; ///< Sound files
  113.     float              myDuration; ///< Music duration, in seconds
  114.     std::vector<Int16> mySamples;  ///< Temporary buffer of samples
  115.     bool               myPhase;    ///< True if on the loop portion
  116. };
  117.  
  118. } // namespace sf
  119.  
  120.  
  121. #endif // SFML_MUSIC2_HPP
Add Comment
Please, Sign In to add comment