mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-11-03 13:30:52 -05:00 
			
		
		
		
	Also use correct C binding and have compilers determine sizes and offsets. The wsjtx.exe program now owns the decoder shared data that is shared with symspec. It is now in struct dec_data, still a global variable for now but hopefully a MainWindow member variable soon. The struct dec_data (in both C/C++ and Fortran) has a sub structure with the decoder parameters which enables copying and manipulating a lot cleaner. New of changed types of shared data must still be modified in commons.h and a new file lib/jt9com.f90, they must stay in sync as a pointer to the structure is passed between C and Fortran. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@6290 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			175 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			175 lines
		
	
	
		
			4.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// -*- Mode: C++ -*-
 | 
						|
///////////////////////////////////////////////////////////////////////////
 | 
						|
// Some code in this file and accompanying files is based on work by
 | 
						|
// Moe Wheatley, AE4Y, released under the "Simplified BSD License".
 | 
						|
// For more details see the accompanying file LICENSE_WHEATLEY.TXT
 | 
						|
///////////////////////////////////////////////////////////////////////////
 | 
						|
 | 
						|
#ifndef PLOTTER_H
 | 
						|
#define PLOTTER_H
 | 
						|
 | 
						|
#ifdef QT5
 | 
						|
#include <QtWidgets>
 | 
						|
#else
 | 
						|
#include <QtGui>
 | 
						|
#endif
 | 
						|
#include <QFrame>
 | 
						|
#include <QImage>
 | 
						|
#include <QVector>
 | 
						|
#include <cstring>
 | 
						|
 | 
						|
#define VERT_DIVS 7	//specify grid screen divisions
 | 
						|
#define HORZ_DIVS 20
 | 
						|
 | 
						|
