]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/accidental.cc
unsmob_pitch -> Pitch::unsmob and related
[lilypond.git] / lily / accidental.cc
index 0cf270f52aa60124a31fdb836fda1704fb71ec53..62f5235b1c4693eb6b4f0fdb8bfd45703e4bdb38 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 2001--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2001--2014 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
@@ -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<Item *> (unsmob_grob (smob));
+  Item *me = dynamic_cast<Item *> (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")))
     {
       /*