lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: add property label-alignments to OttavaBracket (issue 575330043 by a


From: lilypond
Subject: Re: add property label-alignments to OttavaBracket (issue 575330043 by address@hidden)
Date: Fri, 22 Nov 2019 04:56:00 -0800

Reviewers: lemzwerg, carl.d.sorensen_gmail.com,

Message:
Hm, I think you’re right. I’m not sure how interface work but maybe this
is a case for the line-spanner-interface?

I just managed to do the same thing for VoltaBrackets but that did need
some code duplication so maybe there should be a new function in some
interface for that alignment … I’ll have a look at this in the next few
days.

Description:
add property label-alignments to OttavaBracket

Please review this at https://codereview.appspot.com/575330043/

Affected files (+23, -2 lines):
  M lily/ottava-bracket.cc
  M scm/define-grob-properties.scm
  M scm/define-grobs.scm


Index: lily/ottava-bracket.cc
diff --git a/lily/ottava-bracket.cc b/lily/ottava-bracket.cc
index f133071336947a118f7cc583d83c122330995b8b..c73149f3a7b34ae49a50942c0af6e1e0908e8fdf 100644
--- a/lily/ottava-bracket.cc
+++ b/lily/ottava-bracket.cc
@@ -176,9 +176,24 @@ Ottava_bracket::print (SCM smob)

   b.translate_axis (bracket_span_points[LEFT], X_AXIS);
   text.translate_axis (span_points[LEFT], X_AXIS);
-  text.align_to (Y_AXIS, CENTER);
-  b.add_stencil (text);

+  SCM la = SCM_EOL;
+  SCM label_alignments = me->get_property ("label-alignments");
+  if (scm_is_pair (label_alignments))
+    {
+      if (get_grob_direction (me) == DOWN)
+        la = SCM_CAR (label_alignments);
+      else
+        la = SCM_CDR (label_alignments);
+    }
+  if (!scm_is_number (la))
+    {
+      me->warning ("label-alignments should be a pair of numbers");
+      la = 0;
+    }
+  text.align_to (Y_AXIS, scm_to_double (la));
+
+  b.add_stencil (text);
   b.translate_axis (- me->relative_coordinate (common, X_AXIS), X_AXIS);

   return b.smobbed_copy ();
@@ -191,6 +206,7 @@ ADD_INTERFACE (Ottava_bracket,
                "bracket-flare "
                "dashed-edge "
                "edge-height "
+               "label-alignments "
                "minimum-length "
                "shorten-pair "
               );
Index: scm/define-grob-properties.scm
diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm
index ce88925313194e622f00429419aa7f6da2572a88..19516a9963f9bf4acbe77efa71c49a82af3fdb00 100644
--- a/scm/define-grob-properties.scm
+++ b/scm/define-grob-properties.scm
@@ -570,6 +570,10 @@ will be positioned next to a kneed beam.")
 ;;;
 ;;; l
 ;;;
+ (label-alignments ,number-pair? "The vertical alignments of OttavaBracket +labels below and above the staff. The value @w{@code{-1}} means bottom-aligned, +@code{0}@tie{}centered, and @code{1}@tie{}top-aligned. Other numerical values
+may also be specified - the unit is half the label height.")
      (labels ,list? "List of labels (symbols) placed on a column.")
      (layer ,integer? "An integer which determines the order of printing
 objects.  Objects with the lowest value of layer are drawn first, then
Index: scm/define-grobs.scm
diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm
index b86e5a60505072b49eb313cc72689ed7aa378c6f..de539e8e713d230667f98e81ccf9d8dd3febe36d 100644
--- a/scm/define-grobs.scm
+++ b/scm/define-grobs.scm
@@ -1732,6 +1732,7 @@
         (edge-height . (0 . 0.8))
         (font-series . bold)
         (font-shape . italic)
+        (label-alignments . (-0.5 . 0.5))
         (minimum-length . 0.3)
         (outside-staff-priority . 400)
         (padding . 0.5)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]