caudio/Headers/cFilter.h

58 lines
1.2 KiB
C++

#ifndef CFILTER_H
#define CFILTER_H
#include "../include/IFilter.h"
#include "../Headers/cMutex.h"
#include "../Headers/cEFXFunctions.h"
#include <AL/al.h>
#include <AL/alc.h>
namespace cAudio
{
class cFilter : public IFilter
{
public:
cFilter(cEFXFunctions* oALFunctions);
~cFilter();
virtual const FilterTypes& getType() const;
virtual void setType(const FilterTypes& type);
virtual float getVolume() const;
virtual void setVolume(const float& volume);
virtual float getLowFrequencyVolume() const;
virtual void setLowFrequencyVolume(const float& volumeLF);
virtual float getHighFrequencyVolume() const;
virtual void setHighFrequencyVolume(const float& volumeHF);
virtual unsigned int getLastUpdated() const;
virtual bool isValid() const;
ALuint getOpenALFilter() const;
protected:
cEFXFunctions* EFX;
//Mutex for thread syncronization
cAudioMutex Mutex;
FilterTypes Type;
float Volume;
float LowFreqVolume;
float HighFreqVolume;
unsigned int LastUpdated;
bool Valid;
ALuint Filter;
bool UpdateFilter();
bool CheckError();
ALenum ConvertFilterEnum(FilterTypes type);
};
};
#endif //! CFILTER_H