1 | /////////////////////////////////////////////////////////////////////////////
|
---|
2 | // Name: wx/sound.h
|
---|
3 | // Purpose: wxSoundBase class
|
---|
4 | // Author: Vaclav Slavik
|
---|
5 | // Modified by:
|
---|
6 | // Created: 2004/02/01
|
---|
7 | // RCS-ID: $Id: sound.h,v 1.12 2004/10/08 00:47:43 RN Exp $
|
---|
8 | // Copyright: (c) 2004, Vaclav Slavik
|
---|
9 | // Licence: wxWindows licence
|
---|
10 | /////////////////////////////////////////////////////////////////////////////
|
---|
11 |
|
---|
12 | #ifndef _WX_SOUND_H_BASE_
|
---|
13 | #define _WX_SOUND_H_BASE_
|
---|
14 |
|
---|
15 | #if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
|
---|
16 | #pragma interface "soundbase.h"
|
---|
17 | #endif
|
---|
18 |
|
---|
19 | #include "wx/defs.h"
|
---|
20 |
|
---|
21 | #if wxUSE_SOUND
|
---|
22 |
|
---|
23 | #include "wx/object.h"
|
---|
24 |
|
---|
25 | // ----------------------------------------------------------------------------
|
---|
26 | // wxSoundBase: common wxSound code and interface
|
---|
27 | // ----------------------------------------------------------------------------
|
---|
28 |
|
---|
29 | // Flags for wxSound::Play
|
---|
30 |
|
---|
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)
|
---|
40 |
|
---|
41 | // Base class for wxSound implementations
|
---|
42 | class WXDLLIMPEXP_ADV wxSoundBase : public wxObject
|
---|
43 | {
|
---|
44 | public:
|
---|
45 | // Play the sound:
|
---|
46 | bool Play(unsigned flags = wxSOUND_ASYNC) const
|
---|
47 | {
|
---|
48 | wxASSERT_MSG( (flags & wxSOUND_LOOP) == 0 ||
|
---|
49 | (flags & wxSOUND_ASYNC) != 0,
|
---|
50 | _T("sound can only be looped asynchronously") );
|
---|
51 | return DoPlay(flags);
|
---|
52 | }
|
---|
53 | #if WXWIN_COMPATIBILITY_2_4
|
---|
54 | wxDEPRECATED( bool Play(bool async, bool looped = false) const );
|
---|
55 | #endif
|
---|
56 |
|
---|
57 | // Plays sound from filename:
|
---|
58 | static bool Play(const wxString& filename, unsigned flags = wxSOUND_ASYNC);
|
---|
59 |
|
---|
60 | protected:
|
---|
61 | virtual bool DoPlay(unsigned flags) const = 0;
|
---|
62 | };
|
---|
63 |
|
---|
64 | // ----------------------------------------------------------------------------
|
---|
65 | // wxSound class implementation
|
---|
66 | // ----------------------------------------------------------------------------
|
---|
67 |
|
---|
68 | #if defined(__WXMSW__)
|
---|
69 | #include "wx/msw/sound.h"
|
---|
70 | #elif defined(__WXCOCOA__)
|
---|
71 | #include "wx/cocoa/sound.h"
|
---|
72 | #elif defined(__WXMAC__)
|
---|
73 | #include "wx/mac/sound.h"
|
---|
74 | #elif defined(__WXPM__)
|
---|
75 | #include "wx/os2/sound.h"
|
---|
76 | #elif defined(__UNIX__)
|
---|
77 | #include "wx/unix/sound.h"
|
---|
78 | #endif
|
---|
79 |
|
---|
80 | // ----------------------------------------------------------------------------
|
---|
81 | // wxSoundBase methods
|
---|
82 | // ----------------------------------------------------------------------------
|
---|
83 |
|
---|
84 | inline bool wxSoundBase::Play(const wxString& filename, unsigned flags)
|
---|
85 | {
|
---|
86 | wxSound snd(filename);
|
---|
87 | return snd.IsOk() ? snd.Play(flags) : false;
|
---|
88 | }
|
---|
89 |
|
---|
90 | #if WXWIN_COMPATIBILITY_2_4
|
---|
91 | inline bool wxSoundBase::Play(bool async, bool looped) const
|
---|
92 | {
|
---|
93 | unsigned flags = 0;
|
---|
94 | if (async) flags |= wxSOUND_ASYNC;
|
---|
95 | if (looped) flags |= wxSOUND_LOOP | wxSOUND_ASYNC;
|
---|
96 | return DoPlay(flags);
|
---|
97 | }
|
---|
98 | #endif
|
---|
99 |
|
---|
100 | #endif // wxUSE_SOUND
|
---|
101 |
|
---|
102 | #endif // _WX_SOUND_H_BASE_
|
---|