]> mj.ucw.cz Git - leo.git/blobdiff - sym-point.c
Labelling: Variants may have offset
[leo.git] / sym-point.c
index c7c2be0a01f8c470757ae9416c4dd387f2135e21..b738c8662d910a50f40b0653217b0ee3afc6217e 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 = {
@@ -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 = {