]> mj.ucw.cz Git - leo.git/blob - map.h
Parametrized drawing of map scale
[leo.git] / map.h
1 /*
2  *      Hic Est Leo -- Global Map Operations
3  *
4  *      (c) 2014--2015 Martin Mares <mj@ucw.cz>
5  */
6
7 #ifndef _LEO_MAP_H
8 #define _LEO_MAP_H
9
10 #include "svg.h"
11
12 /* Map configuration */
13
14 extern double map_min_x, map_min_y;
15 extern double map_max_x, map_max_y;
16 extern double page_width, page_height;
17 extern uns map_clip, map_rotate, map_draw_border;
18 extern char *map_projection;
19 extern char *map_svg_output;
20
21 // Remember to update map.c:map_formats
22 enum data_source_type {
23   DATA_SOURCE_INVALID,
24   DATA_SOURCE_OSMXML,
25   DATA_SOURCE_FIXED,
26   DATA_SOURCE_SHAPE,
27 };
28
29 struct data_source {
30   cnode n;
31   // Configuration
32   char *file;
33   int format;
34   clist styles;         // of data_source_style
35   int inline_styles;
36   // Runtime
37   struct osm *osm;
38 };
39
40 struct data_source_style {
41   cnode n;
42   // Configuration
43   char *name;
44   // Runtime
45   struct css_sheet *css;
46 };
47
48 extern clist map_sources;
49
50 /* Calculated by map_set_scale() */
51
52 extern double map_scale;
53 extern double page_offset_x, page_offset_y;
54 extern double page_map_width, page_map_height;
55
56 void map_set_scale(void);
57 bool map_object_visible_p(struct osm_object *o);
58
59 void map_load_styles(void);
60 void map_load_sources(void);
61 void map_apply_styles(struct svg *svg);
62
63 #endif