summaryrefslogtreecommitdiff
path: root/gr-qtgui/lib/WaterfallDisplayPlot.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-qtgui/lib/WaterfallDisplayPlot.cc')
-rw-r--r--gr-qtgui/lib/WaterfallDisplayPlot.cc31
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 */