X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/03647350fc7cd141953c72e0284e928847d30f44..5ca21fe7bfda18e2da4e17eb529c4dfa0c824db2:/include/wx/osx/sound.h diff --git a/include/wx/osx/sound.h b/include/wx/osx/sound.h index d581290fc4..fd3978f616 100644 --- a/include/wx/osx/sound.h +++ b/include/wx/osx/sound.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: sound.h +// Name: wx/osx/sound.h // Purpose: wxSound class (loads and plays short Windows .wav files). // Optional on non-Windows platforms. // Author: Ryan Norton, Stefan Csomor @@ -17,37 +17,66 @@ #include "wx/object.h" +class WXDLLIMPEXP_FWD_ADV wxSoundTimer; + +class WXDLLIMPEXP_ADV wxSoundData +{ +public : + wxSoundData(); + virtual ~wxSoundData(); + + virtual bool Play(unsigned int flags) = 0; + // stops the sound and deletes the optional timer + virtual void Stop(); + // can be called by a timer for repeated tasks during playback + virtual void SoundTask(); + // mark this to be deleted + virtual void MarkForDeletion(); + virtual bool IsMarkedForDeletion() const { return m_markedForDeletion; } + + // does the true work of stopping and cleaning up + virtual void DoStop() = 0; +protected : + void CreateAndStartTimer(); + + unsigned int m_flags; + wxSoundTimer* m_pTimer; + bool m_markedForDeletion; +} ; + class WXDLLIMPEXP_ADV wxSound : public wxSoundBase { public: - wxSound(); - wxSound(const wxString& fileName, bool isResource = FALSE); - wxSound(int size, const wxByte* data); - virtual ~wxSound(); + wxSound(); + wxSound(const wxString& fileName, bool isResource = false); + wxSound(size_t size, const void* data); + virtual ~wxSound(); -public: - bool Create(const wxString& fileName, bool isResource = FALSE); - bool IsOk() const { return !m_sndname.IsEmpty(); } - static void Stop(); - static bool IsPlaying(); + // Create from resource or file + bool Create(const wxString& fileName, bool isResource = false); + // Create from data + bool Create(size_t size, const void* data); + + bool IsOk() const { return m_data != NULL; } + + // Stop playing any sound + static void Stop(); + + // Returns true if a sound is being played + static bool IsPlaying(); + + // Notification when a sound has stopped + static void SoundStopped(const wxSoundData* data); - void* GetHandle(); protected: - bool DoPlay(unsigned flags) const; + bool DoPlay(unsigned flags) const; + void Init(); private: - wxString m_sndname; //file path - char* m_hSnd; //pointer to resource or memory location - int m_waveLength; //size of file in memory mode - void* m_pTimer; //timer - - enum wxSoundType - { - wxSound_MEMORY, - wxSound_FILE, - wxSound_RESOURCE, - wxSound_NONE - } m_type; //mode + // data of this object + class wxSoundData *m_data; + + wxDECLARE_NO_COPY_CLASS(wxSound); }; #endif