mirror of
https://github.com/cjcliffe/CubicSDR.git
synced 2025-09-09 02:07:52 -04:00
keyboard waterfall zoom input tweaks
This commit is contained in:
parent
d1ed603ff0
commit
5de181cf67
@ -759,9 +759,9 @@ void AppFrame::OnIdle(wxIdleEvent& event) {
|
|||||||
GetStatusBar()->SetStatusText(wxString::Format(wxT("Spectrum averaging speed changed to %0.2f%%."),val*100.0));
|
GetStatusBar()->SetStatusText(wxString::Format(wxT("Spectrum averaging speed changed to %0.2f%%."),val*100.0));
|
||||||
}
|
}
|
||||||
|
|
||||||
proc->setView(spectrumCanvas->getViewState());
|
proc->setView(waterfallCanvas->getViewState());
|
||||||
proc->setBandwidth(spectrumCanvas->getBandwidth());
|
proc->setBandwidth(waterfallCanvas->getBandwidth());
|
||||||
proc->setCenterFrequency(spectrumCanvas->getCenterFrequency());
|
proc->setCenterFrequency(waterfallCanvas->getCenterFrequency());
|
||||||
|
|
||||||
SpectrumVisualProcessor *dproc = wxGetApp().getDemodSpectrumProcessor();
|
SpectrumVisualProcessor *dproc = wxGetApp().getDemodSpectrumProcessor();
|
||||||
|
|
||||||
|
@ -221,14 +221,14 @@ void SDRPostThread::run() {
|
|||||||
data_in->decRefCount();
|
data_in->decRefCount();
|
||||||
}
|
}
|
||||||
|
|
||||||
buffers.purge();
|
// buffers.purge();
|
||||||
|
|
||||||
if (iqVisualQueue && !iqVisualQueue->empty()) {
|
if (iqVisualQueue && !iqVisualQueue->empty()) {
|
||||||
DemodulatorThreadIQData *visualDataDummy;
|
DemodulatorThreadIQData *visualDataDummy;
|
||||||
iqVisualQueue->pop(visualDataDummy);
|
iqVisualQueue->pop(visualDataDummy);
|
||||||
}
|
}
|
||||||
|
|
||||||
visualDataBuffers.purge();
|
// visualDataBuffers.purge();
|
||||||
|
|
||||||
std::cout << "SDR post-processing thread done." << std::endl;
|
std::cout << "SDR post-processing thread done." << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -295,7 +295,7 @@ void SDRThread::run() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
buffers.purge();
|
// buffers.purge();
|
||||||
|
|
||||||
std::cout << "SDR thread done." << std::endl;
|
std::cout << "SDR thread done." << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ EVT_IDLE(SpectrumCanvas::OnIdle)
|
|||||||
EVT_MOTION(SpectrumCanvas::OnMouseMoved)
|
EVT_MOTION(SpectrumCanvas::OnMouseMoved)
|
||||||
EVT_LEFT_DOWN(SpectrumCanvas::OnMouseDown)
|
EVT_LEFT_DOWN(SpectrumCanvas::OnMouseDown)
|
||||||
EVT_LEFT_UP(SpectrumCanvas::OnMouseReleased)
|
EVT_LEFT_UP(SpectrumCanvas::OnMouseReleased)
|
||||||
|
EVT_ENTER_WINDOW(SpectrumCanvas::OnMouseEnterWindow)
|
||||||
EVT_LEAVE_WINDOW(SpectrumCanvas::OnMouseLeftWindow)
|
EVT_LEAVE_WINDOW(SpectrumCanvas::OnMouseLeftWindow)
|
||||||
EVT_MOUSEWHEEL(SpectrumCanvas::OnMouseWheelMoved)
|
EVT_MOUSEWHEEL(SpectrumCanvas::OnMouseWheelMoved)
|
||||||
wxEND_EVENT_TABLE()
|
wxEND_EVENT_TABLE()
|
||||||
@ -152,6 +153,11 @@ void SpectrumCanvas::OnMouseReleased(wxMouseEvent& event) {
|
|||||||
SetCursor(wxCURSOR_SIZEWE);
|
SetCursor(wxCURSOR_SIZEWE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SpectrumCanvas::OnMouseEnterWindow(wxMouseEvent& event) {
|
||||||
|
InteractiveCanvas::OnMouseEnterWindow(event);
|
||||||
|
SetCursor(wxCURSOR_SIZEWE);
|
||||||
|
}
|
||||||
|
|
||||||
void SpectrumCanvas::OnMouseLeftWindow(wxMouseEvent& event) {
|
void SpectrumCanvas::OnMouseLeftWindow(wxMouseEvent& event) {
|
||||||
InteractiveCanvas::OnMouseLeftWindow(event);
|
InteractiveCanvas::OnMouseLeftWindow(event);
|
||||||
SetCursor(wxCURSOR_SIZEWE);
|
SetCursor(wxCURSOR_SIZEWE);
|
||||||
|
@ -30,6 +30,7 @@ private:
|
|||||||
void OnMouseDown(wxMouseEvent& event);
|
void OnMouseDown(wxMouseEvent& event);
|
||||||
void OnMouseWheelMoved(wxMouseEvent& event);
|
void OnMouseWheelMoved(wxMouseEvent& event);
|
||||||
void OnMouseReleased(wxMouseEvent& event);
|
void OnMouseReleased(wxMouseEvent& event);
|
||||||
|
void OnMouseEnterWindow(wxMouseEvent& event);
|
||||||
void OnMouseLeftWindow(wxMouseEvent& event);
|
void OnMouseLeftWindow(wxMouseEvent& event);
|
||||||
|
|
||||||
PrimaryGLContext *glContext;
|
PrimaryGLContext *glContext;
|
||||||
|
@ -105,45 +105,49 @@ void WaterfallCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) {
|
|||||||
long long bw;
|
long long bw;
|
||||||
if (currentZoom != 1) {
|
if (currentZoom != 1) {
|
||||||
long long freq = wxGetApp().getFrequency();
|
long long freq = wxGetApp().getFrequency();
|
||||||
|
bw = getBandwidth();
|
||||||
|
|
||||||
|
double mpos = 0;
|
||||||
|
float mouseInView = false;
|
||||||
|
|
||||||
|
if (mouseTracker.mouseInView()) {
|
||||||
|
mpos = mouseTracker.getMouseX();
|
||||||
|
mouseInView = true;
|
||||||
|
} else if (spectrumCanvas && spectrumCanvas->getMouseTracker()->mouseInView()) {
|
||||||
|
mpos = spectrumCanvas->getMouseTracker()->getMouseX();
|
||||||
|
mouseInView = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (currentZoom < 1) {
|
if (currentZoom < 1) {
|
||||||
centerFreq = getCenterFrequency();
|
|
||||||
bw = getBandwidth();
|
|
||||||
bw = (long long) ceil((long double) bw * currentZoom);
|
bw = (long long) ceil((long double) bw * currentZoom);
|
||||||
if (bw < 30000) {
|
if (bw < 30000) {
|
||||||
bw = 30000;
|
bw = 30000;
|
||||||
}
|
}
|
||||||
if (mouseTracker.mouseInView()) {
|
if (mouseInView) {
|
||||||
long long mfreqA = getFrequencyAt(mouseTracker.getMouseX());
|
long long mfreqA = getFrequencyAt(mpos);
|
||||||
setBandwidth(bw);
|
setBandwidth(bw);
|
||||||
long long mfreqB = getFrequencyAt(mouseTracker.getMouseX());
|
long long mfreqB = getFrequencyAt(mpos);
|
||||||
centerFreq += mfreqA - mfreqB;
|
centerFreq += mfreqA - mfreqB;
|
||||||
}
|
}
|
||||||
|
|
||||||
setView(centerFreq, bw);
|
setView(centerFreq, bw);
|
||||||
if (spectrumCanvas) {
|
|
||||||
spectrumCanvas->setView(centerFreq, bw);
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (isView) {
|
if (isView) {
|
||||||
bw = getBandwidth();
|
|
||||||
bw = (long long) ceil((long double) bw * currentZoom);
|
bw = (long long) ceil((long double) bw * currentZoom);
|
||||||
|
|
||||||
if (bw >= wxGetApp().getSampleRate()) {
|
if (bw >= wxGetApp().getSampleRate()) {
|
||||||
disableView();
|
disableView();
|
||||||
if (spectrumCanvas) {
|
if (spectrumCanvas) {
|
||||||
spectrumCanvas->disableView();
|
spectrumCanvas->disableView();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (mouseTracker.mouseInView()) {
|
if (mouseInView) {
|
||||||
long long mfreqA = getFrequencyAt(mouseTracker.getMouseX());
|
long long mfreqA = getFrequencyAt(mpos);
|
||||||
setBandwidth(bw);
|
setBandwidth(bw);
|
||||||
long long mfreqB = getFrequencyAt(mouseTracker.getMouseX());
|
long long mfreqB = getFrequencyAt(mpos);
|
||||||
centerFreq += mfreqA - mfreqB;
|
centerFreq += mfreqA - mfreqB;
|
||||||
}
|
} else {
|
||||||
|
setBandwidth(bw);
|
||||||
setView(getCenterFrequency(), bw);
|
|
||||||
if (spectrumCanvas) {
|
|
||||||
spectrumCanvas->setView(centerFreq, bw);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -154,8 +158,15 @@ void WaterfallCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) {
|
|||||||
if (centerFreq > freq && (centerFreq + bandwidth / 2) > (freq + wxGetApp().getSampleRate() / 2)) {
|
if (centerFreq > freq && (centerFreq + bandwidth / 2) > (freq + wxGetApp().getSampleRate() / 2)) {
|
||||||
centerFreq = (freq + wxGetApp().getSampleRate() / 2) - bandwidth / 2;
|
centerFreq = (freq + wxGetApp().getSampleRate() / 2) - bandwidth / 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (spectrumCanvas) {
|
||||||
|
if ((spectrumCanvas->getCenterFrequency() != centerFreq) || (spectrumCanvas->getBandwidth() != bw)) {
|
||||||
|
spectrumCanvas->setView(centerFreq,bw);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
glContext->SetCurrent(*this);
|
glContext->SetCurrent(*this);
|
||||||
initGLExtensions();
|
initGLExtensions();
|
||||||
glViewport(0, 0, ClientSize.x, ClientSize.y);
|
glViewport(0, 0, ClientSize.x, ClientSize.y);
|
||||||
@ -255,11 +266,13 @@ void WaterfallCanvas::OnKeyUp(wxKeyEvent& event) {
|
|||||||
case WXK_UP:
|
case WXK_UP:
|
||||||
case WXK_NUMPAD_UP:
|
case WXK_NUMPAD_UP:
|
||||||
zoom = 1.0;
|
zoom = 1.0;
|
||||||
|
mouseZoom = 0.95;
|
||||||
break;
|
break;
|
||||||
case 'Z':
|
case 'Z':
|
||||||
case WXK_DOWN:
|
case WXK_DOWN:
|
||||||
case WXK_NUMPAD_DOWN:
|
case WXK_NUMPAD_DOWN:
|
||||||
zoom = 1.0;
|
zoom = 1.0;
|
||||||
|
mouseZoom = 1.05;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -276,11 +289,13 @@ void WaterfallCanvas::OnKeyDown(wxKeyEvent& event) {
|
|||||||
case 'A':
|
case 'A':
|
||||||
case WXK_UP:
|
case WXK_UP:
|
||||||
case WXK_NUMPAD_UP:
|
case WXK_NUMPAD_UP:
|
||||||
|
mouseZoom = 1.0;
|
||||||
zoom = 0.95;
|
zoom = 0.95;
|
||||||
break;
|
break;
|
||||||
case 'Z':
|
case 'Z':
|
||||||
case WXK_DOWN:
|
case WXK_DOWN:
|
||||||
case WXK_NUMPAD_DOWN:
|
case WXK_NUMPAD_DOWN:
|
||||||
|
mouseZoom = 1.0;
|
||||||
zoom = 1.05;
|
zoom = 1.05;
|
||||||
break;
|
break;
|
||||||
case WXK_RIGHT:
|
case WXK_RIGHT:
|
||||||
@ -349,6 +364,9 @@ void WaterfallCanvas::OnKeyDown(wxKeyEvent& event) {
|
|||||||
setStatusText("Set center frequency: %s", freq);
|
setStatusText("Set center frequency: %s", freq);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if (spectrumCanvas) {
|
||||||
|
spectrumCanvas->setCenterFrequency(freq);
|
||||||
|
}
|
||||||
wxGetApp().setFrequency(freq);
|
wxGetApp().setFrequency(freq);
|
||||||
setStatusText("Set center frequency: %s", freq);
|
setStatusText("Set center frequency: %s", freq);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user