mirror of
https://github.com/f4exb/sdrangel.git
synced 2024-09-28 15:56:33 -04:00
Spectrum: added top info line with zooming info
This commit is contained in:
parent
1765298c2c
commit
20da400b21
@ -613,6 +613,7 @@ void GLSpectrum::initializeGL()
|
||||
m_glShaderWaterfall.initializeGL();
|
||||
m_glShaderHistogram.initializeGL();
|
||||
m_glShaderTextOverlay.initializeGL();
|
||||
m_glShaderInfo.initializeGL();
|
||||
}
|
||||
|
||||
void GLSpectrum::resizeGL(int width, int height)
|
||||
@ -1114,6 +1115,24 @@ void GLSpectrum::paintGL()
|
||||
}
|
||||
}
|
||||
|
||||
// Paint info line
|
||||
{
|
||||
GLfloat vtx1[] = {
|
||||
0, 1,
|
||||
1, 1,
|
||||
1, 0,
|
||||
0, 0
|
||||
};
|
||||
GLfloat tex1[] = {
|
||||
0, 1,
|
||||
1, 1,
|
||||
1, 0,
|
||||
0, 0
|
||||
};
|
||||
|
||||
m_glShaderInfo.drawSurface(m_glInfoBoxMatrix, tex1, vtx1, 4);
|
||||
}
|
||||
|
||||
m_mutex.unlock();
|
||||
}
|
||||
|
||||
@ -1275,8 +1294,9 @@ void GLSpectrum::applyChanges()
|
||||
QFontMetrics fm(font());
|
||||
int M = fm.horizontalAdvance("-");
|
||||
|
||||
m_topMargin = fm.ascent() * 1.5;
|
||||
m_bottomMargin = fm.ascent() * 1.5;
|
||||
m_topMargin = fm.ascent() * 2.0;
|
||||
m_bottomMargin = fm.ascent() * 1.0;
|
||||
m_infoHeight = fm.height() * 3;
|
||||
|
||||
int waterfallTop = 0;
|
||||
m_frequencyScaleHeight = fm.height() * 3; // +1 line for marker frequency scale
|
||||
@ -1844,6 +1864,39 @@ void GLSpectrum::applyChanges()
|
||||
m_glShaderFrequencyScale.initTexture(m_frequencyPixmap.toImage());
|
||||
}
|
||||
|
||||
// Top info line
|
||||
m_glInfoBoxMatrix.setToIdentity();
|
||||
m_glInfoBoxMatrix.translate (
|
||||
-1.0f,
|
||||
1.0f
|
||||
);
|
||||
m_glInfoBoxMatrix.scale (
|
||||
2.0f,
|
||||
(float) -2*m_infoHeight / (float) height()
|
||||
);
|
||||
m_infoRect = QRect(
|
||||
0,
|
||||
0,
|
||||
width(),
|
||||
m_infoHeight
|
||||
);
|
||||
QString infoText;
|
||||
formatTextInfo(infoText);
|
||||
m_infoPixmap = QPixmap(width(), m_infoHeight);
|
||||
m_infoPixmap.fill(Qt::transparent);
|
||||
{
|
||||
QPainter painter(&m_infoPixmap);
|
||||
painter.setPen(Qt::NoPen);
|
||||
painter.setBrush(Qt::black);
|
||||
painter.setBrush(Qt::transparent);
|
||||
painter.drawRect(m_leftMargin, 0, width() - m_leftMargin, m_infoHeight);
|
||||
painter.setPen(QColor(0xf0, 0xf0, 0xff));
|
||||
painter.setFont(font());
|
||||
painter.drawText(QPointF(m_leftMargin, fm.height() + fm.ascent() / 2 - 1), infoText);
|
||||
}
|
||||
|
||||
m_glShaderInfo.initTexture(m_infoPixmap.toImage());
|
||||
|
||||
bool fftSizeChanged = true;
|
||||
|
||||
if (m_waterfallBuffer) {
|
||||
@ -2413,6 +2466,7 @@ void GLSpectrum::cleanup()
|
||||
m_glShaderLeftScale.cleanup();
|
||||
m_glShaderWaterfall.cleanup();
|
||||
m_glShaderTextOverlay.cleanup();
|
||||
m_glShaderInfo.cleanup();
|
||||
//doneCurrent();
|
||||
}
|
||||
|
||||
@ -2543,3 +2597,10 @@ void GLSpectrum::drawTextOverlay(
|
||||
m_glShaderTextOverlay.drawSurface(mat, tex1, vtx1, 4);
|
||||
}
|
||||
}
|
||||
|
||||
void GLSpectrum::formatTextInfo(QString& info)
|
||||
{
|
||||
if (m_frequencyZoomFactor != 1.0f) {
|
||||
info.append(tr("%1x ").arg(QString::number(m_frequencyZoomFactor, 'f', 1)));
|
||||
}
|
||||
}
|
||||
|
@ -272,20 +272,24 @@ private:
|
||||
int m_rightMargin;
|
||||
int m_topMargin;
|
||||
int m_frequencyScaleHeight;
|
||||
int m_infoHeight;
|
||||
int m_histogramHeight;
|
||||
int m_waterfallHeight;
|
||||
int m_bottomMargin;
|
||||
QFont m_textOverlayFont;
|
||||
QPixmap m_leftMarginPixmap;
|
||||
QPixmap m_frequencyPixmap;
|
||||
QPixmap m_infoPixmap;
|
||||
ScaleEngine m_timeScale;
|
||||
ScaleEngine m_powerScale;
|
||||
ScaleEngine m_frequencyScale;
|
||||
QRectF m_histogramRect;
|
||||
QRect m_frequencyScaleRect;
|
||||
QRectF m_waterfallRect;
|
||||
QRect m_infoRect;
|
||||
QMatrix4x4 m_glFrequencyScaleBoxMatrix;
|
||||
QMatrix4x4 m_glLeftScaleBoxMatrix;
|
||||
QMatrix4x4 m_glInfoBoxMatrix;
|
||||
|
||||
QRgb m_waterfallPalette[240];
|
||||
QImage* m_waterfallBuffer;
|
||||
@ -319,6 +323,7 @@ private:
|
||||
GLShaderTextured m_glShaderWaterfall;
|
||||
GLShaderTextured m_glShaderHistogram;
|
||||
GLShaderTextured m_glShaderTextOverlay;
|
||||
GLShaderTextured m_glShaderInfo;
|
||||
int m_matrixLoc;
|
||||
int m_colorLoc;
|
||||
IncrementalArray<GLfloat> m_q3TickTime;
|
||||
@ -365,6 +370,7 @@ private:
|
||||
bool leftHalf,
|
||||
bool topHalf,
|
||||
const QRectF& glRect);
|
||||
void formatTextInfo(QString& info);
|
||||
|
||||
private slots:
|
||||
void cleanup();
|
||||
|
Loading…
Reference in New Issue
Block a user