]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.5.44
authorfred <fred>
Wed, 27 Mar 2002 02:07:11 +0000 (02:07 +0000)
committerfred <fred>
Wed, 27 Mar 2002 02:07:11 +0000 (02:07 +0000)
lily/slur.cc
tex/lily-ps-defs.tex

index f72490f87207165ea5f84f2139e84085aa611ab5..427cd0799acaae8552d332d0478fac6d90a73228 100644 (file)
@@ -166,16 +166,16 @@ Slur::check_slope (Grob *me)
     }
 }
 
-void
+/*
+  Set 'attachment grob property, and return it.
+*/
+SCM
 Slur::set_extremities (Grob *me)
 {
   if (!Directional_element_interface::get (me))
     Directional_element_interface::set (me, get_default_dir (me));
 
-  Direction dir = LEFT;
-  do 
-    {
-      SCM att = me->get_grob_property ("attachment");
+  SCM att = me->get_grob_property ("attachment");
       /*
        */
       if (!gh_pair_p (att))
@@ -185,6 +185,10 @@ Slur::set_extremities (Grob *me)
          me->set_grob_property ("attachment", att);
        }
       
+  Direction dir = LEFT;
+  do 
+    {
+    
       if (!gh_symbol_p (index_cell (att, dir)))
        {
          for (SCM s = me->get_grob_property ("extremity-rules");
@@ -204,6 +208,8 @@ Slur::set_extremities (Grob *me)
   while (flip (&dir) != LEFT);
 
   check_slope (me);
+
+  return att;
 }
 
 
@@ -274,9 +280,9 @@ Slur::get_attachment (Grob *me, Direction dir,
   SCM s = me->get_grob_property ("attachment");
   if (!gh_symbol_p (index_cell (s, dir)))
     {
-      set_extremities (me);
-      s = me->get_grob_property ("attachment");
+      s = set_extremities (me);
     }
+  
   SCM a = dir == LEFT ? ly_car (s) : ly_cdr (s);
   Spanner*sp = dynamic_cast<Spanner*> (me);
   String str = ly_symbol2string (a);
@@ -284,6 +290,8 @@ Slur::get_attachment (Grob *me, Direction dir,
   Real hs = staff_space / 2.0;
   Offset o;
   
+  int slurdir = gh_scm2int (me->get_grob_property ("direction"));
+  
   Grob *stem = 0;
   if (Note_column::has_interface (sp->get_bound (dir)))
     {
@@ -323,8 +331,13 @@ Slur::get_attachment (Grob *me, Direction dir,
              /*
                Default position is on stem X, at stem end Y
               */
+             Real stem_thickness =
+               gh_scm2double (stem->get_grob_property ("thickness"))
+               * stem->paper_l ()->get_var ("stafflinethickness");
              o += Offset (0.5 *
-                          x_extent * (1 + Stem::get_direction (stem)),
+                          x_extent * (1 + Stem::get_direction (stem))
+                          - ((dir + 1)/2) * stem_thickness
+                          + ((1 - slurdir)/2) * stem_thickness,
                           0);
            }
        }
@@ -344,7 +357,6 @@ Slur::get_attachment (Grob *me, Direction dir,
 
   SCM alist = me->get_grob_property ("extremity-offset-alist");
   int stemdir = stem ? Stem::get_direction (stem) : 1;
-  int slurdir = gh_scm2int (me->get_grob_property ("direction"));
   SCM l = scm_assoc
     (scm_list_n (a,
                  gh_int2scm (stemdir * dir),
@@ -620,9 +632,14 @@ Slur::get_curve (Grob*me)
   Bezier b;
   int i = 0;
 
+  SCM attach = me->get_grob_property ("attachment");
+  if (!gh_pair_p (attach))
+    attach = set_extremities(me);
+
+  
   if (!Directional_element_interface::get (me)
-      || ! gh_symbol_p (index_cell (me->get_grob_property ("attachment"), LEFT))
-      || ! gh_symbol_p (index_cell (me->get_grob_property ("attachment"), RIGHT)))
+      || ! gh_symbol_p (index_cell (attach, LEFT))
+      || ! gh_symbol_p (index_cell (attach, RIGHT)))
     set_extremities (me);
   
   if (!gh_pair_p (me->get_grob_property ("control-points")))
index 30e8d1b992590263b704ca5df783885ef7d23adb..ed2eeb4af890c13a55fd4847d14501930f1b3f4c 100644 (file)
@@ -12,8 +12,8 @@
 \def\PSsetTeXdimen#1{\expandafter\special{! /#1 (\csname #1\endcsname) set_tex_dimen}}
 \def\lilySpace{ }
 
-% for mm: 72.27/25.4
-\def\scaletounit{ 2.845276 mul }
+% PostScript PT/IN: 72/25.4
+\def\scaletounit{ 2.834645 mul }
 
 % for true printers points to postscript points: 
 %\def\scaletounit{1.00375}