]> git.donarmstrong.com Git - lilypond.git/blob - lily/grace-align-item.cc
patch::: 1.5.0.jcn1
[lilypond.git] / lily / grace-align-item.cc
1 /*   
2   grace-align-item.cc --  implement Grace_align_item
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 1999--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7   
8  */
9
10 #include "grace-align-item.hh"
11 #include "align-interface.hh"
12
13 #include "paper-column.hh"
14 #include "paper-def.hh"
15
16 MAKE_SCHEME_CALLBACK (Grace_align_item,before_line_breaking,1);
17 SCM
18 Grace_align_item::before_line_breaking (SCM smob)
19 {
20   Grob*me = unsmob_grob (smob);
21
22   SCM space = me->get_grob_property ("horizontal-space");
23   me->set_grob_property ("threshold",
24                         gh_cons (space,
25                                  gh_double2scm (infinity_f)));
26   dynamic_cast<Item*> (me)->column_l ()->set_grob_property ("contains-grace", SCM_BOOL_T);
27
28   return SCM_UNSPECIFIED;
29 }
30
31 void
32 Grace_align_item::set_interface (Grob*me)
33 {
34   me->set_interface (ly_symbol2scm ("grace-align-interface"));
35   me->set_grob_property ("stacking-dir", gh_int2scm (RIGHT));
36   Align_interface::set_interface (me);
37   Align_interface::set_axis (me,X_AXIS);
38 }
39
40
41
42 bool
43 Grace_align_item::has_interface (Grob*m)
44 {
45   return m&& m->has_interface (ly_symbol2scm ("grace-align-interface"));
46 }