aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLoek Le Blansch <loek@pipeframe.xyz>2024-09-29 16:37:12 +0200
committerLoek Le Blansch <loek@pipeframe.xyz>2024-09-29 16:37:12 +0200
commite4a3ef6e324acc8edf9f0797caa244967907a676 (patch)
tree1d468048ada38f8c9cee1501e169b78efda9d7b7
parentfeea4cbb648d67e46b413880ddbf203c88c2a2b1 (diff)
implement audio poc using facade classes
-rw-r--r--src/crepe/Sound.cpp1
-rw-r--r--src/crepe/api/Resource.cpp11
-rw-r--r--src/crepe/api/Resource.h3
3 files changed, 13 insertions, 2 deletions
diff --git a/src/crepe/Sound.cpp b/src/crepe/Sound.cpp
index 94f97af..181366a 100644
--- a/src/crepe/Sound.cpp
+++ b/src/crepe/Sound.cpp
@@ -8,6 +8,7 @@ using namespace crepe;
Sound::Sound(std::unique_ptr<api::Resource> res) {
dbg_trace();
this->res = std::move(res);
+ this->sample.load(this->res->canonical());
}
void Sound::play() {
diff --git a/src/crepe/api/Resource.cpp b/src/crepe/api/Resource.cpp
index a38900b..6bb081d 100644
--- a/src/crepe/api/Resource.cpp
+++ b/src/crepe/api/Resource.cpp
@@ -1,12 +1,19 @@
+#include <filesystem>
+
#include "Resource.h"
using namespace crepe::api;
-Resource::Resource(const std::string & src) : src(src) {
- this->file = std::ifstream(src, std::ios::in | std::ios::binary);
+Resource::Resource(const std::string & src) {
+ this->src = std::filesystem::canonical(src);
+ this->file = std::ifstream(this->src, std::ios::in | std::ios::binary);
}
const std::istream & Resource::read() {
return this->file;
}
+const char * Resource::canonical() {
+ return this->src.c_str();
+}
+
diff --git a/src/crepe/api/Resource.h b/src/crepe/api/Resource.h
index 2260b1a..2b62ff9 100644
--- a/src/crepe/api/Resource.h
+++ b/src/crepe/api/Resource.h
@@ -11,7 +11,10 @@ public:
Resource(const std::string & src);
public:
+ //! Get an input stream to the contents of this resource
const std::istream & read();
+ //! Get the canonical path to this resource
+ const char * canonical();
private:
std::string src;