Mercurial > hg > easaier-soundaccess
comparison layer/LayerFactory.cpp @ 18:d8e6709e9075
add
- EasaierSessionManager
- Easaier menus
- Interval model
author | lbajardsilogic |
---|---|
date | Mon, 14 May 2007 13:13:14 +0000 |
parents | fc9323a41f5a |
children |
comparison
equal
deleted
inserted
replaced
17:e59b19407b6d | 18:d8e6709e9075 |
---|---|
24 #include "TextLayer.h" | 24 #include "TextLayer.h" |
25 #include "Colour3DPlotLayer.h" | 25 #include "Colour3DPlotLayer.h" |
26 #include "SpectrumLayer.h" | 26 #include "SpectrumLayer.h" |
27 #include "SliceLayer.h" | 27 #include "SliceLayer.h" |
28 #include "SliceableLayer.h" | 28 #include "SliceableLayer.h" |
29 #include "IntervalLayer.h" | |
29 | 30 |
30 #include "data/model/RangeSummarisableTimeValueModel.h" | 31 #include "data/model/RangeSummarisableTimeValueModel.h" |
31 #include "data/model/DenseTimeValueModel.h" | 32 #include "data/model/DenseTimeValueModel.h" |
32 #include "data/model/SparseOneDimensionalModel.h" | 33 #include "data/model/SparseOneDimensionalModel.h" |
33 #include "data/model/SparseTimeValueModel.h" | 34 #include "data/model/SparseTimeValueModel.h" |
34 #include "data/model/NoteModel.h" | 35 #include "data/model/NoteModel.h" |
35 #include "data/model/TextModel.h" | 36 #include "data/model/TextModel.h" |
36 #include "data/model/DenseThreeDimensionalModel.h" | 37 #include "data/model/DenseThreeDimensionalModel.h" |
37 #include "data/model/WaveFileModel.h" | 38 #include "data/model/WaveFileModel.h" |
38 #include "data/model/WritableWaveFileModel.h" | 39 #include "data/model/WritableWaveFileModel.h" |
40 #include "data/model/IntervalModel.h" | |
39 | 41 |
40 LayerFactory * | 42 LayerFactory * |
41 LayerFactory::m_instance = new LayerFactory; | 43 LayerFactory::m_instance = new LayerFactory; |
42 | 44 |
43 LayerFactory * | 45 LayerFactory * |
72 return Layer::tr("Spectrogram"); | 74 return Layer::tr("Spectrogram"); |
73 | 75 |
74 case PeakFrequencySpectrogram: | 76 case PeakFrequencySpectrogram: |
75 // likewise | 77 // likewise |
76 return Layer::tr("Spectrogram"); | 78 return Layer::tr("Spectrogram"); |
79 | |
80 case Interval: return Layer::tr("Interval"); | |
77 | 81 |
78 default: break; | 82 default: break; |
79 } | 83 } |
80 | 84 |
81 return Layer::tr("Layer"); | 85 return Layer::tr("Layer"); |
152 | 156 |
153 if (dynamic_cast<DenseTimeValueModel *>(model)) { | 157 if (dynamic_cast<DenseTimeValueModel *>(model)) { |
154 types.insert(Spectrum); | 158 types.insert(Spectrum); |
155 } | 159 } |
156 | 160 |
161 if (dynamic_cast<IntervalModel *>(model)) { | |
162 types.insert(Interval); | |
163 } | |
164 | |
157 // We don't count TimeRuler here as it doesn't actually display | 165 // We don't count TimeRuler here as it doesn't actually display |
158 // the data, although it can be backed by any model | 166 // the data, although it can be backed by any model |
159 | 167 |
160 return types; | 168 return types; |
161 } | 169 } |
166 LayerTypeSet types; | 174 LayerTypeSet types; |
167 types.insert(TimeInstants); | 175 types.insert(TimeInstants); |
168 types.insert(TimeValues); | 176 types.insert(TimeValues); |
169 types.insert(Notes); | 177 types.insert(Notes); |
170 types.insert(Text); | 178 types.insert(Text); |
179 types.insert(Interval); | |
171 //!!! and in principle Colour3DPlot -- now that's a challenge | 180 //!!! and in principle Colour3DPlot -- now that's a challenge |
172 return types; | 181 return types; |
173 } | 182 } |
174 | 183 |
175 LayerFactory::LayerType | 184 LayerFactory::LayerType |
183 if (dynamic_cast<const NoteLayer *>(layer)) return Notes; | 192 if (dynamic_cast<const NoteLayer *>(layer)) return Notes; |
184 if (dynamic_cast<const TextLayer *>(layer)) return Text; | 193 if (dynamic_cast<const TextLayer *>(layer)) return Text; |
185 if (dynamic_cast<const Colour3DPlotLayer *>(layer)) return Colour3DPlot; | 194 if (dynamic_cast<const Colour3DPlotLayer *>(layer)) return Colour3DPlot; |
186 if (dynamic_cast<const SpectrumLayer *>(layer)) return Spectrum; | 195 if (dynamic_cast<const SpectrumLayer *>(layer)) return Spectrum; |
187 if (dynamic_cast<const SliceLayer *>(layer)) return Slice; | 196 if (dynamic_cast<const SliceLayer *>(layer)) return Slice; |
197 if (dynamic_cast<const IntervalLayer *>(layer)) return Interval; | |
188 return UnknownLayer; | 198 return UnknownLayer; |
189 } | 199 } |
190 | 200 |
191 QString | 201 QString |
192 LayerFactory::getLayerIconName(LayerType type) | 202 LayerFactory::getLayerIconName(LayerType type) |
200 case Notes: return "notes"; | 210 case Notes: return "notes"; |
201 case Text: return "text"; | 211 case Text: return "text"; |
202 case Colour3DPlot: return "colour3d"; | 212 case Colour3DPlot: return "colour3d"; |
203 case Spectrum: return "spectrum"; | 213 case Spectrum: return "spectrum"; |
204 case Slice: return "spectrum"; | 214 case Slice: return "spectrum"; |
215 case Interval: return "interval"; | |
205 default: return "unknown"; | 216 default: return "unknown"; |
206 } | 217 } |
207 } | 218 } |
208 | 219 |
209 QString | 220 QString |
218 case Notes: return "notes"; | 229 case Notes: return "notes"; |
219 case Text: return "text"; | 230 case Text: return "text"; |
220 case Colour3DPlot: return "colour3dplot"; | 231 case Colour3DPlot: return "colour3dplot"; |
221 case Spectrum: return "spectrum"; | 232 case Spectrum: return "spectrum"; |
222 case Slice: return "slice"; | 233 case Slice: return "slice"; |
234 case Interval: return "interval"; | |
223 default: return "unknown"; | 235 default: return "unknown"; |
224 } | 236 } |
225 } | 237 } |
226 | 238 |
227 LayerFactory::LayerType | 239 LayerFactory::LayerType |
235 if (name == "notes") return Notes; | 247 if (name == "notes") return Notes; |
236 if (name == "text") return Text; | 248 if (name == "text") return Text; |
237 if (name == "colour3dplot") return Colour3DPlot; | 249 if (name == "colour3dplot") return Colour3DPlot; |
238 if (name == "spectrum") return Spectrum; | 250 if (name == "spectrum") return Spectrum; |
239 if (name == "slice") return Slice; | 251 if (name == "slice") return Slice; |
252 if (name == "interval") return Interval; | |
240 return UnknownLayer; | 253 return UnknownLayer; |
241 } | 254 } |
242 | 255 |
243 void | 256 void |
244 LayerFactory::setModel(Layer *layer, Model *model) | 257 LayerFactory::setModel(Layer *layer, Model *model) |
279 if (trySetModel<SpectrumLayer, DenseTimeValueModel>(layer, model)) | 292 if (trySetModel<SpectrumLayer, DenseTimeValueModel>(layer, model)) |
280 return; | 293 return; |
281 | 294 |
282 // if (trySetModel<SliceLayer, DenseThreeDimensionalModel>(layer, model)) | 295 // if (trySetModel<SliceLayer, DenseThreeDimensionalModel>(layer, model)) |
283 // return; | 296 // return; |
297 | |
298 if (trySetModel<IntervalLayer, IntervalModel>(layer, model)) | |
299 return; | |
284 } | 300 } |
285 | 301 |
286 Model * | 302 Model * |
287 LayerFactory::createEmptyModel(LayerType layerType, Model *baseModel) | 303 LayerFactory::createEmptyModel(LayerType layerType, Model *baseModel) |
288 { | 304 { |
292 return new SparseTimeValueModel(baseModel->getSampleRate(), 1, true); | 308 return new SparseTimeValueModel(baseModel->getSampleRate(), 1, true); |
293 } else if (layerType == Notes) { | 309 } else if (layerType == Notes) { |
294 return new NoteModel(baseModel->getSampleRate(), 1, true); | 310 return new NoteModel(baseModel->getSampleRate(), 1, true); |
295 } else if (layerType == Text) { | 311 } else if (layerType == Text) { |
296 return new TextModel(baseModel->getSampleRate(), 1, true); | 312 return new TextModel(baseModel->getSampleRate(), 1, true); |
313 } else if (layerType == Interval) { | |
314 return new IntervalModel(baseModel->getSampleRate(), 1, true); | |
297 } else { | 315 } else { |
298 return 0; | 316 return 0; |
299 } | 317 } |
300 } | 318 } |
301 | 319 |
375 layer = new SpectrogramLayer(SpectrogramLayer::MelodicRange); | 393 layer = new SpectrogramLayer(SpectrogramLayer::MelodicRange); |
376 break; | 394 break; |
377 | 395 |
378 case PeakFrequencySpectrogram: | 396 case PeakFrequencySpectrogram: |
379 layer = new SpectrogramLayer(SpectrogramLayer::MelodicPeaks); | 397 layer = new SpectrogramLayer(SpectrogramLayer::MelodicPeaks); |
398 break; | |
399 | |
400 case Interval: | |
401 layer = new IntervalLayer; | |
380 break; | 402 break; |
381 | 403 |
382 default: break; | 404 default: break; |
383 } | 405 } |
384 | 406 |