comparison base/Window.h @ 350:d7c41483af8f

* Merge from transforms branch -- switch over to using Transform object properly
author Chris Cannam
date Fri, 07 Dec 2007 16:47:31 +0000
parents 524bcd89743b
children 7e1b7fcb6c00
comparison
equal deleted inserted replaced
348:edda24bb85fc 350:d7c41483af8f
16 #ifndef _WINDOW_H_ 16 #ifndef _WINDOW_H_
17 #define _WINDOW_H_ 17 #define _WINDOW_H_
18 18
19 #include <cmath> 19 #include <cmath>
20 #include <iostream> 20 #include <iostream>
21 #include <string>
21 #include <map> 22 #include <map>
22 23
23 enum WindowType { 24 enum WindowType {
24 RectangularWindow, 25 RectangularWindow,
25 BartlettWindow, 26 BartlettWindow,
58 T getArea() { return m_area; } 59 T getArea() { return m_area; }
59 T getValue(size_t i) { return m_cache[i]; } 60 T getValue(size_t i) { return m_cache[i]; }
60 61
61 WindowType getType() const { return m_type; } 62 WindowType getType() const { return m_type; }
62 size_t getSize() const { return m_size; } 63 size_t getSize() const { return m_size; }
64
65 // The names used by these functions are un-translated, for use in
66 // e.g. XML I/O. Use Preferences::getPropertyValueLabel if you
67 // want translated names for use in the user interface.
68 static std::string getNameForType(WindowType type);
69 static WindowType getTypeForName(std::string name);
63 70
64 protected: 71 protected:
65 WindowType m_type; 72 WindowType m_type;
66 size_t m_size; 73 size_t m_size;
67 T *m_cache; 74 T *m_cache;
157 + a2 * cos((4 * M_PI * i) / n) 164 + a2 * cos((4 * M_PI * i) / n)
158 - a3 * cos((6 * M_PI * i) / n)); 165 - a3 * cos((6 * M_PI * i) / n));
159 } 166 }
160 } 167 }
161 168
169 template <typename T>
170 std::string
171 Window<T>::getNameForType(WindowType type)
172 {
173 switch (type) {
174 case RectangularWindow: return "rectangular";
175 case BartlettWindow: return "bartlett";
176 case HammingWindow: return "hamming";
177 case HanningWindow: return "hanning";
178 case BlackmanWindow: return "blackman";
179 case GaussianWindow: return "gaussian";
180 case ParzenWindow: return "parzen";
181 case NuttallWindow: return "nuttall";
182 case BlackmanHarrisWindow: return "blackman-harris";
183 }
184
185 std::cerr << "WARNING: Window::getNameForType: unknown type "
186 << type << std::endl;
187
188 return "unknown";
189 }
190
191 template <typename T>
192 WindowType
193 Window<T>::getTypeForName(std::string name)
194 {
195 if (name == "rectangular") return RectangularWindow;
196 if (name == "bartlett") return BartlettWindow;
197 if (name == "hamming") return HammingWindow;
198 if (name == "hanning") return HanningWindow;
199 if (name == "blackman") return BlackmanWindow;
200 if (name == "gaussian") return GaussianWindow;
201 if (name == "parzen") return ParzenWindow;
202 if (name == "nuttall") return NuttallWindow;
203 if (name == "blackman-harris") return BlackmanHarrisWindow;
204
205 std::cerr << "WARNING: Window::getTypeForName: unknown name \""
206 << name << "\", defaulting to \"hanning\"" << std::endl;
207
208 return HanningWindow;
209 }
210
162 #endif 211 #endif