X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fmusical-request.cc;h=adb284cce09461d3a5c321903dc08af0e342c689;hb=8aad615ea7bb31f49a0c2afc21eea5ff5de20437;hp=4247e7e559c0551a25df9dbf6dda67cddabcd729;hpb=fd35c1854983063501a1152c3827530e866dcde3;p=lilypond.git diff --git a/lily/musical-request.cc b/lily/musical-request.cc index 4247e7e559..adb284cce0 100644 --- a/lily/musical-request.cc +++ b/lily/musical-request.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997 Han-Wen Nienhuys + (c) 1997--1999 Han-Wen Nienhuys */ #include "musical-request.hh" @@ -15,31 +15,36 @@ -IMPLEMENT_IS_TYPE_B1(Musical_req,Request); + void -Musical_req::do_print() const{} +Musical_req::do_print () const{} void -Tie_req::do_print() const{} +Tie_req::do_print () const{} -/* *************** */ -IMPLEMENT_IS_TYPE_B1(Span_req,Musical_req); void -Span_req::do_print() const +Musical_span_req::do_print () const +{ + Span_req::do_print (); +} + + +void +Span_req::do_print () const { #ifndef NPRINT - DOUT << spantype ; + DOUT << spantype_; #endif } -IMPLEMENT_IS_TYPE_B1(Spacing_req,Request); -Spacing_req::Spacing_req() + +Spacing_req::Spacing_req () { next = 0; distance = 0; @@ -47,14 +52,14 @@ Spacing_req::Spacing_req() } void -Spacing_req::do_print() const +Spacing_req::do_print () const { #ifndef NPRINT DOUT << "next " << next << "dist " << distance << "strength\n"; #endif } -IMPLEMENT_IS_TYPE_B1 (Abbreviation_req, Musical_req); + Abbreviation_req::Abbreviation_req () { @@ -62,219 +67,168 @@ Abbreviation_req::Abbreviation_req () } void -Abbreviation_req::do_print() const +Abbreviation_req::do_print () const { #ifndef NPRINT - DOUT << "type " << type_i_ << "\n"; + DOUT << "type " << type_i_ << '\n'; #endif } -IMPLEMENT_IS_TYPE_B2(Blank_req,Spacing_req,Rhythmic_req); + void -Blank_req::do_print() const +Blank_req::do_print () const { - Spacing_req::do_print(); + Spacing_req::do_print (); } -/* *************** */ -Melodic_req::Melodic_req() +Melodic_req::Melodic_req () { - notename_i_ = 0; - octave_i_ = 0; - accidental_i_ = 0; } void -Melodic_req::transpose (Melodic_req const & delta) +Melodic_req::transpose (Musical_pitch delta) { - int old_pitch = pitch(); - int delta_pitch = delta.pitch(); - octave_i_ += delta.octave_i_; - notename_i_ += delta.notename_i_; - while (notename_i_ >= 7) - { - notename_i_ -= 7; - octave_i_ ++; - } - - int new_pitch = pitch(); - int delta_acc = new_pitch - old_pitch - delta_pitch; - - accidental_i_ -= delta_acc; - if (abs (accidental_i_) > 2) + pitch_.transpose (delta); + + if (abs (pitch_.accidental_i_) > 2) { - delta.warning (_("transposition makes accidental larger than 2")); + warning (_f ("transposition by %s makes accidental larger than two", + delta.str ())); } } -IMPLEMENT_IS_TYPE_B1(Melodic_req,Musical_req); + bool Melodic_req::do_equal_b (Request*r) const { - Melodic_req* m= r->musical()->melodic (); - return !compare (*m, *this); + Melodic_req* m= dynamic_cast (r); + return m&& !compare (*m, *this); } int Melodic_req::compare (Melodic_req const &m1 , Melodic_req const&m2) { - int o= m1.octave_i_ - m2.octave_i_; - int n = m1.notename_i_ - m2.notename_i_; - int a = m1.accidental_i_ - m2.accidental_i_; - - if (o) - return o; - if (n) - return n; - if (a) - return a; - return 0; + return Musical_pitch::compare (m1.pitch_, m2.pitch_); } void -Melodic_req::do_print() const +Melodic_req::do_print () const { -#ifndef NPRINT - DOUT << "notename: " << notename_i_ - << " acc: " <musical()->rhythmic (); + Rhythmic_req* rh = dynamic_cast (r); - return !compare (*this, *rh); + return rh && !compare (*this, *rh); } -void -Rhythmic_req::set_duration (Duration d) -{ - duration_ = d; -} -Rhythmic_req::Rhythmic_req() -{ -} -IMPLEMENT_IS_TYPE_B1(Rhythmic_req,Musical_req); - void -Rhythmic_req::do_print() const +Rhythmic_req::do_print () const { #ifndef NPRINT - DOUT << "duration { " <align_i_ = 0; // centre - dir_ = DOWN; // lyrics below (invisible) staff + duration_.compress (m); } - -IMPLEMENT_IS_TYPE_B2(Lyric_req,Musical_req,Rhythmic_req); - void -Lyric_req::do_print() const +Lyric_req::do_print () const { - Rhythmic_req::do_print(); - Text_req::do_print(); + Rhythmic_req::do_print (); } -/* *************** */ + bool Note_req::do_equal_b (Request*r) const { - return Rhythmic_req::do_equal_b (r) && Melodic_req::do_equal_b (r); + Note_req *n = dynamic_cast (r); + return n&& Rhythmic_req::do_equal_b (n) && Melodic_req::do_equal_b (n); } -Note_req::Note_req() +Note_req::Note_req () { + cautionary_b_ = false; forceacc_b_ = false; } -IMPLEMENT_IS_TYPE_B2(Note_req,Melodic_req,Rhythmic_req); + void -Note_req::do_print() const +Note_req::do_print () const { #ifndef NPRINT - Melodic_req::do_print(); - if (forceacc_b_) + Melodic_req::do_print (); + if (cautionary_b_) + { + DOUT << " force cautionary accidental\n"; + } + else if (forceacc_b_) { DOUT << " force accidental\n"; } - Rhythmic_req::do_print(); + Rhythmic_req::do_print (); #endif } -/* *************** */ - -IMPLEMENT_IS_TYPE_B1(Rest_req,Rhythmic_req); void -Rest_req::do_print() const +Rest_req::do_print () const { - Rhythmic_req::do_print(); + Rhythmic_req::do_print (); } -/* *************** */ - -IMPLEMENT_IS_TYPE_B1(Beam_req,Span_req); - -Beam_req::Beam_req() +void +Multi_measure_rest_req::do_print () const { - nplet = 0; + Rhythmic_req::do_print (); } + void -Beam_req::do_print() const +Beam_req::do_print () const { } -/* *************** */ - -IMPLEMENT_IS_TYPE_B1 (Abbreviation_beam_req, Span_req); - Abbreviation_beam_req::Abbreviation_beam_req () { type_i_ = 0; @@ -285,32 +239,42 @@ Abbreviation_beam_req::do_print () const { } -IMPLEMENT_IS_TYPE_B1(Slur_req,Span_req); void -Slur_req::do_print() const +Slur_req::do_print () const +{ +} + + + + + +Extender_req::Extender_req () +{ +} + +void +Extender_req::do_print () const { } -/* *************** */ bool -Span_req:: do_equal_b (Request*r) const +Span_req::do_equal_b (Request*r) const { - Span_req * s = r->span(); - return spantype - s->spantype; + Span_req * s = dynamic_cast (r); + return s && spantype_ == s->spantype_; } -Span_req::Span_req() +Span_req::Span_req () { - spantype = NOSPAN; + spantype_ = CENTER; } -/* *************** */ Script_req::Script_req (Script_req const&s) { dir_ = s.dir_; - scriptdef_p_ = s.scriptdef_p_ ? s.scriptdef_p_->clone() : 0; + scriptdef_p_ = s.scriptdef_p_ ? s.scriptdef_p_->clone () : 0; } /* @@ -321,168 +285,96 @@ Script_req::Script_req (Script_req const&s) bool Script_req::do_equal_b (Request*r) const { - Script_req * s = r->script(); - - return scriptdef_p_->equal_b (*s->scriptdef_p_); + Script_req * s = dynamic_cast (r); + return s && scriptdef_p_->equal_b (*s->scriptdef_p_); } -Script_req::Script_req() +Script_req::Script_req () { dir_ = CENTER; scriptdef_p_ = 0; } -IMPLEMENT_IS_TYPE_B1(Script_req,Request); + void -Script_req::do_print() const +Script_req::do_print () const { #ifndef NPRINT - DOUT << " dir " << dir_ ; - scriptdef_p_->print(); + DOUT << " dir " << dir_; + scriptdef_p_->print (); #endif } void -Musical_script_req::do_print() const +Musical_script_req::do_print () const { - Script_req::do_print(); + Script_req::do_print (); } - -IMPLEMENT_IS_TYPE_B2(Musical_script_req,Musical_req, Script_req); - - -Script_req::~Script_req() +Script_req::~Script_req () { delete scriptdef_p_; } -/* *************** */ - - -Text_req::~Text_req() -{ - delete tdef_p_; - tdef_p_ = 0; -} - -Text_req::Text_req (Text_req const& src) -{ - tdef_p_ = new Text_def (*src.tdef_p_); - dir_ = src.dir_; -} - -Text_req::Text_req (int dir_i, Text_def* tdef_p) -{ - dir_ = Direction(dir_i); - tdef_p_ = tdef_p; -} - - -IMPLEMENT_IS_TYPE_B1(Text_req,Musical_req); - -void -Text_req::do_print() const -{ -#ifndef NPRINT - DOUT << " dir " << dir_ ; - tdef_p_->print(); -#endif -} - -/* *************** */ - - -IMPLEMENT_IS_TYPE_B1(Skip_req,Musical_req); void -Skip_req::do_print() const +Skip_req::do_print () const { #ifndef NPRINT - - DOUT << "duration: " << duration(); + DOUT << "duration: " << length_mom (); #endif } - - -IMPLEMENT_IS_TYPE_B1(Dynamic_req,Musical_req); - void -Dynamic_req::do_print() const +Dynamic_req::do_print () const { - Musical_req::do_print(); + Musical_req::do_print (); } - -IMPLEMENT_IS_TYPE_B1(Absolute_dynamic_req,Musical_req); - void -Absolute_dynamic_req::do_print() const +Absolute_dynamic_req::do_print () const { #ifndef NPRINT - Dynamic_req::do_print(); - DOUT << " loudness " < (r); + return a&& loudness_str_ == a->loudness_str_; } -String -Absolute_dynamic_req::loudness_str () const +Absolute_dynamic_req::Absolute_dynamic_req () { - String s = loudness_static_str (loudness_); - if (s.empty_b ()) - { - s = "mf"; - warning (String (_("Never heard of dynamic scale ")) - + loudness_ + _(" assuming mf")); - } - return s; + loudness_str_ = "fm"; // yes, "illegal" on purpose. } -Absolute_dynamic_req::Absolute_dynamic_req() + +bool +Span_dynamic_req::do_equal_b (Request *req) const { - loudness_ = MF; -} + Span_dynamic_req * s = dynamic_cast (req); + return s&& Span_req::do_equal_b (req) && s->dynamic_dir_ == dynamic_dir_; +} -Span_dynamic_req::Span_dynamic_req() +Span_dynamic_req::Span_dynamic_req () { dynamic_dir_ = CENTER; } - -IMPLEMENT_IS_TYPE_B1(Span_dynamic_req,Musical_req); - void -Span_dynamic_req::do_print() const +Span_dynamic_req::do_print () const { #ifndef NPRINT - Span_req::do_print(); - DOUT << "softer/louder: " <