Font sizes are... better... but not perfect.

merge-requests/5/head
Elliott Liggett 2021-07-19 23:46:11 -07:00
rodzic 274cc65dbf
commit 4fb9177f2c
4 zmienionych plików z 79 dodań i 26 usunięć

Wyświetl plik

@ -63,6 +63,16 @@ meterKind meter::getMeterType()
return meterType; return meterType;
} }
void meter::setMeterShortString(QString s)
{
meterShortString = s;
}
QString meter::getMeterShortString()
{
return meterShortString;
}
void meter::paintEvent(QPaintEvent *) void meter::paintEvent(QPaintEvent *)
{ {
QPainter painter(this); QPainter painter(this);
@ -72,6 +82,16 @@ void meter::paintEvent(QPaintEvent *)
// scale to the window size. // scale to the window size.
painter.setWindow(QRect(0, 0, 255+mXstart, widgetWindowHeight)); 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) switch(meterType)
{ {
case meterS: case meterS:
@ -94,6 +114,10 @@ void meter::paintEvent(QPaintEvent *)
peakRedLevel = 256; // No need for red here peakRedLevel = 256; // No need for red here
drawScaleCenter(&painter); drawScaleCenter(&painter);
break; break;
case meterVoltage:
peakRedLevel = 241;
drawScaleVd(&painter);
break;
default: default:
peakRedLevel = 200; peakRedLevel = 200;
drawScaleRaw(&painter); drawScaleRaw(&painter);
@ -146,7 +170,6 @@ void meter::paintEvent(QPaintEvent *)
painter.drawRect(mXstart+peak-1,mYstart,2,barHeight); painter.drawRect(mXstart+peak-1,mYstart,2,barHeight);
} }
} }
void meter::setLevel(int current) void meter::setLevel(int current)
@ -156,10 +179,6 @@ void meter::setLevel(int current)
avgLevels[(avgPosition++)%averageBalisticLength] = current; avgLevels[(avgPosition++)%averageBalisticLength] = current;
peakLevels[(peakPosition++)%peakBalisticLength] = 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; int sum=0;
for(unsigned int i=0; i < (unsigned int)std::min(avgPosition, (int)avgLevels.size()); i++) 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 = 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; this->peak = 0;
for(unsigned int i=0; i < peakLevels.size(); i++) for(unsigned int i=0; i < peakLevels.size(); i++)
@ -202,7 +218,7 @@ void meter::updateDrawing(int num)
void meter::drawScaleRaw(QPainter *qp) void meter::drawScaleRaw(QPainter *qp)
{ {
qp->setPen(lowTextColor); qp->setPen(lowTextColor);
qp->setFont(QFont("Arial", fontSize)); //qp->setFont(QFont("Arial", fontSize));
int i=mXstart; int i=mXstart;
for(; i<mXstart+256; i+=20) 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) void meter::drawScaleCenter(QPainter *qp)
{ {
// No known units // No known units
@ -250,7 +305,8 @@ void meter::drawScalePo(QPainter *qp)
float dnPerWatt = 143.0 / 50.0; float dnPerWatt = 143.0 / 50.0;
qp->setPen(lowTextColor); qp->setPen(lowTextColor);
qp->setFont(QFont("Arial", fontSize)); //qp->setFont(QFont("Arial", fontSize));
int i=mXstart; int i=mXstart;
// 13.3 DN per s-unit: // 13.3 DN per s-unit:
int p=0; int p=0;
@ -304,7 +360,7 @@ void meter::drawScaleALC(QPainter *qp)
// From the manual: 0000=Minimum to 0120=Maximum // From the manual: 0000=Minimum to 0120=Maximum
qp->setPen(lowTextColor); qp->setPen(lowTextColor);
qp->setFont(QFont("Arial", fontSize)); //qp->setFont(QFont("Arial", fontSize));
int i=mXstart; int i=mXstart;
int alc=0; int alc=0;
for(; i<mXstart+100; i += (20)) for(; i<mXstart+100; i += (20))
@ -360,13 +416,13 @@ void meter::drawScaleId(QPainter *qp)
void meter::drawScaleS(QPainter *qp) void meter::drawScaleS(QPainter *qp)
{ {
qp->setPen(lowTextColor); qp->setPen(lowTextColor);
qp->setFont(QFont("Arial", fontSize)); //qp->setFont(QFont("Arial", fontSize));
int i=mXstart; int i=mXstart;
// 13.3 DN per s-unit: // 13.3 DN per s-unit:
int s=0; int s=0;
for(; i<mXstart+120; i+=13) 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: // 2 DN per 1 dB now:
@ -381,7 +437,7 @@ void meter::drawScaleS(QPainter *qp)
for(; i<mXstart+255; i+=40) 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; s = s + 20;
} }

10
meter.h
Wyświetl plik

@ -6,6 +6,7 @@
#include <vector> #include <vector>
#include <algorithm> #include <algorithm>
#include <numeric> #include <numeric>
#include <cmath>
#include "rigcommander.h" // for meter types #include "rigcommander.h" // for meter types
@ -24,13 +25,16 @@ public slots:
void setLevels(int current, int peak, int average); void setLevels(int current, int peak, int average);
void setLevel(int current); void setLevel(int current);
void setMeterType(meterKind type); void setMeterType(meterKind type);
void setMeterShortString(QString);
QString getMeterShortString();
meterKind getMeterType(); meterKind getMeterType();
private: private:
//QPainter painter; //QPainter painter;
meterKind meterType; meterKind meterType;
int fontSize = 5; QString meterShortString;
int fontSize = 10;
int length=30; int length=30;
int current=0; int current=0;
int peak = 0; int peak = 0;
@ -47,13 +51,13 @@ private:
int peakRedLevel=0; 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 mYstart = 14; // height, down from top, where the drawing starts
int barHeight = 10; // Height of meter "bar" indicators int barHeight = 10; // Height of meter "bar" indicators
int scaleLineYstart = 12; int scaleLineYstart = 12;
int scaleTextYstart = 10; 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 drawScaleS(QPainter *qp);
void drawScaleCenter(QPainter *qp); void drawScaleCenter(QPainter *qp);

Wyświetl plik

@ -735,9 +735,6 @@ void wfmain::setupMainUI()
rigName->setText("NONE"); rigName->setText("NONE");
rigName->setFixedWidth(50); rigName->setFixedWidth(50);
SMeterReadings.fill(0,30);
powerMeterReadings.fill(0,30);
freq.MHzDouble = 0.0; freq.MHzDouble = 0.0;
freq.Hz = 0; freq.Hz = 0;
oldFreqDialVal = ui->freqDial->value(); oldFreqDialVal = ui->freqDial->value();
@ -5223,4 +5220,6 @@ void wfmain::on_debugBtn_clicked()
// ui->meterSPoWidget->setLevels(level, peak, average); // ui->meterSPoWidget->setLevels(level, peak, average);
// ui->meterSPoWidget->update(); // ui->meterSPoWidget->update();
// } // }
} }

Wyświetl plik

@ -576,12 +576,6 @@ private:
QByteArray spectrumPeaks; QByteArray spectrumPeaks;
QByteArray powerMeterReadings;
int powerMeterPos = 0;
QByteArray SMeterReadings;
int smeterPos=0;
QVector <QByteArray> wfimage; QVector <QByteArray> wfimage;
unsigned int wfLengthMax; unsigned int wfLengthMax;