From: fred Date: Sun, 24 Mar 2002 20:03:39 +0000 (+0000) Subject: lilypond-0.1.37 X-Git-Tag: release/1.5.59~3551 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=3be6feefff1ff6e0c7cb44ec3d1a85109cc0aa8f;p=lilypond.git lilypond-0.1.37 --- diff --git a/TODO b/TODO index 1d54876a95..4a10ab8b8c 100644 --- a/TODO +++ b/TODO @@ -7,10 +7,17 @@ Most of the items are marked in the code as well, with full explanation. grep for TODO and ugh/ugr 0.2: + * unended beam: [c4 + + * output naming: + - default to basename[-serialnumber].{midi,tex} + * handle ^C for tmp/file creation. * PS for beams. + * dots & rest collisions. + * add a screenshot to the website. :) * fix stdin input diff --git a/lily/include/slur-grav.hh b/lily/include/slur-grav.hh index ad57d2443d..3eb6e182dc 100644 --- a/lily/include/slur-grav.hh +++ b/lily/include/slur-grav.hh @@ -16,14 +16,15 @@ class Slur_engraver :public Engraver { Array slur_l_stack_; Array end_slur_l_arr_; Direction dir_; - /* *************** */ + protected: - virtual ~Slur_engraver(); + virtual bool do_try_request (Request*); virtual void do_process_requests(); virtual void acknowledge_element (Score_elem_info); virtual void do_pre_move_processing(); virtual void do_post_move_processing(); + virtual void do_removal_processing (); public: TRANSLATOR_CLONE(Slur_engraver); Slur_engraver(); diff --git a/lily/score-grav.cc b/lily/score-grav.cc index c08afae18e..e624ac88fe 100644 --- a/lily/score-grav.cc +++ b/lily/score-grav.cc @@ -127,7 +127,21 @@ Score_engraver::typeset_all() { Score_elem * elem_p = elem_p_arr_[i]; if (elem_p->spanner()) - pscore_p_->typeset_unbroken_spanner (elem_p->spanner()); + { + Spanner *s = elem_p->spanner (); + pscore_p_->typeset_unbroken_spanner (s); + + /* + do something sensible if spanner not + spanned on 2 items. + */ + Direction d = LEFT; + do { + if (!s->spanned_drul_[d]) + s->set_bounds(d, command_column_l_); + } while ((d *= -1) != LEFT); + + } else { Item *item_p = elem_p->item(); diff --git a/lily/slur-grav.cc b/lily/slur-grav.cc index 25b53201be..732c4bd91d 100644 --- a/lily/slur-grav.cc +++ b/lily/slur-grav.cc @@ -1,5 +1,5 @@ /* - slur-reg.cc -- implement Slur_engraver + slur-grav.cc -- implement Slur_engraver (c) 1997 Han-Wen Nienhuys */ @@ -36,6 +36,20 @@ Slur_engraver::acknowledge_element (Score_elem_info info) } } +void +Slur_engraver::do_removal_processing () +{ + for (int i = 0; i < slur_l_stack_.size(); i++) + { + typeset_element (slur_l_stack_[i]); + } + slur_l_stack_.clear (); + for (int i=0; i < requests_arr_.size(); i++) + { + requests_arr_[i]->warning (_("unterminated slur")); + } +} + /* abracadabra */ @@ -94,13 +108,6 @@ Slur_engraver::do_post_move_processing() { new_slur_req_l_arr_.clear(); } -Slur_engraver::~Slur_engraver() -{ - for (int i=0; i < requests_arr_.size(); i++) - { - requests_arr_[i]->warning (_("unterminated slur")); - } -} IMPLEMENT_IS_TYPE_B1(Slur_engraver,Engraver); ADD_THIS_TRANSLATOR(Slur_engraver); diff --git a/lily/slur.cc b/lily/slur.cc index aadb9d44b9..2597c5e032 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -47,12 +47,18 @@ Slur::set_default_dir() } void -Slur::do_pre_processing() +Slur::do_add_processing() { set_bounds(LEFT, encompass_arr_[0]); - set_bounds(RIGHT, encompass_arr_.top()); + if (encompass_arr_.size () > 1) + set_bounds(RIGHT, encompass_arr_.top()); } +void +Slur::do_pre_processing () +{ + // don't set directions +} void Slur::do_substitute_dependency (Score_elem*o, Score_elem*n) diff --git a/lily/tie.cc b/lily/tie.cc index f7ad34fea4..9418bfb997 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -18,6 +18,7 @@ Tie::set_head (Direction d, Note_head * head_l) { assert (!head_l_drul_[d]); head_l_drul_[d] = head_l; + set_bounds (d, head_l); add_dependency (head_l); } @@ -29,11 +30,16 @@ Tie::Tie() same_pitch_b_ =false; } + +/* + ugh: direction of the Tie is more complicated. See [Ross] p136 and further + */ void Tie::set_default_dir() { - int m= (head_l_drul_[LEFT]->position_i_ + head_l_drul_[RIGHT]->position_i_) /2; - dir_ = (m < 5)? DOWN : UP; // UGH + int m= (head_l_drul_[LEFT]->position_i_ + + head_l_drul_[RIGHT]->position_i_) /2; + dir_ = (m < 0)? DOWN : UP; } void @@ -42,8 +48,13 @@ Tie::do_add_processing() if (!(head_l_drul_[LEFT] && head_l_drul_[RIGHT])) warning (_("Lonely tie.. ")); - set_bounds(LEFT,head_l_drul_[LEFT]); - set_bounds(RIGHT,head_l_drul_[RIGHT]); + Direction d = LEFT; + Drul_array new_head_drul = head_l_drul_; + do { + if (!head_l_drul_[d]) + new_head_drul[d] = head_l_drul_[(Direction)-d]; + } while ((d *= -1) != LEFT); + head_l_drul_ = new_head_drul; } void