source file of the GNU LilyPond music typesetter
- (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2008 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#include "clef.hh"
-#include "string.hh"
-#include "stencil.hh"
-#include "item.hh"
#include "font-interface.hh"
+#include "international.hh"
+#include "item.hh"
+#include "stencil.hh"
-/*
- FIXME: should use symbol for #'style.
-*/
-MAKE_SCHEME_CALLBACK (Clef, before_line_breaking, 1);
+MAKE_SCHEME_CALLBACK (Clef, calc_glyph_name, 1);
SCM
-Clef::before_line_breaking (SCM smob)
+Clef::calc_glyph_name (SCM smob)
{
Item *s = unsmob_item (smob);
- SCM glyph = s->get_property ("glyph-name");
+ SCM glyph = s->get_property ("glyph");
- if (!scm_is_string (glyph))
- s->suicide ();
- else
+ if (scm_is_string (glyph))
{
- String str = ly_scm2string (glyph);
+ string str = ly_scm2string (glyph);
if (to_boolean (s->get_property ("non-default"))
&& s->break_status_dir () != RIGHT
&& !to_boolean (s->get_property ("full-size-change")))
{
str += "_change";
- s->set_property ("glyph-name", scm_makfrom0str (str.to_str0 ()));
}
+
+ return ly_string2scm (str);
}
+ s->suicide ();
return SCM_UNSPECIFIED;
}
if (!scm_is_string (glyph_scm))
return SCM_EOL;
- String glyph = String (ly_scm2string (glyph_scm));
+ string glyph = string (ly_scm2string (glyph_scm));
Font_metric *fm = Font_interface::get_default_font (me);
Stencil out = fm->find_by_name (glyph);
if (out.is_empty ())
- me->warning (_f ("clef `%s' not found", glyph.to_str0 ()));
+ me->warning (_f ("clef `%s' not found", glyph.c_str ()));
return out.smobbed_copy ();
}
-ADD_INTERFACE (Clef, "clef-interface",
- "A clef sign",
- "non-default full-size-change glyph-name");
+ADD_INTERFACE (Clef,
+ "A clef sign.",
+
+ /* properties */
+ "full-size-change "
+ "glyph "
+ "glyph-name "
+ "non-default "
+ );