From f31147964619f6e21eda04fa5dc38cfbdccd6ac9 Mon Sep 17 00:00:00 2001 From: David Kastrup Date: Sun, 28 Apr 2013 07:20:37 +0200 Subject: [PATCH] Keep buildings which are empty in either axis out of skylines --- lily/skyline.cc | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/lily/skyline.cc b/lily/skyline.cc index 31f4c5a184..5073e69e14 100644 --- a/lily/skyline.cc +++ b/lily/skyline.cc @@ -486,7 +486,8 @@ Skyline::Skyline (vector const &boxes, Axis horizon_axis, Direction sky) sky_ = sky; for (vsize i = 0; i < boxes.size (); i++) - if (!boxes[i].is_empty ()) + if (!boxes[i].is_empty (X_AXIS) + && !boxes[i].is_empty (Y_AXIS)) buildings.push_front (Building (boxes[i], horizon_axis, sky)); buildings_ = internal_build_skyline (&buildings); @@ -553,9 +554,12 @@ Skyline::Skyline (vector const &skypairs, Direction sky) Skyline::Skyline (Box const &b, Axis horizon_axis, Direction sky) { sky_ = sky; - Building front (b, horizon_axis, sky); - single_skyline (front, &buildings_); - normalize (); + if (!b.is_empty (X_AXIS) && !b.is_empty (Y_AXIS)) + { + Building front (b, horizon_axis, sky); + single_skyline (front, &buildings_); + normalize (); + } } void @@ -593,7 +597,7 @@ Skyline::insert (Box const &b, Axis a) } /* do the same filtering as in Skyline (vector const&, etc.) */ - if (b.is_empty ()) + if (b.is_empty (X_AXIS) || b.is_empty (Y_AXIS)) return; my_bld.splice (my_bld.begin (), buildings_); -- 2.39.5