meter visual fix, tuner refresh fix

This commit is contained in:
Charles J. Cliffe 2015-08-12 20:05:57 -04:00
parent 33d51b2bff
commit 9de7bc95fb
4 changed files with 24 additions and 7 deletions

View File

@ -106,6 +106,7 @@ AppFrame::AppFrame() :
demodGainMeter = new MeterCanvas(this, attribList); demodGainMeter = new MeterCanvas(this, attribList);
demodGainMeter->setMax(2.0); demodGainMeter->setMax(2.0);
demodGainMeter->setHelpTip("Current Demodulator Gain Level. Click / Drag to set Gain level."); demodGainMeter->setHelpTip("Current Demodulator Gain Level. Click / Drag to set Gain level.");
demodGainMeter->setShowUserInput(false);
demodTray->Add(demodGainMeter, 1, wxEXPAND | wxALL, 0); demodTray->Add(demodGainMeter, 1, wxEXPAND | wxALL, 0);
vbox->Add(demodTray, 12, wxEXPAND | wxALL, 0); vbox->Add(demodTray, 12, wxEXPAND | wxALL, 0);
@ -118,8 +119,9 @@ AppFrame::AppFrame() :
spectrumAvgMeter = new MeterCanvas(this, attribList); spectrumAvgMeter = new MeterCanvas(this, attribList);
spectrumAvgMeter->setMax(3.0); spectrumAvgMeter->setMax(3.0);
spectrumAvgMeter->setInputValue(1.0); spectrumAvgMeter->setLevel(1.0);
spectrumAvgMeter->setShowUserInput(false);
spectrumSizer->Add(spectrumCanvas, 63, wxEXPAND | wxALL, 0); spectrumSizer->Add(spectrumCanvas, 63, wxEXPAND | wxALL, 0);
spectrumSizer->AddSpacer(1); spectrumSizer->AddSpacer(1);
spectrumSizer->Add(spectrumAvgMeter, 1, wxEXPAND | wxALL, 0); spectrumSizer->Add(spectrumAvgMeter, 1, wxEXPAND | wxALL, 0);
@ -142,7 +144,8 @@ AppFrame::AppFrame() :
waterfallSpeedMeter = new MeterCanvas(this, attribList); waterfallSpeedMeter = new MeterCanvas(this, attribList);
waterfallSpeedMeter->setMax(sqrt(1024)); 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->Add(waterfallCanvas, 63, wxEXPAND | wxALL, 0);
wfSizer->AddSpacer(1); wfSizer->AddSpacer(1);
@ -737,7 +740,8 @@ void AppFrame::OnIdle(wxIdleEvent& event) {
} }
if (waterfallSpeedMeter->inputChanged()) { if (waterfallSpeedMeter->inputChanged()) {
int val = (int)waterfallSpeedMeter->getInputValue(); float val = waterfallSpeedMeter->getInputValue();
waterfallSpeedMeter->setLevel(val);
fftDistrib.setLinesPerSecond((int)ceil(val*val)); fftDistrib.setLinesPerSecond((int)ceil(val*val));
wxGetApp().getWaterfallVisualQueue()->set_max_num_items((int)ceil(val*val)); wxGetApp().getWaterfallVisualQueue()->set_max_num_items((int)ceil(val*val));
} }

View File

@ -25,7 +25,7 @@ EVT_ENTER_WINDOW(MeterCanvas::OnMouseEnterWindow)
wxEND_EVENT_TABLE() wxEND_EVENT_TABLE()
MeterCanvas::MeterCanvas(wxWindow *parent, int *attribList) : 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)); glContext = new MeterContext(this, &wxGetApp().GetContext(this));
} }
@ -58,6 +58,10 @@ float MeterCanvas::getInputValue() {
return userInputValue; return userInputValue;
} }
void MeterCanvas::setShowUserInput(bool showUserInput) {
this->showUserInput = showUserInput;
}
void MeterCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) { void MeterCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) {
wxPaintDC dc(this); wxPaintDC dc(this);
const wxSize ClientSize = GetClientSize(); const wxSize ClientSize = GetClientSize();
@ -68,11 +72,15 @@ void MeterCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) {
glViewport(0, 0, ClientSize.x, ClientSize.y); glViewport(0, 0, ClientSize.x, ClientSize.y);
glContext->DrawBegin(); 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()) { if (mouseTracker.mouseInView()) {
glContext->Draw(0.4, 0.4, 0.4, 0.5, mouseTracker.getMouseY()); 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->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(); glContext->DrawEnd();
SwapBuffers(); SwapBuffers();

View File

@ -26,6 +26,7 @@ public:
void setInputValue(float slider_in); void setInputValue(float slider_in);
bool inputChanged(); bool inputChanged();
float getInputValue(); float getInputValue();
void setShowUserInput(bool showUserInput);
void setHelpTip(std::string tip); void setHelpTip(std::string tip);
@ -48,6 +49,8 @@ private:
float inputValue; float inputValue;
float userInputValue; float userInputValue;
bool showUserInput;
std::string helpTip; std::string helpTip;
// //
wxDECLARE_EVENT_TABLE(); wxDECLARE_EVENT_TABLE();

View File

@ -252,7 +252,9 @@ void TuningCanvas::OnIdle(wxIdleEvent &event) {
dragging = false; dragging = false;
} }
} }
Refresh(); if (mouseTracker.mouseInView() || changed()) {
Refresh();
}
event.RequestMore(); event.RequestMore();
} }