]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/key-item.cc
release: 1.1.53
[lilypond.git] / lily / key-item.cc
index 152148dac9be9aaa13e5c958db85f70098aa51f0..d11424b41edaae8cbdcfcb2e51bd5c711b635626 100644 (file)
@@ -3,7 +3,7 @@
 
   source file of the GNU LilyPond music typesetter
 
-  (c) 1996, 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c) 1996, 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 
   keyplacement by Mats Bengtsson
 */
@@ -22,20 +22,25 @@ const int SHARP_TOP_PITCH=4; /*  ais and bis typeset in lower octave */
 Key_item::Key_item ()
 {
   multi_octave_b_ = false;
-  breakable_b_ =true;
-  default_b_ = false;
+  set_elt_property (breakable_scm_sym, SCM_BOOL_T);
   set_c_position (0);
 }
 
-void 
-Key_item::set_c_position (int c0)
+int
+Key_item::get_c_position () const
 {
-  c0_position = c0;
   // Find the c in the range -4 through 2
-  int from_bottom_pos = c0 + 4;        
+  int from_bottom_pos = c0_position_ + 4;      
   from_bottom_pos = from_bottom_pos%7;
   from_bottom_pos = (from_bottom_pos + 7)%7; // Precaution to get positive.
-  c_position  = from_bottom_pos - 4;
+  return from_bottom_pos - 4;
+}
+
+
+void 
+Key_item::set_c_position (int c0)
+{
+  c0_position_ = c0;
 }
 
 
@@ -59,16 +64,16 @@ Key_item::calculate_position(int p, int a) const
 {
   if (multi_octave_b_) 
     {
-      return p + c0_position;
+      return p + c0_position_;
     }
   else {
-    if ((a<0 && ((p>FLAT_TOP_PITCH) || (p+c_position>4)) && (p+c_position>1)) 
+    if ((a<0 && ((p>FLAT_TOP_PITCH) || (p+get_c_position ()>4)) && (p+get_c_position ()>1)) 
        ||
-       (a>0 && ((p>SHARP_TOP_PITCH) || (p+c_position>5)) && (p+c_position>2))) 
+       (a>0 && ((p>SHARP_TOP_PITCH) || (p+get_c_position ()>5)) && (p+get_c_position ()>2))) 
       {
        p -= 7; /* Typeset below c_position */
       }
-    return p + c_position;
+    return p + get_c_position ();
   }
 }
 
@@ -81,10 +86,10 @@ Molecule*
 Key_item::do_brew_molecule_p() const
 {
   Molecule*output = new Molecule;
-  Real inter = paper()->internote_f ();
+  Real inter = staff_line_leading_f ()/2.0;
   
   int j;
-  if ((break_status_dir_ == LEFT || break_status_dir_ == CENTER)
+  if ((break_status_dir () == LEFT || break_status_dir () == CENTER)
       || old_pitch_arr_.size ())
     {
       for (int i =0; i < old_pitch_arr_.size(); i++) 
@@ -120,25 +125,9 @@ Key_item::do_brew_molecule_p() const
       m.translate_axis (calculate_position(pitch_arr_[i], acc_arr_[i]) * inter, Y_AXIS);
       output->add_at_edge (X_AXIS, RIGHT, m, 0);
     }
-  if (pitch_arr_.size()) 
-    {
-      Molecule m (lookup_l ()->fill (Box (
-                                         Interval (0, paper()->note_width ()),
-                                         Interval (0,0))));
-      
-      output->add_at_edge (X_AXIS, RIGHT, m,0 );
-    }
+
   return output;
 }
 
 
 
-void 
-Key_item::do_pre_processing()
-{
-  if (default_b_) 
-    {
-      transparent_b_ = (break_status_dir() != RIGHT);
-      set_empty (transparent_b_);
-    }
-}