Finer grained doc groups for Mixer

This commit is contained in:
Dmitry Marakasov 2015-09-22 19:34:56 +03:00
parent 87f8b6fc5b
commit 3bd28d002e

View File

@ -58,6 +58,10 @@ private:
std::unique_ptr<MusicHook> current_music_hook_; std::unique_ptr<MusicHook> current_music_hook_;
public: public:
///@{
/// \name Construction and destruction
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Construct a mixer and open an audio device /// \brief Construct a mixer and open an audio device
/// ///
@ -86,6 +90,11 @@ public:
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
~Mixer(); ~Mixer();
///@}
///@{
/// \name Copy and move
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Move constructor /// \brief Move constructor
/// ///
@ -120,8 +129,10 @@ public:
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
Mixer& operator=(const Mixer& other) = delete; Mixer& operator=(const Mixer& other) = delete;
///@}
///@{ ///@{
/// \name Channels /// \name Channels: setup
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Set the number of channels to mix /// \brief Set the number of channels to mix
@ -175,6 +186,11 @@ public:
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
int GetVolume(int channel) const; int GetVolume(int channel) const;
///@}
///@{
/// \name Channels: playing
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Play loop /// \brief Play loop
/// ///
@ -259,6 +275,11 @@ public:
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
int FadeInChannel(int channel, const Chunk& chunk, int loops, int ms, int ticks); int FadeInChannel(int channel, const Chunk& chunk, int loops, int ms, int ticks);
///@}
///@{
/// \name Channels: pausing
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Pause a channel /// \brief Pause a channel
/// ///
@ -279,6 +300,11 @@ public:
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
void ResumeChannel(int channel = -1); void ResumeChannel(int channel = -1);
///@}
///@{
/// \name Channels: stopping
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Stop playing on a channel /// \brief Stop playing on a channel
/// ///
@ -331,6 +357,11 @@ public:
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
void SetChannelFinishedHandler(ChannelFinishedHandler channel_finished); void SetChannelFinishedHandler(ChannelFinishedHandler channel_finished);
///@}
///@{
/// \name Channels: info
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Get the active playing status of a channel /// \brief Get the active playing status of a channel
/// ///
@ -378,7 +409,7 @@ public:
///@} ///@}
///@{ ///@{
/// \name Groups /// \name Groups: setup
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Prevent channels from being used in default group /// \brief Prevent channels from being used in default group
@ -427,6 +458,11 @@ public:
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
void GroupChannels(int from, int to, int tag); void GroupChannels(int from, int to, int tag);
///@}
///@{
/// \name Groups: info
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Get number of channels in group /// \brief Get number of channels in group
/// ///
@ -478,6 +514,11 @@ public:
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
int GetGroupNewestChannel(int tag) const; int GetGroupNewestChannel(int tag) const;
///@}
///@{
/// \name Groups: stopping
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Fade out a group over time /// \brief Fade out a group over time
/// ///
@ -505,7 +546,7 @@ public:
///@} ///@}
///@{ ///@{
/// \name Music /// \name Music: playing
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Play music /// \brief Play music
@ -534,6 +575,21 @@ public:
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
void FadeInMusic(const Music& music, int loops = -1, int ms = 0); void FadeInMusic(const Music& music, int loops = -1, int ms = 0);
////////////////////////////////////////////////////////////
/// \brief Hook for a custom music player
///
/// \param[in] hook Music player mixer function
///
/// \see https://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer.html#SEC60
///
////////////////////////////////////////////////////////////
void SetMusicHook(MusicHook&& hook);
///@}
///@{
/// \name Music: settings
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Set music volume /// \brief Set music volume
/// ///
@ -590,6 +646,11 @@ public:
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
void SetMusicPosition(double position); void SetMusicPosition(double position);
///@}
///@{
/// \name Music: stopping
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Stop music playback /// \brief Stop music playback
/// ///
@ -611,6 +672,25 @@ public:
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
bool FadeOutMusic(int ms); bool FadeOutMusic(int ms);
////////////////////////////////////////////////////////////
/// \brief Set a callback for when music stops
///
/// \param[in] music_finished Function to call when music stops
///
/// \note Since Mix_HookMusicFinished doesn't take any custom data
/// pointer, unfortunately there's no safe way of using
/// std::function here.
///
/// \see https://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer.html#SEC69
///
////////////////////////////////////////////////////////////
void SetMusicFinishedHandler(MusicFinishedHandler music_finished);
///@}
///@{
/// \name Music: info
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
/// \brief Test whether music is playing /// \brief Test whether music is playing
/// ///
@ -641,30 +721,6 @@ public:
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
Mix_Fading GetMusicFading() const; Mix_Fading GetMusicFading() const;
////////////////////////////////////////////////////////////
/// \brief Set a callback for when music stops
///
/// \param[in] music_finished Function to call when music stops
///
/// \note Since Mix_HookMusicFinished doesn't take any custom data
/// pointer, unfortunately there's no safe way of using
/// std::function here.
///
/// \see https://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer.html#SEC69
///
////////////////////////////////////////////////////////////
void SetMusicFinishedHandler(MusicFinishedHandler music_finished);
////////////////////////////////////////////////////////////
/// \brief Hook for a custom music player
///
/// \param[in] hook Music player mixer function
///
/// \see https://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer.html#SEC60
///
////////////////////////////////////////////////////////////
void SetMusicHook(MusicHook&& hook);
///@} ///@}
///@{ ///@{