summaryrefslogtreecommitdiffstats
path: root/src/waveform/renderers
diff options
context:
space:
mode:
authorDaniel Schürmann <daschuer@mixxx.org>2019-01-10 23:47:15 +0100
committerDaniel Schürmann <daschuer@mixxx.org>2019-01-10 23:47:15 +0100
commit9e6e6634defb00e7c8181073a3c9118816489a4a (patch)
tree1e040b6a57b9bde2572eefddf5406552ed2536be /src/waveform/renderers
parent1c0346517d810cd6d7aa0732494fec6614f4c141 (diff)
parent47561860c38ae96d99b40f7505059b7dc2f30d35 (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.cpp6
-rw-r--r--src/waveform/renderers/waveformmark.h6
-rw-r--r--src/waveform/renderers/waveformmarkset.cpp2
-rw-r--r--src/waveform/renderers/waveformrendererendoftrack.cpp91
-rw-r--r--src/waveform/renderers/waveformrendererendoftrack.h6
-rw-r--r--src/waveform/renderers/waveformwidgetrenderer.cpp8
-rw-r--r--src/waveform/renderers/waveformwidgetrenderer.h8
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);