/*
- fingering-engraver.cc -- implement New_fingering_engraver
+ This file is part of LilyPond, the GNU music typesetter.
- source file of the GNU LilyPond music typesetter
+ Copyright (C) 1998--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
- (c) 1998--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ 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 "engraver.hh"
{
inf.grob ()->set_property ("style", ly_symbol2scm ("harmonic"));
Grob *d = unsmob_grob (inf.grob ()->get_object ("dot"));
- if (d)
+ if (d && !to_boolean (get_property ("harmonicDots")))
d->suicide ();
}
}
void
New_fingering_engraver::add_script (Grob *head,
Stream_event *event,
- Stream_event *note)
+ Stream_event * /* note */)
{
- (void) note;
-
Finger_tuple ft;
Grob *g = make_item ("Script", event->self_scm ());
Grob *f = ft.script_;
f->set_parent (ft.head_, X_AXIS);
f->set_parent (ft.head_, Y_AXIS);
-
+ f->set_property ("avoid-slur", SCM_BOOL_F);
if (hordir == LEFT
&& unsmob_grob (ft.head_->get_object ("accidental-grob")))
Side_position_interface::add_support (f,
unsmob_grob (ft.head_->get_object ("accidental-grob")));
+ else if (unsmob_grob (ft.head_->get_object ("dot")))
+ Side_position_interface::add_support (f,
+ unsmob_grob (ft.head_->get_object ("dot")));
Self_alignment_interface::set_align_self (f, Y_AXIS);
Self_alignment_interface::set_center_parent (f, Y_AXIS);
f->set_property ("direction", scm_from_int (hordir));
}
- int finger_prio = 200;
-
Direction d = DOWN;
Drul_array< vector<Finger_tuple> > vertical (down, up);
do
{
Finger_tuple ft = vertical[d][i];
Grob *f = ft.script_;
+ int finger_prio = robust_scm2int (f->get_property ("script-priority"), 200);
f->set_parent (ft.head_, X_AXIS);
f->set_property ("script-priority",
scm_from_int (finger_prio + d * ft.position_));
void
New_fingering_engraver::stop_translation_timestep ()
{
- position_all();
+ position_all ();
stem_ = 0;
heads_.clear ();
}
ADD_ACKNOWLEDGER (New_fingering_engraver, stem);
ADD_TRANSLATOR (New_fingering_engraver,
- /* doc */ "Create fingering-scripts for notes in a new chord. "
- "This engraver is ill-named, since it "
- "also takes care of articulations and harmonic note heads",
+ /* doc */
+ "Create fingering scripts for notes in a new chord. This"
+ " engraver is ill-named, since it also takes care of"
+ " articulations and harmonic note heads.",
+
/* create */
"Fingering "
"StringNumber "
"StrokeFinger "
- "Script "
- ,
+ "Script ",
+
/* read */
-
"fingeringOrientations "
+ "harmonicDots "
"strokeFingerOrientations "
- "stringNumberOrientations "
- ,
+ "stringNumberOrientations ",
- /* write */ "");
+ /* write */
+ ""
+ );