From: fred Date: Wed, 27 Mar 2002 02:07:11 +0000 (+0000) Subject: lilypond-1.5.44 X-Git-Tag: release/1.5.59~243 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=a3fe31b047c82bcbaf8b09aad8be2cf69e845893;p=lilypond.git lilypond-1.5.44 --- diff --git a/lily/slur.cc b/lily/slur.cc index f72490f872..427cd0799a 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -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 (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"))) diff --git a/tex/lily-ps-defs.tex b/tex/lily-ps-defs.tex index 30e8d1b992..ed2eeb4af8 100644 --- a/tex/lily-ps-defs.tex +++ b/tex/lily-ps-defs.tex @@ -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}