Spectrum: make markers display persistent

pull/1115/head
f4exb 2022-01-22 06:57:46 +01:00
rodzic 639373f7eb
commit c025ea47ee
5 zmienionych plików z 24 dodań i 5 usunięć

Wyświetl plik

@ -61,6 +61,7 @@ void SpectrumSettings::resetToDefaults()
m_wsSpectrum = false;
m_wsSpectrumAddress = "127.0.0.1";
m_wsSpectrumPort = 8887;
m_markersDisplay = MarkersDisplayNone;
}
QByteArray SpectrumSettings::serialize() const
@ -93,6 +94,7 @@ QByteArray SpectrumSettings::serialize() const
s.writeBool(25, m_usb);
s.writeS32(26, m_fpsPeriodMs);
s.writeBool(27, m_wsSpectrum);
s.writeS32(28, (int) m_markersDisplay);
s.writeS32(100, m_histogramMarkers.size());
for (int i = 0; i < m_histogramMarkers.size(); i++) {
@ -169,10 +171,12 @@ bool SpectrumSettings::deserialize(const QByteArray& data)
d.readBool(24, &m_ssb, false);
d.readBool(25, &m_usb, true);
d.readS32(26, &tmp, 50);
d.readBool(27, &m_wsSpectrum, false);
m_fpsPeriodMs = tmp < 5 ? 5 : tmp > 500 ? 500 : tmp;
int histogramMarkersSize;
d.readBool(27, &m_wsSpectrum, false);
d.readS32(28, &tmp, 0);
m_markersDisplay = (MarkersDisplay) tmp;
int histogramMarkersSize;
d.readS32(100, &histogramMarkersSize, 0);
histogramMarkersSize = histogramMarkersSize < 0 ? 0 :
histogramMarkersSize > SpectrumHistogramMarker::m_maxNbOfMarkers ?

Wyświetl plik

@ -75,6 +75,7 @@ public:
QList<SpectrumHistogramMarker> m_histogramMarkers;
QList<SpectrumWaterfallMarker> m_waterfallMarkers;
QList<SpectrumAnnotationMarker> m_annoationMarkers;
MarkersDisplay m_markersDisplay;
static const int m_log2FFTSizeMin = 6; // 64
static const int m_log2FFTSizeMax = 15; // 32k

Wyświetl plik

@ -448,6 +448,16 @@ void GLSpectrum::setAnnotationMarkers(const QList<SpectrumAnnotationMarker>& ann
update();
}
void GLSpectrum::setMarkersDisplay(SpectrumSettings::MarkersDisplay markersDisplay)
{
m_mutex.lock();
m_markersDisplay = markersDisplay;
updateMarkersDisplay();
m_changesPending = true;
m_mutex.unlock();
update();
}
float GLSpectrum::getPowerMax() const
{
return m_linear ? m_powerScale.getRangeMax() : CalcDb::powerFromdB(m_powerScale.getRangeMax());
@ -1403,6 +1413,7 @@ void GLSpectrum::drawAnnotationMarkers()
}
float h = m_annotationMarkerHeight / (float) m_histogramHeight;
float htop = 1.0f / (float) m_histogramHeight;
for (const auto &marker : m_visibleAnnotationMarkers)
{
@ -1415,7 +1426,7 @@ void GLSpectrum::drawAnnotationMarkers()
if (marker->m_bandwidth == 0)
{
GLfloat d[] {
marker->m_startPos, 0,
marker->m_startPos, htop,
marker->m_startPos, h
};
m_glShaderSimple.drawSegments(m_glHistogramBoxMatrix, color, d, 2);
@ -1425,8 +1436,8 @@ void GLSpectrum::drawAnnotationMarkers()
GLfloat q3[] {
marker->m_stopPos, h,
marker->m_startPos, h,
marker->m_startPos, 0,
marker->m_stopPos, 0
marker->m_startPos, htop,
marker->m_stopPos, htop
};
m_glShaderSimple.drawSurface(m_glHistogramBoxMatrix, color, q3, 4);
}

Wyświetl plik

@ -169,6 +169,7 @@ public:
void updateAnnotationMarkers();
void updateMarkersDisplay();
SpectrumSettings::MarkersDisplay& getMarkersDisplay() { return m_markersDisplay; }
void setMarkersDisplay(SpectrumSettings::MarkersDisplay markersDisplay);
private:
struct ChannelMarkerState {

Wyświetl plik

@ -251,6 +251,7 @@ void GLSpectrumGUI::applySpectrumSettings()
m_glSpectrum->setHistogramMarkers(m_settings.m_histogramMarkers);
m_glSpectrum->setWaterfallMarkers(m_settings.m_waterfallMarkers);
m_glSpectrum->setAnnotationMarkers(m_settings.m_annoationMarkers);
m_glSpectrum->setMarkersDisplay(m_settings.m_markersDisplay);
}
void GLSpectrumGUI::on_fftWindow_currentIndexChanged(int index)
@ -386,6 +387,7 @@ void GLSpectrumGUI::on_markers_clicked(bool checked)
m_settings.m_histogramMarkers = m_glSpectrum->getHistogramMarkers();
m_settings.m_waterfallMarkers = m_glSpectrum->getWaterfallMarkers();
m_settings.m_annoationMarkers = m_glSpectrum->getAnnotationMarkers();
m_settings.m_markersDisplay = m_glSpectrum->getMarkersDisplay();
applySettings();
}