From 160d482c6a0d59f27c8ccb1c99660a2ade551b29 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 27 Jan 2004 21:37:33 +0000 Subject: [PATCH] * scripts/convert-ly.py (conv): add instrument rule. * lily/instrument-name-engraver.cc: add Vocal_name_engraver. --- ChangeLog | 4 ++ lily/instrument-name-engraver.cc | 94 +++++++++++++++++++++------- ly/engraver-init.ly | 2 +- scm/define-grobs.scm | 18 ++++++ scm/define-translator-properties.scm | 5 ++ scripts/convert-ly.py | 10 +++ 6 files changed, 109 insertions(+), 24 deletions(-) diff --git a/ChangeLog b/ChangeLog index 56facfc86a..c1e3a041f6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2004-01-27 Han-Wen Nienhuys + * scripts/convert-ly.py (conv): add instrument rule. + + * lily/instrument-name-engraver.cc: add Vocal_name_engraver. + * lily/side-position-interface.cc: remove add_staff_support () Change all callers to use staff-padding. diff --git a/lily/instrument-name-engraver.cc b/lily/instrument-name-engraver.cc index faa4b39dbc..c380223009 100644 --- a/lily/instrument-name-engraver.cc +++ b/lily/instrument-name-engraver.cc @@ -19,13 +19,14 @@ class Instrument_name_engraver : public Engraver { - Item *text_; - Grob *delim_ ; - void create_text (); public: TRANSLATOR_DECLARATIONS(Instrument_name_engraver); +protected: + Grob *text_; + + virtual void create_text (); virtual void initialize (); virtual void acknowledge_grob (Grob_info); virtual void stop_translation_timestep (); @@ -35,7 +36,6 @@ public: Instrument_name_engraver::Instrument_name_engraver () { text_ = 0; - delim_ =0; } @@ -57,31 +57,28 @@ Instrument_name_engraver::stop_translation_timestep () } } + void Instrument_name_engraver::create_text () { - if (!text_) - { - SCM txt = get_property ("instrument"); + if (text_) + return ; - if (now_mom () > Moment (0)) - txt = get_property ("instr"); - /* - UGH. - */ - if (txt == SCM_EOL) - return ; - - text_ = make_item ("InstrumentName"); - - if (text_->get_grob_property ("text") != txt) - text_->set_grob_property ("text", txt); + SCM txt = get_property ("instrument"); + + if (now_mom () > Moment (0)) + txt = get_property ("instr"); + /* + UGH. + */ + if (txt == SCM_EOL) + return ; - if (delim_) - text_->set_parent (delim_, Y_AXIS); + + text_ = make_item ("InstrumentName"); - announce_grob (text_, SCM_EOL); - } + if (text_->get_grob_property ("text") != txt) + text_->set_grob_property ("text", txt); } void @@ -137,3 +134,54 @@ ENTER_DESCRIPTION(Instrument_name_engraver, /* acks */ "bar-line-interface axis-group-interface", /* reads */ "instrument instr", /* write */ ""); + +/****************************************************************/ + + +class Vocal_name_engraver : public Instrument_name_engraver +{ +public: + TRANSLATOR_DECLARATIONS(Vocal_name_engraver); + virtual void create_text (); +}; + + +Vocal_name_engraver::Vocal_name_engraver () +{ +} + + +void +Vocal_name_engraver::create_text () +{ + if (text_) + return ; + + SCM txt = get_property ("vocalName"); + + if (now_mom () > Moment (0)) + txt = get_property ("vocNam"); + + /* + UGH. + */ + if (txt == SCM_EOL) + return ; + + text_ = make_item ("VocalName"); + + if (text_->get_grob_property ("text") != txt) + text_->set_grob_property ("text", txt); +} + + + +ENTER_DESCRIPTION(Vocal_name_engraver, +/* descr */ " Prints the name of the a lyric voice (specified by " +" @code{Staff.vocalName} and @code{Staff.vocNam}) " +"at the left of the staff. ", +/* creats*/ "VocalName", +/* accepts */ "", +/* acks */ "bar-line-interface axis-group-interface", +/* reads */ "vocNam vocalName", +/* write */ ""); diff --git a/ly/engraver-init.ly b/ly/engraver-init.ly index 8369cdf05f..193dd3ea47 100644 --- a/ly/engraver-init.ly +++ b/ly/engraver-init.ly @@ -310,7 +310,7 @@ \consists "Extender_engraver" \consists "Hyphen_engraver" \consists "Stanza_number_engraver" - \consists "Instrument_name_engraver" + \consists "Vocal_name_engraver" \consists "Skip_event_swallow_translator" SeparationItem \set #'padding = #0.5 } diff --git a/scm/define-grobs.scm b/scm/define-grobs.scm index 09707316d8..93f0974f64 100644 --- a/scm/define-grobs.scm +++ b/scm/define-grobs.scm @@ -434,6 +434,24 @@ (font-family . roman) (meta . ((interfaces . (font-interface self-alignment-interface side-position-interface text-interface break-aligned-interface item-interface )))) )) + + (InstrumentName + . ( + (breakable . #t) + (Y-offset-callbacks . (,Side_position_interface::aligned_on_support_refpoints)) + (direction . 0) + (space-alist . ((left-edge . (extra-space . 1.0)) + )) + (molecule-callback . ,Text_item::brew_molecule) + (break-align-symbol . instrument-name) + (break-visibility . ,begin-of-line-visible) + (baseline-skip . 2) + (font-family . roman) + (meta . ((interfaces . (font-interface + self-alignment-interface + side-position-interface text-interface + break-aligned-interface item-interface )))) + )) (KeySignature . ( diff --git a/scm/define-translator-properties.scm b/scm/define-translator-properties.scm index af3b54b492..d8e8eb70a3 100644 --- a/scm/define-translator-properties.scm +++ b/scm/define-translator-properties.scm @@ -487,6 +487,11 @@ and therefore only work in contexts which contain an @code{Axis_group_engraver}. ") +(translator-property-description 'vocalName markup? + "Name of a vocal line.") +(translator-property-description 'vocNam markup? + "Name of a vocal line, short version.") + (translator-property-description 'voltaOnThisStaff boolean? "Normally, volta brackets are put only on the topmost staff. Setting this variable to true, will force a bracket to be on this staff as diff --git a/scripts/convert-ly.py b/scripts/convert-ly.py index 9d69d660f5..7ef3e908cb 100644 --- a/scripts/convert-ly.py +++ b/scripts/convert-ly.py @@ -1712,6 +1712,16 @@ def conv (str): conversions.append (((2,1,14), conv, """style = dotted -> dash-fraction = 0""")) +def conv (str): + str =re.sub (r'LyricsVoice\s*\.\s*instrument\s*=\s*("[^"]*")', + r'LyricsVoice . vocalName = \1', str) + + str =re.sub (r'LyricsVoice\s*\.\s*instr\s*=\s*("[^"]*")', + r'LyricsVoice . vocNam = \1', str) + return str + +conversions.append (((2,1,15), conv, """LyricsVoice . instr(ument) -> vocalName""")) + ################################ # END OF CONVERSIONS ################################ -- 2.39.2