X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fitem.hh;h=ea0af2eb53de023dfc8c3a7b93f67d731d7dcbd7;hb=2d19173a5554dc8633c1837aef30ac28db703947;hp=109a9c8191d30e44f8e8e37ed5f57c34caeb4628;hpb=036af34aa44a151b9e67c18e0acccaafdfae9de8;p=lilypond.git diff --git a/lily/include/item.hh b/lily/include/item.hh index 109a9c8191..ea0af2eb53 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -3,50 +3,55 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--2007 Han-Wen Nienhuys */ #ifndef ITEM_HH #define ITEM_HH -#include "glob.hh" -#include "boxes.hh" -#include "string.hh" -#include "score-elem.hh" +#include "grob.hh" /** - a horizontally fixed size element of the score + A horizontally fixed size element of the score. - Item is the datastructure for printables whose width is known - before the spacing is calculated - - NB. This doesn't mean an Item has to initialize the output field before - spacing calculation. - + Item is the datastructure for printables whose width is known + before the spacing is calculated */ -class Item : public virtual Score_elem { +class Item : public Grob +{ + Drul_array broken_to_drul_; + + DECLARE_CLASSNAME(Item); public: - /// indirection to the column it is in - PCol * pcol_l_; - - Item * broken_to_a_[2]; - - // nobreak = 0, pre =1, post = 2 - int break_status_i()const; - Item * find_prebroken_piece(PCol*)const; - Item * find_prebroken_piece(Line_of_score*)const; - - virtual Item *item() { return this; } - Item(); - Real hpos_f() const; - NAME_MEMBERS(); - virtual Line_of_score * line_l() const; + Item (SCM); + Item (Item const &); + + virtual Grob *clone () const; + + static bool is_non_musical (Grob *); + static bool break_visible(Grob *); + static bool less (Grob * const&, Grob * const&); + bool is_broken () const; + bool pure_is_visible (int start, int end) const; + + Direction break_status_dir () const; + + Item *find_prebroken_piece (Direction) const; + Grob *find_broken_piece (System *) const; + virtual System *get_system () const; + virtual Paper_column *get_column () const; + 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(); protected: - virtual void do_breakable_col_processing(); - virtual void handle_prebroken_dependencies(); - virtual void do_print()const; + virtual void discretionary_processing (); + void copy_breakable_items (); + virtual void derived_mark () const; + bool cached_pure_height_valid_; + Interval cached_pure_height_; }; - +Interval_t spanned_time_interval (Item *l, Item *r); #endif