Diff of /trunk/src/osm-gps-map.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 55 by harbaum, Thu Aug 13 12:01:52 2009 UTC revision 56 by harbaum, Fri Aug 14 12:19:45 2009 UTC
# Line 633  osm_gps_map_draw_gps_point (OsmGpsMap *m Line 633  osm_gps_map_draw_gps_point (OsmGpsMap *m
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  {  {
# Line 1218  osm_gps_map_map_redraw (OsmGpsMap *map) Line 1275  osm_gps_map_map_redraw (OsmGpsMap *map)
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));

Legend:
Removed from v.55  
changed lines
  Added in v.56