]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/skyline.cc
Merge branch 'master' of ssh+git://git.sv.gnu.org/srv/git/lilypond
[lilypond.git] / lily / skyline.cc
index c935660c6ed33b400cdf2b002fc0a79f886474ab..e0139a68668ecc46f4a7682bed85abb8812c1786 100644 (file)
@@ -266,7 +266,7 @@ non_overlapping_skyline (list<Box> *const boxes, Real horizon_padding, Axis hori
        }
 
       if (iv[LEFT] - horizon_padding > last_end + EPS)
-       result.push_front (Building (last_end, -infinity_f, -infinity_f, iv[LEFT] - horizon_padding));
+       result.push_front (Building (last_end, -infinity_f, -infinity_f, iv[LEFT] - 2*horizon_padding));
 
       Building b (*i, horizon_padding, horizon_axis, sky);
       bool sloped_neighbours = horizon_padding > 0 && !isinf (iv.length ());
@@ -419,6 +419,13 @@ Skyline::insert (Box const &b, Real horizon_padding, Axis a)
   list<Building> other_bld;
   list<Building> my_bld;
 
+  if (isnan (b[other_axis (a)][LEFT])
+      || isnan (b[other_axis (a)][RIGHT]))
+    {
+      programming_error ("insane box for skyline");
+      return;
+    }
+
   /* do the same filtering as in Skyline (vector<Box> const&, etc.) */
   Interval iv = b[a];
   iv.widen (horizon_padding);
@@ -530,7 +537,8 @@ Skyline::to_points (Axis horizon_axis) const
 bool
 Skyline::is_empty () const
 {
-  return buildings_.empty ();
+  Building b = buildings_.front ();
+  return b.end_ == infinity_f && b.y_intercept_ == -infinity_f;
 }
 
 Skyline_pair::Skyline_pair ()