X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fitem.hh;h=1895910fb6c95ea21a45fbfa06cbbc6c79e0c80e;hb=5b4b0d6e9a197e8f9eb085b7c2ad78b8be3e5cfc;hp=db8e5c4cf9c26855ed26a450298407160afd2725;hpb=73be5f6fe264e90a56e45f2d70129b133731188b;p=lilypond.git diff --git a/lily/include/item.hh b/lily/include/item.hh index db8e5c4cf9..1895910fb6 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -3,82 +3,55 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1999 Han-Wen Nienhuys + (c) 1997--2008 Han-Wen Nienhuys */ #ifndef ITEM_HH #define ITEM_HH - -#include "box.hh" -#include "string.hh" -#include "score-element.hh" -#include "drul-array.hh" -#include "protected-scm.hh" +#include "grob.hh" /** - 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. - + A horizontally fixed size element of the score. - - @signature - visibility_lambda :: int -> (bool . bool) - - @in - break direction - - @out - (transparent, empty) cons - - */ -class Item : public virtual Score_element { - void do_break (); - void try_visibility_lambda (); + Item is the datastructure for printables whose width is known + before the spacing is calculated +*/ +class Item : public Grob +{ + Drul_array broken_to_drul_; + DECLARE_CLASSNAME(Item); public: - Link_array attached_span_l_arr_; - Drul_array broken_to_drul_; - Item *unbroken_original_l_; + Item (SCM); + Item (Item const &); - /// should be put in a breakable col. - bool breakable_b_; + virtual Grob *clone () const; - /// I am really to be broken? - virtual bool breakable_b () const; - - Direction break_status_dir_; - int break_priority_i_; - - /// nobreak = 0, pre = -1, post = 1 - Direction break_status_dir() const; - Item * find_prebroken_piece (Direction) const; - Item * find_prebroken_piece (Line_of_score*) 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; - Item(); - Real hpos_f() const; - - virtual Line_of_score * line_l() const; - virtual Paper_column * column_l () const; - - static int left_right_compare (Item const *, Item const*); - - Item (Item const &); -protected: - virtual void do_breakable_col_processing(); - virtual void handle_prebroken_dependencies(); - virtual void do_print() const; - virtual bool linked_b() const; + Direction break_status_dir () const; - virtual void handle_prebroken_dependents (); + 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 discretionary_processing (); + void copy_breakable_items (); + virtual void derived_mark () const; - void copy_breakable_items(); + bool cached_pure_height_valid_; + Interval cached_pure_height_; }; - +Interval_t spanned_time_interval (Item *l, Item *r); #endif