]> git.saurik.com Git - wxWidgets.git/blob - interface/wx/sound.h
Make storing non-trivial data in wxThreadSpecificInfo possible.
[wxWidgets.git] / interface / wx / sound.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: sound.h
3 // Purpose: interface of wxSound
4 // Author: wxWidgets team
5 // Licence: wxWindows licence
6 /////////////////////////////////////////////////////////////////////////////
7
8
9 #define wxSOUND_SYNC 0
10 #define wxSOUND_ASYNC 1
11 #define wxSOUND_LOOP 2
12
13
14 /**
15 @class wxSound
16
17 This class represents a short sound (loaded from Windows WAV file), that
18 can be stored in memory and played.
19
20 Currently this class is implemented on Windows and Unix (and uses either
21 Open Sound System or Simple DirectMedia Layer).
22
23 @library{wxadv}
24 @category{media}
25 */
26 class wxSound : public wxObject
27 {
28 public:
29 /**
30 Default ctor.
31 */
32 wxSound();
33
34 /**
35 Constructs a wave object from a file or, under Windows, from a Windows
36 resource. Call IsOk() to determine whether this succeeded.
37
38 @param fileName
39 The filename or Windows resource.
40 @param isResource
41 @true if fileName is a resource, @false if it is a filename.
42 */
43 wxSound(const wxString& fileName, bool isResource = false);
44
45 /**
46 Constructs a wave object from in-memory data.
47
48 @param size
49 Size of the buffer pointer to by @a data.
50 @param data
51 The buffer containing the sound data in WAV format.
52 */
53 wxSound(size_t size, const void* data);
54
55 /**
56 Destroys the wxSound object.
57 */
58 virtual ~wxSound();
59
60 /**
61 Constructs a wave object from a file or resource.
62
63 @param fileName
64 The filename or Windows resource.
65 @param isResource
66 @true if fileName is a resource, @false if it is a filename.
67
68 @return @true if the call was successful, @false otherwise.
69 */
70 bool Create(const wxString& fileName, bool isResource = false);
71
72 /**
73 Constructs a wave object from in-memory data.
74
75 @param size
76 Size of the buffer pointer to by @a data.
77 @param data
78 The buffer containing the sound data in WAV format.
79 */
80 bool Create(size_t size, const void* data);
81
82 /**
83 Returns @true if the object contains a successfully loaded file or resource,
84 @false otherwise.
85 */
86 bool IsOk() const;
87
88 /**
89 Returns @true if a sound is played at the moment.
90
91 This method is currently not available under Windows and may not be
92 always implemented in Unix ports depending on the compilation options
93 used (in this case it just always returns @false).
94
95 @onlyfor{wxgtk,wxosx}
96 */
97 static bool IsPlaying();
98
99 //@{
100 /**
101 Plays the sound file. If another sound is playing, it will be interrupted.
102
103 Returns @true on success, @false otherwise. Note that in general it is
104 possible to delete the object which is being asynchronously played any time
105 after calling this function and the sound would continue playing, however this
106 currently doesn't work under Windows for sound objects loaded from memory data.
107
108 The possible values for @a flags are:
109 - wxSOUND_SYNC: @c Play will block and wait until the sound is replayed.
110 - wxSOUND_ASYNC: Sound is played asynchronously, @c Play returns immediately.
111 - wxSOUND_ASYNC|wxSOUND_LOOP: Sound is played asynchronously and loops
112 until another sound is played, Stop() is
113 called or the program terminates.
114
115 The static form is shorthand for this code:
116 @code
117 wxSound(filename).Play(flags);
118 @endcode
119 */
120 bool Play(unsigned flags = wxSOUND_ASYNC) const;
121 static bool Play(const wxString& filename,
122 unsigned flags = wxSOUND_ASYNC);
123 //@}
124
125 /**
126 If a sound is played, this function stops it.
127 */
128 static void Stop();
129 };
130