diff options
Diffstat (limited to 'gr-qtgui/lib/WaterfallDisplayPlot.cc')
-rw-r--r-- | gr-qtgui/lib/WaterfallDisplayPlot.cc | 31 |
1 files changed, 25 insertions, 6 deletions
diff --git a/gr-qtgui/lib/WaterfallDisplayPlot.cc b/gr-qtgui/lib/WaterfallDisplayPlot.cc index eb33cba921..86724fe04d 100644 --- a/gr-qtgui/lib/WaterfallDisplayPlot.cc +++ b/gr-qtgui/lib/WaterfallDisplayPlot.cc @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2008-2012 Free Software Foundation, Inc. + * Copyright 2008-2012,2014 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -139,6 +139,7 @@ WaterfallDisplayPlot::WaterfallDisplayPlot(int nplots, QWidget* parent) resize(parent->width(), parent->height()); d_numPoints = 1024; + d_half_freq = false; setAxisTitle(QwtPlot::xBottom, "Frequency (Hz)"); setAxisScaleDraw(QwtPlot::xBottom, new FreqDisplayScaleDraw(0)); @@ -225,8 +226,13 @@ WaterfallDisplayPlot::setFrequencyRange(const double centerfreq, const double bandwidth, const double units, const std::string &strunits) { - double startFreq = (centerfreq - bandwidth/2.0f) / units; - double stopFreq = (centerfreq + bandwidth/2.0f) / units; + double startFreq; + double stopFreq = (centerfreq + bandwidth/2.0f) / units; + if(d_half_freq) + startFreq = 0; + else + startFreq = (centerfreq - bandwidth/2.0f) / units; + d_xaxis_multiplier = units; @@ -273,10 +279,13 @@ WaterfallDisplayPlot::plotNewData(const std::vector<double*> dataPoints, const gr::high_res_timer_type timestamp, const int droppedFrames) { + int64_t _npoints_in = d_half_freq ? numDataPoints/2 : numDataPoints; + int64_t _in_index = d_half_freq ? _npoints_in : 0; + if(!d_stop) { if(numDataPoints > 0){ - if(numDataPoints != d_numPoints){ - d_numPoints = numDataPoints; + if(_npoints_in != d_numPoints) { + d_numPoints = _npoints_in; resetAxis(); @@ -298,7 +307,8 @@ WaterfallDisplayPlot::plotNewData(const std::vector<double*> dataPoints, ((WaterfallZoomer*)d_zoomer)->setZeroTime(timestamp); for(int i = 0; i < d_nplots; i++) { - d_data[i]->addFFTData(dataPoints[i], numDataPoints, droppedFrames); + d_data[i]->addFFTData(&(dataPoints[i][_in_index]), + _npoints_in, droppedFrames); d_data[i]->incrementNumLinesToUpdate(); d_spectrogram[i]->invalidateCache(); d_spectrogram[i]->itemChanged(); @@ -596,4 +606,13 @@ WaterfallDisplayPlot::_updateIntensityRangeDisplay() replot(); } +void +WaterfallDisplayPlot::setPlotPosHalf(bool half) +{ + d_half_freq = half; + if(half) + d_start_frequency = 0; +} + + #endif /* WATERFALL_DISPLAY_PLOT_C */ |