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