Shift + arrow up/down to adjust visual scale

This commit is contained in:
Charles J. Cliffe 2015-10-25 14:31:56 -04:00
parent a6201ad3b5
commit 68d80bde9e
3 changed files with 43 additions and 7 deletions

View File

@ -206,7 +206,7 @@ void SpectrumCanvas::OnMouseMoved(wxMouseEvent& event) {
updateScaleFactor(scaleFactor);
} else {
if (scaleFactorEnabled) {
setStatusText("Drag horitontal to adjust center frequency. Right-drag to adjust vertical scale, click to reset. 'B' to toggle decibels display.");
setStatusText("Drag horizontal to adjust center frequency. Right-drag or SHIFT+UP/DOWN to adjust vertical scale; right-click to reset. 'B' to toggle decibels display.");
} else {
setStatusText("Displaying spectrum of active demodulator.");
}
@ -247,6 +247,7 @@ SpectrumVisualDataQueue *SpectrumCanvas::getVisualDataQueue() {
void SpectrumCanvas::OnMouseRightDown(wxMouseEvent& event) {
mouseTracker.OnMouseRightDown(event);
scaleFactor = wxGetApp().getSpectrumProcessor()->getScaleFactor();
}
void SpectrumCanvas::OnMouseRightReleased(wxMouseEvent& event) {

View File

@ -43,6 +43,7 @@ WaterfallCanvas::WaterfallCanvas(wxWindow *parent, int *attribList) :
lpsIndex = 0;
preBuf = false;
SetCursor(wxCURSOR_CROSS);
scaleMove = 0;
}
WaterfallCanvas::~WaterfallCanvas() {
@ -123,6 +124,25 @@ void WaterfallCanvas::OnPaint(wxPaintEvent& WXUNUSED(event)) {
}
}
if (scaleMove != 0) {
SpectrumVisualProcessor *sp = wxGetApp().getSpectrumProcessor();
FFTVisualDataThread *wdt = wxGetApp().getAppFrame()->getWaterfallDataThread();
SpectrumVisualProcessor *wp = wdt->getProcessor();
float factor = sp->getScaleFactor();
factor += scaleMove * 0.02;
if (factor < 0.25) {
factor = 0.25;
}
if (factor > 10.0) {
factor = 10.0;
}
sp->setScaleFactor(factor);
wp->setScaleFactor(factor);
}
if (freqMove != 0.0) {
long long newFreq = getCenterFrequency() + (long long)((long double)getBandwidth()*freqMove) * 0.01;
@ -306,14 +326,20 @@ void WaterfallCanvas::OnKeyUp(wxKeyEvent& event) {
case 'A':
case WXK_UP:
case WXK_NUMPAD_UP:
scaleMove = 0.0;
zoom = 1.0;
mouseZoom = 0.95;
if (mouseZoom != 1.0) {
mouseZoom = 0.95;
}
break;
case 'Z':
case WXK_DOWN:
case WXK_NUMPAD_DOWN:
scaleMove = 0.0;
zoom = 1.0;
mouseZoom = 1.05;
if (mouseZoom != 1.0) {
mouseZoom = 1.05;
}
break;
case WXK_LEFT:
case WXK_NUMPAD_LEFT:
@ -336,14 +362,22 @@ void WaterfallCanvas::OnKeyDown(wxKeyEvent& event) {
case 'A':
case WXK_UP:
case WXK_NUMPAD_UP:
mouseZoom = 1.0;
zoom = 0.95;
if (!shiftDown) {
mouseZoom = 1.0;
zoom = 0.95;
} else {
scaleMove = 1.0;
}
break;
case 'Z':
case WXK_DOWN:
case WXK_NUMPAD_DOWN:
mouseZoom = 1.0;
zoom = 1.05;
if (!shiftDown) {
mouseZoom = 1.0;
zoom = 1.05;
} else {
scaleMove = -1.0;
}
break;
case WXK_RIGHT:
case WXK_NUMPAD_RIGHT:

View File

@ -67,6 +67,7 @@ private:
long double freqMove;
float hoverAlpha;
int linesPerSecond;
float scaleMove;
SpectrumVisualDataQueue visualDataQueue;
Timer gTimer;