From: Karryanna Date: Wed, 13 May 2015 06:05:36 +0000 (+0200) Subject: Labelling: pointing to variants redesigned X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=c4f484177d9017fe50a78d535020394699e1a360;p=leo.git Labelling: pointing to variants redesigned • Scrapped line variants (they weren't used anyway) • Variants are pointed by general request will be unused for some request types but it makes implementation for the rest much easier --- diff --git a/labeller.c b/labeller.c index fe062ca..d6f4795 100644 --- a/labeller.c +++ b/labeller.c @@ -115,10 +115,10 @@ void elite(void); void rank_population(void); void plan_individual(struct individual *individual); -void make_bitmap(struct point_variant *v, struct symbol *sym); -void make_bitmap_icon(struct point_variant *v, struct sym_icon *si); -void make_bitmap_point(struct point_variant *v, struct sym_point *sp); -void make_bitmap_label(struct point_variant *v, struct sym_text *text); +void make_bitmap(struct variant *v, struct symbol *sym); +void make_bitmap_icon(struct variant *v, struct sym_icon *si); +void make_bitmap_point(struct variant *v, struct sym_point *sp); +void make_bitmap_label(struct variant *v, struct sym_text *text); void cut_edge(struct graph_edge *e, double dist); struct request_line *make_new_line(void); @@ -231,7 +231,7 @@ void labeller_init(void) num_map_parts = num_map_parts_row * num_map_parts_col; } -void make_bitmap(struct point_variant *v, struct symbol *sym) +void make_bitmap(struct variant *v, struct symbol *sym) { switch (sym->type) { @@ -249,7 +249,7 @@ void make_bitmap(struct point_variant *v, struct symbol *sym) } } -void make_bitmap_icon(struct point_variant *v, struct sym_icon *si) +void make_bitmap_icon(struct variant *v, struct sym_icon *si) { v->width = si->sir.icon->width; v->height = si->sir.icon->height; @@ -257,7 +257,7 @@ void make_bitmap_icon(struct point_variant *v, struct sym_icon *si) for (int i=0; iwidth*v->height; i++) v->bitmap[i] = 1; } -void make_bitmap_point(struct point_variant *v, struct sym_point *sp) +void make_bitmap_point(struct variant *v, struct sym_point *sp) { v->width = v->height = sp->size; v->bitmap = malloc(sp->size*sp->size * sizeof(bool)); @@ -265,7 +265,7 @@ void make_bitmap_point(struct point_variant *v, struct sym_point *sp) for (int i=0; isize*sp->size; i++) v->bitmap[i] = 1; } -void make_bitmap_label(struct point_variant *v, struct sym_text *text) +void make_bitmap_label(struct variant *v, struct sym_text *text) { v->width = ceil(text->tw); v->height = ceil(text->th); @@ -298,9 +298,9 @@ printf("Adding point\n"); r->offset_y = 0; r->num_variants = 1; - GARY_INIT(r->variants, 0); + GARY_INIT(r->request.variants, 0); - struct point_variant *v = GARY_PUSH(r->variants); + struct variant *v = GARY_PUSH(r->request.variants); struct osm_node *n = (struct osm_node *) object; // FIXME: Compiler warning r->x = n->x; @@ -366,8 +366,8 @@ printf("Adding area on %u\n", zindex); osm_obj_center(o, &(r->cx), &(r->cy)); - GARY_INIT(r->variants, 0); - struct point_variant *v = GARY_PUSH(r->variants); + GARY_INIT(r->request.variants, 0); + struct variant *v = GARY_PUSH(r->request.variants); switch (sym->type) { case SYMBOLIZER_ICON: @@ -703,9 +703,9 @@ struct request_segment *make_new_segment(struct request_section *rls, struct sym rs->request.ind = num_requests++; rs->request.type = REQUEST_SEGMENT; - struct point_variant *v = malloc(sizeof(struct point_variant)); + struct variant *v = malloc(sizeof(struct variant)); make_bitmap(v, sym); - rs->variant = v; + rs->request.variants = v; return rs; } @@ -873,22 +873,14 @@ void dump_bitmaps(struct individual *individual) { fprintf(stderr, "%d-th placement\n", i); struct placement *p = &(individual->placements[i]); - struct point_variant *v = NULL; + struct variant *v = NULL; switch (p->request->type) { case REQUEST_SEGMENT: ; - struct request_segment *rs = (struct request_segment *) p->request; - v = rs->variant; - break; case REQUEST_POINT: ; - struct request_point *rp = (struct request_point *) p->request; - v = &(rp->variants[p->variant_used]); - break; case REQUEST_AREA: ; - struct request_area *ra = (struct request_area *) p->request; - printf("Using %d-th of %d variants\n", p->variant_used, GARY_SIZE(ra->variants)); - v = &(ra->variants[p->variant_used]); + v = &(p->request->variants[p->variant_used]); break; default: printf("Testing request type (dump_bitmaps): %d\n", p->request->type); @@ -1268,18 +1260,13 @@ struct map_part **get_map_parts(struct placement *p) if (dbg_map_parts) printf("Looking for map parts containing placement of request %d, placed at [%.2f; %.2f]\n", p->request->ind, p->x, p->y); - struct point_variant v; + struct variant v; switch (p->request->type) { case REQUEST_POINT: - v = ((struct request_point *) p->request)->variants[p->variant_used]; - break; case REQUEST_SEGMENT: - v = ((struct request_segment *) p->request)->variant[p->variant_used]; - break; case REQUEST_AREA: - v = ((struct request_area *) p->request)->variants[p->variant_used]; - break; + v = p->request->variants[p->variant_used]; default: return NULL; } diff --git a/labeller.h b/labeller.h index d6f53ef..d82e830 100644 --- a/labeller.h +++ b/labeller.h @@ -27,22 +27,18 @@ enum term_cond TERM_COND_ITERATIONS, }; -struct point_variant +struct variant { int width; int height; bool *bitmap; }; -struct line_variant -{ - bool *masks; -}; - struct request { enum request_type type; int ind; + struct variant *variants; }; struct request_point @@ -55,7 +51,6 @@ struct request_point double offset_x; double offset_y; int num_variants; - struct point_variant *variants; }; struct request_segment @@ -68,7 +63,6 @@ struct request_segment double y2; double angle; struct symbol *label; - struct point_variant *variant; z_index_t zindex; }; @@ -84,7 +78,6 @@ struct request_line struct request request; struct symbol *line; int num_variants; - struct line_variant *variants; struct request_section *sections; }; @@ -93,7 +86,6 @@ struct request_area struct request request; struct osm_multipolygon *o; struct symbol *label; - struct point_variant *variants; z_index_t zindex; double cx, cy; };