X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fskyline.hh;h=638fd6d3f3b4c688634491a7d9ceee60e8c4b0a6;hb=1bbcb5955cad9c9067b66c88caf0b5e77ebb579a;hp=a11b21dde6ce27d06a3e54b177e32940da779589;hpb=a6bd229f7fe1dc4a03478e14ccc0c0c66b225061;p=lilypond.git diff --git a/lily/include/skyline.hh b/lily/include/skyline.hh index a11b21dde6..638fd6d3f3 100644 --- a/lily/include/skyline.hh +++ b/lily/include/skyline.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2006--2010 Joe Neeman + Copyright (C) 2006--2011 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 @@ -53,20 +53,21 @@ class Skyline private: list buildings_; Direction sky_; - + void internal_merge_skyline (list*, list*, - list *const result); + list *const result); list internal_build_skyline (list*, Real, Axis, Direction); - DECLARE_SIMPLE_SMOBS(Skyline); + DECLARE_SIMPLE_SMOBS (Skyline); public: Skyline (); Skyline (Skyline const &src); + Skyline (Skyline const &src, Real horizon_padding, Axis a); 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 (Axis) const; void merge (Skyline const &); void insert (Box const &, Real horizon_padding, Axis); @@ -74,12 +75,23 @@ public: void print_points () const; void raise (Real); void shift (Real); - Real distance (Skyline const &) const; + Real distance (Skyline const &, Real horizon_padding = 0) const; + Real touching_point (Skyline const &, Real horizon_padding = 0) const; Real height (Real airplane) const; Real max_height () const; + Real max_height_position () const; void set_minimum_height (Real height); void clear (); bool is_empty () const; + + DECLARE_SCHEME_CALLBACK (get_touching_point, (SCM, SCM, SCM)); + DECLARE_SCHEME_CALLBACK (get_distance, (SCM, SCM, SCM)); + DECLARE_SCHEME_CALLBACK (get_max_height, (SCM)); + DECLARE_SCHEME_CALLBACK (get_max_height_position, (SCM)); + DECLARE_SCHEME_CALLBACK (get_height, (SCM, SCM)); + +protected: + Real internal_distance (Skyline const &, Real horizon_padding, Real *touch_point) const; }; extern bool debug_skylines;