Wt::NullAudio Class Reference

#include <audio.h>

Inheritance diagram for Wt::NullAudio:

Inheritance graph
[legend]
Collaboration diagram for Wt::NullAudio:

Collaboration graph
[legend]
List of all members.

Public Types

typedef BaseFactory< AudioAudioBaseFactory

Public Member Functions

virtual Audio::ChunkloadChunk (const std::string &) const
virtual void playMusic (Music &)
virtual void fadeInMusic (Music &, int ms)
 ~NullAudio ()
int numChannels () const
Channeloperator[] (int i) const
virtual int allocateChannels (int num_channels)
virtual void pause ()
 pause all channels
virtual void resume ()
 resume all channels
virtual void stop (int ms=0)
 stop all channels
virtual void fadeOut (int)
virtual int playingChannels () const
virtual int pausedChannels () const
virtual bool isAvailable () const
virtual Music * loadMusic (const std::string &filename)
virtual void playMusic (Music &)
virtual void fadeInMusic (Music &, int ms)
virtual void fadeOutMusic (int ms)
virtual void setMusicVolume (int volume)
virtual void pauseMusic ()
virtual void rewindMusic ()
virtual bool setMusicPosition (double start_sec)
virtual void stopMusic ()
virtual bool playingMusic () const
virtual bool pausedMusic () const
virtual int musicFading () const

Static Public Member Functions

static DERIVED * instance ()
template<class GRANDCHILD>
static DERIVED * instance ()
 instantiates the pointer compatible child of DERIVED aka grandchild
static DERIVED * existingInstance ()
static void init ()
static void quit ()

Public Attributes

Signal01< void, Channel * > finished
WVar< intmusicLoops
sigc::signal< void > musicFinished

Static Public Attributes

static Factory< Audio, NullAudiofactory

Protected Member Functions

 NullAudio ()
virtual int minHWVolume () const
virtual int maxHWVolume () const
int HWVolume (int volume) const
template<typename CHILD>
void adjustAllocatedChannels (int oldnum, int newnum)

Static Protected Member Functions

static Audioload ()
 try to load the instance
static void onChannelFinish (int channel_id)
 callback called when a channel finishes
static void onMusicFinish ()
static void handleAudioEvent (const SDL_Event *event)
 SDLEvent::Audio handler.

Protected Attributes

std::vector< Channel * > channels

Static Protected Attributes

static const int minVolume = 0
static const int maxVolume = 1000
static DERIVED * instance_ = 0

Friends

class Singleton< Audio >

Classes

class  Channel
class  Chunk

Detailed Description

Definition at line 267 of file audio.h.


Member Typedef Documentation

typedef BaseFactory<Audio> Wt::Audio::AudioBaseFactory [inherited]

Definition at line 86 of file audio.h.


Constructor & Destructor Documentation

Wt::NullAudio::~NullAudio (  ) 

Definition at line 321 of file audio.cpp.

References Wt::Audio::allocateChannels().

00321                       {
00322     allocateChannels(0);
00323 }

Here is the call graph for this function:

Wt::NullAudio::NullAudio (  )  [protected]

Definition at line 316 of file audio.cpp.

00316                      {
00317     // allocate one channel so we don't crash
00318     adjustAllocatedChannels<NullAudio>(0, 1);
00319 }


Member Function Documentation

template<typename CHILD>
void Wt::Audio::adjustAllocatedChannels ( int  oldnum,
int  newnum 
) [inline, protected, inherited]

Definition at line 241 of file audio.h.

References Wt::Audio::Audio(), and Wt::Audio::channels.

00241                                                          {
00242         if (oldnum < newnum) {
00243             for (int i = oldnum; i < newnum; i++) {
00244                 channels.push_back(new typename CHILD::Channel(i));
00245             }
00246         } else { // newnum < oldnum
00247             Audio& self = *this;
00248             for (int i = newnum; i < oldnum; i++) {
00249                 delete self[i];
00250             }
00251             self.channels.resize(newnum);
00252         }
00253     }

Here is the call graph for this function:

