]> mj.ucw.cz Git - leo.git/commitdiff
Labelling: pointing to variants redesigned
authorKarryanna <karry@karryanna.cz>
Wed, 13 May 2015 06:05:36 +0000 (08:05 +0200)
committerKarryanna <karry@karryanna.cz>
Wed, 13 May 2015 06:05:36 +0000 (08:05 +0200)
• 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

labeller.c
labeller.h

index fe062caec0fe029f7329a847d2f60500264b696a..d6f4795329200a3feaaee5a2905aecd4badbcbfa 100644 (file)
@@ -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; i<v->width*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; i<sp->size*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;
   }
index d6f53ef60fb3ad0e3249956aed85fdfc086e0d78..d82e830fee1333433ecb2334872b2090cb4cb8f0 100644 (file)
@@ -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;
 };