]> git.donarmstrong.com Git - lilypond.git/commitdiff
Replace XY-offset closures with aligned_on_parent where possible
authorJanek Warchoł <lemniskata.bernoullego@gmail.com>
Mon, 23 Jun 2014 21:04:26 +0000 (23:04 +0200)
committerJanek Warchoł <lemniskata.bernoullego@gmail.com>
Sat, 5 Jul 2014 21:09:29 +0000 (23:09 +0200)
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
lily/include/self-alignment-interface.hh
lily/new-fingering-engraver.cc
lily/self-alignment-interface.cc
scm/define-grobs.scm

index d23a5e35f81852ab7088c2f451ea2458a91b6140..b8e7d94df12bc4065e623d8b3c15b4af11306ce8 100644 (file)
@@ -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;
index dfec0670a4fcf6304ac50c464072c7785a83ac26..867f97bf86da98f90ed792aade88489b9a679750 100644 (file)
@@ -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));
index 51eb26c6d29a1f89aa20836950cba09dc1f36e22..7f504ae4521115214e411399547634e3aac7b32b 100644 (file)
@@ -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));
index a23d7b99cc6a64495751dd4d43fbdb37a2be4a9f..d1cb1bf50ca54e92295d13ef468b0e5580585936 100644 (file)
@@ -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);
 }
 
index 9d894be3e358a5df1f66f41c3c813169a0c27369..2a3faa3491df8ef2baf9c8b9932eac5c3f299bc5 100644 (file)
         (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)
         (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)
         (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)
         (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))))))
         (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)
         (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)
         (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)
         (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