00001 #ifndef INCLUDE_FOURIERTRANSFORM_H
00002 #define INCLUDE_FOURIERTRANSFORM_H
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include <complex>
00037 #include <vector>
00038
00039
00040 namespace Loris {
00041
00042 class FTimpl;
00043
00044
00045
00046
00059
00060 class FourierTransform
00061 {
00062
00063 public:
00064
00067 typedef std::vector< std::complex< double > >::size_type size_type;
00068
00070 typedef std::vector< std::complex< double > >::iterator iterator;
00071
00073 typedef std::vector< std::complex< double > >::const_iterator const_iterator;
00074
00075
00076
00083 FourierTransform( size_type len );
00084
00091 FourierTransform( const FourierTransform & rhs );
00092
00094 ~FourierTransform( void );
00095
00096
00097
00105 FourierTransform & operator= ( const FourierTransform & rhs );
00106
00107
00108
00109
00120 std::complex< double > & operator[] ( size_type index )
00121 {
00122 return _buffer[ index ];
00123 }
00124
00135 const std::complex< double > & operator[] ( size_type index ) const
00136 {
00137 return _buffer[ index ];
00138 }
00139
00145 iterator begin( void )
00146 {
00147 return _buffer.begin();
00148 }
00149
00155 iterator end( void )
00156 {
00157 return _buffer.end();
00158 }
00159
00165 const_iterator begin( void ) const
00166 {
00167 return _buffer.begin();
00168 }
00169
00175 const_iterator end( void ) const
00176 {
00177 return _buffer.end();
00178 }
00179
00180
00181
00186 void transform( void );
00187
00188
00189
00193 size_type size( void ) const ;
00194
00195
00196 private:
00197
00201 std::vector< std::complex< double > > _buffer;
00202
00203
00204
00205 FTimpl * _impl;
00206
00207 };
00208
00209
00210 }
00211
00212 #endif