From: Han-Wen Nienhuys Date: Wed, 24 Nov 1999 10:17:44 +0000 (+0100) Subject: release: 1.3.8 X-Git-Tag: release/1.3.8 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=876ccb4004d92f3b7bd539753f8f9339b7d48490;p=lilypond.git release: 1.3.8 --- diff --git a/AUTHORS.txt b/AUTHORS.txt index e0544a6241..3c9a62d947 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -32,6 +32,9 @@ list is alphabetically ordered. * Michael Krause , breathing signs + * Dirk Lattermann , minor improvements on + accidentals/ties/multi measure rests + * Werner Lemberg , misc bugfixes, some Beam and Stem code. diff --git a/CHANGES b/CHANGES index 1f9988ce1f..04fcd9ab2a 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,14 @@ +pl7.mb1 + - bf: timeSignatureStyle works again +pl 7.hwn1 + - Dirk Latterman key/mmrest patches + - Offset callbacks in Dimension_cache + - Junked Staff_side_* + - Staff_sidify: interface class. + - prelude-{1,2} fixes. + +*********** pl 6.uu2 - bf: PS font selecting. diff --git a/Documentation/programmer/regression-test.tely b/Documentation/programmer/regression-test.tely index 3675d89ca7..2597e5a796 100644 --- a/Documentation/programmer/regression-test.tely +++ b/Documentation/programmer/regression-test.tely @@ -47,6 +47,19 @@ colliding from barlines. @mudelafile{multi-measure-rest.ly} +If @code{Score.skipBars} is set, +the signs for four, two, and one measure rest are combined to +produce the graphical representation of rests for up to 10 bars. +The number of bars will be written above the sign. + +@mudelafile{mm-rest2.ly} + +A sharp sign after a double sharp sign, as well as a flat sign +after a double flat sign is automatically prepended with a +natural sign. + +@mudelafile{double-single-acc.ly} + @section Stems Stem tremolos (official naming?) or rolls are tremolo signs that look diff --git a/Documentation/topdocs/AUTHORS.texi b/Documentation/topdocs/AUTHORS.texi index 7dc58f37de..a9969ccd58 100644 --- a/Documentation/topdocs/AUTHORS.texi +++ b/Documentation/topdocs/AUTHORS.texi @@ -37,6 +37,8 @@ list is alphabetically ordered. mf/ital-*.mf (these were taken from the CM fonts) @item @email{m.krause@@tu-harburg.de, Michael Krause}, breathing signs +@item @email{dlatt@@datenrat.de, Dirk Lattermann}, + minor improvements on accidentals/ties/multi measure rests @item @email{wl@@gnu.org, Werner Lemberg}, misc bugfixes, some Beam and Stem code. @item @email{drl@@vuse.vanderbilt.edu, David R. Linn}, diff --git a/Documentation/user/GNUmakefile b/Documentation/user/GNUmakefile index 24cc5c5cc4..7e2ea57cbe 100644 --- a/Documentation/user/GNUmakefile +++ b/Documentation/user/GNUmakefile @@ -21,7 +21,6 @@ LOCALSTEPMAKE_TEMPLATES=lilypond mudela include $(depth)/make/stepmake.make - dvi: $(DVI_FILES) ps: $(PS_FILES) diff --git a/Documentation/user/lilypond.tely b/Documentation/user/lilypond.tely index 24e06721ab..07cecc95ff 100644 --- a/Documentation/user/lilypond.tely +++ b/Documentation/user/lilypond.tely @@ -75,8 +75,6 @@ Should add disclaimer, abstract "GNU LilyPond has no connection with the music package Rosegarden, other than the names being similar :-)" - - @end ignore @contents diff --git a/Documentation/user/tutorial.itely b/Documentation/user/tutorial.itely index a5d540afc5..cbaa5f041b 100644 --- a/Documentation/user/tutorial.itely +++ b/Documentation/user/tutorial.itely @@ -1,4 +1,3 @@ - @chapter Tutorial diff --git a/TODO b/TODO index 1b7b210072..a3a4e28c82 100644 --- a/TODO +++ b/TODO @@ -62,7 +62,6 @@ ChoirStaff bar line types in the rest of the scores . * make all Feta (including dynamics) available to the user in textual scripts. Examples: "D.S. al \coda", "\mf espress.". - . * Write script that uses --find-old-relative to do auto relativization. . * Junk shared cruft (duration, moment) in lib/ diff --git a/VERSION b/VERSION index 2f0e519cda..d5ceba73aa 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=7 +PATCH_LEVEL=8 MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a diff --git a/input/bugs/k.ly b/input/bugs/k.ly new file mode 100644 index 0000000000..67091644be --- /dev/null +++ b/input/bugs/k.ly @@ -0,0 +1,2 @@ +\score { \notes { +c4 \clef bass ; c4}} diff --git a/input/bugs/knee.ly b/input/bugs/knee.ly new file mode 100644 index 0000000000..eee5e3887e --- /dev/null +++ b/input/bugs/knee.ly @@ -0,0 +1,8 @@ +\version "1.3.5"; +\score{ + \notes\relative c'{ + [c16 \stemdown c'' \stemboth c,, d] + \stemdown [d'' a \stemboth c,, g,] + \stemup [g c' \stemboth a'' d'] + } +} diff --git a/input/test/orchestscore.ly b/input/test/orchestscore.ly index 5bda50efe0..0cfe57e936 100644 --- a/input/test/orchestscore.ly +++ b/input/test/orchestscore.ly @@ -1,7 +1,7 @@ \version "1.3.5"; m = \notes \relative c''{ -c1 | c2 c | c c | c c | c c | c c | c c | c c | +c1 | c2 c | c c | c c | \break c c | c c | c c | c c | } \score{ < @@ -88,6 +88,7 @@ c1 | c2 c | c c | c c | c c | c c | c c | c c | textheight = 260.\mm; \translator { \OrchestralScoreContext + barNumberScriptPadding = 10; minVerticalAlign = 2.2*\staffheight; } \translator { \StaffContext diff --git a/input/test/spacing-tight.ly b/input/test/spacing-tight.ly index 90a6e8bafc..f9cbe7c071 100644 --- a/input/test/spacing-tight.ly +++ b/input/test/spacing-tight.ly @@ -1,6 +1,6 @@ \score { - \notes { \time 2/2; c'2 c'2 \time 2/2; } + \notes { \time 2/2; f''2 c'2 \time 2/2; } \paper { linewidth = 2.5 \cm; indent = 0.0; } diff --git a/input/test/staff-margin.ly b/input/test/staff-margin.ly index f2e5edf033..b6752444ce 100644 --- a/input/test/staff-margin.ly +++ b/input/test/staff-margin.ly @@ -11,6 +11,9 @@ \context Staff = bass { \property Staff.instrument = "Left " \clef bass; c4 }> \paper { +\translator { \ScoreContext + textVerticalAlignment = #0 + } \translator { \StaffContext \consists "Staff_margin_engraver"; } \translator { \PianoStaffContext \consists "Staff_margin_engraver"; } }} diff --git a/input/test/tie-accidental.ly b/input/test/tie-accidental.ly index 162e23d8cf..7b2e9c1c16 100644 --- a/input/test/tie-accidental.ly +++ b/input/test/tie-accidental.ly @@ -1,10 +1,20 @@ -thenotes = \notes \relative cis' { \time 4/4; gis'2 gis ~ | -gis gis4 gis | +thenotes = \notes \relative cis' { \time 4/4; +gis'2 gis ~ | +gis4 gis8 ~ gis g4 gis | g2 gis ~ | gis g4 gis | g2 gis( | -)g gis4 gis | } +)g! gis4 gis | + +\key a \major; +gis2 g ~ | +g4 gis8 ~ gis g4 gis | +g2 gis ~ | +gis g4 gis | +g2 gis( | +)g! gis4 gis | +} \score { < \context Staff \thenotes \context NoteNames \thenotes diff --git a/lily/afm.cc b/lily/afm.cc index e35c6f669e..71a1e25ea9 100644 --- a/lily/afm.cc +++ b/lily/afm.cc @@ -22,7 +22,6 @@ String & Adobe_font_char_metric::name () { return N_; - } int & diff --git a/lily/bar-script-engraver.cc b/lily/bar-script-engraver.cc index 627ca68fc6..243efae34e 100644 --- a/lily/bar-script-engraver.cc +++ b/lily/bar-script-engraver.cc @@ -21,7 +21,6 @@ Bar_script_engraver::Bar_script_engraver () { axis_ = Y_AXIS; - staff_side_p_ = 0; text_p_ =0; hang_on_clef_b_ = false; visibility_lambda_ @@ -48,21 +47,22 @@ void Bar_script_engraver::attach_script_to_item (Item *i) { Axis other_axis = Axis((axis_ + 1)%2); - if (staff_side_p_ && !staff_side_p_->parent_l(other_axis)) + if (text_p_ && !text_p_->parent_l(other_axis)) { - staff_side_p_->set_parent (i,other_axis); - staff_side_p_->set_parent (i,axis_); + text_p_->set_parent (i,other_axis); + text_p_->set_parent (i,axis_); if (!text_p_->parent_l(other_axis)) text_p_->set_parent (i,other_axis); - staff_side_p_->add_support (i); + + Staff_sidify (text_p_).add_support (i); /* - How do we make sure that staff_side_p_ has a dependency from + How do we make sure that text_p_ has a dependency from someone else? We can't use I for that, so we use some other element. */ - // staff_side_p_->set_elt_property ("dangling", SCM_BOOL_T) - get_staff_info ().command_pcol_l ()->add_dependency (staff_side_p_); + // text_p_->set_elt_property ("dangling", SCM_BOOL_T) + get_staff_info ().command_pcol_l ()->add_dependency (text_p_); } } @@ -118,59 +118,42 @@ Bar_script_engraver::do_pre_move_processing () typeset_element (text_p_); text_p_ =0; } - - if (staff_side_p_) - { - typeset_element (staff_side_p_); - staff_side_p_ = 0; - } } void Bar_script_engraver::create_items (Request *rq) { - if (staff_side_p_ || text_p_) + if (text_p_) return; - staff_side_p_ = new Staff_side_item; - staff_side_p_->axis_ = axis_; - staff_side_p_->set_elt_property ("breakable", SCM_BOOL_T); // ugh - - text_p_ = new Text_item; text_p_->set_elt_property ("breakable", SCM_BOOL_T); // ugh + Staff_sidify staffside(text_p_); + staffside.set_axis (axis_); SCM prop = get_property (type_ + "Direction", 0); - if (isdir_b (prop)) + if (!isdir_b (prop)) { - staff_side_p_->set_direction ( to_dir (prop)); - } - else - { - staff_side_p_->set_direction ( UP); + prop = gh_int2scm (UP); } + text_p_->set_elt_property ("direction", prop); - staff_side_p_->set_victim(text_p_); - SCM padding = get_property (type_ + "ScriptPadding", 0); if (gh_number_p(padding)) { - staff_side_p_->set_elt_property ("padding", padding); + text_p_->set_elt_property ("padding", padding); } else { - staff_side_p_ + text_p_ ->set_elt_property ("padding", gh_double2scm(paper_l ()->get_var ("interline"))); } - staff_side_p_->set_elt_property ("visibility-lambda", - visibility_lambda_); text_p_->set_elt_property ("visibility-lambda", visibility_lambda_); announce_element (Score_element_info (text_p_, rq)); - announce_element (Score_element_info (staff_side_p_, rq)); } diff --git a/lily/crescendo.cc b/lily/crescendo.cc index c570a2b153..b8ab2137fa 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -20,9 +20,6 @@ Crescendo::Crescendo () dyn_b_drul_[LEFT] = dyn_b_drul_[RIGHT] =false; } - - - Molecule Crescendo::get_symbol () const { diff --git a/lily/dimension-cache.cc b/lily/dimension-cache.cc index 6fc99bde28..5899d4474a 100644 --- a/lily/dimension-cache.cc +++ b/lily/dimension-cache.cc @@ -8,13 +8,17 @@ #include "dimension-cache.hh" #include "parray.hh" +#include "graphical-element.hh" Dimension_cache::Dimension_cache (Dimension_cache const &d) { init(); callback_l_ = d.callback_l_; empty_b_ = d.empty_b_; - offset_ = d.offset_; //let's hope others will copy the refpoint appropriately. + basic_offset_ = d.basic_offset_; + extra_offset_ = d.extra_offset_; + off_valid_b_ = d.off_valid_b_; + off_callback_l_ = d.off_callback_l_; } Dimension_cache::Dimension_cache () @@ -26,47 +30,45 @@ void Dimension_cache::init() { callback_l_ =0; - offset_ =0.0; + + basic_offset_ =0.0; + extra_offset_ =0.0; + elt_l_ = 0; dim_.set_empty (); parent_l_ =0; valid_b_ = false; empty_b_ = false; + off_valid_b_ = false; + off_callback_l_ =0; } void Dimension_cache::invalidate () { + off_valid_b_ =false; valid_b_ = false; - invalidate_dependencies (); } -void -Dimension_cache::invalidate_dependencies () -{ - for (int i=0; i < dependencies_l_arr_.size (); i++) - { - Dimension_cache * g = dependencies_l_arr_[i]; - if (g->valid_b_) - { - g->invalidate (); - } - } -} void Dimension_cache::set_offset (Real x) { - invalidate_dependencies (); - offset_ = x; + // ugh! + /* + + UGH ! UGH ! + + */ + + basic_offset_ = x; } void Dimension_cache::translate (Real x) { - invalidate_dependencies (); - offset_ += x; + basic_offset_ += x; } Real @@ -81,9 +83,31 @@ Dimension_cache::relative_coordinate (Dimension_cache *refp) const */ if (refp == parent_l_) - return offset_; + return get_offset (); + else + return get_offset () + parent_l_->relative_coordinate (refp); +} + +Axis +Dimension_cache::axis () const +{ + if (elt_l_-> dim_cache_[X_AXIS] == this) + return X_AXIS; else - return offset_ + parent_l_->relative_coordinate (refp); + return Y_AXIS; +} + +Real +Dimension_cache::get_offset () const +{ + if (!off_valid_b_ && off_callback_l_ ) + { + Dimension_cache *d = (Dimension_cache*) this; + d->off_valid_b_ = true; + d->basic_offset_ = (*off_callback_l_) (d); + } + + return basic_offset_ + extra_offset_; } Dimension_cache * @@ -142,3 +166,8 @@ Dimension_cache::set_callback (Dim_cache_callback c) callback_l_ =c; } +void +Dimension_cache::set_offset_callback (Offset_cache_callback c) +{ + off_callback_l_ =c; +} diff --git a/lily/directional-element.cc b/lily/directional-element.cc index 7d9e9a666a..83a4aaecb5 100644 --- a/lily/directional-element.cc +++ b/lily/directional-element.cc @@ -8,7 +8,7 @@ */ #include "directional-element.hh" -#include "property-inspect.hh" + Directional_element::Directional_element () { diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index 8202c7157b..101837a9cb 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -25,13 +25,9 @@ class Dynamic_engraver : public Engraver { Text_item * text_p_; - Staff_side_item * staff_side_p_; - Staff_side_spanner * ss_span_p_; - Staff_side_spanner * to_end_ss_span_p_; - - Crescendo * to_end_cresc_p_; Crescendo * cresc_p_; + Span_req * cresc_req_l_; Array dynamic_req_l_arr_; void typeset_all (); @@ -54,9 +50,9 @@ Dynamic_engraver::Dynamic_engraver() { do_post_move_processing(); text_p_ =0; - staff_side_p_ =0; + to_end_cresc_p_ = cresc_p_ = 0; - ss_span_p_ = to_end_ss_span_p_=0; + cresc_req_l_ = 0; } @@ -98,7 +94,7 @@ void Dynamic_engraver::do_process_requests() { Crescendo* new_cresc_p=0; - Staff_side_spanner * new_sss_p =0; + for (int i=0; i < dynamic_req_l_arr_.size(); i++) { if (Text_script_req *absd = @@ -115,39 +111,36 @@ Dynamic_engraver::do_process_requests() text_p_ = new Text_item; text_p_->text_str_ = loud; // ugh text_p_->set_elt_property ("style", gh_str02scm ("dynamic")); - - staff_side_p_ = new Staff_side_item; - staff_side_p_->set_elt_property ("script-priority", - gh_int2scm (100)); - - staff_side_p_->set_victim (text_p_); - staff_side_p_->axis_ = Y_AXIS; - staff_side_p_->set_direction (DOWN); + text_p_->set_elt_property ("script-priority", + gh_int2scm (100)); + Staff_sidify (text_p_).set_axis (Y_AXIS); - SCM prop = get_property ("verticalDirection", 0); - if (isdir_b (prop)) + if (absd->get_direction ()) { - staff_side_p_->set_direction (to_dir (prop)); + text_p_->set_elt_property ("direction", gh_int2scm (absd->get_direction ())); } - prop = get_property ("dynamicDirection", 0); - if (gh_number_p(prop)) - { - staff_side_p_->set_direction (to_dir (prop)); - } - if (absd->get_direction ()) + + /* + UGH UGH + */ + SCM prop = get_property ("dynamicDirection", 0); + if (!isdir_b (prop)) { - staff_side_p_->set_direction (absd->get_direction ()); + prop = get_property ("verticalDirection", 0); } + if (isdir_b (prop) && to_dir (prop)) + text_p_->set_elt_property ("direction", prop); + + prop = get_property ("dynamicPadding", 0); if (gh_number_p(prop)) { - staff_side_p_->set_elt_property ("padding", prop); + text_p_->set_elt_property ("padding", prop); } announce_element (Score_element_info (text_p_, absd)); - announce_element (Score_element_info (staff_side_p_, absd)); } else if (Span_req *span_l = dynamic_cast (dynamic_req_l_arr_[i])) @@ -162,29 +155,8 @@ Dynamic_engraver::do_process_requests() { assert (!to_end_cresc_p_); to_end_cresc_p_ =cresc_p_; - to_end_ss_span_p_ = ss_span_p_ ; cresc_p_ = 0; - ss_span_p_ =0; - - - - - SCM prop = get_property ("verticalDirection", 0); - if (isdir_b (prop)) - { - to_end_ss_span_p_->set_direction (to_dir (prop)); - } - prop = get_property ("dynamicDirection", 0); - if (isdir_b (prop)) - { - to_end_ss_span_p_->set_direction (to_dir (prop)); - } - prop = get_property ("dynamicPadding", 0); - if (gh_number_p(prop)) - { - to_end_ss_span_p_->set_elt_property ("padding",prop); - } } } else if (span_l->span_dir_ == START) @@ -193,14 +165,9 @@ Dynamic_engraver::do_process_requests() assert (!new_cresc_p); new_cresc_p = new Crescendo; new_cresc_p->grow_dir_ = (span_l->span_type_str_ == "crescendo") ? BIGGER : SMALLER; - announce_element (Score_element_info (new_cresc_p, span_l)); - new_sss_p = new Staff_side_spanner; - new_sss_p->set_victim (new_cresc_p); - new_sss_p->axis_ = Y_AXIS; - // UGH.! - // new_sss_p->set_elt_property ("dangling", SCM_BOOL_T); - announce_element (Score_element_info (new_sss_p, span_l)); + Staff_sidify (new_cresc_p).set_axis (Y_AXIS); + announce_element (Score_element_info (new_cresc_p, span_l)); } } } @@ -211,15 +178,13 @@ Dynamic_engraver::do_process_requests() { ::warning (_ ("Too many crescendi here")); typeset_element (cresc_p_); - typeset_element (ss_span_p_); + cresc_p_ = 0; - ss_span_p_ =0; } cresc_p_ = new_cresc_p; - ss_span_p_ = new_sss_p; cresc_p_->set_bounds(LEFT,get_staff_info().musical_pcol_l ()); - ss_span_p_->set_bounds (LEFT,get_staff_info().musical_pcol_l ()); + if (text_p_) { cresc_p_->dyn_b_drul_[LEFT] = true; @@ -245,8 +210,6 @@ Dynamic_engraver::do_removal_processing () if (cresc_p_) { typeset_element (cresc_p_ ); - typeset_element (ss_span_p_); - ss_span_p_ =0; cresc_req_l_->warning (_ ("unended crescendo")); cresc_p_ =0; } @@ -260,19 +223,17 @@ Dynamic_engraver::typeset_all () if (to_end_cresc_p_) { to_end_cresc_p_->set_bounds(RIGHT,get_staff_info().musical_pcol_l ()); - to_end_ss_span_p_->set_bounds(RIGHT,get_staff_info().musical_pcol_l ()); + typeset_element (to_end_cresc_p_); - typeset_element (to_end_ss_span_p_); + to_end_cresc_p_ =0; - to_end_ss_span_p_ =0; + } if (text_p_) { typeset_element (text_p_); - typeset_element (staff_side_p_); text_p_ =0; - staff_side_p_ =0; } } @@ -284,14 +245,14 @@ Dynamic_engraver::acknowledge_element (Score_element_info i) || dynamic_cast (i.elem_l_) ) { - if (staff_side_p_) - staff_side_p_->add_support (i.elem_l_); + if (text_p_) + Staff_sidify (text_p_).add_support (i.elem_l_); - if (to_end_ss_span_p_) - to_end_ss_span_p_->add_support (i.elem_l_); + if (to_end_cresc_p_) + Staff_sidify (to_end_cresc_p_).add_support (i.elem_l_); - if (ss_span_p_) - ss_span_p_->add_support (i.elem_l_); + if (cresc_p_) + Staff_sidify(cresc_p_).add_support (i.elem_l_); } } diff --git a/lily/graphical-axis-group.cc b/lily/graphical-axis-group.cc index 71f6def061..e0cfcaf1ef 100644 --- a/lily/graphical-axis-group.cc +++ b/lily/graphical-axis-group.cc @@ -61,7 +61,7 @@ Graphical_axis_group::add_element (Graphical_element*e, Axis a1 , Axis a2) e->set_parent (this, as[i]); - e->dim_cache_[as[i]]->dependencies_l_arr_.push (dim_cache_[as[i]]); + // e->dim_cache_[as[i]]->dependencies_l_arr_.push (dim_cache_[as[i]]); } assert (e->parent_l(Y_AXIS) == this || e->parent_l (X_AXIS) == this); elem_l_arr_.push (e); @@ -92,7 +92,7 @@ Graphical_axis_group::do_remove (Graphical_element *e) if (e->parent_l (a) != this) continue; e->set_parent (0, a); - e->dim_cache_[a]->dependencies_l_arr_.clear (); + // e->dim_cache_[a]->dependencies_l_arr_.clear (); } } diff --git a/lily/include/bar-script-engraver.hh b/lily/include/bar-script-engraver.hh index a3642a29a6..727fa6e0f1 100644 --- a/lily/include/bar-script-engraver.hh +++ b/lily/include/bar-script-engraver.hh @@ -21,7 +21,6 @@ class Bar_script_engraver : public Engraver public: VIRTUAL_COPY_CONS(Translator); protected: - Staff_side_item* staff_side_p_; Text_item* text_p_; Protected_scm visibility_lambda_; String type_; diff --git a/lily/include/crescendo.hh b/lily/include/crescendo.hh index f0364a2c03..237cc49984 100644 --- a/lily/include/crescendo.hh +++ b/lily/include/crescendo.hh @@ -10,11 +10,13 @@ #ifndef CRESCENDO_HH #define CRESCENDO_HH -#include "spanner.hh" +#include "directional-spanner.hh" /** The hairpin symbol. (cresc) + + (normal spanner?) */ -class Crescendo : public Spanner { +class Crescendo : public Directional_spanner { public: int grow_dir_; diff --git a/lily/include/dimension-cache.hh b/lily/include/dimension-cache.hh index d8b998132f..e63ffc9ee2 100644 --- a/lily/include/dimension-cache.hh +++ b/lily/include/dimension-cache.hh @@ -16,7 +16,8 @@ #include "parray.hh" class Dimension_cache; -typedef Interval (*Dim_cache_callback)(Dimension_cache *); +typedef Interval (*Dim_cache_callback)(Dimension_cache const *); +typedef Real (*Offset_cache_callback)(Dimension_cache const *); /** Adminstration of offset dimension info. @@ -32,20 +33,30 @@ class Dimension_cache /** The offset wrt. to the center of #parent_l_# */ - Real offset_; + + Real extra_offset_; + Real basic_offset_; + + bool off_valid_b_; + + Graphical_element *elt_l_; Dim_cache_callback callback_l_; friend class Graphical_element; void init (); public: + Offset_cache_callback off_callback_l_; + + Axis axis () const; + Real get_offset () const; void set_callback (Dim_cache_callback); /** The #offset_# is defined with regard to this graphical_element/ dimension_cache. */ - + void set_offset_callback (Offset_cache_callback); Dimension_cache * parent_l_; - Link_array dependencies_l_arr_; - Graphical_element *element_l () { return elt_l_; } + + Graphical_element *element_l () const { return elt_l_; } void invalidate (); void invalidate_dependencies (); diff --git a/lily/include/key.hh b/lily/include/key.hh index af89371f22..aa93545331 100644 --- a/lily/include/key.hh +++ b/lily/include/key.hh @@ -15,6 +15,7 @@ class Octave_key { public: Array accidental_i_arr_; + Array internal_forceacc_b_arr_; void clear (); Octave_key(); void set (int i, int acc); @@ -36,8 +37,12 @@ public: Octave_key const& oct (int) const; void set (int name, int acc); void set (Musical_pitch); + void set_internal_forceacc (Musical_pitch); + void clear_internal_forceacc (Musical_pitch); bool different_acc (Musical_pitch) const; + bool internal_forceacc (Musical_pitch) const; + bool double_to_single_acc (Musical_pitch) const; Key(); void print () const; diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 696e5a3739..ddb21f4c5c 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -36,6 +36,8 @@ SCM array_to_list (SCM *a , int l); void read_lily_scm_file (String); void init_lily_guile (); +bool isdir_b (SCM s); +Direction to_dir (SCM s); void init_ly_protection (); @@ -60,4 +62,5 @@ public:\ /* end define */ + #endif // LILY_GUILE_HH diff --git a/lily/include/local-key-item.hh b/lily/include/local-key-item.hh index b11793cd92..931c984c6e 100644 --- a/lily/include/local-key-item.hh +++ b/lily/include/local-key-item.hh @@ -16,10 +16,12 @@ struct Local_key_cautionary_tuple { Musical_pitch pitch_; bool cautionary_b_; + bool natural_b_; Local_key_cautionary_tuple () { cautionary_b_ = false; + natural_b_ = false; } static int compare (Local_key_cautionary_tuple const&s1, Local_key_cautionary_tuple const&s2) { @@ -45,7 +47,7 @@ class Local_key_item : public Note_head_side, public Staff_symbol_referencer { public: int c0_position_i_; Local_key_item (); - void add_pitch (Musical_pitch, bool cautionary); + void add_pitch (Musical_pitch, bool cautionary, bool natural); protected: virtual void do_pre_processing(); virtual void do_substitute_element_pointer (Score_element*,Score_element*); diff --git a/lily/include/property-inspect.hh b/lily/include/property-inspect.hh index 31d26ac3e9..3188ddbfa4 100644 --- a/lily/include/property-inspect.hh +++ b/lily/include/property-inspect.hh @@ -13,8 +13,6 @@ #include "direction.hh" #include "lily-guile.hh" -bool isdir_b (SCM s); -Direction to_dir (SCM s); #endif /* PROPERTY_INSPECT_HH */ diff --git a/lily/include/rhythmic-head.hh b/lily/include/rhythmic-head.hh index 3d912e0cb0..25d63ecd14 100644 --- a/lily/include/rhythmic-head.hh +++ b/lily/include/rhythmic-head.hh @@ -17,9 +17,8 @@ class Rhythmic_head : public Item, public Staff_symbol_referencer { public: Stem * stem_l_; - int balltype_i_; - Dots * dots_l_; + int balltype_i_; void add_dots (Dots *); Rhythmic_head (); diff --git a/lily/include/score-element.hh b/lily/include/score-element.hh index 55fe6efa2b..79a3daca6c 100644 --- a/lily/include/score-element.hh +++ b/lily/include/score-element.hh @@ -101,7 +101,7 @@ public: #funcptr# is the function to call to update this element. */ void calculate_dependencies (int final, int busy, Score_element_method_pointer funcptr); - + static SCM handle_broken_smobs (SCM, Line_of_score*); virtual Score_element *find_broken_piece (Line_of_score*) const; protected: @@ -131,9 +131,6 @@ protected: /// generate rods & springs virtual void do_space_processing (); - /// do postbreak substs on array of pointers. - virtual void do_substitute_arrays (); - virtual void do_breakable_col_processing (); /// do calculations after determining horizontal spacing virtual void do_post_processing (); @@ -146,7 +143,7 @@ protected: virtual void handle_broken_dependents (); virtual Link_array get_extra_dependencies () const; - static Interval dim_cache_callback (Dimension_cache*); + static Interval dim_cache_callback (Dimension_cache const*); public: DECLARE_SMOBS; diff --git a/lily/include/script-engraver.hh b/lily/include/script-engraver.hh index fef7fce66b..9cdb243775 100644 --- a/lily/include/script-engraver.hh +++ b/lily/include/script-engraver.hh @@ -13,7 +13,6 @@ class Script_engraver : public Engraver { Link_array