X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fitem.hh;h=e80d1f8fd476e354db08bc9323fffee92d767242;hb=eac874ad80855c7f8372c7893394fd63371a7be1;hp=0a20e7614844d1db6d35ff12b4cdfab90d579633;hpb=69b9cead5afe7164b9053d26eba582fec3825ef8;p=lilypond.git diff --git a/lily/include/item.hh b/lily/include/item.hh index 0a20e76148..e80d1f8fd4 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -1,63 +1,67 @@ /* - item.hh -- declare Item + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 1997--2010 Han-Wen Nienhuys - (c) 1997--1998 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 + 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 ITEM_HH #define ITEM_HH - -#include "boxes.hh" -#include "string.hh" -#include "score-elem.hh" -#include "drul-array.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: - Link_array attached_span_l_arr_; - Drul_array broken_to_drul_; - - /// should be put in a breakable col. - bool breakable_b_; - Direction break_status_i_; - int break_priority_i_; - - /// nobreak = 0, pre = -1, post = 1 - int break_status_i() const; - Item * find_prebroken_piece (Direction) const; - Item * find_prebroken_piece (Line_of_score*) const; - - virtual Item *item() { return this; } - Item(); - Real hpos_f() const; - DECLARE_MY_RUNTIME_TYPEINFO; - virtual Line_of_score * line_l() const; - virtual Paper_column * column_l () const; - - static int left_right_compare (Item const *, Item const*); + Item (SCM); + Item (Item const &); + + virtual Grob *clone () const; + + static bool is_non_musical (Grob *); + static bool break_visible(Grob *); + bool is_broken () const; + virtual 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_unlink (); - virtual void do_junk_links(); - virtual void do_breakable_col_processing(); - virtual void handle_prebroken_dependencies(); - virtual void do_print() const; - virtual bool linked_b() const; - - void copy_breakable_items(); -}; + 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