From 1d765020f867995879c761f2c9351c9dc74f1df8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Janek=20Warcho=C5=82?= Date: Mon, 23 Jun 2014 23:04:26 +0200 Subject: [PATCH] Replace XY-offset closures with aligned_on_parent where possible It doesn't make sense to specify placement using multiple added callbacks or closures when we can use aligned_on_parent. What's more, aligned_on_parent should expose more consistent interface for the users - affected grobs should now behave similarly to LyricTexts and DynamicTexts. For example, this \relative c'' \context Voice { \compressFullBarRests \override MultiMeasureRestNumber.self-alignment-X = #RIGHT R1*100 } will result in right edge of the MultiMeasureRestNumber being aligned on the right edge of the MultiMeasureRest. Affected grobs: - AccidentalSuggestion - ClefModifier - DoublePercentRepeatCounter - Fingering - GridLine - MultiMeasureRestNumber - MultiMeasureRestText - PercentRepeatCounter - StemTremolo Expected changes in output: none. --- lily/fingering-engraver.cc | 3 +- lily/include/self-alignment-interface.hh | 3 +- lily/new-fingering-engraver.cc | 6 +-- lily/self-alignment-interface.cc | 12 +---- scm/define-grobs.scm | 58 ++++-------------------- 5 files changed, 15 insertions(+), 67 deletions(-) diff --git a/lily/fingering-engraver.cc b/lily/fingering-engraver.cc index d23a5e35f8..b8e7d94df1 100644 --- a/lily/fingering-engraver.cc +++ b/lily/fingering-engraver.cc @@ -109,8 +109,7 @@ Fingering_engraver::make_script (Direction d, Stream_event *r, int i) fingerings for chords need different settings. */ Side_position_interface::set_axis (fingering, Y_AXIS); - Self_alignment_interface::set_align_self (fingering, X_AXIS); - Self_alignment_interface::set_center_parent (fingering, X_AXIS); + Self_alignment_interface::set_aligned_on_parent (fingering, X_AXIS); // Hmm int priority = 200; diff --git a/lily/include/self-alignment-interface.hh b/lily/include/self-alignment-interface.hh index dfec0670a4..867f97bf86 100644 --- a/lily/include/self-alignment-interface.hh +++ b/lily/include/self-alignment-interface.hh @@ -30,8 +30,7 @@ struct Self_alignment_interface static SCM aligned_on_self (Grob *me, Axis a, bool pure, int start, int end); static SCM centered_on_object (Grob *me, Axis a); static SCM aligned_on_parent (Grob *me, Axis a); - static void set_center_parent (Grob *me, Axis a); - static void set_align_self (Grob *me, Axis a); + static void set_aligned_on_parent (Grob *me, Axis a); DECLARE_SCHEME_CALLBACK (x_aligned_on_self, (SCM element)); DECLARE_SCHEME_CALLBACK (y_aligned_on_self, (SCM element)); diff --git a/lily/new-fingering-engraver.cc b/lily/new-fingering-engraver.cc index 51eb26c6d2..7f504ae452 100644 --- a/lily/new-fingering-engraver.cc +++ b/lily/new-fingering-engraver.cc @@ -288,8 +288,7 @@ New_fingering_engraver::position_scripts (SCM orientations, Side_position_interface::add_support (f, unsmob_grob (ft.head_->get_object ("dot"))); - Self_alignment_interface::set_align_self (f, Y_AXIS); - Self_alignment_interface::set_center_parent (f, Y_AXIS); + Self_alignment_interface::set_aligned_on_parent (f, Y_AXIS); Side_position_interface::set_axis (f, X_AXIS); f->set_property ("direction", scm_from_int (hordir)); @@ -307,8 +306,7 @@ New_fingering_engraver::position_scripts (SCM orientations, f->set_property ("script-priority", scm_from_int (finger_prio + d * ft.position_)); - Self_alignment_interface::set_align_self (f, X_AXIS); - Self_alignment_interface::set_center_parent (f, X_AXIS); + Self_alignment_interface::set_aligned_on_parent (f, X_AXIS); Side_position_interface::set_axis (f, Y_AXIS); f->set_property ("direction", scm_from_int (d)); diff --git a/lily/self-alignment-interface.cc b/lily/self-alignment-interface.cc index a23d7b99cc..d1cb1bf50c 100644 --- a/lily/self-alignment-interface.cc +++ b/lily/self-alignment-interface.cc @@ -145,18 +145,10 @@ Self_alignment_interface::aligned_on_parent (Grob *me, Axis a) } void -Self_alignment_interface::set_center_parent (Grob *me, Axis a) +Self_alignment_interface::set_aligned_on_parent (Grob *me, Axis a) { add_offset_callback (me, - (a == X_AXIS) ? centered_on_x_parent_proc : centered_on_y_parent_proc, - a); -} - -void -Self_alignment_interface::set_align_self (Grob *me, Axis a) -{ - add_offset_callback (me, - (a == X_AXIS) ? x_aligned_on_self_proc : y_aligned_on_self_proc, + (a == X_AXIS) ? aligned_on_x_parent_proc : aligned_on_y_parent_proc, a); } diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 9d894be3e3..2a3faa3491 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -85,12 +85,7 @@ (staff-padding . 0.25) (stencil . ,ly:accidental-interface::print) (X-extent . ,ly:accidental-interface::width) - (X-offset . ,(ly:make-simple-closure - `(,+ - ,(ly:make-simple-closure - (list ly:self-alignment-interface::centered-on-x-parent)) - ,(ly:make-simple-closure - (list ly:self-alignment-interface::x-aligned-on-self))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-extent . ,accidental-interface::height) (Y-offset . ,side-position-interface::y-aligned-side) (meta . ((class . Item) @@ -591,12 +586,7 @@ (self-alignment-X . ,CENTER) (staff-padding . 0.7) (stencil . ,ly:text-interface::print) - (X-offset . ,(ly:make-simple-closure - `(,+ - ,(ly:make-simple-closure - (list ly:self-alignment-interface::x-aligned-on-self)) - ,(ly:make-simple-closure - (list ly:self-alignment-interface::centered-on-x-parent))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,side-position-interface::y-aligned-side) (vertical-skylines . ,grob::always-vertical-skylines-from-stencil) (Y-extent . ,grob::always-Y-extent-from-stencil) @@ -784,12 +774,7 @@ (side-axis . ,Y) (staff-padding . 0.25) (stencil . ,ly:text-interface::print) - (X-offset . ,(ly:make-simple-closure - `(,+ - ,(ly:make-simple-closure - (list ly:self-alignment-interface::centered-on-x-parent)) - ,(ly:make-simple-closure - (list ly:self-alignment-interface::x-aligned-on-self))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,side-position-interface::y-aligned-side) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Item) @@ -1107,13 +1092,8 @@ (layer . 0) (self-alignment-X . ,CENTER) (stencil . ,ly:grid-line-interface::print) - (X-extent . ,ly:grid-line-interface::width) - (X-offset . ,(ly:make-simple-closure - `(,+ - ,(ly:make-simple-closure - (list ly:self-alignment-interface::centered-on-x-parent)) - ,(ly:make-simple-closure - (list ly:self-alignment-interface::x-aligned-on-self))))) + (X-extent . ,ly:grid-line-interface::width) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (meta . ((class . Item) (interfaces . (grid-line-interface self-alignment-interface)))))) @@ -1541,12 +1521,7 @@ (springs-and-rods . ,ly:multi-measure-rest::set-text-rods) (staff-padding . 0.4) (stencil . ,ly:text-interface::print) - (X-offset . ,(ly:make-simple-closure - `(,+ - ,(ly:make-simple-closure - (list ly:self-alignment-interface::x-aligned-on-self)) - ,(ly:make-simple-closure - (list ly:self-alignment-interface::centered-on-x-parent))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,side-position-interface::y-aligned-side) (vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil) (Y-extent . ,grob::always-Y-extent-from-stencil) @@ -1567,12 +1542,7 @@ (skyline-horizontal-padding . 0.2) (staff-padding . 0.25) (stencil . ,ly:text-interface::print) - (X-offset . ,(ly:make-simple-closure - `(,+ - ,(ly:make-simple-closure - (list ly:self-alignment-interface::centered-on-x-parent)) - ,(ly:make-simple-closure - (list ly:self-alignment-interface::x-aligned-on-self))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,side-position-interface::y-aligned-side) (vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil) (Y-extent . ,grob::always-Y-extent-from-stencil) @@ -1774,12 +1744,7 @@ (self-alignment-X . ,CENTER) (staff-padding . 0.25) (stencil . ,ly:text-interface::print) - (X-offset . ,(ly:make-simple-closure - `(,+ - ,(ly:make-simple-closure - (list ly:self-alignment-interface::centered-on-x-parent)) - ,(ly:make-simple-closure - (list ly:self-alignment-interface::x-aligned-on-self))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,side-position-interface::y-aligned-side) (Y-extent . ,grob::always-Y-extent-from-stencil) (meta . ((class . Spanner) @@ -2179,12 +2144,7 @@ (style . ,ly:stem-tremolo::calc-style) (X-extent . ,ly:stem-tremolo::width) (Y-extent . ,(grob::unpure-Y-extent-from-stencil ly:stem-tremolo::pure-height)) - (X-offset . ,(ly:make-simple-closure - `(,+ - ,(ly:make-simple-closure - (list ly:self-alignment-interface::centered-on-x-parent)) - ,(ly:make-simple-closure - (list ly:self-alignment-interface::x-aligned-on-self))))) + (X-offset . ,ly:self-alignment-interface::aligned-on-x-parent) (Y-offset . ,(ly:make-unpure-pure-container ly:stem-tremolo::calc-y-offset ly:stem-tremolo::pure-calc-y-offset)) (meta . ((class . Item) (interfaces . (self-alignment-interface -- 2.39.2