comparison src/Analyser.cpp @ 128:06f9caf5928d

Initial hack for switching visibility & audibility of layers on and off. This doesn't work well.
author Chris Cannam
date Thu, 09 Jan 2014 14:05:20 +0000
parents 8ed567d30e34
children 55fac28b9193
comparison
equal deleted inserted replaced
127:5d60f5102baf 128:06f9caf5928d
33 #include <QSettings> 33 #include <QSettings>
34 34
35 Analyser::Analyser() : 35 Analyser::Analyser() :
36 m_document(0), 36 m_document(0),
37 m_fileModel(0), 37 m_fileModel(0),
38 m_pane(0), 38 m_pane(0)
39 m_flexiNoteLayer(0)
40 { 39 {
41 QSettings settings; 40 QSettings settings;
42 settings.beginGroup("LayerDefaults"); 41 settings.beginGroup("LayerDefaults");
43 settings.setValue 42 settings.setValue
44 ("timevalues", 43 ("timevalues",
85 84
86 waveform->setMiddleLineHeight(0.9); 85 waveform->setMiddleLineHeight(0.9);
87 waveform->setShowMeans(false); // too small & pale for this 86 waveform->setShowMeans(false); // too small & pale for this
88 waveform->setBaseColour 87 waveform->setBaseColour
89 (ColourDatabase::getInstance()->getColourIndex(tr("Grey"))); 88 (ColourDatabase::getInstance()->getColourIndex(tr("Grey")));
90 89
91 m_document->addLayerToView(m_pane, waveform); 90 m_document->addLayerToView(m_pane, waveform);
91
92 m_layers[Audio] = waveform;
92 93
93 Transforms transforms; 94 Transforms transforms;
94 95
95 TransformFactory *tf = TransformFactory::getInstance(); 96 TransformFactory *tf = TransformFactory::getInstance();
96 if (!tf->haveTransform(base + f0out) || !tf->haveTransform(base + noteout)) { 97 if (!tf->haveTransform(base + f0out) || !tf->haveTransform(base + noteout)) {
112 std::vector<Layer *> layers = 113 std::vector<Layer *> layers =
113 m_document->createDerivedLayers(transforms, m_fileModel); 114 m_document->createDerivedLayers(transforms, m_fileModel);
114 115
115 if (!layers.empty()) { 116 if (!layers.empty()) {
116 117
117 ColourDatabase *cdb = ColourDatabase::getInstance();
118
119 for (int i = 0; i < (int)layers.size(); ++i) { 118 for (int i = 0; i < (int)layers.size(); ++i) {
120 119
121 SingleColourLayer *scl = dynamic_cast<SingleColourLayer *> 120 FlexiNoteLayer *f = qobject_cast<FlexiNoteLayer *>(layers[i]);
122 (layers[i]); 121 TimeValueLayer *t = qobject_cast<TimeValueLayer *>(layers[i]);
123 122
124 if (scl) { 123 if (f) m_layers[Notes] = f;
125 if (i == 0) { 124 if (t) m_layers[PitchTrack] = t;
126 scl->setBaseColour(cdb->getColourIndex(tr("Black")));
127 } else {
128 scl->setBaseColour(cdb->getColourIndex(tr("Bright Blue")));
129 }
130 }
131 125
132 m_document->addLayerToView(m_pane, layers[i]); 126 m_document->addLayerToView(m_pane, layers[i]);
133 } 127 }
134 128
135 m_flexiNoteLayer = dynamic_cast<FlexiNoteLayer *> 129 ColourDatabase *cdb = ColourDatabase::getInstance();
136 (layers[layers.size()-1]); 130
137 paneStack->setCurrentLayer(m_pane, m_flexiNoteLayer); 131 TimeValueLayer *pitchLayer =
138 } 132 qobject_cast<TimeValueLayer *>(m_layers[PitchTrack]);
133 if (pitchLayer) {
134 pitchLayer->setBaseColour(cdb->getColourIndex(tr("Black")));
135 paneStack->setCurrentLayer(m_pane, pitchLayer);
136 }
137
138 FlexiNoteLayer *flexiNoteLayer =
139 qobject_cast<FlexiNoteLayer *>(m_layers[Notes]);
140 if (flexiNoteLayer) {
141 flexiNoteLayer->setBaseColour(cdb->getColourIndex(tr("Bright Blue")));
142 paneStack->setCurrentLayer(m_pane, flexiNoteLayer);
143 }
144 }
145
146 emit layersChanged();
139 } 147 }
140 148
141 void 149 void
142 Analyser::setIntelligentActions(bool on) 150 Analyser::setIntelligentActions(bool on)
143 { 151 {
144 std::cerr << "toggle setIntelligentActions " << on << std::endl; 152 std::cerr << "toggle setIntelligentActions " << on << std::endl;
145 if (m_flexiNoteLayer) { 153
146 m_flexiNoteLayer->setIntelligentActions(on); 154 FlexiNoteLayer *flexiNoteLayer =
147 } 155 qobject_cast<FlexiNoteLayer *>(m_layers[Notes]);
148 } 156 if (flexiNoteLayer) {
157 flexiNoteLayer->setIntelligentActions(on);
158 }
159 }
160
161 bool
162 Analyser::isVisible(Component c) const
163 {
164 if (m_layers[c]) {
165 return !m_layers[c]->isLayerDormant(m_pane);
166 } else {
167 return false;
168 }
169 }
170
171 void
172 Analyser::setVisible(Component c, bool v)
173 {
174 if (m_layers[c]) {
175 m_layers[c]->setLayerDormant(m_pane, !v);
176 m_pane->layerParametersChanged();
177 }
178 }
179
180 bool
181 Analyser::isAudible(Component c) const
182 {
183 if (m_layers[c]) {
184
185 PlayParameters *params = m_layers[c]->getPlayParameters();
186 if (!params) return false;
187
188 return params->isPlayAudible();
189 } else {
190 return false;
191 }
192 }
193
194 void
195 Analyser::setAudible(Component c, bool a)
196 {
197 if (m_layers[c]) {
198
199 PlayParameters *params = m_layers[c]->getPlayParameters();
200 if (!params) return;
201
202 params->setPlayAudible(a);
203 }
204 }
205