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;
|
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
10
meter.h
|
@ -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);
|
||||||
|
|
|
@ -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();
|
||||||
// }
|
// }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
6
wfmain.h
6
wfmain.h
|
@ -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;
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue