aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Audio/Source.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Audio/Source.h')
-rw-r--r--src/libjin/Audio/Source.h51
1 files changed, 51 insertions, 0 deletions
diff --git a/src/libjin/Audio/Source.h b/src/libjin/Audio/Source.h
new file mode 100644
index 0000000..5b9c12b
--- /dev/null
+++ b/src/libjin/Audio/Source.h
@@ -0,0 +1,51 @@
+#ifndef __JIN_AUDIO_SOURCE_H
+#define __JIN_AUDIO_SOURCE_H
+#include "../modules.h"
+#if JIN_MODULES_AUDIO
+
+#include <SDL2/SDL.h>
+
+namespace jin
+{
+namespace audio
+{
+
+ enum SourceType
+ {
+ INVALID = 0,
+ WAV,
+ OGG,
+ };
+
+ class Source
+ {
+
+ public:
+
+ Source() {};
+ virtual ~Source() {};
+
+ /* interface */
+ virtual void play() = 0;
+ virtual void stop() = 0;
+ virtual void pause() = 0;
+ virtual void resume() = 0;
+ virtual void rewind() = 0;
+ virtual bool isStopped() const = 0;
+ virtual bool isPaused() const = 0;
+ virtual void setPitch(float pitch) = 0;
+ virtual void setVolume(float volume) = 0;
+ virtual bool setLoop(bool loop) = 0;
+ virtual void setRate(float rate) = 0;
+
+ protected:
+
+ static SourceType getType(const void* mem, int size);
+
+ };
+
+}
+}
+
+#endif // JIN_MODULES_AUDIO
+#endif \ No newline at end of file