]> git.saurik.com Git - wxWidgets.git/blame - utils/wxMMedia/wave.cpp
fixed somebody's poorly done StreamSize-->GetSize transition
[wxWidgets.git] / utils / wxMMedia / wave.cpp
CommitLineData
4d6306eb
GL
1/////////////////////////////////////////////////////////////////////////////
2// Name: wave.cpp
3// Purpose: wxWave class
4// Author: Guilhem Lavaux / API by Julian Smart
5// Modified by:
6// Created: 04/23/98
7// RCS-ID: $Id$
8// Copyright: (c) Guilhem Lavaux
9// Licence: wxWindows license
10/////////////////////////////////////////////////////////////////////////////
11#ifdef __GNUG__
12#pragma implementation "wave.h"
13#endif
14
926c550d 15#include <wx/wfstream.h>
4d6306eb
GL
16#include "wave.h"
17
18wxWave::wxWave()
19{
20 m_wave = NULL;
21 m_iowave = NULL;
22}
23
24wxWave::wxWave(const wxString& fileName, bool isResource = FALSE)
25{
26 Create(fileName, isResource);
27}
28
29wxWave::~wxWave()
30{
31 Free();
32}
33
34bool wxWave::Create(const wxString& sFileName, bool isResource = FALSE)
35{
36 m_iowave = new wxFileInputStream(sFileName);
37 m_wave = new wxSndWavCodec(*m_iowave);
38
39 return TRUE;
40}
41
42bool wxWave::Play(bool async, bool looped) const
43{
44 if (!m_wave)
45 return FALSE;
46
47 if (looped)
48 m_wave->Set(wxSND_LOOP);
49 if (!m_wave->StartPlay());
50 return FALSE;
51 if (!async)
52 m_wave->Wait();
53
54 m_wave->Clear(wxSND_LOOP);
55 return TRUE;
56}
57
58bool wxWave::Free()
59{
60 if (m_wave) {
61 delete m_wave;
62 delete m_iowave;
63 }
64 return TRUE;
65}