633 |
} |
} |
634 |
} |
} |
635 |
|
|
636 |
|
/* http://cairographics.org/samples/ */ |
637 |
|
static void |
638 |
|
osm_gps_map_draw_balloon (OsmGpsMap *map) |
639 |
|
{ |
640 |
|
OsmGpsMapPrivate *priv = map->priv; |
641 |
|
|
642 |
|
/* xyz */ |
643 |
|
#define X 100 |
644 |
|
#define Y 100 |
645 |
|
#define RADIUS 20 |
646 |
|
#define WIDTH 150 |
647 |
|
#define HEIGHT 75 |
648 |
|
#define TRANSPARENCY 0.7 |
649 |
|
#define PIN_HEIGHT 20 |
650 |
|
#define PIN_FOOT_WIDTH 20 |
651 |
|
#define PIN_X (X + EXTRA_BORDER) |
652 |
|
#define PIN_X0 (X + EXTRA_BORDER + RADIUS + PIN_FOOT_WIDTH) |
653 |
|
#define PIN_X1 (X + EXTRA_BORDER + RADIUS) |
654 |
|
#define PIN_Y (Y + EXTRA_BORDER + HEIGHT + PIN_HEIGHT) |
655 |
|
|
656 |
|
#ifdef USE_CAIRO |
657 |
|
cairo_t *cr = gdk_cairo_create(priv->pixmap); |
658 |
|
|
659 |
|
int x0 = X + EXTRA_BORDER, y0 = Y + EXTRA_BORDER; |
660 |
|
int x1 = x0 + WIDTH, y1 = y0 + HEIGHT; |
661 |
|
|
662 |
|
cairo_move_to (cr, x0, y0 + RADIUS); |
663 |
|
cairo_curve_to (cr, x0 , y0, x0 , y0, x0 + RADIUS, y0); |
664 |
|
cairo_line_to (cr, x1 - RADIUS, y0); |
665 |
|
cairo_curve_to (cr, x1, y0, x1, y0, x1, y0 + RADIUS); |
666 |
|
cairo_line_to (cr, x1 , y1 - RADIUS); |
667 |
|
cairo_curve_to (cr, x1, y1, x1, y1, x1 - RADIUS, y1); |
668 |
|
|
669 |
|
/* insert pin */ |
670 |
|
cairo_line_to (cr, PIN_X0, y1); |
671 |
|
cairo_line_to (cr, PIN_X, PIN_Y); |
672 |
|
cairo_line_to (cr, PIN_X1, y1); |
673 |
|
|
674 |
|
|
675 |
|
cairo_line_to (cr, x0 + RADIUS, y1); |
676 |
|
cairo_curve_to (cr, x0, y1, x0, y1, x0, y1 - RADIUS); |
677 |
|
|
678 |
|
cairo_close_path (cr); |
679 |
|
cairo_set_source_rgba (cr, 1, 1, 1, TRANSPARENCY); |
680 |
|
cairo_fill_preserve (cr); |
681 |
|
cairo_set_source_rgba (cr, 0, 0, 0, TRANSPARENCY); |
682 |
|
cairo_set_line_width (cr, 1); |
683 |
|
cairo_stroke (cr); |
684 |
|
|
685 |
|
gtk_widget_queue_draw_area (GTK_WIDGET(map), |
686 |
|
x0, |
687 |
|
y0, |
688 |
|
WIDTH, |
689 |
|
HEIGHT + PIN_HEIGHT); |
690 |
|
#endif |
691 |
|
} |
692 |
|
|
693 |
static void |
static void |
694 |
osm_gps_map_blit_tile(OsmGpsMap *map, GdkPixbuf *pixbuf, int offset_x, int offset_y) |
osm_gps_map_blit_tile(OsmGpsMap *map, GdkPixbuf *pixbuf, int offset_x, int offset_y) |
695 |
{ |
{ |
1275 |
osm_gps_map_draw_gps_point(map); |
osm_gps_map_draw_gps_point(map); |
1276 |
osm_gps_map_print_images(map); |
osm_gps_map_print_images(map); |
1277 |
|
|
1278 |
|
osm_gps_map_draw_balloon(map); |
1279 |
|
|
1280 |
//osm_gps_map_osd_speed(map, 1.5); |
//osm_gps_map_osd_speed(map, 1.5); |
1281 |
osm_gps_map_purge_cache(map); |
osm_gps_map_purge_cache(map); |
1282 |
gtk_widget_queue_draw (GTK_WIDGET (map)); |
gtk_widget_queue_draw (GTK_WIDGET (map)); |