1/////////////////////////////////////////////////////////////////////////////
2// Name:        sound.h
3// Purpose:     wxSound class (loads and plays short Windows .wav files).
4//              Optional on non-Windows platforms.
5// Authors:     David Elliott, Ryan Norton
6// Modified by:
7// Created:     2004-10-02
8// RCS-ID:      $Id: sound.h 41020 2006-09-05 20:47:48Z VZ $
9// Copyright:   (c) 2004 David Elliott, Ryan Norton
10// Licence:     wxWindows licence
11/////////////////////////////////////////////////////////////////////////////
12
13#ifndef _WX_COCOA_SOUND_H_
14#define _WX_COCOA_SOUND_H_
15
16#include "wx/object.h"
17#include "wx/cocoa/ObjcRef.h"
18
19class WXDLLEXPORT wxSound : public wxSoundBase
20{
21public:
22    wxSound()
23    :   m_cocoaNSSound(NULL)
24    {}
25    wxSound(const wxString& fileName, bool isResource = false)
26    :   m_cocoaNSSound(NULL)
27    {   Create(fileName, isResource); }
28    wxSound(int size, const wxByte* data)
29    :   m_cocoaNSSound(NULL)
30    {   LoadWAV(data,size,true); }
31    wxSound(const wxSound& sound); // why not?
32    virtual ~wxSound();
33
34public:
35    bool Create(const wxString& fileName, bool isResource = false);
36    bool IsOk() const
37    {   return m_cocoaNSSound; }
38    static void Stop();
39    static bool IsPlaying();
40
41    void SetNSSound(WX_NSSound cocoaNSSound);
42    inline WX_NSSound GetNSSound()
43    {   return m_cocoaNSSound; }
44protected:
45    bool DoPlay(unsigned flags) const;
46    bool LoadWAV(const wxUint8 *data, size_t length, bool copyData);
47private:
48    WX_NSSound m_cocoaNSSound;
49    static const wxObjcAutoRefFromAlloc<struct objc_object *> sm_cocoaDelegate;
50};
51
52#endif //ndef _WX_COCOA_SOUND_H_
53