navit 0.5.3-trunk
Loading...
Searching...
No Matches
mg.h
Go to the documentation of this file.
1
20#include <glib.h>
21#include "item.h"
22#include "attr.h"
23#include "coord.h"
24#include "data.h"
25#include "projection.h"
26#include "map.h"
27#include "file.h"
28
29struct block_data {
30 struct file *file;
31};
32
33struct block {
34/* int blocks;
35 int size;
36 int next;
37 struct coord_rect r;
38 int count;*/
39 unsigned char p[32];
40};
41static inline int block_get_blocks(struct block * blk) { unsigned char *p = blk->p; return get_u32(&p); }
42static inline int block_get_size(struct block * blk) { unsigned char *p = blk->p+4; return get_u32(&p); }
43static inline int block_get_next(struct block * blk) { unsigned char *p = blk->p+8; return get_u32(&p); }
44static inline int block_get_count(struct block * blk) { unsigned char *p = blk->p+28; return get_u32(&p); }
45static inline void block_get_r(struct block * blk, struct coord_rect * r) { unsigned char *p = blk->p+12; r ->lu.x = get_u32(&p); r ->lu.y = get_u32(&p); r ->rl.x = get_u32(&p); r ->rl.y = get_u32(&p); }
46
47struct item_priv {
48 int cidx;
49 int aidx;
50 unsigned char *cstart,*cp,*cend;
51 unsigned char *astart,*ap,*aend;
54 struct item item;
55};
56
57struct town_priv {
58 unsigned int id;
59 struct coord c;
60 char *name;
61 char *district;
63 unsigned char order;
64 unsigned char type;
65 unsigned short country;
66 unsigned int unknown2;
67 unsigned char size;
68 unsigned int street_assoc;
69 unsigned char unknown3;
71 unsigned int unknown4;
73 int cidx;
74 int aidx;
76 char debug[256];
77 char postal[32];
79};
80
81struct poly_priv {
83 unsigned char *poly_next;
86 unsigned char *subpoly_next;
87 unsigned char *subpoly_start;
88 unsigned char *p;
89 struct coord c[2];
90 char *name;
91 unsigned char order;
92 unsigned char type;
93 unsigned int polys;
94 unsigned int *count;
95 unsigned int count_sum;
96
97 int aidx;
99};
100
102 /*unsigned char order;
103 int count;*/
104 unsigned char p[5];
105} __attribute__((packed));
106static inline unsigned char street_header_get_order(struct street_header * str) { return *str->p; }
107static inline int street_header_get_count(struct street_header * str) { unsigned char *p = str->p+1; return get_u32_unal(&p); }
108
110 /*unsigned char order;
111 unsigned short country;*/
112 unsigned char p[3];
113} __attribute__((packed));
114static inline unsigned char street_type_get_order(struct street_type * str) { return *str->p; }
115static inline unsigned short street_type_get_country(struct street_type * str) { unsigned char *p = str->p+1; return get_u16_unal(&p); }
116
122
124 /*int segid;
125 unsigned char limit;*/ /* 0x03,0x30=One Way,0x33=No Passing */
126 /*unsigned char unknown2;
127 unsigned char unknown3;
128 unsigned char type;
129 unsigned int nameid;*/
130 unsigned char p[12];
131};
132static inline int street_str_get_segid(struct street_str * str) { unsigned char *p = str->p; return get_u32_unal(&p); }
133static inline unsigned char street_str_get_limit(struct street_str * str) { return str->p[4]; }
134static inline unsigned char street_str_get_unknown2(struct street_str * str) { return str->p[5]; }
135static inline unsigned char street_str_get_unknown3(struct street_str * str) { return str->p[6]; }
136static inline unsigned char street_str_get_type(struct street_str * str) { return str->p[7]; }
137static inline unsigned int street_str_get_nameid(struct street_str * str) { unsigned char *p = str->p+8; return get_u32_unal(&p); }
138
143
145 int len;
148 char *name1;
149 char *name2;
153 unsigned char *aux_data;
155 unsigned char *tmp_data;
156};
157
160 char *suffix;
161};
162
164 int len;
165 int tag;
166 int dist;
168 struct coord *c;
174 unsigned char *aux_data;
176 unsigned char *tmp_data;
177};
178static inline void street_name_numbers_get_coord(struct street_name_numbers * str, struct coord * c) {
179 unsigned char *p=(unsigned char *)str->c;
180 c->x=get_u32_unal(&p);
181 c->y=get_u32_unal(&p);
182}
183
192
193
194
202 unsigned char *coord_begin;
203 unsigned char *p;
204 unsigned char *p_rewind;
205 unsigned char *end;
206 unsigned char *next;
210 int bytes;
211 int more;
212 int flags;
214 int cidx;
215 struct coord hnc[100];
216 struct housenumber hn[100];
222 char debug[256];
223 char first_number[32];
224 char last_number[32];
226 GHashTable *streetname_hash;
227};
228
255
256struct map_priv {
257 int id;
259 char *dirname;
260};
261
262#define BT_STACK_SIZE 32
263
265 struct block *b;
267 int next;
271 int order;
272 unsigned char *p;
273 unsigned char *end;
274};
275
279 unsigned char *block_start;
280 struct block *b;
281 unsigned char *p;
282 unsigned char *end;
283 unsigned char *p_start;
286};
287
289/* unsigned short offset;
290 unsigned short block;*/
291 unsigned char p[4];
292};
293static inline unsigned short block_offset_get_offset(struct block_offset * blk) { unsigned char *p = blk->p; return get_u16_unal(&p); }
294static inline unsigned short block_offset_get_block(struct block_offset * blk) { unsigned char *p = blk->p+2; return get_u16_unal(&p); }
295
297 struct tree_hdr *hdr;
298 unsigned char *p;
299 unsigned char *last;
300 unsigned char *end;
301 int low;
302 int high;
305 };
306
308 struct file *f;
312};
313
314
315struct map_rect_priv {
318
319 struct map_priv *m;
321 struct file *file;
322 struct block_priv b;
323 struct item item;
334 unsigned char *search_p;
336 enum attr_type search_type,search_type_next;
341 GHashTable *block_hash[file_end];
343};
344
345int mg_country_from_isonum(int isonum);
348
349int block_init(struct map_rect_priv *mr);
350int block_next(struct map_rect_priv *mr);
351int block_get_byindex(struct file *file, int idx, struct block_priv *blk);
352int block_next_lin(struct map_rect_priv *mr);
353
354int tree_search_hv(char *dirname, char *filename, unsigned int search1, unsigned int search2, int *result);
355int town_get(struct map_rect_priv *mr, struct town_priv *poly, struct item *item);
356int town_get_byid(struct map_rect_priv *mr, struct town_priv *twn, int id_hi, int id_lo, struct item *item);
357struct item * town_search_get_item(struct map_rect_priv *mr);
358int poly_get(struct map_rect_priv *mr, struct poly_priv *poly, struct item *item);
359int poly_get_byid(struct map_rect_priv *mr, struct poly_priv *poly, int id_hi, int id_lo, struct item *item);
360int street_get(struct map_rect_priv *mr, struct street_priv *street, struct item *item);
361int street_get_byid(struct map_rect_priv *mr, struct street_priv *street, int id_hi, int id_lo, struct item *item);
362int street_name_get_byid(struct map_rect_priv *mr, struct street_priv *street, int id_hi, int id_lo, struct item *item);
363struct item * street_search_get_item(struct map_rect_priv *mr);
364void tree_search_init(char *dirname, char *filename, struct tree_search *ts, int offset);
365void tree_search_free(struct tree_search *ts);
366int tree_search_next(struct tree_search *ts, unsigned char **p, int dir);
367int tree_search_next_lin(struct tree_search *ts, unsigned char **p);
369struct map_rect_priv * map_rect_new_mg(struct map_priv *map, struct map_selection *sel);
370void map_rect_destroy_mg(struct map_rect_priv *mr);
371struct item *map_rect_get_item_byid_mg(struct map_rect_priv *mr, int id_hi, int id_lo);
attr_type
Definition attr_type_def.h:11
static unsigned int get_u32(unsigned char **p)
Definition data.h:75
static unsigned int get_u32_unal(unsigned char **p)
Definition data.h:87
static unsigned short get_u16_unal(unsigned char **p)
Definition data.h:48
struct timestamp ts
Definition garmin_img.c:13
char filename[8]
Definition garmin_img.c:1
int offset
Definition garmin_img.c:0
Contains exported functions / structures for map.c.
struct street_header_type __attribute__
static unsigned int street_str_get_nameid(struct street_str *str)
Definition mg.h:137
int poly_get(struct map_rect_priv *mr, struct poly_priv *poly, struct item *item)
Definition poly.c:101
#define BT_STACK_SIZE
Definition mg.h:262
static unsigned char street_str_get_unknown3(struct street_str *str)
Definition mg.h:135
static void block_get_r(struct block *blk, struct coord_rect *r)
Definition mg.h:45
int block_get_byindex(struct file *file, int idx, struct block_priv *blk)
Definition block.c:90
void tree_search_free(struct tree_search *ts)
Definition tree.c:304
static unsigned char street_str_get_limit(struct street_str *str)
Definition mg.h:133
static int block_get_blocks(struct block *blk)
Definition mg.h:41
int street_name_get_byid(struct map_rect_priv *mr, struct street_priv *street, int id_hi, int id_lo, struct item *item)
Definition street.c:730
struct item * housenumber_search_get_item(struct map_rect_priv *mr)
Definition street.c:948
static int street_header_get_count(struct street_header *str)
Definition mg.h:107
static unsigned char street_str_get_unknown2(struct street_str *str)
Definition mg.h:134
int town_get(struct map_rect_priv *mr, struct town_priv *poly, struct item *item)
Definition town.c:137
struct item * street_search_get_item(struct map_rect_priv *mr)
Definition street.c:811
int mg_country_from_isonum(int isonum)
Definition map.c:125
int poly_get_byid(struct map_rect_priv *mr, struct poly_priv *poly, int id_hi, int id_lo, struct item *item)
Definition poly.c:243
static unsigned char street_str_get_type(struct street_str *str)
Definition mg.h:136
int mg_country_to_isonum(int country)
Definition map.c:133
file_index
Definition mg.h:229
@ file_border_ply
Definition mg.h:230
@ file_street_bti
Definition mg.h:240
@ file_build_ply
Definition mg.h:232
@ file_tunnel_ply
Definition mg.h:244
@ file_town_twn_alt2
Definition mg.h:249
@ file_natpark_ply
Definition mg.h:235
@ file_water_ply
Definition mg.h:245
@ file_rail_ply
Definition mg.h:238
@ file_town_twn
Definition mg.h:243
@ file_nature_ply
Definition mg.h:236
@ file_street_str_alt3
Definition mg.h:252
@ file_street_str_alt4
Definition mg.h:253
@ file_sea_ply
Definition mg.h:239
@ file_street_str
Definition mg.h:241
@ file_end
Definition mg.h:247
@ file_golf_ply
Definition mg.h:233
@ file_town_twn_alt1
Definition mg.h:248
@ file_bridge_ply
Definition mg.h:231
@ file_height_ply
Definition mg.h:234
@ file_woodland_ply
Definition mg.h:246
@ file_street_str_alt2
Definition mg.h:251
@ file_strname_stn
Definition mg.h:242
@ file_street_str_alt1
Definition mg.h:250
@ file_other_ply
Definition mg.h:237
static void street_name_numbers_get_coord(struct street_name_numbers *str, struct coord *c)
Definition mg.h:178
static int street_str_get_segid(struct street_str *str)
Definition mg.h:132
void tree_search_init(char *dirname, char *filename, struct tree_search *ts, int offset)
Definition tree.c:293
int block_init(struct map_rect_priv *mr)
Definition block.c:154
struct map_rect_priv * map_rect_new_mg(struct map_priv *map, struct map_selection *sel)
Definition map.c:222
static unsigned char street_type_get_order(struct street_type *str)
Definition mg.h:114
int tree_search_next_lin(struct tree_search *ts, unsigned char **p)
Definition tree.c:263
int housenumber_search_setup(struct map_rect_priv *mr)
Definition street.c:890
static unsigned short street_type_get_country(struct street_type *str)
Definition mg.h:115
void map_rect_destroy_mg(struct map_rect_priv *mr)
Definition map.c:315
unsigned char p[5]
Definition mg.h:2
static unsigned char street_header_get_order(struct street_header *str)
Definition mg.h:106
static int block_get_next(struct block *blk)
Definition mg.h:43
int tree_search_hv(char *dirname, char *filename, unsigned int search1, unsigned int search2, int *result)
Definition tree.c:174
int town_get_byid(struct map_rect_priv *mr, struct town_priv *twn, int id_hi, int id_lo, struct item *item)
Definition town.c:185
int street_get(struct map_rect_priv *mr, struct street_priv *street, struct item *item)
Definition street.c:366
static int block_get_size(struct block *blk)
Definition mg.h:42
int block_next(struct map_rect_priv *mr)
Definition block.c:203
static unsigned short block_offset_get_block(struct block_offset *blk)
Definition mg.h:294
int tree_search_next(struct tree_search *ts, unsigned char **p, int dir)
Definition tree.c:223
int mg_country_postal_len(int country)
Definition map.c:141
static int block_get_count(struct block *blk)
Definition mg.h:44
struct item * map_rect_get_item_byid_mg(struct map_rect_priv *mr, int id_hi, int id_lo)
Definition map.c:291
int street_get_byid(struct map_rect_priv *mr, struct street_priv *street, int id_hi, int id_lo, struct item *item)
Definition street.c:492
int block_next_lin(struct map_rect_priv *mr)
Definition block.c:170
struct item * town_search_get_item(struct map_rect_priv *mr)
Definition town.c:230
static unsigned short block_offset_get_offset(struct block_offset *blk)
Definition mg.h:293
static struct pcoord c
Definition popup.c:375
Definition attr.h:136
Definition mg.h:264
unsigned char * p
Definition mg.h:272
int next
Definition mg.h:267
struct coord_rect stack[BT_STACK_SIZE]
Definition mg.h:269
struct block * b
Definition mg.h:265
int block_count
Definition mg.h:268
int stackp
Definition mg.h:270
struct coord_rect r r_curr
Definition mg.h:266
int order
Definition mg.h:271
unsigned char * end
Definition mg.h:273
Definition mg.h:29
struct file * file
Definition mg.h:30
Definition mg.h:288
unsigned char p[4]
Definition mg.h:291
Definition mg.h:276
unsigned char * end
Definition mg.h:282
int binarytree
Definition mg.h:284
unsigned char * p
Definition mg.h:281
int block_num
Definition mg.h:277
unsigned char * block_start
Definition mg.h:279
struct coord_rect b_rect
Definition mg.h:278
struct block_bt_priv bt
Definition mg.h:285
unsigned char * p_start
Definition mg.h:283
struct block * b
Definition mg.h:280
Definition mg.h:33
unsigned char p[32]
Definition mg.h:39
Definition coord.h:58
struct coord rl
Definition coord.h:60
struct coord lu
Definition coord.h:59
Definition coord.h:34
int y
Definition coord.h:36
int x
Definition coord.h:35
Definition country.c:31
Definition file.h:36
Definition mg.h:158
char * suffix
Definition mg.h:160
int number
Definition mg.h:159
Implementation-specific item data for traffic map items.
Definition mg.h:47
enum attr_type attr_last
Definition mg.h:52
unsigned char * aend
Definition mg.h:51
unsigned char * cp
Definition mg.h:50
unsigned char * astart
Definition mg.h:51
unsigned char * cend
Definition mg.h:50
int aidx
Definition mg.h:49
unsigned char * ap
Definition mg.h:51
struct map_rect_priv * mr
Definition traffic.c:179
int cidx
Definition mg.h:48
unsigned char * cstart
Definition mg.h:50
enum attr_type attr_next
Definition mg.h:53
Represents an object on a map.
Definition item.h:124
int id_hi
Definition item.h:126
int id_lo
Definition item.h:127
Represents the map from a single binfile.
Definition binfile.c:105
int id
Definition binfile.c:106
char * dirname
Definition mg.h:259
Implementation-specific map rect data.
Definition binfile.c:137
struct map_selection * sel
Definition binfile.c:143
struct tree_search ts
Definition mg.h:327
struct block_priv b
Definition mg.h:322
struct attr * search_attr
Definition mg.h:330
int search_country
Definition mg.h:328
struct street_priv street
Definition mg.h:326
struct town_priv town
Definition mg.h:324
struct map_selection * xsel
Definition mg.h:316
int search_partial
Definition mg.h:332
enum file_index current_file
Definition mg.h:320
struct item * search_item_tmp
Definition mg.h:338
struct block_offset * search_blk_off
Definition mg.h:339
int search_blk_count
Definition mg.h:335
enum attr_type search_type search_type_next
Definition mg.h:336
struct file * file
Definition mg.h:321
struct item_priv item3
Definition mg.h:342
GHashTable * block_hash[file_end]
Definition mg.h:341
struct map_selection * cur_sel
Definition mg.h:317
struct map_rect_priv * search_mr_tmp
Definition mg.h:337
struct item search_item
Definition mg.h:329
char * search_str
Definition mg.h:331
struct map_priv * m
Definition binfile.c:144
unsigned char * search_p
Definition mg.h:334
struct poly_priv poly
Definition mg.h:325
int search_block
Definition mg.h:340
int search_linear
Definition mg.h:333
Used to select data from a map.
Definition map.h:58
Definition map.c:55
int y
Definition coord.h:55
int x
Definition coord.h:54
Definition mg.h:81
int aidx
Definition mg.h:97
unsigned char order
Definition mg.h:91
int subpoly_num_all
Definition mg.h:85
unsigned int * count
Definition mg.h:94
unsigned char type
Definition mg.h:92
enum attr_type attr_next
Definition mg.h:98
unsigned int count_sum
Definition mg.h:95
char * name
Definition mg.h:90
int subpoly_num
Definition mg.h:84
int poly_num
Definition mg.h:82
unsigned char * poly_next
Definition mg.h:83
unsigned int polys
Definition mg.h:93
unsigned char * subpoly_next
Definition mg.h:86
unsigned char * subpoly_start
Definition mg.h:87
struct coord c[2]
Definition mg.h:89
unsigned char * p
Definition mg.h:88
Definition command.c:34
Definition mg.h:117
int type_count
Definition mg.h:119
struct street_header * header
Definition mg.h:118
struct street_type * type
Definition mg.h:120
Definition mg.h:101
unsigned char p[5]
Definition mg.h:104
Definition mg.h:184
int tag
Definition mg.h:186
int len
Definition mg.h:185
struct housenumber first
Definition mg.h:188
struct street_name_segment * segment
Definition mg.h:190
struct housenumber last
Definition mg.h:189
struct coord * c
Definition mg.h:187
Definition mg.h:163
int aux_len
Definition mg.h:173
int tmp_len
Definition mg.h:175
int dist
Definition mg.h:166
struct street_name_segment * segments
Definition mg.h:172
int segment_count
Definition mg.h:171
struct housenumber last
Definition mg.h:170
int tag
Definition mg.h:165
struct coord * c
Definition mg.h:168
unsigned char * aux_data
Definition mg.h:174
int len
Definition mg.h:164
struct housenumber first
Definition mg.h:169
unsigned char * tmp_data
Definition mg.h:176
int country
Definition mg.h:167
Definition mg.h:139
int segid
Definition mg.h:140
int country
Definition mg.h:141
Definition mg.h:144
int len
Definition mg.h:145
int townassoc
Definition mg.h:147
int aux_len
Definition mg.h:152
int country
Definition mg.h:146
char * name1
Definition mg.h:148
unsigned char * tmp_data
Definition mg.h:155
int segment_count
Definition mg.h:150
char * name2
Definition mg.h:149
unsigned char * aux_data
Definition mg.h:153
struct street_name_segment * segments
Definition mg.h:151
int tmp_len
Definition mg.h:154
Definition mg.h:195
GHashTable * streetname_hash
Definition mg.h:226
struct coord_rect ref
Definition mg.h:209
int more
Definition mg.h:211
char first_number[32]
Definition mg.h:223
struct housenumber hn[100]
Definition mg.h:216
int type_count
Definition mg.h:198
struct coord hnc[100]
Definition mg.h:215
int bytes
Definition mg.h:210
unsigned char * p
Definition mg.h:203
int status
Definition mg.h:207
int housenumber
Definition mg.h:213
unsigned char * end
Definition mg.h:205
enum attr_type attr_next
Definition mg.h:221
struct street_name_numbers name_numbers
Definition mg.h:219
struct street_type * type
Definition mg.h:199
struct file * name_file
Definition mg.h:196
int cidx
Definition mg.h:214
int status_rewind
Definition mg.h:208
struct street_str * str_start
Definition mg.h:201
int flags
Definition mg.h:212
struct street_name name
Definition mg.h:218
unsigned char * p_rewind
Definition mg.h:204
unsigned char * coord_begin
Definition mg.h:202
struct street_str * str
Definition mg.h:200
char last_number[32]
Definition mg.h:224
char debug[256]
Definition mg.h:222
struct street_name_number name_number
Definition mg.h:220
int hn_count
Definition mg.h:217
unsigned char * next
Definition mg.h:206
char current_number[32]
Definition mg.h:225
struct street_header * header
Definition mg.h:197
Definition mg.h:123
unsigned char p[12]
Definition mg.h:130
Definition mg.h:109
unsigned char p[3]
Definition mg.h:112
Definition mg.h:57
struct coord c
Definition mg.h:59
int cidx
Definition mg.h:73
char * name
Definition mg.h:60
int aidx
Definition mg.h:74
unsigned int id
Definition mg.h:58
unsigned int unknown2
Definition mg.h:66
unsigned char size
Definition mg.h:67
unsigned short country
Definition mg.h:65
char * district
Definition mg.h:61
unsigned char unknown3
Definition mg.h:69
enum attr_type attr_next
Definition mg.h:75
char * postal_code1
Definition mg.h:62
unsigned char order
Definition mg.h:63
char postal[32]
Definition mg.h:77
struct item town_attr_item
Definition mg.h:78
char * postal_code2
Definition mg.h:70
char debug[256]
Definition mg.h:76
unsigned int street_assoc
Definition mg.h:68
unsigned int unknown4
Definition mg.h:71
unsigned char type
Definition mg.h:64
Definition tree.c:25
Definition mg.h:296
struct tree_hdr * hdr
Definition mg.h:297
unsigned char * last
Definition mg.h:299
int high
Definition mg.h:302
int last_high
Definition mg.h:304
unsigned char * end
Definition mg.h:300
unsigned char * p
Definition mg.h:298
int low
Definition mg.h:301
int last_low
Definition mg.h:303
Definition mg.h:307
struct tree_search_node nodes[5]
Definition mg.h:311
int curr_node
Definition mg.h:310
int last_node
Definition mg.h:309
struct file * f
Definition mg.h:308