]> git.tdb.fi Git - libs/al.git/blobdiff - source/buffer.cpp
Two more atribute setting functions in Source
[libs/al.git] / source / buffer.cpp
index b2ef01698c948221877c312abfa476ce4f5326fa..8f5b4aa6daf98dbe2a5cfd3ea61ca0f3f74293ef 100644 (file)
@@ -28,12 +28,32 @@ void Buffer::data(Format fmt, const void *dt, sizei size, sizei freq)
        alBufferData(id, fmt, dt, size, freq);
 }
 
+void Buffer::data(const Sound &snd)
+{
+       data(snd.get_format(), snd.get_data(), snd.get_size(), snd.get_frequency());
+}
+
 void Buffer::load_data(const string &fn)
 {
        Sound sound;
-       sound.load(fn);
+       sound.load_file(fn);
+
+       data(sound);
+}
+
+
+Buffer::Loader::Loader(Buffer &b):
+       buf(b)
+{
+       add("sound_data", &Loader::sound_data);
+}
+
+void Buffer::Loader::sound_data(const string &data)
+{
+       Sound sound;
+       sound.load_memory(data.data(), data.size());
 
-       data(sound.get_format(), sound.get_data(), sound.get_size(), sound.get_frequency());
+       buf.data(sound);
 }
 
 } // namespace AL