diff --git a/sdrbase/dsp/spectrumsettings.cpp b/sdrbase/dsp/spectrumsettings.cpp index d114ce2fd..022cbaed7 100644 --- a/sdrbase/dsp/spectrumsettings.cpp +++ b/sdrbase/dsp/spectrumsettings.cpp @@ -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 ? diff --git a/sdrbase/dsp/spectrumsettings.h b/sdrbase/dsp/spectrumsettings.h index d3999ac4b..3eb3db932 100644 --- a/sdrbase/dsp/spectrumsettings.h +++ b/sdrbase/dsp/spectrumsettings.h @@ -75,6 +75,7 @@ public: QList m_histogramMarkers; QList m_waterfallMarkers; QList m_annoationMarkers; + MarkersDisplay m_markersDisplay; static const int m_log2FFTSizeMin = 6; // 64 static const int m_log2FFTSizeMax = 15; // 32k diff --git a/sdrgui/gui/glspectrum.cpp b/sdrgui/gui/glspectrum.cpp index 54453ca57..1ffc9489a 100644 --- a/sdrgui/gui/glspectrum.cpp +++ b/sdrgui/gui/glspectrum.cpp @@ -448,6 +448,16 @@ void GLSpectrum::setAnnotationMarkers(const QList& 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); } diff --git a/sdrgui/gui/glspectrum.h b/sdrgui/gui/glspectrum.h index 0c86ed143..d4d208a2b 100644 --- a/sdrgui/gui/glspectrum.h +++ b/sdrgui/gui/glspectrum.h @@ -169,6 +169,7 @@ public: void updateAnnotationMarkers(); void updateMarkersDisplay(); SpectrumSettings::MarkersDisplay& getMarkersDisplay() { return m_markersDisplay; } + void setMarkersDisplay(SpectrumSettings::MarkersDisplay markersDisplay); private: struct ChannelMarkerState { diff --git a/sdrgui/gui/glspectrumgui.cpp b/sdrgui/gui/glspectrumgui.cpp index 3ec720391..08efa7dea 100644 --- a/sdrgui/gui/glspectrumgui.cpp +++ b/sdrgui/gui/glspectrumgui.cpp @@ -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(); }