diff --git a/plot.cpp b/plot.cpp index 4d2d21b..9971906 100644 --- a/plot.cpp +++ b/plot.cpp @@ -19,11 +19,21 @@ #include "plot.h" +Plot::Plot(std::shared_ptr src) : sampleSource(src) +{ + +} + bool Plot::mouseEvent(QEvent::Type type, QMouseEvent event) { } +std::shared_ptr Plot::output() +{ + return sampleSource; +} + void Plot::paintBack(QPainter &painter, QRect &rect, range_t sampleRange) { painter.save(); diff --git a/plot.h b/plot.h index 764c0ea..87da417 100644 --- a/plot.h +++ b/plot.h @@ -22,6 +22,7 @@ #include #include #include +#include "abstractsamplesource.h" #include "util.h" class Plot : public QObject @@ -29,7 +30,9 @@ class Plot : public QObject Q_OBJECT public: + Plot(std::shared_ptr src); virtual bool mouseEvent(QEvent::Type type, QMouseEvent event); + virtual std::shared_ptr output(); virtual void paintBack(QPainter &painter, QRect &rect, range_t sampleRange); virtual void paintMid(QPainter &painter, QRect &rect, range_t sampleRange); virtual void paintFront(QPainter &painter, QRect &rect, range_t sampleRange); @@ -41,6 +44,8 @@ signals: protected: void setHeight(int height) { _height = height; }; + std::shared_ptr sampleSource; + private: // TODO: don't hardcode this int _height = 200; diff --git a/plotview.cpp b/plotview.cpp index df709e8..ee33d95 100644 --- a/plotview.cpp +++ b/plotview.cpp @@ -39,7 +39,7 @@ PlotView::PlotView(InputSource *input) : cursors(this), tuner(this), viewRange({ connect(&cursors, SIGNAL(cursorsMoved()), this, SLOT(cursorsMoved())); connect(&tuner, &Tuner::tunerMoved, this, &PlotView::tunerMoved); - spectrogramPlot = new SpectrogramPlot(mainSampleSource); + spectrogramPlot = new SpectrogramPlot(std::shared_ptr>>(mainSampleSource)); iqPlot = createIQPlot(mainSampleSource); auto quadDemodPlot = createQuadratureDemodPlot(static_cast>*>(iqPlot->source().get())); diff --git a/spectrogramplot.cpp b/spectrogramplot.cpp index 7fbad63..1f33904 100644 --- a/spectrogramplot.cpp +++ b/spectrogramplot.cpp @@ -29,9 +29,8 @@ #include "util.h" -SpectrogramPlot::SpectrogramPlot(SampleSource> *src) +SpectrogramPlot::SpectrogramPlot(std::shared_ptr>> src) : Plot(src), inputSource(src) { - inputSource = src; sampleRate = 8000000; setFFTSize(512); zoomLevel = 0; diff --git a/spectrogramplot.h b/spectrogramplot.h index 4a067c0..f405d42 100644 --- a/spectrogramplot.h +++ b/spectrogramplot.h @@ -37,7 +37,7 @@ class SpectrogramPlot : public Plot Q_OBJECT public: - SpectrogramPlot(SampleSource> *src); + SpectrogramPlot(std::shared_ptr>> src); void paintMid(QPainter &painter, QRect &rect, range_t sampleRange); @@ -46,7 +46,7 @@ public: int getStride(); off_t lineToSample(off_t line); - SampleSource> *inputSource = nullptr; + std::shared_ptr>> inputSource; public slots: void setSampleRate(int rate); diff --git a/traceplot.cpp b/traceplot.cpp index c88349a..6718e97 100644 --- a/traceplot.cpp +++ b/traceplot.cpp @@ -23,7 +23,7 @@ #include "samplesource.h" #include "traceplot.h" -TracePlot::TracePlot(std::shared_ptr source) : sampleSource(source) { +TracePlot::TracePlot(std::shared_ptr source) : Plot(source) { connect(this, &TracePlot::imageReady, this, &TracePlot::handleImage); } diff --git a/traceplot.h b/traceplot.h index c277f41..da36932 100644 --- a/traceplot.h +++ b/traceplot.h @@ -42,7 +42,6 @@ public slots: private: QSet tasks; const int tileWidth = 1000; - std::shared_ptr sampleSource; QPixmap getTile(off_t tileID, off_t sampleCount); void drawTile(QString key, const QRect &rect, range_t sampleRange);