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 61872 2009-09-09 22:37:05Z VZ $ 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#include "wx/defs.h" 16 17#if wxUSE_SOUND 18 19#include "wx/object.h" 20 21// ---------------------------------------------------------------------------- 22// wxSoundBase: common wxSound code and interface 23// ---------------------------------------------------------------------------- 24 25// Flags for wxSound::Play 26 27// NB: We can't use enum because there would be ambiguity between the 28// two Play() prototypes when called without explicit parameters 29// if WXWIN_COMPATIBILITY_2_4. 30// We can't use enum with some compilers either, because they 31// keep reporting nonexistent ambiguities between 32// Play(unsigned) and static Play(const wxString&, unsigned). 33#define wxSOUND_SYNC ((unsigned)0) 34#define wxSOUND_ASYNC ((unsigned)1) 35#define wxSOUND_LOOP ((unsigned)2) 36 37// Base class for wxSound implementations 38class WXDLLIMPEXP_ADV wxSoundBase : public wxObject 39{ 40public: 41 // Play the sound: 42 bool Play(unsigned flags = wxSOUND_ASYNC) const 43 { 44 wxASSERT_MSG( (flags & wxSOUND_LOOP) == 0 || 45 (flags & wxSOUND_ASYNC) != 0, 46 wxT("sound can only be looped asynchronously") ); 47 return DoPlay(flags); 48 } 49#if WXWIN_COMPATIBILITY_2_4 50 wxDEPRECATED( bool Play(bool async, bool looped = false) const ); 51#endif 52 53 // Plays sound from filename: 54 static bool Play(const wxString& filename, unsigned flags = wxSOUND_ASYNC); 55 56protected: 57 virtual bool DoPlay(unsigned flags) const = 0; 58}; 59 60// ---------------------------------------------------------------------------- 61// wxSound class implementation 62// ---------------------------------------------------------------------------- 63 64#if defined(__WXMSW__) 65 #include "wx/msw/sound.h" 66#elif defined(__WXCOCOA__) 67 #include "wx/cocoa/sound.h" 68#elif defined(__WXMAC__) 69 #include "wx/mac/sound.h" 70#elif defined(__WXPM__) 71 #include "wx/os2/sound.h" 72#elif defined(__UNIX__) 73 #include "wx/unix/sound.h" 74#endif 75 76// ---------------------------------------------------------------------------- 77// wxSoundBase methods 78// ---------------------------------------------------------------------------- 79 80inline bool wxSoundBase::Play(const wxString& filename, unsigned flags) 81{ 82 wxSound snd(filename); 83 return snd.IsOk() ? snd.Play(flags) : false; 84} 85 86#if WXWIN_COMPATIBILITY_2_4 87inline bool wxSoundBase::Play(bool async, bool looped) const 88{ 89 unsigned flags = 0; 90 if (async) flags |= wxSOUND_ASYNC; 91 if (looped) flags |= wxSOUND_LOOP | wxSOUND_ASYNC; 92 return DoPlay(flags); 93} 94#endif 95 96#endif // wxUSE_SOUND 97 98#endif // _WX_SOUND_H_BASE_ 99