changeset 120:8ed567d30e34

Use a "shadow layer" for waveform in main pane -- not sure this is an improvement actually, but it does give us options
author Chris Cannam
date Wed, 08 Jan 2014 17:48:09 +0000
parents 925fa585e9e4
children f7b2978d1d65
files .hgsubstate src/Analyser.cpp src/MainWindow.cpp
diffstat 3 files changed, 21 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/.hgsubstate	Wed Jan 08 13:42:12 2014 +0000
+++ b/.hgsubstate	Wed Jan 08 17:48:09 2014 +0000
@@ -2,4 +2,4 @@
 3c5adc4a864fa75e5b1e67c260b77541aaa4f1f6 sv-dependency-builds
 65b75e23bbd5f36fcc1bbc9073bbc12bddd34a78 svapp
 fe4772d113863a1654531f025e58dcf68e44922b svcore
-1c4bbf8952bc1437752f9b7eb6fc1401329a8131 svgui
+def489f5ce92bc62d0b16af676566087248f219a svgui
--- a/src/Analyser.cpp	Wed Jan 08 13:42:12 2014 +0000
+++ b/src/Analyser.cpp	Wed Jan 08 17:48:09 2014 +0000
@@ -26,6 +26,7 @@
 #include "layer/TimeValueLayer.h"
 #include "layer/NoteLayer.h"
 #include "layer/FlexiNoteLayer.h"
+#include "layer/WaveformLayer.h"
 #include "layer/ColourDatabase.h"
 #include "layer/LayerFactory.h"
 
@@ -69,15 +70,26 @@
     QString f0out = "smoothedpitchtrack";
     QString noteout = "notes";
 
-    // We don't want a waveform in the main pane. We must have a
-    // main-model layer of some sort, but the layers created by
-    // transforms are derived layers, so we'll create a time ruler for
-    // the main-model layer. It could subsequently be hidden if we
-    // didn't want it
+    // We need at least one main-model layer (time ruler, waveform or
+    // what have you). It could be hidden if we don't want to see it
+    // but it must exist.
 
     m_document->addLayerToView
 	(m_pane, m_document->createMainModelLayer(LayerFactory::TimeRuler));
 
+    // This waveform layer is just a shadow, light grey and taking up
+    // little space at the bottom
+
+    WaveformLayer *waveform = qobject_cast<WaveformLayer *>
+        (m_document->createMainModelLayer(LayerFactory::Waveform));
+
+    waveform->setMiddleLineHeight(0.9);
+    waveform->setShowMeans(false); // too small & pale for this
+    waveform->setBaseColour
+        (ColourDatabase::getInstance()->getColourIndex(tr("Grey")));
+
+    m_document->addLayerToView(m_pane, waveform);
+
     Transforms transforms;
     
     TransformFactory *tf = TransformFactory::getInstance();
--- a/src/MainWindow.cpp	Wed Jan 08 13:42:12 2014 +0000
+++ b/src/MainWindow.cpp	Wed Jan 08 17:48:09 2014 +0000
@@ -107,6 +107,7 @@
     cdb->addColour(Qt::darkGreen, tr("Green"));
     cdb->addColour(QColor(200, 50, 255), tr("Purple"));
     cdb->addColour(QColor(255, 150, 50), tr("Orange"));
+    cdb->addColour(QColor(180, 180, 180), tr("Grey"));
     cdb->setUseDarkBackground(cdb->addColour(Qt::white, tr("White")), true);
     cdb->setUseDarkBackground(cdb->addColour(Qt::red, tr("Bright Red")), true);
     cdb->setUseDarkBackground(cdb->addColour(QColor(30, 150, 255), tr("Bright Blue")), true);
@@ -155,8 +156,8 @@
     scroll->setFrameShape(QFrame::NoFrame);
 
     // We have a pane stack: it comes with the territory. However, we
-    // have a fixed and known number of panes in it (e.g. 1) -- it
-    // isn't variable
+    // have a fixed and known number of panes in it -- it isn't
+    // variable
     m_paneStack->setLayoutStyle(PaneStack::NoPropertyStacks);
     scroll->setWidget(m_paneStack);
 
@@ -1499,17 +1500,6 @@
             Pane *pane = m_paneStack->getCurrentPane();
             if (!pane) {
                 pane = m_paneStack->addPane();
-
-                //!!! ugly. a waveform "shadow layer" might be nicer
-                Pane *p2 = m_paneStack->addPane();
-                p2->setFixedHeight(60);
-                m_document->addLayerToView
-                    (p2,
-                     m_document->createMainModelLayer(LayerFactory::TimeRuler));
-                m_document->addLayerToView
-                    (p2,
-                     m_document->createMainModelLayer(LayerFactory::Waveform));
-                m_paneStack->sizePanesEqually();
             }
             if (pane) {
                 m_analyser->newFileLoaded