Fix:Core:Renamed src to navit for cleanup of includes
[navit-package] / navit / graphics.h
1 #ifndef NAVIT_GRAPHICS_H
2 #define NAVIT_GRAPHICS_H
3
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 struct point;
8 struct container;
9 struct color;
10 struct graphics;
11 struct graphics_gc;
12 struct graphics_font;
13 struct graphics_image;
14 struct transformation;
15 struct display_list;
16
17 enum draw_mode_num {
18         draw_mode_begin, draw_mode_end, draw_mode_cursor
19 };
20
21 struct graphics_priv;
22 struct graphics_font_priv;
23 struct graphics_image_priv;
24 struct graphics_gc_priv;
25 struct graphics_font_methods;
26 struct graphics_gc_methods;
27 struct graphics_image_methods;
28
29 struct graphics_methods {
30         void (*graphics_destroy)(struct graphics_priv *gr);
31         void (*draw_mode)(struct graphics_priv *gr, enum draw_mode_num mode);
32         void (*draw_lines)(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count);
33         void (*draw_polygon)(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int count);
34         void (*draw_rectangle)(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int w, int h);
35         void (*draw_circle)(struct graphics_priv *gr, struct graphics_gc_priv *gc, struct point *p, int r);
36         void (*draw_text)(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct graphics_gc_priv *bg, struct graphics_font_priv *font, char *text, struct point *p, int dx, int dy);
37         void (*draw_image)(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, struct graphics_image_priv *img);
38         void (*draw_image_warp)(struct graphics_priv *gr, struct graphics_gc_priv *fg, struct point *p, int count, char *data);
39         void (*draw_restore)(struct graphics_priv *gr, struct point *p, int w, int h);
40         struct graphics_font_priv *(*font_new)(struct graphics_priv *gr, struct graphics_font_methods *meth, int size, int flags);
41         struct graphics_gc_priv *(*gc_new)(struct graphics_priv *gr, struct graphics_gc_methods *meth);
42         void (*background_gc)(struct graphics_priv *gr, struct graphics_gc_priv *gc);
43         struct graphics_priv *(*overlay_new)(struct graphics_priv *gr, struct graphics_methods *meth, struct point *p, int w, int h);
44         struct graphics_image_priv *(*image_new)(struct graphics_priv *gr, struct graphics_image_methods *meth, char *path, int *w, int *h, struct point *hot);
45         void *(*get_data)(struct graphics_priv *gr, char *type);
46         void (*register_resize_callback)(struct graphics_priv *gr, void (*callback)(void *data, int w, int h), void *data);
47         void (*register_button_callback)(struct graphics_priv *gr, void (*callback)(void *data, int pressed, int button, struct point *p), void *data);
48         void (*register_motion_callback)(struct graphics_priv *gr, void (*callback)(void *data, struct point *p), void *data);
49         void (*image_free)(struct graphics_priv *gr, struct graphics_image_priv *priv);
50 };
51
52
53 struct graphics_font_methods {
54         void (*font_destroy)(struct graphics_font_priv *font);
55 };
56
57 struct graphics_font {
58         struct graphics_font_priv *priv;
59         struct graphics_font_methods meth;
60 };
61
62 struct graphics_gc_methods {
63         void (*gc_destroy)(struct graphics_gc_priv *gc);
64         void (*gc_set_linewidth)(struct graphics_gc_priv *gc, int width);
65         void (*gc_set_dashes)(struct graphics_gc_priv *gc, int width, int offset, unsigned char dash_list[], int n);
66         void (*gc_set_foreground)(struct graphics_gc_priv *gc, struct color *c);
67         void (*gc_set_background)(struct graphics_gc_priv *gc, struct color *c);
68 };
69
70 struct graphics_gc {
71         struct graphics_gc_priv *priv;
72         struct graphics_gc_methods meth;
73 };
74
75 struct graphics_image_methods {
76         void (*image_destroy)(struct graphics_image_priv *img);
77 };
78
79 struct graphics_image {
80         struct graphics_image_priv *priv;
81         struct graphics_image_methods meth;
82         int width;
83         int height;
84         struct point hot;
85 };
86
87 /* prototypes */
88 enum attr_type;
89 enum draw_mode_num;
90 struct attr;
91 struct attr_iter;
92 struct color;
93 struct displayitem;
94 struct displaylist;
95 struct displaylist_handle;
96 struct graphics;
97 struct graphics_font;
98 struct graphics_gc;
99 struct graphics_image;
100 struct item;
101 struct layout;
102 struct point;
103 struct transformation;
104 struct graphics *graphics_new(struct attr *parent, struct attr **attrs);
105 int graphics_get_attr(struct graphics *this_, enum attr_type type, struct attr *attr, struct attr_iter *iter);
106 struct graphics *graphics_overlay_new(struct graphics *parent, struct point *p, int w, int h);
107 void graphics_init(struct graphics *this_);
108 void *graphics_get_data(struct graphics *this_, char *type);
109 void graphics_register_resize_callback(struct graphics *this_, void (*callback)(void *data, int w, int h), void *data);
110 void graphics_register_button_callback(struct graphics *this_, void (*callback)(void *data, int pressed, int button, struct point *p), void *data);
111 void graphics_register_motion_callback(struct graphics *this_, void (*callback)(void *data, struct point *p), void *data);
112 struct graphics_font *graphics_font_new(struct graphics *gra, int size, int flags);
113 struct graphics_gc *graphics_gc_new(struct graphics *gra);
114 void graphics_gc_destroy(struct graphics_gc *gc);
115 void graphics_gc_set_foreground(struct graphics_gc *gc, struct color *c);
116 void graphics_gc_set_background(struct graphics_gc *gc, struct color *c);
117 void graphics_gc_set_linewidth(struct graphics_gc *gc, int width);
118 void graphics_gc_set_dashes(struct graphics_gc *gc, int width, int offset, unsigned char dash_list[], int n);
119 struct graphics_image *graphics_image_new(struct graphics *gra, char *path);
120 void graphics_image_free(struct graphics *gra, struct graphics_image *img);
121 void graphics_draw_restore(struct graphics *this_, struct point *p, int w, int h);
122 void graphics_draw_mode(struct graphics *this_, enum draw_mode_num mode);
123 void graphics_draw_lines(struct graphics *this_, struct graphics_gc *gc, struct point *p, int count);
124 void graphics_draw_circle(struct graphics *this_, struct graphics_gc *gc, struct point *p, int r);
125 void graphics_draw_rectangle(struct graphics *this_, struct graphics_gc *gc, struct point *p, int w, int h);
126 void graphics_draw_text(struct graphics *this_, struct graphics_gc *gc1, struct graphics_gc *gc2, struct graphics_font *font, char *text, struct point *p, int dx, int dy);
127 void graphics_draw_image(struct graphics *this_, struct graphics_gc *gc, struct point *p, struct graphics_image *img);
128 void display_add(struct displaylist *displaylist, struct item *item, int count, struct point *pnt, char *label);
129 int graphics_ready(struct graphics *this_);
130 void graphics_displaylist_draw(struct graphics *gra, struct displaylist *displaylist, struct transformation *trans, struct layout *l);
131 void graphics_displaylist_move(struct displaylist *displaylist, int dx, int dy);
132 void graphics_draw(struct graphics *gra, struct displaylist *displaylist, GList *mapsets, struct transformation *trans, struct layout *l);
133 struct displaylist_handle *graphics_displaylist_open(struct displaylist *displaylist);
134 struct displayitem *graphics_displaylist_next(struct displaylist_handle *dlh);
135 void graphics_displaylist_close(struct displaylist_handle *dlh);
136 struct displaylist *graphics_displaylist_new(void);
137 struct item *graphics_displayitem_get_item(struct displayitem *di);
138 char *graphics_displayitem_get_label(struct displayitem *di);
139 int graphics_displayitem_within_dist(struct displayitem *di, struct point *p, int dist);
140 /* end of prototypes */
141 #ifdef __cplusplus
142 }
143 #endif
144
145 #endif
146