diff --git a/sdrgui/CMakeLists.txt b/sdrgui/CMakeLists.txt index 6b6c5ae02..057ca5d4e 100644 --- a/sdrgui/CMakeLists.txt +++ b/sdrgui/CMakeLists.txt @@ -147,6 +147,7 @@ set(sdrgui_HEADERS gui/scaleengine.h gui/scaledimage.h gui/sdrangelsplash.h + gui/spectrummarkers.h gui/tickedslider.h gui/transverterbutton.h gui/transverterdialog.h diff --git a/sdrgui/gui/glspectrum.cpp b/sdrgui/gui/glspectrum.cpp index afc29ee80..f3b8f8dd1 100644 --- a/sdrgui/gui/glspectrum.cpp +++ b/sdrgui/gui/glspectrum.cpp @@ -1148,7 +1148,7 @@ void GLSpectrum::drawMarkers() QPointF ypoint = m_histogramMarkers.at(i).m_point; QString powerStr = m_histogramMarkers.at(i).m_powerStr; - if (m_histogramMarkers.at(i).m_markerType == HistogramMarkerTypePower) + if (m_histogramMarkers.at(i).m_markerType == SpectrumHistogramMarkerTypePower) { ypoint.ry() = (m_powerScale.getRangeMax() - m_currentSpectrum[m_histogramMarkers.at(i).m_fftBin]) / m_powerScale.getRange(); @@ -1195,10 +1195,10 @@ void GLSpectrum::drawMarkers() } else { - float power0 = m_histogramMarkers.at(0).m_markerType == HistogramMarkerTypePower ? + float power0 = m_histogramMarkers.at(0).m_markerType == SpectrumHistogramMarkerTypePower ? m_currentSpectrum[m_histogramMarkers.at(0).m_fftBin] : m_histogramMarkers.at(0).m_power; - float poweri = m_histogramMarkers.at(i).m_markerType == HistogramMarkerTypePower ? + float poweri = m_histogramMarkers.at(i).m_markerType == SpectrumHistogramMarkerTypePower ? m_currentSpectrum[m_histogramMarkers.at(i).m_fftBin] : m_histogramMarkers.at(i).m_power; QString deltaPowerStr = displayScaledF( @@ -2178,7 +2178,7 @@ void GLSpectrum::mousePressEvent(QMouseEvent* event) { if (m_histogramMarkers.size() < 2) { - m_histogramMarkers.push_back(HistogramMarker()); + m_histogramMarkers.push_back(SpectrumHistogramMarker()); m_histogramMarkers.back().m_point = pHis; m_histogramMarkers.back().m_frequency = frequency; m_histogramMarkers.back().m_fftBin = fftBin; @@ -2223,7 +2223,7 @@ void GLSpectrum::mousePressEvent(QMouseEvent* event) { if (m_waterfallMarkers.size() < 2) { - m_waterfallMarkers.push_back(WaterfallMarker()); + m_waterfallMarkers.push_back(SpectrumWaterfallMarker()); m_waterfallMarkers.back().m_point = pWat; m_waterfallMarkers.back().m_frequency = frequency; m_waterfallMarkers.back().m_frequencyStr = displayScaled( diff --git a/sdrgui/gui/glspectrum.h b/sdrgui/gui/glspectrum.h index f461dd357..e8b547963 100644 --- a/sdrgui/gui/glspectrum.h +++ b/sdrgui/gui/glspectrum.h @@ -32,6 +32,7 @@ #include "gui/scaleengine.h" #include "gui/glshadersimple.h" #include "gui/glshadertextured.h" +#include "gui/spectrummarkers.h" #include "dsp/channelmarker.h" #include "export.h" #include "util/incrementalarray.h" @@ -176,112 +177,8 @@ private: CSChannelMoving }; - enum HistogramMarkerType { - HistogramMarkerTypeManual, - HistogramMarkerTypePower - }; - - struct HistogramMarker { - QPointF m_point; - float m_frequency; - int m_fftBin; - float m_power; - HistogramMarkerType m_markerType; - QString m_frequencyStr; - QString m_powerStr; - QString m_deltaFrequencyStr; - QString m_deltaPowerStr; - HistogramMarker() : - m_point(0, 0), - m_frequency(0), - m_fftBin(0), - m_power(0), - m_markerType(HistogramMarkerTypeManual), - m_frequencyStr(), - m_powerStr(), - m_deltaFrequencyStr(), - m_deltaPowerStr() - {} - HistogramMarker( - const QPointF& point, - float frequency, - int fftBin, - float power, - HistogramMarkerType markerType, - const QString& frequencyStr, - const QString& powerStr, - const QString& deltaFrequencyStr, - const QString& deltaPowerStr - ) : - m_point(point), - m_frequency(frequency), - m_fftBin(fftBin), - m_power(power), - m_markerType(markerType), - m_frequencyStr(frequencyStr), - m_powerStr(powerStr), - m_deltaFrequencyStr(deltaFrequencyStr), - m_deltaPowerStr(deltaPowerStr) - {} - HistogramMarker(const HistogramMarker& other) : - m_point(other.m_point), - m_frequency(other.m_frequency), - m_fftBin(other.m_fftBin), - m_power(other.m_power), - m_markerType(other.m_markerType), - m_frequencyStr(other.m_frequencyStr), - m_powerStr(other.m_powerStr), - m_deltaFrequencyStr(other.m_deltaFrequencyStr), - m_deltaPowerStr(other.m_deltaPowerStr) - {} - }; - QList m_histogramMarkers; - - struct WaterfallMarker { - QPointF m_point; - float m_frequency; - float m_time; - QString m_frequencyStr; - QString m_timeStr; - QString m_deltaFrequencyStr; - QString m_deltaTimeStr; - WaterfallMarker() : - m_point(0, 0), - m_frequency(0), - m_time(0), - m_frequencyStr(), - m_timeStr(), - m_deltaFrequencyStr(), - m_deltaTimeStr() - {} - WaterfallMarker( - const QPointF& point, - float frequency, - float time, - const QString& frequencyStr, - const QString& timeStr, - const QString& deltaFrequencyStr, - const QString& deltaTimeStr - ) : - m_point(point), - m_frequency(frequency), - m_time(time), - m_frequencyStr(frequencyStr), - m_timeStr(timeStr), - m_deltaFrequencyStr(deltaFrequencyStr), - m_deltaTimeStr(deltaTimeStr) - {} - WaterfallMarker(const WaterfallMarker& other) : - m_point(other.m_point), - m_frequency(other.m_frequency), - m_time(other.m_time), - m_frequencyStr(other.m_frequencyStr), - m_timeStr(other.m_timeStr), - m_deltaFrequencyStr(other.m_deltaFrequencyStr), - m_deltaTimeStr(other.m_deltaTimeStr) - {} - }; - QList m_waterfallMarkers; + QList m_histogramMarkers; + QList m_waterfallMarkers; CursorState m_cursorState; int m_cursorChannel; diff --git a/sdrgui/gui/spectrummarkers.h b/sdrgui/gui/spectrummarkers.h new file mode 100644 index 000000000..bd35621a6 --- /dev/null +++ b/sdrgui/gui/spectrummarkers.h @@ -0,0 +1,124 @@ +/////////////////////////////////////////////////////////////////////////////////// +// Copyright (C) 2021 Edouard Griffiths, F4EXB // +// // +// Symbol synchronizer or symbol clock recovery mostly encapsulating // +// liquid-dsp's symsync "object" // +// // +// This program is free software; you can redistribute it and/or modify // +// it under the terms of the GNU General Public License as published by // +// the Free Software Foundation as version 3 of the License, or // +// (at your option) any later version. // +// // +// This program is distributed in the hope that it will be useful, // +// but WITHOUT ANY WARRANTY; without even the implied warranty of // +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // +// GNU General Public License V3 for more details. // +// // +// You should have received a copy of the GNU General Public License // +// along with this program. If not, see . // +/////////////////////////////////////////////////////////////////////////////////// + +#ifndef INCLUDE_SPECTRUMMARKERS_H +#define INCLUDE_SPECTRUMMARKERS_H + +#include +#include + +enum SpectrumHistogramMarkerType { + SpectrumHistogramMarkerTypeManual, + SpectrumHistogramMarkerTypePower +}; + +struct SpectrumHistogramMarker +{ + QPointF m_point; + float m_frequency; + int m_fftBin; + float m_power; + SpectrumHistogramMarkerType m_markerType; + QString m_frequencyStr; + QString m_powerStr; + QString m_deltaFrequencyStr; + QString m_deltaPowerStr; + + SpectrumHistogramMarker() : + m_point(0, 0), + m_frequency(0), + m_fftBin(0), + m_power(0), + m_markerType(SpectrumHistogramMarkerTypeManual), + m_frequencyStr(), + m_powerStr(), + m_deltaFrequencyStr(), + m_deltaPowerStr() + {} + + SpectrumHistogramMarker( + const QPointF& point, + float frequency, + int fftBin, + float power, + SpectrumHistogramMarkerType markerType, + const QString& frequencyStr, + const QString& powerStr, + const QString& deltaFrequencyStr, + const QString& deltaPowerStr + ) : + m_point(point), + m_frequency(frequency), + m_fftBin(fftBin), + m_power(power), + m_markerType(markerType), + m_frequencyStr(frequencyStr), + m_powerStr(powerStr), + m_deltaFrequencyStr(deltaFrequencyStr), + m_deltaPowerStr(deltaPowerStr) + {} + + SpectrumHistogramMarker(const SpectrumHistogramMarker& other) = default; + SpectrumHistogramMarker& operator=(const SpectrumHistogramMarker&) = default; +}; + +struct SpectrumWaterfallMarker +{ + QPointF m_point; + float m_frequency; + float m_time; + QString m_frequencyStr; + QString m_timeStr; + QString m_deltaFrequencyStr; + QString m_deltaTimeStr; + + SpectrumWaterfallMarker() : + m_point(0, 0), + m_frequency(0), + m_time(0), + m_frequencyStr(), + m_timeStr(), + m_deltaFrequencyStr(), + m_deltaTimeStr() + {} + + SpectrumWaterfallMarker( + const QPointF& point, + float frequency, + float time, + const QString& frequencyStr, + const QString& timeStr, + const QString& deltaFrequencyStr, + const QString& deltaTimeStr + ) : + m_point(point), + m_frequency(frequency), + m_time(time), + m_frequencyStr(frequencyStr), + m_timeStr(timeStr), + m_deltaFrequencyStr(deltaFrequencyStr), + m_deltaTimeStr(deltaTimeStr) + {} + + SpectrumWaterfallMarker(const SpectrumWaterfallMarker& other) = default; + SpectrumWaterfallMarker& operator=(const SpectrumWaterfallMarker&) = default; +}; + +#endif // INCLUDE_SPECTRUMMARKERS_H