Mercurial > hg > tony
diff 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 |
line wrap: on
line diff
--- a/src/Analyser.cpp Thu Jan 09 14:00:52 2014 +0000 +++ b/src/Analyser.cpp Thu Jan 09 14:05:20 2014 +0000 @@ -35,8 +35,7 @@ Analyser::Analyser() : m_document(0), m_fileModel(0), - m_pane(0), - m_flexiNoteLayer(0) + m_pane(0) { QSettings settings; settings.beginGroup("LayerDefaults"); @@ -87,8 +86,10 @@ waveform->setShowMeans(false); // too small & pale for this waveform->setBaseColour (ColourDatabase::getInstance()->getColourIndex(tr("Grey"))); + + m_document->addLayerToView(m_pane, waveform); - m_document->addLayerToView(m_pane, waveform); + m_layers[Audio] = waveform; Transforms transforms; @@ -114,35 +115,91 @@ if (!layers.empty()) { - ColourDatabase *cdb = ColourDatabase::getInstance(); - for (int i = 0; i < (int)layers.size(); ++i) { - SingleColourLayer *scl = dynamic_cast<SingleColourLayer *> - (layers[i]); + FlexiNoteLayer *f = qobject_cast<FlexiNoteLayer *>(layers[i]); + TimeValueLayer *t = qobject_cast<TimeValueLayer *>(layers[i]); - if (scl) { - if (i == 0) { - scl->setBaseColour(cdb->getColourIndex(tr("Black"))); - } else { - scl->setBaseColour(cdb->getColourIndex(tr("Bright Blue"))); - } - } + if (f) m_layers[Notes] = f; + if (t) m_layers[PitchTrack] = t; m_document->addLayerToView(m_pane, layers[i]); } + + ColourDatabase *cdb = ColourDatabase::getInstance(); - m_flexiNoteLayer = dynamic_cast<FlexiNoteLayer *> - (layers[layers.size()-1]); - paneStack->setCurrentLayer(m_pane, m_flexiNoteLayer); + TimeValueLayer *pitchLayer = + qobject_cast<TimeValueLayer *>(m_layers[PitchTrack]); + if (pitchLayer) { + pitchLayer->setBaseColour(cdb->getColourIndex(tr("Black"))); + paneStack->setCurrentLayer(m_pane, pitchLayer); + } + + FlexiNoteLayer *flexiNoteLayer = + qobject_cast<FlexiNoteLayer *>(m_layers[Notes]); + if (flexiNoteLayer) { + flexiNoteLayer->setBaseColour(cdb->getColourIndex(tr("Bright Blue"))); + paneStack->setCurrentLayer(m_pane, flexiNoteLayer); + } } + + emit layersChanged(); } void Analyser::setIntelligentActions(bool on) { std::cerr << "toggle setIntelligentActions " << on << std::endl; - if (m_flexiNoteLayer) { - m_flexiNoteLayer->setIntelligentActions(on); + + FlexiNoteLayer *flexiNoteLayer = + qobject_cast<FlexiNoteLayer *>(m_layers[Notes]); + if (flexiNoteLayer) { + flexiNoteLayer->setIntelligentActions(on); } } + +bool +Analyser::isVisible(Component c) const +{ + if (m_layers[c]) { + return !m_layers[c]->isLayerDormant(m_pane); + } else { + return false; + } +} + +void +Analyser::setVisible(Component c, bool v) +{ + if (m_layers[c]) { + m_layers[c]->setLayerDormant(m_pane, !v); + m_pane->layerParametersChanged(); + } +} + +bool +Analyser::isAudible(Component c) const +{ + if (m_layers[c]) { + + PlayParameters *params = m_layers[c]->getPlayParameters(); + if (!params) return false; + + return params->isPlayAudible(); + } else { + return false; + } +} + +void +Analyser::setAudible(Component c, bool a) +{ + if (m_layers[c]) { + + PlayParameters *params = m_layers[c]->getPlayParameters(); + if (!params) return; + + params->setPlayAudible(a); + } +} +