From 1fcdbd59e06f27b6489f8efa2afdebf7e99b3366 Mon Sep 17 00:00:00 2001 From: hanwen Date: Sun, 18 Jan 2004 20:28:51 +0000 Subject: [PATCH] * lily/lily-guile.cc (robust_scm2double): new function. Use throughout. * lily/hairpin.cc: use Line_interface * lily/tuplet-bracket.cc (make_bracket): use Line_interface. * lily/mensural-ligature.cc (brew_flexa): replace horizontal_slope () with beam (). * lily/beam.cc (position_beam): new function (brew_molecule): make sure that positions are calced before making the molecule. * lily/beam.cc (brew_molecule): fix beam offsets: overlap with the stem do avoid small dents. --- ChangeLog | 2 + lily/accidental-placement.cc | 16 +++----- lily/align-interface.cc | 17 +------- lily/balloon.cc | 7 +--- lily/bar-line.cc | 10 ++--- lily/beam.cc | 20 ++++------ lily/breathing-sign.cc | 4 ++ lily/cluster.cc | 8 +--- lily/dynamic-performer.cc | 10 ++--- lily/font-select.cc | 3 +- lily/grob.cc | 14 +++---- lily/hairpin.cc | 2 +- lily/hyphen-spanner.cc | 8 ++-- lily/include/lily-guile.hh | 3 +- lily/lily-guile.cc | 13 ++++++- lily/line-spanner.cc | 9 ++--- lily/lyric-extender.cc | 4 +- lily/measure-grouping-spanner.cc | 8 +++- lily/mensural-ligature-engraver.cc | 8 +--- lily/mensural-ligature.cc | 13 +------ lily/multi-measure-rest.cc | 8 ++-- lily/note-head.cc | 2 +- lily/note-spacing.cc | 8 ++-- lily/percent-repeat-item.cc | 4 +- lily/separation-item.cc | 12 +----- lily/side-position-interface.cc | 12 +----- lily/slur.cc | 10 ++--- lily/spacing-spanner.cc | 16 ++++---- lily/spanner.cc | 2 +- lily/staff-spacing.cc | 4 +- lily/staff-symbol-referencer.cc | 10 +---- lily/staff-symbol.cc | 11 +----- lily/stem-tremolo.cc | 4 +- lily/stem.cc | 19 ++++----- lily/system-start-delimiter-engraver.cc | 2 +- lily/system-start-delimiter.cc | 5 +-- lily/text-spanner.cc | 7 +--- lily/tie.cc | 2 +- lily/tuplet-bracket.cc | 4 +- lily/vaticana-ligature-engraver.cc | 28 +------------ lily/vaticana-ligature.cc | 52 ++----------------------- lily/volta-bracket.cc | 2 +- 42 files changed, 128 insertions(+), 275 deletions(-) diff --git a/ChangeLog b/ChangeLog index 978247bfd5..df9602dfc7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2004-01-18 Han-Wen Nienhuys + * lily/lily-guile.cc (robust_scm2double): new function. Use throughout. + * lily/line-interface.cc (line): remove thickness from calling interface. * lily/hairpin.cc: use Line_interface diff --git a/lily/accidental-placement.cc b/lily/accidental-placement.cc index 46c765daf2..bfe0f1b58a 100644 --- a/lily/accidental-placement.cc +++ b/lily/accidental-placement.cc @@ -121,7 +121,7 @@ Accidental_placement::get_relevant_accidental_extent (Grob *me, if (!extent.is_empty ()) { - Real p = gh_scm2double (me->get_grob_property ("left-padding")); + Real p = robust_scm2double (me->get_grob_property ("left-padding"), 0.2); extent[LEFT] -= p; } @@ -380,15 +380,10 @@ Accidental_placement::position_accidentals (Grob * me) head_ape-> left_skyline_ = head_skyline; head_ape->offset_ = 0.0; - SCM rs = me->get_grob_property ("right-padding"); - if (gh_number_p (rs)) - head_ape->offset_ -= gh_scm2double (rs); + head_ape->offset_ -= robust_scm2double ( me->get_grob_property ("right-padding"), 0); - Real padding = 0.2; - SCM spad = me->get_grob_property ("padding"); - if (gh_number_p (spad)) - padding = gh_scm2double (spad); + Real padding = robust_scm2double (me->get_grob_property ("padding"),0.2); Array left_skyline = head_ape->left_skyline_; /* @@ -431,9 +426,8 @@ Accidental_placement::position_accidentals (Grob * me) for (int i = ape->extents_.size(); i--;) right_extent.unite (ape->offset_ + ape->extents_[i][X_AXIS]); - SCM ls = me->get_grob_property ("left-padding"); - if (gh_number_p (rs)) - left_extent[LEFT] -= gh_scm2double (ls); + + left_extent[LEFT] -= robust_scm2double (me->get_grob_property ("left-padding"), 0); Interval width(left_extent[LEFT], right_extent[RIGHT]); diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 3b020ea677..62865dc949 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -56,13 +56,7 @@ Align_interface::align_to_fixed_distance (Grob *me , Axis a) if (!stacking_dir) stacking_dir = DOWN; - SCM force = me->get_grob_property ("forced-distance"); - - Real dy = 0.0; - if (gh_number_p (force)) - { - dy = gh_scm2double (force); - } + Real dy = robust_scm2double (me->get_grob_property ("forced-distance"),0.0); Link_array elems = Pointer_group_interface__extract_grobs (me, (Grob*) 0, "elements"); @@ -134,14 +128,7 @@ Align_interface::align_elements_to_extents (Grob * me, Axis a) if (!stacking_dir) stacking_dir = DOWN; - Interval threshold = Interval (0, Interval::infinity ()); - SCM thr = me->get_grob_property ("threshold"); - if (gh_pair_p (thr)) - { - threshold[SMALLER] = gh_scm2double (ly_car (thr)); - threshold[BIGGER] = gh_scm2double (ly_cdr (thr)); - } - + Interval threshold = robust_scm2interval ( me->get_grob_property ("threshold"), Interval (0, Interval::infinity ())); Array dims; diff --git a/lily/balloon.cc b/lily/balloon.cc index 78938c9914..30eb59e7c0 100644 --- a/lily/balloon.cc +++ b/lily/balloon.cc @@ -47,12 +47,7 @@ Balloon_interface::brew_molecule (SCM smob) Box orig_extent = m->extent_box (); Box box_extent = orig_extent; - SCM widen = me->get_grob_property ("balloon-padding"); - Real w = .1; - if (gh_number_p (widen)) - { - w = gh_scm2double (widen); - } + Real w = robust_scm2double (me->get_grob_property ("balloon-padding"), .1); box_extent.widen (w, w); diff --git a/lily/bar-line.cc b/lily/bar-line.cc index d729f83429..b27ba0b92a 100644 --- a/lily/bar-line.cc +++ b/lily/bar-line.cc @@ -34,7 +34,7 @@ Bar_line::brew_molecule (SCM smob) { String str =ly_scm2string (s); SCM siz = gh_call1 (barsiz_proc, me->self_scm ()); - Real sz = gh_scm2double (siz); + Real sz = robust_scm2double (siz, 0); if (sz < 0) return SCM_EOL; @@ -47,10 +47,10 @@ Bar_line::brew_molecule (SCM smob) Molecule Bar_line::compound_barline (Grob*me, String str, Real h) { - Real kern = gh_scm2double (me->get_grob_property ("kern")); - Real thinkern = gh_scm2double (me->get_grob_property ("thin-kern")); - Real hair = gh_scm2double (me->get_grob_property ("hair-thickness")); - Real fatline = gh_scm2double (me->get_grob_property ("thick-thickness")); + Real kern = robust_scm2double (me->get_grob_property ("kern"), 1); + Real thinkern = robust_scm2double (me->get_grob_property ("thin-kern"), 1); + Real hair = robust_scm2double (me->get_grob_property ("hair-thickness"), 1); + Real fatline = robust_scm2double (me->get_grob_property ("thick-thickness"), 1); Real staffline = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")); Real staff_space = Staff_symbol_referencer::staff_space (me); diff --git a/lily/beam.cc b/lily/beam.cc index e049696eb8..c000147a33 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -71,11 +71,8 @@ Beam::add_stem (Grob *me, Grob *s) Real Beam::get_thickness (Grob * me) { - SCM th = me->get_grob_property ("thickness"); - if (gh_number_p (th)) - return gh_scm2double (th)* Staff_symbol_referencer::staff_space (me); - else - return 0.0; + return robust_scm2double (me->get_grob_property ("thickness"), 0) + * Staff_symbol_referencer::staff_space (me); } /* Return the translation between 2 adjoining beams. */ @@ -339,10 +336,7 @@ Beam::brew_molecule (SCM grob) Real last_xposn = -1; Real last_stem_width = -1 ; - Real gap_length =0.0; - SCM scm_gap = me->get_grob_property ("gap"); - if (gh_number_p (scm_gap)) - gap_length = gh_scm2double (scm_gap); + Real gap_length =robust_scm2double ( me->get_grob_property ("gap"), 0.0); Molecule the_beam; Real lt = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")); @@ -353,7 +347,7 @@ Beam::brew_molecule (SCM grob) SCM this_beaming = st ? st->get_grob_property ("beaming") : SCM_EOL; Real xposn = st ? st->relative_coordinate (xcommon, X_AXIS) : 0.0; - Real stem_width = st ? gh_scm2double (st->get_grob_property ("thickness")) *lt : 0 ; + Real stem_width = st ? robust_scm2double (st->get_grob_property ("thickness"), 1.0) *lt : 0 ; Direction stem_dir = st ? to_dir (st->get_grob_property ("direction")) : CENTER; /* We do the space left of ST, with lfliebertjes pointing to the @@ -882,7 +876,7 @@ Beam::least_squares (SCM smob) { /* FIXME. -> UP */ Direction d = (Direction) (sign (chord.delta ()) * UP); - pos[d] = gh_scm2double (me->get_grob_property ("thickness")) / 2; + pos[d] = get_thickness (me) / 2; pos[-d] = - pos[d]; } else @@ -1480,8 +1474,8 @@ Beam::rest_collision_callback (SCM element_smob, SCM axis) Grob *common_x = rest->common_refpoint (beam, Y_AXIS); Real rest_dim = rest->extent (common_x, Y_AXIS)[d] / staff_space * d; - Real minimum_distance = gh_scm2double - (rest->get_grob_property ("minimum-beam-collision-distance")); + Real minimum_distance = robust_scm2double + (rest->get_grob_property ("minimum-beam-collision-distance"), 1); Real distance = beam_y - rest_dim; Real shift = 0; diff --git a/lily/breathing-sign.cc b/lily/breathing-sign.cc index ede4b2f8b9..006682be8a 100644 --- a/lily/breathing-sign.cc +++ b/lily/breathing-sign.cc @@ -30,6 +30,10 @@ +/* + UGH : this is full of C&P code. Consolidate! --hwn +*/ + /* Gregorian chant divisio minima. (Actually, this was the original breathing sign by Michael. -- jr) diff --git a/lily/cluster.cc b/lily/cluster.cc index c89b752fbe..9c1bf995fb 100644 --- a/lily/cluster.cc +++ b/lily/cluster.cc @@ -32,12 +32,8 @@ brew_cluster_piece (Grob *me, Array bottom_points, Array top_poi { Real blotdiameter = Staff_symbol_referencer::staff_space (me)/2; - Real padding; - SCM padding_scm = me->get_grob_property ("padding"); - if (gh_number_p (padding_scm)) - padding = gh_scm2double (padding_scm); - else - padding = 0.0; + Real padding =robust_scm2double ( me->get_grob_property ("padding"), 0.0); + Offset vpadding = Offset (0, padding); Offset hpadding = Offset (0.5 * blotdiameter, 0); Offset hvpadding = 0.5 * hpadding + vpadding; diff --git a/lily/dynamic-performer.cc b/lily/dynamic-performer.cc index aefb86da9c..c0df3e0cae 100644 --- a/lily/dynamic-performer.cc +++ b/lily/dynamic-performer.cc @@ -52,9 +52,7 @@ Dynamic_performer::create_audio_elements () svolume = gh_call1 (proc, script_req_->get_mus_property ("text")); } - Real volume = 0.5; - if (gh_number_p (svolume)) - volume = gh_scm2double (svolume); + Real volume = robust_scm2double (svolume, 0.5); /* properties override default equaliser setting @@ -90,11 +88,9 @@ Dynamic_performer::create_audio_elements () s = gh_call1 (eq, s); } - if (gh_pair_p (s)) + if (is_number_pair (s)) { - Interval iv; - iv[MIN] = gh_scm2double (ly_car (s)); - iv[MAX] = gh_scm2double (ly_cdr (s)); + Interval iv = ly_scm2interval (s); volume = iv[MIN] + iv.length () * volume; } } diff --git a/lily/font-select.cc b/lily/font-select.cc index 294ba8d3fc..61ae2fa4fc 100644 --- a/lily/font-select.cc +++ b/lily/font-select.cc @@ -153,8 +153,7 @@ select_font (Paper_def *paper, SCM chain) { SCM mag = ly_assoc_chain (ly_symbol2scm ("font-magnification"), chain); - Real rmag = gh_pair_p (mag) && gh_number_p (gh_cdr (mag)) - ? gh_scm2double (gh_cdr (mag)) : 1.0; + Real rmag = gh_pair_p (mag) ? robust_scm2double (gh_cdr (mag), 1.0) : 1; return paper->find_font (name, rmag); } diff --git a/lily/grob.cc b/lily/grob.cc index b11c5b6915..0e82fef490 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -177,15 +177,11 @@ Grob::preset_extent (SCM element_smob, SCM scm_axis) SCM ext = s->get_grob_property ((a == X_AXIS) ? "X-extent" : "Y-extent"); - - if (gh_pair_p (ext)) - { - Real l = gh_scm2double (ly_car (ext)); - Real r = gh_scm2double (ly_cdr (ext)); - return ly_interval2scm (Interval (l, r)); - } - - return ly_interval2scm (Interval ()); + + if (is_number_pair (ext)) + return ext; + else + return ly_interval2scm (Interval()); } diff --git a/lily/hairpin.cc b/lily/hairpin.cc index 66a9931df8..41e9eef5ef 100644 --- a/lily/hairpin.cc +++ b/lily/hairpin.cc @@ -100,7 +100,7 @@ Hairpin::brew_molecule (SCM smob) } bool continued = broken[Direction (-grow_dir)]; - Real height = gh_scm2double (me->get_grob_property ("height")); + Real height = robust_scm2double (me->get_grob_property ("height"), 0.2); Real starth, endh; if (grow_dir < 0) diff --git a/lily/hyphen-spanner.cc b/lily/hyphen-spanner.cc index 8334e494cc..17b01dad53 100644 --- a/lily/hyphen-spanner.cc +++ b/lily/hyphen-spanner.cc @@ -43,13 +43,13 @@ Hyphen_spanner::brew_molecule (SCM smob) while (flip (&d) != LEFT); Real lt = sp->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")); - Real th = gh_scm2double (sp->get_grob_property ("thickness")) * lt ; - Real h = gh_scm2double (sp->get_grob_property ("height")); + Real th = robust_scm2double (sp->get_grob_property ("thickness"), 1) * lt ; + Real h = robust_scm2double (sp->get_grob_property ("height"), 0.5); // interval? - Real dp = gh_scm2double (sp->get_grob_property ("dash-period")); - Real dl = gh_scm2double (sp->get_grob_property ("length")); + Real dp = robust_scm2double (sp->get_grob_property ("dash-period"), 1.0); + Real dl = robust_scm2double (sp->get_grob_property ("length"), .5 ); if (dp < dl) dp = 1.5 * dl; diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 613099e24e..19fed5950a 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -160,7 +160,8 @@ Slice int_list_to_slice (SCM l); SCM ly_interval2scm (Drul_array); Real robust_scm2double (SCM, double); -Drul_array robust_scm2interval (SCM, Drul_array); +Drul_array robust_scm2drul (SCM, Drul_array); +Interval robust_scm2interval (SCM, Drul_array); Offset robust_scm2offset (SCM, Offset); SCM ly_quote_scm (SCM s); diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index c7641e7447..559aec578f 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -724,8 +724,19 @@ robust_scm2double (SCM k, double x) return x; } -Drul_array +Interval robust_scm2interval (SCM k, Drul_array v) +{ + Interval i; + i[LEFT]= v[LEFT]; + i[RIGHT]= v[RIGHT]; + if (is_number_pair (k)) + i = ly_scm2interval (k); + return i; +} + +Drul_array +robust_scm2drul (SCM k, Drul_array v) { if (is_number_pair (k)) v = ly_scm2interval (k); diff --git a/lily/line-spanner.cc b/lily/line-spanner.cc index 578206975d..3b74fb1497 100644 --- a/lily/line-spanner.cc +++ b/lily/line-spanner.cc @@ -34,10 +34,9 @@ zigzag_molecule (Grob *me, thick *= robust_scm2double (me->get_grob_property ("thickness"), 1.0); // todo: staff sym referencer? Real staff_space = Staff_symbol_referencer::staff_space (me); - SCM ws = me->get_grob_property ("zigzag-width"); - SCM ls = me->get_grob_property ("zigzag-length"); - double w = (gh_number_p(ws) ? gh_scm2double(ws) : 1)*staff_space; - double l = (gh_number_p(ls) ? gh_scm2double(ls) : 1)*w; + + double w = robust_scm2double (me->get_grob_property ("zigzag-width"), 1)*staff_space; + double l = robust_scm2double ( me->get_grob_property ("zigzag-length"), 1)* w; double h = l>w/2 ? sqrt(l*l-w*w/4) : 0; SCM list = scm_list_n (ly_symbol2scm ("zigzag-line"), @@ -183,7 +182,7 @@ Line_spanner::brew_molecule (SCM smob) me->get_bound (RIGHT)); - Real gap = gh_scm2double (me->get_grob_property ("gap")); + Real gap = robust_scm2double (me->get_grob_property ("gap"), 0.0); Offset ofxy (gap, 0); /*offset from start point to start of line*/ Offset dxy ; diff --git a/lily/lyric-extender.cc b/lily/lyric-extender.cc index 25cfb2bd1e..73a1d49119 100644 --- a/lily/lyric-extender.cc +++ b/lily/lyric-extender.cc @@ -54,14 +54,14 @@ Lyric_extender::brew_molecule (SCM smob) */ SCM minlen = me->get_grob_property ("minimum-length"); Real right_point - = left_point + (gh_number_p (minlen) ? gh_scm2double (minlen) : 0.0); + = left_point + (robust_scm2double (minlen,0)); if (r->break_status_dir ()) right_point = infinity_f; else right_point = right_point >? heads.top ()->extent (common, X_AXIS)[RIGHT]; - Real h = sl * gh_scm2double (me->get_grob_property ("thickness")); + Real h = sl * robust_scm2double (me->get_grob_property ("thickness"), 0); Real pad = 2* h; right_point = right_point extent (common, X_AXIS)[LEFT] - pad); diff --git a/lily/measure-grouping-spanner.cc b/lily/measure-grouping-spanner.cc index df06b7f30a..9af72c3405 100644 --- a/lily/measure-grouping-spanner.cc +++ b/lily/measure-grouping-spanner.cc @@ -25,7 +25,7 @@ Measure_grouping::brew_molecule (SCM grob) SCM thick = me->get_grob_property ("thickness"); SCM height = me->get_grob_property ("height"); - Real t = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")) * gh_scm2double (thick); + Real t = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")) * gh_scm2double (thick); Grob *common = me->get_bound(LEFT)->common_refpoint (me->get_bound (RIGHT), X_AXIS); @@ -39,7 +39,11 @@ Measure_grouping::brew_molecule (SCM grob) Interval iv (0,w); - Molecule m; + Molecule m; + + /* + TODO: use line interface + */ if (which == ly_symbol2scm ("bracket")) { m = Lookup::bracket (X_AXIS, iv, t,-gh_scm2double (height), t); diff --git a/lily/mensural-ligature-engraver.cc b/lily/mensural-ligature-engraver.cc index f8786b4314..cd08766d56 100644 --- a/lily/mensural-ligature-engraver.cc +++ b/lily/mensural-ligature-engraver.cc @@ -343,17 +343,13 @@ void Mensural_ligature_engraver::propagate_properties (Spanner *ligature, Array primitives) { - SCM thickness_scm = ligature->get_grob_property ("thickness"); - Real thickness = (thickness_scm != SCM_EOL) ? - gh_scm2double (thickness_scm) : 1.4; + Real thickness = robust_scm2double (ligature->get_grob_property ("thickness"), 1.4); thickness *= ligature->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")); Real head_width = Font_interface::get_default_font (ligature)-> find_by_name ("noteheads--1mensural").extent (X_AXIS).length (); - SCM flexa_width_scm = ligature->get_grob_property ("flexa-width"); - Real flexa_width = (flexa_width_scm != SCM_EOL) ? - gh_scm2double (flexa_width_scm) : 2.0; + Real flexa_width = robust_scm2double (ligature->get_grob_property ("flexa-width"), 2); flexa_width *= Staff_symbol_referencer::staff_space (ligature); Real half_flexa_width = 0.5 * (flexa_width + thickness); diff --git a/lily/mensural-ligature.cc b/lily/mensural-ligature.cc index c0bb7fac49..e8df8353a7 100644 --- a/lily/mensural-ligature.cc +++ b/lily/mensural-ligature.cc @@ -172,18 +172,7 @@ internal_brew_primitive (Grob *me, bool ledger_take_space) delta_pitch = 0; } - SCM flexa_width_scm = me->get_grob_property ("flexa-width"); - if (flexa_width_scm != SCM_EOL) - { - flexa_width = gh_scm2double (flexa_width_scm); - } - else - { - programming_error (_f ("Mensural_ligature:" - "flexa-width undefined on flexa %d; assuming 2.0", - primitive)); - flexa_width = 2.0 * staff_space; - } + flexa_width = robust_scm2double (me->get_grob_property ("flexa-width"), 2.0 * staff_space); } switch (primitive) diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc index e6e747e23c..f0522329b0 100644 --- a/lily/multi-measure-rest.cc +++ b/lily/multi-measure-rest.cc @@ -180,8 +180,8 @@ Multi_measure_rest::symbol_molecule (Grob *me, Real space) Molecule Multi_measure_rest::big_rest (Grob *me, Real width) { - Real thick_thick = gh_scm2double (me->get_grob_property ("thick-thickness")); - Real hair_thick = gh_scm2double (me->get_grob_property ("hair-thickness")); + Real thick_thick =robust_scm2double (me->get_grob_property ("thick-thickness"), 1.0); + Real hair_thick = robust_scm2double (me->get_grob_property ("hair-thickness"), .1); Real ss = Staff_symbol_referencer::staff_space (me); @@ -337,9 +337,7 @@ Multi_measure_rest::set_spacing_rods (SCM smob) rod.distance_ = l->extent (l, X_AXIS)[BIGGER] - r->extent (r, X_AXIS)[SMALLER] + sym_width + 2.0; // 2.0 = magic! - Real minlen =0.0; - SCM ml =me->get_grob_property ("minimum-length"); - if (gh_number_p (ml)) minlen = gh_scm2double (ml); + Real minlen = robust_scm2double (me->get_grob_property ("minimum-length"), 0.0); rod.distance_ = max(rod.distance_, minlen); rod.add_to_cols (); diff --git a/lily/note-head.cc b/lily/note-head.cc index bce006a920..5942c1dc6d 100644 --- a/lily/note-head.cc +++ b/lily/note-head.cc @@ -303,7 +303,7 @@ Note_head::stem_attachment_coordinate (Grob *me, Axis a) result = (a == X_AXIS) ? ly_car (result) : ly_cdr (result); - return gh_number_p (result) ? gh_scm2double (result) : 0.0; + return robust_scm2double (result,0); } int diff --git a/lily/note-spacing.cc b/lily/note-spacing.cc index 38c8438872..0cf786d751 100644 --- a/lily/note-spacing.cc +++ b/lily/note-spacing.cc @@ -355,7 +355,7 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn, if (st) { - Real thick = gh_scm2double (st->get_grob_property ("thickness")) + Real thick = robust_scm2double (st->get_grob_property ("thickness"), 1) * st->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")); note_head_width -= thick; @@ -363,7 +363,7 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn, } correction = note_head_width* stem_dirs[LEFT]; - correction *= gh_scm2double (me->get_grob_property ("knee-spacing-correction")); + correction *= robust_scm2double (me->get_grob_property ("knee-spacing-correction"), 0); *fixed += correction; } else @@ -383,7 +383,7 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn, correction = (correction/7) get_grob_property ("stem-spacing-correction")); + robust_scm2double (me->get_grob_property ("stem-spacing-correction"), 0); } if (!bar_yextent.is_empty ()) @@ -423,7 +423,7 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn, (head_posns[LEFT][DOWN] > head_posns[RIGHT][UP]) ? RIGHT : LEFT; Real delta = head_posns[-lowest][DOWN] - head_posns[lowest][UP] ; - Real corr = gh_scm2double (me->get_grob_property ("stem-spacing-correction")); + Real corr = robust_scm2double (me->get_grob_property ("stem-spacing-correction"), 0); corr = (delta <= 1) ? 0.0 : 0.25; correction= -lowest * corr ; diff --git a/lily/percent-repeat-item.cc b/lily/percent-repeat-item.cc index 2dbffcff35..4c87351d26 100644 --- a/lily/percent-repeat-item.cc +++ b/lily/percent-repeat-item.cc @@ -19,13 +19,13 @@ Molecule Percent_repeat_item_interface::brew_slash ( Grob *me) { - Real slope = gh_scm2double (me->get_grob_property ("slope")); + Real slope = robust_scm2double (me->get_grob_property ("slope"), 1); Real wid = 2.0 / slope; /* todo: check out if in staff-rule thickness normally. */ - Real thick = gh_scm2double (me->get_grob_property ("thickness")); + Real thick = robust_scm2double (me->get_grob_property ("thickness"), 1); Molecule m = Lookup::repeat_slash (wid, slope, thick); m.translate_axis (-m.extent (Y_AXIS).center (), Y_AXIS); return m; diff --git a/lily/separation-item.cc b/lily/separation-item.cc index 8b59a91967..bb8c4594db 100644 --- a/lily/separation-item.cc +++ b/lily/separation-item.cc @@ -67,11 +67,7 @@ Separation_item::conditional_width (Grob * me, Grob * left) SCM pad = me->get_grob_property ("padding"); - if (gh_number_p (pad)) - { - w[RIGHT] += gh_scm2double (pad)/2; - w[LEFT] -= gh_scm2double (pad)/2; - } + w.widen (robust_scm2double (pad, 0.0)); return w; } @@ -116,11 +112,7 @@ Separation_item::width (Grob *me) SCM pad = me->get_grob_property ("padding"); - if (gh_number_p (pad)) - { - w[RIGHT] += gh_scm2double (pad)/2; - w[LEFT] -= gh_scm2double (pad)/2; - } + w.widen (robust_scm2double (pad, 0.0)); me->set_grob_property ("X-extent", ly_interval2scm (w)); diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc index ea15805b3e..f10f80073a 100644 --- a/lily/side-position-interface.cc +++ b/lily/side-position-interface.cc @@ -106,11 +106,7 @@ Side_position_interface::general_side_position (Grob * me, Axis a, bool use_exte SCM minimum = me->get_grob_property ("minimum-space"); Real total_off = dim.linear_combination (dir) - off; - SCM padding = me->get_grob_property ("padding"); - if (gh_number_p (padding)) - { - total_off += gh_scm2double (padding) * dir; - } + total_off += robust_scm2double ( me->get_grob_property ("padding"), 0); if (gh_number_p (minimum) && dir @@ -228,11 +224,7 @@ Side_position_interface::out_of_staff (SCM element_smob, SCM axis) if (!st) return gh_int2scm (0); - Real padding=0.0; - SCM spad = me->get_grob_property ("staff-padding"); - - if (gh_number_p (spad)) - padding = gh_scm2double (spad); + Real padding= robust_scm2double ( me->get_grob_property ("staff-padding"), 0); Grob *common = me->common_refpoint (st, Y_AXIS); Direction d = Side_position_interface::get_direction (me); diff --git a/lily/slur.cc b/lily/slur.cc index 4e2df22979..4e4150bc83 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -349,7 +349,7 @@ Slur::get_attachment (Grob *me, Direction dir, Default position is on stem X, at stem end Y */ Real stem_thickness = - gh_scm2double (stem->get_grob_property ("thickness")) + robust_scm2double (stem->get_grob_property ("thickness"), 1) * stem->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")); o += Offset (0.5 * x_extent * (1 + Stem::get_direction (stem)) @@ -450,7 +450,7 @@ Slur::encompass_offset (Grob*me, /* leave a gap: slur mustn't touch head/stem */ - o[Y_AXIS] += dir * gh_scm2double (me->get_grob_property ("y-free")) * + o[Y_AXIS] += dir * robust_scm2double (me->get_grob_property ("y-free"), 0) * 1.0; return o; } @@ -548,7 +548,7 @@ Slur::brew_molecule (SCM smob) return SCM_EOL; } - Real base_thick = gh_scm2double (me->get_grob_property ("thickness")); + Real base_thick = robust_scm2double (me->get_grob_property ("thickness"), 1); Real thick = base_thick * me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")); @@ -563,7 +563,7 @@ Slur::brew_molecule (SCM smob) Molecule a; SCM d = me->get_grob_property ("dashed"); if (gh_number_p (d)) - a = Lookup::dashed_slur (one, thick, thick * gh_scm2double (d)); + a = Lookup::dashed_slur (one, thick, thick * robust_scm2double (d, 0)); else a = Lookup::slur (one, get_grob_direction (me) * base_thick * ss / 10.0, thick); @@ -580,7 +580,7 @@ Slur::set_control_points (Grob*me) SCM h_inf_scm = me->get_grob_property ("height-limit"); SCM r_0_scm = me->get_grob_property ("ratio"); - Real r_0 = gh_scm2double (r_0_scm); + Real r_0 = robust_scm2double (r_0_scm, 1); Real h_inf = staff_space * gh_scm2double (h_inf_scm); Slur_bezier_bow bb (get_encompass_offsets (me), diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index c582357f72..659216be56 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -164,7 +164,7 @@ void Spacing_spanner::prune_loose_columns (Grob*me,Link_array *cols, Rational shortest) { Link_array newcols; - Real increment = gh_scm2double (me->get_grob_property ("spacing-increment")); + Real increment = robust_scm2double (me->get_grob_property ("spacing-increment"), 1.2); for (int i=0; i < cols->size (); i++) { if (Item::breakable_b (cols->elem(i)) || Paper_column::musical_b (cols->elem (i))) @@ -508,7 +508,7 @@ void Spacing_spanner::do_measure (Rational shortest, Grob*me, Link_array *cols) { - Real headwid = gh_scm2double (me->get_grob_property ("spacing-increment")); + Real headwid = robust_scm2double (me->get_grob_property ("spacing-increment"), 1); for (int i= 0; i < cols->size () - 1; i++) { Item * l = dynamic_cast (cols->elem (i)); @@ -695,7 +695,7 @@ Spacing_spanner::standard_breakable_column_spacing (Grob * me, Item*l, Item*r, if (dt) mlen = *dt; - Real incr = gh_scm2double (me->get_grob_property ("spacing-increment")); + Real incr = robust_scm2double (me->get_grob_property ("spacing-increment"), 1); *space = *fixed + incr * double (mlen.main_part_ / shortest.main_part_) * 0.8; } @@ -812,8 +812,8 @@ Spacing_spanner::breakable_column_spacing (Grob*me, Item* l, Item *r,Moment shor Real Spacing_spanner::get_duration_space (Grob*me, Moment d, Rational shortest, bool * expand_only) { - Real k = gh_scm2double (me->get_grob_property ("shortest-duration-space")); - Real incr = gh_scm2double (me->get_grob_property ("spacing-increment")); + Real k = robust_scm2double (me->get_grob_property ("shortest-duration-space"), 1); + Real incr = robust_scm2double (me->get_grob_property ("spacing-increment"), 1); if (d < shortest) { @@ -928,10 +928,8 @@ Spacing_spanner::note_spacing (Grob*me, Grob *lc, Grob *rc, */ dist = get_duration_space (me, shortest, shortest.main_part_, expand_only); - Real grace_fact = 1.0; - SCM gf = me->get_grob_property ("grace-space-factor"); - if (gh_number_p (gf)) - grace_fact = gh_scm2double (gf); + Real grace_fact + = robust_scm2double (me->get_grob_property ("grace-space-factor"), 1); dist *= grace_fact; } diff --git a/lily/spanner.cc b/lily/spanner.cc index 0b444d45fe..a126483203 100644 --- a/lily/spanner.cc +++ b/lily/spanner.cc @@ -336,7 +336,7 @@ Spanner::set_spacing_rods (SCM smob) r.item_l_drul_[LEFT] = sp->get_bound (LEFT); r.item_l_drul_[RIGHT] = sp->get_bound (RIGHT); r.distance_ = - gh_scm2double (me->get_grob_property ("minimum-length")); + robust_scm2double (me->get_grob_property ("minimum-length"), 0); r.add_to_cols (); return SCM_UNSPECIFIED; diff --git a/lily/staff-spacing.cc b/lily/staff-spacing.cc index dab496820d..726a6981d6 100644 --- a/lily/staff-spacing.cc +++ b/lily/staff-spacing.cc @@ -78,7 +78,7 @@ Staff_spacing::next_note_correction (Grob * me, Real corr = abs (stem_posns.length ()/7.) get_grob_property ("stem-spacing-correction")); + robust_scm2double (me->get_grob_property ("stem-spacing-correction"), 1); if (d != DOWN) corr = 0.0; @@ -106,7 +106,7 @@ Staff_spacing::bar_y_positions (Grob *bar_grob) { SCM sz = Bar_line::get_staff_bar_size (bar_grob->self_scm()); bar_size = Interval (-1,1); - bar_size *= gh_scm2double (sz) + bar_size *= robust_scm2double (sz, 1) / Staff_symbol_referencer::staff_space (bar_grob); } } diff --git a/lily/staff-symbol-referencer.cc b/lily/staff-symbol-referencer.cc index 47e6977ff8..0ce4f1aa0a 100644 --- a/lily/staff-symbol-referencer.cc +++ b/lily/staff-symbol-referencer.cc @@ -64,14 +64,8 @@ Staff_symbol_referencer::get_position (Grob*me) p += 2.0 * y / Staff_symbol::staff_space (st); } - else - { - SCM pos = me->get_grob_property ("staff-position"); - if (gh_number_p (pos)) - return gh_scm2double (pos); - } - - return p; + + return robust_scm2double ( me->get_grob_property ("staff-position"), p); } diff --git a/lily/staff-symbol.cc b/lily/staff-symbol.cc index c8db2f4812..69a332b6a1 100644 --- a/lily/staff-symbol.cc +++ b/lily/staff-symbol.cc @@ -63,9 +63,7 @@ Staff_symbol::brew_molecule (SCM smob) } Real t = me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")); - SCM my_thick = me->get_grob_property("thickness"); - if (gh_number_p (my_thick)) - t *= gh_scm2double (my_thick); + t *= robust_scm2double ( me->get_grob_property("thickness"), 1.0); int l = Staff_symbol::line_count (me); @@ -102,12 +100,7 @@ Staff_symbol::line_count (Grob*me) Real Staff_symbol::staff_space (Grob*me) { - Real ss = 1.0; - - SCM s = me->get_grob_property ("staff-space"); - if (gh_number_p (s)) - ss *= gh_scm2double (s); - return ss; + return robust_scm2double ( me->get_grob_property ("staff-space"), 1.0); } diff --git a/lily/stem-tremolo.cc b/lily/stem-tremolo.cc index 6ca35377f9..886c9df71d 100644 --- a/lily/stem-tremolo.cc +++ b/lily/stem-tremolo.cc @@ -80,8 +80,8 @@ Stem_tremolo::raw_molecule (Grob *me) dydx = 0.25; Real ss = Staff_symbol_referencer::staff_space (me); - Real thick = gh_scm2double (me->get_grob_property ("beam-thickness")); - Real width = gh_scm2double (me->get_grob_property ("beam-width")); + Real thick = robust_scm2double (me->get_grob_property ("beam-thickness"),1); + Real width = robust_scm2double (me->get_grob_property ("beam-width"),1); Real blot = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter")); width *= ss; diff --git a/lily/stem.cc b/lily/stem.cc index ce26886866..cda3175f75 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -318,15 +318,12 @@ Stem::get_default_stem_end_position (Grob*me) || (get_direction (me) != get_default_dir (me))) { - Real shorten = 0.0; SCM sshorten = me->get_grob_property ("stem-shorten"); SCM scm_shorten = gh_pair_p (sshorten) ? robust_list_ref ((duration_log (me) - 2) >? 0, sshorten): SCM_EOL; - if (gh_number_p (scm_shorten)) - { - shorten = 2* gh_scm2double (scm_shorten); - } + Real shorten = 2* robust_scm2double (scm_shorten,0); + /* On boundary: shorten only half */ if (abs (head_positions (me)[get_direction (me)]) <= 1) @@ -454,7 +451,7 @@ Stem::position_noteheads (Grob*me) heads.reverse (); - Real thick = gh_scm2double (me->get_grob_property ("thickness")) + Real thick = robust_scm2double (me->get_grob_property ("thickness"),1) * me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")); Grob *hed = support_head (me); @@ -745,7 +742,7 @@ Stem::brew_molecule (SCM smob) // URG - Real stem_width = gh_scm2double (me->get_grob_property ("thickness")) + Real stem_width = robust_scm2double (me->get_grob_property ("thickness"), 1) * me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")); Real blot = me->get_paper ()->get_realvar (ly_symbol2scm ("blotdiameter")); @@ -808,7 +805,7 @@ Stem::off_callback (SCM element_smob, SCM) if (attach) { Real rule_thick - = gh_scm2double (me->get_grob_property ("thickness")) + = robust_scm2double (me->get_grob_property ("thickness"), 1) * me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")); r += - d * rule_thick * 0.5; @@ -854,7 +851,7 @@ Stem::calc_stem_info (Grob *me) Real staff_space = Staff_symbol_referencer::staff_space (me); Grob *beam = get_beam (me); Real beam_translation = Beam::get_beam_translation (beam); - Real beam_thickness = gh_scm2double (beam->get_grob_property ("thickness")); + Real beam_thickness = robust_scm2double (beam->get_grob_property ("thickness"), 1); int beam_count = Beam::get_direction_beam_count (beam, my_dir); @@ -928,9 +925,7 @@ Stem::calc_stem_info (Grob *me) } - SCM shorten = beam->get_grob_property ("shorten"); - if (gh_number_p (shorten)) - ideal_y -= gh_scm2double (shorten); + ideal_y -= robust_scm2double (beam->get_grob_property ("shorten"), 0); Real minimum_free = gh_scm2double (robust_list_ref diff --git a/lily/system-start-delimiter-engraver.cc b/lily/system-start-delimiter-engraver.cc index d8045610bd..df94b83400 100644 --- a/lily/system-start-delimiter-engraver.cc +++ b/lily/system-start-delimiter-engraver.cc @@ -56,7 +56,7 @@ System_start_delimiter_engraver::acknowledge_grob (Grob_info inf) { inf.grob_->translate_axis ( -0.8, X_AXIS); // ugh inf.grob_->set_grob_property ("arch-height", - gh_double2scm(gh_scm2double(inf.grob_->get_grob_property + gh_double2scm (gh_scm2double(inf.grob_->get_grob_property ("arch-height"))+0.5)); } } diff --git a/lily/system-start-delimiter.cc b/lily/system-start-delimiter.cc index 0714d819e7..4b7c49835f 100644 --- a/lily/system-start-delimiter.cc +++ b/lily/system-start-delimiter.cc @@ -63,7 +63,7 @@ Molecule System_start_delimiter::simple_bar (Grob*me,Real h) { Real lt =me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")) ; - Real w = lt * gh_scm2double (me->get_grob_property ("thickness")); + Real w = lt * robust_scm2double (me->get_grob_property ("thickness"), 1); return Lookup::round_filled_box (Box (Interval (0,w), Interval (-h/2, h/2)), lt); } @@ -112,7 +112,6 @@ System_start_delimiter::brew_molecule (SCM smob) if (!gh_string_p (s)) return SCM_EOL; SCM gsym = scm_string_to_symbol (s) ; - SCM c = me->get_grob_property ("collapse-height"); Real staff_space = Staff_symbol_referencer::staff_space (me); Interval ext = ly_scm2interval (Axis_group_interface::group_extent_callback @@ -120,7 +119,7 @@ System_start_delimiter::brew_molecule (SCM smob) Real l = ext.length () / staff_space; if (ext.is_empty () - || (gh_number_p (c) && l <= gh_scm2double (c))) + || (robust_scm2double (me->get_grob_property ("collapse-height"), 0.0) >= l)) { me->suicide (); return SCM_EOL; diff --git a/lily/text-spanner.cc b/lily/text-spanner.cc index b575850ed4..c1025bd54c 100644 --- a/lily/text-spanner.cc +++ b/lily/text-spanner.cc @@ -40,10 +40,7 @@ Text_spanner::brew_molecule (SCM smob) Spanner *spanner = dynamic_cast (me); /* Ugh, must be same as Hairpin::brew_molecule. */ - Real padding = 0.0; - SCM itp= me->get_grob_property ("if-text-padding"); - if (gh_number_p (itp)) - padding = gh_scm2double (itp); + Real padding = robust_scm2double ( me->get_grob_property ("if-text-padding"), 0); Grob *common = spanner->get_bound (LEFT)->common_refpoint (spanner->get_bound (RIGHT), X_AXIS); Paper_def * paper = me->get_paper(); @@ -116,7 +113,7 @@ Text_spanner::brew_molecule (SCM smob) continue; Real dx = 0.0; - if (gh_pair_p (flare)) + if (is_number_pair (flare)) dx = gh_scm2double (index_get_cell (flare, d)) * d; Real dy = - dir * edge_height[d] ; diff --git a/lily/tie.cc b/lily/tie.cc index 846acaa28f..85d838f02d 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -130,7 +130,7 @@ Tie::get_control_points (SCM smob) Real staff_space = Staff_symbol_referencer::staff_space (me); - Real x_gap_f = gh_scm2double (me->get_grob_property ("x-gap")); + Real x_gap_f = robust_scm2double (me->get_grob_property ("x-gap"), 0); Grob* l = me->get_bound (LEFT); Grob* r = me->get_bound (RIGHT); diff --git a/lily/tuplet-bracket.cc b/lily/tuplet-bracket.cc index a499f29690..2c9705d0b4 100644 --- a/lily/tuplet-bracket.cc +++ b/lily/tuplet-bracket.cc @@ -117,8 +117,8 @@ Tuplet_bracket::brew_molecule (SCM smob) after_line_breaking (smob); } - Real ly = gh_scm2double (me->get_grob_property ("left-position")); - Real ry = gh_scm2double (me->get_grob_property ("right-position")); + Real ly = robust_scm2double (me->get_grob_property ("left-position"), 0); + Real ry = robust_scm2double (me->get_grob_property ("right-position"), 0); bool equally_long = false; Grob * par_beam = parallel_beam (me, columns, &equally_long); diff --git a/lily/vaticana-ligature-engraver.cc b/lily/vaticana-ligature-engraver.cc index cf960ca8bf..896cd42362 100644 --- a/lily/vaticana-ligature-engraver.cc +++ b/lily/vaticana-ligature-engraver.cc @@ -349,33 +349,9 @@ void Vaticana_ligature_engraver::transform_heads (Spanner *ligature, Array primitives) { - Real flexa_width; - SCM flexa_width_scm = ligature->get_grob_property ("flexa-width"); - if (flexa_width_scm != SCM_EOL) - { - flexa_width = gh_scm2double (flexa_width_scm); - } - else - { - ligature->programming_error ("Vaticana_ligature_engraver:" - "flexa-width undefined; " - "assuming 2.0 staff space"); - flexa_width = - 2.0 * Staff_symbol_referencer::staff_space (ligature); - } + Real flexa_width= robust_scm2double ( ligature->get_grob_property ("flexa-width"), 2); - Real thickness; - SCM thickness_scm = ligature->get_grob_property ("thickness"); - if (thickness_scm != SCM_EOL) - { - thickness = gh_scm2double (thickness_scm); - } - else - { - ligature->programming_error ("Vaticana_ligature_engraver:" - "thickness undefined; assuming 1.0"); - thickness = 1.0; - } + Real thickness= robust_scm2double ( ligature->get_grob_property ("thickness"), 1); Item *prev_primitive = 0; int prev_prefix_set = 0; diff --git a/lily/vaticana-ligature.cc b/lily/vaticana-ligature.cc index e97a7f0f08..2368aa36fc 100644 --- a/lily/vaticana-ligature.cc +++ b/lily/vaticana-ligature.cc @@ -92,18 +92,7 @@ vaticana_brew_flexa (Grob *me, me->warning (_ ("ascending vaticana style flexa")); } - Real width; - SCM flexa_width_scm = me->get_grob_property ("flexa-width"); - if (flexa_width_scm != SCM_EOL) - { - width = gh_scm2double (flexa_width_scm); - } - else - { - me->warning ("Vaticana_ligature: " - "flexa-width undefined; assuming 2.0"); - width = 2.0 * staff_space; - } + Real width = robust_scm2double ( me->get_grob_property ("flexa-width"), 2); /* * Compensate curve thickness that appears to be smaller in steep @@ -238,19 +227,7 @@ vaticana_brew_primitive (Grob *me, bool ledger_take_space) Molecule out; int flexa_height = 0; - Real thickness; - - SCM thickness_scm = me->get_grob_property ("thickness"); - if (thickness_scm != SCM_EOL) - { - thickness = gh_scm2double (thickness_scm); - } - else - { - me->programming_error ("Vaticana_ligature: " - "thickness undefined; assuming 1.0"); - thickness = 1.0; - } + Real thickness = robust_scm2double ( me->get_grob_property ("thickness"), 1); Real line_thickness = thickness * me->get_paper ()->get_realvar (ly_symbol2scm ("linethickness")); @@ -267,17 +244,7 @@ vaticana_brew_primitive (Grob *me, bool ledger_take_space) else delta_pitch = 0; - Real x_offset = 0.0; - SCM x_offset_scm = me->get_grob_property ("x-offset"); - if (x_offset_scm != SCM_EOL) - { - x_offset = gh_scm2double (x_offset_scm); - } - else - { - me->programming_error ("Vaticana_ligature: " - "x-offset undefined; assuming 0.0"); - } + Real x_offset = robust_scm2double ( me->get_grob_property ("x-offset"), 0); bool add_stem = to_boolean (me->get_grob_property ("add-stem")); bool add_cauda = to_boolean (me->get_grob_property ("add-cauda")); @@ -293,18 +260,7 @@ vaticana_brew_primitive (Grob *me, bool ledger_take_space) * flexa_width.) */ Real staff_space = Staff_symbol_referencer::staff_space (me); - Real flexa_width; - SCM flexa_width_scm = me->get_grob_property ("flexa-width"); - if (flexa_width_scm != SCM_EOL) - { - flexa_width = gh_scm2double (flexa_width_scm); - } - else - { - me->warning ("Vaticana_ligature: " - "flexa-width undefined; assuming 2.0"); - flexa_width = 2.0 * staff_space; - } + Real flexa_width = robust_scm2double ( me->get_grob_property ("flexa-width"), 2); out = Lookup::blank (Box (Interval (0, 0.5*flexa_width), Interval (0,0))); } diff --git a/lily/volta-bracket.cc b/lily/volta-bracket.cc index 740054f775..bf2205f46f 100644 --- a/lily/volta-bracket.cc +++ b/lily/volta-bracket.cc @@ -89,7 +89,7 @@ Volta_bracket_interface::brew_molecule (SCM smob) } Real w = dynamic_cast (me)->spanner_length () - left - half_space; - Real h = gh_scm2double (me->get_grob_property ("height")); + Real h = robust_scm2double (me->get_grob_property ("height"), 1); Molecule start,end ; if (!no_vertical_start) -- 2.39.2