X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=labeller.h;h=f4cb2d357145c7cda40ba759c1b2ff707dbacef6;hb=9cecbd9a4ac47beed1e696de612d343b799f9025;hp=d8d4db6f62647cf25b1e2f090e7c5f03492903d8;hpb=a23e84c341b39588414b1d4055d30598c5b91dfe;p=leo.git diff --git a/labeller.h b/labeller.h index d8d4db6..f4cb2d3 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 @@ -66,9 +61,8 @@ struct request_segment double y1; double x2; double y2; - double angle; + double slope; 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; }; @@ -152,10 +144,28 @@ struct placement double y; int variant_used; bool processed; + // FIXME: Replace with clist? + struct placement_link *map_links; + struct individual *individual; +}; + +struct placement_link +{ + struct map_placement *mp; + struct placement_link *next; +}; + +struct map_placement +{ + struct placement *placement; + struct map_placement *next; + struct map_placement *prev; }; struct map_part { + // FIXME: Replace with clist? + struct map_placement *placement; }; struct individual @@ -172,45 +182,4 @@ void labeller_label(void); void labeller_add_linelabel(struct symbol *sym, struct osm_object *o, z_index_t zindex); void labeller_add_arealabel(struct symbol *sym, struct osm_object *o, z_index_t zindex); -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_graph(void); -void label_graph(void); -void join_edge(struct graph_edge *e, int dir); -void bfs(uns longline); -void make_segments(void); - -void make_population(void); -bool shall_terminate(void); -void breed(void); -void mutate(void); -void elite(void); -void rank_population(void); - -struct individual **perform_crossover(struct individual *parent1, struct individual *parent2); -void perform_mutation(struct individual *individual); - -void init_placement(struct placement *p, struct request *r); -void init_individual(struct individual *i); -struct map_part **get_parts(struct placement *symbol, struct individual *individual); - -int randint(int min, int max); - -struct placement **get_closure(struct placement *placement, struct individual *parent1, struct individual *parent2); -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); - -struct placement **get_overlapping(struct placement *p); -void filter(struct placement **list, bool *pred); - -int flip(int a, int b); -double randdouble(void); - -void cleanup(void); - -void copy_individual(struct individual *src, struct individual *dest); - #endif