2 clef-item.cc -- implement Clef_item
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
12 #include "molecule.hh"
14 #include "font-interface.hh"
17 FIXME: should use symbol for #'style.
19 MAKE_SCHEME_CALLBACK(Clef
,before_line_breaking
,1);
21 Clef::before_line_breaking (SCM smob
)
23 Item
* s
= dynamic_cast<Item
*> (unsmob_grob (smob
));
25 SCM glyph
= s
->get_grob_property ("glyph-name");
27 if (gh_string_p (glyph
))
29 String str
= ly_scm2string (glyph
);
31 if (to_boolean (s
->get_grob_property ("non-default"))
32 && s
->break_status_dir() != RIGHT
33 && !to_boolean (s
->get_grob_property ("full-size-change")))
36 s
->set_grob_property ("glyph-name", ly_str02scm (str
.ch_C()));
42 return SCM_UNSPECIFIED
;
45 return SCM_UNSPECIFIED
;
49 Clef::has_interface (Grob
* me
)
51 return me
->has_interface (ly_symbol2scm ("clef-interface"));
56 Clef::set_interface (Grob
* me
)
58 me
->set_interface (ly_symbol2scm ("clef-interface"));
61 MAKE_SCHEME_CALLBACK(Clef
,brew_molecule
,1)
63 Clef::brew_molecule (SCM smob
)
65 Grob
* sc
= unsmob_grob (smob
);
66 SCM glyph
= sc
->get_grob_property ("glyph-name");
67 if (gh_string_p (glyph
))
69 return Font_interface::get_default_font (sc
)->find_by_name (String (ly_scm2string (glyph
))).smobbed_copy ();