// Created: 2004/02/01
// RCS-ID: $Id$
// Copyright: (c) 2004, Vaclav Slavik
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_SOUND_H_BASE_
#define _WX_SOUND_H_BASE_
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
-#pragma interface "soundbase.h"
-#endif
+#include "wx/defs.h"
+
+#if wxUSE_SOUND
#include "wx/object.h"
// ----------------------------------------------------------------------------
// Flags for wxSound::Play
-enum wxSoundFlags
-{
- wxSOUND_SYNC = 0,
- wxSOUND_ASYNC = 1,
- wxSOUND_LOOP = 2 | wxSOUND_ASYNC
-};
-class wxSoundBase : public wxObject
+// NB: We can't use enum with some compilers, because they keep reporting
+// nonexistent ambiguities between Play(unsigned) and static Play(const
+// wxString&, unsigned).
+#define wxSOUND_SYNC ((unsigned)0)
+#define wxSOUND_ASYNC ((unsigned)1)
+#define wxSOUND_LOOP ((unsigned)2)
+
+// Base class for wxSound implementations
+class WXDLLIMPEXP_ADV 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,
+ wxT("sound can only be looped asynchronously") );
return DoPlay(flags);
}
-#if WXWIN_COMPATIBILITY_2_4
- wxDEPRECATED( bool Play(bool async = true, bool looped = false) );
-#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;
- return DoPlay(flags);
-}
-#endif
// ----------------------------------------------------------------------------
// wxSound class implementation
// ----------------------------------------------------------------------------
-#if defined(__WXMSW__)
-#include "wx/msw/wave.h"
-#elif defined(__UNIX__)
-#include "wx/unix/sound.h"
+#if defined(__WINDOWS__)
+ #include "wx/msw/sound.h"
+#elif defined(__WXCOCOA__)
+ #include "wx/cocoa/sound.h"
#elif defined(__WXMAC__)
-#include "wx/mac/wave.h"
+ #include "wx/osx/sound.h"
#elif defined(__WXPM__)
-#include "wx/os2/wave.h"
+ #include "wx/os2/sound.h"
+#elif defined(__UNIX__)
+ #include "wx/unix/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;
-#endif
+// ----------------------------------------------------------------------------
+// wxSoundBase methods
+// ----------------------------------------------------------------------------
+
+inline bool wxSoundBase::Play(const wxString& filename, unsigned flags)
+{
+ wxSound snd(filename);
+ return snd.IsOk() ? snd.Play(flags) : false;
+}
+
+#endif // wxUSE_SOUND
#endif // _WX_SOUND_H_BASE_