]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/item.cc
release: 1.3.39
[lilypond.git] / lily / item.cc
index 5417dae3d4fe6c51e3580aade0061ad01e521009..0458144c3513ced1cc671d0b7526889ae7eccf20 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "dimension-cache.hh"
@@ -19,6 +19,17 @@ Item::Item ()
   broken_to_drul_[LEFT] = broken_to_drul_[RIGHT]=0;
 }
 
+/**
+   Item copy ctor.  Copy nothing: everything should be a elt property
+   or a special purpose poitner (such as broken_to_drul_[]) */
+Item::Item (Item const &s)
+  : Score_element (s)
+{
+  broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] =0;
+}
+
+
+
 bool
 Item::breakable_b () const
 {
@@ -26,22 +37,14 @@ Item::breakable_b () const
     return false;
   
   Item * i  =dynamic_cast<Item*> (parent_l (X_AXIS));
-  return (i) ?  i->breakable_b () : get_elt_property( "breakable") != SCM_UNDEFINED;
-}
-
-Real 
-Item::hpos_f() const
-{
-  return relative_coordinate (0, X_AXIS);
+  return (i) ?  i->breakable_b () : to_boolean (get_elt_property( "breakable"));
 }
 
 Line_of_score *
 Item::line_l() const
 {
   Score_element *g = parent_l (X_AXIS);
-  if (!g)
-    return 0;
-  return dynamic_cast<Score_element *> (g)-> line_l ();
+  return g ?  g->line_l () : 0;
 }
 
 
@@ -72,12 +75,12 @@ void
 Item::try_visibility_lambda ()
 {
   SCM vis = remove_elt_property ("visibility-lambda");
-  if (vis != SCM_UNDEFINED)
+  if (gh_procedure_p (vis))
     {
       SCM args = scm_listify (gh_int2scm (break_status_dir ()), SCM_UNDEFINED);
       SCM result = gh_apply (vis, args);
-      int trans = gh_scm2bool (gh_car (result));
-      int empty = gh_scm2bool (gh_cdr (result));
+      bool trans = gh_scm2bool (gh_car (result));
+      bool empty = gh_scm2bool (gh_cdr (result));
 
       if (empty)
        {
@@ -148,27 +151,13 @@ Item::find_broken_piece (Direction d) const
   Item * me = (Item *) (this); 
   if (!d)
     return me;
-  else 
+  else if (breakable_b ())
     {
       me->do_break ();
       return dynamic_cast<Item*> (broken_to_drul_[d]);
     }
-}
-
-
-
-bool
-Item::broken_original_b () const
-{
-  return broken_to_drul_[LEFT] || broken_to_drul_[RIGHT];
-}
-
-int
-Item::left_right_compare(Item const *l, Item const *r)
-{
-  Paper_column *p1 = l->column_l ();
-  Paper_column* p2 = r->column_l ();
-  return p1->rank_i () - p2->rank_i ();
+  else
+    return 0;
 }
 
 Paper_column *
@@ -177,12 +166,6 @@ Item::column_l () const
   return dynamic_cast<Item*> (parent_l (X_AXIS))->column_l ();
 }
 
-Item::Item (Item const &s)
-  : Score_element (s)
-{
-  broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] =0;
-}
-
 Direction
 Item::break_status_dir () const
 {