From cad1a197e5a31d40104fd979a2c583aa8f725c93 Mon Sep 17 00:00:00 2001 From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= Date: Mon, 2 Feb 2004 13:16:31 +0000 Subject: [PATCH] renamed wxWave to wxSound; compatibility fixes git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25472 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/chkconf.h | 8 ++++ include/wx/sound.h | 82 ++++++++++++++++++++++++++--------------- include/wx/unix/sound.h | 8 ++-- include/wx/wave.h | 6 +++ 4 files changed, 70 insertions(+), 34 deletions(-) diff --git a/include/wx/chkconf.h b/include/wx/chkconf.h index 46ba51d014..c752d25709 100644 --- a/include/wx/chkconf.h +++ b/include/wx/chkconf.h @@ -592,6 +592,14 @@ # endif #endif /* !defined(wxUSE_SLIDER) */ +#ifndef wxUSE_SOUND +# ifdef wxABORT_ON_CONFIG_ERROR +# error "wxUSE_SOUND must be defined." +# else +# define wxUSE_SOUND 0 +# endif +#endif /* !defined(wxUSE_SOUND) */ + #ifndef wxUSE_SPINBTN # ifdef wxABORT_ON_CONFIG_ERROR # error "wxUSE_SPINBTN must be defined." diff --git a/include/wx/sound.h b/include/wx/sound.h index 9cd472ad9b..3e470dd11b 100644 --- a/include/wx/sound.h +++ b/include/wx/sound.h @@ -16,6 +16,10 @@ #pragma interface "soundbase.h" #endif +#include "wx/defs.h" + +#if wxUSE_SOUND + #include "wx/object.h" // ---------------------------------------------------------------------------- @@ -23,60 +27,78 @@ // ---------------------------------------------------------------------------- // Flags for wxSound::Play -enum wxSoundFlags -{ - wxSOUND_SYNC = 0, - wxSOUND_ASYNC = 1, - wxSOUND_LOOP = 2 -}; +#if WXWIN_COMPATIBILITY_2_4 + // NB: we can't use enum because there would be ambiguity between the + // two Play() prototypes when called without explicit parameters + #define wxSOUND_SYNC ((unsigned)0) + #define wxSOUND_ASYNC ((unsigned)1) + #define wxSOUND_LOOP ((unsigned)2) +#else + enum wxSoundFlags + { + wxSOUND_SYNC = 0, + wxSOUND_ASYNC = 1, + wxSOUND_LOOP = 2 + }; +#endif +// Base class for wxSound implementations class wxSoundBase : public wxObject { public: // Play the sound: - bool Play(unsigned flags = wxSOUND_ASYNC) + bool Play(unsigned flags = wxSOUND_ASYNC) const { + wxASSERT_MSG( (flags & wxSOUND_LOOP) == 0 || + (flags & wxSOUND_ASYNC) != 0, + _T("sound can only be looped asynchronously") ); return DoPlay(flags); } #if WXWIN_COMPATIBILITY_2_4 - wxDEPRECATED( bool Play(bool async = true, bool looped = false) ); + wxDEPRECATED( bool Play(bool async, bool looped = false) const ); #endif + // Plays sound from filename: + static bool Play(const wxString& filename, unsigned flags = wxSOUND_ASYNC); + protected: - virtual bool DoPlay(unsigned flags) = 0; + virtual bool DoPlay(unsigned flags) const = 0; }; - -#if WXWIN_COMPATIBILITY_2_4 -inline bool wxSoundBase::Play(bool async, bool looped) -{ - unsigned flags = 0; - if (async) flags |= wxSOUND_ASYNC; - if (looped) flags |= wxSOUND_LOOP | wxSOUND_ASYNC; - return DoPlay(flags); -} -#endif // ---------------------------------------------------------------------------- // wxSound class implementation // ---------------------------------------------------------------------------- #if defined(__WXMSW__) -#include "wx/msw/wave.h" + #include "wx/msw/sound.h" #elif defined(__UNIX__) -#include "wx/unix/sound.h" + #include "wx/unix/sound.h" #elif defined(__WXMAC__) -#include "wx/mac/wave.h" + #include "wx/mac/sound.h" #elif defined(__WXPM__) -#include "wx/os2/wave.h" + #include "wx/os2/sound.h" #endif -// wxSound used to be called wxWave before wxWindows 2.5.1: -#ifdef __UNIX__ // FIXME: on all platforms when everything is renamed - #if WXWIN_COMPATIBILITY_2_4 - typedef wxSound wxWave; - #endif -#else - typedef wxWave wxSound; +// ---------------------------------------------------------------------------- +// wxSoundBase methods +// ---------------------------------------------------------------------------- + +inline bool wxSoundBase::Play(const wxString& filename, unsigned flags) +{ + wxSound snd(filename); + return snd.IsOk() ? snd.Play(flags) : false; +} + +#if WXWIN_COMPATIBILITY_2_4 +inline bool wxSoundBase::Play(bool async, bool looped) const +{ + unsigned flags = 0; + if (async) flags |= wxSOUND_ASYNC; + if (looped) flags |= wxSOUND_LOOP | wxSOUND_ASYNC; + return DoPlay(flags); +} #endif +#endif // wxUSE_SOUND + #endif // _WX_SOUND_H_BASE_ diff --git a/include/wx/unix/sound.h b/include/wx/unix/sound.h index c038dfcde1..2d2a349869 100644 --- a/include/wx/unix/sound.h +++ b/include/wx/unix/sound.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wave.h +// Name: sound.h // Purpose: wxSound class // Author: Julian Smart, Vaclav Slavik // Modified by: @@ -14,7 +14,7 @@ #include "wx/defs.h" -#if wxUSE_WAVE +#if wxUSE_SOUND #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) #pragma interface "sound.h" @@ -84,7 +84,7 @@ public: static void UnloadBackend(); protected: - bool DoPlay(unsigned flags); + bool DoPlay(unsigned flags) const; static void EnsureBackend(); void Free(); @@ -159,6 +159,6 @@ public: }; -#endif // wxUSE_WAVE +#endif // wxUSE_SOUND #endif diff --git a/include/wx/wave.h b/include/wx/wave.h index 582841f7e9..275fa39850 100644 --- a/include/wx/wave.h +++ b/include/wx/wave.h @@ -14,11 +14,17 @@ #include "wx/setup.h" +#if wxUSE_SOUND + #if WXWIN_COMPATIBILITY_2_4 #warning "wx/wave.h header is deprecated, use wx/sound.h and wxSound" #include "wx/sound.h" + // wxSound used to be called wxWave before wxWindows 2.5.1: + typedef wxSound wxWave; #else #error "wx/wave.h is only available in compatibility mode" #endif #endif + +#endif -- 2.45.2