diff options
Diffstat (limited to 'gr-qtgui/lib/FrequencyDisplayPlot.h')
-rw-r--r-- | gr-qtgui/lib/FrequencyDisplayPlot.h | 155 |
1 files changed, 88 insertions, 67 deletions
diff --git a/gr-qtgui/lib/FrequencyDisplayPlot.h b/gr-qtgui/lib/FrequencyDisplayPlot.h index 5c3ea708c3..22d2be0055 100644 --- a/gr-qtgui/lib/FrequencyDisplayPlot.h +++ b/gr-qtgui/lib/FrequencyDisplayPlot.h @@ -1,6 +1,6 @@ /* -*- c++ -*- */ /* - * Copyright 2008,2009,2010,2011 Free Software Foundation, Inc. + * Copyright 2008-2011 Free Software Foundation, Inc. * * This file is part of GNU Radio * @@ -25,115 +25,136 @@ #include <stdint.h> #include <cstdio> -#include <qwt_plot.h> -#include <qwt_painter.h> -#include <qwt_plot_canvas.h> -#include <qwt_plot_curve.h> -#include <qwt_scale_engine.h> -#include <qwt_scale_widget.h> -#include <qwt_plot_zoomer.h> -#include <qwt_plot_panner.h> -#include <qwt_plot_marker.h> -#include <qwt_plot_magnifier.h> -#include <gruel/high_res_timer.h> -#include <qwt_symbol.h> -#include <qtgui_util.h> - -#if QWT_VERSION >= 0x060000 -#include <qwt_compat.h> -#endif - -class FrequencyDisplayPlot:public QwtPlot{ +#include <vector> +#include "DisplayPlot.h" + +class FrequencyDisplayPlot: public DisplayPlot +{ Q_OBJECT + Q_PROPERTY ( QColor min_fft_color READ getMinFFTColor WRITE setMinFFTColor ) + Q_PROPERTY ( QColor max_fft_color READ getMaxFFTColor WRITE setMaxFFTColor ) + Q_PROPERTY ( bool min_fft_visible READ getMinFFTVisible WRITE setMinFFTVisible ) + Q_PROPERTY ( bool max_fft_visible READ getMaxFFTVisible WRITE setMaxFFTVisible ) + Q_PROPERTY ( QColor marker_lower_intensity_color READ getMarkerLowerIntensityColor WRITE setMarkerLowerIntensityColor ) + Q_PROPERTY ( bool marker_lower_intensity_visible READ getMarkerLowerIntensityVisible WRITE setMarkerLowerIntensityVisible ) + Q_PROPERTY ( QColor marker_upper_intensity_color READ getMarkerUpperIntensityColor WRITE setMarkerUpperIntensityColor ) + Q_PROPERTY ( bool marker_upper_intensity_visible READ getMarkerUpperIntensityVisible WRITE setMarkerUpperIntensityVisible ) + Q_PROPERTY ( QColor marker_peak_amplitude_color READ getMarkerPeakAmplitudeColor WRITE setMarkerPeakAmplitudeColor ) + Q_PROPERTY ( QColor marker_noise_floor_amplitude_color READ getMarkerNoiseFloorAmplitudeColor WRITE setMarkerNoiseFloorAmplitudeColor ) + Q_PROPERTY ( bool marker_noise_floor_amplitude_visible READ getMarkerNoiseFloorAmplitudeVisible WRITE setMarkerNoiseFloorAmplitudeVisible ) + Q_PROPERTY ( QColor marker_CF_color READ getMarkerCFColor WRITE setMarkerCFColor ) + public: - FrequencyDisplayPlot(QWidget*); + FrequencyDisplayPlot(int nplots, QWidget*); virtual ~FrequencyDisplayPlot(); - void SetFrequencyRange(const double, const double, - const double, const bool, + void setFrequencyRange(const double, const double, const double units=1000.0, const std::string &strunits = "kHz"); - double GetStartFrequency()const; - double GetStopFrequency()const; + double getStartFrequency()const; + double getStopFrequency()const; - void PlotNewData(const double* dataPoints, const int64_t numDataPoints, + void plotNewData(const std::vector<double*> dataPoints, + const int64_t numDataPoints, const double noiseFloorAmplitude, const double peakFrequency, const double peakAmplitude, const double timeInterval); - void ClearMaxData(); - void ClearMinData(); - - void SetMaxFFTVisible(const bool); - void SetMinFFTVisible(const bool); + // Old method to be removed + void plotNewData(const double* dataPoints, + const int64_t numDataPoints, + const double noiseFloorAmplitude, const double peakFrequency, + const double peakAmplitude, const double timeInterval); - virtual void replot(); + void clearMaxData(); + void clearMinData(); - void set_yaxis(double min, double max); + void replot(); - void SetTraceColour (QColor); - void SetBGColour (QColor c); - void ShowCFMarker (const bool); + void setYaxis(double min, double max); -public slots: - void resizeSlot( QSize *e ); - void SetLowerIntensityLevel(const double); - void SetUpperIntensityLevel(const double); + void setTraceColour (QColor); + void setBGColour (QColor c); + void showCFMarker (const bool); - // Because of the preprocessing of slots in QT, these are no - // easily separated by the version check. Make one for each - // version until it's worked out. - void OnPickerPointSelected(const QwtDoublePoint & p); - void OnPickerPointSelected6(const QPointF & p); + const bool getMaxFFTVisible() const; + const bool getMinFFTVisible() const; + const QColor getMinFFTColor() const; + const QColor getMaxFFTColor() const; + const QColor getMarkerLowerIntensityColor () const; + const bool getMarkerLowerIntensityVisible () const; + const QColor getMarkerUpperIntensityColor () const; + const bool getMarkerUpperIntensityVisible () const; + const QColor getMarkerPeakAmplitudeColor () const; + const bool getMarkerNoiseFloorAmplitudeVisible () const; + const QColor getMarkerNoiseFloorAmplitudeColor () const; + const QColor getMarkerCFColor () const; -signals: - void plotPointSelected(const QPointF p); - -protected: +public slots: + void setMaxFFTVisible(const bool); + void setMinFFTVisible(const bool); + void setMinFFTColor (QColor c); + void setMaxFFTColor (QColor c); + void setMarkerLowerIntensityColor (QColor c); + void setMarkerLowerIntensityVisible (bool visible); + void setMarkerUpperIntensityColor (QColor c); + void setMarkerUpperIntensityVisible (bool visible); + void setMarkerPeakAmplitudeColor (QColor c); + void setMarkerNoiseFloorAmplitudeVisible (bool visible); + void setMarkerNoiseFloorAmplitudeColor (QColor c); + void setMarkerCFColor (QColor c); + + void setLowerIntensityLevel(const double); + void setUpperIntensityLevel(const double); + + void onPickerPointSelected(const QwtDoublePoint & p); + void onPickerPointSelected6(const QPointF & p); + + void setAutoScale(bool state); private: - void _resetXAxisPoints(); + void _autoScale(double bottom, double top); + + std::vector<double*> _dataPoints; + + QwtPlotCurve* _min_fft_plot_curve; + QwtPlotCurve* _max_fft_plot_curve; + QColor _min_fft_color; + bool _min_fft_visible; + QColor _max_fft_color; + bool _max_fft_visible; + QColor _marker_lower_intensity_color; + bool _marker_lower_intensity_visible; + QColor _marker_upper_intensity_color; + bool _marker_upper_intensity_visible; + QColor _marker_peak_amplitude_color; + QColor _marker_noise_floor_amplitude_color; + bool _marker_noise_floor_amplitude_visible; + QColor _marker_CF_color; double _startFrequency; double _stopFrequency; double _maxYAxis; double _minYAxis; - QwtPlotCurve* _fft_plot_curve; - QwtPlotCurve* _min_fft_plot_curve; - QwtPlotCurve* _max_fft_plot_curve; - QwtPlotMarker* _lower_intensity_marker; QwtPlotMarker* _upper_intensity_marker; - QwtPlotPanner* _panner; - QwtPlotZoomer* _zoomer; - QwtPlotMarker *_markerPeakAmplitude; QwtPlotMarker *_markerNoiseFloorAmplitude; QwtPlotMarker *_markerCF; - QwtDblClickPlotPicker *_picker; - - QwtPlotMagnifier *_magnifier; - - double* _dataPoints; double* _xAxisPoints; int _xAxisMultiplier; double* _minFFTPoints; double* _maxFFTPoints; - int64_t _numPoints; double _peakFrequency; double _peakAmplitude; double _noiseFloorAmplitude; - - gruel::high_res_timer_type _lastReplot; - - bool _useCenterFrequencyFlag; }; #endif /* FREQUENCY_DISPLAY_PLOT_HPP */ |