]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/stem.cc
Merge branch 'lilypond/translation' of ssh://git.sv.gnu.org/srv/git/lilypond
[lilypond.git] / lily / stem.cc
index c66712fb2495dac98aeec001dfb1acf6d3e40ba2..074620e06956a9d8e304a33064509b24333fd015 100644 (file)
@@ -1,9 +1,7 @@
 /*
-  stem.cc -- implement Stem
+  This file is part of LilyPond, the GNU music typesetter.
 
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1996--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 1996--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
   Jan Nieuwenhuizen <janneke@gnu.org>
 
   TODO: This is way too hairy
@@ -11,6 +9,19 @@
   TODO: fix naming.
 
   Stem-end, chord-start, etc. is all confusing naming.
+
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
 #include "stem.hh"
@@ -229,11 +240,10 @@ Stem::is_normal_stem (Grob *me)
 
 MAKE_SCHEME_CALLBACK (Stem, pure_height, 3)
 SCM
-Stem::pure_height (SCM smob, SCM start, SCM end)
+Stem::pure_height (SCM smob,
+                  SCM /* start */,
+                  SCM /* end */)
 {
-  (void) start;
-  (void) end;
-
   Grob *me = unsmob_grob (smob);
   Interval iv;
 
@@ -255,7 +265,10 @@ Stem::pure_height (SCM smob, SCM start, SCM end)
        iv = Interval (-len, 0);
 
       if (!hp.is_empty ())
-       iv.translate (hp[dir] * ss / 2);
+       {
+         iv.translate (hp[dir] * ss / 2);
+         iv.add_point (hp[-dir] * ss / 2);
+       }
 
       /* extend the stem (away from the head) to cover the staff */
       if (dir == UP)
@@ -558,7 +571,7 @@ Stem::height (SCM smob)
          programming_error ("no stem direction");
          dir = UP;
        }
-      iv[dir] += dir * Beam::get_thickness (beam) * 0.5;
+      iv[dir] += dir * Beam::get_beam_thickness (beam) * 0.5;
     }
 
   return ly_interval2scm (iv);
@@ -628,8 +641,13 @@ Stem::calc_flag (SCM smob)
       string stroke_style = ly_scm2string (stroke_style_scm);
       if (!stroke_style.empty ())
         {
-          string font_char = to_string (dir) + stroke_style;
+          string font_char = flag_style + to_string (dir) + stroke_style;
           Stencil stroke = fm->find_by_name ("flags." + font_char);
+          if (stroke.is_empty ())
+            {
+              font_char = to_string (dir) + stroke_style;
+              stroke = fm->find_by_name ("flags." + font_char);
+            }
           if (stroke.is_empty ())
             me->warning (_f ("flag stroke `%s' not found", font_char));
           else
@@ -736,7 +754,7 @@ Stem::print (SCM smob)
   else if (stemlet)
     {
       Real beam_translation = Beam::get_beam_translation (beam);
-      Real beam_thickness = Beam::get_thickness (beam);
+      Real beam_thickness = Beam::get_beam_thickness (beam);
       int beam_count = beam_multiplicity (me).length () + 1;
 
       y2 -= d
@@ -880,7 +898,7 @@ Stem::calc_stem_info (SCM smob)
     }
   
   Real beam_translation = Beam::get_beam_translation (beam);
-  Real beam_thickness = Beam::get_thickness (beam);
+  Real beam_thickness = Beam::get_beam_thickness (beam);
   int beam_count = Beam::get_direction_beam_count (beam, my_dir);
   Real length_fraction
     = robust_scm2double (me->get_property ("length-fraction"), 1.0);
@@ -1047,6 +1065,8 @@ ADD_INTERFACE (Stem,
               "avoid-note-head "
               "beam "
               "beaming "
+              "beamlet-default-length "
+              "beamlet-max-length-proportion "
               "default-direction "
               "details "
               "direction "