Rationalize Wide Graph freq labels.

Labels should always be multiples of the major tick interval.
When Start freq is nonzero, labels need to be moved.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@4464 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2014-10-03 15:08:40 +00:00
parent 81a9df2ed7
commit 4980d0cdc9
2 changed files with 12 additions and 26 deletions

View File

@ -238,11 +238,12 @@ void CPlotter::DrawOverlay() //DrawOverlay()
m_hdivs = w*df/m_freqPerDiv + 0.9999; m_hdivs = w*df/m_freqPerDiv + 0.9999;
m_ScalePixmap.fill(Qt::white); m_ScalePixmap.fill(Qt::white);
painter0.drawRect(0, 0, w, 30); painter0.drawRect(0, 0, w, 30);
MakeFrequencyStrs();
//draw tick marks on upper scale //draw tick marks on upper scale
pixperdiv = m_freqPerDiv/df; pixperdiv = m_freqPerDiv/df;
for( int i=1; i<m_hdivs; i++) { //major ticks for( int i=0; i<m_hdivs; i++) { //major ticks
x = (int)( (float)i*pixperdiv ); x = (int)((m_xOffset+i)*pixperdiv );
painter0.drawLine(x,18,x,30); painter0.drawLine(x,18,x,30);
} }
int minor=5; int minor=5;
@ -253,28 +254,10 @@ void CPlotter::DrawOverlay() //DrawOverlay()
} }
//draw frequency values //draw frequency values
MakeFrequencyStrs();
for( int i=0; i<=m_hdivs; i++) { for( int i=0; i<=m_hdivs; i++) {
if(0==i) { x = (int)((m_xOffset+i)*pixperdiv - pixperdiv/2);
//left justify the leftmost text rect0.setRect(x,0, (int)pixperdiv, 20);
x = (int)( (float)i*pixperdiv); painter0.drawText(rect0, Qt::AlignHCenter|Qt::AlignVCenter,m_HDivText[i]);
rect0.setRect(x,0, (int)pixperdiv, 20);
painter0.drawText(rect0, Qt::AlignLeft|Qt::AlignVCenter,
m_HDivText[i]);
}
else if(m_hdivs == i) {
//right justify the rightmost text
x = (int)( (float)i*pixperdiv - pixperdiv);
rect0.setRect(x,0, (int)pixperdiv, 20);
painter0.drawText(rect0, Qt::AlignRight|Qt::AlignVCenter,
m_HDivText[i]);
} else {
//center justify the rest of the text
x = (int)( (float)i*pixperdiv - pixperdiv/2);
rect0.setRect(x,0, (int)pixperdiv, 20);
painter0.drawText(rect0, Qt::AlignHCenter|Qt::AlignVCenter,
m_HDivText[i]);
}
} }
float bw=9.0*12000.0/m_nsps; float bw=9.0*12000.0/m_nsps;
@ -320,10 +303,12 @@ void CPlotter::DrawOverlay() //DrawOverlay()
void CPlotter::MakeFrequencyStrs() //MakeFrequencyStrs void CPlotter::MakeFrequencyStrs() //MakeFrequencyStrs
{ {
float freq; int f=(m_startFreq+m_freqPerDiv-1)/m_freqPerDiv;
f*=m_freqPerDiv;
m_xOffset=float(f-m_startFreq)/m_freqPerDiv;
for(int i=0; i<=m_hdivs; i++) { for(int i=0; i<=m_hdivs; i++) {
freq = m_startFreq + i*m_freqPerDiv; m_HDivText[i].setNum(f);
m_HDivText[i].setNum((int)freq); f+=m_freqPerDiv;
} }
} }

View File

@ -128,6 +128,7 @@ private:
double m_fGreen; double m_fGreen;
double m_fftBinWidth; double m_fftBinWidth;
double m_dialFreq; double m_dialFreq;
double m_xOffset;
qint32 m_dBStepSize; qint32 m_dBStepSize;
qint32 m_FreqUnits; qint32 m_FreqUnits;