From c5a43a1c8677808a0710b89f77d54047bfd271c2 Mon Sep 17 00:00:00 2001 From: hanwen Date: Tue, 19 Jul 2005 00:04:11 +0000 Subject: [PATCH] * scm/output-lib.scm (begin-of-line-invisible): use vectors for predefined break-visibilities. * lily/item.cc (handle_prebroken_dependencies): use a vector of 3 booleans for break-visibility. --- ChangeLog | 6 ++++++ lily/item.cc | 21 +++------------------ lily/lily-guile.cc | 1 + lily/system.cc | 2 +- scm/define-grob-properties.scm | 9 ++------- scm/output-lib.scm | 23 +++++++++++++---------- 6 files changed, 26 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index 38db38d9c5..d081ba64b3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2005-07-19 Han-Wen Nienhuys + * scm/output-lib.scm (begin-of-line-invisible): use vectors for + predefined break-visibilities. + + * lily/item.cc (handle_prebroken_dependencies): use a vector of 3 + booleans for break-visibility. + * Documentation/topdocs/NEWS.tely (Top): add note about engravers. * python/convertrules.py (conv): rule for Timing_translator. diff --git a/lily/item.cc b/lily/item.cc index fa591c9c54..922faf0abd 100644 --- a/lily/item.cc +++ b/lily/item.cc @@ -148,29 +148,14 @@ Item::handle_prebroken_dependencies () /* Can't do this earlier, because try_visibility_lambda () might set the elt property transparent, which would then be copied. - - TODO: - - give the item to break-visibility itself, so the function can do - more complicated things. */ SCM vis = get_property ("break-visibility"); - if (ly_is_procedure (vis)) + if (scm_is_vector (vis)) { - SCM args = scm_list_n (scm_int2num (break_status_dir ()), SCM_UNDEFINED); - SCM result = scm_apply_0 (vis, args); - bool trans = ly_scm2bool (scm_car (result)); - bool empty = ly_scm2bool (scm_cdr (result)); + bool visible = to_boolean (scm_vector_ref (vis, scm_from_int (break_status_dir () + 1))); - if (empty && trans) + if (!visible) suicide (); - else if (empty) - { - set_extent (SCM_EOL, X_AXIS); - set_extent (SCM_EOL, Y_AXIS); - } - else if (trans) - set_property ("print-function", SCM_EOL); } } diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index 500aa5d178..2ebc9beee6 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -41,6 +41,7 @@ SCM ly_to_string (SCM scm) { return scm_call_3 (ly_lily_module_constant ("format"), SCM_BOOL_F, + scm_makfrom0str ("~S"), scm); } diff --git a/lily/system.cc b/lily/system.cc index 73e65dfeb3..a69725d701 100644 --- a/lily/system.cc +++ b/lily/system.cc @@ -289,7 +289,7 @@ System::pre_processing () for (int i = 0 ; i < all_elements_->size(); i ++) { - Grob *e = all_elements_->grob (i); + Grob *e = all_elements_->grob (i); SCM proc = e->get_property ("spacing-procedure"); if (ly_is_procedure (proc)) scm_call_1 (proc, e->self_scm ()); diff --git a/scm/define-grob-properties.scm b/scm/define-grob-properties.scm index 99480d245e..2a209d16cd 100644 --- a/scm/define-grob-properties.scm +++ b/scm/define-grob-properties.scm @@ -463,13 +463,8 @@ tuplet bracket.") (number-visibility ,boolean-or-symbol? "Like @code{bracket-visibility}, but for the number.") - ;; FIXME. - (break-visibility ,procedure? "A function that takes the break -direction and returns a cons of booleans containing (@var{transparent} -. @var{empty}). The following variables are predefined: -@code{all-visible}, @code{begin-of-line-visible}, -@code{end-of-line-visible}, @code{begin-of-line-invisible}, -@code{end-of-line-invisible}, @code{all-invisible}.") + (break-visibility ,vector? "A vector of 3 booleans, #(end-of-line unbroken begin-of-line). +#t means visible, #f means killed.") (flag-count ,number? "The number of tremolo beams.") (when ,ly:moment? "Global time step associated with this column diff --git a/scm/output-lib.scm b/scm/output-lib.scm index 52ccd660ad..03556dc7c5 100644 --- a/scm/output-lib.scm +++ b/scm/output-lib.scm @@ -173,16 +173,19 @@ centered, X==1 is at the right, X == -1 is at the left." (define-public (default-bar-number-visibility barnum) (> barnum 1)) ;; See documentation of Item::visibility_lambda_ -(define-safe-public (begin-of-line-visible d) (if (= d 1) '(#f . #f) '(#t . #t))) -(define-safe-public (end-of-line-visible d) (if (= d -1) '(#f . #f) '(#t . #t))) -(define-safe-public (spanbar-begin-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f))) - -(define-safe-public (all-visible d) '(#f . #f)) -(define-safe-public (all-invisible d) '(#t . #t)) -(define-safe-public (begin-of-line-invisible d) (if (= d 1) '(#t . #t) '(#f . #f))) -(define-safe-public (center-invisible d) (if (= d 0) '(#t . #t) '(#f . #f))) -(define-safe-public (end-of-line-invisible d) (if (= d -1) '(#t . #t) '(#f . #f))) - +(define-public begin-of-line-visible + #(#f #f #t)) +(define-public end-of-line-visible + #(#t #f #f)) +(define-public end-of-line-invisible + #(#f #t #t)) +(define-public spanbar-begin-of-line-invisible + #(#t #f #f)) +(define-public all-visible #(#t #t #t)) +(define-public all-invisible #(#f #f #f)) +(define-public begin-of-line-invisible + #(#t #t #f)) +(define-public center-invisible #(#t #f #t)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Bar lines. -- 2.39.5