]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/grace-align-item.cc
release: 1.3.109
[lilypond.git] / lily / grace-align-item.cc
index 2ae9d267e9146c6cbdd3e0861664b689defdf512..f671784ac9416e6ec4773b9f3fd8aa996696d416 100644 (file)
@@ -3,38 +3,44 @@
   
   source file of the GNU LilyPond music typesetter
   
-  (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1999--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
 
 #include "grace-align-item.hh"
-#include "lookup.hh"
+#include "align-interface.hh"
+
 #include "paper-column.hh"
 #include "paper-def.hh"
 
-Grace_align_item::Grace_align_item ()
+MAKE_SCHEME_CALLBACK(Grace_align_item,before_line_breaking,1);
+SCM
+Grace_align_item::before_line_breaking (SCM smob)
 {
-  set_elt_property ("stacking-dir", gh_int2scm (RIGHT));
-  set_axis (X_AXIS);
+  Grob*me = unsmob_element (smob);
+
+  SCM space = me->get_grob_property ("horizontal-space");
+  me->set_grob_property ("threshold",
+                       gh_cons (space,
+                                gh_double2scm (infinity_f)));
+  dynamic_cast<Item*>(me)->column_l ()->set_grob_property ("contains-grace", SCM_BOOL_T);
+
+  return SCM_UNSPECIFIED;
 }
-  
+
 void
-Grace_align_item::before_line_breaking ()
+Grace_align_item::set_interface (Grob*me)
 {
-  Real nhw = // lookup_l ()->notehead (2, "").dim_[X_AXIS].length();
-    paper_l ()->get_var ("quartwidth");
-  
-  threshold_interval_[MIN] = nhw* 1.5;
-  column_l ()->set_elt_property ("contains-grace", SCM_BOOL_T);
-
-  
-  Axis_align_item::before_line_breaking ();
-  //  translate_axis (-0.5* nhw, X_AXIS); // ugh.
+  me->set_interface (ly_symbol2scm ("grace-align-interface"));
+  me->set_grob_property ("stacking-dir", gh_int2scm (RIGHT));
+  Align_interface::set_interface(me);
+  Align_interface::set_axis (me,X_AXIS);
 }
 
 
-void
-Grace_align_item::do_add_processing ()
+
+bool
+Grace_align_item::has_interface (Grob*m)
 {
+  return m&& m->has_interface (ly_symbol2scm ("grace-align-interface"));
 }
-