X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fyoink;a=blobdiff_plain;f=src%2FMoof%2FSound.hh;h=bc669bcd5df6dcf629ab26a97b564b23e6151b3a;hp=cca7dc7e637fd2b9cd61fe3ecac024db9d03a9e6;hb=5fa5f117f28922a7e539a432367960c1a61f837d;hpb=bfa6212d09d8735d8fd5e2638188e4a99f21ada4 diff --git a/src/Moof/Sound.hh b/src/Moof/Sound.hh index cca7dc7..bc669bc 100644 --- a/src/Moof/Sound.hh +++ b/src/Moof/Sound.hh @@ -38,6 +38,7 @@ #include +#include #include #include @@ -51,13 +52,37 @@ public: Sound(const std::string& name); void play(); + void pause(); + void togglePlayPause(); + + void setGain(Scalar gain); static std::string getPath(const std::string& name); - struct Exception : std::runtime_error + struct Exception : public Mf::Exception { - explicit Exception(const std::string& what_arg) : - std::runtime_error(what_arg) {} + enum + { + BAD_AUDIO_FORMAT = 1024 + }; + + explicit Exception(unsigned error) : + Mf::Exception(error) {} + + void raise() + { + throw *this; + } + + const char* what() const throw() + { + switch (code) + { + case BAD_AUDIO_FORMAT: + return "unknown audio format"; + } + return Mf::Exception::what(); + } }; protected: