[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Second set of volta changes (Issue 2673) (issue 6422061)
From: |
PhilEHolmes |
Subject: |
Second set of volta changes (Issue 2673) (issue 6422061) |
Date: |
Tue, 24 Jul 2012 14:05:20 +0000 |
Reviewers: Ian Hulin (gmail), dak, Graham Percival,
Message:
Please review
Description:
The second set of proposed changes to volta syntax, posted on behalf of
Arnold Theresius. Checked with make and make test.
Please review this at http://codereview.appspot.com/6422061/
Affected files:
M lily/volta-bracket.cc
M lily/volta-engraver.cc
M ly/engraver-init.ly
M scm/define-context-properties.scm
Index: lily/volta-bracket.cc
diff --git a/lily/volta-bracket.cc b/lily/volta-bracket.cc
index
317b47ee8d54e9e91f1cd31135c96aa1d0ca9816..f34b060fd64763185d504eeca2cd69eba02c50b1
100644
--- a/lily/volta-bracket.cc
+++ b/lily/volta-bracket.cc
@@ -128,25 +128,6 @@ Volta_bracket_interface::modify_edge_height (Spanner
*me)
bool no_vertical_start = orig_span && !broken_first_bracket;
bool no_vertical_end = orig_span && !broken_last_bracket;
- extract_grob_set (me, "bars", bars);
- Grob *endbar = bars.size () ? bars.back () : 0;
- SCM glyph = endbar ? endbar->get_property ("glyph-name") : SCM_EOL;
-
- string str;
- if (scm_is_string (glyph))
- str = ly_scm2string (glyph);
- else
- str = "|";
-
- no_vertical_end
- |= (str != ":|"
- && str != "|:"
- && str != "|."
- && str != ":|:"
- && str != ":|.|:"
- && str != ":|.:"
- && str != ".|");
-
if (no_vertical_end || no_vertical_start)
{
Drul_array<Real> edge_height = robust_scm2interval (me->get_property
("edge-height"),
Index: lily/volta-engraver.cc
diff --git a/lily/volta-engraver.cc b/lily/volta-engraver.cc
index
f4dc48bf642c699ea01b8ae5ae3f35fafbf528bd..b76a2f40226ae9098f742d88edc3ef66fcbeee83
100644
--- a/lily/volta-engraver.cc
+++ b/lily/volta-engraver.cc
@@ -153,7 +153,43 @@ Volta_engraver::acknowledge_bar_line (Grob_info i)
if (volta_bracket_)
Volta_bracket_interface::add_bar (volta_bracket_, i.item ());
if (end_volta_bracket_)
- Volta_bracket_interface::add_bar (end_volta_bracket_, i.item ());
+ {
+ Volta_bracket_interface::add_bar (end_volta_bracket_, i.item ());
+ Grob *endbar = i.grob();
+ SCM glyph = endbar ? endbar->get_property ("glyph-name") : SCM_EOL;
+
+ string str;
+ bool no_vertical_end = false;
+ if (scm_is_string (glyph))
+ str = ly_scm2string (glyph);
+ else
+ str = "|";
+
+ SCM vertical_end_allow_list = get_property
("voltaAllowEndLineOnGlyphs");
+ if (ly_cheap_is_list (vertical_end_allow_list))
+ { // checks based on user settable property
+ bool match_not_found = true;
+ while (scm_is_pair (vertical_end_allow_list) && match_not_found)
+ {
+ if (str == robust_scm2string (scm_car
(vertical_end_allow_list), "* invalid *"))
+ match_not_found = false;
+ vertical_end_allow_list = scm_cdr (vertical_end_allow_list);
+ }
+ no_vertical_end |= match_not_found;
+ }
+
+ if (no_vertical_end)
+ {
+ Drul_array<Real> edge_height = robust_scm2interval
(end_volta_bracket_->get_property ("edge-height"),
+ Interval (1.0,
1.0));
+
+ if (no_vertical_end)
+ edge_height[RIGHT] = 0.0;
+
+ end_volta_bracket_->set_property ("edge-height", ly_interval2scm
(edge_height));
+
+ }
+ }
if (volta_spanner_)
Side_position_interface::add_support (volta_spanner_, i.grob ());
@@ -200,6 +236,7 @@ ADD_TRANSLATOR (Volta_engraver,
"VoltaBracketSpanner ",
/* read */
+ "voltaAllowEndLineOnGlyphs "
"repeatCommands "
"voltaSpannerDuration "
"stavesFound ",
Index: ly/engraver-init.ly
diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly
index
d8501c4683d0b6aceebac5361465213b417bb082..225b60b740c0bd63907897ee0e7dfaaf06881c19
100644
--- a/ly/engraver-init.ly
+++ b/ly/engraver-init.ly
@@ -617,6 +617,10 @@ automatically when an output definition (a
@code{\score} or
repeatCountVisibility = #all-repeat-counts-visible
+ voltaAllowEndLineOnGlyphs = #'(
+ ":|" "|:" "||:" "|." ":|:" ":|.|:" ":|.:" ".|"
+ "S|:" ":|S" ":|S." ".S|:" ":|S|:" ":|S.|:" )
+
timeSignatureSettings = #default-time-signature-settings
timeSignatureFraction = 4/4
Index: scm/define-context-properties.scm
diff --git a/scm/define-context-properties.scm
b/scm/define-context-properties.scm
index
16a1b21b1ead90d461c8671c8ee9716d47819b71..e4f97f4b2a0dd95e5effed0d66acd43580feddd8
100644
--- a/scm/define-context-properties.scm
+++ b/scm/define-context-properties.scm
@@ -564,6 +564,8 @@ setting this property, you can make brackets last
shorter.
for repeated bass figures.")
(vocalName ,markup? "Name of a vocal line.")
+ (voltaAllowEndLineOnGlyphs ,list? "A list of glyphs where the
+volta end hook will be drawn.")
(voltaSpannerDuration ,ly:moment? "This specifies the maximum
duration to use for the brackets printed for @code{\\alternative}.
This can be used to shrink the length of brackets in the situation
- Second set of volta changes (Issue 2673) (issue 6422061),
PhilEHolmes <=