From 5a7303035c4744f9b54d3acae210489f48b46c63 Mon Sep 17 00:00:00 2001 From: Hannes Matuschek Date: Mon, 1 Dec 2014 12:17:03 +0100 Subject: [PATCH 1/2] Merge. --- src/gui/waterfallview.cc | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/gui/waterfallview.cc b/src/gui/waterfallview.cc index 8913338..0b41518 100644 --- a/src/gui/waterfallview.cc +++ b/src/gui/waterfallview.cc @@ -113,7 +113,7 @@ WaterFallView::_onSpectrumUpdated() { // Draw new spectrum for (size_t i=0; i<_N; i++) { - int idx = (_spectrum->fftSize()/2+i) % _spectrum->fftSize(); + int idx = (_N/2+i) % _N; double value = 10*log10(_spectrum->spectrum()[idx])-10*log10(_N); if (value != value) { value = 0; } painter.setPen((*_colorMap)(value)); @@ -144,12 +144,12 @@ void WaterFallView::paintEvent(QPaintEvent *evt) { QPainter painter(this); painter.save(); - painter.setRenderHints(QPainter::SmoothPixmapTransform); - // Draw transformed pixmap + painter.setRenderHints(QPainter::SmoothPixmapTransform|QPainter::Antialiasing); + // Assemble trafo QTransform trafo; switch (_dir) { case BOTTOM_UP: - trafo *= trafo.scale(this->width()/qreal(_N), this->height()/qreal(_M)); + trafo.scale(qreal(this->width())/_N, qreal(this->height())/_M); break; case LEFT_RIGHT: trafo.scale(this->width()/qreal(_M), this->height()/qreal(_N)); @@ -168,8 +168,14 @@ WaterFallView::paintEvent(QPaintEvent *evt) { break; } painter.setTransform(trafo); - - painter.drawPixmap(0,0, _waterfall); + QRect exposedRect = painter.matrix().inverted() + .mapRect(evt->rect()) + .adjusted(-1, -1, 1, 1); + qDebug() << "Draw " << QRect(0,0,_N,_M) << " at " + << painter.matrix().mapRect(QRect(0,0,_N,_M)); + // the adjust is to account for half pixels along edges + painter.drawPixmap(exposedRect, _waterfall, exposedRect); + //painter.drawPixmap(0,0, _waterfall); painter.restore(); } From 7f737fc0406975c55fa03de49784665587781509 Mon Sep 17 00:00:00 2001 From: Hannes Matuschek Date: Mon, 1 Dec 2014 12:22:08 +0100 Subject: [PATCH 2/2] Cleanup --- examples/CMakeLists.txt | 2 -- examples/sdr_qrss.cc | 60 ----------------------------------------- 2 files changed, 62 deletions(-) delete mode 100644 examples/sdr_qrss.cc diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index e69b628..7e405f8 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,8 +1,6 @@ IF(SDR_WITH_QT5 AND SDR_WITH_FFTW AND SDR_WITH_PORTAUDIO) add_executable(sdr_spec sdr_spec.cc) target_link_libraries(sdr_spec ${LIBS} ${QT_LIBRARIES} libsdr libsdr-gui ) - add_executable(sdr_qrss sdr_qrss.cc) - target_link_libraries(sdr_qrss ${LIBS} ${QT_LIBRARIES} libsdr libsdr-gui ) ENDIF(SDR_WITH_QT5 AND SDR_WITH_FFTW AND SDR_WITH_PORTAUDIO) IF(SDR_WITH_PORTAUDIO) diff --git a/examples/sdr_qrss.cc b/examples/sdr_qrss.cc deleted file mode 100644 index 505d92d..0000000 --- a/examples/sdr_qrss.cc +++ /dev/null @@ -1,60 +0,0 @@ -#include "sdr.hh" -#include "rtlsource.hh" -#include "baseband.hh" -#include "utils.hh" -#include "gui/gui.hh" -#include -#include "portaudio.hh" - -#include -#include -#include - -using namespace sdr; - -static void __sigint_handler(int signo) { - // On SIGINT -> stop queue properly - Queue::get().stop(); -} - -#define F_SAMPLE 11000.0 -#define B_SIZE 16384 - -int main(int argc, char *argv[]) -{ - Queue &queue = Queue::get(); - - // Register handler: - signal(SIGINT, __sigint_handler); - - PortAudio::init(); - - QApplication app(argc, argv); - - QMainWindow *win = new QMainWindow(); - gui::Spectrum *spec = new gui::Spectrum(F_SAMPLE/B_SIZE, 1024, 8); - gui::WaterFallView *spec_view = new gui::WaterFallView(spec); - win->setCentralWidget(spec_view); - win->setMinimumSize(640, 240); - - win->show(); - - // Assemble processing chain - PortSource< int16_t > src(F_SAMPLE, 2048); - AGC< int16_t > agc; - - src.connect(&agc); - agc.connect(spec); - - queue.addIdle(&src, &PortSource< int16_t >::next); - - queue.start(); - app.exec(); - - queue.stop(); - queue.wait(); - - PortAudio::terminate(); - - return 0; -}