]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/ambitus.cc
2003 -> 2004
[lilypond.git] / lily / ambitus.cc
index 8b5cf38395ba92d6080e997ca216a4194c391939..8fe9770d1c8c3c68fa10ff6f23457bfb33412e9c 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (C) 2002 Juergen Reuter <reuter@ipd.uka.de>
+  (c) 2002--2004 Juergen Reuter <reuter@ipd.uka.de>
 */
 
 #include "staff-symbol-referencer.hh"
  */
 
 /**
- * Given a pitch and a key_signature, decide what accidentals to show.
- *
- * Possible return values:
- *
- * 0: do not show any accidental
- * 1: show pitch->alteration_ only
- * 2: show pitch->alteration_, preceded by a natural sign
+  Given a pitch and a key_signature, decide what accidentals to show.
+  Possible return values:
+  0: do not show any accidental
+  1: show pitch->alteration_ only
+  2: show pitch->get_alteration, preceded by a natural sign
+
+  UGH: code duplication! See accidental-engraver.
  */
 static int
 number_accidentals (SCM key_signature, Pitch *pitch,
                    bool ignore_octave_b, bool force_accidental)
 {
-  int notename = pitch->notename_;
-  int octave = pitch->octave_;
-  int alteration = pitch->alteration_;
+  int notename = pitch->get_notename ();
+  int octave = pitch->get_octave();
+  int alteration = pitch->get_alteration();
 
   if (force_accidental) // ignore key signature
     return 1;
 
+  
 #if DEBUG_AMBITUS
   scm_display (key_signature, scm_current_output_port ());
 #endif
 
   SCM prev;
   if (ignore_octave_b)
-    prev = ly_assoc_cdr (gh_int2scm (notename), key_signature);
+    prev = ly_assoc_cdr (scm_int2num (notename), key_signature);
   else
-    prev = gh_assoc (gh_cons (gh_int2scm (octave), gh_int2scm (notename)),
+    prev = scm_assoc (gh_cons (scm_int2num (octave), scm_int2num (notename)),
                     key_signature);
 
   /* should really be true unless prev == SCM_BOOL_F */
@@ -78,9 +82,9 @@ number_accidentals (SCM key_signature, Pitch *pitch,
 
   /* If an accidental was not found */
   if (prev == SCM_BOOL_F)
-    prev = gh_assoc (gh_int2scm (notename), key_signature);
+    prev = scm_assoc (scm_int2num (notename), key_signature);
 
-  SCM prev_acc = (prev == SCM_BOOL_F) ? gh_int2scm (0) : ly_cdr (prev);
+  SCM prev_acc = (prev == SCM_BOOL_F) ? scm_int2num (0) : ly_cdr (prev);
   int sig_alteration = gh_number_p (prev_acc) ? gh_scm2int (prev_acc) : 0;
 
   if (alteration == sig_alteration) // no accidental at all needed
@@ -101,14 +105,14 @@ add_accidentals (Item *me, Molecule *head, int num_acc,
 {
   if (!num_acc)
     return;
-  if (pitch->alteration_)
+  if (pitch->get_alteration())
     {
       Molecule accidental (Font_interface::get_default_font (me)->
                           find_by_name (String ("accidentals-") +
                                         accidentals_style +
-                                        to_string (pitch->alteration_)));
+                                        to_string (pitch->get_alteration ())));
       accidental.translate_axis (yoffs, Y_AXIS);
-      head->add_at_edge (X_AXIS,  LEFT, accidental, 0.1);
+      head->add_at_edge (X_AXIS,  LEFT, accidental, 0.1, 0);
     }
   if (num_acc == 2)
     {
@@ -117,7 +121,7 @@ add_accidentals (Item *me, Molecule *head, int num_acc,
                                      accidentals_style +
                                      to_string ("0")));
       natural.translate_axis (yoffs, Y_AXIS);
-      head->add_at_edge (X_AXIS,  LEFT, natural, 0.1);
+      head->add_at_edge (X_AXIS,  LEFT, natural, 0.1, 0);
     }
 }
 
@@ -133,19 +137,22 @@ Ambitus::brew_molecule (SCM smob)
   if (gh_symbol_p (scm_note_head_style))
     {
       String note_head_style =
-       ly_scm2string (scm_symbol_to_string (scm_note_head_style));
+       ly_symbol2string (scm_note_head_style);
     }
   else
     {
       note_head_style = String ("noteheads-2");
     }
-  if (Font_interface::get_default_font (me)->find_by_name (note_head_style).empty_b ())
+  if (Font_interface::get_default_font (me)->find_by_name (note_head_style).is_empty ())
     {
       String message = "Ambitus: no such note head: `" + note_head_style + "'";
       me->warning (_ (message.to_str0 ()));
       return SCM_EOL;
     }
 
+  /*
+    FIXME: Use positions. 
+   */
   int p_min, p_max;
   Pitch *pitch_min = unsmob_pitch (me->get_grob_property ("pitch-min"));
   if (!pitch_min)
@@ -172,7 +179,7 @@ Ambitus::brew_molecule (SCM smob)
       me->programming_error ("Ambitus: reverse range");
     }
 
