mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-27 11:00:32 -04:00 
			
		
		
		
	More progress on wide graph display. Mostly OK now... ??
Sometimes need to restart after mode change, etc. git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@2612 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
		
							parent
							
								
									6469c6d96e
								
							
						
					
					
						commit
						16556ec7ac
					
				
							
								
								
									
										75
									
								
								plotter.cpp
									
									
									
									
									
								
							
							
						
						
									
										75
									
								
								plotter.cpp
									
									
									
									
									
								
							| @ -111,6 +111,7 @@ void CPlotter::draw(float swide[], int i0, float splot[])             //draw() | |||||||
|     m_hist2[i]=0; |     m_hist2[i]=0; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | //  qDebug() << "A" << m_binsPerPixel << m_nSpan << m_fSpan;
 | ||||||
|   painter2D.setPen(Qt::green); |   painter2D.setPen(Qt::green); | ||||||
|   QRect tmp(0,0,w,h); |   QRect tmp(0,0,w,h); | ||||||
|   painter2D.fillRect(tmp,Qt::black); |   painter2D.fillRect(tmp,Qt::black); | ||||||
| @ -194,6 +195,7 @@ void CPlotter::DrawOverlay()                                 //DrawOverlay() | |||||||
|   if(m_WaterfallPixmap.isNull()) return; |   if(m_WaterfallPixmap.isNull()) return; | ||||||
|   int w = m_WaterfallPixmap.width(); |   int w = m_WaterfallPixmap.width(); | ||||||
|   int x,y; |   int x,y; | ||||||
|  |   int nHzDiv[11]={0,50,100,200,200,200,500,500,500,500,500}; | ||||||
|   float pixperdiv; |   float pixperdiv; | ||||||
| 
 | 
 | ||||||
|   QRect rect0; |   QRect rect0; | ||||||
| @ -209,18 +211,25 @@ void CPlotter::DrawOverlay()                                 //DrawOverlay() | |||||||
|   painter0.setPen(Qt::black); |   painter0.setPen(Qt::black); | ||||||
| 
 | 
 | ||||||
|   double fftBinWidth=12000.0/m_nsps; |   double fftBinWidth=12000.0/m_nsps; | ||||||
|   m_binsPerPixel = (m_nSpan/fftBinWidth)/w + 0.5; |  | ||||||
|   if(m_binsPerPixel < 1) m_binsPerPixel=1; |   if(m_binsPerPixel < 1) m_binsPerPixel=1; | ||||||
|   double FreqPerDiv=50.0; |  | ||||||
|   double df = m_binsPerPixel*fftBinWidth; |   double df = m_binsPerPixel*fftBinWidth; | ||||||
| //  qDebug() << "A" << fftBinWidth << m_binsPerPixel << df;
 |  | ||||||
|   m_hdivs = w*df/FreqPerDiv + 0.9999; |  | ||||||
|   m_fSpan = w*df; |   m_fSpan = w*df; | ||||||
|  | //  m_freqPerDiv=50*m_binsPerPixel;
 | ||||||
|  | //  m_freqPerDiv=nHzDiv[m_binsPerPixel];
 | ||||||
|  |   int n=m_fSpan/10; | ||||||
|  |   m_freqPerDiv=10; | ||||||
|  |   if(n>25) m_freqPerDiv=50; | ||||||
|  |   if(n>70) m_freqPerDiv=100; | ||||||
|  |   if(n>250) m_freqPerDiv=500; | ||||||
|  |   m_hdivs = w*df/m_freqPerDiv + 0.9999; | ||||||
|  |   qDebug() << "B" << m_binsPerPixel << df << m_freqPerDiv << pixperdiv | ||||||
|  |            << m_hdivs << m_fSpan; | ||||||
|   m_ScalePixmap.fill(Qt::white); |   m_ScalePixmap.fill(Qt::white); | ||||||
|   painter0.drawRect(0, 0, w, 30); |   painter0.drawRect(0, 0, w, 30); | ||||||
| 
 | 
 | ||||||
|   //draw tick marks on wideband (upper) scale
 |   //draw tick marks on wideband (upper) scale
 | ||||||
|   pixperdiv = FreqPerDiv/df; | //  pixperdiv = m_binsPerPixel*m_freqPerDiv/df;
 | ||||||
