]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/item.hh
release: 1.3.28
[lilypond.git] / lily / include / item.hh
index dcbae6374fc33f0f35b615e3d9f02dc63b073217..c4b3dfbad3d6ca56efe42be084b1de3def0a7e2b 100644 (file)
@@ -3,18 +3,20 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1997 Han-Wen Nienhuys <hanwen@stack.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 #ifndef ITEM_HH
 #define ITEM_HH
 
 
-#include "boxes.hh"
+#include "box.hh"
 #include "string.hh"
-#include "score-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 virtual Score_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 ();
 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;
-    DECLARE_MY_RUNTIME_TYPEINFO;
-    virtual Line_of_score * line_l() const;
+  /*
+    ugh.
+   */
+  Drul_array<Item*> broken_to_drul_;
+
+
+public:
+
+  /// I am really to be broken?
+  bool breakable_b () const;
+  bool broken_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();
-    virtual void handle_prebroken_dependencies();
-    virtual void do_print()const;
-
-    void copy_breakable_items();
+  virtual void do_breakable_col_processing();
 
+  void copy_breakable_items();
 };