]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/item.hh
release: 1.3.13
[lilypond.git] / lily / include / item.hh
index 622f0f0dea50657e9bdc60f4e52a67950f1c849e..b9e2fd8130642db0d8057f07e13579105683d19d 100644 (file)
@@ -1,20 +1,22 @@
 /*
   item.hh -- declare Item
 
-  source file of the LilyPond music typesetter
+  source file of the GNU LilyPond music typesetter
 
-  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #ifndef ITEM_HH
 #define ITEM_HH
 
-#include "glob.hh"
-#include "boxes.hh"
+
+#include "box.hh"
 #include "string.hh"
-#include "staff-elem.hh"
+#include "score-element.hh"
+#include "drul-array.hh"
+#include "protected-scm.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. 
   
-*/
-class Item : public Staff_elem {
+
+  
+  @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 ();
+  Drul_array<Item*> broken_to_drul_;
+
+
 public:
-    /// indirection to the column it is in
-    PCol * pcol_l_;
-
-    /* *************** */
-    virtual Item *item() { return this; }
-    Item();
-    void do_print()const;
-    Real hpos_f() const;
-    NAME_MEMBERS(Item);
-    /**
-      
-      @return the line where this is in; 
-
-      PRE
-      Breaking calc has  to be finished
-     */
-    Line_of_score * line_l() const;
+
+  /// I am really to be broken?
+  bool breakable_b () const;
+  bool broken_b () const;
+  bool broken_original_b () const;
+  
+  Direction break_status_dir () const;
+  
+  Item * find_broken_piece (Direction) const;
+  Score_element * find_broken_piece (Line_of_score*) 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();
+
+  void copy_breakable_items();
 };
 
 
+
 #endif