]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/stem-info.cc
release: 0.1.48
[lilypond.git] / lily / stem-info.cc
index 5e446b665e627809dc424b4aa7341c1b5008952b..34aadfc976d97f32723a55776f5e433f20e33d31 100644 (file)
@@ -11,7 +11,7 @@
 #include "dimen.hh"
 #include "misc.hh"
 #include "debug.hh"
-#include "symbol.hh"
+#include "atom.hh"
 #include "stem.hh"
 #include "paper-def.hh"
 #include "lookup.hh"
@@ -23,9 +23,9 @@ Stem_info::Stem_info ()
 
 Stem_info::Stem_info (Stem const *s)
 {
-  x = s->hpos_f();
+  x = s->hpos_f ();
   dir_ = s->dir_;
-  beams_i_ = intlog2(s->flag_i_) - 2;
+  beams_i_ =  0 >? (abs (s->flag_i_) - 2);
 
   /*
     [todo] 
@@ -44,22 +44,21 @@ Stem_info::Stem_info (Stem const *s)
        
     */
 
-  Real notehead_y = s->paper()->interline_f ();
-  // huh? why do i need the / 2
-  //    Real interbeam_f = s->paper()->interbeam_f ();
-  Real interbeam_f = s->paper()->interbeam_f () / 2;
+  Real internote_f = s->paper ()->internote_f ();
+  Real interline_f = 2 * internote_f;
+  Real notehead_y = interline_f;
+  // huh? why do i seem to need the / 2 ?
+  Real interbeam_f = s->paper ()->interbeam_f ();
+  // Real interbeam_f = s->paper ()->interbeam_f () / 2;
+  // perhaps bo dim (y) = internote?
          
-  /* well eh, huh?
-     idealy_f_  = dir_ * s->stem_start_f() + beams_i_ * interbeam_f; 
-     if (beams_i_ < 3)
+   idealy_f_  = dir_ * s->stem_begin_f () + beams_i_ * interbeam_f; 
+   if (beams_i_ < 3)
      idealy_f_ += 2 * interline_f;
-     else
+   else
      idealy_f_ += 1.5 * interline_f;
-     */
-
-  idealy_f_  = dir_ * s->stem_end_f();
-
-  miny_f_ = dir_ * s->stem_start_f() + notehead_y + beams_i_ * interbeam_f;
+   idealy_f_ /= internote_f;
+  miny_f_ = dir_ * s->stem_begin_f () + 2 + beams_i_ * interbeam_f / internote_f;
 
   idealy_f_ =  miny_f_ >? idealy_f_;
   //    assert (miny_f_ <= idealy_f_);