]> mj.ucw.cz Git - leo.git/commitdiff
Labelling: Placing out of paper is counted as overlap
authorKarryanna <karry@karryanna.cz>
Tue, 9 Jun 2015 12:16:13 +0000 (14:16 +0200)
committerKarryanna <karry@karryanna.cz>
Tue, 9 Jun 2015 12:16:13 +0000 (14:16 +0200)
labeller.c

index 644fa775edb89fc898e79f9dbb3a3ea43cc4bb8b..2f5a176f18c6bf79d354401945fff0aa56d5606a 100644 (file)
@@ -1423,6 +1423,8 @@ int overlaps(struct placement *p1, struct placement *p2)
 
 int get_overlap(struct placement *p)
 {
+  if (p->variant_used == -1) return 0;
+
   struct map_part **parts = get_map_parts(p);
   if (! parts)
   {
@@ -1466,6 +1468,14 @@ int get_overlap(struct placement *p)
   if (dbg_overlaps >= VERBOSITY_PLACEMENT)
     printf("Placement of request %d add %d to overlaps\n", p->request->ind, overlap);
 
+  if (p->x < 0) overlap += 0 - p->x;
+  if (p->x + p->request->variants[p->variant_used].width > page_width_int)
+    overlap += p->x + p->request->variants[p->variant_used].width - page_width_int;
+
+  if (p->y < 0) overlap += 0 - p->y;
+  if (p->y + p->request->variants[p->variant_used].height > page_height_int)
+    overlap += p->y + p->request->variants[p->variant_used].height - page_height_int;
+
   return overlap;
 }