/*
- mensural-ligature-engraver.cc -- implement Mensural_ligature_engraver
+ This file is part of LilyPond, the GNU music typesetter.
- source file of the GNU LilyPond music typesetter
-
- (c) 2002--2006 Juergen Reuter <reuter@ipd.uka.de>,
+ Copyright (C) 2002--2010 Juergen Reuter <reuter@ipd.uka.de>,
Pal Benko <benkop@freestart.hu>
+
+ LilyPond is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ LilyPond is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with LilyPond. If not, see <http://www.gnu.org/licenses/>.
*/
#include "coherent-ligature-engraver.hh"
* for example:
* Ockeghem: Missa Ecce ancilla domini, bassus part, end of Christe.
*
- * TODO: enhance robustness: in case of an illegal ligature (e.g. the
+ * TODO: enhance robustness: in case of an invalid ligature (e.g. the
* input specifies a ligature that contains a minima), automatically
* break the ligature into smaller, valid pieces. Such a piece may be
* a single note.
{
if (primitives.size () < 2)
{
- warning (_f ("ligature with less than 2 heads -> skipping"));
+ warning (_ ("ligature with less than 2 heads -> skipping"));
return;
}
int prev_pitch = 0;
if (!nr->in_event_class ("note-event"))
{
nr->origin ()->warning
- (_f ("cannot determine pitch of ligature primitive -> skipping"));
+ (_ ("cannot determine pitch of ligature primitive -> skipping"));
at_beginning = true;
continue;
}
{
// we can get here after invalid input
nr->origin ()->warning
- (_f ("single note ligature - skipping"));
+ (_ ("single note ligature - skipping"));
break;
}
prev_semibrevis = prev_brevis_shape = false;
if (delta_pitch == 0)
{
nr->origin ()->warning
- (_f ("prime interval within ligature -> skipping"));
+ (_ ("prime interval within ligature -> skipping"));
at_beginning = true;
primitive->set_property ("primitive",
scm_from_int (MLP_NONE));
|| duration_log > 0)
{
nr->origin ()->warning
- (_f ("mensural ligature: duration none of Mx, L, B, S -> skipping"));
+ (_ ("mensural ligature: duration none of Mx, L, B, S -> skipping"));
primitive->set_property ("primitive",
scm_from_int (MLP_NONE));
at_beginning = true;
else
{
nr->origin ()->warning
- (_f ("semibrevis must be followed by another one -> skipping"));
+ (_ ("semibrevis must be followed by another one -> skipping"));
primitive->set_property ("primitive",
scm_from_int (MLP_NONE));
at_beginning = true;
else if (duration_log == 0)
{
nr->origin ()->warning
- (_f ("semibreves can only appear at the beginning of a ligature,\n"
- "and there may be only zero or two of them"));
+ (_ ("semibreves can only appear at the beginning of a ligature,\n"
+ "and there may be only zero or two of them"));
primitive->set_property ("primitive",
scm_from_int (MLP_NONE));
at_beginning = true;
else
{
nr->origin ()->warning
- (_f ("invalid ligatura ending:\n"
- "when the last note is a descending brevis,\n"
- "the penultimate note must be another one,\n"
- "or the ligatura must be LB or SSB"));
+ (_ ("invalid ligatura ending:\n"
+ "when the last note is a descending brevis,\n"
+ "the penultimate note must be another one,\n"
+ "or the ligatura must be LB or SSB"));
primitive->set_property ("primitive", scm_from_int (MLP_NONE));
break;
}
// instead of number 6
// the legth of the longa stem should be queried something like
// Font_interface::get_default_font (ligature)->find_by_name
- // ("noteheads.s-2mensural").extent (Y_AXIS).length ()
+ // ("noteheads.sM2mensural").extent (Y_AXIS).length ()
}
prev_primitive->set_property ("join-right-amount",
scm_from_int (delta_pitch));
Real head_width
= Font_interface::get_default_font (ligature)->
- find_by_name ("noteheads.s-1mensural").extent (X_AXIS).length ();
+ find_by_name ("noteheads.sM1mensural").extent (X_AXIS).length ();
Real flexa_width
= robust_scm2double (ligature->get_property ("flexa-width"), 2);
Real maxima_head_width
= Font_interface::get_default_font (ligature)->
- find_by_name ("noteheads.s-1neomensural").extent (X_AXIS).length ();
+ find_by_name ("noteheads.sM1neomensural").extent (X_AXIS).length ();
flexa_width *= Staff_symbol_referencer::staff_space (ligature);
scm_from_double (flexa_width));
break;
default:
- programming_error (_f ("unexpected case fall-through"));
+ programming_error (_ ("unexpected case fall-through"));
break;
}
}
if (Rhythmic_head::dot_count (current) > 0)
// Move dots above/behind the ligature.
{
- if (i < primitives.size () - 1)
+ if (i + 1 < primitives.size ())
// dot in the midst => move above head
{
// FIXME: Amount of vertical dot-shift should depend on
ADD_ACKNOWLEDGER (Mensural_ligature_engraver, rest);
ADD_ACKNOWLEDGER (Mensural_ligature_engraver, note_head);
+
ADD_TRANSLATOR (Mensural_ligature_engraver,
- /* doc */ "Handles Mensural_ligature_events by glueing special ligature heads together.",
- /* create */ "MensuralLigature",
- /* read */ "",
- /* write */ "");
+ /* doc */
+ "Handle @code{Mensural_ligature_events} by glueing special"
+ " ligature heads together.",
+
+ /* create */
+ "MensuralLigature ",
+
+ /* read */
+ "",
+
+ /* write */
+ ""
+ );