From 56d667b784d1cb93e0e860702ac807c4f674db2c Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Mon, 29 Sep 2003 22:39:08 +0000 Subject: [PATCH] * lily/include/directional-element-interface.hh: junk class, make {get,set}_grob_direction functions. * lily/slur.cc (get_attachment): do something sensible when attaching to stem without heads (eg. a rest). * lily/stem.cc: remove #'up-to-staff ; use #'stem-end for forcing up to staff. Add #'rests. remove #'support-head property (brew_molecule): small cleanup. (flag): remove #'grace property. --- ChangeLog | 3 +++ lily/beam.cc | 13 ++++++------ lily/breathing-sign.cc | 4 ++-- lily/directional-element-interface.cc | 20 +++---------------- lily/dots.cc | 6 +++--- lily/dynamic-engraver.cc | 4 ++-- lily/horizontal-bracket.cc | 2 +- lily/include/directional-element-interface.hh | 11 ++-------- lily/side-position-interface.cc | 2 +- lily/slur.cc | 18 ++++++++--------- lily/stem.cc | 10 +++++----- lily/tie-column.cc | 14 ++++++------- lily/tie.cc | 14 ++++++------- lily/tuplet-bracket.cc | 12 +++++------ 14 files changed, 57 insertions(+), 76 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5e11ed1ec8..473776ac14 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2003-09-30 Han-Wen Nienhuys + * lily/include/directional-element-interface.hh: + junk class, make {get,set}_grob_direction functions. + * lily/slur.cc (get_attachment): do something sensible when attaching to stem without heads (eg. a rest). diff --git a/lily/beam.cc b/lily/beam.cc index 3b04092c51..d39892847f 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -236,7 +236,7 @@ Beam::connect_beams (Grob *me) Grob *this_stem = stems[i]; SCM this_beaming = this_stem->get_grob_property ("beaming"); - Direction this_dir = Directional_element_interface::get(this_stem); + Direction this_dir = get_grob_direction (this_stem); if (gh_pair_p (last_beaming) && gh_pair_p (this_beaming)) { int start_point = position_with_maximal_common_beams @@ -530,7 +530,7 @@ Beam::get_default_dir (Grob *me) for (int i=0; i ? 0; int current = sd ? (1 + d * sd)/2 : center_distance; @@ -572,7 +572,7 @@ Beam::set_stem_directions (Grob *me, Direction d) SCM forcedir = s->get_grob_property ("direction"); if (!to_dir (forcedir)) - Directional_element_interface::set (s, d); + set_grob_direction (s, d); } } @@ -1223,7 +1223,7 @@ Beam::calc_stem_y (Grob *me, Grob* s, Grob ** common, * dy : 0) + pos[LEFT]; - Direction my_dir = Directional_element_interface::get (s); + Direction my_dir = get_grob_direction (s); SCM beaming = s->get_grob_property ("beaming"); Real stem_y = stem_y_beam0; @@ -1298,7 +1298,7 @@ Beam::set_stem_lengths (Grob *me) for normal beams, but for tremolo beams it looks silly otherwise. */ if (gap) - stem_y += thick * 0.5 * Directional_element_interface::get(s); + stem_y += thick * 0.5 * get_grob_direction (s); Stem::set_stemend (s, 2* stem_y / staff_space); } @@ -1504,8 +1504,7 @@ Beam::knee_b (Grob* me) int d = 0; for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = ly_cdr (s)) { - Direction dir = Directional_element_interface::get - (unsmob_grob (ly_car (s))); + Direction dir = get_grob_direction (unsmob_grob (ly_car (s))); if (d && d != dir) { knee = true; diff --git a/lily/breathing-sign.cc b/lily/breathing-sign.cc index 30e24dfb39..ede4b2f8b9 100644 --- a/lily/breathing-sign.cc +++ b/lily/breathing-sign.cc @@ -178,11 +178,11 @@ Breathing_sign::offset_callback (SCM element_smob, SCM) { Grob *me = unsmob_grob (element_smob); - Direction d = Directional_element_interface::get (me); + Direction d = get_grob_direction (me); if (!d) { d = UP; - Directional_element_interface::set (me, d); + set_grob_direction (me, d); } Real inter_f = Staff_symbol_referencer::staff_space (me)/2; diff --git a/lily/directional-element-interface.cc b/lily/directional-element-interface.cc index dec6d49ce3..230bcc8cd0 100644 --- a/lily/directional-element-interface.cc +++ b/lily/directional-element-interface.cc @@ -10,18 +10,9 @@ #include "directional-element-interface.hh" - - -bool -Directional_element_interface::has_interface (Grob*me) -{ - return is_direction (me->get_grob_property ("direction")); -} - Direction -Directional_element_interface::get (Grob*me) +get_grob_direction (Grob*me) { - // return dir_; SCM d= me->get_grob_property ("direction"); if (!is_direction (d)) return CENTER; @@ -30,13 +21,8 @@ Directional_element_interface::get (Grob*me) } void -Directional_element_interface::set (Grob*me, Direction d) +set_grob_direction (Grob*me, Direction d) { SCM sd = gh_int2scm (d); - - /* - Vain attempt to save some conses. - */ - if (me->get_grob_property ("direction") != sd) - me->set_grob_property ("direction", sd); + me->set_grob_property ("direction", sd); } diff --git a/lily/dots.cc b/lily/dots.cc index b6343f17b4..c719730547 100644 --- a/lily/dots.cc +++ b/lily/dots.cc @@ -27,11 +27,11 @@ Dots::quantised_position_callback (SCM element_smob, SCM axis) SCM d= me->get_grob_property ("dot-count"); if (gh_number_p (d) && gh_scm2int (d)) { - if (!Directional_element_interface::get (me)) - Directional_element_interface::set (me, UP); + if (!get_grob_direction (me)) + set_grob_direction (me, UP); if (Staff_symbol_referencer::on_staffline (me)) - return gh_double2scm (Staff_symbol_referencer::staff_space (me) / 2.0 * Directional_element_interface::get (me)); + return gh_double2scm (Staff_symbol_referencer::staff_space (me) / 2.0 * get_grob_direction (me)); } return gh_double2scm (0.0); diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index 3344f8753e..a8bb1d2f89 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -170,7 +170,7 @@ Dynamic_engraver::process_music () if (Direction d = to_dir (script_ev_->get_mus_property ("direction"))) - Directional_element_interface::set (line_spanner_, d); + set_grob_direction (line_spanner_, d); Axis_group_interface::add_element (line_spanner_, script_); @@ -227,7 +227,7 @@ Dynamic_engraver::process_music () current_cresc_ev_ = accepted_spanreqs_drul_[START]; if (Direction d = to_dir (current_cresc_ev_->get_mus_property ("direction"))) - Directional_element_interface::set (line_spanner_, d); + set_grob_direction (line_spanner_, d); /* TODO: Use symbols. diff --git a/lily/horizontal-bracket.cc b/lily/horizontal-bracket.cc index d125911322..6f4dbc09db 100644 --- a/lily/horizontal-bracket.cc +++ b/lily/horizontal-bracket.cc @@ -50,7 +50,7 @@ Horizontal_bracket::brew_molecule (SCM smob) Interval ext = gs.top()->extent (cx, X_AXIS); ext.unite (gs[0]->extent (cx, X_AXIS)); - Direction d = Directional_element_interface::get (me); + Direction d = get_grob_direction (me); Real t = me->get_paper()->get_realvar (ly_symbol2scm ("linethickness")); SCM lthick = me->get_grob_property ("thickness"); diff --git a/lily/include/directional-element-interface.hh b/lily/include/directional-element-interface.hh index ea77c3dc55..91336308c5 100644 --- a/lily/include/directional-element-interface.hh +++ b/lily/include/directional-element-interface.hh @@ -12,15 +12,8 @@ #include "grob.hh" -struct Directional_element_interface -{ -public: - - static void set (Grob*,Direction d); - static Direction get (Grob*) ; - static bool has_interface (Grob*) ; -}; - +void set_grob_direction (Grob*, Direction); +Direction get_grob_direction (Grob*); #endif /* DIRECTIONAL_ELEMENT_HH */ diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc index 103593b686..592d53834f 100644 --- a/lily/side-position-interface.cc +++ b/lily/side-position-interface.cc @@ -42,7 +42,7 @@ Side_position_interface::get_direction (Grob*me) Grob * e = unsmob_grob (other_elt); if (e) { - return (Direction) (relative_dir * Directional_element_interface::get (e)); + return (Direction) (relative_dir * get_grob_direction (e)); } return CENTER; diff --git a/lily/slur.cc b/lily/slur.cc index c3d7b1e2c1..5a42fcb7da 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -160,7 +160,7 @@ Slur::check_slope (Grob *me) o[RIGHT] = ly_scm2offset (index_get_cell (a, RIGHT)); o[d][Y_AXIS] -= (limit - slope) * dx * dir / staff_space; - o[d][Y_AXIS] *= Directional_element_interface::get (me); + o[d][Y_AXIS] *= get_grob_direction (me); me->set_grob_property ("attachment-offset", gh_cons (ly_offset2scm (o[LEFT]), @@ -176,8 +176,8 @@ Slur::check_slope (Grob *me) SCM Slur::set_extremities (Grob *me) { - if (!Directional_element_interface::get (me)) - Directional_element_interface::set (me, get_default_dir (me)); + if (!get_grob_direction (me)) + set_grob_direction (me, get_default_dir (me)); SCM att = me->get_grob_property ("attachment"); /* @@ -415,7 +415,7 @@ Slur::encompass_offset (Grob*me, Offset o; Grob* stem = unsmob_grob (col->get_grob_property ("stem")); - Direction dir = Directional_element_interface::get (me); + Direction dir = get_grob_direction (me); if (!stem) { @@ -424,7 +424,7 @@ Slur::encompass_offset (Grob*me, o[Y_AXIS] = col->relative_coordinate (common[Y_AXIS], Y_AXIS); return o; } - Direction stem_dir = Directional_element_interface::get (stem); + Direction stem_dir = get_grob_direction (stem); o[X_AXIS] = stem->relative_coordinate (0, X_AXIS); /* @@ -561,7 +561,7 @@ Slur::brew_molecule (SCM smob) if (gh_number_p (d)) a = Lookup::dashed_slur (one, thick, thick * gh_scm2double (d)); else - a = Lookup::slur (one, Directional_element_interface::get (me) * thick, thick); + a = Lookup::slur (one, get_grob_direction (me) * thick, thick); return a.smobbed_copy (); } @@ -579,7 +579,7 @@ Slur::set_control_points (Grob*me) Real h_inf = staff_space * gh_scm2double (h_inf_scm); Slur_bezier_bow bb (get_encompass_offsets (me), - Directional_element_interface::get (me), + get_grob_direction (me), h_inf, r_0); @@ -646,7 +646,7 @@ Slur::get_curve (Grob*me) attach = set_extremities(me); - if (!Directional_element_interface::get (me) + if (!get_grob_direction (me) || ! gh_symbol_p (index_get_cell (attach, LEFT)) || ! gh_symbol_p (index_get_cell (attach, RIGHT))) set_extremities (me); @@ -665,7 +665,7 @@ Slur::get_curve (Grob*me) } Array enc (get_encompass_offsets (me)); - Direction dir = Directional_element_interface::get (me); + Direction dir = get_grob_direction (me); Real x1 = enc[0][X_AXIS]; Real x2 = enc.top ()[X_AXIS]; diff --git a/lily/stem.cc b/lily/stem.cc index 968339aec4..e4a8950024 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -97,13 +97,13 @@ Stem::stem_end_position (Grob*me) Direction Stem::get_direction (Grob*me) { - Direction d = Directional_element_interface::get (me); + Direction d = get_grob_direction (me); if (!d) { d = get_default_dir (me); // urg, AAARGH! - Directional_element_interface::set (me, d); + set_grob_direction (me, d); } return d ; } @@ -308,7 +308,7 @@ Stem::get_default_stem_end_position (Grob*me) if (!dir) { dir = get_default_dir (me); - Directional_element_interface::set (me, dir); + set_grob_direction (me, dir); } @@ -822,7 +822,7 @@ Stem::get_stem_info (Grob *me) } Stem_info si; - si.dir_ = Directional_element_interface::get (me); + si.dir_ = get_grob_direction (me); si.ideal_y_ = gh_scm2double (gh_car (scm_info)); si.shortest_y_ = gh_scm2double (gh_cadr (scm_info)); return si; @@ -835,7 +835,7 @@ Stem::get_stem_info (Grob *me) void Stem::calc_stem_info (Grob *me) { - Direction my_dir = Directional_element_interface::get (me); + Direction my_dir = get_grob_direction (me); Real staff_space = Staff_symbol_referencer::staff_space (me); Grob *beam = get_beam (me); Real beam_translation = Beam::get_beam_translation (beam); diff --git a/lily/tie-column.cc b/lily/tie-column.cc index 6d4ad0e293..0f43e88515 100644 --- a/lily/tie-column.cc +++ b/lily/tie-column.cc @@ -60,7 +60,7 @@ Tie_column::set_directions (Grob*me) Pointer_group_interface__extract_grobs (me, (Grob*)0, "ties"); for (int i = ties.size (); i--;) - if (Directional_element_interface::get (ties[i])) + if (get_grob_direction (ties[i])) ties.del (i); @@ -68,13 +68,13 @@ Tie_column::set_directions (Grob*me) return ; - Direction d = Directional_element_interface::get (me); + Direction d = get_grob_direction (me); if (d) { for (int i = ties.size (); i--;) { Grob * t = ties[i]; - Directional_element_interface::set (t, d); + set_grob_direction (t, d); } return; } @@ -82,15 +82,15 @@ Tie_column::set_directions (Grob*me) if (ties.size () == 1) { Grob * t = ties[0]; - Directional_element_interface::set (t,Tie::get_default_dir (t)); + set_grob_direction (t,Tie::get_default_dir (t)); return; } ties.sort (tie_compare); - Directional_element_interface::set (ties[0], DOWN); + set_grob_direction (ties[0], DOWN); ties.del (0); - Directional_element_interface ::set (ties.pop (), UP); + set_grob_direction (ties.pop (), UP); for (int i=ties.size (); i--;) { Grob * t = ties[i]; @@ -98,7 +98,7 @@ Tie_column::set_directions (Grob*me) Direction d = (Direction) sign (p); if (!d) d = UP; - Directional_element_interface::set (t, d); + set_grob_direction (t, d); } } diff --git a/lily/tie.cc b/lily/tie.cc index f314d8bc17..e82516c569 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -86,14 +86,14 @@ Tie::get_default_dir (Grob*me) if (sl && sr) { - if (Directional_element_interface::get (sl) == UP - && Directional_element_interface::get (sr) == UP) + if (get_grob_direction (sl) == UP + && get_grob_direction (sr) == UP) return DOWN; } else if (sl || sr) { Item *s = sl ? sl : sr; - return - Directional_element_interface::get (s); + return - get_grob_direction (s); } @@ -122,9 +122,9 @@ Tie::get_control_points (SCM smob) } - if (!Directional_element_interface::get (me)) - Directional_element_interface::set (me, Tie::get_default_dir (me)); - Direction dir = Directional_element_interface::get (me); + if (!get_grob_direction (me)) + set_grob_direction (me, Tie::get_default_dir (me)); + Direction dir = get_grob_direction (me); Real staff_space = Staff_symbol_referencer::staff_space (me); @@ -327,7 +327,7 @@ Tie::brew_molecule (SCM smob) i++; } - Molecule a = Lookup::slur (b, Directional_element_interface::get (me) * thick, thick); + Molecule a = Lookup::slur (b, get_grob_direction (me) * thick, thick); return a.smobbed_copy (); } diff --git a/lily/tuplet-bracket.cc b/lily/tuplet-bracket.cc index 306ff7b679..d8dce6cfcc 100644 --- a/lily/tuplet-bracket.cc +++ b/lily/tuplet-bracket.cc @@ -142,7 +142,7 @@ Tuplet_bracket::brew_molecule (SCM smob) commonx = commonx->common_refpoint (sp->get_bound(LEFT), X_AXIS); commonx = commonx->common_refpoint (sp->get_bound(RIGHT), X_AXIS); - Direction dir = Directional_element_interface::get (me); + Direction dir = get_grob_direction (me); Grob * lgr = get_x_bound_grob (columns[0], dir); Grob * rgr = get_x_bound_grob (columns.top(), dir); @@ -288,7 +288,7 @@ Tuplet_bracket::calc_position_and_height (Grob*me,Real *offset, Real * dy) Grob * commony = common_refpoint_of_list (cols, me, Y_AXIS); Grob * commonx = common_refpoint_of_list (cols, me, X_AXIS); - Direction dir = Directional_element_interface::get (me); + Direction dir = get_grob_direction (me); /* Use outer non-rest columns to determine slope @@ -375,7 +375,7 @@ Tuplet_bracket::calc_dy (Grob*me,Real * dy) /* ugh. refps. */ - Direction d = Directional_element_interface::get (me); + Direction d = get_grob_direction (me); *dy = columns.top ()->extent (columns.top (), Y_AXIS) [d] - columns[0]->extent (columns[0], Y_AXIS) [d]; } @@ -424,11 +424,11 @@ Tuplet_bracket::after_line_breaking (SCM smob) return SCM_UNSPECIFIED; } - Direction dir = Directional_element_interface::get (me); + Direction dir = get_grob_direction (me); if (!dir) { dir = Tuplet_bracket::get_default_dir (me); - Directional_element_interface::set (me, dir); + set_grob_direction (me, dir); } bool equally_long = false; @@ -439,7 +439,7 @@ Tuplet_bracket::after_line_breaking (SCM smob) */ Real dy, offset; if (!par_beam - || Directional_element_interface::get (par_beam) != dir) + || get_grob_direction (par_beam) != dir) { calc_position_and_height (me,&offset,&dy); } -- 2.39.5