X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Finclude%2Fitem.hh;h=bae549594cecf1976ee4f14ef2eb0c105d30d5df;hb=0b544cfb7332615ef809b71b57ab656741311ae1;hp=be7b22ec8435190b91dcbfc63a811fe7607c5bb8;hpb=c033fdc08e24aa0663b1847fffafe605f03a7440;p=lilypond.git diff --git a/lily/include/item.hh b/lily/include/item.hh index be7b22ec84..bae549594c 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -1,52 +1,69 @@ /* - 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--2014 Han-Wen Nienhuys - (c) 1997--2004 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 "box.hh" #include "grob.hh" -#include "drul-array.hh" - /** - A horizontally fixed size element of the score. - - Item is the datastructure for printables whose width is known - before the spacing is calculated + A horizontally fixed size element of the score. + Item is the datastructure for printables whose width is known + before the spacing is calculated */ class Item : public Grob { - Drul_array broken_to_drul_; + Drul_array broken_to_drul_; + DECLARE_CLASSNAME (Item); public: Item (SCM); Item (Item const &); - VIRTUAL_COPY_CONSTRUCTOR (Grob, Item); - static bool is_breakable (Grob *); + 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; + Grob *find_broken_piece (System *) const; virtual System *get_system () const; virtual Paper_column *get_column () const; virtual void handle_prebroken_dependencies (); - static bool has_interface (Grob *); + virtual Interval_t spanned_rank_interval () const; + virtual Interval pure_height (Grob *ref, int start, int end); + virtual void cache_pure_height (Interval height); + DECLARE_GROB_INTERFACE (); protected: virtual void discretionary_processing (); void copy_breakable_items (); - virtual SCM do_derived_mark () const; -}; + virtual void derived_mark () const; + bool cached_pure_height_valid_; + Interval cached_pure_height_; +}; +Interval_t spanned_time_interval (Item *l, Item *r); #endif