diff --git a/meter.cpp b/meter.cpp index e3aeeb9..95b334b 100644 --- a/meter.cpp +++ b/meter.cpp @@ -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(idrawText(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; idrawText(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; idrawText(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(; idrawText(i,scaleTextYstart, QString("%1").arg(alc) ); + alc +=20; + } + + qp->setPen(Qt::red); + + for(; idrawText(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; } diff --git a/meter.h b/meter.h index e7544cc..5c48713 100644 --- a/meter.h +++ b/meter.h @@ -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); diff --git a/wfmain.cpp b/wfmain.cpp index 656e5be..4ef96cf 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -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(); }