-  SCM c0 = me->get_grob_property ("centralCPosition");
+  SCM c0 = me->get_grob_property ("c0-position");
   if (gh_number_p (c0))
     {
       p_min += gh_scm2int (c0);
@@ -191,12 +198,12 @@ Ambitus::brew_molecule (SCM smob)
   if (to_boolean (me->get_grob_property ("join-heads")) &&
       ((p_max - p_min) >= 3))
     {
-      Real linethickness = me->get_paper ()->get_var ("linethickness");
-      Real blotdiameter = me->get_paper ()->get_var ("blotdiameter");
+      Real linethickness = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness"));
+      Real blotdiameter = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter"));
       Interval x_extent = 0.5 * Interval (-linethickness, +linethickness);
       Interval y_extent = 0.5 * Interval (p_min + 1.35, p_max - 1.35);
       Box line_box (x_extent, y_extent);
-      Molecule line = Lookup::roundfilledbox (line_box, blotdiameter);
+      Molecule line = Lookup::round_filled_box (line_box, blotdiameter);
       line.translate_axis (0.5 * head_min.extent (X_AXIS).length (), X_AXIS);
       molecule.add_molecule (line);
     }
@@ -210,22 +217,22 @@ Ambitus::brew_molecule (SCM smob)
   Molecule ledger_lines;
   int interspaces = Staff_symbol_referencer::line_count (me) - 1;
   ledger_lines =
-    Note_head::brew_ledger_lines (me, p_min, interspaces, l_extents, true);
+    Note_head::brew_ledger_lines (me, p_min, interspaces, l_extents, 0,true);
   ledger_lines.translate_axis (0.5 * p_min, Y_AXIS);
   molecule.add_molecule (ledger_lines);
   ledger_lines =
-    Note_head::brew_ledger_lines (me, p_max, interspaces, l_extents, true);
+    Note_head::brew_ledger_lines (me, p_max, interspaces, l_extents, 0, true);
   ledger_lines.translate_axis (0.5 * p_max, Y_AXIS);
   molecule.add_molecule (ledger_lines);
 
   // add accidentals
-  SCM key_signature = me->get_grob_property ("keySignature");
+  SCM key_signature = me->get_grob_property ("key-signature");
   SCM scm_accidentals_style = me->get_grob_property ("accidentals-style");
   String accidentals_style;
   if (gh_symbol_p (scm_accidentals_style))
     {
       accidentals_style =
-       ly_scm2string (scm_symbol_to_string (scm_accidentals_style));
+       ly_symbol2string (scm_accidentals_style);
     }
   else
     {
@@ -248,4 +255,4 @@ Ambitus::brew_molecule (SCM smob)
 
 ADD_INTERFACE (Ambitus, "ambitus-interface",
   "An ambitus represents the pitch range of a voice.",
-  "note-head-style join-heads");
+  "c0-position pitch-min pitch-max accidentals note-head-style join-heads");