X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fskyline.hh;h=a11b21dde6ce27d06a3e54b177e32940da779589;hb=bd5233c02b1ba97029810ced58b8ea2c8ea0e759;hp=bccac37238d1fbb7948027d92829732aeb87676b;hpb=3f8485925e8c879fe4c9ae86acef9804126c3b91;p=lilypond.git diff --git a/lily/include/skyline.hh b/lily/include/skyline.hh index bccac37238..a11b21dde6 100644 --- a/lily/include/skyline.hh +++ b/lily/include/skyline.hh @@ -1,16 +1,26 @@ /* - skyline.hh -- declare Skyline class. + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2006--2010 Joe Neeman - (c) 2006--2007 Joe Neeman + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #ifndef SKYLINE_HH #define SKYLINE_HH -#include - +#include "lily-proto.hh" #include "axis.hh" #include "box.hh" #include "interval.hh" @@ -18,15 +28,15 @@ #include "std-vector.hh" #include "smobs.hh" +#include + struct Building { - Interval iv_; - Drul_array height_; - + Real end_; Real y_intercept_; Real slope_; - void precompute (); + 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; @@ -34,15 +44,8 @@ struct Building Real height (Real x) const; Real intersection_x (Building const &other) const; void leading_part (Real chop); - bool conceals_beginning (Building const &other) const; - bool conceals (Building const &other) const; - bool sane () const; - Building sloped_neighbour (Real horizon_padding, Direction d) const; - - bool operator< (Building const &other) - { - return iv_[LEFT] < other.iv_[LEFT]; - } + bool conceals (Building const &other, Real x) const; + Building sloped_neighbour (Real start, Real horizon_padding, Direction d) const; }; class Skyline @@ -53,46 +56,33 @@ private: void internal_merge_skyline (list*, list*, list *const result); - list internal_build_skyline (list*); + 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, Real horizon_padding, Axis a, Direction sky); Skyline (Box const &b, Real horizon_padding, Axis a, Direction sky); - vector to_points () const; + + vector to_points (Axis) const; void merge (Skyline const &); 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); + void clear (); bool is_empty () const; }; -class Skyline_pair -{ -private: - Drul_array skylines_; - - DECLARE_SIMPLE_SMOBS(Skyline_pair); -public: - Skyline_pair (); - Skyline_pair (vector const &boxes, Real horizon_padding, Axis a); - Skyline_pair (Box const &, Real horizon_padding, Axis a); - void raise (Real); - void shift (Real); - void insert (Box const &, Real horizon_padding, Axis); - void merge (Skyline_pair const &other); - Skyline &operator [] (Direction d); - Skyline const &operator [] (Direction d) const; - bool is_empty () const; -}; +extern bool debug_skylines; #endif /* SKYLINE_HH */