kopia lustrzana https://gitlab.com/eliggett/wfview
Font sizes are... better... but not perfect.
rodzic
274cc65dbf
commit
4fb9177f2c
84
meter.cpp
84
meter.cpp
|
@ -63,6 +63,16 @@ meterKind meter::getMeterType()
|
|||
return meterType;
|
||||
}
|
||||
|
||||
void meter::setMeterShortString(QString s)
|
||||
{
|
||||
meterShortString = s;
|
||||
}
|
||||
|
||||
QString meter::getMeterShortString()
|
||||
{
|
||||
return meterShortString;
|
||||
}
|
||||
|
||||
void meter::paintEvent(QPaintEvent *)
|
||||
{
|
||||
QPainter painter(this);
|
||||
|
@ -72,6 +82,16 @@ void meter::paintEvent(QPaintEvent *)
|
|||
// scale to the window size.
|
||||
|
||||
painter.setWindow(QRect(0, 0, 255+mXstart, widgetWindowHeight));
|
||||
|
||||
if(this->height() > widgetWindowHeight )
|
||||
{
|
||||
// Clamp down on stretching fonts.
|
||||
// TODO: Make this more elegant
|
||||
painter.setFont(QFont(this->fontInfo().family(), widgetWindowHeight/3.5));
|
||||
} else {
|
||||
painter.setFont(QFont(this->fontInfo().family(), widgetWindowHeight/2.5));
|
||||
}
|
||||
|
||||
switch(meterType)
|
||||
{
|
||||
case meterS:
|
||||
|
@ -94,6 +114,10 @@ void meter::paintEvent(QPaintEvent *)
|
|||
peakRedLevel = 256; // No need for red here
|
||||
drawScaleCenter(&painter);
|
||||
break;
|
||||
case meterVoltage:
|
||||
peakRedLevel = 241;
|
||||
drawScaleVd(&painter);
|
||||
break;
|
||||
default:
|
||||
peakRedLevel = 200;
|
||||
drawScaleRaw(&painter);
|
||||
|
@ -146,7 +170,6 @@ void meter::paintEvent(QPaintEvent *)
|
|||
|
||||
painter.drawRect(mXstart+peak-1,mYstart,2,barHeight);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void meter::setLevel(int current)
|
||||
|
@ -156,10 +179,6 @@ void meter::setLevel(int current)
|
|||
avgLevels[(avgPosition++)%averageBalisticLength] = current;
|
||||
peakLevels[(peakPosition++)%peakBalisticLength] = current;
|
||||
|
||||
// TODO: only average up to clamp(position, size) that way we don't average in
|
||||
// zeros for the first couple of seconds. We might have to not use the accumulate function
|
||||
// if we want to specify positions.
|
||||
|
||||
int sum=0;
|
||||
|
||||
for(unsigned int i=0; i < (unsigned int)std::min(avgPosition, (int)avgLevels.size()); i++)
|
||||
|
@ -168,9 +187,6 @@ void meter::setLevel(int current)
|
|||
}
|
||||
this->average = sum / std::min(avgPosition, (int)avgLevels.size());
|
||||
|
||||
// this->average = std::accumulate(avgLevels.begin(), std::min(avgLevels.begin() + avgPosition, avgLevels.begin()+avgLevels.size())) / averageBalisticLength;
|
||||
// this->peak = std::max_element(peakLevels.begin(), peakLevels.end());
|
||||
|
||||
this->peak = 0;
|
||||
|
||||
for(unsigned int i=0; i < peakLevels.size(); i++)
|
||||
|
@ -202,7 +218,7 @@ void meter::updateDrawing(int num)
|
|||
void meter::drawScaleRaw(QPainter *qp)
|
||||
{
|
||||
qp->setPen(lowTextColor);
|
||||
qp->setFont(QFont("Arial", fontSize));
|
||||
//qp->setFont(QFont("Arial", fontSize));
|
||||
int i=mXstart;
|
||||
for(; i<mXstart+256; i+=20)
|
||||
{
|
||||
|
@ -219,6 +235,45 @@ void meter::drawScaleRaw(QPainter *qp)
|
|||
|
||||
}
|
||||
|
||||
void meter::drawScaleVd(QPainter *qp)
|
||||
{
|
||||
qp->setPen(lowTextColor);
|
||||
//qp->setFont(QFont("Arial", fontSize));
|
||||
|
||||
// 7300/9700 and others:
|
||||
int midPointDn = 13;
|
||||
int midPointVd = 10;
|
||||
|
||||
// 705:
|
||||
//int midPointDn = 75;
|
||||
//int midPointVd = 5;
|
||||
|
||||
int highPointDn = 241;
|
||||
int highPointVd = 16;
|
||||
float VdperDn = (float)(highPointVd-midPointVd) / float(highPointDn-midPointDn);
|
||||
|
||||
int i=mXstart;
|
||||
for(; i<mXstart+midPointDn; i+=midPointDn/2)
|
||||
{
|
||||
qp->drawText(i,scaleTextYstart, QString("%1").arg( (int)((i-mXstart) * (float(midPointVd) / float(midPointDn)) )) );
|
||||
}
|
||||
|
||||
for(; i<mXstart+255; i+= (highPointDn-midPointDn) / (highPointVd-midPointVd))
|
||||
{
|
||||
qp->drawText(i,scaleTextYstart, QString("%1").arg( (int) std::round( ((i-mXstart-midPointDn) * (VdperDn) ) + (midPointVd) )));
|
||||
qp->drawLine(i,scaleTextYstart, i, scaleTextYstart+5);
|
||||
}
|
||||
|
||||
// Now the lines:
|
||||
qp->setPen(lowLineColor);
|
||||
|
||||
// Line: X1, Y1 -->to--> X2, Y2
|
||||
qp->drawLine(mXstart,scaleLineYstart,peakRedLevel+mXstart,scaleLineYstart);
|
||||
qp->setPen(Qt::red);
|
||||
qp->drawLine(peakRedLevel+mXstart,scaleLineYstart,255+mXstart,scaleLineYstart);
|
||||
|
||||
}
|
||||
|
||||
void meter::drawScaleCenter(QPainter *qp)
|
||||
{
|
||||
// No known units
|
||||
|
@ -250,7 +305,8 @@ void meter::drawScalePo(QPainter *qp)
|
|||
float dnPerWatt = 143.0 / 50.0;
|
||||
|
||||
qp->setPen(lowTextColor);
|
||||
qp->setFont(QFont("Arial", fontSize));
|
||||
//qp->setFont(QFont("Arial", fontSize));
|
||||
|
||||
int i=mXstart;
|
||||
// 13.3 DN per s-unit:
|
||||
int p=0;
|
||||
|
@ -304,7 +360,7 @@ void meter::drawScaleALC(QPainter *qp)
|
|||
// From the manual: 0000=Minimum to 0120=Maximum
|
||||
|
||||
qp->setPen(lowTextColor);
|
||||
qp->setFont(QFont("Arial", fontSize));
|
||||
//qp->setFont(QFont("Arial", fontSize));
|
||||
int i=mXstart;
|
||||
int alc=0;
|
||||
for(; i<mXstart+100; i += (20))
|
||||
|
@ -360,13 +416,13 @@ void meter::drawScaleId(QPainter *qp)
|
|||
void meter::drawScaleS(QPainter *qp)
|
||||
{
|
||||
qp->setPen(lowTextColor);
|
||||
qp->setFont(QFont("Arial", fontSize));
|
||||
//qp->setFont(QFont("Arial", fontSize));
|
||||
int i=mXstart;
|
||||
// 13.3 DN per s-unit:
|
||||
int s=0;
|
||||
for(; i<mXstart+120; i+=13)
|
||||
{
|
||||
qp->drawText(i,mXstart, QString("%1").arg(s++) );
|
||||
qp->drawText(i,scaleTextYstart, QString("%1").arg(s++) );
|
||||
}
|
||||
|
||||
// 2 DN per 1 dB now:
|
||||
|
@ -381,7 +437,7 @@ void meter::drawScaleS(QPainter *qp)
|
|||
|
||||
for(; i<mXstart+255; i+=40)
|
||||
{
|
||||
qp->drawText(i,mXstart, QString("+%1").arg(s) );
|
||||
qp->drawText(i,scaleTextYstart, QString("+%1").arg(s) );
|
||||
s = s + 20;
|
||||
}
|
||||
|
||||
|
|
10
meter.h
10
meter.h
|
@ -6,6 +6,7 @@
|
|||
#include <vector>
|
||||
#include <algorithm>
|
||||
#include <numeric>
|
||||
#include <cmath>
|
||||
|
||||
#include "rigcommander.h" // for meter types
|
||||
|
||||
|
@ -24,13 +25,16 @@ public slots:
|
|||
void setLevels(int current, int peak, int average);
|
||||
void setLevel(int current);
|
||||
void setMeterType(meterKind type);
|
||||
void setMeterShortString(QString);
|
||||
QString getMeterShortString();
|
||||
meterKind getMeterType();
|
||||
|
||||
|
||||
private:
|
||||
//QPainter painter;
|
||||
meterKind meterType;
|
||||
int fontSize = 5;
|
||||
QString meterShortString;
|
||||
int fontSize = 10;
|
||||
int length=30;
|
||||
int current=0;
|
||||
int peak = 0;
|
||||
|
@ -47,13 +51,13 @@ private:
|
|||
|
||||
int peakRedLevel=0;
|
||||
|
||||
int mXstart = 10; // Starting point for S=0.
|
||||
int mXstart = 0; // Starting point for S=0.
|
||||
int mYstart = 14; // height, down from top, where the drawing starts
|
||||
int barHeight = 10; // Height of meter "bar" indicators
|
||||
int scaleLineYstart = 12;
|
||||
int scaleTextYstart = 10;
|
||||
|
||||
int widgetWindowHeight = mYstart + barHeight + 10; // height of drawing canvis.
|
||||
int widgetWindowHeight = mYstart + barHeight + 0; // height of drawing canvis.
|
||||
|
||||
void drawScaleS(QPainter *qp);
|
||||
void drawScaleCenter(QPainter *qp);
|
||||
|
|
|
@ -735,9 +735,6 @@ void wfmain::setupMainUI()
|
|||
rigName->setText("NONE");
|
||||
rigName->setFixedWidth(50);
|
||||
|
||||
SMeterReadings.fill(0,30);
|
||||
powerMeterReadings.fill(0,30);
|
||||
|
||||
freq.MHzDouble = 0.0;
|
||||
freq.Hz = 0;
|
||||
oldFreqDialVal = ui->freqDial->value();
|
||||
|
@ -5223,4 +5220,6 @@ void wfmain::on_debugBtn_clicked()
|
|||
// ui->meterSPoWidget->setLevels(level, peak, average);
|
||||
// ui->meterSPoWidget->update();
|
||||
// }
|
||||
|
||||
|
||||
}
|
||||
|
|
6
wfmain.h
6
wfmain.h
|
@ -576,12 +576,6 @@ private:
|
|||
|
||||
QByteArray spectrumPeaks;
|
||||
|
||||
QByteArray powerMeterReadings;
|
||||
int powerMeterPos = 0;
|
||||
|
||||
QByteArray SMeterReadings;
|
||||
int smeterPos=0;
|
||||
|
||||
QVector <QByteArray> wfimage;
|
||||
unsigned int wfLengthMax;
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue