// Copyright (c) 2008-2010 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones // This file is part of the "cAudio Engine" // For conditions of distribution and use, see copyright notice in cAudio.h #ifndef IFILTER_H #define IFILTER_H #include "IRefCounted.h" #include "cAudioDefines.h" #ifdef CAUDIO_EFX_ENABLED namespace cAudio { //! Enum of all available filter types in cAudio. enum FilterTypes { EFT_NULL, EFT_LOWPASS, EFT_HIGHPASS, EFT_BANDPASS, EFT_COUNT }; //! Interface for a filter in cAudio. class IFilter : public IRefCounted { public: IFilter() { } virtual ~IFilter() { } //! Returns the type of the filter. virtual const FilterTypes& getType() const = 0; //! Sets the type of this filter. /** \param type: Type of filter to set this filter up as. */ virtual void setType(const FilterTypes& type) = 0; //! Returns the master volume of this filter. virtual float getVolume() const = 0; //! Sets the master volume of this filter. /** This volume scales all audio that goes through it by this amount. \param volume: New volume amount. Range: 0.0f to 1.0. */ virtual void setVolume(const float& volume) = 0; //! Returns the volume for low frequencies. virtual float getLowFrequencyVolume() const = 0; //! Sets the volume for low frequencies. /** This volume scales lower frequency audio that goes through it by this amount. \param volume: New volume amount. Range: 0.0f to 1.0. */ virtual void setLowFrequencyVolume(const float& volumeLF) = 0; //! Returns the volume for high frequencies. virtual float getHighFrequencyVolume() const = 0; //! Sets the volume for high frequencies. /** This volume scales higher frequency audio that goes through it by this amount. \param volume: New volume amount. Range: 0.0f to 1.0. */ virtual void setHighFrequencyVolume(const float& volumeHF) = 0; //! Returns a timestamp indicating the last time settings on this filter were changed. Used internally by the engine to update attached sources or effects. virtual unsigned int getLastUpdated() const = 0; //! Returns if this filter is ready to be used or if it has encountered a fatal error. virtual bool isValid() const = 0; }; }; #endif #endif //! IFILTER_H