diff options
Diffstat (limited to 'pacman-c++/common/audio.h')
| -rw-r--r-- | pacman-c++/common/audio.h | 96 |
1 files changed, 21 insertions, 75 deletions
diff --git a/pacman-c++/common/audio.h b/pacman-c++/common/audio.h index bc7d66e..45af34b 100644 --- a/pacman-c++/common/audio.h +++ b/pacman-c++/common/audio.h | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #ifndef AUDIO_H | 1 | #ifndef AUDIO_H |
| 2 | #define AUDIO_H | 2 | #define AUDIO_H |
| 3 | 3 | ||
| 4 | #include "audiointerface.h" | ||
| 4 | #include <QObject> | 5 | #include <QObject> |
| 5 | #include <QList> | 6 | #include <QList> |
| 6 | #include <QFile> | 7 | #include <QFile> |
| @@ -19,52 +20,12 @@ namespace Sound | |||
| 19 | }; | 20 | }; |
| 20 | 21 | ||
| 21 | const unsigned int length[] = { | 22 | const unsigned int length[] = { |
| 22 | 4310, 2090, 570, 570, 1720, | 23 | 4310, 2090, 570, 570, 1720, 1990 |
| 23 | }; | 24 | }; |
| 24 | }; | 25 | }; |
| 25 | 26 | ||
| 26 | /* --------------------------------------------------------------- */ | 27 | /* --------------------------------------------------------------- */ |
| 27 | 28 | ||
| 28 | class AudioPlayer | ||
| 29 | : public QObject | ||
| 30 | { | ||
| 31 | Q_OBJECT | ||
| 32 | friend class AudioManager; | ||
| 33 | |||
| 34 | public: | ||
| 35 | AudioPlayer(QObject *parent = 0) | ||
| 36 | : QObject(parent) | ||
| 37 | {} | ||
| 38 | virtual ~AudioPlayer() | ||
| 39 | {} | ||
| 40 | virtual bool isWorking() const = 0; | ||
| 41 | virtual void setMuted(bool mute = true) = 0; | ||
| 42 | virtual bool isMuted() const = 0; | ||
| 43 | virtual void play() = 0; | ||
| 44 | virtual void play(Sound::Type sound) = 0; | ||
| 45 | virtual bool isPlaying() = 0; | ||
| 46 | virtual void enqueue(Sound::Type sound) = 0; | ||
| 47 | virtual void pause() = 0; | ||
| 48 | virtual bool isPaused() = 0; | ||
| 49 | virtual void stop() = 0; | ||
| 50 | virtual bool isStopped() = 0; | ||
| 51 | virtual void clear() = 0; | ||
| 52 | virtual void clearQueue() = 0; | ||
| 53 | virtual void setPrefinishMark(qint32 msecToEnd) = 0; | ||
| 54 | |||
| 55 | protected slots: | ||
| 56 | virtual void prefinishMarkReached_ex(qint32 mark) = 0; | ||
| 57 | |||
| 58 | signals: | ||
| 59 | void finished(); | ||
| 60 | void prefinishMarkReached(qint32 mark); | ||
| 61 | |||
| 62 | protected: | ||
| 63 | virtual void test(QFile *testsound, qint32 length) = 0; | ||
| 64 | }; | ||
| 65 | |||
| 66 | /* --------------------------------------------------------------- */ | ||
| 67 | |||
| 68 | class NoopAudioPlayer | 29 | class NoopAudioPlayer |
| 69 | : public AudioPlayer | 30 | : public AudioPlayer |
| 70 | { | 31 | { |
| @@ -72,14 +33,11 @@ class NoopAudioPlayer | |||
| 72 | friend class AudioManager; | 33 | friend class AudioManager; |
| 73 | 34 | ||
| 74 | public: | 35 | public: |
| 75 | NoopAudioPlayer(QObject *parent = 0); | ||
| 76 | virtual bool isWorking() const; | 36 | virtual bool isWorking() const; |
| 77 | virtual void setMuted(bool mute = true); | 37 | virtual void setMuted(bool mute = true); |
| 78 | virtual bool isMuted() const; | 38 | virtual bool isMuted() const; |
| 79 | virtual void play(); | 39 | virtual void play(); |
| 80 | virtual void play(Sound::Type sound); | ||
| 81 | virtual bool isPlaying(); | 40 | virtual bool isPlaying(); |
| 82 | virtual void enqueue(Sound::Type sound); | ||
| 83 | virtual void pause(); | 41 | virtual void pause(); |
| 84 | virtual bool isPaused(); | 42 | virtual bool isPaused(); |
| 85 | virtual void stop(); | 43 | virtual void stop(); |
| @@ -87,14 +45,20 @@ public: | |||
| 87 | virtual void clear(); | 45 | virtual void clear(); |
| 88 | virtual void clearQueue(); | 46 | virtual void clearQueue(); |
| 89 | virtual void setPrefinishMark(qint32 msecToEnd); | 47 | virtual void setPrefinishMark(qint32 msecToEnd); |
| 48 | virtual void seek(qint64 time); | ||
| 49 | |||
| 50 | protected: | ||
| 51 | NoopAudioPlayer(QObject *parent = 0); | ||
| 52 | virtual void setWorking(bool working = true); | ||
| 53 | virtual void test(QFile *sound, unsigned int length); | ||
| 54 | virtual void play(QFile *sound, unsigned int length); | ||
| 55 | virtual void setSource(QFile *sound, unsigned int length); | ||
| 56 | virtual void enqueue(QFile *sound, unsigned int length); | ||
| 90 | 57 | ||
| 91 | protected slots: | 58 | protected slots: |
| 92 | virtual void prefinishMarkReached_ex(qint32 mark); | 59 | virtual void prefinishMarkReached_ex(qint32 mark); |
| 93 | 60 | ||
| 94 | protected: | 61 | protected: |
| 95 | virtual void test(QFile *testsound, qint32 length); | ||
| 96 | |||
| 97 | protected: | ||
| 98 | bool m_working; | 62 | bool m_working; |
| 99 | bool m_muted; | 63 | bool m_muted; |
| 100 | bool m_playing; | 64 | bool m_playing; |
| @@ -109,9 +73,9 @@ class FakeAudioPlayer | |||
| 109 | Q_OBJECT | 73 | Q_OBJECT |
| 110 | friend class AudioManager; | 74 | friend class AudioManager; |
| 111 | 75 | ||
| 112 | public: | 76 | protected: |
| 113 | FakeAudioPlayer(QObject *parent = 0); | 77 | FakeAudioPlayer(QObject *parent = 0); |
| 114 | virtual void play(Sound::Type sound); | 78 | virtual void play(QFile *sound, unsigned int length); |
| 115 | 79 | ||
| 116 | protected slots: | 80 | protected slots: |
| 117 | void finished_ex(); | 81 | void finished_ex(); |
| @@ -148,27 +112,6 @@ protected: | |||
| 148 | 112 | ||
| 149 | /* --------------------------------------------------------------- */ | 113 | /* --------------------------------------------------------------- */ |
| 150 | 114 | ||
| 151 | class AudioPlayerFactory | ||
| 152 | { | ||
| 153 | public: | ||
| 154 | virtual ~AudioPlayerFactory() | ||
| 155 | {} | ||
| 156 | virtual AudioPlayer *create(QObject *parent = 0) = 0; | ||
| 157 | }; | ||
| 158 | |||
| 159 | Q_DECLARE_INTERFACE(AudioPlayerFactory, "at.ac.tuwien.foop.pacman.AudioPlayerFactory/1.0"); | ||
| 160 | |||
| 161 | /* --------------------------------------------------------------- */ | ||
| 162 | |||
| 163 | class NoopAudioPlayerFactory | ||
| 164 | : public AudioPlayerFactory | ||
| 165 | { | ||
| 166 | public: | ||
| 167 | virtual AudioPlayer *create(QObject *parent = 0); | ||
| 168 | }; | ||
| 169 | |||
| 170 | /* --------------------------------------------------------------- */ | ||
| 171 | |||
| 172 | class AudioManager | 115 | class AudioManager |
| 173 | : public QObject | 116 | : public QObject |
| 174 | { | 117 | { |
| @@ -189,8 +132,9 @@ public: | |||
| 189 | AudioPlayer *audioPlayer(); | 132 | AudioPlayer *audioPlayer(); |
| 190 | void registerAudioPlayer(AudioPlayer *player); | 133 | void registerAudioPlayer(AudioPlayer *player); |
| 191 | void unregisterAudioPlayer(AudioPlayer *player); | 134 | void unregisterAudioPlayer(AudioPlayer *player); |
| 192 | 135 | void play(Sound::Type sound, AudioPlayer *player = NULL); | |
| 193 | QFile *sound(Sound::Type sound); | 136 | void setSource(Sound::Type sound, AudioPlayer *player = NULL); |
| 137 | void enqueue(Sound::Type sound, AudioPlayer *player = NULL); | ||
| 194 | 138 | ||
| 195 | signals: | 139 | signals: |
| 196 | void mutedChanged(bool muted); | 140 | void mutedChanged(bool muted); |
| @@ -200,8 +144,10 @@ private slots: | |||
| 200 | 144 | ||
| 201 | protected: | 145 | protected: |
| 202 | void preload(); | 146 | void preload(); |
| 203 | bool tryLoadPhononPlugin(); | 147 | bool tryLoadAudioPlugin(const QString &libraryname); |
| 204 | AudioPlayer *createAudioPlayer(); | 148 | AudioPlayer *createAudioPlayer(QObject *parent = 0); |
| 149 | QFile *sound(Sound::Type sound); | ||
| 150 | unsigned int length(Sound::Type sound); | ||
| 205 | 151 | ||
| 206 | private: | 152 | private: |
| 207 | bool m_muted; | 153 | bool m_muted; |
| @@ -212,4 +158,4 @@ private: | |||
| 212 | AudioPlayerFactory *m_factory; | 158 | AudioPlayerFactory *m_factory; |
| 213 | }; | 159 | }; |
| 214 | 160 | ||
| 215 | #endif // AUDIOPLAYER_H | 161 | #endif // AUDIO_H |
