X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fnew-fingering-engraver.cc;h=55ff41ed4fea519165cd4c19c4d49362427d2f74;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=b6275b07216cc598316508a4e43402c228ae35aa;hpb=bdf74886dc9bcaf01c55677bf2086f4b76a7ef8c;p=lilypond.git diff --git a/lily/new-fingering-engraver.cc b/lily/new-fingering-engraver.cc index b6275b0721..55ff41ed4f 100644 --- a/lily/new-fingering-engraver.cc +++ b/lily/new-fingering-engraver.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2012 Han-Wen Nienhuys + Copyright (C) 1998--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -99,7 +99,7 @@ New_fingering_engraver::acknowledge_rhythmic_head (Grob_info inf) for (SCM s = arts; scm_is_pair (s); s = scm_cdr (s)) { - Stream_event *ev = unsmob_stream_event (scm_car (s)); + Stream_event *ev = Stream_event::unsmob (scm_car (s)); if (!ev) continue; @@ -132,7 +132,7 @@ New_fingering_engraver::acknowledge_rhythmic_head (Grob_info inf) else if (ev->in_event_class ("harmonic-event")) { inf.grob ()->set_property ("style", ly_symbol2scm ("harmonic")); - Grob *d = unsmob_grob (inf.grob ()->get_object ("dot")); + Grob *d = Grob::unsmob (inf.grob ()->get_object ("dot")); if (d && !to_boolean (get_property ("harmonicDots"))) d->suicide (); } @@ -194,8 +194,12 @@ New_fingering_engraver::position_scripts (SCM orientations, vector *scripts) { for (vsize i = 0; i < scripts->size (); i++) - if (stem_ && to_boolean (scripts->at (i).script_->get_property ("add-stem-support"))) - Side_position_interface::add_support (scripts->at (i).script_, stem_); + if (stem_) + { + Side_position_interface::add_support (scripts->at (i).script_, stem_); + if (Grob *flag = Grob::unsmob (stem_->get_object ("flag"))) + Side_position_interface::add_support (scripts->at (i).script_, flag); + } /* This is not extremely elegant, but we have to do a little @@ -277,23 +281,21 @@ New_fingering_engraver::position_scripts (SCM orientations, f->set_parent (ft.head_, Y_AXIS); f->set_property ("avoid-slur", ly_symbol2scm ("inside")); if (hordir == LEFT - && unsmob_grob (ft.head_->get_object ("accidental-grob"))) + && Grob::is_smob (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"))) + Grob::unsmob (ft.head_->get_object ("accidental-grob"))); + else if (Grob::is_smob (ft.head_->get_object ("dot"))) Side_position_interface::add_support (f, - unsmob_grob (ft.head_->get_object ("dot"))); + Grob::unsmob (ft.head_->get_object ("dot"))); - Self_alignment_interface::set_align_self (f, Y_AXIS); - Self_alignment_interface::set_center_parent (f, Y_AXIS); + Self_alignment_interface::set_aligned_on_parent (f, Y_AXIS); Side_position_interface::set_axis (f, X_AXIS); f->set_property ("direction", scm_from_int (hordir)); } - Direction d = DOWN; Drul_array< vector > vertical (down, up); - do + for (DOWN_and_UP (d)) { for (vsize i = 0; i < vertical[d].size (); i++) { @@ -304,14 +306,12 @@ New_fingering_engraver::position_scripts (SCM orientations, f->set_property ("script-priority", scm_from_int (finger_prio + d * ft.position_)); - Self_alignment_interface::set_align_self (f, X_AXIS); - Self_alignment_interface::set_center_parent (f, X_AXIS); + Self_alignment_interface::set_aligned_on_parent (f, X_AXIS); Side_position_interface::set_axis (f, Y_AXIS); f->set_property ("direction", scm_from_int (d)); } } - while (flip (&d) != DOWN); } void