class CPlotter : public QFrame
 | 
						|
{
 | 
						|
  Q_OBJECT;
 | 
						|
 | 
						|
public:
 | 
						|
  explicit CPlotter(QWidget *parent = 0);
 | 
						|
  ~CPlotter();
 | 
						|
 | 
						|
  QSize minimumSizeHint() const;
 | 
						|
  QSize sizeHint() const;
 | 
						|
  bool    m_bScaleOK;
 | 
						|
 | 
						|
  void draw(float swide[], bool bScroll);		//Update the waterfall
 | 
						|
  void SetRunningState(bool running);
 | 
						|
  void setPlotZero(int plotZero);
 | 
						|
  int  plotZero();
 | 
						|
  void setPlotGain(int plotGain);
 | 
						|
  int  plotGain();
 | 
						|
  int  plot2dGain();
 | 
						|
  void setPlot2dGain(int n);
 | 
						|
  int  plot2dZero();
 | 
						|
  void setPlot2dZero(int plot2dZero);
 | 
						|
  void setStartFreq(int f);
 | 
						|
  int startFreq();
 | 
						|
  int  plotWidth();
 | 
						|
  void UpdateOverlay();
 | 
						|
  void setDataFromDisk(bool b);
 | 
						|
  void setRxRange(int fMin);
 | 
						|
  void setBinsPerPixel(int n);
 | 
						|
  int  binsPerPixel();
 | 
						|
  void setWaterfallAvg(int n);
 | 
						|
  void setRxFreq(int n);
 | 
						|
  void DrawOverlay();
 | 
						|
  int  rxFreq();
 | 
						|
  void setFsample(int n);
 | 
						|
  void setNsps(int ntrperiod, int nsps);
 | 
						|
  void setTxFreq(int n);
 | 
						|
  void setMode(QString mode);
 | 
						|
  void setSubMode(int n);
 | 
						|
  void setModeTx(QString modeTx);
 | 
						|
  void SetPercent2DScreen(int percent);
 | 
						|
  int  Fmax();
 | 
						|
  void setDialFreq(double d);
 | 
						|
  void setCurrent(bool b) {m_bCurrent = b;}
 | 
						|
  bool current() const {return m_bCurrent;}
 | 
						|
  void setCumulative(bool b) {m_bCumulative = b;}
 | 
						|
  bool cumulative() const {return m_bCumulative;}
 | 
						|
  void setLinearAvg(bool b) {m_bLinearAvg = b;}
 | 
						|
  bool linearAvg() const {return m_bLinearAvg;}
 | 
						|
  void setBreadth(qint32 w) {m_w = w;}
 | 
						|
  qint32 breadth() const {return m_w;}
 | 
						|
  float fSpan() const {return m_fSpan;}
 | 
						|
  void setLockTxFreq(bool b) {m_lockTxFreq = b;}
 | 
						|
  void setColours(QVector<QColor> const& cl);
 | 
						|
  void setFlatten(bool b);
 | 
						|
  void setTol(int n);
 | 
						|
  void setRxBand(QString band);
 | 
						|
  void setReference(bool b) {m_bReference = b;}
 | 
						|
  bool Reference() const {return m_bReference;}
 | 
						|
 | 
						|
signals:
 | 
						|
  void freezeDecode1(int n);
 | 
						|
  void setFreq1(int rxFreq, int txFreq);
 | 
						|
 | 
						|
protected:
 | 
						|
  //re-implemented widget event handlers
 | 
						|
  void paintEvent(QPaintEvent *event);
 | 
						|
  void resizeEvent(QResizeEvent* event);
 | 
						|
 | 
						|
private:
 | 
						|
 | 
						|
  void MakeFrequencyStrs();
 | 
						|
  int XfromFreq(float f);
 | 
						|
  float FreqfromX(int x);
 | 
						|
 | 
						|
  bool    m_bCurrent;
 | 
						|
  bool    m_bCumulative;
 | 
						|
  bool    m_bLinearAvg;
 | 
						|
  bool    m_bReference;
 | 
						|
  bool    m_bReference0;
 | 
						|
  bool    m_lockTxFreq;
 | 
						|
 | 
						|
  float   m_fSpan;
 | 
						|
 | 
						|
  qint32  m_plotZero;
 | 
						|
  qint32  m_plotGain;
 | 
						|
  qint32  m_plot2dGain;
 | 
						|
  qint32  m_plot2dZero;
 | 
						|
  qint32  m_binsPerPixel;
 | 
						|
  qint32  m_waterfallAvg;
 | 
						|
  qint32  m_w;
 | 
						|
  qint32  m_Flatten;
 | 
						|
  qint32  m_nSubMode;
 | 
						|
 | 
						|
  QPixmap m_WaterfallPixmap;
 | 
						|
  QPixmap m_2DPixmap;
 | 
						|
  QPixmap m_ScalePixmap;
 | 
						|
  QPixmap m_OverlayPixmap;
 | 
						|
 | 
						|
  QSize   m_Size;
 | 
						|
  QString m_Str;
 | 
						|
  QString m_HDivText[483];
 | 
						|
  QString m_mode;
 | 
						|
  QString m_modeTx;
 | 
						|
  QString m_rxBand;
 | 
						|
 | 
						|
  bool    m_Running;
 | 
						|
  bool    m_paintEventBusy;
 | 
						|
  bool    m_dataFromDisk;
 | 
						|
 | 
						|
  double  m_fftBinWidth;
 | 
						|
  double  m_dialFreq;
 | 
						|
  double  m_xOffset;
 | 
						|
 | 
						|
  float   m_sum[2048];
 | 
						|
 | 
						|
  qint32  m_dBStepSize;
 | 
						|
  qint32  m_FreqUnits;
 | 
						|
  qint32  m_hdivs;
 | 
						|
  qint32  m_line;
 | 
						|
  qint32  m_fSample;
 | 
						|
  qint32  m_xClick;
 | 
						|
  qint32  m_freqPerDiv;
 | 
						|
  qint32  m_nsps;
 | 
						|
  qint32  m_Percent2DScreen;
 | 
						|
  qint32  m_Percent2DScreen0;
 | 
						|
  qint32  m_h;
 | 
						|
  qint32  m_h1;
 | 
						|
  qint32  m_h2;
 | 
						|
  qint32  m_TRperiod;
 | 
						|
  qint32  m_rxFreq;
 | 
						|
  qint32  m_txFreq;
 | 
						|
  qint32  m_fMin;
 | 
						|
  qint32  m_fMax;
 | 
						|
  qint32  m_startFreq;
 | 
						|
  qint32  m_tol;
 | 
						|
 | 
						|
  char    m_sutc[6];
 | 
						|
 | 
						|
private slots:
 | 
						|
  void mousePressEvent(QMouseEvent *event);
 | 
						|
  void mouseDoubleClickEvent(QMouseEvent *event);
 | 
						|
};
 | 
						|
 | 
						|
extern QVector<QColor> g_ColorTbl;
 | 
						|
 | 
						|
extern "C" {
 | 
						|
  void flat4_(float swide[], int* iz, int* nflatten);
 | 
						|
}
 | 
						|
 | 
						|
#endif // PLOTTER_H
 |