From: fred Date: Sun, 24 Mar 2002 20:12:51 +0000 (+0000) Subject: lilypond-1.0.1 X-Git-Tag: release/1.5.59~3035 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=35ff4517e52e7345fd919ce58748fd443c48c057;p=lilypond.git lilypond-1.0.1 --- diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index b95f5fd41e..f973976774 100644 --- a/lily/break-align-item.cc +++ b/lily/break-align-item.cc @@ -3,16 +3,18 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "break-align-item.hh" +#include "dimension.hh" void Break_align_item::do_pre_processing() { - - align_i_ = break_status_i(); + align_dir_ = break_status_dir(); + threshold_interval_[SMALLER] = 1.5 PT; + flip (&align_dir_); Horizontal_align_item::do_pre_processing(); } diff --git a/lily/clef-item.cc b/lily/clef-item.cc index 234b85fbb4..285d904a09 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include @@ -12,18 +12,19 @@ #include "molecule.hh" #include "paper-def.hh" #include "lookup.hh" -#include "clef-grav.hh" +#include "clef-engraver.hh" #include "text-item.hh" void Clef_item::do_pre_processing() { - change_b_ = ! (break_status_i() == 1); + bool b= (break_status_dir() != RIGHT); + change_b_ = b; if (default_b_) { - set_empty(break_status_i() != 1); - transparent_b_ = (break_status_i() != 1); + set_empty(b); + transparent_b_ = b; } } @@ -33,107 +34,21 @@ Clef_item::Clef_item() default_b_ = false; change_b_ = true; octave_dir_ = CENTER; - read ("violin"); + symbol_ = "violin"; + y_position_i_ = -2; + // Ugh: This should be const, I guess. - octave_marker_td_p_ = new Text_def(); + octave_marker_td_p_.set_p (new Text_def()); octave_marker_td_p_->text_str_ = "8"; octave_marker_td_p_->style_str_ = "italic"; } -/* - * Convert input clef string to - * a clef symbol and a line position. - * This would be better done in the lexer (more efficient) - * or as a table-lookup. - */ -void -Clef_item::read (String t) -{ - symbol_= t; - if (t == "violin") - { - y_position_i_ = -2; - } - else if (t == "bass") - { - y_position_i_ = 2; - } - else if (t == "G" || t == "G2" || t == "treble") - { - symbol_ = "violin"; - y_position_i_ = -2; - } - else if (t == "french" || t == "G1") - { - symbol_="violin"; - y_position_i_ = -4; - } - else if (t == "soprano" || t == "C1") - { - symbol_="alto"; - y_position_i_ = -4; - } - else if (t == "mezzosoprano" || t == "C2") - { - symbol_ = "alto"; - y_position_i_ = -2; - } - else if (t == "alto") - { - symbol_ = "alto"; - y_position_i_ = 0; - } - else if (t == "C3") - { - symbol_ = "alto"; - y_position_i_ = 0; - } - else if (t == "tenor" || t == "C4") - { - symbol_ = "alto"; - y_position_i_ = 2; - } - else if (t == "baritone" || t == "C5") - { - symbol_ = "alto"; - y_position_i_ = 4; - } - else if (t == "varbaritone" || t == "F3") - { - symbol_ = "bass"; - y_position_i_ = 0; - } - else if (t == "F" || t == "F4") - { - symbol_ = "bass"; - y_position_i_ = 2; - } - else if (t == "subbass") - { - symbol_ = "bass"; - y_position_i_ = 4; - } - else if (isdigit(t[1])) - switch (t[0]) - { // we've already dealt with plain F, G or C clef - // position 0 is line 3. - case 'G': - case 'g': - symbol_ = "violin"; - y_position_i_ = 2 * (t[1] - '0') - 6; - break; - case 'F': - case 'f': - symbol_ = "bass"; - y_position_i_ = 2 * (t[1] - '0') - 6; - break; - } -} void Clef_item::read (Clef_engraver const &k) { - read (k.clef_type_str_); + symbol_ = k.clef_type_str_; + y_position_i_ = k.clef_position_i_; octave_dir_ = k.octave_dir_; } @@ -143,16 +58,26 @@ Clef_item::brew_molecule_p() const String t = symbol_; if (change_b_) t += "_change"; - Atom s = paper()->lookup_l ()->clef (t); + Atom s = lookup_l ()->clef (t); Molecule*output = new Molecule (Atom (s)); output->translate_axis (paper()->internote_f () * y_position_i_, Y_AXIS); - if (octave_dir_) - output->add_at_edge (Y_AXIS, - octave_dir_, - Molecule(octave_marker_td_p_->get_atom(paper(), - CENTER))); + if (octave_dir_) { + Molecule octave_marker = Molecule(octave_marker_td_p_->get_atom(paper(), + CENTER)); + Real offset = output->extent()[Y_AXIS][octave_dir_] + - octave_marker.extent()[Y_AXIS][- octave_dir_]; + if (octave_dir_ == DOWN) + offset += octave_marker.extent()[Y_AXIS][UP] * 0.35 ; + octave_marker.translate_axis (offset, Y_AXIS); + output->add_molecule (octave_marker); + } return output; } IMPLEMENT_IS_TYPE_B1(Clef_item,Item); + +#include "pointer.tcc" +template class P; // ugh + + diff --git a/lily/item.cc b/lily/item.cc index 20f52f0553..ec4a583a07 100644 --- a/lily/item.cc +++ b/lily/item.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ #include "p-score.hh" @@ -13,22 +13,22 @@ // #include "elem-group.hh" #include "spanner.hh" -Item::Item() +Item::Item () { break_priority_i_ = 0; breakable_b_ = false; - break_status_i_ = CENTER; + break_status_dir_ = CENTER; broken_to_drul_[LEFT] = broken_to_drul_[RIGHT]=0; } -IMPLEMENT_IS_TYPE_B1(Item, Score_elem); +IMPLEMENT_IS_TYPE_B1(Item, Score_element); void Item::do_print() const { #ifndef NPRINT DOUT << "breakable_b_: " << breakable_b_ << - " break_status_i_: " <line_l() : 0; + Graphical_axis_group *ga = axis_group_l_a_[X_AXIS]; + + if (!ga) + return 0; + + assert (ga->access_Score_element()); + return ga->access_Score_element ()-> line_l (); } -int -Item::break_status_i() const +Direction +Item::break_status_dir() const { - return break_status_i_; + return break_status_dir_; } void @@ -60,9 +66,9 @@ Item::copy_breakable_items() Direction i=LEFT; do { - Item * item_p = clone()->item (); + Item * item_p = clone()->access_Item (); - item_p->break_status_i_ = i; + item_p->break_status_dir_ = i; pscore_l_->typeset_element (item_p); item_p->handle_prebroken_dependencies(); new_copies[i] =item_p; @@ -85,7 +91,7 @@ Item::do_breakable_col_processing() /* Otherwise the broken items won't be pre_process()'ed. - */ + */ add_dependency (broken_to_drul_[LEFT]); add_dependency (broken_to_drul_[RIGHT]); } @@ -116,16 +122,16 @@ void Item::handle_prebroken_dependencies() { if (breakable_b_) - Score_elem::handle_prebroken_dependencies(); + Score_element::handle_prebroken_dependencies(); } int Item::left_right_compare(Item const *l, Item const *r) { while (!l->is_type_b (Paper_column::static_name ())) - l = l->axis_group_l_a_[X_AXIS]->item(); + l = l->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item (); while (!r->is_type_b (Paper_column::static_name ())) - r = r->axis_group_l_a_[X_AXIS]->item(); + r = r->axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item (); Paper_column *p1 = (Paper_column*)l; Paper_column* p2 = (Paper_column*)r; @@ -136,7 +142,7 @@ Item::left_right_compare(Item const *l, Item const *r) bool Item::linked_b() const { - return Score_elem::linked_b() || attached_span_l_arr_.size(); + return Score_element::linked_b() || attached_span_l_arr_.size(); } void @@ -148,21 +154,38 @@ Item::do_junk_links() void Item::do_unlink() { - Link_array attached = attached_span_l_arr_; + for (int i=0; i < attached_span_l_arr_.size (); i++) + { + Spanner *&s= attached_span_l_arr_[i]; + + Direction d= LEFT; + do { + if (s->spanned_drul_[d] == this) + s->set_bounds (d, 0); - for (int i=0; i < attached_span_l_arr_.size (); i++) { - Spanner *&s= attached_span_l_arr_[i]; - if (s->spanned_drul_[LEFT] == this) - s->set_bounds (LEFT, 0); - if (s->spanned_drul_[RIGHT] == this) - s->set_bounds (RIGHT,0); - s =0; - } + } while ( flip (&d) != LEFT); + } attached_span_l_arr_.set_size (0); } Paper_column * Item::column_l () const { - return axis_group_l_a_[X_AXIS]->item ()->column_l (); + return axis_group_l_a_[X_AXIS]->access_Score_element ()->access_Item ()->column_l (); +} + +Item::Item (Item const &s) + : Score_element (s) +{ + /* do not copy attached_span_l_arr_ */ + breakable_b_ = s.breakable_b_; + broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] =0; + break_status_dir_ = s.break_status_dir_; + break_priority_i_ = s.break_priority_i_; +} + +Item * +Item::access_Item () +{ + return this; }