diff 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
line wrap: on
line diff
--- a/layer/LayerFactory.cpp	Mon May 14 13:11:55 2007 +0000
+++ b/layer/LayerFactory.cpp	Mon May 14 13:13:14 2007 +0000
@@ -26,6 +26,7 @@
 #include "SpectrumLayer.h"
 #include "SliceLayer.h"
 #include "SliceableLayer.h"
+#include "IntervalLayer.h"
 
 #include "data/model/RangeSummarisableTimeValueModel.h"
 #include "data/model/DenseTimeValueModel.h"
@@ -36,6 +37,7 @@
 #include "data/model/DenseThreeDimensionalModel.h"
 #include "data/model/WaveFileModel.h"
 #include "data/model/WritableWaveFileModel.h"
+#include "data/model/IntervalModel.h"
 
 LayerFactory *
 LayerFactory::m_instance = new LayerFactory;
@@ -75,6 +77,8 @@
 	// likewise
 	return Layer::tr("Spectrogram");
 
+	case Interval:		return Layer::tr("Interval");
+
     default: break;
     }
 
@@ -154,6 +158,10 @@
         types.insert(Spectrum);
     }
 
+	if (dynamic_cast<IntervalModel *>(model)) {
+	types.insert(Interval);
+    }
+
     // We don't count TimeRuler here as it doesn't actually display
     // the data, although it can be backed by any model
 
@@ -168,6 +176,7 @@
     types.insert(TimeValues);
     types.insert(Notes);
     types.insert(Text);
+	types.insert(Interval);
     //!!! and in principle Colour3DPlot -- now that's a challenge
     return types;
 }
@@ -185,6 +194,7 @@
     if (dynamic_cast<const Colour3DPlotLayer *>(layer)) return Colour3DPlot;
     if (dynamic_cast<const SpectrumLayer *>(layer)) return Spectrum;
     if (dynamic_cast<const SliceLayer *>(layer)) return Slice;
+	if (dynamic_cast<const IntervalLayer *>(layer)) return Interval;
     return UnknownLayer;
 }
 
@@ -202,6 +212,7 @@
     case Colour3DPlot: return "colour3d";
     case Spectrum: return "spectrum";
     case Slice: return "spectrum";
+	case Interval: return "interval";
     default: return "unknown";
     }
 }
@@ -220,6 +231,7 @@
     case Colour3DPlot: return "colour3dplot";
     case Spectrum: return "spectrum";
     case Slice: return "slice";
+	case Interval: return "interval";
     default: return "unknown";
     }
 }
@@ -237,6 +249,7 @@
     if (name == "colour3dplot") return Colour3DPlot;
     if (name == "spectrum") return Spectrum;
     if (name == "slice") return Slice;
+	if (name == "interval") return Interval;
     return UnknownLayer;
 }
 
@@ -281,6 +294,9 @@
 
 //    if (trySetModel<SliceLayer, DenseThreeDimensionalModel>(layer, model)) 
 //        return;
+
+	if (trySetModel<IntervalLayer, IntervalModel>(layer, model))
+	return;
 }
 
 Model *
@@ -294,6 +310,8 @@
 	return new NoteModel(baseModel->getSampleRate(), 1, true);
     } else if (layerType == Text) {
 	return new TextModel(baseModel->getSampleRate(), 1, true);
+    } else if (layerType == Interval) {
+	return new IntervalModel(baseModel->getSampleRate(), 1, true);
     } else {
 	return 0;
     }
@@ -379,6 +397,10 @@
 	layer = new SpectrogramLayer(SpectrogramLayer::MelodicPeaks);
 	break;
 
+	case Interval: 
+	layer = new IntervalLayer;
+	break;
+
     default: break;
     }