Diff of /trunk/src/canvas.h

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

revision 102 by achadwick, Mon Feb 2 20:59:14 2009 UTC revision 103 by harbaum, Tue Mar 3 12:12:53 2009 UTC
# Line 20  Line 20 
20  #ifndef CANVAS_H  #ifndef CANVAS_H
21  #define CANVAS_H  #define CANVAS_H
22    
23  typedef enum { CANVAS_GROUP_BG=0, CANVAS_GROUP_POLYGONS,  typedef enum {
24                 CANVAS_GROUP_TRACK, CANVAS_GROUP_GPS,    CANVAS_GROUP_BG=0,       // background layer (wms overlay)
25                 CANVAS_GROUP_WAYS_HL, CANVAS_GROUP_WAYS_OL,    CANVAS_GROUP_POLYGONS,   // polygons (forrests, buildings, lakes) */
26                 CANVAS_GROUP_WAYS, CANVAS_GROUP_NODES_HL, CANVAS_GROUP_NODES,    CANVAS_GROUP_TRACK,      // (GPS) track
27                 CANVAS_GROUP_DRAW, CANVAS_GROUPS } canvas_group_t;    CANVAS_GROUP_GPS,        // current GPS position
28      CANVAS_GROUP_WAYS_HL,    // highlighting of ways
29  #if defined(USE_GNOMECANVAS)    CANVAS_GROUP_WAYS_OL,    // outlines for ways (e.g. for highways)
30      CANVAS_GROUP_WAYS,       // ways
31  #include <libgnomecanvas/libgnomecanvas.h>    CANVAS_GROUP_NODES_HL,   // highlighting for nodes
32      CANVAS_GROUP_NODES,      // nodes
33  typedef GnomeCanvasItem canvas_item_t;    CANVAS_GROUP_FRISKET,    // the (white) frisket limiting the view
34  typedef GnomeCanvasPoints canvas_points_t;    CANVAS_GROUP_DRAW,       // "cursor" functionality
35  typedef GtkWidget canvas_t;    CANVAS_GROUPS
36    } canvas_group_t;
37    
38  typedef gulong canvas_color_t;  #if defined(USE_GOOCANVAS)
 #define CANVAS_COLOR(r,g,b,a) GNOME_CANVAS_COLOR_A(r,g,b,a)  
   
   
 #elif defined(USE_GOOCANVAS)  
