1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: wxSoundBase class
4 // Author: Vaclav Slavik
8 // Copyright: (c) 2004, Vaclav Slavik
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_SOUND_H_BASE_
13 #define _WX_SOUND_H_BASE_
15 #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
16 #pragma interface "soundbase.h"
23 #include "wx/object.h"
25 // ----------------------------------------------------------------------------
26 // wxSoundBase: common wxSound code and interface
27 // ----------------------------------------------------------------------------
29 // Flags for wxSound::Play
31 // NB: We can't use enum because there would be ambiguity between the
32 // two Play() prototypes when called without explicit parameters
33 // if WXWIN_COMPATIBILITY_2_4.
34 // We can't use enum with some compilers either, because they
35 // keep reporting nonexistent ambiguities between
36 // Play(unsigned) and static Play(const wxString&, unsigned).
37 #define wxSOUND_SYNC ((unsigned)0)
38 #define wxSOUND_ASYNC ((unsigned)1)
39 #define wxSOUND_LOOP ((unsigned)2)
41 // Base class for wxSound implementations
42 class WXDLLIMPEXP_ADV wxSoundBase
: public wxObject
46 bool Play(unsigned flags
= wxSOUND_ASYNC
) const
48 wxASSERT_MSG( (flags
& wxSOUND_LOOP
) == 0 ||
49 (flags
& wxSOUND_ASYNC
) != 0,
50 _T("sound can only be looped asynchronously") );
53 #if WXWIN_COMPATIBILITY_2_4
54 wxDEPRECATED( bool Play(bool async
, bool looped
= false) const );
57 // Plays sound from filename:
58 static bool Play(const wxString
& filename
, unsigned flags
= wxSOUND_ASYNC
);
61 virtual bool DoPlay(unsigned flags
) const = 0;
64 // ----------------------------------------------------------------------------
65 // wxSound class implementation
66 // ----------------------------------------------------------------------------
68 #if defined(__WXMSW__)
69 #include "wx/msw/sound.h"
70 #elif defined(__WXMAC__)
71 #include "wx/mac/sound.h"
72 #elif defined(__WXPM__)
73 #include "wx/os2/sound.h"
74 #elif defined(__UNIX__)
75 #include "wx/unix/sound.h"
78 // ----------------------------------------------------------------------------
79 // wxSoundBase methods
80 // ----------------------------------------------------------------------------
82 inline bool wxSoundBase::Play(const wxString
& filename
, unsigned flags
)
84 wxSound
snd(filename
);
85 return snd
.IsOk() ? snd
.Play(flags
) : false;
88 #if WXWIN_COMPATIBILITY_2_4
89 inline bool wxSoundBase::Play(bool async
, bool looped
) const
92 if (async
) flags
|= wxSOUND_ASYNC
;
93 if (looped
) flags
|= wxSOUND_LOOP
| wxSOUND_ASYNC
;
100 #endif // _WX_SOUND_H_BASE_