#ifndef _LEO_LABELLER_H
#define _LEO_LABELLER_H
+enum verbosity
+{
+ VERBOSITY_NONE,
+ VERBOSITY_GENERAL,
+ VERBOSITY_POPULATION,
+ VERBOSITY_INDIVIDUAL,
+ VERBOSITY_PLACEMENT,
+ VERBOSITY_ALL,
+};
+
enum edge_dir
{
DIR_INVALID,
TERM_COND_ITERATIONS,
};
-struct point_variant
+struct variant
{
int width;
int height;
+ int offset_x;
+ int offset_y;
bool *bitmap;
};
-struct line_variant
-{
- bool *masks;
-};
-
struct request
{
enum request_type type;
int ind;
+ struct variant *variants;
};
struct request_point
double offset_x;
double offset_y;
int num_variants;
- struct point_variant *variants;
};
struct request_segment
double y1;
double x2;
double y2;
- double angle;
+ double slope;
struct symbol *label;
- struct point_variant *variant;
z_index_t zindex;
};
struct request request;
struct symbol *line;
int num_variants;
- struct line_variant *variants;
struct request_section *sections;
};
struct request request;
struct osm_multipolygon *o;
struct symbol *label;
- struct point_variant *variants;
z_index_t zindex;
double cx, cy;
};
double x;
double y;
int variant_used;
+ int ind;
bool processed;
+ // FIXME: Replace with clist?
+ struct map_placement *map_links;
struct individual *individual;
};
+struct map_placement
+{
+ struct placement *placement;
+ struct map_part *part;
+ struct map_placement *next_in_map;
+ struct map_placement *prev_in_map;
+ struct map_placement *next_in_placement;
+ struct map_placement *prev_in_placement;
+};
+
struct map_part
{
+ // FIXME: Replace with clist?
+ struct map_placement *placement;
+ int ind;
};
struct individual
};
void labeller_init(void);
+void labeller_cleanup(void);
+
void labeller_add_point(struct symbol *sym, struct osm_object *object, z_index_t zindex);
void labeller_add_line(struct symbol *sym, z_index_t zindex);
void labeller_label(void);