1072 |
#define OSD_COORDINATES_OFFSET (OSD_COORDINATES_FONT_SIZE/6) |
#define OSD_COORDINATES_OFFSET (OSD_COORDINATES_FONT_SIZE/6) |
1073 |
|
|
1074 |
#define OSD_COORDINATES_W (8*OSD_COORDINATES_FONT_SIZE+2*OSD_COORDINATES_OFFSET) |
#define OSD_COORDINATES_W (8*OSD_COORDINATES_FONT_SIZE+2*OSD_COORDINATES_OFFSET) |
1075 |
#define OSD_COORDINATES_H (2*OSD_COORDINATES_FONT_SIZE+2*OSD_COORDINATES_OFFSET) |
#define OSD_COORDINATES_H (2*OSD_COORDINATES_FONT_SIZE+2*OSD_COORDINATES_OFFSET+OSD_COORDINATES_FONT_SIZE/4) |
1076 |
|
|
1077 |
/* these can be overwritten with versions that support */ |
/* these can be overwritten with versions that support */ |
1078 |
/* localization */ |
/* localization */ |
1209 |
|
|
1210 |
#ifdef OSD_NAV |
#ifdef OSD_NAV |
1211 |
#define OSD_NAV_W (8*OSD_COORDINATES_FONT_SIZE+2*OSD_COORDINATES_OFFSET) |
#define OSD_NAV_W (8*OSD_COORDINATES_FONT_SIZE+2*OSD_COORDINATES_OFFSET) |
1212 |
#define OSD_NAV_H (100) |
#define OSD_NAV_H (150) |
1213 |
|
|
1214 |
static void |
static void |
1215 |
osd_render_nav(osm_gps_map_osd_t *osd) |
osd_render_nav(osm_gps_map_osd_t *osd) |
1242 |
g_free(latitude); |
g_free(latitude); |
1243 |
g_free(longitude); |
g_free(longitude); |
1244 |
|
|
1245 |
|
/* draw the compass */ |
1246 |
|
int radius = (OSD_NAV_H - y - 5*OSD_COORDINATES_FONT_SIZE/4)/2; |
1247 |
|
if(radius > OSD_NAV_W/2) |
1248 |
|
radius = OSD_NAV_W/2; |
1249 |
|
|
1250 |
|
int x = OSD_NAV_W/2+1; |
1251 |
|
y += radius; |
1252 |
|
|
1253 |
|
cairo_stroke (cr); |
1254 |
|
|
1255 |
|
/* draw background */ |
1256 |
|
cairo_arc(cr, x, y, radius, 0, 2*M_PI); |
1257 |
|
cairo_set_source_rgba (cr, 1, 1, 1, 0.5); |
1258 |
|
cairo_fill_preserve (cr); |
1259 |
|
cairo_set_source_rgb (cr, 0, 0, 0); |
1260 |
|
cairo_set_line_width (cr, 1); |
1261 |
|
cairo_stroke (cr); |
1262 |
|
|
1263 |
|
/* draw pointer */ |
1264 |
|
#define ARROW_WIDTH 0.3 |
1265 |
|
#define ARROW_LENGTH 0.7 |
1266 |
|
|
1267 |
|
float arot = deg2rad(45); |
1268 |
|
|
1269 |
|
cairo_move_to(cr, |
1270 |
|
x + radius * ARROW_LENGTH * sin(arot), |
1271 |
|
y + radius * ARROW_LENGTH * -cos(arot)); |
1272 |
|
|
1273 |
|
cairo_line_to(cr, |
1274 |
|
x + radius * -ARROW_LENGTH * sin(arot+ARROW_WIDTH), |
1275 |
|
y + radius * -ARROW_LENGTH * -cos(arot+ARROW_WIDTH)); |
1276 |
|
|
1277 |
|
cairo_line_to(cr, |
1278 |
|
x + radius * -0.5 * ARROW_LENGTH * sin(arot), |
1279 |
|
y + radius * -0.5 * ARROW_LENGTH * -cos(arot)); |
1280 |
|
|
1281 |
|
cairo_line_to(cr, |
1282 |
|
x + radius * -ARROW_LENGTH * sin(arot-ARROW_WIDTH), |
1283 |
|
y + radius * -ARROW_LENGTH * -cos(arot-ARROW_WIDTH)); |
1284 |
|
|
1285 |
|
cairo_close_path(cr); |
1286 |
|
cairo_set_source_rgb (cr, 0, 0, 0); |
1287 |
|
cairo_fill (cr); |
1288 |
|
|
1289 |
|
y += radius + OSD_COORDINATES_FONT_SIZE/4; |
1290 |
|
y = osd_render_centered_text(cr, y, OSD_NAV_W, "xx,xx km"); |
1291 |
|
|
1292 |
cairo_destroy(cr); |
cairo_destroy(cr); |
1293 |
} |
} |
1294 |
|
|