1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
|
// ==============================================================
// This file is part of Glest Shared Library (www.glest.org)
//
// Copyright (C) 2001-2008 Martio Figueroa
//
// You can redistribute this code and/or modify it under
// the terms of the GNU General Public License as published
// by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version
// ==============================================================
#include "sound.h"
#include <fstream>
#include <stdexcept>
#include "leak_dumper.h"
namespace Shared{ namespace Sound{
// =====================================================
// class SoundInfo
// =====================================================
SoundInfo::SoundInfo(){
channels= 0;
samplesPerSecond= 0;
bitsPerSample= 0;
size= 0;
}
// =====================================================
// class Sound
// =====================================================
Sound::Sound(){
volume= 0.0f;
}
// =====================================================
// class StaticSound
// =====================================================
StaticSound::StaticSound(){
samples= NULL;
}
StaticSound::~StaticSound(){
delete [] samples;
}
void StaticSound::load(const string &path){
string ext= path.substr(path.find_last_of('.')+1);
soundFileLoader= SoundFileLoaderFactory::getInstance()->newInstance(ext);
soundFileLoader->open(path, &info);
samples= new int8[info.getSize()];
soundFileLoader->read(samples, info.getSize());
soundFileLoader->close();
delete soundFileLoader;
}
// =====================================================
// class StrSound
// =====================================================
StrSound::StrSound(){
soundFileLoader= NULL;
next= NULL;
}
StrSound::~StrSound(){
close();
}
void StrSound::open(const string &path){
string ext= path.substr(path.find_last_of('.')+1);
soundFileLoader= SoundFileLoaderFactory::getInstance()->newInstance(ext);
soundFileLoader->open(path, &info);
}
uint32 StrSound::read(int8 *samples, uint32 size){
return soundFileLoader->read(samples, size);
}
void StrSound::close(){
if(soundFileLoader!=NULL){
soundFileLoader->close();
delete soundFileLoader;
soundFileLoader= NULL;
}
}
void StrSound::restart(){
soundFileLoader->restart();
}
}}//end namespace
|