From 67839a1b6a732aa5a38a0cafe5d2b46ea1b037cb Mon Sep 17 00:00:00 2001 From: hanwen Date: Fri, 25 Nov 2005 16:05:11 +0000 Subject: [PATCH] *** empty log message *** --- input/regression/rehearsal-mark-align.ly | 23 +++++++++++++++++++++++ lily/mark-engraver.cc | 12 +++++++----- scm/define-context-properties.scm | 2 ++ scm/define-grobs.scm | 5 ++++- 4 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 input/regression/rehearsal-mark-align.ly diff --git a/input/regression/rehearsal-mark-align.ly b/input/regression/rehearsal-mark-align.ly new file mode 100644 index 0000000000..d37153d4ef --- /dev/null +++ b/input/regression/rehearsal-mark-align.ly @@ -0,0 +1,23 @@ + +\header { + + texidoc = "The rehearsal mark is put on top a breakable symbol, + according to the value of @code{rehearsalMarkAlignSymbol}." + +} + +\version "2.7.19" + +\relative { + c1 \mark "foo" + \key cis \major + \clef alto + \set Score.rehearsalMarkAlignSymbol = #'key-signature + \mark "on-key" + cis + \key ces \major + \set Score.rehearsalMarkAlignSymbol = #'clef + \clef treble + \mark "on clef" + ces +} diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc index 82fc31ba39..689eb49013 100644 --- a/lily/mark-engraver.cc +++ b/lily/mark-engraver.cc @@ -36,7 +36,7 @@ protected: void process_music (); void stop_translation_timestep (); - DECLARE_ACKNOWLEDGER (bar_line); + DECLARE_ACKNOWLEDGER (break_aligned); }; Mark_engraver::Mark_engraver () @@ -46,10 +46,12 @@ Mark_engraver::Mark_engraver () } void -Mark_engraver::acknowledge_bar_line (Grob_info inf) +Mark_engraver::acknowledge_break_aligned (Grob_info inf) { Grob *s = inf.grob (); - if (text_) + if (text_ + && (get_property ("rehearsalMarkAlignSymbol") + == s->get_property ("break-align-symbol"))) { /* TODO: make this configurable. RehearsalMark cannot be @@ -135,7 +137,7 @@ Mark_engraver::process_music () #include "translator.icc" -ADD_ACKNOWLEDGER (Mark_engraver, bar_line); +ADD_ACKNOWLEDGER (Mark_engraver, break_aligned); ADD_TRANSLATOR (Mark_engraver, /* doc */ "This engraver will create RehearsalMark objects. " @@ -146,5 +148,5 @@ ADD_TRANSLATOR (Mark_engraver, "end up on the same Y-location", /* create */ "RehearsalMark", /* accept */ "mark-event", - /* read */ "rehearsalMark markFormatter stavesFound", + /* read */ "rehearsalMark rehearsalMarkAlignSymbol markFormatter stavesFound", /* write */ ""); diff --git a/scm/define-context-properties.scm b/scm/define-context-properties.scm index a206a625a7..0c63d7a0d8 100644 --- a/scm/define-context-properties.scm +++ b/scm/define-context-properties.scm @@ -328,6 +328,8 @@ The list of contains entries with start times, music objects and whether they are processed in this context.") (rehearsalMark ,integer? "The last rehearsal mark printed.") + (rehearsalMarkAlignSymbol ,symbol? "Which @code{break-align-symbol} to put the mark on? Example values: @code{clef}, @code{key-signature}.") + (repeatCommands ,list? "This property is read to find any command of the form @code{(volta . @var{x})}, where @var{x} is a string or @code{#f}") (restNumberThreshold ,number? "If a multimeasure rest has more measures diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 8c5617e661..dbd1edb04a 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -1235,7 +1235,10 @@ (stencil . ,Text_interface::print) - (X-offset . ,Self_alignment_interface::x_aligned_on_self) + (X-offset . ,(ly:make-simple-closure + `(,+ ,(ly:make-simple-closure `(,Self_alignment_interface::x_aligned_on_self)) + ,(ly:make-simple-closure `(,Self_alignment_interface::centered_on_x_parent))) + )) (Y-offset . ,Side_position_interface::y_aligned_side) (after-line-breaking . ,shift-right-at-line-begin) -- 2.39.5