mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-11-03 13:11:20 -05:00 
			
		
		
		
	Spectrum: make markers display persistent
This commit is contained in:
		
							parent
							
								
									639373f7eb
								
							
						
					
					
						commit
						c025ea47ee
					
				@ -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 ?
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -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);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -169,6 +169,7 @@ public:
 | 
			
		||||
    void updateAnnotationMarkers();
 | 
			
		||||
    void updateMarkersDisplay();
 | 
			
		||||
    SpectrumSettings::MarkersDisplay& getMarkersDisplay() {  return m_markersDisplay; }
 | 
			
		||||
	void setMarkersDisplay(SpectrumSettings::MarkersDisplay markersDisplay);
 | 
			
		||||
 | 
			
		||||
private:
 | 
			
		||||
    struct ChannelMarkerState {
 | 
			
		||||
 | 
			
		||||
@ -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();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user