From: Karryanna Date: Wed, 13 May 2015 16:55:07 +0000 (+0200) Subject: Labelling: Changes in symbols movement X-Git-Url: http://mj.ucw.cz/gitweb/?a=commitdiff_plain;h=7982dd15d3d061b2abf80ccd98693003b965c5ab;p=leo.git Labelling: Changes in symbols movement --- diff --git a/labeller.c b/labeller.c index 1799bd0..ed04def 100644 --- a/labeller.c +++ b/labeller.c @@ -146,6 +146,7 @@ void dump_individual(struct individual *individual); void print_label(struct symbol *sym); double gen_movement(void); +double gen_movement_uniform(void); void gen_coords(struct placement *p); void gen_coords_point(struct placement *p); void gen_coords_segment(struct placement *p); @@ -172,6 +173,7 @@ struct placement **get_closure(struct placement *placement, struct individual *p void copy_symbols(struct placement **closure, struct individual *parent, struct individual *child); void move_symbol(struct placement *p); void move_symbol_point(struct placement *p); +void move_symbol_segment(struct placement *p); struct placement **get_overlapping(struct placement *p); void filter(struct placement **list, bool *pred); @@ -1493,6 +1495,11 @@ double gen_movement(void) return m; } +double gen_movement_uniform(void) +{ + return (move_max - move_min) * randdouble() * flip(1, -1); +} + void gen_coords_point(struct placement *p) { p->x = p->x + gen_movement(); @@ -1590,12 +1597,12 @@ void move_symbol(struct placement *p) switch (p->request->type) { case REQUEST_POINT: + case REQUEST_AREA: move_symbol_point(p); - case REQUEST_LINE: + break; case REQUEST_SEGMENT: - case REQUEST_AREA: - if (dbg_movement) - printf("Not yet implemented\n"); + move_symbol_segment(p); + break; default: ASSERT(p->request->type != REQUEST_INVALID); } @@ -1603,8 +1610,16 @@ void move_symbol(struct placement *p) void move_symbol_point(struct placement *p) { - p->x += (double) (move_min + randdouble()) * flip(1, -1); - p->y += (double) (move_min + randdouble()) * flip(1, -1); + p->x += gen_movement_uniform(); + p->y += gen_movement_uniform(); +} + +void move_symbol_segment(struct placement *p) +{ + double m = gen_movement_uniform(); + // CHECK ME + p->x += m; + p->y += m * ((struct request_segment *) p->request)->slope; } void hide_segment_labels(struct individual *individual)