summaryrefslogtreecommitdiff
path: root/gr-qtgui/lib/FrequencyDisplayPlot.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gr-qtgui/lib/FrequencyDisplayPlot.cc')
-rw-r--r--gr-qtgui/lib/FrequencyDisplayPlot.cc480
1 files changed, 263 insertions, 217 deletions
diff --git a/gr-qtgui/lib/FrequencyDisplayPlot.cc b/gr-qtgui/lib/FrequencyDisplayPlot.cc
index b74d460150..88f5ec91c0 100644
--- a/gr-qtgui/lib/FrequencyDisplayPlot.cc
+++ b/gr-qtgui/lib/FrequencyDisplayPlot.cc
@@ -25,73 +25,28 @@
#include <FrequencyDisplayPlot.h>
+#include "qtgui_types.h"
#include <qwt_scale_draw.h>
-
-class FreqPrecisionClass
-{
-public:
- FreqPrecisionClass(const int freqPrecision)
- {
- _frequencyPrecision = freqPrecision;
- }
-
- virtual ~FreqPrecisionClass()
- {
- }
-
- virtual unsigned int GetFrequencyPrecision() const
- {
- return _frequencyPrecision;
- }
-
- virtual void SetFrequencyPrecision(const unsigned int newPrecision)
- {
- _frequencyPrecision = newPrecision;
- }
-protected:
- unsigned int _frequencyPrecision;
-
-private:
-
-};
-
-class FreqDisplayScaleDraw: public QwtScaleDraw, public FreqPrecisionClass
-{
-public:
- FreqDisplayScaleDraw(const unsigned int precision)
- : QwtScaleDraw(), FreqPrecisionClass(precision)
- {
- }
-
- virtual ~FreqDisplayScaleDraw()
- {
- }
-
- virtual QwtText label(double value) const
- {
- return QString("%1").arg(value, 0, 'f', GetFrequencyPrecision());
- }
-
-protected:
-
-private:
-
-};
-
-class FreqDisplayZoomer: public QwtPlotZoomer, public FreqPrecisionClass
+#include <qwt_legend.h>
+#include <qwt_legend_item.h>
+#include <QColor>
+#include <iostream>
+
+/***********************************************************************
+ * Widget to provide mouse pointer coordinate text
+ **********************************************************************/
+class FreqDisplayZoomer: public QwtPlotZoomer, public FreqOffsetAndPrecisionClass
{
public:
FreqDisplayZoomer(QwtPlotCanvas* canvas, const unsigned int freqPrecision)
- : QwtPlotZoomer(canvas),FreqPrecisionClass(freqPrecision)
+ : QwtPlotZoomer(canvas),
+ FreqOffsetAndPrecisionClass(freqPrecision)
{
setTrackerMode(QwtPicker::AlwaysOn);
}
-
- virtual ~FreqDisplayZoomer(){
-
- }
-
- virtual void updateTrackerText(){
+
+ virtual void updateTrackerText()
+ {
updateDisplay();
}
@@ -102,11 +57,12 @@ public:
protected:
using QwtPlotZoomer::trackerText;
- virtual QwtText trackerText( const QwtDoublePoint& p ) const
+ virtual QwtText trackerText(QPoint const &p) const
{
- QwtText t(QString("%1 %2, %3 dB").
- arg(p.x(), 0, 'f', GetFrequencyPrecision()).
- arg(_unitType.c_str()).arg(p.y(), 0, 'f', 2));
+ QwtDoublePoint dp = QwtPlotZoomer::invTransform(p);
+ QwtText t(QString("%1 %2, %3 dB")
+ .arg(dp.x(), 0, 'f', GetFrequencyPrecision())
+ .arg(_unitType.c_str()).arg(dp.y(), 0, 'f', 2));
return t;
}
@@ -114,41 +70,23 @@ private:
std::string _unitType;
};
-FrequencyDisplayPlot::FrequencyDisplayPlot(QWidget* parent)
- : QwtPlot(parent)
+
+/***********************************************************************
+ * Main frequency display plotter widget
+ **********************************************************************/
+FrequencyDisplayPlot::FrequencyDisplayPlot(int nplots, QWidget* parent)
+ : DisplayPlot(nplots, parent)
{
_startFrequency = 0;
_stopFrequency = 4000;
- _lastReplot = 0;
-
- resize(parent->width(), parent->height());
-
_useCenterFrequencyFlag = false;
_numPoints = 1024;
- _dataPoints = new double[_numPoints];
_minFFTPoints = new double[_numPoints];
_maxFFTPoints = new double[_numPoints];
_xAxisPoints = new double[_numPoints];
- // Disable polygon clipping
-#if QWT_VERSION < 0x060000
- QwtPainter::setDeviceClipping(false);
-#else
- QwtPainter::setPolylineSplitting(false);
-#endif
-
-#if QWT_VERSION < 0x060000
- // We don't need the cache here
- canvas()->setPaintAttribute(QwtPlotCanvas::PaintCached, false);
- canvas()->setPaintAttribute(QwtPlotCanvas::PaintPacked, false);
-#endif
-
- QPalette palette;
- palette.setColor(canvas()->backgroundRole(), QColor("white"));
- canvas()->setPalette(palette);
-
setAxisTitle(QwtPlot::xBottom, "Frequency (Hz)");
setAxisScaleDraw(QwtPlot::xBottom, new FreqDisplayScaleDraw(0));
@@ -158,52 +96,61 @@ FrequencyDisplayPlot::FrequencyDisplayPlot(QWidget* parent)
setAxisScale(QwtPlot::yLeft, _minYAxis, _maxYAxis);
setAxisTitle(QwtPlot::yLeft, "Power (dB)");
+ QList<QColor> default_colors;
+ default_colors << QColor(Qt::blue) << QColor(Qt::red) << QColor(Qt::green)
+ << QColor(Qt::black) << QColor(Qt::cyan) << QColor(Qt::magenta)
+ << QColor(Qt::yellow) << QColor(Qt::gray) << QColor(Qt::darkRed)
+ << QColor(Qt::darkGreen) << QColor(Qt::darkBlue) << QColor(Qt::darkGray);
+
// Automatically deleted when parent is deleted
- _fft_plot_curve = new QwtPlotCurve("Power Spectrum");
- _fft_plot_curve->attach(this);
- _fft_plot_curve->setPen(QPen(Qt::blue));
+ for(int i = 0; i < _nplots; i++) {
+ _dataPoints.push_back(new double[_numPoints]);
+ memset(_dataPoints[i], 0x0, _numPoints*sizeof(double));
+ _plot_curve.push_back(new QwtPlotCurve(QString("Data %1").arg(i)));
+ _plot_curve[i]->attach(this);
#if QWT_VERSION < 0x060000
- _fft_plot_curve->setRawData(_xAxisPoints, _dataPoints, _numPoints);
+ _plot_curve[i]->setRawData(_xAxisPoints, _dataPoints[i], _numPoints);
#else
- _fft_plot_curve->setRawSamples(_xAxisPoints, _dataPoints, _numPoints);
+ _plot_curve[i]->setRawSamples(_xAxisPoints, _dataPoints[i], _numPoints);
#endif
-
+ setLineColor(i, default_colors[i]);
+ }
+
_min_fft_plot_curve = new QwtPlotCurve("Minimum Power");
_min_fft_plot_curve->attach(this);
- _min_fft_plot_curve->setPen(QPen(Qt::magenta));
-
+ const QColor _default_min_fft_color = Qt::magenta;
+ SetMinFFTColor(_default_min_fft_color);
#if QWT_VERSION < 0x060000
_min_fft_plot_curve->setRawData(_xAxisPoints, _minFFTPoints, _numPoints);
#else
_min_fft_plot_curve->setRawSamples(_xAxisPoints, _minFFTPoints, _numPoints);
#endif
-
_min_fft_plot_curve->setVisible(false);
-
+
_max_fft_plot_curve = new QwtPlotCurve("Maximum Power");
_max_fft_plot_curve->attach(this);
- _max_fft_plot_curve->setPen(QPen(Qt::darkYellow));
-
+ QColor _default_max_fft_color = Qt::darkYellow;
+ SetMaxFFTColor(_default_max_fft_color);
#if QWT_VERSION < 0x060000
_max_fft_plot_curve->setRawData(_xAxisPoints, _maxFFTPoints, _numPoints);
#else
_max_fft_plot_curve->setRawSamples(_xAxisPoints, _maxFFTPoints, _numPoints);
#endif
-
_max_fft_plot_curve->setVisible(false);
-
+
_lower_intensity_marker= new QwtPlotMarker();
_lower_intensity_marker->setLineStyle(QwtPlotMarker::HLine);
- _lower_intensity_marker->setLinePen(QPen(Qt::cyan));
+ QColor _default_marker_lower_intensity_color = Qt::cyan;
+ SetMarkerLowerIntensityColor(_default_marker_lower_intensity_color);
_lower_intensity_marker->attach(this);
-
+
_upper_intensity_marker = new QwtPlotMarker();
_upper_intensity_marker->setLineStyle(QwtPlotMarker::HLine);
- _upper_intensity_marker->setLinePen(QPen(Qt::green, 0, Qt::DotLine));
+ QColor _default_marker_upper_intensity_color = Qt::green;
+ SetMarkerUpperIntensityColor(_default_marker_upper_intensity_color);
_upper_intensity_marker->attach(this);
- memset(_dataPoints, 0x0, _numPoints*sizeof(double));
memset(_xAxisPoints, 0x0, _numPoints*sizeof(double));
for(int64_t number = 0; number < _numPoints; number++){
@@ -211,33 +158,22 @@ FrequencyDisplayPlot::FrequencyDisplayPlot(QWidget* parent)
_maxFFTPoints[number] = -280.0;
}
- // set up peak marker
- QwtSymbol symbol;
-
_markerPeakAmplitude = new QwtPlotMarker();
- _markerPeakAmplitude->setLinePen(QPen(Qt::yellow));
- symbol.setStyle(QwtSymbol::Diamond);
- symbol.setSize(8);
- symbol.setPen(QPen(Qt::yellow));
- symbol.setBrush(QBrush(Qt::yellow));
-
-#if QWT_VERSION < 0x060000
- _markerPeakAmplitude->setSymbol(symbol);
-#else
- _markerPeakAmplitude->setSymbol(&symbol);
-#endif
-
+ QColor _default_marker_peak_amplitude_color = Qt::yellow;
+ SetMarkerPeakAmplitudeColor(_default_marker_peak_amplitude_color);
/// THIS CAUSES A PROBLEM!
//_markerPeakAmplitude->attach(this);
_markerNoiseFloorAmplitude = new QwtPlotMarker();
_markerNoiseFloorAmplitude->setLineStyle(QwtPlotMarker::HLine);
- _markerNoiseFloorAmplitude->setLinePen(QPen(Qt::darkRed, 0, Qt::DotLine));
+ QColor _default_marker_noise_floor_amplitude_color = Qt::darkRed;
+ SetMarkerNoiseFloorAmplitudeColor(_default_marker_noise_floor_amplitude_color);
_markerNoiseFloorAmplitude->attach(this);
_markerCF= new QwtPlotMarker();
_markerCF->setLineStyle(QwtPlotMarker::VLine);
- _markerCF->setLinePen(QPen(Qt::lightGray, 0, Qt::DotLine));
+ QColor _default_marker_CF_color = Qt::lightGray;
+ SetMarkerCFColor(_default_marker_CF_color);
_markerCF->attach(this);
_markerCF->hide();
@@ -248,21 +184,6 @@ FrequencyDisplayPlot::FrequencyDisplayPlot(QWidget* parent)
replot();
- // emit the position of clicks on widget
- _picker = new QwtDblClickPlotPicker(canvas());
-
-#if QWT_VERSION < 0x060000
- connect(_picker, SIGNAL(selected(const QwtDoublePoint &)),
- this, SLOT(OnPickerPointSelected(const QwtDoublePoint &)));
-#else
- connect(_picker, SIGNAL(selected(const QPointF &)),
- this, SLOT(OnPickerPointSelected6(const QPointF &)));
-#endif
-
- // Configure magnify on mouse wheel
- _magnifier = new QwtPlotMagnifier(canvas());
- _magnifier->setAxisEnabled(QwtPlot::xBottom, false);
-
_zoomer = new FreqDisplayZoomer(canvas(), 0);
#if QWT_VERSION < 0x060000
@@ -274,38 +195,33 @@ FrequencyDisplayPlot::FrequencyDisplayPlot(QWidget* parent)
_zoomer->setMousePattern(QwtEventPattern::MouseSelect3,
Qt::RightButton);
- _panner = new QwtPlotPanner(canvas());
- _panner->setAxisEnabled(QwtPlot::yRight, false);
- _panner->setMouseButton(Qt::MidButton);
-
- // Avoid jumping when labels with more/less digits
- // appear/disappear when scrolling vertically
- const QFontMetrics fm(axisWidget(QwtPlot::yLeft)->font());
- QwtScaleDraw *sd = axisScaleDraw(QwtPlot::yLeft);
- sd->setMinimumExtent( fm.width("100.00") );
-
- const QColor c(Qt::darkRed);
- _zoomer->setRubberBandPen(c);
- _zoomer->setTrackerPen(c);
+ const QColor default_zoomer_color(Qt::darkRed);
+ setZoomerColor(default_zoomer_color);
// Do this after the zoomer has been built
_resetXAxisPoints();
+
+ // Turn off min/max hold plots in legend
+ QWidget *w;
+ QwtLegend* legendDisplay = legend();
+ w = legendDisplay->find(_min_fft_plot_curve);
+ ((QwtLegendItem*)w)->setChecked(true);
+ w = legendDisplay->find(_max_fft_plot_curve);
+ ((QwtLegendItem*)w)->setChecked(true);
}
FrequencyDisplayPlot::~FrequencyDisplayPlot()
{
- delete[] _dataPoints;
+ for(int i = 0; i < _nplots; i++)
+ delete [] _dataPoints[i];
delete[] _maxFFTPoints;
delete[] _minFFTPoints;
delete[] _xAxisPoints;
-
- // _fft_plot_curves deleted when parent deleted
- // _zoomer and _panner deleted when parent deleted
}
void
-FrequencyDisplayPlot::set_yaxis(double min, double max)
+FrequencyDisplayPlot::setYaxis(double min, double max)
{
// Get the new max/min values for the plot
_minYAxis = min;
@@ -390,73 +306,85 @@ FrequencyDisplayPlot::replot()
}
void
-FrequencyDisplayPlot::resizeSlot( QSize *s )
-{
- resize(s->width(), s->height());
-}
-
-void
-FrequencyDisplayPlot::PlotNewData(const double* dataPoints, const int64_t numDataPoints,
+FrequencyDisplayPlot::PlotNewData(const std::vector<double*> dataPoints,
+ const int64_t numDataPoints,
const double noiseFloorAmplitude, const double peakFrequency,
const double peakAmplitude, const double timeInterval)
{
- // Only update plot if there is data and if the time interval has elapsed
- if((numDataPoints > 0) &&
- (gruel::high_res_timer_now() - _lastReplot > timeInterval*gruel::high_res_timer_tps())) {
-
- if(numDataPoints != _numPoints) {
- _numPoints = numDataPoints;
-
- delete[] _dataPoints;
- delete[] _minFFTPoints;
- delete[] _maxFFTPoints;
- delete[] _xAxisPoints;
- _dataPoints = new double[_numPoints];
- _xAxisPoints = new double[_numPoints];
- _minFFTPoints = new double[_numPoints];
- _maxFFTPoints = new double[_numPoints];
-
+ if(!_stop) {
+ if(numDataPoints > 0) {
+ if(numDataPoints != _numPoints) {
+ _numPoints = numDataPoints;
+
+ delete[] _minFFTPoints;
+ delete[] _maxFFTPoints;
+ delete[] _xAxisPoints;
+ _xAxisPoints = new double[_numPoints];
+ _minFFTPoints = new double[_numPoints];
+ _maxFFTPoints = new double[_numPoints];
+
+ for(int i = 0; i < _nplots; i++) {
+ delete[] _dataPoints[i];
+ _dataPoints[i] = new double[_numPoints];
+
#if QWT_VERSION < 0x060000
- _fft_plot_curve->setRawData(_xAxisPoints, _dataPoints, _numPoints);
- _min_fft_plot_curve->setRawData(_xAxisPoints, _minFFTPoints, _numPoints);
- _max_fft_plot_curve->setRawData(_xAxisPoints, _maxFFTPoints, _numPoints);
+ _plot_curve[i]->setRawData(_xAxisPoints, _dataPoints[i], _numPoints);
#else
- _fft_plot_curve->setRawSamples(_xAxisPoints, _dataPoints, _numPoints);
- _min_fft_plot_curve->setRawSamples(_xAxisPoints, _minFFTPoints, _numPoints);
- _max_fft_plot_curve->setRawSamples(_xAxisPoints, _maxFFTPoints, _numPoints);
+ _plot_curve[i]->setRawSamples(_xAxisPoints, _dataPoints[i], _numPoints);
#endif
-
- _resetXAxisPoints();
- ClearMaxData();
- ClearMinData();
- }
-
- memcpy(_dataPoints, dataPoints, numDataPoints*sizeof(double));
- for(int64_t point = 0; point < numDataPoints; point++){
- if(dataPoints[point] < _minFFTPoints[point]){
- _minFFTPoints[point] = dataPoints[point];
+ }
+#if QWT_VERSION < 0x060000
+ _min_fft_plot_curve->setRawData(_xAxisPoints, _minFFTPoints, _numPoints);
+ _max_fft_plot_curve->setRawData(_xAxisPoints, _maxFFTPoints, _numPoints);
+#else
+ _min_fft_plot_curve->setRawSamples(_xAxisPoints, _minFFTPoints, _numPoints);
+ _max_fft_plot_curve->setRawSamples(_xAxisPoints, _maxFFTPoints, _numPoints);
+#endif
+ _resetXAxisPoints();
+ ClearMaxData();
+ ClearMinData();
}
- if(dataPoints[point] > _maxFFTPoints[point]){
- _maxFFTPoints[point] = dataPoints[point];
+
+ for(int i = 0; i < _nplots; i++) {
+ memcpy(_dataPoints[i], dataPoints[i], numDataPoints*sizeof(double));
}
+
+ for(int64_t point = 0; point < numDataPoints; point++){
+ if(dataPoints[0][point] < _minFFTPoints[point]) {
+ _minFFTPoints[point] = dataPoints[0][point];
+ }
+ if(dataPoints[0][point] > _maxFFTPoints[point]) {
+ _maxFFTPoints[point] = dataPoints[0][point];
+ }
+ }
+
+ _noiseFloorAmplitude = noiseFloorAmplitude;
+ _peakFrequency = peakFrequency;
+ _peakAmplitude = peakAmplitude;
+
+ SetUpperIntensityLevel(_peakAmplitude);
+
+ replot();
}
-
- _noiseFloorAmplitude = noiseFloorAmplitude;
- _peakFrequency = peakFrequency;
- _peakAmplitude = peakAmplitude;
-
- SetUpperIntensityLevel(_peakAmplitude);
-
- replot();
-
- _lastReplot = gruel::high_res_timer_now();
}
}
void
+FrequencyDisplayPlot::PlotNewData(const double* dataPoints,
+ const int64_t numDataPoints,
+ const double noiseFloorAmplitude, const double peakFrequency,
+ const double peakAmplitude, const double timeInterval)
+{
+ std::vector<double*> vecDataPoints;
+ vecDataPoints.push_back((double*)dataPoints);
+ PlotNewData(vecDataPoints, numDataPoints, noiseFloorAmplitude,
+ peakFrequency, peakAmplitude, timeInterval);
+}
+
+void
FrequencyDisplayPlot::ClearMaxData()
{
- for(int64_t number = 0; number < _numPoints; number++){
+ for(int64_t number = 0; number < _numPoints; number++) {
_maxFFTPoints[number] = _minYAxis;
}
}
@@ -464,7 +392,7 @@ FrequencyDisplayPlot::ClearMaxData()
void
FrequencyDisplayPlot::ClearMinData()
{
- for(int64_t number = 0; number < _numPoints; number++){
+ for(int64_t number = 0; number < _numPoints; number++) {
_minFFTPoints[number] = _maxYAxis;
}
}
@@ -472,21 +400,32 @@ FrequencyDisplayPlot::ClearMinData()
void
FrequencyDisplayPlot::SetMaxFFTVisible(const bool visibleFlag)
{
+ _max_fft_visible = visibleFlag;
_max_fft_plot_curve->setVisible(visibleFlag);
}
+const bool FrequencyDisplayPlot::GetMaxFFTVisible() const
+{
+ return _max_fft_visible;
+}
void
FrequencyDisplayPlot::SetMinFFTVisible(const bool visibleFlag)
{
+ _min_fft_visible = visibleFlag;
_min_fft_plot_curve->setVisible(visibleFlag);
}
+const bool FrequencyDisplayPlot::GetMinFFTVisible() const
+{
+ return _min_fft_visible;
+}
void
FrequencyDisplayPlot::_resetXAxisPoints()
{
- double fft_bin_size = (_stopFrequency-_startFrequency) / static_cast<double>(_numPoints);
+ double fft_bin_size = (_stopFrequency-_startFrequency)
+ / static_cast<double>(_numPoints);
double freqValue = _startFrequency;
- for(int64_t loc = 0; loc < _numPoints; loc++){
+ for(int64_t loc = 0; loc < _numPoints; loc++) {
_xAxisPoints[loc] = freqValue;
freqValue += fft_bin_size;
}
@@ -506,23 +445,23 @@ FrequencyDisplayPlot::_resetXAxisPoints()
void
FrequencyDisplayPlot::SetLowerIntensityLevel(const double lowerIntensityLevel)
{
- _lower_intensity_marker->setYValue( lowerIntensityLevel );
+ _lower_intensity_marker->setYValue(lowerIntensityLevel);
}
void
FrequencyDisplayPlot::SetUpperIntensityLevel(const double upperIntensityLevel)
{
- _upper_intensity_marker->setYValue( upperIntensityLevel );
+ _upper_intensity_marker->setYValue(upperIntensityLevel);
}
void
-FrequencyDisplayPlot::SetTraceColour (QColor c)
+FrequencyDisplayPlot::SetTraceColour(QColor c)
{
- _fft_plot_curve->setPen(QPen(c));
+ _plot_curve[0]->setPen(QPen(c));
}
void
-FrequencyDisplayPlot::SetBGColour (QColor c)
+FrequencyDisplayPlot::SetBGColour(QColor c)
{
QPalette palette;
palette.setColor(canvas()->backgroundRole(), c);
@@ -530,7 +469,7 @@ FrequencyDisplayPlot::SetBGColour (QColor c)
}
void
-FrequencyDisplayPlot::ShowCFMarker (const bool show)
+FrequencyDisplayPlot::ShowCFMarker(const bool show)
{
if (show)
_markerCF->show();
@@ -557,4 +496,111 @@ FrequencyDisplayPlot::OnPickerPointSelected6(const QPointF & p)
emit plotPointSelected(point);
}
+void
+FrequencyDisplayPlot::SetMinFFTColor (QColor c)
+{
+ _min_fft_color = c;
+ _min_fft_plot_curve->setPen(QPen(c));
+}
+const QColor
+FrequencyDisplayPlot::GetMinFFTColor() const {return _min_fft_color;}
+
+void
+FrequencyDisplayPlot::SetMaxFFTColor (QColor c)
+{
+ _max_fft_color = c;
+ _max_fft_plot_curve->setPen(QPen(c));
+}
+const QColor
+FrequencyDisplayPlot::GetMaxFFTColor() const {return _max_fft_color;}
+
+void
+FrequencyDisplayPlot::SetMarkerLowerIntensityColor (QColor c)
+{
+ _marker_lower_intensity_color = c;
+ _lower_intensity_marker->setLinePen(QPen(c));
+}
+const QColor
+FrequencyDisplayPlot::GetMarkerLowerIntensityColor () const {return _marker_lower_intensity_color;}
+void
+FrequencyDisplayPlot::SetMarkerLowerIntensityVisible (bool visible)
+{
+ _marker_lower_intensity_visible = visible;
+ if (visible)
+ _lower_intensity_marker->setLineStyle(QwtPlotMarker::HLine);
+ else
+ _lower_intensity_marker->setLineStyle(QwtPlotMarker::NoLine);
+}
+const bool
+FrequencyDisplayPlot::GetMarkerLowerIntensityVisible () const {return _marker_lower_intensity_visible;}
+
+void
+FrequencyDisplayPlot::SetMarkerUpperIntensityColor (QColor c)
+{
+ _marker_upper_intensity_color = c;
+ _upper_intensity_marker->setLinePen(QPen(c, 0, Qt::DotLine));
+}
+const QColor
+FrequencyDisplayPlot::GetMarkerUpperIntensityColor () const {return _marker_upper_intensity_color;}
+void
+FrequencyDisplayPlot::SetMarkerUpperIntensityVisible (bool visible)
+{
+ _marker_upper_intensity_visible = visible;
+ if (visible)
+ _upper_intensity_marker->setLineStyle(QwtPlotMarker::HLine);
+ else
+ _upper_intensity_marker->setLineStyle(QwtPlotMarker::NoLine);
+}
+const bool
+FrequencyDisplayPlot::GetMarkerUpperIntensityVisible () const {return _marker_upper_intensity_visible;}
+
+void
+FrequencyDisplayPlot::SetMarkerPeakAmplitudeColor (QColor c)
+{
+ _marker_peak_amplitude_color = c;
+ _markerPeakAmplitude->setLinePen(QPen(c));
+ QwtSymbol symbol;
+ symbol.setStyle(QwtSymbol::Diamond);
+ symbol.setSize(8);
+ symbol.setPen(QPen(c));
+ symbol.setBrush(QBrush(c));
+#if QWT_VERSION < 0x060000
+ _markerPeakAmplitude->setSymbol(symbol);
+#else
+ _markerPeakAmplitude->setSymbol(&symbol);
+#endif
+}
+const QColor
+FrequencyDisplayPlot::GetMarkerPeakAmplitudeColor () const {return _marker_peak_amplitude_color;}
+
+void
+FrequencyDisplayPlot::SetMarkerNoiseFloorAmplitudeColor (QColor c)
+{
+ _marker_noise_floor_amplitude_color = c;
+ _markerNoiseFloorAmplitude->setLinePen(QPen(c, 0, Qt::DotLine));
+}
+const QColor
+FrequencyDisplayPlot::GetMarkerNoiseFloorAmplitudeColor () const {return _marker_noise_floor_amplitude_color;}
+
+void
+FrequencyDisplayPlot::SetMarkerNoiseFloorAmplitudeVisible (bool visible)
+{
+ _marker_noise_floor_amplitude_visible = visible;
+ if (visible)
+ _markerNoiseFloorAmplitude->setLineStyle(QwtPlotMarker::HLine);
+ else
+ _markerNoiseFloorAmplitude->setLineStyle(QwtPlotMarker::NoLine);
+}
+const bool
+FrequencyDisplayPlot::GetMarkerNoiseFloorAmplitudeVisible () const {return _marker_noise_floor_amplitude_visible;}
+
+void
+FrequencyDisplayPlot::SetMarkerCFColor (QColor c)
+{
+ _marker_CF_color = c;
+ _markerCF->setLinePen(QPen(c, 0, Qt::DotLine));
+}
+const QColor
+FrequencyDisplayPlot::GetMarkerCFColor () const {return _marker_CF_color;}
+
#endif /* FREQUENCY_DISPLAY_PLOT_C */