source file of the GNU LilyPond music typesetter
- (c) 1996--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1996--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
keyplacement by Mats Bengtsson
*/
+#include "accidental-interface.hh"
+#include "font-interface.hh"
+#include "international.hh"
#include "item.hh"
+#include "lookup.hh"
#include "output-def.hh"
-#include "font-interface.hh"
#include "staff-symbol-referencer.hh"
-#include "lookup.hh"
-#include "accidental-interface.hh"
struct Key_signature_interface
{
DECLARE_SCHEME_CALLBACK (print, (SCM));
- static bool has_interface (Grob *);
+ DECLARE_GROB_INTERFACE();
};
/*
SCM
Key_signature_interface::print (SCM smob)
{
- Item *me = dynamic_cast<Item*> (unsmob_grob (smob));
+ Item *me = dynamic_cast<Item *> (unsmob_grob (smob));
Real inter = Staff_symbol_referencer::staff_space (me) / 2.0;
SCM scm_style = me->get_property ("style");
- String style;
+ string style;
if (scm_is_symbol (scm_style))
- {
- style = ly_symbol2string (scm_style);
- }
+ style = ly_symbol2string (scm_style);
else
- {
- style = "";
- }
+ style = "";
SCM newas = me->get_property ("alteration-alist");
Stencil mol;
for (SCM s = newas; scm_is_pair (s); s = scm_cdr (s))
{
int alteration = scm_to_int (scm_cdar (s));
- String font_char
+ string font_char
= Accidental_interface::get_fontcharname (style, alteration);
Stencil acc (fm->find_by_name ("accidentals." + font_char));
if (acc.is_empty ())
- {
- me->warning (_f ("accidental `%s' not found", font_char));
- }
+ me->warning (_f ("accidental `%s' not found", font_char));
else
{
SCM what = scm_caar (s);
int pos = alteration_pos (what, alteration, c0p);
acc.translate_axis (pos * inter, Y_AXIS);
-
- /*
- The natural sign (unlike flat & sharp)
- has vertical edges on both sides. A little padding is
- needed to prevent collisions.
- */
+ /*
+ The natural sign (unlike flat & sharp)
+ has vertical edges on both sides. A little padding is
+ needed to prevent collisions.
+ */
Real padding = 0.0;
if (alteration == 0
&& last_pos < pos + 2
&& last_pos > pos - 6)
padding = 0.3;
-
+
mol.add_at_edge (X_AXIS, LEFT, acc, padding, 0);
last_pos = pos;
}
return mol.smobbed_copy ();
}
-ADD_INTERFACE (Key_signature_interface, "key-signature-interface",
+ADD_INTERFACE (Key_signature_interface,
"A group of accidentals, to be printed as signature sign.",
"style c0-position alteration-alist");