OK, here it is, at last: the vertical alignment fix for clefs like
"G_8".

It's a crude fix, and I have a suspicion that doing someclef->extent()
does not produce an accurate measure of the clef's extent.  Also, I
haven't tested it very extensively, and "C_8" isn't very good
looking.  But that's a clef nobody uses, right?

-- 

Arvid

diff -urN ../lilypond-0.1.78/NEWS ./NEWS
--- ../lilypond-0.1.78/NEWS     Thu Jul  9 14:14:27 1998
+++ ./NEWS      Thu Jul  9 17:12:09 1998
@@ -1,3 +1,6 @@
+pl 78.ag1
+       - bf: moved octave "8" under clefs a bit up
+
 pl 77.hwn1
        - Key transposition (MB
        - move .dstreamrc to dstreamrc
diff -urN ../lilypond-0.1.78/VERSION ./VERSION
--- ../lilypond-0.1.78/VERSION  Thu Jul  9 12:58:25 1998
+++ ./VERSION   Thu Jul  9 17:10:15 1998
@@ -2,7 +2,7 @@
 MAJOR_VERSION=0
 MINOR_VERSION=1
 PATCH_LEVEL=78
-MY_PATCH_LEVEL=
+MY_PATCH_LEVEL=ag1
 
 # use the above to send patches, always empty for released version:
 # please don't move these comments up; the patch should fail if 
diff -urN ../lilypond-0.1.78/lily/clef-item.cc ./lily/clef-item.cc
--- ../lilypond-0.1.78/lily/clef-item.cc        Wed Jul  1 12:05:40 1998
+++ ./lily/clef-item.cc Thu Jul  9 17:07:53 1998
@@ -58,11 +58,16 @@
   Atom s = lookup_l ()->clef (t);
   Molecule*output = new Molecule (Atom (s));
   output->translate_axis (paper()->internote_f () * y_position_i_, Y_AXIS);
-  if (octave_dir_)
-    output->add_at_edge (Y_AXIS, 
-                        octave_dir_,
-                        Molecule(octave_marker_td_p_->get_atom(paper(), 
-                                                               CENTER)));
+  if (octave_dir_) {
+    Molecule octave_marker = Molecule(octave_marker_td_p_->get_atom(paper(), 
+                                                               CENTER));
+    Real offset = output->extent()[Y_AXIS][octave_dir_]
+                  - octave_marker.extent()[Y_AXIS][- octave_dir_];
+    if (octave_dir_ == DOWN) 
+      offset += octave_marker.extent()[Y_AXIS][UP] * 0.35 ;
+    octave_marker.translate_axis (offset, Y_AXIS);
+    output->add (octave_marker);
+  }
   return output;
 }
 

Reply via email to