Mercurial > hg > tony
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 |