diff options
author | Daniel Schürmann <daschuer@mixxx.org> | 2019-01-10 23:47:15 +0100 |
---|---|---|
committer | Daniel Schürmann <daschuer@mixxx.org> | 2019-01-10 23:47:15 +0100 |
commit | 9e6e6634defb00e7c8181073a3c9118816489a4a (patch) | |
tree | 1e040b6a57b9bde2572eefddf5406552ed2536be /src/waveform/renderers | |
parent | 1c0346517d810cd6d7aa0732494fec6614f4c141 (diff) | |
parent | 47561860c38ae96d99b40f7505059b7dc2f30d35 (diff) |
Merge remote-tracking branch 'upstream/master' into rate_ratio
Conflicts:
src/engine/controls/bpmcontrol.cpp
src/engine/controls/keycontrol.cpp
src/engine/sync/synccontrol.cpp
src/widget/wnumberrate.cpp
Diffstat (limited to 'src/waveform/renderers')
-rw-r--r-- | src/waveform/renderers/waveformmark.cpp | 6 | ||||
-rw-r--r-- | src/waveform/renderers/waveformmark.h | 6 | ||||
-rw-r--r-- | src/waveform/renderers/waveformmarkset.cpp | 2 | ||||
-rw-r--r-- | src/waveform/renderers/waveformrendererendoftrack.cpp | 91 | ||||
-rw-r--r-- | src/waveform/renderers/waveformrendererendoftrack.h | 6 | ||||
-rw-r--r-- | src/waveform/renderers/waveformwidgetrenderer.cpp | 8 | ||||
-rw-r--r-- | src/waveform/renderers/waveformwidgetrenderer.h | 8 |
7 files changed, 34 insertions, 93 deletions
diff --git a/src/waveform/renderers/waveformmark.cpp b/src/waveform/renderers/waveformmark.cpp index afa057153d..1bebe75323 100644 --- a/src/waveform/renderers/waveformmark.cpp +++ b/src/waveform/renderers/waveformmark.cpp @@ -32,9 +32,3 @@ WaveformMark::WaveformMark(const QString& group, } m_properties = WaveformMarkProperties(node, context, signalColors, hotCue); } - - -void WaveformMark::connectSamplePositionChanged(const QObject *obj, const char *slt) const { - m_pPointCos->connectValueChanged(obj, slt, Qt::AutoConnection); -} - diff --git a/src/waveform/renderers/waveformmark.h b/src/waveform/renderers/waveformmark.h index 76f99d7d05..2ab5e3091e 100644 --- a/src/waveform/renderers/waveformmark.h +++ b/src/waveform/renderers/waveformmark.h @@ -47,7 +47,11 @@ class WaveformMark { //The m_pPointCos related function bool isValid() const { return m_pPointCos && m_pPointCos->valid(); } - void connectSamplePositionChanged(const QObject *, const char *) const; + + template <typename Receiver, typename Slot> + void connectSamplePositionChanged(Receiver receiver, Slot slot) const { + m_pPointCos->connectValueChanged(receiver, slot, Qt::AutoConnection); + }; double getSamplePosition() const { return m_pPointCos->get(); } QString getItem() const { return m_pPointCos->getKey().item; } diff --git a/src/waveform/renderers/waveformmarkset.cpp b/src/waveform/renderers/waveformmarkset.cpp index f3c7028e37..3865930a7d 100644 --- a/src/waveform/renderers/waveformmarkset.cpp +++ b/src/waveform/renderers/waveformmarkset.cpp @@ -2,7 +2,7 @@ #include <QtDebug> #include "waveformmarkset.h" -#include "engine/cuecontrol.h" +#include "engine/controls/cuecontrol.h" #include "control/controlobject.h" #include "util/memory.h" diff --git a/src/waveform/renderers/waveformrendererendoftrack.cpp b/src/waveform/renderers/waveformrendererendoftrack.cpp index 18550005ee..1058e04818 100644 --- a/src/waveform/renderers/waveformrendererendoftrack.cpp +++ b/src/waveform/renderers/waveformrendererendoftrack.cpp @@ -13,25 +13,21 @@ #include "util/timer.h" +namespace { + +constexpr int kBlinkingPeriodMillis = 1000; + +} // anonymous namespace + WaveformRendererEndOfTrack::WaveformRendererEndOfTrack( WaveformWidgetRenderer* waveformWidgetRenderer) : WaveformRendererAbstract(waveformWidgetRenderer), - m_pEndOfTrackControl(NULL), - m_endOfTrackEnabled(false), - m_pTrackSampleRate(NULL), - m_pPlayControl(NULL), - m_pLoopControl(NULL), - m_pTimeRemainingControl(NULL), - m_color(200, 25, 20), - m_remainingTimeTriggerSeconds(30), - m_blinkingPeriodMillis(1000) { + m_pEndOfTrackControl(nullptr), + m_pTimeRemainingControl(nullptr) { } WaveformRendererEndOfTrack::~WaveformRendererEndOfTrack() { delete m_pEndOfTrackControl; - delete m_pTrackSampleRate; - delete m_pPlayControl; - delete m_pLoopControl; delete m_pTimeRemainingControl; } @@ -40,15 +36,6 @@ bool WaveformRendererEndOfTrack::init() { m_pEndOfTrackControl = new ControlProxy( m_waveformRenderer->getGroup(), "end_of_track"); - m_pEndOfTrackControl->slotSet(0.); - m_endOfTrackEnabled = false; - - m_pTrackSampleRate = new ControlProxy( - m_waveformRenderer->getGroup(), "track_samplerate"); - m_pPlayControl = new ControlProxy( - m_waveformRenderer->getGroup(), "play"); - m_pLoopControl = new ControlProxy( - m_waveformRenderer->getGroup(), "loop_enabled"); m_pTimeRemainingControl = new ControlProxy( m_waveformRenderer->getGroup(), "time_remaining"); return true; @@ -71,73 +58,35 @@ void WaveformRendererEndOfTrack::onResize() { void WaveformRendererEndOfTrack::draw(QPainter* painter, QPaintEvent* /*event*/) { - - const double trackSamples = m_waveformRenderer->getTrackSamples(); - const double sampleRate = m_pTrackSampleRate->get(); - /*qDebug() << "WaveformRendererEndOfTrack :: " - << "trackSamples" << trackSamples - << "sampleRate" << sampleRate - << "m_playControl->get()" << m_playControl->get() - << "m_loopControl->get()" << m_loopControl->get();*/ - - m_endOfTrackEnabled = m_pEndOfTrackControl->toBool(); - m_remainingTimeTriggerSeconds = WaveformWidgetFactory::instance()->getEndOfTrackWarningTime(); - // special case of track not long enough - const double trackLength = 0.5 * trackSamples / sampleRate; - - if (sampleRate < 0.1 //not ready - || trackSamples < 0.1 //not ready - || !m_pPlayControl->toBool() //not playing - || m_pLoopControl->toBool() //in loop - || trackLength <= m_remainingTimeTriggerSeconds //track too short - ) { - if (m_endOfTrackEnabled) { - m_pEndOfTrackControl->set(0.0); - m_endOfTrackEnabled = false; - } - return; - } - - const double remainingTime = m_pTimeRemainingControl->get(); - - if (remainingTime > m_remainingTimeTriggerSeconds) { - if (m_endOfTrackEnabled) { - m_pEndOfTrackControl->set(0.); - m_endOfTrackEnabled = false; - } + if (!m_pEndOfTrackControl->toBool()) { return; } - // end of track is on - if (!m_endOfTrackEnabled) { - m_pEndOfTrackControl->set(1.); - m_endOfTrackEnabled = true; - - //qDebug() << "EndOfTrack ON"; - } - //ScopedTimer t("WaveformRendererEndOfTrack::draw"); - const int elapsed = m_timer.elapsed().toIntegerMillis() % m_blinkingPeriodMillis; + const int elapsed = m_timer.elapsed().toIntegerMillis() % kBlinkingPeriodMillis; - const double blickIntensity = (double)(2 * abs(elapsed - m_blinkingPeriodMillis/2)) / - m_blinkingPeriodMillis; - const double criticalIntensity = (m_remainingTimeTriggerSeconds - remainingTime) / - m_remainingTimeTriggerSeconds; + const double blinkIntensity = (double)(2 * abs(elapsed - kBlinkingPeriodMillis / 2)) / + kBlinkingPeriodMillis; + + const double remainingTime = m_pTimeRemainingControl->get(); + const double remainingTimeTriggerSeconds = WaveformWidgetFactory::instance()->getEndOfTrackWarningTime(); + const double criticalIntensity = (remainingTimeTriggerSeconds - remainingTime) / + remainingTimeTriggerSeconds; painter->save(); painter->resetTransform(); - painter->setOpacity(0.5 * blickIntensity); + painter->setOpacity(0.5 * blinkIntensity); painter->setPen(m_pen); painter->drawRect(1, 1, m_waveformRenderer->getWidth() - 2, m_waveformRenderer->getHeight() - 2); - painter->setOpacity(0.5 * 0.25 * criticalIntensity * blickIntensity); + painter->setOpacity(0.5 * 0.25 * criticalIntensity * blinkIntensity); painter->setPen(QPen(Qt::transparent)); painter->setBrush(m_color); painter->drawRects(m_backRects); // This is significant slower - //painter->setOpacity(0.5 * criticalIntensity * blickIntensity); + //painter->setOpacity(0.5 * criticalIntensity * blinkIntensity); //painter->fillRect(m_waveformRenderer->getWidth()/2, 1, // m_waveformRenderer->getWidth() - 2, m_waveformRenderer->getHeight() - 2, // m_gradient); diff --git a/src/waveform/renderers/waveformrendererendoftrack.h b/src/waveform/renderers/waveformrendererendoftrack.h index 34b00d8fa5..a085d94d83 100644 --- a/src/waveform/renderers/waveformrendererendoftrack.h +++ b/src/waveform/renderers/waveformrendererendoftrack.h @@ -30,16 +30,10 @@ class WaveformRendererEndOfTrack : public WaveformRendererAbstract { void generateBackRects(); ControlProxy* m_pEndOfTrackControl; - bool m_endOfTrackEnabled; - ControlProxy* m_pTrackSampleRate; - ControlProxy* m_pPlayControl; - ControlProxy* m_pLoopControl; ControlProxy* m_pTimeRemainingControl; QColor m_color; PerformanceTimer m_timer; - int m_remainingTimeTriggerSeconds; - int m_blinkingPeriodMillis; QVector<QRect> m_backRects; QPen m_pen; diff --git a/src/waveform/renderers/waveformwidgetrenderer.cpp b/src/waveform/renderers/waveformwidgetrenderer.cpp index 6a2dab5df2..abcef0e2cc 100644 --- a/src/waveform/renderers/waveformwidgetrenderer.cpp +++ b/src/waveform/renderers/waveformwidgetrenderer.cpp @@ -9,9 +9,9 @@ #include "util/math.h" #include "util/performancetimer.h" -const int WaveformWidgetRenderer::s_waveformMinZoom = 1; -const int WaveformWidgetRenderer::s_waveformMaxZoom = 10; -const int WaveformWidgetRenderer::s_waveformDefaultZoom = 3; +const double WaveformWidgetRenderer::s_waveformMinZoom = 1.0; +const double WaveformWidgetRenderer::s_waveformMaxZoom = 10.0; +const double WaveformWidgetRenderer::s_waveformDefaultZoom = 3.0; const double WaveformWidgetRenderer::s_defaultPlayMarkerPosition = 0.5; WaveformWidgetRenderer::WaveformWidgetRenderer(const char* group) @@ -270,7 +270,7 @@ void WaveformWidgetRenderer::setup( } } -void WaveformWidgetRenderer::setZoom(int zoom) { +void WaveformWidgetRenderer::setZoom(double zoom) { //qDebug() << "WaveformWidgetRenderer::setZoom" << zoom; m_zoomFactor = math_clamp<double>(zoom, s_waveformMinZoom, s_waveformMaxZoom); } diff --git a/src/waveform/renderers/waveformwidgetrenderer.h b/src/waveform/renderers/waveformwidgetrenderer.h index f87ccfb868..699d391af8 100644 --- a/src/waveform/renderers/waveformwidgetrenderer.h +++ b/src/waveform/renderers/waveformwidgetrenderer.h @@ -21,9 +21,9 @@ class VSyncThread; class WaveformWidgetRenderer { public: - static const int s_waveformMinZoom; - static const int s_waveformMaxZoom; - static const int s_waveformDefaultZoom; + static const double s_waveformMinZoom; + static const double s_waveformMaxZoom; + static const double s_waveformDefaultZoom; static const double s_defaultPlayMarkerPosition; public: @@ -43,7 +43,7 @@ class WaveformWidgetRenderer { double getFirstDisplayedPosition() const { return m_firstDisplayedPosition;} double getLastDisplayedPosition() const { return m_lastDisplayedPosition;} - void setZoom(int zoom); + void setZoom(double zoom); void setDisplayBeatGrid(bool set); void setDisplayBeatGridAlpha(int alpha); |