00001 #ifndef _VU_TORSTENS_FOURIER_FILTER_H_
00002 #define _VU_TORSTENS_FOURIER_FILTER_H_
00003
00004 #include "vuFourierFilter.h"
00005 #include "torstensFilters.h"
00006
00007
00008 #define VU_MAX_TFILTER_EXTENT 10
00009
00010 class vuTorstensFourierFilter : public vuFourierFilter
00011 {
00012 public:
00013 vuTorstensFourierFilter();
00014 vuTorstensFourierFilter(vuTorstensFourierFilter& l);
00015 vuTorstensFourierFilter(int (*filter)(float a, float t, float *coeff),
00016 float a = 0.0f);
00017 vuTorstensFourierFilter(int (*filter)(float a, float t, float *coeff),
00018 const vuString& filterName, float a = 0.0f);
00019
00020 virtual ~vuTorstensFourierFilter();
00021
00022 void SetFilter(int (*filter)(float a,float t,float *coeff), float a=0.0f);
00023
00024 virtual dword getWidth(void);
00025
00026 vuTorstensFourierFilter& operator=(vuTorstensFourierFilter& rhs);
00027
00028
00029 static void getFilterNames(vuString* &filterNames, dword& numOfNames);
00030 static vuTorstensFourierFilter *getFilter(const vuString& filterName);
00031
00032 protected:
00033 virtual void MakeWeights(void);
00034
00035 private:
00036 void MakeWeightCube(float* w, float ti, float tj, float tk);
00037
00038 private:
00039 int (*m_Filter)(float a, float t, float *coeff);
00040 dword m_FilterWidth;
00041 float m_a;
00042 };
00043
00044 #endif