diff --git a/sdrgui/gui/glspectrum.cpp b/sdrgui/gui/glspectrum.cpp
index e72863d4f..8192ef5b9 100644
--- a/sdrgui/gui/glspectrum.cpp
+++ b/sdrgui/gui/glspectrum.cpp
@@ -1178,6 +1178,7 @@ void GLSpectrum::drawMarkers()
{
ypoint.ry() =
(m_powerScale.getRangeMax() - m_currentSpectrum[m_histogramMarkers.at(i).m_fftBin]) / m_powerScale.getRange();
+ ypoint.ry() = ypoint.ry() > 1 ? 1 : ypoint.ry();
powerStr = displayScaledF(
m_currentSpectrum[m_histogramMarkers.at(i).m_fftBin],
m_linear ? 'e' : 'f',
@@ -1227,11 +1228,14 @@ void GLSpectrum::drawMarkers()
float poweri = m_histogramMarkers.at(i).m_markerType == SpectrumHistogramMarkerTypePower ?
m_currentSpectrum[m_histogramMarkers.at(i).m_fftBin] :
m_linear ? m_histogramMarkers.at(i).m_power : CalcDb::dbPower(m_histogramMarkers.at(i).m_power);
- QString deltaPowerStr = displayScaledF(
- poweri - power0,
- m_linear ? 'e' : 'f',
- m_linear ? 3 : 1,
- false);
+ QString deltaPowerStr;
+
+ if (m_linear) {
+ deltaPowerStr = displayScaledF(poweri - power0, 'e', 3, false);
+ } else {
+ deltaPowerStr = QString::number(poweri - power0, 'f', 1);
+ }
+
drawTextOverlay(
m_histogramMarkers.at(i).m_deltaFrequencyStr,
QColor(255, 255, 255, 192),
diff --git a/sdrgui/gui/spectrummarkersdialog.cpp b/sdrgui/gui/spectrummarkersdialog.cpp
index 52f896c1a..8d7c2fbca 100644
--- a/sdrgui/gui/spectrummarkersdialog.cpp
+++ b/sdrgui/gui/spectrummarkersdialog.cpp
@@ -50,10 +50,11 @@ void SpectrumMarkersDialog::displayHistogramMarker()
{
if (m_histogramMarkers.size() == 0)
{
- ui->markerText->setText("-");
ui->marker->setEnabled(false);
ui->markerFrequency->setEnabled(false);
+ ui->powerMode->setEnabled(false);
ui->fixedPower->setEnabled(false);
+ ui->markerText->setText("-");
ui->fixedPower->setValue(0);
ui->fixedPowerText->setText(tr("0.0"));
}
@@ -61,10 +62,12 @@ void SpectrumMarkersDialog::displayHistogramMarker()
{
ui->marker->setEnabled(true);
ui->markerFrequency->setEnabled(true);
+ ui->powerMode->setEnabled(true);
+ ui->fixedPower->setEnabled(true);
ui->markerText->setText(tr("%1").arg(m_histogramMarkerIndex));
ui->markerFrequency->setValue(m_histogramMarkers[m_histogramMarkerIndex].m_frequency);
+ ui->powerMode->setCurrentIndex((int) m_histogramMarkers[m_histogramMarkerIndex].m_markerType);
float powerDB = CalcDb::dbPower(m_histogramMarkers[m_histogramMarkerIndex].m_power);
- ui->fixedPower->setEnabled(true);
ui->fixedPower->setValue(powerDB*10);
ui->fixedPowerText->setText(QString::number(powerDB, 'f', 1));
}
@@ -114,6 +117,21 @@ void SpectrumMarkersDialog::on_marker_valueChanged(int value)
displayHistogramMarker();
}
+void SpectrumMarkersDialog::on_setReference_clicked(bool checked)
+{
+ (void) checked;
+
+ if ((m_histogramMarkerIndex == 0) || (m_histogramMarkers.size() < 2)) {
+ return;
+ }
+
+ SpectrumHistogramMarker marker0 = m_histogramMarkers.at(0);
+ m_histogramMarkers[0] = m_histogramMarkers[m_histogramMarkerIndex];
+ m_histogramMarkers[m_histogramMarkerIndex] = marker0;
+ displayHistogramMarker();
+ m_histogramMarkersChanged = true;
+}
+
void SpectrumMarkersDialog::on_markerAdd_clicked(bool checked)
{
(void) checked;
@@ -146,3 +164,13 @@ void SpectrumMarkersDialog::on_markerDel_clicked(bool checked)
displayHistogramMarker();
m_histogramMarkersChanged = true;
}
+
+void SpectrumMarkersDialog::on_powerMode_currentIndexChanged(int index)
+{
+ if (m_histogramMarkers.size() == 0) {
+ return;
+ }
+
+ m_histogramMarkers[m_histogramMarkerIndex].m_markerType = (SpectrumHistogramMarkerType) index;
+ m_histogramMarkersChanged = true;
+}
diff --git a/sdrgui/gui/spectrummarkersdialog.h b/sdrgui/gui/spectrummarkersdialog.h
index 8a0e5150f..365e609aa 100644
--- a/sdrgui/gui/spectrummarkersdialog.h
+++ b/sdrgui/gui/spectrummarkersdialog.h
@@ -60,8 +60,10 @@ private slots:
void on_markerFrequency_changed(qint64 value);
void on_fixedPower_valueChanged(int value);
void on_marker_valueChanged(int value);
+ void on_setReference_clicked(bool checked);
void on_markerAdd_clicked(bool checked);
void on_markerDel_clicked(bool checked);
+ void on_powerMode_currentIndexChanged(int index);
void accept();
void reject();
};
diff --git a/sdrgui/gui/spectrummarkersdialog.ui b/sdrgui/gui/spectrummarkersdialog.ui
index f19440aed..1791c11c8 100644
--- a/sdrgui/gui/spectrummarkersdialog.ui
+++ b/sdrgui/gui/spectrummarkersdialog.ui
@@ -155,6 +155,22 @@
+ -
+
+
+
+ 24
+ 24
+
+
+
+ Set marker as reference (index 0)
+
+
+ R
+
+
+
-