X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Faccidental.cc;h=62f5235b1c4693eb6b4f0fdb8bfd45703e4bdb38;hb=5bbfc22fce036b9b69df5e420de93e11da23c05e;hp=0cf270f52aa60124a31fdb836fda1704fb71ec53;hpb=f0fe9c843e926066299c1f9a33004649f42e1f24;p=lilypond.git diff --git a/lily/accidental.cc b/lily/accidental.cc index 0cf270f52a..62f5235b1c 100644 --- a/lily/accidental.cc +++ b/lily/accidental.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 2001--2012 Han-Wen Nienhuys + Copyright (C) 2001--2014 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 @@ -48,7 +48,7 @@ parenthesize (Grob *me, Stencil m) static SCM get_extent (Grob *me, Axis a) { - Stencil *s = unsmob_stencil (Accidental_interface::get_stencil (me)); + Stencil *s = Stencil::unsmob (Accidental_interface::get_stencil (me)); if (s) return ly_interval2scm (s->extent (a)); @@ -59,21 +59,21 @@ MAKE_SCHEME_CALLBACK (Accidental_interface, height, 1); SCM Accidental_interface::height (SCM smob) { - return get_extent (unsmob_grob (smob), Y_AXIS); + return get_extent (Grob::unsmob (smob), Y_AXIS); } MAKE_SCHEME_CALLBACK (Accidental_interface, width, 1); SCM Accidental_interface::width (SCM smob) { - return get_extent (unsmob_grob (smob), X_AXIS); + return get_extent (Grob::unsmob (smob), X_AXIS); } MAKE_SCHEME_CALLBACK (Accidental_interface, horizontal_skylines, 1); SCM Accidental_interface::horizontal_skylines (SCM smob) { - Grob *me = unsmob_grob (smob); + Grob *me = Grob::unsmob (smob); if (!me->is_live ()) return Skyline_pair ().smobbed_copy (); @@ -82,15 +82,15 @@ Accidental_interface::horizontal_skylines (SCM smob) * before line breaking. It is therefore `unpure' (c). * We use the more basic get_stencil. */ - Stencil *my_stencil = unsmob_stencil (get_stencil (me)); + Stencil *my_stencil = Stencil::unsmob (get_stencil (me)); + if (!my_stencil) + return Skyline_pair ().smobbed_copy (); + Skyline_pair *sky = Skyline_pair::unsmob (Stencil::skylines_from_stencil (my_stencil->smobbed_copy (), 0.0, Y_AXIS)); - if (!sky) - return Skyline_pair ().smobbed_copy (); - SCM alist = me->get_property ("glyph-name-alist"); SCM alt = me->get_property ("alteration"); string glyph_name = robust_scm2string (ly_assoc_get (alt, alist, SCM_BOOL_F), @@ -120,16 +120,16 @@ MAKE_SCHEME_CALLBACK (Accidental_interface, pure_height, 3); SCM Accidental_interface::pure_height (SCM smob, SCM start_scm, SCM) { - Item *me = dynamic_cast (unsmob_grob (smob)); + Item *me = dynamic_cast (Grob::unsmob (smob)); int start = scm_to_int (start_scm); int rank = me->get_column ()->get_rank (); if (to_boolean (me->get_property ("forced")) - || !unsmob_grob (me->get_object ("tie")) + || !Grob::unsmob (me->get_object ("tie")) || (rank == start + 1 && /* we are at the start of a line */ !to_boolean (me->get_property ("hide-tied-accidental-after-break")))) { - Stencil *s = unsmob_stencil (get_stencil (me)); + Stencil *s = Stencil::unsmob (get_stencil (me)); if (s) return ly_interval2scm (s->extent (Y_AXIS)); } @@ -141,8 +141,8 @@ MAKE_SCHEME_CALLBACK (Accidental_interface, print, 1); SCM Accidental_interface::print (SCM smob) { - Grob *me = unsmob_grob (smob); - Grob *tie = unsmob_grob (me->get_object ("tie")); + Grob *me = Grob::unsmob (smob); + Grob *tie = Grob::unsmob (me->get_object ("tie")); if (tie && (to_boolean (me->get_property ("hide-tied-accidental-after-break")) @@ -163,15 +163,17 @@ Accidental_interface::get_stencil (Grob *me) SCM alist = me->get_property ("glyph-name-alist"); SCM alt = me->get_property ("alteration"); SCM glyph_name = ly_assoc_get (alt, alist, SCM_BOOL_F); + Stencil mol; if (!scm_is_string (glyph_name)) { me->warning (_f ("Could not find glyph-name for alteration %s", ly_scm_write_string (alt).c_str ())); - return SCM_EOL; + mol = fm->find_by_name ("noteheads.s1cross"); } + else + mol = fm->find_by_name (ly_scm2string (glyph_name)); - Stencil mol (fm->find_by_name (ly_scm2string (glyph_name))); if (to_boolean (me->get_property ("restore-first"))) { /*