From 011fdce23701ca74201a31a344f0c36cb768f198 Mon Sep 17 00:00:00 2001 From: Ryzerth Date: Sat, 31 Jul 2021 01:38:01 +0200 Subject: [PATCH] Fixed weird VFO behavior --- core/src/gui/main_window.cpp | 12 +++++++++++- core/src/signal_path/vfo_manager.cpp | 11 +++++++++++ core/src/signal_path/vfo_manager.h | 2 ++ core/src/version.h | 2 +- 4 files changed, 25 insertions(+), 2 deletions(-) diff --git a/core/src/gui/main_window.cpp b/core/src/gui/main_window.cpp index f5bf56b..75d9fd7 100644 --- a/core/src/gui/main_window.cpp +++ b/core/src/gui/main_window.cpp @@ -248,7 +248,17 @@ void MainWindow::vfoAddedHandler(VFOManager::VFO* vfo, void* ctx) { double offset = core::configManager.conf["vfoOffsets"][name]; core::configManager.release(); - sigpath::vfoManager.setOffset(name, _this->initComplete ? std::clamp(offset, -_this->bw/2.0, _this->bw/2.0) : offset); + double viewBW = gui::waterfall.getViewBandwidth(); + double viewOffset = gui::waterfall.getViewOffset(); + + double viewLower = viewOffset - (viewBW/2.0); + double viewUpper = viewOffset + (viewBW/2.0); + + double newOffset = std::clamp(offset, viewLower, viewUpper); + + sigpath::vfoManager.setCenterOffset(name, _this->initComplete ? newOffset : offset); + + } void MainWindow::draw() { diff --git a/core/src/signal_path/vfo_manager.cpp b/core/src/signal_path/vfo_manager.cpp index bdefb2f..6eb26c6 100644 --- a/core/src/signal_path/vfo_manager.cpp +++ b/core/src/signal_path/vfo_manager.cpp @@ -74,6 +74,10 @@ double VFOManager::VFO::getBandwidth() { return wtfVFO->bandwidth; } +int VFOManager::VFO::getReference() { + return wtfVFO->reference; +} + void VFOManager::VFO::setColor(ImU32 color) { wtfVFO->color = color; } @@ -176,6 +180,13 @@ double VFOManager::getBandwidth(std::string name) { return vfos[name]->getBandwidth(); } +int VFOManager::getReference(std::string name) { + if (vfos.find(name) == vfos.end()) { + return -1; + } + return vfos[name]->getReference(); +} + void VFOManager::setColor(std::string name, ImU32 color) { if (vfos.find(name) == vfos.end()) { return; diff --git a/core/src/signal_path/vfo_manager.h b/core/src/signal_path/vfo_manager.h index 75ae5bf..bd4e452 100644 --- a/core/src/signal_path/vfo_manager.h +++ b/core/src/signal_path/vfo_manager.h @@ -22,6 +22,7 @@ public: void setBandwidthLimits(double minBandwidth, double maxBandwidth, bool bandwidthLocked); bool getBandwidthChanged(bool erase = true); double getBandwidth(); + int getReference(); void setColor(ImU32 color); std::string getName(); @@ -50,6 +51,7 @@ public: double getBandwidth(std::string name); void setColor(std::string name, ImU32 color); std::string getName(); + int getReference(std::string name); bool vfoExists(std::string name); void updateFromWaterfall(ImGui::WaterFall* wtf); diff --git a/core/src/version.h b/core/src/version.h index 223edeb..7d6b458 100644 --- a/core/src/version.h +++ b/core/src/version.h @@ -1,3 +1,3 @@ #pragma once -#define VERSION_STR "1.0.0_rc3" \ No newline at end of file +#define VERSION_STR "1.0.0_rc4" \ No newline at end of file