|  |   pixperdiv = m_freqPerDiv/df; | ||||||
|   for( int i=1; i<m_hdivs; i++) {     //major ticks
 |   for( int i=1; i<m_hdivs; i++) {     //major ticks
 | ||||||
|     x = (int)( (float)i*pixperdiv ); |     x = (int)( (float)i*pixperdiv ); | ||||||
|     painter0.drawLine(x,18,x,30); |     painter0.drawLine(x,18,x,30); | ||||||
| @ -274,14 +283,13 @@ void CPlotter::DrawOverlay()                                 //DrawOverlay() | |||||||
|   painter3.setFont(Font); |   painter3.setFont(Font); | ||||||
|   painter3.setPen(Qt::black); |   painter3.setPen(Qt::black); | ||||||
| 
 | 
 | ||||||
|   FreqPerDiv=100; |  | ||||||
|   df = 12000.0/m_nsps; |   df = 12000.0/m_nsps; | ||||||
|   m_hdivs = 4400*df/FreqPerDiv + 0.9999; |   m_hdivs = 4400*df/m_freqPerDiv + 0.9999; | ||||||
|   int nlabs=df*w/FreqPerDiv + 1.0; |   int nlabs=df*w/m_freqPerDiv + 1.0; | ||||||
|   m_ZoomScalePixmap.fill(Qt::white); |   m_ZoomScalePixmap.fill(Qt::white); | ||||||
|   painter3.drawRect(0, 0, w, 30); |   painter3.drawRect(0, 0, w, 30); | ||||||
| 
 | 
 | ||||||
|   pixperdiv = FreqPerDiv/df; |   pixperdiv = m_freqPerDiv/df; | ||||||
|   for( int i=0; i<10*nlabs; i++) { |   for( int i=0; i<10*nlabs; i++) { | ||||||
|     x = i*pixperdiv/10; |     x = i*pixperdiv/10; | ||||||
|     y=24; |     y=24; | ||||||
| @ -297,36 +305,17 @@ void CPlotter::DrawOverlay()                                 //DrawOverlay() | |||||||
|     painter3.drawText(rect1, Qt::AlignHCenter|Qt::AlignVCenter, |     painter3.drawText(rect1, Qt::AlignHCenter|Qt::AlignVCenter, | ||||||
|                       m_HDivText[i]); |                       m_HDivText[i]); | ||||||
|   } |   } | ||||||
| 
 |  | ||||||
|   df=m_fSample/32768.0; |  | ||||||
|   x = (m_DF + m_mode65*66*11025.0/4096.0 - m_ZoomStartFreq)/df; |  | ||||||
|   QPen pen2(Qt::red, 3);            //Mark top JT65B tone with red tick
 |  | ||||||
|   painter3.setPen(pen2); |  | ||||||
|   painter3.drawLine(x,15,x,30); |  | ||||||
|   x = (m_DF - m_ZoomStartFreq)/df; |  | ||||||
|   QPen pen1(Qt::green, 3);                //Mark DF with a green tick
 |  | ||||||
|   painter3.setPen(pen1); |  | ||||||
|   painter3.drawLine(x,15,x,30); |  | ||||||
|   for(int i=2; i<5; i++) {                //Mark the shorthand freqs
 |  | ||||||
|     x = (m_DF + m_mode65*10*i*11025.0/4096.0 - m_ZoomStartFreq)/df; |  | ||||||
|     painter3.drawLine(x,20,x,30); |  | ||||||
|   } |  | ||||||
|   int x1=(m_DF - m_tol - m_ZoomStartFreq)/df; |  | ||||||
|   int x2=(m_DF + m_tol - m_ZoomStartFreq)/df; |  | ||||||
|   pen1.setWidth(6); |  | ||||||
|   painter3.drawLine(x1,28,x2,28); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void CPlotter::MakeFrequencyStrs()                       //MakeFrequencyStrs
 | void CPlotter::MakeFrequencyStrs()                       //MakeFrequencyStrs
 | ||||||
| { | { | ||||||
|   float freq; |   float freq; | ||||||
|   int i,j; |   int i,j; | ||||||
|   int FreqPerDiv=50; |  | ||||||
| 
 | 
 | ||||||
|   for(int i=0; i<=m_hdivs; i++) { |   for(int i=0; i<=m_hdivs; i++) { | ||||||
|     freq = m_StartFreq + i*FreqPerDiv; |     freq = m_StartFreq + i*m_freqPerDiv; | ||||||
|     m_HDivText[i].setNum((int)freq); |     m_HDivText[i].setNum((int)freq); | ||||||
|     //      StartFreq += FreqPerDiv;
 |     //      StartFreq += m_freqPerDiv;
 | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -402,7 +391,12 @@ void CPlotter::setTol(int n)                                 //setTol() | |||||||
|   DrawOverlay(); |   DrawOverlay(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void CPlotter::setBinsPerPixel(int n) {m_binsPerPixel = n;}  //set nbpp
 | void CPlotter::setBinsPerPixel(int n)                       // set nbpp
 | ||||||
|  | { | ||||||
|  |   m_binsPerPixel = n; | ||||||
|  |   DrawOverlay();                         //Redraw scales and ticks
 | ||||||
|  |   update();                              //trigger a new paintEvent}
 | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| int CPlotter::binsPerPixel(){return m_binsPerPixel;}         //get nbpp
 | int CPlotter::binsPerPixel(){return m_binsPerPixel;}         //get nbpp
 | ||||||
| 
 | 
 | ||||||
| @ -582,18 +576,6 @@ void CPlotter::setPalette(QString palette)                      //setPalette() | |||||||
| 
 | 
 | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void CPlotter::setFsample(int n) |  | ||||||
| { |  | ||||||
|   m_fSample=n; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void CPlotter::setMode65(int n) |  | ||||||
| { |  | ||||||
|   m_mode65=n; |  | ||||||
|   DrawOverlay();                         //Redraw scales and ticks
 |  | ||||||
|   update();                              //trigger a new paintEvent
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void CPlotter::set2Dspec(bool b) | void CPlotter::set2Dspec(bool b) | ||||||
| { | { | ||||||
| //  m_2Dspec=b;
 | //  m_2Dspec=b;
 | ||||||
| @ -606,3 +588,10 @@ double CPlotter::fGreen() | |||||||
| { | { | ||||||
|   return m_fGreen; |   return m_fGreen; | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | void CPlotter::setNsps(int n)                                  //setNSpan()
 | ||||||
|  | { | ||||||
|  |   m_nsps=n; | ||||||
|  |   DrawOverlay();                         //Redraw scales and ticks
 | ||||||
|  |   update();                              //trigger a new paintEvent}
 | ||||||
|  | } | ||||||
|  | |||||||
| @ -35,7 +35,6 @@ public: | |||||||
|   qint32  m_DF; |   qint32  m_DF; | ||||||
|   qint32  m_tol; |   qint32  m_tol; | ||||||
|   qint32  m_fCal; |   qint32  m_fCal; | ||||||
|   qint32  m_nsps; |  | ||||||
| 
 | 
 | ||||||
|   void draw(float sw[], int i0, float splot[]);		//Update the waterfalls
 |   void draw(float sw[], int i0, float splot[]);		//Update the waterfalls
 | ||||||
|   void SetRunningState(bool running); |   void SetRunningState(bool running); | ||||||
| @ -63,8 +62,8 @@ public: | |||||||
|   int  autoZero(); |   int  autoZero(); | ||||||
|   void setPalette(QString palette); |   void setPalette(QString palette); | ||||||
|   void setFsample(int n); |   void setFsample(int n); | ||||||
|   void setMode65(int n); |  | ||||||
|   void set2Dspec(bool b); |   void set2Dspec(bool b); | ||||||
|  |   void setNsps(int n); | ||||||
|   double fGreen(); |   double fGreen(); | ||||||
| 
 | 
 | ||||||
| signals: | signals: | ||||||
| @ -113,9 +112,10 @@ private: | |||||||
|   qint32  m_z2; |   qint32  m_z2; | ||||||
|   qint32  m_nkhz; |   qint32  m_nkhz; | ||||||
|   qint32  m_fSample; |   qint32  m_fSample; | ||||||
|   qint32  m_mode65; |  | ||||||
|   qint32  m_i0; |   qint32  m_i0; | ||||||
|   qint32  m_xClick; |   qint32  m_xClick; | ||||||
|  |   qint32  m_freqPerDiv; | ||||||
|  |   qint32  m_nsps; | ||||||
| 
 | 
 | ||||||
| private slots: | private slots: | ||||||
|   void mousePressEvent(QMouseEvent *event); |   void mousePressEvent(QMouseEvent *event); | ||||||
|  | |||||||
| @ -87,7 +87,7 @@ void WideGraph::dataSink2(float s[], int nkhz, int ihsym, int ndiskdata, | |||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   //Average spectra over specified number, m_waterfallAvg
 |   //Average spectra over specified number, m_waterfallAvg
 | ||||||
| //  qDebug() << "A" << ihsym << NSMAX << df << nbpp;
 | //  qDebug() << "C" << ihsym << NSMAX << df << nbpp;
 | ||||||
|   if (n==0) { |   if (n==0) { | ||||||
|     for (int i=0; i<NSMAX; i++) |     for (int i=0; i<NSMAX; i++) | ||||||
|       splot[i]=s[i]; |       splot[i]=s[i]; | ||||||
| @ -108,7 +108,7 @@ void WideGraph::dataSink2(float s[], int nkhz, int ihsym, int ndiskdata, | |||||||
| //        1000.0/df + 0.5;
 | //        1000.0/df + 0.5;
 | ||||||
| 
 | 
 | ||||||
|     int i0=0;                            //###
 |     int i0=0;                            //###
 | ||||||
|     nbpp=1;                          //###
 | //    nbpp=1;                          //###
 | ||||||
| 
 | 
 | ||||||
|     int i=i0; |     int i=i0; | ||||||
|     for (int j=0; j<2048; j++) { |     for (int j=0; j<2048; j++) { | ||||||
| @ -149,13 +149,7 @@ void WideGraph::dataSink2(float s[], int nkhz, int ihsym, int ndiskdata, | |||||||
| 
 | 
 | ||||||
| void WideGraph::on_freqSpanSpinBox_valueChanged(int n) | void WideGraph::on_freqSpanSpinBox_valueChanged(int n) | ||||||
| { | { | ||||||
|   ui->widePlot->setNSpan(n); |   ui->widePlot->setBinsPerPixel(n); | ||||||
|   int w = ui->widePlot->plotWidth(); |  | ||||||
|   int nbpp = n * 32768.0/(w*96.0) + 0.5; |  | ||||||
|   if(nbpp < 1) nbpp=1; |  | ||||||
|   if(w > 0) { |  | ||||||
|     ui->widePlot->setBinsPerPixel(nbpp); |  | ||||||
|   } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void WideGraph::on_waterfallAvgSpinBox_valueChanged(int n) | void WideGraph::on_waterfallAvgSpinBox_valueChanged(int n) | ||||||
| @ -254,17 +248,6 @@ void WideGraph::setPalette(QString palette) | |||||||
| { | { | ||||||
|   ui->widePlot->setPalette(palette); |   ui->widePlot->setPalette(palette); | ||||||
| } | } | ||||||
| void WideGraph::setFsample(int n) |  | ||||||
| { |  | ||||||
|   m_fSample=n; |  | ||||||
|   ui->widePlot->setFsample(n); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void WideGraph::setMode65(int n) |  | ||||||
| { |  | ||||||
|   m_mode65=n; |  | ||||||
|   ui->widePlot->setMode65(n); |  | ||||||
| } |  | ||||||
| 
 | 
 | ||||||
| void WideGraph::on_fCenterLineEdit_editingFinished() | void WideGraph::on_fCenterLineEdit_editingFinished() | ||||||
| { | { | ||||||
| @ -284,5 +267,5 @@ void WideGraph::setPeriod(int ntrperiod, int nsps) | |||||||
| { | { | ||||||
|   m_TRperiod=ntrperiod; |   m_TRperiod=ntrperiod; | ||||||
|   m_nsps=nsps; |   m_nsps=nsps; | ||||||
|   ui->widePlot->m_nsps=nsps; |   ui->widePlot->setNsps(nsps); | ||||||
| } | } | ||||||
|  | |||||||
| @ -30,7 +30,6 @@ public: | |||||||
|   void   setFcal(int n); |   void   setFcal(int n); | ||||||
|   void   setPalette(QString palette); |   void   setPalette(QString palette); | ||||||
|   void   setFsample(int n); |   void   setFsample(int n); | ||||||
|   void   setMode65(int n); |  | ||||||
|   void   setPeriod(int ntrperiod, int nsps); |   void   setPeriod(int ntrperiod, int nsps); | ||||||
|   double fGreen(); |   double fGreen(); | ||||||
| 
 | 
 | ||||||
| @ -60,7 +59,6 @@ private: | |||||||
|   qint32 m_waterfallAvg; |   qint32 m_waterfallAvg; | ||||||
|   qint32 m_fCal; |   qint32 m_fCal; | ||||||
|   qint32 m_fSample; |   qint32 m_fSample; | ||||||
|   qint32 m_mode65; |  | ||||||
|   qint32 m_TRperiod; |   qint32 m_TRperiod; | ||||||
|   qint32 m_nsps; |   qint32 m_nsps; | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user