X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/76a5e5d21ee1a6230d777ce0209b2df4c6075f0f..bf60426831535738b1b784629f08e9dd00bf9ecc:/src/mac/carbon/wave.cpp?ds=sidebyside diff --git a/src/mac/carbon/wave.cpp b/src/mac/carbon/wave.cpp index d06eee4838..499d5ab28b 100644 --- a/src/mac/carbon/wave.cpp +++ b/src/mac/carbon/wave.cpp @@ -17,8 +17,13 @@ #include "wx/string.h" #include "wx/wave.h" +#if wxUSE_WAVE + #ifdef __WXMAC__ #include "wx/mac/private.h" +#ifndef __DARWIN__ +#include +#endif #endif wxWave::wxWave() @@ -35,9 +40,14 @@ wxWave::wxWave(const wxString& sFileName, bool isResource) wxWave::~wxWave() { - Free(); + FreeData(); } +wxWave::wxWave(int size, const wxByte* data) + : m_sndChan(0), m_hSnd(NULL), m_waveLength(0), m_isResource(false) +{ + //TODO convert data +} bool wxWave::Create(const wxString& fileName, bool isResource) { @@ -49,7 +59,7 @@ bool wxWave::Create(const wxString& fileName, bool isResource) ret = true; else { /* - if (sndChan) + if (sndChan) { // we're playing FSClose(SndRefNum); SndRefNum = 0; @@ -58,7 +68,7 @@ bool wxWave::Create(const wxString& fileName, bool isResource) sndChan = 0; KillTimer(0,timerID); } - + if (!lpSnd) return true; @@ -73,14 +83,14 @@ bool wxWave::Create(const wxString& fileName, bool isResource) sndChan->qLength = 128; - if (noErr != SndNewChannel (&sndChan, sampledSynth, initMono | initNoInterp, 0)) + if (noErr != SndNewChannel (&sndChan, sampledSynth, initMono | initNoInterp, 0)) { free(sndChan); sndChan = 0; return false; } - if (!(SndRefNum = MacOpenSndFile ((char *)lpSnd))) + if (!(SndRefNum = MacOpenSndFile ((char *)lpSnd))) { SndDisposeChannel(sndChan, TRUE); free(sndChan); @@ -94,7 +104,7 @@ bool wxWave::Create(const wxString& fileName, bool isResource) if (fdwSound & SND_ASYNC) async = true; - if (SndStartFilePlay(sndChan, SndRefNum, 0, 81920, 0, 0, 0, async) != noErr) + if (SndStartFilePlay(sndChan, SndRefNum, 0, 81920, 0, 0, 0, async) != noErr) { FSClose (SndRefNum); SndRefNum = 0; @@ -104,11 +114,11 @@ bool wxWave::Create(const wxString& fileName, bool isResource) return false; } - if (async) + if (async) { // haven't finish yet timerID = SetTimer(0, 0, 250, TimerCallBack); - } - else + } + else { FSClose (SndRefNum); SndRefNum = 0; @@ -117,7 +127,7 @@ bool wxWave::Create(const wxString& fileName, bool isResource) sndChan = 0; }*/ } - + return ret; } @@ -127,8 +137,8 @@ bool wxWave::Play(bool async, bool looped) const { char lpSnd[32]; bool ret = false; - - if (m_isResource) + + if (m_isResource) { #if TARGET_CARBON c2pstrcpy((unsigned char *)lpSnd, m_sndname); @@ -137,21 +147,21 @@ bool wxWave::Play(bool async, bool looped) const c2pstr((char *) lpSnd); #endif SndListHandle hSnd; - + hSnd = (SndListHandle) GetNamedResource('snd ',(const unsigned char *) lpSnd); if ((hSnd != NULL) && (SndPlay((SndChannelPtr)m_sndChan, (SndListHandle) hSnd, async) == noErr)) ret = true; - } - + } + return ret; } -bool wxWave::Free() +bool wxWave::FreeData() { bool ret = false; - + if (m_isResource) { m_sndname.Empty(); @@ -159,9 +169,9 @@ bool wxWave::Free() } else { - //TODO, + //TODO, } - + return ret; } @@ -180,7 +190,7 @@ bool wxWave::Free() // first, get the volume reference number for the file. Start by // making a Pstring with just the volume name strcpy ((char *) name, path); - if (c = strchr ((char *) name, ':')) + if (c = strchr ((char *) name, ':')) { c++; *c = '\0'; @@ -212,7 +222,7 @@ bool wxWave::Free() void TimerCallBack(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime) { - if(!sndChan) + if(!sndChan) { KillTimer(0,timerID); return; @@ -235,3 +245,4 @@ void TimerCallBack(HWND hwnd,UINT uMsg,UINT idEvent,DWORD dwTime) }*/ +#endif