kopia lustrzana https://gitlab.com/eliggett/wfview
Log scale for audio meters
rodzic
9fb74ed6e1
commit
f7e787e097
52
meter.cpp
52
meter.cpp
|
@ -196,8 +196,37 @@ void meter::paintEvent(QPaintEvent *)
|
|||
|
||||
painter.drawRect(mXstart+peak-1,mYstart,1,barHeight);
|
||||
|
||||
} else if ( (meterType == meterAudio) ||
|
||||
(meterType == meterTxMod) ||
|
||||
(meterType == meterRxAudio))
|
||||
{
|
||||
// Log scale but still 0-255:
|
||||
int logCurrent = (int)((1-audiopot[255-current])*255);
|
||||
int logAverage = (int)((1-audiopot[255-average])*255);
|
||||
int logPeak = (int)((1-audiopot[255-peak])*255);
|
||||
|
||||
// X, Y, Width, Height
|
||||
painter.drawRect(mXstart,mYstart,logCurrent,barHeight);
|
||||
|
||||
// Average:
|
||||
painter.setPen(averageColor);
|
||||
painter.setBrush(averageColor);
|
||||
painter.drawRect(mXstart+logAverage-1,mYstart,1,barHeight); // bar is 1 pixel wide, height = meter start?
|
||||
|
||||
// Peak:
|
||||
painter.setPen(peakColor);
|
||||
painter.setBrush(peakColor);
|
||||
if(peak > peakRedLevel)
|
||||
{
|
||||
painter.setBrush(Qt::red);
|
||||
painter.setPen(Qt::red);
|
||||
}
|
||||
|
||||
painter.drawRect(mXstart+logPeak-1,mYstart,2,barHeight);
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
// X, Y, Width, Height
|
||||
painter.drawRect(mXstart,mYstart,current,barHeight);
|
||||
|
||||
|
@ -292,6 +321,29 @@ void meter::drawScaleRaw(QPainter *qp)
|
|||
|
||||
}
|
||||
|
||||
void meter::drawScale_dBFs(QPainter *qp)
|
||||
{
|
||||
qp->setPen(lowTextColor);
|
||||
//qp->setFont(QFont("Arial", fontSize));
|
||||
peakRedLevel = 193;
|
||||
|
||||
qp->drawText(mXstart,scaleTextYstart, QString(""));
|
||||
qp->drawText(20+mXstart,scaleTextYstart, QString("-15dB"));
|
||||
qp->drawText(38+mXstart,scaleTextYstart, QString("-12dB"));
|
||||
qp->drawText(71+mXstart,scaleTextYstart, QString("-9dB"));
|
||||
qp->drawText(124+mXstart,scaleTextYstart, QString("-6dB"));
|
||||
qp->drawText(193+mXstart,scaleTextYstart, QString("-3dB"));
|
||||
qp->drawText(255+mXstart,scaleTextYstart, QString("0dB"));
|
||||
|
||||
// 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::drawScaleVd(QPainter *qp)
|
||||
{
|
||||
qp->setPen(lowTextColor);
|
||||
|
|
2
meter.h
2
meter.h
|
@ -9,6 +9,7 @@
|
|||
#include <cmath>
|
||||
|
||||
#include "rigcommander.h" // for meter types
|
||||
#include "audiotaper.h"
|
||||
|
||||
class meter : public QWidget
|
||||
{
|
||||
|
@ -68,6 +69,7 @@ private:
|
|||
void drawScaleVd(QPainter *qp);
|
||||
void drawScaleId(QPainter *qp);
|
||||
void drawScaleComp(QPainter *qp);
|
||||
void drawScale_dBFs(QPainter *qp);
|
||||
void drawScaleRaw(QPainter *qp);
|
||||
|
||||
void drawLabel(QPainter *qp);
|
||||
|
|
Ładowanie…
Reference in New Issue