|
|
|
@ -37,7 +37,8 @@
|
|
|
|
iPoint mousepos;
|
|
|
|
iPoint mousepos;
|
|
|
|
int mousebtn;
|
|
|
|
int mousebtn;
|
|
|
|
time_t mousebtnpresstime;
|
|
|
|
time_t mousebtnpresstime;
|
|
|
|
iPoint mousebtnpresspos = {0 , 0};
|
|
|
|
iPoint mousebtnpresspos = {0.0, 0.0};
|
|
|
|
|
|
|
|
struct map_pos mousebtnpressgpos = {0, 0};
|
|
|
|
int mousebtnpresslongtime = 0;
|
|
|
|
int mousebtnpresslongtime = 0;
|
|
|
|
unsigned long long int mouse_over_way_id = 0;
|
|
|
|
unsigned long long int mouse_over_way_id = 0;
|
|
|
|
unsigned short int mouse_over_way_sid = 0;
|
|
|
|
unsigned short int mouse_over_way_sid = 0;
|
|
|
|
@ -51,8 +52,24 @@ char mouse_over_way_name[MAP_W_NAMELEN] = "\0";
|
|
|
|
* if btn == -1 mean no button pressed or selected
|
|
|
|
* if btn == -1 mean no button pressed or selected
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void draw_mousemove (int x, int y, int btn) {
|
|
|
|
void draw_mousemove (int x, int y, int btn) {
|
|
|
|
|
|
|
|
float lon, lat, lonold, latold;
|
|
|
|
|
|
|
|
|
|
|
|
mousepos.x = x;
|
|
|
|
mousepos.x = x;
|
|
|
|
mousepos.y = y;
|
|
|
|
mousepos.y = y;
|
|
|
|
|
|
|
|
if (mousebtn) {
|
|
|
|
|
|
|
|
latold = -map_km2lat(((float)(mousebtnpresspos.y-gfx_screensize.y/2)) * view_scale);
|
|
|
|
|
|
|
|
lonold = map_km2lon(((float)(mousebtnpresspos.x-gfx_screensize.x/2)) * view_scale, view_lat + lat);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lat = -map_km2lat(((float)(y-gfx_screensize.y/2)) * view_scale);
|
|
|
|
|
|
|
|
lon = map_km2lon(((float)(x-gfx_screensize.x/2)) * view_scale, view_lat + lat);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lat = lat - latold;
|
|
|
|
|
|
|
|
lon = lon - lonold;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
view_lat = mousebtnpressgpos.lat - lat;
|
|
|
|
|
|
|
|
view_lon = mousebtnpressgpos.lon - lon;
|
|
|
|
|
|
|
|
draw_del_flag (DRAW_GPSFOLLOW);
|
|
|
|
|
|
|
|
}
|
|
|
|
draw ();
|
|
|
|
draw ();
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
@ -61,13 +78,16 @@ void draw_mousebtndown (int x, int y, int btn) {
|
|
|
|
mousebtnpresstime = time (NULL);
|
|
|
|
mousebtnpresstime = time (NULL);
|
|
|
|
mousebtnpresspos.x = x;
|
|
|
|
mousebtnpresspos.x = x;
|
|
|
|
mousebtnpresspos.y = y;
|
|
|
|
mousebtnpresspos.y = y;
|
|
|
|
|
|
|
|
mousebtnpressgpos.lon = view_lon;
|
|
|
|
|
|
|
|
mousebtnpressgpos.lat = view_lat;
|
|
|
|
mousebtn = btn;
|
|
|
|
mousebtn = btn;
|
|
|
|
mousebtnpresslongtime = 0;
|
|
|
|
mousebtnpresslongtime = 0;
|
|
|
|
draw ();
|
|
|
|
draw ();
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void draw_mousebtnup (int x, int y, int btn) {
|
|
|
|
void draw_mousebtnup (int x, int y, int btn)
|
|
|
|
|
|
|
|
{
|
|
|
|
time_t t = time(NULL);
|
|
|
|
time_t t = time(NULL);
|
|
|
|
float lon, lat;
|
|
|
|
float lon, lat;
|
|
|
|
|
|
|
|
|
|
|
|
@ -75,44 +95,54 @@ void draw_mousebtnup (int x, int y, int btn) {
|
|
|
|
mousebtn = 0;
|
|
|
|
mousebtn = 0;
|
|
|
|
|
|
|
|
|
|
|
|
/* check for debugging routeing problems */
|
|
|
|
/* check for debugging routeing problems */
|
|
|
|
if (route && y > gfx_screensize.y-32 && y < gfx_screensize.y && x > 0 && x < 100 ) {
|
|
|
|
if (route && y > gfx_screensize.y-32 && y < gfx_screensize.y && x > 0 && x < 100 )
|
|
|
|
|
|
|
|
{
|
|
|
|
view_lon = route->closest_lon;
|
|
|
|
view_lon = route->closest_lon;
|
|
|
|
view_lat = route->closest_lat;
|
|
|
|
view_lat = route->closest_lat;
|
|
|
|
draw_del_flag (DRAW_GPSFOLLOW);
|
|
|
|
draw_del_flag (DRAW_GPSFOLLOW);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
lat = -map_km2lat(((float)(y-gfx_screensize.y/2)) * view_scale);
|
|
|
|
lat = -map_km2lat(((float)(y-gfx_screensize.y/2)) * view_scale);
|
|
|
|
lon = map_km2lon(((float)(x-gfx_screensize.x/2)) * view_scale, view_lat + lat);
|
|
|
|
lon = map_km2lon(((float)(x-gfx_screensize.x/2)) * view_scale, view_lat + lat);
|
|
|
|
|
|
|
|
|
|
|
|
if (t - mousebtnpresstime <= 1) {
|
|
|
|
|
|
|
|
/* short time button pressing */
|
|
|
|
/* short time button pressing */
|
|
|
|
if (btn == 1) {
|
|
|
|
if (t - mousebtnpresstime <= 1)
|
|
|
|
view_lat = view_lat + lat;
|
|
|
|
{
|
|
|
|
view_lon = view_lon + lon;
|
|
|
|
/* check for movement? */
|
|
|
|
draw_del_flag (DRAW_GPSFOLLOW);
|
|
|
|
int dx = abs (mousebtnpresspos.x-x)*100/gfx_screensize.x;
|
|
|
|
}
|
|
|
|
int dy = abs (mousebtnpresspos.y-y)*100/gfx_screensize.y;
|
|
|
|
}
|
|
|
|
|
|
|
|
else {
|
|
|
|
if (dx < 10 && dy < 10)
|
|
|
|
/* long time button pressed */
|
|
|
|
{
|
|
|
|
if (select_enabled) {
|
|
|
|
if (select_enabled)
|
|
|
|
|
|
|
|
{
|
|
|
|
select_enabled = 0;
|
|
|
|
select_enabled = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
select_enabled = 1;
|
|
|
|
select_enabled = 1;
|
|
|
|
select_pos.lat = view_lat + lat;
|
|
|
|
select_pos.lat = view_lat + lat;
|
|
|
|
select_pos.lon = view_lon + lon;
|
|
|
|
select_pos.lon = view_lon + lon;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
else
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
/* long time button pressed */
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
draw ();
|
|
|
|
draw ();
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void draw_mouseloop () {
|
|
|
|
void draw_mouseloop ()
|
|
|
|
|
|
|
|
{
|
|
|
|
time_t t = time(NULL);
|
|
|
|
time_t t = time(NULL);
|
|
|
|
|
|
|
|
|
|
|
|
if (mousebtn && t - mousebtnpresstime > 1) {
|
|
|
|
if (mousebtn && t - mousebtnpresstime > 1)
|
|
|
|
|
|
|
|
{
|
|
|
|
mousebtnpresslongtime = 1;
|
|
|
|
mousebtnpresslongtime = 1;
|
|
|
|
draw ();
|
|
|
|
draw ();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|