X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmensural-ligature-engraver.cc;h=79b6ccdf2b474cd80b8f07d0b144842060526263;hb=75eebcb49e52d296b1da3e1074e0825d2c780db4;hp=bca756e2f394c7504f7097014c3f74be009352f5;hpb=17a0be44b562c72ccfebf2bef4a7a6fcc07bd02f;p=lilypond.git diff --git a/lily/mensural-ligature-engraver.cc b/lily/mensural-ligature-engraver.cc index bca756e2f3..79b6ccdf2b 100644 --- a/lily/mensural-ligature-engraver.cc +++ b/lily/mensural-ligature-engraver.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 2002--2005 Juergen Reuter , + (c) 2002--2006 Juergen Reuter , Pal Benko */ @@ -58,6 +58,8 @@ private: Mensural_ligature_engraver::Mensural_ligature_engraver () { + brew_ligature_primitive_proc = + Mensural_ligature::brew_ligature_primitive_proc; } Spanner * @@ -127,7 +129,7 @@ Mensural_ligature_engraver::transform_heads (Array primitives) (_f ("prime interval within ligature -> skipping")); at_beginning = true; primitive->set_property ("primitive", - scm_int2num (MLP_NONE)); + scm_from_int (MLP_NONE)); continue; } } @@ -138,7 +140,7 @@ Mensural_ligature_engraver::transform_heads (Array primitives) nr->origin ()->warning (_f ("mensural ligature: duration none of Mx, L, B, S -> skipping")); primitive->set_property ("primitive", - scm_int2num (MLP_NONE)); + scm_from_int (MLP_NONE)); at_beginning = true; continue; } @@ -154,7 +156,7 @@ Mensural_ligature_engraver::transform_heads (Array primitives) if (duration_log == 0) { primitive->set_property ("primitive", - scm_int2num (MLP_UP | MLP_BREVIS)); + scm_from_int (MLP_UP | MLP_BREVIS)); prev_semibrevis = prev_brevis_shape = true; general_case = false; } @@ -167,7 +169,7 @@ Mensural_ligature_engraver::transform_heads (Array primitives) int left_stem = duration_log == -1 ? MLP_DOWN : 0; primitive->set_property ("primitive", - scm_int2num (left_stem | MLP_BREVIS)); + scm_from_int (left_stem | MLP_BREVIS)); prev_brevis_shape = true; prev_semibrevis = general_case = false; } @@ -178,7 +180,7 @@ Mensural_ligature_engraver::transform_heads (Array primitives) prev_semibrevis = false; if (duration_log == 0) { - primitive->set_property ("primitive", scm_int2num (MLP_BREVIS)); + primitive->set_property ("primitive", scm_from_int (MLP_BREVIS)); general_case = false; } else @@ -186,7 +188,7 @@ Mensural_ligature_engraver::transform_heads (Array primitives) nr->origin ()->warning (_f ("semibrevis must be followed by another one -> skipping")); primitive->set_property ("primitive", - scm_int2num (MLP_NONE)); + scm_from_int (MLP_NONE)); at_beginning = true; continue; } @@ -198,7 +200,7 @@ Mensural_ligature_engraver::transform_heads (Array primitives) (_f ("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_int2num (MLP_NONE)); + scm_from_int (MLP_NONE)); at_beginning = true; continue; } @@ -212,11 +214,11 @@ Mensural_ligature_engraver::transform_heads (Array primitives) { prev_primitive->set_property ("primitive", - scm_int2num + scm_from_int (MLP_FLEXA | (scm_to_int (prev_primitive->get_property ("primitive")) & MLP_DOWN))); - primitive->set_property ("primitive", scm_int2num (MLP_NONE)); + primitive->set_property ("primitive", scm_from_int (MLP_NONE)); break; // no more notes, no join } else @@ -226,14 +228,14 @@ Mensural_ligature_engraver::transform_heads (Array primitives) "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_int2num (MLP_NONE)); + primitive->set_property ("primitive", scm_from_int (MLP_NONE)); break; } } // longa else if (duration_log == -2) { - primitive->set_property ("primitive", scm_int2num (MLP_BREVIS)); + primitive->set_property ("primitive", scm_from_int (MLP_BREVIS)); general_case = false; } // else maxima; fall through regular case below @@ -244,7 +246,7 @@ Mensural_ligature_engraver::transform_heads (Array primitives) static int const shape[3] = {MLP_MAXIMA, MLP_LONGA, MLP_BREVIS}; primitive->set_property ("primitive", - scm_int2num (shape[duration_log + 3])); + scm_from_int (shape[duration_log + 3])); prev_brevis_shape = duration_log == -1; } @@ -267,7 +269,7 @@ Mensural_ligature_engraver::transform_heads (Array primitives) // ("noteheads.s-2mensural").extent (Y_AXIS).length () } prev_primitive->set_property ("join-right-amount", - scm_int2num (delta_pitch)); + scm_from_int (delta_pitch)); // perhaps set add-join as well } at_beginning = false; @@ -298,7 +300,7 @@ Mensural_ligature_engraver::propagate_properties (Spanner *ligature, Real thickness = robust_scm2double (ligature->get_property ("thickness"), 1.4); thickness - *= ligature->get_layout ()->get_dimension (ly_symbol2scm ("linethickness")); + *= ligature->layout ()->get_dimension (ly_symbol2scm ("linethickness")); Real head_width = Font_interface::get_default_font (ligature)-> @@ -318,28 +320,28 @@ Mensural_ligature_engraver::propagate_properties (Spanner *ligature, Item *primitive = dynamic_cast (primitives[i].grob ()); int output = scm_to_int (primitive->get_property ("primitive")); primitive->set_property ("thickness", - scm_make_real (thickness)); + scm_from_double (thickness)); switch (output & MLP_ANY) { case MLP_NONE: primitive->set_property ("head-width", - scm_make_real (half_flexa_width)); + scm_from_double (half_flexa_width)); break; case MLP_BREVIS: case MLP_LONGA: primitive->set_property ("head-width", - scm_make_real (head_width)); + scm_from_double (head_width)); break; case MLP_MAXIMA: primitive->set_property ("head-width", - scm_make_real (maxima_head_width)); + scm_from_double (maxima_head_width)); break; case MLP_FLEXA: primitive->set_property ("head-width", - scm_make_real (half_flexa_width)); + scm_from_double (half_flexa_width)); primitive->set_property ("flexa-width", - scm_make_real (flexa_width)); + scm_from_double (flexa_width)); break; default: programming_error (_f ("unexpected case fall-through")); @@ -357,16 +359,12 @@ Mensural_ligature_engraver::fold_up_primitives (Array primitives) { Item *current = dynamic_cast (primitives[i].grob ()); if (i == 0) - { - first = current; - } + first = current; get_set_column (current, first->get_column ()); if (i > 0) - { - current->translate_axis (distance, X_AXIS); - } + current->translate_axis (distance, X_AXIS); distance += scm_to_double (current->get_property ("head-width")) @@ -383,10 +381,13 @@ Mensural_ligature_engraver::build_ligature (Spanner *ligature, fold_up_primitives (primitives); } +#include "translator.icc" + +ADD_ACKNOWLEDGER (Mensural_ligature_engraver, rest); +ADD_ACKNOWLEDGER (Mensural_ligature_engraver, note_head); ADD_TRANSLATOR (Mensural_ligature_engraver, - /* descr */ "Handles Mensural_ligature_events by glueing special ligature heads together.", - /* creats*/ "MensuralLigature", - /* accepts */ "ligature-event", - /* acks */ "note-head-interface rest-interface", - /* reads */ "", + /* doc */ "Handles Mensural_ligature_events by glueing special ligature heads together.", + /* create */ "MensuralLigature", + /* accept */ "ligature-event", + /* read */ "", /* write */ "");