X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fitem.hh;h=914d2ef7b8311b6c622ae0158d680b1846e9e9e5;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=e80d1f8fd476e354db08bc9323fffee92d767242;hpb=144cd434d02e6d90b2fb738eeee99119a7c5e1d2;p=lilypond.git diff --git a/lily/include/item.hh b/lily/include/item.hh index e80d1f8fd4..914d2ef7b8 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2010 Han-Wen Nienhuys + Copyright (C) 1997--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,15 +31,23 @@ class Item : public Grob { Drul_array broken_to_drul_; - DECLARE_CLASSNAME(Item); + DECLARE_CLASSNAME (Item); public: Item (SCM); Item (Item const &); + static Item *unsmob (SCM g) { + return dynamic_cast (Grob::unsmob (g)); + } + static bool is_smob (SCM g) { + return Grob::is_smob (g) && unsmob (g); + } + virtual Grob *clone () const; static bool is_non_musical (Grob *); - static bool break_visible(Grob *); + static bool break_visible (Grob *); + bool is_broken () const; virtual bool pure_is_visible (int start, int end) const; @@ -52,7 +60,8 @@ public: virtual void handle_prebroken_dependencies (); virtual Interval_t spanned_rank_interval () const; virtual Interval pure_height (Grob *ref, int start, int end); - DECLARE_GROB_INTERFACE(); + virtual void cache_pure_height (Interval height); + DECLARE_GROB_INTERFACE (); protected: virtual void discretionary_processing (); void copy_breakable_items ();