Added SWR and ALC scales to the meter.

merge-requests/5/head
Elliott Liggett 2021-07-17 00:37:27 -07:00
rodzic c9692f63a6
commit 8257a3540f
3 zmienionych plików z 62 dodań i 10 usunięć

Wyświetl plik

@ -62,6 +62,12 @@ void meter::paintEvent(QPaintEvent *)
case meterPower:
drawScalePo(&painter);
break;
case meterALC:
drawScaleALC(&painter);
break;
case meterSWR:
drawScaleSWR(&painter);
break;
default:
break;
}
@ -110,7 +116,7 @@ void meter::updateDrawing(int num)
void meter::drawScalePo(QPainter *qp)
{
// 0000=0% to 0143=50% to 0213=100%
//From the manual: "0000=0% to 0143=50% to 0213=100%"
float dnPerWatt = 143.0 / 50.0;
qp->setPen(lowTextColor);
@ -122,13 +128,9 @@ void meter::drawScalePo(QPainter *qp)
{
// Stop just before the next 10w spot
if(i<mXstart+140)
qp->drawText(i,mXstart, QString("%1").arg(10*(p++)) );
qp->drawText(i,scaleTextYstart, QString("%1").arg(10*(p++)) );
}
// 2 DN per 1 dB now:
// 20 DN per 10 dB
// 40 DN per 20 dB
// Modify current scale position:
// Here, P is now 60 watts:
@ -140,7 +142,7 @@ void meter::drawScalePo(QPainter *qp)
qp->setPen(Qt::yellow);
for(i=mXstart+143; i<mXstart+213; i+=(10*dnPerWatt))
{
qp->drawText(i,mXstart, QString("%1").arg(10*(p++)) );
qp->drawText(i,scaleTextYstart, QString("%1").arg(10*(p++)) );
}
// Now we're out past 100:
@ -148,7 +150,7 @@ void meter::drawScalePo(QPainter *qp)
for(i=mXstart+213; i<mXstart+255; i+=(10*dnPerWatt))
{
qp->drawText(i,mXstart, QString("%1").arg(10*(p++)) );
qp->drawText(i,scaleTextYstart, QString("%1").arg(10*(p++)) );
}
// Now the lines:
@ -169,6 +171,54 @@ void meter::drawScaleRxdB(QPainter *qp)
void meter::drawScaleALC(QPainter *qp)
{
// From the manual: 0000=Minimum to 0120=Maximum
qp->setPen(lowTextColor);
qp->setFont(QFont("Arial", fontSize));
int i=mXstart;
int alc=0;
for(; i<mXstart+100; i += (20))
{
qp->drawText(i,scaleTextYstart, QString("%1").arg(alc) );
alc +=20;
}
qp->setPen(Qt::red);
for(; i<mXstart+120; i+=(int)(10*i))
{
qp->drawText(i,scaleTextYstart, QString("+%1").arg(alc) );
alc +=10;
}
qp->setPen(lowLineColor);
qp->drawLine(mXstart,scaleLineYstart,100+mXstart,scaleLineYstart);
qp->setPen(Qt::red);
qp->drawLine(100+mXstart,scaleLineYstart,255+mXstart,scaleLineYstart);
(void)qp;
}
void meter::drawScaleSWR(QPainter *qp)
{
// From the manual:
// 0000=SWR1.0,
// 0048=SWR1.5,
// 0080=SWR2.0,
// 0120=SWR3.0
qp->drawText(mXstart,scaleTextYstart, QString("1.0"));
qp->drawText(24+mXstart,scaleTextYstart, QString("1.3"));
qp->drawText(48+mXstart,scaleTextYstart, QString("1.5"));
qp->drawText(80+mXstart,scaleTextYstart, QString("2.0"));
qp->drawText(100+mXstart,scaleTextYstart, QString("2.5"));
qp->drawText(120+mXstart,scaleTextYstart, QString("3.0"));
qp->setPen(lowLineColor);
qp->drawLine(mXstart,scaleLineYstart,100+mXstart,scaleLineYstart);
qp->setPen(Qt::red);
qp->drawLine(100+mXstart,scaleLineYstart,255+mXstart,scaleLineYstart);
(void)qp;
}

Wyświetl plik

@ -35,13 +35,15 @@ private:
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; // height of drawing canvis.
int widgetWindowHeight = mYstart + barHeight + 10; // height of drawing canvis.
void drawScaleS(QPainter *qp);
void drawScalePo(QPainter *qp);
void drawScaleRxdB(QPainter *qp);
void drawScaleALC(QPainter *qp);
void drawScaleSWR(QPainter *qp);
void drawScaleVd(QPainter *qp);
void drawScaleId(QPainter *qp);

Wyświetl plik

@ -5125,7 +5125,7 @@ void wfmain::on_debugBtn_clicked()
peak = 255;
int average = peak / 2;
ui->meterSPoWidget->setMeterType(meterPower);
ui->meterSPoWidget->setMeterType(meterALC);
ui->meterSPoWidget->setLevels(level, peak, average);
ui->meterSPoWidget->update();
}