X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;ds=sidebyside;f=sym.c;h=c9780198d1e017fed75168292cd705c6e406d379;hb=597a0c524295c721a9f1a150463b1edfa228ca4a;hp=334568161c24f007a86936f6cf816e03fc567331;hpb=4e51953df82e9ed1797912c2ecb17098a3253452;p=leo.git diff --git a/sym.c b/sym.c index 3345681..c978019 100644 --- a/sym.c +++ b/sym.c @@ -71,13 +71,6 @@ void *sym_new(enum symbolizer_type type, struct osm_object *o, size_t size) void sym_plan(struct symbol *sym, z_index_t zindex) { - // DEBUG - if (sym->type == SYMBOLIZER_TEXT) - { - struct sym_text *st = (struct sym_text *) sym; - printf("In planner: Planning text %s at [%.2f; %.2f]\n", osm_val_decode(st->text), st->x, st->y); - } - struct sym_planned *p = GARY_PUSH(sym_planned); p->sym = sym; p->zindex = zindex; @@ -143,16 +136,6 @@ static void sym_draw(struct symbol *sym, z_index_t zindex, struct svg *svg) void sym_draw_all(struct svg *svg) { - for (uns i = 0; i < GARY_SIZE(sym_planned); i++) - { - // DEBUG - if (sym_planned[i].sym->type == SYMBOLIZER_TEXT) - { - struct sym_text *st = (struct sym_text *) sym_planned[i].sym; - printf("In planner: Will draw text %s at [%.2f; %.2f]\n", osm_val_decode(st->text), st->x, st->y); - } - } - msg(L_INFO, "Sorting %u symbols by depth", (uns) GARY_SIZE(sym_planned)); sym_sort(sym_planned, GARY_SIZE(sym_planned)); @@ -161,14 +144,26 @@ void sym_draw_all(struct svg *svg) msg(L_INFO, "Drawing symbols"); for (uns i = 0; i < GARY_SIZE(sym_planned); i++) - { - // DEBUG - if (sym_planned[i].sym->type == SYMBOLIZER_TEXT) - { - struct sym_text *st = (struct sym_text *) sym_planned[i].sym; - printf("In planner: Will draw text %s at [%.2f; %.2f]\n", osm_val_decode(st->text), st->x, st->y); - } - sym_draw(sym_planned[i].sym, sym_planned[i].zindex, svg); - } +} + +struct symbol * sym_copy(struct symbol *sym) +{ + ASSERT(sym->type && sym->type < SYMBOLIZER_MAX); + if (symbolizers[sym->type]->copy) + return symbolizers[sym->type]->copy(sym); + else + return NULL; +} + +bool sym_look_same(struct symbol *s1, struct symbol *s2) +{ + if (s1->type != s2->type) + return false; + + ASSERT(s1->type && s1->type < SYMBOLIZER_MAX); + if (symbolizers[s1->type]->look_same) + return symbolizers[s1->type]->look_same(s1, s2); + else + return false; }