+ iteration++;
+
+ struct individual **swp = population1;
+ population1 = population2;
+ population2 = swp;
+ pop2_ind = 0;
+ }
+
+ for (uns i=0; i<GARY_SIZE(population1[0]->placements); i++)
+ {
+ switch (population1[0]->placements[i].request->type)
+ {
+ case REQUEST_POINT: ;
+ struct request_point *rp = (struct request_point *) population1[0]->placements[i].request;
+ switch (rp->sym->type)
+ {
+ case SYMBOLIZER_POINT: ;
+ struct sym_point *sp = (struct sym_point *) rp->sym;
+ sp->x = i*10;
+ sp->y = i*10;
+ sym_plan((struct symbol *) sp, rp->zindex);
+ break;
+ case SYMBOLIZER_ICON: ;
+ struct sym_icon *si = (struct sym_icon *) rp->sym;
+ si->sir.x = population1[0]->placements[i].x;
+ si->sir.y = population1[0]->placements[i].y;
+ sym_plan((struct symbol *) si, rp->zindex);
+ break;
+ default:
+ ;
+ }
+ break;
+ case REQUEST_AREALABEL: ;
+ struct request_area *ra = (struct request_area *) population1[0]->placements[i].request;
+ sym_plan((struct symbol *) ra->sym, ra->zindex);
+ break;
+
+ case REQUEST_LINELABEL: ;
+ struct request_line *rl = (struct request_line *) population1[0]->placements[i].request;
+ for (uns j=0; j<GARY_SIZE(rl->segments); j++)
+ {
+ printf("Planning text %s to [%.2f; %.2f]\n", osm_val_decode(rl->segments[j].text->text), rl->segments[j].text->x, rl->segments[j].text->y);
+ rl->segments[j].text->next_duplicate = NULL;
+ rl->segments[j].text->next_in_tile = NULL;
+ sym_plan((struct symbol *) rl->segments[j].text, rl->segments[j].zindex); // FIXME: z-index
+ }
+
+ }
+ }
+
+ return;
+
+ while (! shall_terminate())
+ {
+ iteration++;
+