mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-08-04 06:52:26 -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_glShaderWaterfall.initializeGL();
|
||||||
m_glShaderHistogram.initializeGL();
|
m_glShaderHistogram.initializeGL();
|
||||||
m_glShaderTextOverlay.initializeGL();
|
m_glShaderTextOverlay.initializeGL();
|
||||||
|
m_glShaderInfo.initializeGL();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GLSpectrum::resizeGL(int width, int height)
|
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();
|
m_mutex.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1275,8 +1294,9 @@ void GLSpectrum::applyChanges()
|
|||||||
QFontMetrics fm(font());
|
QFontMetrics fm(font());
|
||||||
int M = fm.horizontalAdvance("-");
|
int M = fm.horizontalAdvance("-");
|
||||||
|
|
||||||
m_topMargin = fm.ascent() * 1.5;
|
m_topMargin = fm.ascent() * 2.0;
|
||||||
m_bottomMargin = fm.ascent() * 1.5;
|
m_bottomMargin = fm.ascent() * 1.0;
|
||||||
|
m_infoHeight = fm.height() * 3;
|
||||||
|
|
||||||
int waterfallTop = 0;
|
int waterfallTop = 0;
|
||||||
m_frequencyScaleHeight = fm.height() * 3; // +1 line for marker frequency scale
|
m_frequencyScaleHeight = fm.height() * 3; // +1 line for marker frequency scale
|
||||||
@ -1844,6 +1864,39 @@ void GLSpectrum::applyChanges()
|
|||||||
m_glShaderFrequencyScale.initTexture(m_frequencyPixmap.toImage());
|
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;
|
bool fftSizeChanged = true;
|
||||||
|
|
||||||
if (m_waterfallBuffer) {
|
if (m_waterfallBuffer) {
|
||||||
@ -2413,6 +2466,7 @@ void GLSpectrum::cleanup()
|
|||||||
m_glShaderLeftScale.cleanup();
|
m_glShaderLeftScale.cleanup();
|
||||||
m_glShaderWaterfall.cleanup();
|
m_glShaderWaterfall.cleanup();
|
||||||
m_glShaderTextOverlay.cleanup();
|
m_glShaderTextOverlay.cleanup();
|
||||||
|
m_glShaderInfo.cleanup();
|
||||||
//doneCurrent();
|
//doneCurrent();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2543,3 +2597,10 @@ void GLSpectrum::drawTextOverlay(
|
|||||||
m_glShaderTextOverlay.drawSurface(mat, tex1, vtx1, 4);
|
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_rightMargin;
|
||||||
int m_topMargin;
|
int m_topMargin;
|
||||||
int m_frequencyScaleHeight;
|
int m_frequencyScaleHeight;
|
||||||
|
int m_infoHeight;
|
||||||
int m_histogramHeight;
|
int m_histogramHeight;
|
||||||
int m_waterfallHeight;
|
int m_waterfallHeight;
|
||||||
int m_bottomMargin;
|
int m_bottomMargin;
|
||||||
QFont m_textOverlayFont;
|
QFont m_textOverlayFont;
|
||||||
QPixmap m_leftMarginPixmap;
|
QPixmap m_leftMarginPixmap;
|
||||||
QPixmap m_frequencyPixmap;
|
QPixmap m_frequencyPixmap;
|
||||||
|
QPixmap m_infoPixmap;
|
||||||
ScaleEngine m_timeScale;
|
ScaleEngine m_timeScale;
|
||||||
ScaleEngine m_powerScale;
|
ScaleEngine m_powerScale;
|
||||||
ScaleEngine m_frequencyScale;
|
ScaleEngine m_frequencyScale;
|
||||||
QRectF m_histogramRect;
|
QRectF m_histogramRect;
|
||||||
QRect m_frequencyScaleRect;
|
QRect m_frequencyScaleRect;
|
||||||
QRectF m_waterfallRect;
|
QRectF m_waterfallRect;
|
||||||
|
QRect m_infoRect;
|
||||||
QMatrix4x4 m_glFrequencyScaleBoxMatrix;
|
QMatrix4x4 m_glFrequencyScaleBoxMatrix;
|
||||||
QMatrix4x4 m_glLeftScaleBoxMatrix;
|
QMatrix4x4 m_glLeftScaleBoxMatrix;
|
||||||
|
QMatrix4x4 m_glInfoBoxMatrix;
|
||||||
|
|
||||||
QRgb m_waterfallPalette[240];
|
QRgb m_waterfallPalette[240];
|
||||||
QImage* m_waterfallBuffer;
|
QImage* m_waterfallBuffer;
|
||||||
@ -319,6 +323,7 @@ private:
|
|||||||
GLShaderTextured m_glShaderWaterfall;
|
GLShaderTextured m_glShaderWaterfall;
|
||||||
GLShaderTextured m_glShaderHistogram;
|
GLShaderTextured m_glShaderHistogram;
|
||||||
GLShaderTextured m_glShaderTextOverlay;
|
GLShaderTextured m_glShaderTextOverlay;
|
||||||
|
GLShaderTextured m_glShaderInfo;
|
||||||
int m_matrixLoc;
|
int m_matrixLoc;
|
||||||
int m_colorLoc;
|
int m_colorLoc;
|
||||||
IncrementalArray<GLfloat> m_q3TickTime;
|
IncrementalArray<GLfloat> m_q3TickTime;
|
||||||
@ -365,6 +370,7 @@ private:
|
|||||||
bool leftHalf,
|
bool leftHalf,
|
||||||
bool topHalf,
|
bool topHalf,
|
||||||
const QRectF& glRect);
|
const QRectF& glRect);
|
||||||
|
void formatTextInfo(QString& info);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void cleanup();
|
void cleanup();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user