]> mj.ucw.cz Git - leo.git/blobdiff - sym-point.c
Labelling: Small fixes in rand*
[leo.git] / sym-point.c
index c7c2be0a01f8c470757ae9416c4dd387f2135e21..9c159bfe6e7af406f46699ecbe9d196b0d66a910 100644 (file)
@@ -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 = {
@@ -138,7 +142,21 @@ 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));
+  switch (o->type)
+  {
+    case OSM_TYPE_NODE:
+      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))
+      {
+      labeller_add_linelabel(&sic->s, o, sym_zindex(o, si, 4));
+      break;
+      }
+    case OSM_TYPE_MULTIPOLYGON:
+      labeller_add_arealabel(&sic->s, o, sym_zindex(o, si, 4));
+      break;
+  }
 }
 
 struct symbolizer symbolizer_icon = {