Mercurial > hg > svcore
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 |