From 32e1b87cd3097a61dd6029a828b48e435fb19f7f Mon Sep 17 00:00:00 2001 From: Neil Puttock Date: Tue, 27 Jul 2010 21:37:18 +0100 Subject: [PATCH] Remove docs/default for AccidentalPlacement #'left-padding. Following refactoring of the accidental-placement code, AccidentalPlacement only supports 'right-padding. (See also http://code.google.com/p/lilypond/issues/detail?id=730) --- Documentation/learning/tweaks.itely | 28 ++++++------- lily/accidental-placement.cc | 81 +++++++++++++++++-------------------- scm/define-grob-properties.scm | 2 +- scm/define-grobs.scm | 1 - 4 files changed, 51 insertions(+), 61 deletions(-) diff --git a/Documentation/learning/tweaks.itely b/Documentation/learning/tweaks.itely index 8440dd72ff..b50bd41ba9 100644 --- a/Documentation/learning/tweaks.itely +++ b/Documentation/learning/tweaks.itely @@ -2370,11 +2370,9 @@ This has already been covered in some detail -- see @ref{Within-staff objects}. @item -@code{padding}, @code{left-padding}, -@code{right-padding}, @code{staff-padding} +@code{padding}, @code{right-padding}, @code{staff-padding} @cindex padding -@cindex left-padding property @cindex padding property @cindex right-padding property @cindex staff-padding property @@ -2389,15 +2387,14 @@ applied to all objects which support the @code{side-position-interface}. Instead of @code{padding}, the placement of groups of accidentals -is controlled by @code{left-padding} and @code{right-padding}. -These properties are to be found in the @code{AccidentalPlacement} -object which, note, lives in the @strong{staff} context. In the -type-setting process the note heads are type-set first and then -the accidentals, if any, are added to the left of the note heads -using the @code{right-padding} property to determine the separation -from the note heads. So only the @code{right-padding} property of the -@code{AccidentalPlacement} object has any effect on the placement -of the accidentals. +is controlled by @code{right-padding}. This property is to be found +in the @code{AccidentalPlacement} object which, note, lives in the +@strong{Staff} context. In the typesetting process the note heads +are typeset first and then the accidentals, if any, are added to the +left of the note heads using the @code{right-padding} property to determine +the separation from the note heads and between individual accidentals. +So only the @code{right-padding} property of the @code{AccidentalPlacement} +object has any effect on the placement of the accidentals. The @code{staff-padding} property is closely related to the @code{padding} property: @code{padding} controls the minimum amount of @@ -2589,11 +2586,11 @@ b2\fermata @lilypond[quote,fragment,relative=1,verbatim] % This will not work, see below \override MetronomeMark #'padding = #3 -\tempo 4=120 +\tempo 4 = 120 c1 | % This works \override Score.MetronomeMark #'padding = #3 -\tempo 4=80 +\tempo 4 = 80 d1 | @end lilypond @@ -2609,9 +2606,8 @@ their @code{outside-staff-priority}, then that object and all objects outside it are moved. -@subheading left-padding and right-padding +@subheading right-padding -@cindex left-padding property @cindex right-padding property The @code{right-padding} property affects the spacing between the diff --git a/lily/accidental-placement.cc b/lily/accidental-placement.cc index 8e9c854415..8ece98e510 100644 --- a/lily/accidental-placement.cc +++ b/lily/accidental-placement.cc @@ -17,21 +17,20 @@ along with LilyPond. If not, see . */ - #include "accidental-placement.hh" -#include "item.hh" -#include "rhythmic-head.hh" #include "accidental-interface.hh" +#include "item.hh" #include "music.hh" #include "note-collision.hh" #include "note-column.hh" #include "pointer-group-interface.hh" +#include "rhythmic-head.hh" #include "skyline.hh" #include "stream-event.hh" #include "warn.hh" -static Pitch* +static Pitch * accidental_pitch (Grob *acc) { SCM cause = acc->get_parent (Y_AXIS)->get_property ("cause"); @@ -77,8 +76,8 @@ Accidental_placement::add_accidental (Grob *me, Grob *a) */ void Accidental_placement::split_accidentals (Grob *accs, - vector *break_reminder, - vector *real_acc) + vector *break_reminder, + vector *real_acc) { for (SCM acs = accs->get_object ("accidental-grobs"); scm_is_pair (acs); acs = scm_cdr (acs)) @@ -94,18 +93,18 @@ Accidental_placement::split_accidentals (Grob *accs, } } -vector -Accidental_placement::get_relevant_accidentals (vector const &elts, Grob *left) +vector +Accidental_placement::get_relevant_accidentals (vector const &elts, Grob *left) { - vector br; - vector ra; - vector ret; + vector br; + vector ra; + vector ret; bool right = dynamic_cast (left)->break_status_dir () == RIGHT; for (vsize i = 0; i < elts.size (); i++) { split_accidentals (elts[i], &br, &ra); - + ret.insert (ret.end (), ra.begin (), ra.end ()); if (right) @@ -120,7 +119,7 @@ struct Accidental_placement_entry Skyline right_skyline_; Interval vertical_extent_; vector extents_; - vector grobs_; + vector grobs_; }; Real ape_priority (Accidental_placement_entry const *a) @@ -172,15 +171,15 @@ acc_less (Grob *const &a, Grob *const &b) /* TODO: should favor - b - b + * b + * b placement */ void -stagger_apes (vector *apes) +stagger_apes (vector *apes) { - vector asc = *apes; + vector asc = *apes; vector_sort (asc, &ape_less); @@ -205,10 +204,10 @@ stagger_apes (vector *apes) reverse (*apes); } -static vector +static vector build_apes (SCM accs) { - vector apes; + vector apes; for (SCM s = accs; scm_is_pair (s); s = scm_cdr (s)) { Accidental_placement_entry *ape = new Accidental_placement_entry; @@ -226,7 +225,7 @@ static void set_ape_skylines (Accidental_placement_entry *ape, Grob **common) { - vector accs (ape->grobs_); + vector accs (ape->grobs_); vector_sort (accs, &acc_less); /* We know that each accidental has the same note name and we assume that @@ -276,11 +275,11 @@ set_ape_skylines (Accidental_placement_entry *ape, ape->right_skyline_ = Skyline (ape->extents_, 0, Y_AXIS, RIGHT); } -static vector -extract_heads_and_stems (vector const &apes) +static vector +extract_heads_and_stems (vector const &apes) { - vector note_cols; - vector ret; + vector note_cols; + vector ret; for (vsize i = apes.size (); i--;) { @@ -321,14 +320,13 @@ extract_heads_and_stems (vector const &apes) if (Grob *s = Rhythmic_head::get_stem (ret[i])) ret.push_back (s); - - vector_sort (ret, less ()); + vector_sort (ret, less ()); uniq (ret); return ret; } -static Grob* -common_refpoint_of_accidentals (vector const &apes, Axis a) +static Grob * +common_refpoint_of_accidentals (vector const &apes, Axis a) { Grob *ret = 0; @@ -345,7 +343,7 @@ common_refpoint_of_accidentals (vector const &apes, } static Skyline -build_heads_skyline (vector const &heads_and_stems, +build_heads_skyline (vector const &heads_and_stems, Grob **common) { vector head_extents; @@ -362,13 +360,13 @@ build_heads_skyline (vector const &heads_and_stems, */ static Interval position_apes (Grob *me, - vector const &apes, + vector const &apes, Skyline const &heads_skyline) { Real padding = robust_scm2double (me->get_property ("padding"), 0.2); Skyline left_skyline = heads_skyline; left_skyline.raise (-robust_scm2double (me->get_property ("right-padding"), 0)); - + /* Add accs entries right-to-left. */ @@ -402,7 +400,6 @@ position_apes (Grob *me, return width; } - /* This routine computes placements of accidentals. During add_accidental (), accidentals are already grouped by note, so that @@ -415,12 +412,11 @@ position_apes (Grob *me, TODO: more advanced placement. Typically, the accs should be placed to form a C shape, like this - - ## - b b - # # - b - b b + * ## + * b b + * # # + * b + * b b The naturals should be left of the C as well; they should be separate accs. @@ -453,16 +449,16 @@ Accidental_placement::calc_positioning_done (SCM smob) return SCM_BOOL_T; me->set_property ("positioning-done", SCM_BOOL_T); - + SCM accs = me->get_object ("accidental-grobs"); if (!scm_is_pair (accs)) return SCM_BOOL_T; - vector apes = build_apes (accs); + vector apes = build_apes (accs); Grob *common[] = {me, 0}; - vector heads_and_stems = extract_heads_and_stems (apes); + vector heads_and_stems = extract_heads_and_stems (apes); common[Y_AXIS] = common_refpoint_of_accidentals (apes, Y_AXIS); common[Y_AXIS] = common_refpoint_of_array (heads_and_stems, common[Y_AXIS], Y_AXIS); @@ -489,9 +485,8 @@ ADD_INTERFACE (Accidental_placement, /* properties */ "accidental-grobs " "direction " - "left-padding " "padding " "positioning-done " "right-padding " "script-priority " - ) + ); diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index 7eff40e957..8c23fb6c9c 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -514,7 +514,7 @@ are added.") (left-bound-info ,list? "An alist of properties for determining attachments of spanners to edges.") (left-padding ,ly:dimension? "The amount of space that is put -left to an object (e.g., a group of accidentals).") +left to an object (e.g., a lyric extender).") (length ,ly:dimension? "User override for the stem length of unbeamed stems.") (length-fraction ,number? "Multiplier for lengths. Used for diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 2f87b27407..c13e099a0a 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -53,7 +53,6 @@ (AccidentalPlacement . ( (direction . ,LEFT) - (left-padding . 0.2) (positioning-done . ,ly:accidental-placement::calc-positioning-done) ;; this is quite small, but it is very ugly to have -- 2.11.4.GIT