X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fskyline.hh;h=569d01f9c9ca11d59334845e0fe14858e5766713;hb=61140f6153dce4ba6e3dca3a88a33c435c6bc26b;hp=be426185f0e15e0fa33e9808724601585b011c19;hpb=076b6e8c0da5ce9251bfef7ed1e85b74d52521ef;p=lilypond.git diff --git a/lily/include/skyline.hh b/lily/include/skyline.hh index be426185f0..569d01f9c9 100644 --- a/lily/include/skyline.hh +++ b/lily/include/skyline.hh @@ -3,14 +3,13 @@ source file of the GNU LilyPond music typesetter - (c) 2006 Joe Neeman + (c) 2006--2007 Joe Neeman */ #ifndef SKYLINE_HH #define SKYLINE_HH -#include - +#include "lily-proto.hh" #include "axis.hh" #include "box.hh" #include "interval.hh" @@ -18,22 +17,24 @@ #include "std-vector.hh" #include "smobs.hh" +#include + struct Building { - Interval iv_; - Drul_array height_; - - Real zero_height_; + Real end_; + Real y_intercept_; Real slope_; - void precompute (Real max_slope); - Building (Real start, Real start_height, Real end_height, Real end, Real max_slope); + void precompute (Real start, Real start_height, Real end_height, Real end); + Building (Real start, Real start_height, Real end_height, Real end); + Building (Box const &b, Real horizon_padding, Axis a, Direction d); void print () const; Real height (Real x) const; - Real intersection (Building const &other) const; - void leading_part (Real chop, Real h); - bool obstructs (Building const &other) const; + Real intersection_x (Building const &other) const; + void leading_part (Real chop); + bool conceals (Building const &other, Real x) const; + Building sloped_neighbour (Real start, Real horizon_padding, Direction d) const; }; class Skyline @@ -41,31 +42,35 @@ class Skyline private: list buildings_; Direction sky_; - Real max_slope_; // fixme: not part of skyline per se? void internal_merge_skyline (list*, list*, list *const result); - void internal_build_skyline (list*, - list *const result); - bool is_legal_skyline () const; + list internal_build_skyline (list*, Real, Axis, Direction); DECLARE_SIMPLE_SMOBS(Skyline); + public: Skyline (); Skyline (Skyline const &src); Skyline (Direction sky); - Skyline (vector const &bldgs, Axis a, Direction sky); - Skyline (vector const &points, Real max_slope, Direction sky); - vector to_points () const; + Skyline (vector const &bldgs, Real horizon_padding, Axis a, Direction sky); + Skyline (Box const &b, Real horizon_padding, Axis a, Direction sky); + + vector to_points (Axis) const; void merge (Skyline const &); - void insert (Box const &, Axis); + void insert (Box const &, Real horizon_padding, Axis); void print () const; + void print_points () const; void raise (Real); + void shift (Real); Real distance (Skyline const &) const; Real height (Real airplane) const; Real max_height () const; void set_minimum_height (Real height); + bool is_empty () const; }; +extern bool debug_skylines; + #endif /* SKYLINE_HH */