1 #include "font-interface.hh"
5 class Accidental_interface
8 DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM));
9 static bool has_interface (Grob*);
13 parenthesize (Grob*me, Molecule m)
15 Molecule open = Font_interface::get_default_font (me)->find_by_name (String ("accidentals-leftparen"));
16 Molecule close = Font_interface::get_default_font (me)->find_by_name (String ("accidentals-rightparen"));
17 m.add_at_edge (X_AXIS, LEFT, Molecule (open), 0);
18 m.add_at_edge (X_AXIS, RIGHT, Molecule (close), 0);
23 MAKE_SCHEME_CALLBACK (Accidental_interface,brew_molecule,1);
25 Accidental_interface::brew_molecule (SCM smob)
27 Grob *me = unsmob_grob (smob);
29 SCM scm_style = me->get_grob_property ("style");
32 if (gh_symbol_p (scm_style))
34 style = ly_scm2string (scm_symbol_to_string (scm_style));
39 preferably no name for the default style.
46 for (SCM s = me->get_grob_property ("accidentals");
47 gh_pair_p (s); s= gh_cdr (s))
49 SCM entry = gh_car (s);
52 Molecule acc (Font_interface::get_default_font (me)->
53 find_by_name (String ("accidentals-") +
55 to_str (gh_scm2int(entry))));
57 mol.add_at_edge (X_AXIS, RIGHT, acc, 0.0);
60 if (to_boolean (me->get_grob_property ("parenthesize")))
61 mol = parenthesize (me, mol);
63 return mol.smobbed_copy();
68 ADD_INTERFACE(Accidental_interface, "accidental-interface",
69 "a single accidental",
70 "accidentals parenthesize");