2017-09-14 05:21:36 +02:00
|
|
|
#include "input.h"
|
2017-09-16 04:25:26 +02:00
|
|
|
#include "view1090.h"
|
2017-09-14 05:21:36 +02:00
|
|
|
|
|
|
|
void getInput()
|
|
|
|
{
|
2017-09-05 11:41:46 +02:00
|
|
|
|
2017-09-16 04:25:26 +02:00
|
|
|
#ifdef RPI
|
2017-09-17 17:38:22 +02:00
|
|
|
if(!digitalRead(27)) {
|
2017-09-16 04:25:26 +02:00
|
|
|
exit(0);
|
2017-09-17 17:38:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
if(!digitalRead(22)) {
|
|
|
|
Modes.mapLogDist = !Modes.mapLogDist;
|
2017-09-16 04:25:26 +02:00
|
|
|
}
|
2017-09-17 17:38:22 +02:00
|
|
|
|
|
|
|
if(!digitalRead(23)) {
|
|
|
|
Modes.map = !Modes.map;
|
|
|
|
}
|
2017-09-16 04:25:26 +02:00
|
|
|
#endif
|
|
|
|
|
2017-09-14 05:21:36 +02:00
|
|
|
SDL_Event event;
|
|
|
|
|
|
|
|
/* Loop through waiting messages and process them */
|
|
|
|
|
|
|
|
while (SDL_PollEvent(&event))
|
|
|
|
{
|
|
|
|
switch (event.type)
|
|
|
|
{
|
|
|
|
/* Closing the Window or pressing Escape will exit the program */
|
|
|
|
|
|
|
|
case SDL_QUIT:
|
|
|
|
exit(0);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SDL_KEYDOWN:
|
|
|
|
switch (event.key.keysym.sym)
|
|
|
|
{
|
|
|
|
case SDLK_ESCAPE:
|
|
|
|
exit(0);
|
|
|
|
break;
|
2017-09-16 04:25:26 +02:00
|
|
|
|
|
|
|
case SDLK_l:
|
|
|
|
Modes.mapLogDist = !Modes.mapLogDist;
|
|
|
|
break;
|
2017-09-17 17:38:22 +02:00
|
|
|
|
|
|
|
case SDLK_m:
|
|
|
|
Modes.map = !Modes.map;
|
2018-10-01 08:44:17 +02:00
|
|
|
break;
|
|
|
|
|
2017-09-14 05:21:36 +02:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
2019-09-08 01:11:20 +02:00
|
|
|
|
2017-09-14 05:21:36 +02:00
|
|
|
break;
|
2019-09-08 01:11:20 +02:00
|
|
|
|
|
|
|
case SDL_MOUSEWHEEL:
|
|
|
|
|
|
|
|
Modes.maxDist *= 1.0 + event.wheel.y / 10.0;
|
|
|
|
break;
|
2019-09-08 08:09:14 +02:00
|
|
|
|
|
|
|
case SDL_MULTIGESTURE:
|
|
|
|
Modes.maxDist /=1.0 + 4.0*event.mgesture.dDist;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case SDL_FINGERMOTION:;
|
|
|
|
|
|
|
|
//
|
|
|
|
// need to make lonlat to screen conversion class - this is just the inverse of the stuff in draw.c, without offsets
|
|
|
|
//
|
2019-09-08 21:29:21 +02:00
|
|
|
|
2019-09-08 08:09:14 +02:00
|
|
|
double scale_factor = (Modes.screen_width > Modes.screen_height) ? Modes.screen_width : Modes.screen_height;
|
|
|
|
|
|
|
|
double dx = -1.0 * (0.75*(double)Modes.screen_width / (double)Modes.screen_height) * Modes.screen_width * event.tfinger.dx * Modes.maxDist / (0.95 * scale_factor * 0.5);
|
2019-09-08 21:29:21 +02:00
|
|
|
double dy = 1.0 * Modes.screen_height * event.tfinger.dy * Modes.maxDist / (0.95 * scale_factor * 0.5);
|
2019-09-08 08:09:14 +02:00
|
|
|
|
|
|
|
double outLat = dy * (1.0/6371.0) * (180.0f / M_PI);
|
|
|
|
|
|
|
|
double outLon = dx * (1.0/6371.0) * (180.0f / M_PI) / cos(((Modes.fUserLat)/2.0f) * M_PI / 180.0f);
|
|
|
|
|
|
|
|
|
|
|
|
Modes.fUserLon += outLon;
|
|
|
|
Modes.fUserLat += outLat;
|
|
|
|
break;
|
2017-09-14 05:21:36 +02:00
|
|
|
}
|
|
|
|
}
|
2017-09-05 11:41:46 +02:00
|
|
|
}
|