]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/accidental-placement.cc
* input/regression/beam-quanting-horizontal.ly: update texidoc
[lilypond.git] / lily / accidental-placement.cc
index c05932ecee0e40a62f2a112858239666bc353b31..20cff55c0e447bd89c921ae4c8169b2182985c11 100644 (file)
@@ -3,7 +3,7 @@ accidental-placement.cc --  implement Accidental_placement
 
 source file of the GNU LilyPond music typesetter
 
-(c) 2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+(c) 2002--2003 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
  */
 
@@ -20,22 +20,6 @@ source file of the GNU LilyPond music typesetter
 #include "note-collision.hh"
 #include "accidental-interface.hh"
 
-/*
-  Hmm. why not group-extent? 
- */
-MAKE_SCHEME_CALLBACK(Accidental_placement,extent_callback, 2);
-SCM
-Accidental_placement::extent_callback(SCM s, SCM axis)
-{
-  Grob * me =unsmob_grob (s);
-  Axis a = Axis (gh_scm2int (axis));
-
-  assert (a == X_AXIS);
-
-  SCM w = position_accidentals (me);
-  return w;
-}
-
 MAKE_SCHEME_CALLBACK(Accidental_placement,alignment_callback, 2);
 SCM
 Accidental_placement::alignment_callback(SCM s, SCM )
@@ -49,7 +33,7 @@ Accidental_placement::alignment_callback(SCM s, SCM )
       position_accidentals (par);
     }
 
-  return gh_int2scm (0);
+  return scm_int2num (0);
 }
 
 
@@ -70,10 +54,10 @@ Accidental_placement::add_accidental (Grob* me, Grob* a)
 
   Pitch *p= unsmob_pitch (mcause->get_mus_property ("pitch"));
 
-  int n = p->notename_i_;
+  int n = p->get_notename ();
 
-  SCM accs = me->get_grob_property ("accidentals");
-  SCM key = gh_int2scm (n);
+  SCM accs = me->get_grob_property ("accidental-grobs");
+  SCM key = scm_int2num (n);
   SCM entry = scm_assq (key, accs);
   if (entry == SCM_BOOL_F)
     {
@@ -86,7 +70,7 @@ Accidental_placement::add_accidental (Grob* me, Grob* a)
 
   accs = scm_assq_set_x (accs,  key, entry);
 
-  me->set_grob_property ("accidentals", accs);
+  me->set_grob_property ("accidental-grobs", accs);
 }
 
 /*
@@ -97,7 +81,7 @@ Accidental_placement::split_accidentals (Grob * accs,
                                         Link_array<Grob> *break_reminder,
                                         Link_array<Grob> *real_acc)
 {
-  for (SCM acs =accs->get_grob_property ("accidentals"); gh_pair_p (acs);
+  for (SCM acs =accs->get_grob_property ("accidental-grobs"); gh_pair_p (acs);
        acs =gh_cdr (acs))
     for (SCM s = gh_cdar (acs); gh_pair_p (s); s = gh_cdr (s))
       {
@@ -111,8 +95,8 @@ Accidental_placement::split_accidentals (Grob * accs,
 }
 
 /*
-  Accidentals are special, because they appear and disappear before
-  and after ties at will.
+  Accidentals are special, because they appear and disappear after
+  ties at will.
 */
 Interval
 Accidental_placement::get_relevant_accidental_extent (Grob *me,
@@ -224,8 +208,6 @@ stagger_apes (Link_array<Accidental_placement_entry> *apes)
   
 
 /*
-  Return: width as SCM interval.
-
 
   This routine computes placements of accidentals. During
   add_accidental(), accidentals are already grouped by note, so that
@@ -256,7 +238,10 @@ stagger_apes (Link_array<Accidental_placement_entry> *apes)
 SCM
 Accidental_placement::position_accidentals (Grob * me)
 {
-  SCM accs = me->get_grob_property ("accidentals");
+  if (!me->live ())
+    return SCM_UNSPECIFIED;
+  
+  SCM accs = me->get_grob_property ("accidental-grobs");
 
   /*
     TODO: there is a bug in this code. If two accs are on the same
@@ -464,10 +449,10 @@ Accidental_placement::position_accidentals (Grob * me)
   for (int i = apes.size(); i--;)
     delete apes[i];
 
-  return scm_width;
+  return SCM_UNSPECIFIED;
 }
 
 ADD_INTERFACE(Accidental_placement,
              "accidental-placement-interface",
              "Take care of complex accidental collisions.",
-             "left-padding padding right-padding accidentals alignment-done")
+             "left-padding padding right-padding accidental-grobs alignment-done")