diff options
Diffstat (limited to 'gr-qtgui/lib/WaterfallDisplayPlot.cc')
-rw-r--r-- | gr-qtgui/lib/WaterfallDisplayPlot.cc | 898 |
1 files changed, 429 insertions, 469 deletions
diff --git a/gr-qtgui/lib/WaterfallDisplayPlot.cc b/gr-qtgui/lib/WaterfallDisplayPlot.cc index 66299f1fa8..cd87fc965d 100644 --- a/gr-qtgui/lib/WaterfallDisplayPlot.cc +++ b/gr-qtgui/lib/WaterfallDisplayPlot.cc @@ -48,659 +48,619 @@ namespace pt = boost::posix_time; /*********************************************************************** * Text scale widget to provide Y (time) axis text **********************************************************************/ -class QwtTimeScaleDraw: public QwtScaleDraw, public TimeScaleData +class QwtTimeScaleDraw : public QwtScaleDraw, public TimeScaleData { public: - QwtTimeScaleDraw():QwtScaleDraw(),TimeScaleData() - { - } - - virtual ~QwtTimeScaleDraw() - { - } - - virtual QwtText label(double value) const - { - double secs = double(value * getSecondsPerLine()); - return QwtText(QString("").sprintf("%.2e", secs)); - } - - virtual void initiateUpdate() - { - // Do this in one call rather than when zeroTime and secondsPerLine - // updates is to prevent the display from being updated too often... - invalidateCache(); - } + QwtTimeScaleDraw() : QwtScaleDraw(), TimeScaleData() {} -protected: + virtual ~QwtTimeScaleDraw() {} -private: + virtual QwtText label(double value) const + { + double secs = double(value * getSecondsPerLine()); + return QwtText(QString("").sprintf("%.2e", secs)); + } + + virtual void initiateUpdate() + { + // Do this in one call rather than when zeroTime and secondsPerLine + // updates is to prevent the display from being updated too often... + invalidateCache(); + } +protected: +private: }; /*********************************************************************** * Widget to provide mouse pointer coordinate text **********************************************************************/ -class WaterfallZoomer: public QwtPlotZoomer, public TimeScaleData, - public FreqOffsetAndPrecisionClass +class WaterfallZoomer : public QwtPlotZoomer, + public TimeScaleData, + public FreqOffsetAndPrecisionClass { public: #if QWT_VERSION < 0x060100 - WaterfallZoomer(QwtPlotCanvas* canvas, const unsigned int freqPrecision) -#else /* QWT_VERSION < 0x060100 */ - WaterfallZoomer(QWidget* canvas, const unsigned int freqPrecision) + WaterfallZoomer(QwtPlotCanvas* canvas, const unsigned int freqPrecision) +#else /* QWT_VERSION < 0x060100 */ + WaterfallZoomer(QWidget* canvas, const unsigned int freqPrecision) #endif /* QWT_VERSION < 0x060100 */ - : QwtPlotZoomer(canvas), TimeScaleData(), - FreqOffsetAndPrecisionClass(freqPrecision) - { - setTrackerMode(QwtPicker::AlwaysOn); - } - - virtual ~WaterfallZoomer() - { - } - - virtual void updateTrackerText() - { - updateDisplay(); - } - - void setUnitType(const std::string &type) - { - d_unitType = type; - } + : QwtPlotZoomer(canvas), + TimeScaleData(), + FreqOffsetAndPrecisionClass(freqPrecision) + { + setTrackerMode(QwtPicker::AlwaysOn); + } + + virtual ~WaterfallZoomer() {} + + virtual void updateTrackerText() { updateDisplay(); } + + void setUnitType(const std::string& type) { d_unitType = type; } protected: - using QwtPlotZoomer::trackerText; - virtual QwtText trackerText( QPoint const &p ) const - { - QwtDoublePoint dp = QwtPlotZoomer::invTransform(p); - double secs = double(dp.y() * getSecondsPerLine()); - QwtText t(QString("%1 %2, %3 s") - .arg(dp.x(), 0, 'f', getFrequencyPrecision()) - .arg(d_unitType.c_str()) - .arg(secs, 0, 'e', 2)); - return t; - } + using QwtPlotZoomer::trackerText; + virtual QwtText trackerText(QPoint const& p) const + { + QwtDoublePoint dp = QwtPlotZoomer::invTransform(p); + double secs = double(dp.y() * getSecondsPerLine()); + QwtText t(QString("%1 %2, %3 s") + .arg(dp.x(), 0, 'f', getFrequencyPrecision()) + .arg(d_unitType.c_str()) + .arg(secs, 0, 'e', 2)); + return t; + } private: - std::string d_unitType; + std::string d_unitType; }; /********************************************************************* -* Main waterfall plot widget -*********************************************************************/ + * Main waterfall plot widget + *********************************************************************/ WaterfallDisplayPlot::WaterfallDisplayPlot(int nplots, QWidget* parent) - : DisplayPlot(nplots, parent) + : DisplayPlot(nplots, parent) { - d_zoomer = NULL; // need this for proper init - d_start_frequency = -1; - d_stop_frequency = 1; + d_zoomer = NULL; // need this for proper init + d_start_frequency = -1; + d_stop_frequency = 1; - resize(parent->width(), parent->height()); - d_numPoints = 0; - d_half_freq = false; - d_legend_enabled = true; - d_nrows = 200; - d_color_bar_title_font_size = 18; + resize(parent->width(), parent->height()); + d_numPoints = 0; + d_half_freq = false; + d_legend_enabled = true; + d_nrows = 200; + d_color_bar_title_font_size = 18; - setAxisTitle(QwtPlot::xBottom, "Frequency (Hz)"); - setAxisScaleDraw(QwtPlot::xBottom, new FreqDisplayScaleDraw(0)); + setAxisTitle(QwtPlot::xBottom, "Frequency (Hz)"); + setAxisScaleDraw(QwtPlot::xBottom, new FreqDisplayScaleDraw(0)); - setAxisTitle(QwtPlot::yLeft, "Time (s)"); - setAxisScaleDraw(QwtPlot::yLeft, new QwtTimeScaleDraw()); + setAxisTitle(QwtPlot::yLeft, "Time (s)"); + setAxisScaleDraw(QwtPlot::yLeft, new QwtTimeScaleDraw()); - for(unsigned int i = 0; i < d_nplots; ++i) { - d_data.push_back(new WaterfallData(d_start_frequency, d_stop_frequency, - d_numPoints, d_nrows)); + for (unsigned int i = 0; i < d_nplots; ++i) { + d_data.push_back( + new WaterfallData(d_start_frequency, d_stop_frequency, d_numPoints, d_nrows)); #if QWT_VERSION < 0x060000 - d_spectrogram.push_back(new PlotWaterfall(d_data[i], "Spectrogram")); + d_spectrogram.push_back(new PlotWaterfall(d_data[i], "Spectrogram")); #else - d_spectrogram.push_back(new QwtPlotSpectrogram("Spectrogram")); - d_spectrogram[i]->setData(d_data[i]); - d_spectrogram[i]->setDisplayMode(QwtPlotSpectrogram::ImageMode, true); - d_spectrogram[i]->setColorMap(new ColorMap_MultiColor()); + d_spectrogram.push_back(new QwtPlotSpectrogram("Spectrogram")); + d_spectrogram[i]->setData(d_data[i]); + d_spectrogram[i]->setDisplayMode(QwtPlotSpectrogram::ImageMode, true); + d_spectrogram[i]->setColorMap(new ColorMap_MultiColor()); #endif - // a hack around the fact that we aren't using plot curves for the - // spectrogram plots. - d_plot_curve.push_back(new QwtPlotCurve(QString("Data %1").arg(i))); + // a hack around the fact that we aren't using plot curves for the + // spectrogram plots. + d_plot_curve.push_back(new QwtPlotCurve(QString("Data %1").arg(i))); - d_spectrogram[i]->attach(this); + d_spectrogram[i]->attach(this); - d_intensity_color_map_type.push_back(INTENSITY_COLOR_MAP_TYPE_MULTI_COLOR); - setIntensityColorMapType(i, d_intensity_color_map_type[i], - QColor("white"), QColor("white")); + d_intensity_color_map_type.push_back(INTENSITY_COLOR_MAP_TYPE_MULTI_COLOR); + setIntensityColorMapType( + i, d_intensity_color_map_type[i], QColor("white"), QColor("white")); - setAlpha(i, 255/d_nplots); - } + setAlpha(i, 255 / d_nplots); + } - // Set bottom plot with no transparency as a base - setAlpha(0, 255); + // Set bottom plot with no transparency as a base + setAlpha(0, 255); - // LeftButton for the zooming - // MidButton for the panning - // RightButton: zoom out by 1 - // Ctrl+RighButton: zoom out to full size - d_zoomer = new WaterfallZoomer(canvas(), 0); + // LeftButton for the zooming + // MidButton for the panning + // RightButton: zoom out by 1 + // Ctrl+RighButton: zoom out to full size + d_zoomer = new WaterfallZoomer(canvas(), 0); #if QWT_VERSION < 0x060000 - d_zoomer->setSelectionFlags(QwtPicker::RectSelection | QwtPicker::DragSelection); + d_zoomer->setSelectionFlags(QwtPicker::RectSelection | QwtPicker::DragSelection); #endif - d_zoomer->setMousePattern(QwtEventPattern::MouseSelect2, - Qt::RightButton, Qt::ControlModifier); - d_zoomer->setMousePattern(QwtEventPattern::MouseSelect3, - Qt::RightButton); + d_zoomer->setMousePattern( + QwtEventPattern::MouseSelect2, Qt::RightButton, Qt::ControlModifier); + d_zoomer->setMousePattern(QwtEventPattern::MouseSelect3, Qt::RightButton); - const QColor c(Qt::black); - d_zoomer->setRubberBandPen(c); - d_zoomer->setTrackerPen(c); + const QColor c(Qt::black); + d_zoomer->setRubberBandPen(c); + d_zoomer->setTrackerPen(c); - _updateIntensityRangeDisplay(); + _updateIntensityRangeDisplay(); - d_xaxis_multiplier = 1; + d_xaxis_multiplier = 1; } -WaterfallDisplayPlot::~WaterfallDisplayPlot() -{ -} +WaterfallDisplayPlot::~WaterfallDisplayPlot() {} -void -WaterfallDisplayPlot::resetAxis() +void WaterfallDisplayPlot::resetAxis() { - for(unsigned int i = 0; i < d_nplots; ++i) { - d_data[i]->resizeData(d_start_frequency, d_stop_frequency, - d_numPoints, d_nrows); - d_data[i]->reset(); - } - - setAxisScale(QwtPlot::xBottom, d_start_frequency, d_stop_frequency); - - // Load up the new base zoom settings - QwtDoubleRect zbase = d_zoomer->zoomBase(); - d_zoomer->zoom(zbase); - d_zoomer->setZoomBase(zbase); - d_zoomer->setZoomBase(true); - d_zoomer->zoom(0); -} - -void -WaterfallDisplayPlot::setFrequencyRange(const double centerfreq, - const double bandwidth, - const double units, const std::string &strunits) -{ - double startFreq; - double stopFreq = (centerfreq + bandwidth/2.0f) / units; - if(d_half_freq) - startFreq = centerfreq / units; - else - startFreq = (centerfreq - bandwidth/2.0f) / units; + for (unsigned int i = 0; i < d_nplots; ++i) { + d_data[i]->resizeData(d_start_frequency, d_stop_frequency, d_numPoints, d_nrows); + d_data[i]->reset(); + } + setAxisScale(QwtPlot::xBottom, d_start_frequency, d_stop_frequency); - d_xaxis_multiplier = units; + // Load up the new base zoom settings + QwtDoubleRect zbase = d_zoomer->zoomBase(); + d_zoomer->zoom(zbase); + d_zoomer->setZoomBase(zbase); + d_zoomer->setZoomBase(true); + d_zoomer->zoom(0); +} - bool reset = false; - if((startFreq != d_start_frequency) || (stopFreq != d_stop_frequency)) - reset = true; +void WaterfallDisplayPlot::setFrequencyRange(const double centerfreq, + const double bandwidth, + const double units, + const std::string& strunits) +{ + double startFreq; + double stopFreq = (centerfreq + bandwidth / 2.0f) / units; + if (d_half_freq) + startFreq = centerfreq / units; + else + startFreq = (centerfreq - bandwidth / 2.0f) / units; - if(stopFreq > startFreq) { - d_start_frequency = startFreq; - d_stop_frequency = stopFreq; - d_center_frequency = centerfreq / units; - if((axisScaleDraw(QwtPlot::xBottom) != NULL) && (d_zoomer != NULL)) { - double display_units = ceil(log10(units)/2.0); - setAxisScaleDraw(QwtPlot::xBottom, new FreqDisplayScaleDraw(display_units)); - setAxisTitle(QwtPlot::xBottom, QString("Frequency (%1)").arg(strunits.c_str())); + d_xaxis_multiplier = units; - if(reset) { - resetAxis(); - } - - ((WaterfallZoomer*)d_zoomer)->setFrequencyPrecision(display_units); - ((WaterfallZoomer*)d_zoomer)->setUnitType(strunits); - } - } -} + bool reset = false; + if ((startFreq != d_start_frequency) || (stopFreq != d_stop_frequency)) + reset = true; + if (stopFreq > startFreq) { + d_start_frequency = startFreq; + d_stop_frequency = stopFreq; + d_center_frequency = centerfreq / units; -double -WaterfallDisplayPlot::getStartFrequency() const -{ - return d_start_frequency; -} + if ((axisScaleDraw(QwtPlot::xBottom) != NULL) && (d_zoomer != NULL)) { + double display_units = ceil(log10(units) / 2.0); + setAxisScaleDraw(QwtPlot::xBottom, new FreqDisplayScaleDraw(display_units)); + setAxisTitle(QwtPlot::xBottom, + QString("Frequency (%1)").arg(strunits.c_str())); -double -WaterfallDisplayPlot::getStopFrequency() const -{ - return d_stop_frequency; -} + if (reset) { + resetAxis(); + } -void -WaterfallDisplayPlot::plotNewData(const std::vector<double*> dataPoints, - const int64_t numDataPoints, - const double timePerFFT, - 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(_npoints_in > 0 && timestamp == 0){ - d_numPoints = _npoints_in/d_nrows; - resetAxis(); - - // If not displaying just the positive half of the spectrum, - // plot the full thing now. - if(!d_half_freq) { - for(unsigned int i = 0; i < d_nplots; ++i) { - d_data[i]->setSpectrumDataBuffer(dataPoints[i]); - d_data[i]->setNumLinesToUpdate(0); - d_spectrogram[i]->invalidateCache(); - d_spectrogram[i]->itemChanged(); + ((WaterfallZoomer*)d_zoomer)->setFrequencyPrecision(display_units); + ((WaterfallZoomer*)d_zoomer)->setUnitType(strunits); } - } - - // Otherwise, loop through our input data vector and only plot - // the second half of each row. - else { - for(unsigned int i = 0; i < d_nplots; ++i) { - d_data[i]->setSpectrumDataBuffer(&(dataPoints[i][d_numPoints])); - for(int n = 1; n < d_nrows; n++) { - d_data[i]->addFFTData(&(dataPoints[i][d_numPoints + 2*n*d_numPoints]), - d_numPoints, 0); - d_data[i]->incrementNumLinesToUpdate(); - } - d_spectrogram[i]->invalidateCache(); - d_spectrogram[i]->itemChanged(); - } - } - - QwtTimeScaleDraw* timeScale = (QwtTimeScaleDraw*)axisScaleDraw(QwtPlot::yLeft); - timeScale->setSecondsPerLine(timePerFFT); - timeScale->setZeroTime(timestamp); - timeScale->initiateUpdate(); - - ((WaterfallZoomer*)d_zoomer)->setSecondsPerLine(timePerFFT); - ((WaterfallZoomer*)d_zoomer)->setZeroTime(timestamp); - replot(); } +} - else if(_npoints_in > 0) { - if(_npoints_in != d_numPoints) { - d_numPoints = _npoints_in; - resetAxis(); - for(unsigned int i = 0; i < d_nplots; ++i) { - d_spectrogram[i]->invalidateCache(); - d_spectrogram[i]->itemChanged(); +double WaterfallDisplayPlot::getStartFrequency() const { return d_start_frequency; } + +double WaterfallDisplayPlot::getStopFrequency() const { return d_stop_frequency; } + +void WaterfallDisplayPlot::plotNewData(const std::vector<double*> dataPoints, + const int64_t numDataPoints, + const double timePerFFT, + 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 (_npoints_in > 0 && timestamp == 0) { + d_numPoints = _npoints_in / d_nrows; + resetAxis(); + + // If not displaying just the positive half of the spectrum, + // plot the full thing now. + if (!d_half_freq) { + for (unsigned int i = 0; i < d_nplots; ++i) { + d_data[i]->setSpectrumDataBuffer(dataPoints[i]); + d_data[i]->setNumLinesToUpdate(0); + d_spectrogram[i]->invalidateCache(); + d_spectrogram[i]->itemChanged(); + } + } + + // Otherwise, loop through our input data vector and only plot + // the second half of each row. + else { + for (unsigned int i = 0; i < d_nplots; ++i) { + d_data[i]->setSpectrumDataBuffer(&(dataPoints[i][d_numPoints])); + for (int n = 1; n < d_nrows; n++) { + d_data[i]->addFFTData( + &(dataPoints[i][d_numPoints + 2 * n * d_numPoints]), + d_numPoints, + 0); + d_data[i]->incrementNumLinesToUpdate(); + } + d_spectrogram[i]->invalidateCache(); + d_spectrogram[i]->itemChanged(); + } + } + + QwtTimeScaleDraw* timeScale = + (QwtTimeScaleDraw*)axisScaleDraw(QwtPlot::yLeft); + timeScale->setSecondsPerLine(timePerFFT); + timeScale->setZeroTime(timestamp); + timeScale->initiateUpdate(); + + ((WaterfallZoomer*)d_zoomer)->setSecondsPerLine(timePerFFT); + ((WaterfallZoomer*)d_zoomer)->setZeroTime(timestamp); + replot(); } - if(isVisible()) { - replot(); + else if (_npoints_in > 0) { + if (_npoints_in != d_numPoints) { + d_numPoints = _npoints_in; + resetAxis(); + + for (unsigned int i = 0; i < d_nplots; ++i) { + d_spectrogram[i]->invalidateCache(); + d_spectrogram[i]->itemChanged(); + } + + if (isVisible()) { + replot(); + } + } + + QwtTimeScaleDraw* timeScale = + (QwtTimeScaleDraw*)axisScaleDraw(QwtPlot::yLeft); + timeScale->setSecondsPerLine(timePerFFT); + timeScale->setZeroTime(timestamp); + + ((WaterfallZoomer*)d_zoomer)->setSecondsPerLine(timePerFFT); + ((WaterfallZoomer*)d_zoomer)->setZeroTime(timestamp); + + for (unsigned int i = 0; i < d_nplots; ++i) { + d_data[i]->addFFTData( + &(dataPoints[i][_in_index]), _npoints_in, droppedFrames); + d_data[i]->incrementNumLinesToUpdate(); + d_spectrogram[i]->invalidateCache(); + d_spectrogram[i]->itemChanged(); + } + + replot(); } - } - - QwtTimeScaleDraw* timeScale = (QwtTimeScaleDraw*)axisScaleDraw(QwtPlot::yLeft); - timeScale->setSecondsPerLine(timePerFFT); - timeScale->setZeroTime(timestamp); - - ((WaterfallZoomer*)d_zoomer)->setSecondsPerLine(timePerFFT); - ((WaterfallZoomer*)d_zoomer)->setZeroTime(timestamp); - - for(unsigned int i = 0; i < d_nplots; ++i) { - d_data[i]->addFFTData(&(dataPoints[i][_in_index]), - _npoints_in, droppedFrames); - d_data[i]->incrementNumLinesToUpdate(); - d_spectrogram[i]->invalidateCache(); - d_spectrogram[i]->itemChanged(); - } - - replot(); } - } } -void -WaterfallDisplayPlot::plotNewData(const double* dataPoints, - const int64_t numDataPoints, - const double timePerFFT, - const gr::high_res_timer_type timestamp, - const int droppedFrames) +void WaterfallDisplayPlot::plotNewData(const double* dataPoints, + const int64_t numDataPoints, + const double timePerFFT, + const gr::high_res_timer_type timestamp, + const int droppedFrames) { - std::vector<double*> vecDataPoints; - vecDataPoints.push_back((double*)dataPoints); - plotNewData(vecDataPoints, numDataPoints, timePerFFT, - timestamp, droppedFrames); + std::vector<double*> vecDataPoints; + vecDataPoints.push_back((double*)dataPoints); + plotNewData(vecDataPoints, numDataPoints, timePerFFT, timestamp, droppedFrames); } -void -WaterfallDisplayPlot::setIntensityRange(const double minIntensity, - const double maxIntensity) +void WaterfallDisplayPlot::setIntensityRange(const double minIntensity, + const double maxIntensity) { - for(unsigned int i = 0; i < d_nplots; ++i) { + for (unsigned int i = 0; i < d_nplots; ++i) { #if QWT_VERSION < 0x060000 - d_data[i]->setRange(QwtDoubleInterval(minIntensity, maxIntensity)); + d_data[i]->setRange(QwtDoubleInterval(minIntensity, maxIntensity)); #else - d_data[i]->setInterval(Qt::ZAxis, QwtInterval(minIntensity, maxIntensity)); + d_data[i]->setInterval(Qt::ZAxis, QwtInterval(minIntensity, maxIntensity)); #endif - emit updatedLowerIntensityLevel(minIntensity); - emit updatedUpperIntensityLevel(maxIntensity); + emit updatedLowerIntensityLevel(minIntensity); + emit updatedUpperIntensityLevel(maxIntensity); - _updateIntensityRangeDisplay(); - } + _updateIntensityRangeDisplay(); + } } -double -WaterfallDisplayPlot::getMinIntensity(unsigned int which) const +double WaterfallDisplayPlot::getMinIntensity(unsigned int which) const { #if QWT_VERSION < 0x060000 - QwtDoubleInterval r = d_data[which]->range(); + QwtDoubleInterval r = d_data[which]->range(); #else - QwtInterval r = d_data[which]->interval(Qt::ZAxis); + QwtInterval r = d_data[which]->interval(Qt::ZAxis); #endif - return r.minValue(); + return r.minValue(); } -double -WaterfallDisplayPlot::getMaxIntensity(unsigned int which) const +double WaterfallDisplayPlot::getMaxIntensity(unsigned int which) const { #if QWT_VERSION < 0x060000 - QwtDoubleInterval r = d_data[which]->range(); + QwtDoubleInterval r = d_data[which]->range(); #else - QwtInterval r = d_data[which]->interval(Qt::ZAxis); + QwtInterval r = d_data[which]->interval(Qt::ZAxis); #endif - return r.maxValue(); + return r.maxValue(); } -int -WaterfallDisplayPlot::getColorMapTitleFontSize() const +int WaterfallDisplayPlot::getColorMapTitleFontSize() const { - return d_color_bar_title_font_size; + return d_color_bar_title_font_size; } -void -WaterfallDisplayPlot::setColorMapTitleFontSize(int tfs) +void WaterfallDisplayPlot::setColorMapTitleFontSize(int tfs) { - d_color_bar_title_font_size = tfs; + d_color_bar_title_font_size = tfs; } -void -WaterfallDisplayPlot::replot() +void WaterfallDisplayPlot::replot() { - QwtTimeScaleDraw* timeScale = (QwtTimeScaleDraw*)axisScaleDraw(QwtPlot::yLeft); - timeScale->initiateUpdate(); + QwtTimeScaleDraw* timeScale = (QwtTimeScaleDraw*)axisScaleDraw(QwtPlot::yLeft); + timeScale->initiateUpdate(); - FreqDisplayScaleDraw* freqScale = \ - (FreqDisplayScaleDraw*)axisScaleDraw(QwtPlot::xBottom); - freqScale->initiateUpdate(); + FreqDisplayScaleDraw* freqScale = + (FreqDisplayScaleDraw*)axisScaleDraw(QwtPlot::xBottom); + freqScale->initiateUpdate(); - // Update the time axis display - if(axisWidget(QwtPlot::yLeft) != NULL){ - axisWidget(QwtPlot::yLeft)->update(); - } + // Update the time axis display + if (axisWidget(QwtPlot::yLeft) != NULL) { + axisWidget(QwtPlot::yLeft)->update(); + } - // Update the Frequency Offset Display - if(axisWidget(QwtPlot::xBottom) != NULL){ - axisWidget(QwtPlot::xBottom)->update(); - } + // Update the Frequency Offset Display + if (axisWidget(QwtPlot::xBottom) != NULL) { + axisWidget(QwtPlot::xBottom)->update(); + } - if(d_zoomer != NULL){ - ((WaterfallZoomer*)d_zoomer)->updateTrackerText(); - } + if (d_zoomer != NULL) { + ((WaterfallZoomer*)d_zoomer)->updateTrackerText(); + } - QwtPlot::replot(); + QwtPlot::replot(); } -void -WaterfallDisplayPlot::clearData() +void WaterfallDisplayPlot::clearData() { - for(unsigned int i = 0; i < d_nplots; ++i) { - d_data[i]->reset(); - } + for (unsigned int i = 0; i < d_nplots; ++i) { + d_data[i]->reset(); + } } -int -WaterfallDisplayPlot::getIntensityColorMapType(unsigned int which) const +int WaterfallDisplayPlot::getIntensityColorMapType(unsigned int which) const { - return d_intensity_color_map_type[which]; + return d_intensity_color_map_type[which]; } -void -WaterfallDisplayPlot::setIntensityColorMapType(const unsigned int which, - const int newType, - const QColor lowColor, - const QColor highColor) +void WaterfallDisplayPlot::setIntensityColorMapType(const unsigned int which, + const int newType, + const QColor lowColor, + const QColor highColor) { - if((d_intensity_color_map_type[which] != newType) || - ((newType == INTENSITY_COLOR_MAP_TYPE_USER_DEFINED) && - (lowColor.isValid() && highColor.isValid()))){ - switch(newType){ - case INTENSITY_COLOR_MAP_TYPE_MULTI_COLOR:{ - d_intensity_color_map_type[which] = newType; + if ((d_intensity_color_map_type[which] != newType) || + ((newType == INTENSITY_COLOR_MAP_TYPE_USER_DEFINED) && + (lowColor.isValid() && highColor.isValid()))) { + switch (newType) { + case INTENSITY_COLOR_MAP_TYPE_MULTI_COLOR: { + d_intensity_color_map_type[which] = newType; #if QWT_VERSION < 0x060000 - ColorMap_MultiColor colorMap; - d_spectrogram[which]->setColorMap(colorMap); + ColorMap_MultiColor colorMap; + d_spectrogram[which]->setColorMap(colorMap); #else - d_spectrogram[which]->setColorMap(new ColorMap_MultiColor()); + d_spectrogram[which]->setColorMap(new ColorMap_MultiColor()); #endif - break; - } - case INTENSITY_COLOR_MAP_TYPE_WHITE_HOT:{ - d_intensity_color_map_type[which] = newType; + break; + } + case INTENSITY_COLOR_MAP_TYPE_WHITE_HOT: { + d_intensity_color_map_type[which] = newType; #if QWT_VERSION < 0x060000 - ColorMap_WhiteHot colorMap; - d_spectrogram[which]->setColorMap(colorMap); + ColorMap_WhiteHot colorMap; + d_spectrogram[which]->setColorMap(colorMap); #else - d_spectrogram[which]->setColorMap(new ColorMap_WhiteHot()); + d_spectrogram[which]->setColorMap(new ColorMap_WhiteHot()); #endif - break; - } - case INTENSITY_COLOR_MAP_TYPE_BLACK_HOT:{ - d_intensity_color_map_type[which] = newType; + break; + } + case INTENSITY_COLOR_MAP_TYPE_BLACK_HOT: { + d_intensity_color_map_type[which] = newType; #if QWT_VERSION < 0x060000 - ColorMap_BlackHot colorMap; - d_spectrogram[which]->setColorMap(colorMap); + ColorMap_BlackHot colorMap; + d_spectrogram[which]->setColorMap(colorMap); #else - d_spectrogram[which]->setColorMap(new ColorMap_BlackHot()); + d_spectrogram[which]->setColorMap(new ColorMap_BlackHot()); #endif - break; - } - case INTENSITY_COLOR_MAP_TYPE_INCANDESCENT:{ - d_intensity_color_map_type[which] = newType; + break; + } + case INTENSITY_COLOR_MAP_TYPE_INCANDESCENT: { + d_intensity_color_map_type[which] = newType; #if QWT_VERSION < 0x060000 - ColorMap_Incandescent colorMap; - d_spectrogram[which]->setColorMap(colorMap); + ColorMap_Incandescent colorMap; + d_spectrogram[which]->setColorMap(colorMap); #else - d_spectrogram[which]->setColorMap(new ColorMap_Incandescent()); + d_spectrogram[which]->setColorMap(new ColorMap_Incandescent()); #endif - break; - } - case INTENSITY_COLOR_MAP_TYPE_SUNSET: { - d_intensity_color_map_type[which] = newType; + break; + } + case INTENSITY_COLOR_MAP_TYPE_SUNSET: { + d_intensity_color_map_type[which] = newType; #if QWT_VERSION < 0x060000 - ColorMap_Sunset colorMap; - d_spectrogram[which]->setColorMap(colorMap); + ColorMap_Sunset colorMap; + d_spectrogram[which]->setColorMap(colorMap); #else - d_spectrogram[which]->setColorMap(new ColorMap_Sunset()); + d_spectrogram[which]->setColorMap(new ColorMap_Sunset()); #endif - break; - } - case INTENSITY_COLOR_MAP_TYPE_COOL: { - d_intensity_color_map_type[which] = newType; + break; + } + case INTENSITY_COLOR_MAP_TYPE_COOL: { + d_intensity_color_map_type[which] = newType; #if QWT_VERSION < 0x060000 - ColorMap_Cool colorMap; - d_spectrogram[which]->setColorMap(colorMap); + ColorMap_Cool colorMap; + d_spectrogram[which]->setColorMap(colorMap); #else - d_spectrogram[which]->setColorMap(new ColorMap_Cool()); + d_spectrogram[which]->setColorMap(new ColorMap_Cool()); #endif - break; - } - case INTENSITY_COLOR_MAP_TYPE_USER_DEFINED:{ - d_user_defined_low_intensity_color = lowColor; - d_user_defined_high_intensity_color = highColor; - d_intensity_color_map_type[which] = newType; + break; + } + case INTENSITY_COLOR_MAP_TYPE_USER_DEFINED: { + d_user_defined_low_intensity_color = lowColor; + d_user_defined_high_intensity_color = highColor; + d_intensity_color_map_type[which] = newType; #if QWT_VERSION < 0x060000 - ColorMap_UserDefined colorMap(lowColor, highColor); - d_spectrogram[which]->setColorMap(colorMap); + ColorMap_UserDefined colorMap(lowColor, highColor); + d_spectrogram[which]->setColorMap(colorMap); #else - d_spectrogram[which]->setColorMap(new ColorMap_UserDefined(lowColor, highColor)); + d_spectrogram[which]->setColorMap( + new ColorMap_UserDefined(lowColor, highColor)); #endif - break; - } - default: break; - } + break; + } + default: + break; + } - _updateIntensityRangeDisplay(); - } + _updateIntensityRangeDisplay(); + } } -void -WaterfallDisplayPlot::setIntensityColorMapType1(int newType) +void WaterfallDisplayPlot::setIntensityColorMapType1(int newType) { - setIntensityColorMapType(0, newType, d_user_defined_low_intensity_color, - d_user_defined_high_intensity_color); + setIntensityColorMapType(0, + newType, + d_user_defined_low_intensity_color, + d_user_defined_high_intensity_color); } -int -WaterfallDisplayPlot::getIntensityColorMapType1() const +int WaterfallDisplayPlot::getIntensityColorMapType1() const { - return getIntensityColorMapType(0); + return getIntensityColorMapType(0); } -void -WaterfallDisplayPlot::setUserDefinedLowIntensityColor(QColor c) +void WaterfallDisplayPlot::setUserDefinedLowIntensityColor(QColor c) { - d_user_defined_low_intensity_color = c; + d_user_defined_low_intensity_color = c; } -const QColor -WaterfallDisplayPlot::getUserDefinedLowIntensityColor() const +const QColor WaterfallDisplayPlot::getUserDefinedLowIntensityColor() const { - return d_user_defined_low_intensity_color; + return d_user_defined_low_intensity_color; } -void -WaterfallDisplayPlot::setUserDefinedHighIntensityColor(QColor c) +void WaterfallDisplayPlot::setUserDefinedHighIntensityColor(QColor c) { - d_user_defined_high_intensity_color = c; + d_user_defined_high_intensity_color = c; } -const QColor -WaterfallDisplayPlot::getUserDefinedHighIntensityColor() const +const QColor WaterfallDisplayPlot::getUserDefinedHighIntensityColor() const { - return d_user_defined_high_intensity_color; + return d_user_defined_high_intensity_color; } -int -WaterfallDisplayPlot::getAlpha(unsigned int which) +int WaterfallDisplayPlot::getAlpha(unsigned int which) { - return d_spectrogram[which]->alpha(); + return d_spectrogram[which]->alpha(); } -void -WaterfallDisplayPlot::setAlpha(unsigned int which, int alpha) +void WaterfallDisplayPlot::setAlpha(unsigned int which, int alpha) { - d_spectrogram[which]->setAlpha(alpha); + d_spectrogram[which]->setAlpha(alpha); } -int -WaterfallDisplayPlot::getNumRows() const -{ - return d_nrows; -} +int WaterfallDisplayPlot::getNumRows() const { return d_nrows; } -void -WaterfallDisplayPlot::_updateIntensityRangeDisplay() +void WaterfallDisplayPlot::_updateIntensityRangeDisplay() { - QwtScaleWidget *rightAxis = axisWidget(QwtPlot::yRight); - QwtText colorBarTitle("Intensity (dB)"); - colorBarTitle.setFont(QFont("Arial",d_color_bar_title_font_size)); - rightAxis->setTitle(colorBarTitle); - rightAxis->setColorBarEnabled(true); + QwtScaleWidget* rightAxis = axisWidget(QwtPlot::yRight); + QwtText colorBarTitle("Intensity (dB)"); + colorBarTitle.setFont(QFont("Arial", d_color_bar_title_font_size)); + rightAxis->setTitle(colorBarTitle); + rightAxis->setColorBarEnabled(true); - for(unsigned int i = 0; i < d_nplots; ++i) { + for (unsigned int i = 0; i < d_nplots; ++i) { #if QWT_VERSION < 0x060000 - rightAxis->setColorMap(d_spectrogram[i]->data()->range(), - d_spectrogram[i]->colorMap()); - setAxisScale(QwtPlot::yRight, - d_spectrogram[i]->data()->range().minValue(), - d_spectrogram[i]->data()->range().maxValue()); + rightAxis->setColorMap(d_spectrogram[i]->data()->range(), + d_spectrogram[i]->colorMap()); + setAxisScale(QwtPlot::yRight, + d_spectrogram[i]->data()->range().minValue(), + d_spectrogram[i]->data()->range().maxValue()); #else - QwtInterval intv = d_spectrogram[i]->interval(Qt::ZAxis); - switch(d_intensity_color_map_type[i]) { - case INTENSITY_COLOR_MAP_TYPE_MULTI_COLOR: - rightAxis->setColorMap(intv, new ColorMap_MultiColor()); break; - case INTENSITY_COLOR_MAP_TYPE_WHITE_HOT: - rightAxis->setColorMap(intv, new ColorMap_WhiteHot()); break; - case INTENSITY_COLOR_MAP_TYPE_BLACK_HOT: - rightAxis->setColorMap(intv, new ColorMap_BlackHot()); break; - case INTENSITY_COLOR_MAP_TYPE_INCANDESCENT: - rightAxis->setColorMap(intv, new ColorMap_Incandescent()); break; - case INTENSITY_COLOR_MAP_TYPE_SUNSET: - rightAxis->setColorMap(intv, new ColorMap_Sunset()); break; - case INTENSITY_COLOR_MAP_TYPE_COOL: - rightAxis->setColorMap(intv, new ColorMap_Cool()); break; - case INTENSITY_COLOR_MAP_TYPE_USER_DEFINED: - rightAxis->setColorMap(intv, new ColorMap_UserDefined(d_user_defined_low_intensity_color, - d_user_defined_high_intensity_color)); - break; - default: - rightAxis->setColorMap(intv, new ColorMap_MultiColor()); break; - } - setAxisScale(QwtPlot::yRight, intv.minValue(), intv.maxValue()); + QwtInterval intv = d_spectrogram[i]->interval(Qt::ZAxis); + switch (d_intensity_color_map_type[i]) { + case INTENSITY_COLOR_MAP_TYPE_MULTI_COLOR: + rightAxis->setColorMap(intv, new ColorMap_MultiColor()); + break; + case INTENSITY_COLOR_MAP_TYPE_WHITE_HOT: + rightAxis->setColorMap(intv, new ColorMap_WhiteHot()); + break; + case INTENSITY_COLOR_MAP_TYPE_BLACK_HOT: + rightAxis->setColorMap(intv, new ColorMap_BlackHot()); + break; + case INTENSITY_COLOR_MAP_TYPE_INCANDESCENT: + rightAxis->setColorMap(intv, new ColorMap_Incandescent()); + break; + case INTENSITY_COLOR_MAP_TYPE_SUNSET: + rightAxis->setColorMap(intv, new ColorMap_Sunset()); + break; + case INTENSITY_COLOR_MAP_TYPE_COOL: + rightAxis->setColorMap(intv, new ColorMap_Cool()); + break; + case INTENSITY_COLOR_MAP_TYPE_USER_DEFINED: + rightAxis->setColorMap( + intv, + new ColorMap_UserDefined(d_user_defined_low_intensity_color, + d_user_defined_high_intensity_color)); + break; + default: + rightAxis->setColorMap(intv, new ColorMap_MultiColor()); + break; + } + setAxisScale(QwtPlot::yRight, intv.minValue(), intv.maxValue()); #endif - plotLayout()->setAlignCanvasToScales(true); + plotLayout()->setAlignCanvasToScales(true); - // Tell the display to redraw everything - d_spectrogram[i]->invalidateCache(); - d_spectrogram[i]->itemChanged(); - } + // Tell the display to redraw everything + d_spectrogram[i]->invalidateCache(); + d_spectrogram[i]->itemChanged(); + } - // Draw again - replot(); + // Draw again + replot(); } -void -WaterfallDisplayPlot::disableLegend() +void WaterfallDisplayPlot::disableLegend() { - d_legend_enabled = false; - enableAxis(QwtPlot::yRight, false); + d_legend_enabled = false; + enableAxis(QwtPlot::yRight, false); } -void -WaterfallDisplayPlot::enableLegend() +void WaterfallDisplayPlot::enableLegend() { - d_legend_enabled = true; - enableAxis(QwtPlot::yRight, true); + d_legend_enabled = true; + enableAxis(QwtPlot::yRight, true); } -void -WaterfallDisplayPlot::enableLegend(bool en) +void WaterfallDisplayPlot::enableLegend(bool en) { - d_legend_enabled = en; - enableAxis(QwtPlot::yRight, en); + d_legend_enabled = en; + enableAxis(QwtPlot::yRight, en); } -void -WaterfallDisplayPlot::setNumRows(int nrows) -{ - d_nrows = nrows; -} +void WaterfallDisplayPlot::setNumRows(int nrows) { d_nrows = nrows; } -void -WaterfallDisplayPlot::setPlotPosHalf(bool half) +void WaterfallDisplayPlot::setPlotPosHalf(bool half) { - d_half_freq = half; - if(half) - d_start_frequency = d_center_frequency; + d_half_freq = half; + if (half) + d_start_frequency = d_center_frequency; } |