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