/[zanavi_public1]/navit/navit/graphics.h
ZANavi

Contents of /navit/navit/graphics.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 27 - (show annotations) (download)
Mon Apr 9 21:27:36 2012 UTC (11 years, 11 months ago) by zoff99
File MIME type: text/plain
File size: 12235 byte(s)
lots of new stuff, tranlsations, bug fixes ...
1 /**
2 * Navit, a modular navigation system.
3 * Copyright (C) 2005-2008 Navit Team
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public License
7 * version 2 as published by the Free Software Foundation.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU Library General Public License for more details.
13 *
14 * You should have received a copy of the GNU Library General Public
15 * License along with this program; if not, write to the
16 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
17 * Boston, MA 02110-1301, USA.
18 */
19
20 #ifndef NAVIT_GRAPHICS_H
21 #define NAVIT_GRAPHICS_H
22
23 #ifdef __cplusplus
24 extern "C"
25 {
26 #endif
27 struct attr;
28 struct point;
29 struct container;
30 struct color;
31 struct graphics;
32 struct graphics_gc;
33 struct graphics_font;
34 struct graphics_image;
35 struct transformation;
36 struct display_list;
37 struct mapset;
38
39 enum draw_mode_num
40 {
41 draw_mode_begin,
42 draw_mode_begin_clear,
43 draw_mode_end,
44 draw_mode_cursor,
45 draw_mode_end_lazy
46 };
47
48 #include "item.h"
49
50 struct display_context
51 {
52 struct graphics *gra;
53 struct element *e;
54 struct graphics_gc *gc;
55 struct graphics_gc *gc_background;
56 struct graphics_image *img;
57 enum projection pro;
58 int mindist;
59 struct transformation *trans;
60 enum item_type type;
61 int maxlen;
62 };
63
64 //#define HASH_SIZE_GRAPHICS_ 1024
65 #define HASH_SIZE_GRAPHICS_ 2048 // inc. hash size for layer items
66 struct hash_entry
67 {
68 enum item_type type;
69 struct displayitem *di;
70 };
71
72 struct displaylist
73 {
74 int busy;
75 int workload;
76 struct callback *cb;
77 struct layout *layout, *layout_hashed;
78 struct display_context dc;
79 int order, order_hashed, max_offset;
80 struct mapset *ms;
81 struct mapset_handle *msh;
82 struct map *m;
83 int conv;
84 struct map_selection *sel;
85 struct map_rect *mr;
86 struct callback *idle_cb;
87 struct event_idle *idle_ev;
88 unsigned int seq;
89 struct hash_entry hash_entries[HASH_SIZE_GRAPHICS_];
90 };
91
92 struct graphics_priv;
93 struct graphics_font_priv;
94 struct graphics_image_priv;
95 struct graphics_gc_priv;
96 struct graphics_font_methods;
97 struct graphics_gc_methods;
98 struct graphics_image_methods;
99
100 struct graphics_methods
101 {
102 void (*graphics_destroy)(struct graphics_priv *gr);
103 void (*draw_mode)(struct graphics_priv *gr, enum draw_mode_num mode);
104 void (*draw_lines)(struct graphics_priv *gr, struct graphics_gc_priv *gc,
105 struct point *p, int count);
106 void (*draw_lines2)(struct graphics_priv *gr, struct graphics_gc_priv *gc,
107 struct point *p, int count, int order, int oneway);
108 void (*draw_lines3)(struct graphics_priv *gr, struct graphics_gc_priv *gc,
109 struct point *p, int count, int order, int width);
110 void (*draw_lines4)(struct graphics_priv *gr, struct graphics_gc_priv *gc,
111 struct point *p, int count, int order, int width, int type);
112 void (*draw_lines_dashed)(struct graphics_priv *gr,
113 struct graphics_gc_priv *gc, struct point *p, int count, int order,
114 int oneway);
115 void (*draw_polygon)(struct graphics_priv *gr, struct graphics_gc_priv *gc,
116 struct point *p, int count);
117 void (*draw_polygon2)(struct graphics_priv *gr,
118 struct graphics_gc_priv *gc, struct point *p, int count, int order,
119 int oneway);
120 void (*draw_rectangle)(struct graphics_priv *gr,
121 struct graphics_gc_priv *gc, struct point *p, int w, int h);
122 void (*draw_circle)(struct graphics_priv *gr, struct graphics_gc_priv *gc,
123 struct point *p, int r);
124 void (*draw_text)(struct graphics_priv *gr, struct graphics_gc_priv *fg,
125 struct graphics_gc_priv *bg, struct graphics_font_priv *font,
126 char *text, struct point *p, int dx, int dy);
127 void (*draw_image)(struct graphics_priv *gr, struct graphics_gc_priv *fg,
128 struct point *p, struct graphics_image_priv *img);
129 void (*draw_bigmap)(struct graphics_priv *gr, struct graphics_gc_priv *fg,
130 int yaw, int order, float clat, float clng, int x, int y, int scx,
131 int scy, int px, int py, int valid);
132 void (*send_osd_values)(struct graphics_priv *gr,
133 struct graphics_gc_priv *fg, char *id, char *text1, char *text2,
134 char *text3, int i1, int i2, int i3, int i4, float f1, float f2,
135 float f3);
136 void
137 (*draw_image_warp)(struct graphics_priv *gr,
138 struct graphics_gc_priv *fg, struct point *p, int count,
139 char *data);
140 void (*draw_restore)(struct graphics_priv *gr, struct point *p, int w,
141 int h);
142 void (*draw_drag)(struct graphics_priv *gr, struct point *p);
143 struct graphics_font_priv
144 *(*font_new)(struct graphics_priv *gr,
145 struct graphics_font_methods *meth, char *font, int size,
146 int flags);
147 struct graphics_gc_priv *(*gc_new)(struct graphics_priv *gr,
148 struct graphics_gc_methods *meth);
149 void
150 (*background_gc)(struct graphics_priv *gr,
151 struct graphics_gc_priv *gc);
152 struct graphics_priv *(*overlay_new)(struct graphics_priv *gr,
153 struct graphics_methods *meth, struct point *p, int w, int h,
154 int alpha, int wraparound);
155 struct graphics_image_priv *(*image_new)(struct graphics_priv *gr,
156 struct graphics_image_methods *meth, char *path, int *w, int *h,
157 struct point *hot, int rotation);
158 void *(*get_data)(struct graphics_priv *gr, const char *type);
159 void (*image_free)(struct graphics_priv *gr,
160 struct graphics_image_priv *priv);
161 void (*get_text_bbox)(struct graphics_priv *gr,
162 struct graphics_font_priv *font, char *text, int dx, int dy,
163 struct point *ret, int estimate);
164 void (*overlay_disable)(struct graphics_priv *gr, int disable);
165 void (*overlay_resize)(struct graphics_priv *gr, struct point *p, int w,
166 int h, int alpha, int wraparound);
167 int (*set_attr)(struct graphics_priv *gr, struct attr *attr);
168 };
169
170 struct graphics_font_methods
171 {
172 void (*font_destroy)(struct graphics_font_priv *font);
173 };
174
175 struct graphics_font
176 {
177 struct graphics_font_priv *priv;
178 struct graphics_font_methods meth;
179 };
180
181 struct graphics_gc_methods
182 {
183 void (*gc_destroy)(struct graphics_gc_priv *gc);
184 void (*gc_set_linewidth)(struct graphics_gc_priv *gc, int width);
185 void (*gc_set_dashes)(struct graphics *gra, struct graphics_gc_priv *gc, int width, int offset,
186 int dash_list[], int order);
187 void (*gc_set_foreground)(struct graphics_gc_priv *gc, struct color *c);
188 void (*gc_set_background)(struct graphics_gc_priv *gc, struct color *c);
189 void (*gc_set_stipple)(struct graphics_gc_priv *gc,
190 struct graphics_image_priv *img);
191 };
192
193 struct graphics_gc
194 {
195 struct graphics_gc_priv *priv;
196 struct graphics_gc_methods meth;
197 struct graphics *gra;
198 };
199
200 struct graphics_image_methods
201 {
202 void (*image_destroy)(struct graphics_image_priv *img);
203 };
204
205 struct graphics_image
206 {
207 struct graphics_image_priv *priv;
208 struct graphics_image_methods meth;
209 int width;
210 int height;
211 struct point hot;
212 };
213
214 struct graphics_data_image
215 {
216 void *data;
217 int size;
218 };
219
220 /* prototypes */
221 enum attr_type;
222 enum draw_mode_num;
223 enum item_type;
224 struct attr;
225 struct attr_iter;
226 struct callback;
227 struct color;
228 struct displayitem;
229 struct displaylist;
230 struct displaylist_handle;
231 struct graphics;
232 struct graphics_font;
233 struct graphics_gc;
234 struct graphics_image;
235 struct item;
236 struct itemgra;
237 struct layout;
238 struct mapset;
239 struct point;
240 struct point_rect;
241 struct transformation;
242 int graphics_set_attr(struct graphics *gra, struct attr *attr);
243 void graphics_set_rect(struct graphics *gra, struct point_rect *pr);
244 struct graphics *graphics_new(struct attr *parent, struct attr **attrs);
245 int graphics_get_attr(struct graphics *this_, enum attr_type type,
246 struct attr *attr, struct attr_iter *iter);
247 struct graphics *graphics_overlay_new(struct graphics *parent, struct point *p,
248 int w, int h, int alpha, int wraparound);
249 void graphics_overlay_resize(struct graphics *this_, struct point *p, int w,
250 int h, int alpha, int wraparound);
251 void graphics_init(struct graphics *this_);
252 void *graphics_get_data(struct graphics *this_, const char *type);
253 void graphics_add_callback(struct graphics *this_, struct callback *cb);
254 void graphics_remove_callback(struct graphics *this_, struct callback *cb);
255 struct graphics_font *graphics_font_new(struct graphics *gra, int size,
256 int flags);
257 struct graphics_font *graphics_named_font_new(struct graphics *gra, char *font,
258 int size, int flags);
259 void graphics_free(struct graphics *gra);
260 void graphics_font_destroy_all(struct graphics *gra);
261 struct graphics_gc *graphics_gc_new(struct graphics *gra);
262 void graphics_gc_destroy(struct graphics_gc *gc);
263 void graphics_gc_set_foreground(struct graphics_gc *gc, struct color *c);
264 void graphics_gc_set_background(struct graphics_gc *gc, struct color *c);
265 void
266 graphics_gc_set_stipple(struct graphics_gc *gc,
267 struct graphics_image *img);
268 void graphics_gc_set_linewidth(struct graphics_gc *gc, int width);
269 void graphics_gc_set_dashes(struct graphics *gra, struct graphics_gc *gc, int width, int offset,
270 int dash_list[], int n, int order);
271 struct graphics_image *graphics_image_new_scaled(struct graphics *gra,
272 char *path, int w, int h);
273 struct graphics_image *graphics_image_new_scaled_rotated(struct graphics *gra,
274 char *path, int w, int h, int rotate);
275 struct graphics_image *graphics_image_new(struct graphics *gra, char *path);
276 void graphics_image_free(struct graphics *gra, struct graphics_image *img);
277 void graphics_draw_restore(struct graphics *this_, struct point *p, int w,
278 int h);
279 void graphics_draw_mode(struct graphics *this_, enum draw_mode_num mode);
280 void graphics_draw_lines(struct graphics *this_, struct graphics_gc *gc,
281 struct point *p, int count);
282 void graphics_draw_circle(struct graphics *this_, struct graphics_gc *gc,
283 struct point *p, int r);
284 void graphics_draw_rectangle(struct graphics *this_, struct graphics_gc *gc,
285 struct point *p, int w, int h);
286 void graphics_draw_rectangle_rounded(struct graphics *this_,
287 struct graphics_gc *gc, struct point *plu, int w, int h, int r,
288 int fill);
289 void graphics_draw_text(struct graphics *this_, struct graphics_gc *gc1,
290 struct graphics_gc *gc2, struct graphics_font *font, char *text,
291 struct point *p, int dx, int dy);
292 void graphics_get_text_bbox(struct graphics *this_, struct graphics_font *font,
293 char *text, int dx, int dy, struct point *ret, int estimate);
294 void graphics_overlay_disable(struct graphics *this_, int disable);
295 void graphics_draw_image(struct graphics *this_, struct graphics_gc *gc,
296 struct point *p, struct graphics_image *img);
297 int graphics_draw_drag(struct graphics *this_, struct point *p);
298 void graphics_background_gc(struct graphics *this_, struct graphics_gc *gc);
299 void graphics_draw_text_std(struct graphics *this_, int text_size, char *text,
300 struct point *p);
301 char *graphics_icon_path(char *icon);
302 void graphics_draw_itemgra(struct graphics *gra, struct itemgra *itm,
303 struct transformation *t, char *label);
304 void graphics_displaylist_draw(struct graphics *gra,
305 struct displaylist *displaylist, struct transformation *trans,
306 struct layout *l, int flags);
307 void graphics_draw(struct graphics *gra, struct displaylist *displaylist,
308 struct mapset *mapset, struct transformation *trans, struct layout *l,
309 int async, struct callback *cb, int flags);
310 int graphics_draw_cancel(struct graphics *gra, struct displaylist *displaylist);
311 struct displaylist_handle *graphics_displaylist_open(
312 struct displaylist *displaylist);
313 struct displayitem *graphics_displaylist_next(struct displaylist_handle *dlh);
314 void graphics_displaylist_close(struct displaylist_handle *dlh);
315 struct displaylist *graphics_displaylist_new(void);
316 struct item *graphics_displayitem_get_item(struct displayitem *di);
317 int graphics_displayitem_get_coord_count(struct displayitem *di);
318 char *graphics_displayitem_get_label(struct displayitem *di);
319 int graphics_displayitem_get_displayed(struct displayitem *di);
320 int graphics_displayitem_within_dist(struct displaylist *displaylist,
321 struct displayitem *di, struct point *p, int dist);
322 void graphics_add_selection(struct graphics *gra, struct item *item,
323 enum item_type type, struct displaylist *dl);
324 void graphics_remove_selection(struct graphics *gra, struct item *item,
325 enum item_type type, struct displaylist *dl);
326 void graphics_clear_selection(struct graphics *gra, struct displaylist *dl);
327 /* end of prototypes */
328 #ifdef __cplusplus
329 }
330 #endif
331
332 #endif
333

   
Visit the ZANavi Wiki