Mercurial > hg > svgui
comparison layer/LayerFactory.cpp @ 303:46faec7aae12
* Phase 1 of an image layer.
author | Chris Cannam |
---|---|
date | Thu, 04 Oct 2007 16:34:11 +0000 |
parents | 447cb52adc6b |
children | 4f4f38a11cd2 |
comparison
equal
deleted
inserted
replaced
302:e9549ea3f825 | 303:46faec7aae12 |
---|---|
20 #include "TimeRulerLayer.h" | 20 #include "TimeRulerLayer.h" |
21 #include "TimeInstantLayer.h" | 21 #include "TimeInstantLayer.h" |
22 #include "TimeValueLayer.h" | 22 #include "TimeValueLayer.h" |
23 #include "NoteLayer.h" | 23 #include "NoteLayer.h" |
24 #include "TextLayer.h" | 24 #include "TextLayer.h" |
25 #include "ImageLayer.h" | |
25 #include "Colour3DPlotLayer.h" | 26 #include "Colour3DPlotLayer.h" |
26 #include "SpectrumLayer.h" | 27 #include "SpectrumLayer.h" |
27 #include "SliceLayer.h" | 28 #include "SliceLayer.h" |
28 #include "SliceableLayer.h" | 29 #include "SliceableLayer.h" |
29 | 30 |
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" |
37 #include "data/model/ImageModel.h" | |
36 #include "data/model/DenseThreeDimensionalModel.h" | 38 #include "data/model/DenseThreeDimensionalModel.h" |
37 #include "data/model/WaveFileModel.h" | 39 #include "data/model/WaveFileModel.h" |
38 #include "data/model/WritableWaveFileModel.h" | 40 #include "data/model/WritableWaveFileModel.h" |
39 | 41 |
40 LayerFactory * | 42 LayerFactory * |
59 case TimeRuler: return Layer::tr("Ruler"); | 61 case TimeRuler: return Layer::tr("Ruler"); |
60 case TimeInstants: return Layer::tr("Time Instants"); | 62 case TimeInstants: return Layer::tr("Time Instants"); |
61 case TimeValues: return Layer::tr("Time Values"); | 63 case TimeValues: return Layer::tr("Time Values"); |
62 case Notes: return Layer::tr("Notes"); | 64 case Notes: return Layer::tr("Notes"); |
63 case Text: return Layer::tr("Text"); | 65 case Text: return Layer::tr("Text"); |
66 case Image: return Layer::tr("Images"); | |
64 case Colour3DPlot: return Layer::tr("Colour 3D Plot"); | 67 case Colour3DPlot: return Layer::tr("Colour 3D Plot"); |
65 case Spectrum: return Layer::tr("Spectrum"); | 68 case Spectrum: return Layer::tr("Spectrum"); |
66 case Slice: return Layer::tr("Time Slice"); | 69 case Slice: return Layer::tr("Time Slice"); |
67 | 70 |
68 case MelodicRangeSpectrogram: | 71 case MelodicRangeSpectrogram: |
148 | 151 |
149 if (dynamic_cast<TextModel *>(model)) { | 152 if (dynamic_cast<TextModel *>(model)) { |
150 types.insert(Text); | 153 types.insert(Text); |
151 } | 154 } |
152 | 155 |
156 if (dynamic_cast<ImageModel *>(model)) { | |
157 types.insert(Image); | |
158 } | |
159 | |
153 if (dynamic_cast<DenseTimeValueModel *>(model)) { | 160 if (dynamic_cast<DenseTimeValueModel *>(model)) { |
154 types.insert(Spectrum); | 161 types.insert(Spectrum); |
155 } | 162 } |
156 | 163 |
157 // We don't count TimeRuler here as it doesn't actually display | 164 // We don't count TimeRuler here as it doesn't actually display |
166 LayerTypeSet types; | 173 LayerTypeSet types; |
167 types.insert(TimeInstants); | 174 types.insert(TimeInstants); |
168 types.insert(TimeValues); | 175 types.insert(TimeValues); |
169 types.insert(Notes); | 176 types.insert(Notes); |
170 types.insert(Text); | 177 types.insert(Text); |
178 types.insert(Image); | |
171 //!!! and in principle Colour3DPlot -- now that's a challenge | 179 //!!! and in principle Colour3DPlot -- now that's a challenge |
172 return types; | 180 return types; |
173 } | 181 } |
174 | 182 |
175 LayerFactory::LayerType | 183 LayerFactory::LayerType |
180 if (dynamic_cast<const TimeRulerLayer *>(layer)) return TimeRuler; | 188 if (dynamic_cast<const TimeRulerLayer *>(layer)) return TimeRuler; |
181 if (dynamic_cast<const TimeInstantLayer *>(layer)) return TimeInstants; | 189 if (dynamic_cast<const TimeInstantLayer *>(layer)) return TimeInstants; |
182 if (dynamic_cast<const TimeValueLayer *>(layer)) return TimeValues; | 190 if (dynamic_cast<const TimeValueLayer *>(layer)) return TimeValues; |
183 if (dynamic_cast<const NoteLayer *>(layer)) return Notes; | 191 if (dynamic_cast<const NoteLayer *>(layer)) return Notes; |
184 if (dynamic_cast<const TextLayer *>(layer)) return Text; | 192 if (dynamic_cast<const TextLayer *>(layer)) return Text; |
193 if (dynamic_cast<const ImageLayer *>(layer)) return Image; | |
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; |
188 return UnknownLayer; | 197 return UnknownLayer; |
189 } | 198 } |
197 case TimeRuler: return "timeruler"; | 206 case TimeRuler: return "timeruler"; |
198 case TimeInstants: return "instants"; | 207 case TimeInstants: return "instants"; |
199 case TimeValues: return "values"; | 208 case TimeValues: return "values"; |
200 case Notes: return "notes"; | 209 case Notes: return "notes"; |
201 case Text: return "text"; | 210 case Text: return "text"; |
211 case Image: return "image"; | |
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"; |
205 default: return "unknown"; | 215 default: return "unknown"; |
206 } | 216 } |
215 case TimeRuler: return "timeruler"; | 225 case TimeRuler: return "timeruler"; |
216 case TimeInstants: return "timeinstants"; | 226 case TimeInstants: return "timeinstants"; |
217 case TimeValues: return "timevalues"; | 227 case TimeValues: return "timevalues"; |
218 case Notes: return "notes"; | 228 case Notes: return "notes"; |
219 case Text: return "text"; | 229 case Text: return "text"; |
230 case Image: return "image"; | |
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"; |
223 default: return "unknown"; | 234 default: return "unknown"; |
224 } | 235 } |
232 if (name == "timeruler") return TimeRuler; | 243 if (name == "timeruler") return TimeRuler; |
233 if (name == "timeinstants") return TimeInstants; | 244 if (name == "timeinstants") return TimeInstants; |
234 if (name == "timevalues") return TimeValues; | 245 if (name == "timevalues") return TimeValues; |
235 if (name == "notes") return Notes; | 246 if (name == "notes") return Notes; |
236 if (name == "text") return Text; | 247 if (name == "text") return Text; |
248 if (name == "image") return Image; | |
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; |
240 return UnknownLayer; | 252 return UnknownLayer; |
241 } | 253 } |
266 | 278 |
267 if (trySetModel<NoteLayer, NoteModel>(layer, model)) | 279 if (trySetModel<NoteLayer, NoteModel>(layer, model)) |
268 return; | 280 return; |
269 | 281 |
270 if (trySetModel<TextLayer, TextModel>(layer, model)) | 282 if (trySetModel<TextLayer, TextModel>(layer, model)) |
283 return; | |
284 | |
285 if (trySetModel<ImageLayer, ImageModel>(layer, model)) | |
271 return; | 286 return; |
272 | 287 |
273 if (trySetModel<Colour3DPlotLayer, DenseThreeDimensionalModel>(layer, model)) | 288 if (trySetModel<Colour3DPlotLayer, DenseThreeDimensionalModel>(layer, model)) |
274 return; | 289 return; |
275 | 290 |
292 return new SparseTimeValueModel(baseModel->getSampleRate(), 1, true); | 307 return new SparseTimeValueModel(baseModel->getSampleRate(), 1, true); |
293 } else if (layerType == Notes) { | 308 } else if (layerType == Notes) { |
294 return new NoteModel(baseModel->getSampleRate(), 1, true); | 309 return new NoteModel(baseModel->getSampleRate(), 1, true); |
295 } else if (layerType == Text) { | 310 } else if (layerType == Text) { |
296 return new TextModel(baseModel->getSampleRate(), 1, true); | 311 return new TextModel(baseModel->getSampleRate(), 1, true); |
312 } else if (layerType == Image) { | |
313 return new ImageModel(baseModel->getSampleRate(), 1, true); | |
297 } else { | 314 } else { |
298 return 0; | 315 return 0; |
299 } | 316 } |
300 } | 317 } |
301 | 318 |
355 layer = new NoteLayer; | 372 layer = new NoteLayer; |
356 break; | 373 break; |
357 | 374 |
358 case Text: | 375 case Text: |
359 layer = new TextLayer; | 376 layer = new TextLayer; |
377 break; | |
378 | |
379 case Image: | |
380 layer = new ImageLayer; | |
360 break; | 381 break; |
361 | 382 |
362 case Colour3DPlot: | 383 case Colour3DPlot: |
363 layer = new Colour3DPlotLayer; | 384 layer = new Colour3DPlotLayer; |
364 break; | 385 break; |