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

Contents of /navit/navit/graphics.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 27 - (hide annotations) (download)
Mon Apr 9 21:27:36 2012 UTC (7 years, 6 months ago) by zoff99
File MIME type: text/plain
File size: 12235 byte(s)
lots of new stuff, tranlsations, bug fixes ...
1 zoff99 2 /**
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 zoff99 27 extern "C"
25     {
26 zoff99 2 #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 zoff99 27 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 zoff99 2 };
47    
48 zoff99 27 #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 zoff99 2 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 zoff99 27 struct graphics_methods
101     {
102 zoff99 2 void (*graphics_destroy)(struct graphics_priv *gr);
103     void (*draw_mode)(struct graphics_priv *gr, enum draw_mode_num mode);
104 zoff99 27 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 zoff99 2 void (*draw_drag)(struct graphics_priv *gr, struct point *p);
143 zoff99 27 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 zoff99 2 void *(*get_data)(struct graphics_priv *gr, const char *type);
159 zoff99 27 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 zoff99 2 void (*overlay_disable)(struct graphics_priv *gr, int disable);
165 zoff99 27 void (*overlay_resize)(struct graphics_priv *gr, struct point *p, int w,
166     int h, int alpha, int wraparound);
167 zoff99 2 int (*set_attr)(struct graphics_priv *gr, struct attr *attr);
168     };
169    
170 zoff99 27 struct graphics_font_methods
171     {
172 zoff99 2 void (*font_destroy)(struct graphics_font_priv *font);
173     };
174    
175 zoff99 27 struct graphics_font
176     {
177 zoff99 2 struct graphics_font_priv *priv;
178     struct graphics_font_methods meth;
179     };
180    
181 zoff99 27 struct graphics_gc_methods
182     {
183 zoff99 2 void (*gc_destroy)(struct graphics_gc_priv *gc);
184     void (*gc_set_linewidth)(struct graphics_gc_priv *gc, int width);
185 zoff99 27 void (*gc_set_dashes)(struct graphics *gra, struct graphics_gc_priv *gc, int width, int offset,
186     int dash_list[], int order);
187 zoff99 2 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 zoff99 27 void (*gc_set_stipple)(struct graphics_gc_priv *gc,
190     struct graphics_image_priv *img);
191 zoff99 2 };
192    
193 zoff99 27 struct graphics_gc
194     {
195 zoff99 2 struct graphics_gc_priv *priv;
196     struct graphics_gc_methods meth;
197     struct graphics *gra;
198     };
199    
200 zoff99 27 struct graphics_image_methods
201     {
202 zoff99 2 void (*image_destroy)(struct graphics_image_priv *img);
203     };
204    
205 zoff99 27 struct graphics_image
206     {
207 zoff99 2 struct graphics_image_priv *priv;
208     struct graphics_image_methods meth;
209     int width;
210     int height;
211     struct point hot;
212     };
213    
214 zoff99 27 struct graphics_data_image
215     {
216 zoff99 2 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 zoff99 27 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 zoff99 2 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 zoff99 27 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 zoff99 2 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 zoff99 27 void
266     graphics_gc_set_stipple(struct graphics_gc *gc,
267     struct graphics_image *img);
268 zoff99 2 void graphics_gc_set_linewidth(struct graphics_gc *gc, int width);
269 zoff99 27 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 zoff99 2 struct graphics_image *graphics_image_new(struct graphics *gra, char *path);
276     void graphics_image_free(struct graphics *gra, struct graphics_image *img);
277 zoff99 27 void graphics_draw_restore(struct graphics *this_, struct point *p, int w,
278     int h);
279 zoff99 2 void graphics_draw_mode(struct graphics *this_, enum draw_mode_num mode);
280 zoff99 27 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 zoff99 2 void graphics_overlay_disable(struct graphics *this_, int disable);
295 zoff99 27 void graphics_draw_image(struct graphics *this_, struct graphics_gc *gc,
296     struct point *p, struct graphics_image *img);
297 zoff99 2 int graphics_draw_drag(struct graphics *this_, struct point *p);
298     void graphics_background_gc(struct graphics *this_, struct graphics_gc *gc);
299 zoff99 27 void graphics_draw_text_std(struct graphics *this_, int text_size, char *text,
300     struct point *p);
301 zoff99 2 char *graphics_icon_path(char *icon);
302 zoff99 27 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 zoff99 2 int graphics_draw_cancel(struct graphics *gra, struct displaylist *displaylist);
311 zoff99 27 struct displaylist_handle *graphics_displaylist_open(
312     struct displaylist *displaylist);
313 zoff99 2 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 zoff99 27 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 zoff99 2 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