From 9de7bc95fbae8abd0334b6a453c403fc9da0bef3 Mon Sep 17 00:00:00 2001 From: "Charles J. Cliffe" Date: Wed, 12 Aug 2015 20:05:57 -0400 Subject: [PATCH] meter visual fix, tuner refresh fix --- src/AppFrame.cpp | 12 ++++++++---- src/visual/MeterCanvas.cpp | 12 ++++++++++-- src/visual/MeterCanvas.h | 3 +++ src/visual/TuningCanvas.cpp | 4 +++- 4 files changed, 24 insertions(+), 7 deletions(-) diff --git a/src/AppFrame.cpp b/src/AppFrame.cpp index 614b2e5..890aa25 100644 --- a/src/AppFrame.cpp +++ b/src/AppFrame.cpp @@ -106,6 +106,7 @@ AppFrame::AppFrame() : demodGainMeter = new MeterCanvas(this, attribList); demodGainMeter->setMax(2.0); demodGainMeter->setHelpTip("Current Demodulator Gain Level. Click / Drag to set Gain level."); + demodGainMeter->setShowUserInput(false); demodTray->Add(demodGainMeter, 1, wxEXPAND | wxALL, 0); vbox->Add(demodTray, 12, wxEXPAND | wxALL, 0); @@ -118,8 +119,9 @@ AppFrame::AppFrame() : spectrumAvgMeter = new MeterCanvas(this, attribList); spectrumAvgMeter->setMax(3.0); - spectrumAvgMeter->setInputValue(1.0); - + spectrumAvgMeter->setLevel(1.0); + spectrumAvgMeter->setShowUserInput(false); + spectrumSizer->Add(spectrumCanvas, 63, wxEXPAND | wxALL, 0); spectrumSizer->AddSpacer(1); spectrumSizer->Add(spectrumAvgMeter, 1, wxEXPAND | wxALL, 0); @@ -142,7 +144,8 @@ AppFrame::AppFrame() : waterfallSpeedMeter = new MeterCanvas(this, attribList); waterfallSpeedMeter->setMax(sqrt(1024)); - waterfallSpeedMeter->setInputValue(sqrt(DEFAULT_WATERFALL_LPS)); + waterfallSpeedMeter->setLevel(sqrt(DEFAULT_WATERFALL_LPS)); + waterfallSpeedMeter->setShowUserInput(false); wfSizer->Add(waterfallCanvas, 63, wxEXPAND | wxALL, 0); wfSizer->AddSpacer(1); @@ -737,7 +740,8 @@ void AppFrame::OnIdle(wxIdleEvent& event) { } if (waterfallSpeedMeter->inputChanged()) { - int val = (int)waterfallSpeedMeter->getInputValue(); + float val = waterfallSpeedMeter->getInputValue(); + waterfallSpeedMeter->setLevel(val); fftDistrib.setLinesPerSecond((int)ceil(val*val)); wxGetApp().getWaterfallVisualQueue()->set_max_num_items((int)ceil(val*val)); } diff --git a/src/visual/MeterCanvas.cpp b/src/visual/MeterCanvas.cpp index 07e7984..46153a0 100644 --- a/src/visual/MeterCanvas.cpp +++ b/src/visual/MeterCanvas.cpp @@ -25,7 +25,7 @@ EVT_ENTER_WINDOW(MeterCanvas::OnMouseEnterWindow) wxEND_EVENT_TABLE() MeterCanvas::MeterCanvas(wxWindow *parent, int *attribList) : - InteractiveCanvas(parent, attribList), level(0), level_max(1), inputValue(0), userInputValue(0) { + InteractiveCanvas(parent, attribList), level(0), level_max(1), inputValue(0), userInputValue(0), showUserInput(true) { glContext = new MeterContext(this, &wxGetApp().GetContext(this)); } @@ -58,6 +58,10 @@ float MeterCanvas::getInputValue() { return userInputValue; } +void MeterCanvas::setShowUserInput(bool showUserInput) { + this->showUserInput = showUserInput; +} + void MeterCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) { wxPaintDC dc(this); const wxSize ClientSize = GetClientSize(); @@ -68,11 +72,15 @@ void MeterCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) { glViewport(0, 0, ClientSize.x, ClientSize.y); glContext->DrawBegin(); + glContext->Draw(ThemeMgr::mgr.currentTheme->generalBackground.r, ThemeMgr::mgr.currentTheme->generalBackground.g, ThemeMgr::mgr.currentTheme->generalBackground.b, 0.5, 1.0); + if (mouseTracker.mouseInView()) { glContext->Draw(0.4, 0.4, 0.4, 0.5, mouseTracker.getMouseY()); } glContext->Draw(ThemeMgr::mgr.currentTheme->meterLevel.r, ThemeMgr::mgr.currentTheme->meterLevel.g, ThemeMgr::mgr.currentTheme->meterLevel.b, 0.5, level / level_max); - glContext->Draw(ThemeMgr::mgr.currentTheme->meterValue.r, ThemeMgr::mgr.currentTheme->meterValue.g, ThemeMgr::mgr.currentTheme->meterValue.b, 0.5, userInputValue / level_max); + if (showUserInput) { + glContext->Draw(ThemeMgr::mgr.currentTheme->meterValue.r, ThemeMgr::mgr.currentTheme->meterValue.g, ThemeMgr::mgr.currentTheme->meterValue.b, 0.5, userInputValue / level_max); + } glContext->DrawEnd(); SwapBuffers(); diff --git a/src/visual/MeterCanvas.h b/src/visual/MeterCanvas.h index a6968b1..0cc97cd 100644 --- a/src/visual/MeterCanvas.h +++ b/src/visual/MeterCanvas.h @@ -26,6 +26,7 @@ public: void setInputValue(float slider_in); bool inputChanged(); float getInputValue(); + void setShowUserInput(bool showUserInput); void setHelpTip(std::string tip); @@ -48,6 +49,8 @@ private: float inputValue; float userInputValue; + bool showUserInput; + std::string helpTip; // wxDECLARE_EVENT_TABLE(); diff --git a/src/visual/TuningCanvas.cpp b/src/visual/TuningCanvas.cpp index 23f15a4..8a85ac4 100644 --- a/src/visual/TuningCanvas.cpp +++ b/src/visual/TuningCanvas.cpp @@ -252,7 +252,9 @@ void TuningCanvas::OnIdle(wxIdleEvent &event) { dragging = false; } } - Refresh(); + if (mouseTracker.mouseInView() || changed()) { + Refresh(); + } event.RequestMore(); }