diff --git a/meter.cpp b/meter.cpp index 2a0259b..4d51f97 100644 --- a/meter.cpp +++ b/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(; isetPen(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(; idrawText(i,scaleTextYstart, QString("%1").arg( (int)((i-mXstart) * (float(midPointVd) / float(midPointDn)) )) ); + } + + for(; idrawText(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(; isetPen(lowTextColor); - qp->setFont(QFont("Arial", fontSize)); + //qp->setFont(QFont("Arial", fontSize)); int i=mXstart; // 13.3 DN per s-unit: int s=0; for(; idrawText(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(; idrawText(i,mXstart, QString("+%1").arg(s) ); + qp->drawText(i,scaleTextYstart, QString("+%1").arg(s) ); s = s + 20; } diff --git a/meter.h b/meter.h index a49bf66..1708757 100644 --- a/meter.h +++ b/meter.h @@ -6,6 +6,7 @@ #include #include #include +#include #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); diff --git a/wfmain.cpp b/wfmain.cpp index d88a86a..e6855c6 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -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(); // } + + } diff --git a/wfmain.h b/wfmain.h index 28fdfec..0eb89dd 100644 --- a/wfmain.h +++ b/wfmain.h @@ -576,12 +576,6 @@ private: QByteArray spectrumPeaks; - QByteArray powerMeterReadings; - int powerMeterPos = 0; - - QByteArray SMeterReadings; - int smeterPos=0; - QVector wfimage; unsigned int wfLengthMax;