X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=sym-point.c;h=b738c8662d910a50f40b0653217b0ee3afc6217e;hb=e827ddca25fa9660147cac4d4438d7b41b8e342b;hp=c7c2be0a01f8c470757ae9416c4dd387f2135e21;hpb=44b0ec8816c3cf1a5858fec0c51e075cedefc3eb;p=leo.git diff --git a/sym-point.c b/sym-point.c index c7c2be0..b738c86 100644 --- a/sym-point.c +++ b/sym-point.c @@ -13,6 +13,8 @@ #include "sym.h" #include "svg.h" +#include "labeller.h" + static void sym_point_draw(struct symbol *sym, struct svg *svg) { struct sym_point *p = (struct sym_point *) sym; @@ -29,9 +31,10 @@ static void sym_point_draw(struct symbol *sym, struct svg *svg) { case VALUE_CIRCLE: svg_push_element(svg, "circle"); - svg_set_attr_dimen(svg, "cx", n->x); - svg_set_attr_dimen(svg, "cy", n->y); - svg_set_attr_dimen(svg, "r", p->size / 2); + svg_set_attr_dimen(svg, "cx", p->x); + svg_set_attr_dimen(svg, "cy", p->y); + // svg_set_attr_dimen(svg, "r", p->size / 2); // DEBUG HACK + svg_set_attr_dimen(svg, "r", 3); break; // FIXME: Other shapes default: @@ -91,7 +94,8 @@ static void sym_point_gen(struct osm_object *o, struct style_info *si, struct sv style_get_number(si, PROP_SYMBOL_FILL_OPACITY, &sp->fill_opacity); } - sym_plan(&sp->s, sym_zindex(o, si, 4)); + //sym_plan(&sp->s, sym_zindex(o, si, 4)); + labeller_add_point(&sp->s, o, sym_zindex(o, si, 4)); } struct symbolizer symbolizer_point = { @@ -130,6 +134,8 @@ static void sym_icon_gen(struct osm_object *o, struct style_info *si, struct svg if (!osm_obj_center(o, &sir->x, &sir->y)) return; + printf("Right now, coords are [%.2f; %.2f]\n", sir->x, sir->y); + sir->width = icon->width; sir->height = icon->height; style_scale(si, &sir->width, &sir->height, PROP_ICON_WIDTH, PROP_ICON_HEIGHT); @@ -138,7 +144,29 @@ static void sym_icon_gen(struct osm_object *o, struct style_info *si, struct svg // sir->opacity = 1; // style_get_number(si, PROP_ICON_OPACITY, &sir->opacity); - sym_plan(&sic->s, sym_zindex(o, si, 4)); + printf("Planning icon to [%.2f; %.2f]\n", sir->x, sir->y); + switch (o->type) + { + case OSM_TYPE_NODE: + printf("it's node\n"); + labeller_add_point(&sic->s, o, sym_zindex(o, si, 4)); + break; + case OSM_TYPE_WAY: + if (!osm_way_cyclic_p((struct osm_way *) o)) + { + printf("it's way\n"); + // CHECK ME + printf("[SP] Labelling way %ju with something\n", o->id); + labeller_add_linelabel(&sic->s, o, sym_zindex(o, si, 4)); + break; + } + case OSM_TYPE_MULTIPOLYGON: + printf("it's multipolygon\n"); + labeller_add_arealabel(&sic->s, o, sym_zindex(o, si, 4)); + break; + } + //labeller_add_point(&sic->s, o, sym_zindex(o, si, 4)); + //sym_plan(&sic->s, sym_zindex(o, si, 4)); } struct symbolizer symbolizer_icon = {