1 /////////////////////////////////////////////////////////////////////////// 2 // Some code in this file and accompanying files is based on work by 3 // Moe Wheatley, AE4Y, released under the "Simplified BSD License". 4 // For more details see the accompanying file LICENSE_WHEATLEY.TXT 5 /////////////////////////////////////////////////////////////////////////// 6 7 #ifndef PLOTTER_H 8 #define PLOTTER_H 9 10 #include <QtGui> 11 #include <QFrame> 12 #include <QImage> 13 #include <QToolTip> 14 #include <cstring> 15 #include "commons.h" 16 17 #define VERT_DIVS 7 //specify grid screen divisions 18 #define HORZ_DIVS 20 19 20 class CPlotter : public QFrame 21 { 22 Q_OBJECT 23 public: 24 explicit CPlotter(QWidget *parent = 0); 25 ~CPlotter(); 26 27 QSize minimumSizeHint() const override; 28 QSize sizeHint() const override; 29 QColor m_ColorTbl[256]; 30 bool m_bDecodeFinished; 31 int m_plotZero; 32 int m_plotGain; 33 float m_fSpan; 34 qint32 m_nSpan; 35 qint32 m_binsPerPixel; 36 qint32 m_fQSO; 37 qint32 m_DF; 38 qint32 m_tol; 39 qint32 m_fCal; 40 41 void draw(float sw[], int i0, float splot[]); //Update the waterfalls 42 void SetRunningState(bool running); 43 void setPlotZero(int plotZero); 44 int getPlotZero(); 45 void setPlotGain(int plotGain); 46 int getPlotGain(); 47 void SetCenterFreq(int f); 48 qint64 centerFreq(); 49 void SetStartFreq(quint64 f); 50 qint64 startFreq(); 51 void SetFreqOffset(quint64 f); 52 qint64 freqOffset(); 53 int plotWidth(); 54 void setNSpan(int n); 55 void UpdateOverlay(); 56 void setDataFromDisk(bool b); 57 void setTol(int n); 58 void setBinsPerPixel(int n); 59 int binsPerPixel(); 60 void setFQSO(int n, bool bf); 61 void setFcal(int n); 62 void setNkhz(int n); 63 void DecodeFinished(); 64 void DrawOverlay(); 65 int fQSO(); 66 int DF(); 67 int autoZero(); 68 void setPalette(QString palette); 69 void setFsample(int n); 70 void setMode65(int n); 71 void set2Dspec(bool b); 72 double fGreen(); 73 void setLockTxRx(bool b); 74 double rxFreq(); 75 double txFreq(); 76 // void updateFreqLabel(); 77 78 signals: 79 void freezeDecode0(int n); 80 void freezeDecode1(int n); 81 82 protected: 83 //re-implemented widget event handlers 84 void paintEvent(QPaintEvent *event) override; 85 void resizeEvent(QResizeEvent* event) override; 86 void mouseMoveEvent(QMouseEvent * event) override; 87 88 private: 89 90 void MakeFrequencyStrs(); 91 void UTCstr(); 92 int XfromFreq(float f); 93 float FreqfromX(int x); 94 qint64 RoundFreq(qint64 freq, int resolution); 95 96 QPixmap m_WaterfallPixmap; 97 QPixmap m_ZoomWaterfallPixmap; 98 QPixmap m_2DPixmap; 99 unsigned char m_zwf[32768*400]; 100 QPixmap m_ScalePixmap; 101 QPixmap m_ZoomScalePixmap; 102 QSize m_Size; 103 QString m_Str; 104 QString m_HDivText[483]; 105 bool m_Running; 106 bool m_paintEventBusy; 107 bool m_2Dspec; 108 bool m_paintAllZoom; 109 bool m_bLockTxRx; 110 double m_CenterFreq; 111 double m_fGreen; 112 double m_TXfreq; 113 qint64 m_StartFreq; 114 qint64 m_ZoomStartFreq; 115 qint64 m_FreqOffset; 116 qint32 m_dBStepSize; 117 qint32 m_FreqUnits; 118 qint32 m_hdivs; 119 bool m_dataFromDisk; 120 QString m_sutc; 121 qint32 m_line; 122 qint32 m_hist1[256]; 123 qint32 m_hist2[256]; 124 qint32 m_z1; 125 qint32 m_z2; 126 qint32 m_nkhz; 127 qint32 m_fSample; 128 qint32 m_mode65; 129 qint32 m_i0; 130 qint32 m_xClick; 131 qint32 m_TXkHz; 132 qint32 m_TxDF; 133 134 private slots: 135 void mousePressEvent(QMouseEvent *event) override; 136 void mouseDoubleClickEvent(QMouseEvent *event) override; 137 }; 138 139 #endif // PLOTTER_H 140