X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=leo.c;h=75df2e7a4f3b85b4e24ee476da3f1116fd5c5ae1;hb=eadd63b657be979276b0f7bab89f76a632473ab4;hp=10092d657cfb6d4bbd95d943c589550897583113;hpb=44b0ec8816c3cf1a5858fec0c51e075cedefc3eb;p=leo.git diff --git a/leo.c b/leo.c index 10092d6..75df2e7 100644 --- a/leo.c +++ b/leo.c @@ -18,7 +18,7 @@ #include "sym.h" #include "map.h" -#undef ROTATE +#include "labeller.h" uns debug_dump_source, debug_dump_after_proj, debug_dump_after_scaling; uns debug_dump_multipolygons, debug_dump_css, debug_dump_styling, debug_dump_symbols; @@ -115,78 +115,34 @@ static void draw_scale(struct svg *svg) int main(int argc UNUSED, char **argv) { cf_def_file = "map.cf"; +// HACKING + cf_def_file = argv[1]; cf_declare_section("Debug", &debug_cf, 0); - opt_parse(&options, argv+1); + opt_parse(&options, argv+2); +// TILL HERE osm_init(); styles_init(); - - msg(L_INFO, "Parsing OSM"); - osm_xml_parse(map_xml_input); - if (debug_dump_source) - { - puts("=== Source data ==="); - osm_dump(); - } - osm_make_multipolygons(); - - msg(L_INFO, "Projecting"); - osm_project(map_projection); - if (debug_dump_after_proj) - { - puts("=== Map after projection ==="); - osm_dump(); - } - + map_load_styles(); + map_load_sources(); map_set_scale(); - if (debug_dump_after_scaling) + + struct svg *svg = svg_open(map_svg_output); + if (!map_rotate) { - puts("=== Map after scaling ==="); - osm_dump(); + svg_set_attr_dimen(svg, "width", page_width); + svg_set_attr_dimen(svg, "height", page_height); } - - struct css_sheet *ss = css_load(map_style_sheet); - if (debug_dump_css) + else { - puts("=== Stylesheet ==="); - css_dump(ss); + svg_set_attr_dimen(svg, "width", page_height); + svg_set_attr_dimen(svg, "height", page_width); } - struct svg *svg = svg_open(map_svg_output); -#ifndef ROTATE - svg_set_attr_dimen(svg, "width", page_width); - svg_set_attr_dimen(svg, "height", page_height); -#else - svg_set_attr_dimen(svg, "width", page_height); - svg_set_attr_dimen(svg, "height", page_width); -#endif - - struct style_results r; - style_init(&r); sym_init(); + labeller_init(); - msg(L_INFO, "Applying stylesheet"); - for (uns i = OSM_TYPE_NODE; i <= OSM_TYPE_MULTIPOLYGON; i++) - CLIST_FOR_EACH(struct osm_object *, o, osm_obj_list[i]) - { - if (debug_dump_styling) - { - puts("==============================="); - osm_obj_dump(o); - } - if (!map_object_visible_p(o)) - { - if (debug_dump_styling) - printf("--> invisible\n"); - continue; - } - style_begin(&r, o); - css_apply(ss, &r); - if (debug_dump_styling) - style_dump(&r); - sym_from_style(o, &r, svg); - style_end(&r); - } + map_apply_styles(svg); if (map_clip) { @@ -206,17 +162,20 @@ int main(int argc UNUSED, char **argv) svg_push_element(svg, "g"); svg_set_attr_format(svg, "clip-path", "url(#boundary)"); -#ifdef ROTATE - svg_set_attr_format(svg, "transform", "translate(%.6g,0) rotate(90)", page_height * svg->scale); -#endif + if (map_rotate) + svg_set_attr_format(svg, "transform", "translate(%.6g,0) rotate(90)", page_height * svg->scale); } // FIXME: Replace by generic logo drawing facility +#if 0 struct svg_icon *logo = svg_icon_load(svg, "../logo/kocka-s-okrajem.svg"); +#endif + labeller_label(); sym_draw_all(svg); // Draw logo +#if 0 double logo_width = 36.12; double logo_height = 36.12 / logo->width * logo->height; struct svg_icon_request sir = { @@ -227,6 +186,7 @@ int main(int argc UNUSED, char **argv) .height = logo_height, }; svg_icon_put(svg, &sir); +#endif draw_scale(svg);