int Wt::Audio::allocateChannels ( int  num_channels  )  [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 90 of file audio.cpp.

References Wt::Audio::channels.

Referenced by ~NullAudio().

00090                                {
00091     return channels.size();
00092 }

template<class DERIVED>
static DERIVED* Wt::Singleton< DERIVED >::existingInstance (  )  [inline, static, inherited]

Definition at line 36 of file singleton.h.

Referenced by Wt::Application::exit(), Wt::Application::postEvent(), Wt::Application::sendEvent(), and Wt::Application::sendPostedEvents().

00036                                        {
00037         return instance_;
00038     }

void Wt::Audio::fadeInMusic ( Music ,
int  ms 
) [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 129 of file audio.cpp.

00129 {}

void Wt::NullAudio::fadeInMusic ( Music &  ,
int  ms 
) [virtual]

Definition at line 385 of file audio.cpp.

References Wt::Audio::onMusicFinish().

00385                                        {
00386     onMusicFinish();
00387 }

Here is the call graph for this function:

void Wt::Audio::fadeOut ( int   )  [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 103 of file audio.cpp.

00103 {}

void Wt::Audio::fadeOutMusic ( int  ms  )  [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 131 of file audio.cpp.

00131 {}

void Wt::Audio::handleAudioEvent ( const SDL_Event *  event  )  [static, protected, inherited]

SDLEvent::Audio handler.

it emits the required signal to all interested parties

Definition at line 213 of file audio.cpp.

References Wt::Audio::Event::channel(), Wt::Audio::Event::chunk(), Wt::Audio::Channel::finished, Wt::Singleton< DERIVED >::instance(), and trace.

Referenced by Wt::Audio::Audio().

00213                                                    {
00214     trace("audio", "audio event delivered\n");
00215     Event *sdl_audio_event = static_cast<Event *>(event->user.data1);
00216     Chunk *chunk = sdl_audio_event->chunk();
00217     Channel *channel = sdl_audio_event->channel();
00218     if (chunk && channel) {
00219         chunk->finished(chunk);
00220         channel->finished(channel);
00221         instance()->finished(channel);
00222     } else {
00223         instance()->musicFinished();
00224     }
00225     delete sdl_audio_event;
00226 }

Here is the call graph for this function:

int Wt::Audio::HWVolume ( int  volume  )  const [protected, inherited]

Definition at line 169 of file audio.cpp.

References Wt::Audio::maxHWVolume(), Wt::Audio::maxVolume, Wt::Audio::minHWVolume(), and Wt::Audio::minVolume.

00169                                     {
00170     return (maxHWVolume() - minHWVolume()) *  volume /
00171            (maxVolume - minVolume);
00172 }

Here is the call graph for this function:

template<class DERIVED>
static void Wt::Singleton< DERIVED >::init (  )  [inline, static, inherited]

Note:
cannot fail

Reimplemented in Wt::Application.

Definition at line 49 of file singleton.h.

Referenced by Wt::Application::Application().

00049                        {
00050         if (!instance()) {
00051             assert(0);
00052         }
00053     }

template<class DERIVED>
template<class GRANDCHILD>
static DERIVED* Wt::Singleton< DERIVED >::instance (  )  [inline, static, inherited]

instantiates the pointer compatible child of DERIVED aka grandchild

it is handy in driver like situations

Definition at line 43 of file singleton.h.

00043                                {
00044         return (instance_) ? instance_ : GRANDCHILD::load();
00045     }

template<class DERIVED>
static DERIVED* Wt::Singleton< DERIVED >::instance (  )  [inline, static, inherited]

Definition at line 32 of file singleton.h.

Referenced by Wt::Audio::Audio(), Wt::Sound::available(), Wt::SDLMixer::Chunk::channel(), Wt::NullAudio::Chunk::channel(), Wt::SDLSurface::defaultDepth(), Wt::SDLInput::EventInfo::EventInfo(), Wt::Dialog::exec(), Wt::Widget::grabKeyboard(), Wt::Widget::grabMouse(), Wt::Audio::handleAudioEvent(), Wt::SDLInput::handleKeyEvent(), Wt::Singleton< Wt::Audio >::init(), Wt::SDLTimer::init(), Wt::Sound::isAvailable(), Wt::Widget::keyboardGrabber(), Wt::Audio::load(), Wt::Widget::mouseGrabber(), Wt::SDLMixer::onChannelFinish(), Wt::Audio::onChannelFinish(), Wt::Sound::play(), Wt::Singleton< Wt::Audio >::quit(), Wt::Widget::releaseKeyboard(), Wt::Widget::releaseMouse(), Wt::SDLInput::SDLInput(), Wt::SDLMixer::setMusicVolume(), Wt::SDLMixer::Channel::setVolume(), and Wt::SDLMixer::Chunk::setVolume().

00032                                {
00033         return (instance_) ? instance_ : DERIVED::load();
00034     }

bool Wt::Audio::isAvailable (  )  const [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 113 of file audio.cpp.

00113                               {
00114     return false;
00115 }

Audio * Wt::NullAudio::load (  )  [static, protected]

try to load the instance

if it fails return NULL if it succeeds must return the newly created object

Reimplemented from Wt::Audio.

Definition at line 325 of file audio.cpp.

References trace.

00325                        {
00326     trace("audio", "NullAudio initialization...ok\n");
00327     return new NullAudio;
00328 }

Audio::Chunk * Wt::NullAudio::loadChunk ( const std::string &   )  const [virtual]

Reimplemented from Wt::Audio.

Definition at line 330 of file audio.cpp.

00330                                                        {
00331     return new Chunk;
00332 }

Audio::Music * Wt::Audio::loadMusic ( const std::string &  filename  )  [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 118 of file audio.cpp.

00118                                              {
00119     return new Music;
00120 }

int Wt::Audio::maxHWVolume (  )  const [protected, virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 165 of file audio.cpp.

Referenced by Wt::Audio::HWVolume().

00165                              {
00166     return 1;
00167 }

int Wt::Audio::minHWVolume (  )  const [protected, virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 161 of file audio.cpp.

Referenced by Wt::Audio::HWVolume().

00161                              {
00162     return 0;
00163 }

int Wt::Audio::musicFading (  )  const [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 153 of file audio.cpp.

00153                              {
00154     return 0;
00155 }

int Wt::Audio::numChannels (  )  const [inherited]

Definition at line 82 of file audio.cpp.

References Wt::Audio::channels.

Referenced by Wt::SDLMixer::allocateChannels().

00082                              {
00083     return channels.size();
00084 }

void Wt::Audio::onChannelFinish ( int  channel_id  )  [static, protected, inherited]

callback called when a channel finishes

posts a SDL type event (SDLEvent::Audio) in the SDL event queue. By the time the event it is dispatched all SDL actions are allowed.

Reimplemented in Wt::SDLMixer.

Definition at line 178 of file audio.cpp.

References Wt::SDLEvent::Audio, Wt::Audio::Channel::chunk(), Wt::Singleton< DERIVED >::instance(), Wt::SDLEvent::push(), and trace.

Referenced by Wt::NullAudio::Channel::fadeIn(), Wt::SDLMixer::onChannelFinish(), and Wt::NullAudio::Channel::play().

00178                                           {
00179     Audio& self = *instance();
00180     Channel *channel = self.channels[channel_id];
00181     Chunk *chunk = channel->chunk();
00182 
00183     SDL_Event event;
00184 
00185     event.type = SDLEvent::Audio;
00186     event.user.code = 0;
00187     event.user.data1 = new Event(channel, chunk);
00188     event.user.data2 = 0;
00189 
00190     trace("audio", "channelFinished callback called %d\n", channel_id);
00191     SDLEvent::push(&event);
00192 }

Here is the call graph for this function:

void Wt::Audio::onMusicFinish (  )  [static, protected, inherited]

posts a SDL type event (SDLEvent::Audio) in the SDL event queue. By the time the event it is dispatched all SDL actions are allowed.

Definition at line 198 of file audio.cpp.

References Wt::SDLEvent::Audio, Wt::SDLEvent::push(), and trace.

Referenced by fadeInMusic(), playMusic(), and Wt::SDLMixer::SDLMixer().

00198                           {
00199     SDL_Event event;
00200 
00201     event.type = SDLEvent::Audio;
00202     event.user.code = 0;
00203     event.user.data1 = new Event(0, 0);
00204     event.user.data2 = 0;
00205 
00206     trace("audio", "musicFinished callback called\n");
00207 
00208     SDLEvent::push(&event);
00209 }

Here is the call graph for this function:

Audio::Channel * Wt::Audio::operator[] ( int  i  )  const [inherited]

Definition at line 86 of file audio.cpp.

References Wt::Audio::channels.

00086                                            {
00087     return channels[i];
00088 }

void Wt::Audio::pause (  )  [virtual, inherited]

pause all channels

Reimplemented in Wt::SDLMixer.

Definition at line 95 of file audio.cpp.

00095 {}

int Wt::Audio::pausedChannels (  )  const [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 109 of file audio.cpp.

00109                                 {
00110     return 0;
00111 }

bool Wt::Audio::pausedMusic (  )  const [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 149 of file audio.cpp.

00149                               {
00150     return false;
00151 }

void Wt::Audio::pauseMusic (  )  [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 135 of file audio.cpp.

00135 {}

int Wt::Audio::playingChannels (  )  const [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 105 of file audio.cpp.

00105                                  {
00106     return 0;
00107 }

bool Wt::Audio::playingMusic (  )  const [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 145 of file audio.cpp.

00145                                {
00146     return false;
00147 }

void Wt::Audio::playMusic ( Music  )  [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 125 of file audio.cpp.

References trace.

00125                             {
00126     trace("audio", "Audio::playMusic() called\n");
00127 }

void Wt::NullAudio::playMusic ( Music &   )  [virtual]

Definition at line 380 of file audio.cpp.

References Wt::Audio::onMusicFinish(), and trace.

00380                                 {
00381     trace("audio", "NullAudio::playMusic() called\n");
00382     onMusicFinish();
00383 }

Here is the call graph for this function:

template<class DERIVED>
static void Wt::Singleton< DERIVED >::quit (  )  [inline, static, inherited]

Reimplemented in Wt::Application.

Definition at line 55 of file singleton.h.

Referenced by Wt::Application::~Application().

00055                        {
00056         delete instance();
00057     }

void Wt::Audio::resume (  )  [virtual, inherited]

resume all channels

Reimplemented in Wt::SDLMixer.

Definition at line 98 of file audio.cpp.

00098 {}

void Wt::Audio::rewindMusic (  )  [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 137 of file audio.cpp.

00137 {}

bool Wt::Audio::setMusicPosition ( double  start_sec  )  [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 139 of file audio.cpp.

00139                                    {
00140     return false;
00141 }

void Wt::Audio::setMusicVolume ( int  volume  )  [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 133 of file audio.cpp.

00133 {}

void Wt::Audio::stop ( int  ms = 0  )  [virtual, inherited]

stop all channels

Reimplemented in Wt::SDLMixer.

Definition at line 101 of file audio.cpp.

00101 {}

void Wt::Audio::stopMusic (  )  [virtual, inherited]

Reimplemented in Wt::SDLMixer.

Definition at line 143 of file audio.cpp.

00143 {}


Friends And Related Function Documentation

friend class Singleton< Audio > [friend]

Reimplemented from Wt::Audio.

Definition at line 268 of file audio.h.


Member Data Documentation

std::vector<Channel *> Wt::Audio::channels [protected, inherited]

Definition at line 260 of file audio.h.

Referenced by Wt::Audio::adjustAllocatedChannels(), Wt::Audio::allocateChannels(), Wt::Audio::numChannels(), and Wt::Audio::operator[]().

Factory< Audio, NullAudio > Wt::NullAudio::factory [static]

Reimplemented from Wt::Audio.

Definition at line 270 of file audio.h.

Signal01<void, Channel *> Wt::Audio::finished [inherited]

Definition at line 198 of file audio.h.

template<class DERIVED>
DERIVED * Wt::Singleton< DERIVED >::instance_ = 0 [static, protected, inherited]

Definition at line 91 of file singleton.h.

Referenced by Wt::Singleton< Wt::Audio >::existingInstance(), Wt::Singleton< Wt::Audio >::instance(), Wt::Singleton< Wt::Audio >::load(), Wt::SDLDisplay::load(), Wt::Audio::load(), Wt::Singleton< Wt::Audio >::Singleton(), and Wt::Singleton< Wt::Audio >::~Singleton().

const int Wt::Audio::maxVolume = 1000 [static, protected, inherited]

Definition at line 238 of file audio.h.

Referenced by Wt::SDLMixer::Chunk::Chunk(), and Wt::Audio::HWVolume().

const int Wt::Audio::minVolume = 0 [static, protected, inherited]

Definition at line 237 of file audio.h.

Referenced by Wt::Audio::HWVolume().

sigc::signal<void> Wt::Audio::musicFinished [inherited]

Definition at line 226 of file audio.h.

WVar<int> Wt::Audio::musicLoops [inherited]

Definition at line 224 of file audio.h.

Referenced by Wt::SDLMixer::fadeInMusic(), and Wt::SDLMixer::playMusic().


The documentation for this class was generated from the following files:

Generated Fri Jul 28 19:25:55 2006.
Copyright © 1998-2003 by the respective authors.

This document is licensed under the terms of the GNU Free Documentation License and may be freely distributed under the conditions given by this license.