39    
40  #include <goocanvas.h>  #include <goocanvas.h>
41    
42  typedef GooCanvasItem canvas_item_t;  typedef GooCanvasItem canvas_item_t;
43  typedef GooCanvasPoints canvas_points_t;  typedef GooCanvasPoints canvas_points_t;
44  typedef GtkWidget canvas_t;  
45    typedef struct {
46      GtkWidget *widget;
47      GooCanvasItem *group[CANVAS_GROUPS];
48    } canvas_t;
49    
50  typedef gulong canvas_color_t;  typedef gulong canvas_color_t;
51    
# Line 59  typedef gulong canvas_color_t; Line 60  typedef gulong canvas_color_t;
60  #error "No canvas type defined!"  #error "No canvas type defined!"
61  #endif  #endif
62    
63    typedef enum { CANVAS_UNIT_METER = 0, CANVAS_UNIT_PIXEL } canvas_unit_t;
64    
65    /***** creating/destroying the canvas ******/
66    canvas_t *canvas_new(canvas_color_t color);
67    GtkWidget *canvas_get_widget(canvas_t *canvas);
68    
69    /****** manipulating the canvas ******/
70    void canvas_set_antialias(canvas_t *canvas, gboolean antialias);
71    void canvas_erase(canvas_t *canvas, gint group_mask);
72    void canvas_window2world(canvas_t *canvas, gint x, gint y, gint *wx, gint *wy);
73    canvas_item_t *canvas_get_item_at(canvas_t *canvas, gint x, gint y);
74    void canvas_set_zoom(canvas_t *canvas, gdouble zoom);
75    gdouble canvas_get_zoom(canvas_t *canvas);
76    gdouble canvas_get_viewport_width(canvas_t *canvas, canvas_unit_t unit);
77    gdouble canvas_get_viewport_height(canvas_t *canvas, canvas_unit_t unit);
78    void canvas_scroll_to(canvas_t *canvas, canvas_unit_t unit, gint sx, gint sy);
79    void canvas_scroll_get(canvas_t *canvas, canvas_unit_t unit, gint *sx, gint *sy);
80    void canvas_set_bounds(canvas_t *canvas, gint minx, gint miny,
81                           gint maxx, gint maxy);
82    
83    
84  struct map_s;  /***** creating/destroying items ******/
85  canvas_item_t *canvas_circle_new(struct map_s *map, canvas_group_t group,  canvas_item_t *canvas_circle_new(canvas_t *canvas, canvas_group_t group,
86                   gint x, gint y, gint radius, gint border,                   gint x, gint y, gint radius, gint border,
87                   canvas_color_t fill_col, canvas_color_t border_col);                   canvas_color_t fill_col, canvas_color_t border_col);
88    canvas_item_t *canvas_polyline_new(canvas_t *canvas, canvas_group_t group,
 void canvas_item_set_pos(canvas_item_t *item, lpos_t *lpos, gint radius);  
   
 canvas_points_t *canvas_points_new(gint points);  
 void canvas_point_set_pos(canvas_points_t *points, gint index, lpos_t *lpos);  
 void canvas_points_free(canvas_points_t *points);  
 void canvas_item_set_points(canvas_item_t *item, canvas_points_t *points);  
   
 canvas_item_t *canvas_polyline_new(struct map_s *map, canvas_group_t group,  
89                   canvas_points_t *points, gint width, canvas_color_t color);                   canvas_points_t *points, gint width, canvas_color_t color);
90    canvas_item_t *canvas_polygon_new(canvas_t *canvas, canvas_group_t group,
 canvas_item_t *canvas_polygon_new(struct map_s *map, canvas_group_t group,  
91                    canvas_points_t *points, gint width, canvas_color_t color,                    canvas_points_t *points, gint width, canvas_color_t color,
92                    canvas_color_t fill);                    canvas_color_t fill);
93    canvas_item_t *canvas_image_new(canvas_t *canvas, canvas_group_t group,
94                                    GdkPixbuf *pix, gint x, gint y,
95                                    float hscale, float vscale);
96    canvas_points_t *canvas_points_new(gint points);
97    void canvas_point_set_pos(canvas_points_t *points, gint index, lpos_t *lpos);
98    void canvas_points_free(canvas_points_t *points);
99    void canvas_item_destroy(canvas_item_t *item);
100    
101  void canvas_window2world(canvas_t *canvas, gint x, gint y, gint *wx, gint *wy);  /****** manipulating items ******/
102  canvas_item_t *canvas_get_item_at(canvas_t *canvas, gint x, gint y);  void canvas_item_set_pos(canvas_item_t *item, lpos_t *lpos, gint radius);
103    void canvas_item_set_points(canvas_item_t *item, canvas_points_t *points);
104  void canvas_item_set_zoom_max(canvas_item_t *item, float zoom_max);  void canvas_item_set_zoom_max(canvas_item_t *item, float zoom_max);
   
105  void canvas_item_set_dashed(canvas_item_t *item, gint line_width, gint dash_length);  void canvas_item_set_dashed(canvas_item_t *item, gint line_width, gint dash_length);
   
106  void canvas_item_to_bottom(canvas_item_t *item);  void canvas_item_to_bottom(canvas_item_t *item);
   
 void canvas_item_destroy(canvas_item_t *item);  
   
107  void canvas_item_set_user_data(canvas_item_t *item, void *data);  void canvas_item_set_user_data(canvas_item_t *item, void *data);
108  void *canvas_item_get_user_data(canvas_item_t *item);  void *canvas_item_get_user_data(canvas_item_t *item);
   
109  void canvas_item_destroy_connect(canvas_item_t *item,  void canvas_item_destroy_connect(canvas_item_t *item,
110                                   GCallback c_handler, gpointer data);                                   GCallback c_handler, gpointer data);
   
 void canvas_set_zoom(canvas_t *canvas, double zoom);  
   
 void canvas_get_scroll_offsets(canvas_t *canvas, gint *sx, gint *sy);  
   
 void canvas_scroll_to(canvas_t *canvas, gint sx, gint sy);  
   
 void canvas_set_bounds(canvas_t *canvas, gint minx, gint miny,  
                        gint maxx, gint maxy);  
   
 canvas_item_t *canvas_image_new(struct map_s *map, canvas_group_t group,  
                                 GdkPixbuf *pix, gint x, gint y,  
                                 float hscale, float vscale);  
   
111  void canvas_image_move(canvas_item_t *item, gint x, gint y,  void canvas_image_move(canvas_item_t *item, gint x, gint y,
112                         float hscale, float vscale);                         float hscale, float vscale);
   
113  gint canvas_item_get_segment(canvas_item_t *item, gint x, gint y);  gint canvas_item_get_segment(canvas_item_t *item, gint x, gint y);
114  void canvas_item_get_segment_pos(canvas_item_t *item, gint seg,  void canvas_item_get_segment_pos(canvas_item_t *item, gint seg,
115                                   gint *x0, gint *y0, gint *x1, gint *y1);                                   gint *x0, gint *y0, gint *x1, gint *y1);

Legend:
Removed from v.102  
changed lines
  Added in v.103