CVSROOT: /cvsroot/lilypond
Module name: lilypond
Branch:
Changes by: Han-Wen Nienhuys <[EMAIL PROTECTED]> 05/10/16 01:25:47
Modified files:
. : ChangeLog
lily : grob.cc rest.cc script-interface.cc system.cc
volta-bracket.cc
lily/include : grob.hh rest.hh
scm : define-grob-properties.scm define-grobs.scm
Log message:
* lily/rest.cc (y_offset_callback): use offset callback
iso. after-line-breaking callback.
* lily/grob.cc: change after/before-line-breaking-callback to
after/before-line-breaking dummy properties.
* lily/include/grob.hh: remove Grob_status.
* lily/grob.cc (other_axis_parent_positioning): new function.
(same_axis_parent_positioning): new function
* scm/define-grob-properties.scm (all-user-grob-properties): doc
callbacks property.
CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.4177&tr2=1.4178&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/grob.cc.diff?tr1=1.146&tr2=1.147&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/rest.cc.diff?tr1=1.98&tr2=1.99&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/script-interface.cc.diff?tr1=1.20&tr2=1.21&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/system.cc.diff?tr1=1.122&tr2=1.123&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/volta-bracket.cc.diff?tr1=1.54&tr2=1.55&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/grob.hh.diff?tr1=1.65&tr2=1.66&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/rest.hh.diff?tr1=1.42&tr2=1.43&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-grob-properties.scm.diff?tr1=1.125&tr2=1.126&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-grobs.scm.diff?tr1=1.246&tr2=1.247&r1=text&r2=text
Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.4177 lilypond/ChangeLog:1.4178
--- lilypond/ChangeLog:1.4177 Sun Oct 16 01:06:18 2005
+++ lilypond/ChangeLog Sun Oct 16 01:25:46 2005
@@ -1,5 +1,13 @@
2005-10-16 Han-Wen Nienhuys <[EMAIL PROTECTED]>
+ * lily/rest.cc (y_offset_callback): use offset callback
+ iso. after-line-breaking callback.
+
+ * lily/grob.cc: change after/before-line-breaking-callback to
+ after/before-line-breaking dummy properties.
+
+ * lily/include/grob.hh: remove Grob_status.
+
* scm/define-context-properties.scm
(all-user-translation-properties): remove verticalAlignmentChildCallback
Index: lilypond/lily/grob.cc
diff -u lilypond/lily/grob.cc:1.146 lilypond/lily/grob.cc:1.147
--- lilypond/lily/grob.cc:1.146 Sun Oct 16 01:06:19 2005
+++ lilypond/lily/grob.cc Sun Oct 16 01:25:47 2005
@@ -165,9 +165,6 @@
property_callbacks_ = s.property_callbacks_;
object_alist_ = SCM_EOL;
- /* No properties are copied. That is the job of
- handle_broken_dependencies. */
- status_ = s.status_;
pscore_ = 0;
smobify_self ();
@@ -209,36 +206,6 @@
return pscore_ ? pscore_->layout () : 0;
}
-/* Recursively track all dependencies of this Grob. The status_ field
- is used as a mark-field. It is marked with BUSY during execution
- of this function, and marked with FINAL when finished.
-
- FUNCPTR is the function to call to update this element. */
-void
-Grob::calculate_dependencies (int final, int busy, SCM funcname)
-{
- if (status_ >= final)
- return;
-
- if (status_ == busy)
- {
- programming_error ("element is busy, come back later");
- return;
- }
-
- status_ = busy;
-
- extract_grob_set (this, "dependencies", deps);
- for (int i = 0; i < deps.size (); i++)
- deps[i]->calculate_dependencies (final, busy, funcname);
-
- SCM proc = internal_get_property (funcname);
- if (ly_is_procedure (proc))
- scm_call_1 (proc, this->self_scm ());
-
- status_ = final;
-}
-
Stencil *
Grob::get_stencil () const
{
@@ -746,6 +713,9 @@
"lists of other objects, or results from computations are stored
in"
"mutable properties: every call to set-grob-property (or its C++
equivalent) "
"sets a mutable property. ",
+ "\n\n"
+
+ "The properties @code{after-line-breaking} and
@code{before-line-breaking} are unused dummies. "
/* properties */
"X-extent "
@@ -754,10 +724,10 @@
"Y-extent "
"Y-extent-callback "
"Y-offset-callbacks "
- "after-line-breaking-callback "
+ "after-line-breaking "
"axis-group-parent-X "
"axis-group-parent-Y "
- "before-line-breaking-callback "
+ "before-line-breaking "
"callbacks "
"cause "
"color "
Index: lilypond/lily/include/grob.hh
diff -u lilypond/lily/include/grob.hh:1.65 lilypond/lily/include/grob.hh:1.66
--- lilypond/lily/include/grob.hh:1.65 Sun Oct 16 01:06:19 2005
+++ lilypond/lily/include/grob.hh Sun Oct 16 01:25:47 2005
@@ -14,15 +14,6 @@
#include "grob-interface.hh"
#include "object-key.hh"
-enum Grob_status
- {
- ORPHAN = 0, // not yet added to Paper_score
- PRECALCING,
- PRECALCED, // calcs before spacing done
- POSTCALCING, // busy calculating. This is used to trap cyclic deps.
- POSTCALCED, // after spacing calcs done
- };
-
typedef void (Grob:: *Grob_method_pointer) (void);
class Grob
@@ -30,8 +21,6 @@
private:
DECLARE_SMOBS (Grob, foo);
void init ();
-
-
protected:
Object_key const *key_;
Index: lilypond/lily/include/rest.hh
diff -u lilypond/lily/include/rest.hh:1.42 lilypond/lily/include/rest.hh:1.43
--- lilypond/lily/include/rest.hh:1.42 Thu Mar 10 14:36:12 2005
+++ lilypond/lily/include/rest.hh Sun Oct 16 01:25:47 2005
@@ -16,7 +16,7 @@
class Rest
{
public:
- DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
+ DECLARE_SCHEME_CALLBACK (y_offset_callback, (SCM, SCM));
static bool has_interface (Grob *);
static String glyph_name (Grob *, int, String, bool);
static SCM brew_internal_stencil (SCM, bool);
Index: lilypond/lily/rest.cc
diff -u lilypond/lily/rest.cc:1.98 lilypond/lily/rest.cc:1.99
--- lilypond/lily/rest.cc:1.98 Sat Aug 13 21:35:22 2005
+++ lilypond/lily/rest.cc Sun Oct 16 01:25:47 2005
@@ -17,21 +17,25 @@
#include "directional-element-interface.hh"
// -> offset callback
-MAKE_SCHEME_CALLBACK (Rest, after_line_breaking, 1);
+MAKE_SCHEME_CALLBACK (Rest, y_offset_callback, 2);
SCM
-Rest::after_line_breaking (SCM smob)
+Rest::y_offset_callback (SCM smob, SCM axis)
{
Grob *me = unsmob_grob (smob);
+ (void) axis;
+
int bt = scm_to_int (me->get_property ("duration-log"));
int lc = Staff_symbol_referencer::line_count (me);
Real ss = Staff_symbol_referencer::staff_space (me);
+
+ Real amount = 0.0;
if (lc % 2)
{
if (bt == 0 && lc > 1)
- me->translate_axis (ss, Y_AXIS);
+ amount += ss;
}
else
- me->translate_axis (ss / 2, Y_AXIS);
+ amount += ss / 2;
Grob *d = unsmob_grob (me->get_object ("dot"));
if (d && bt > 4) // UGH.
@@ -44,7 +48,7 @@
d->set_property ("staff-position",
scm_from_int ((bt == 0) ? -1 : 1));
}
- return SCM_UNSPECIFIED;
+ return scm_from_double (amount);
}
/*
Index: lilypond/lily/script-interface.cc
diff -u lilypond/lily/script-interface.cc:1.20
lilypond/lily/script-interface.cc:1.21
--- lilypond/lily/script-interface.cc:1.20 Sun Oct 16 01:06:19 2005
+++ lilypond/lily/script-interface.cc Sun Oct 16 01:25:47 2005
@@ -41,6 +41,9 @@
return Stencil ();
}
+/*
+todo: use proper callbacks.
+*/
MAKE_SCHEME_CALLBACK (Script_interface, before_line_breaking, 1);
SCM
Script_interface::before_line_breaking (SCM smob)
Index: lilypond/lily/system.cc
diff -u lilypond/lily/system.cc:1.122 lilypond/lily/system.cc:1.123
--- lilypond/lily/system.cc:1.122 Tue Sep 27 11:33:28 2005
+++ lilypond/lily/system.cc Sun Oct 16 01:25:47 2005
@@ -280,8 +280,10 @@
apply_tweaks (all_elements_->grob (i), false);
for (int i = 0; i < all_elements_->size (); i++)
- all_elements_->grob (i)->calculate_dependencies (PRECALCED, PRECALCING,
- ly_symbol2scm
("before-line-breaking-callback"));
+ {
+ Grob *g = all_elements_->grob (i);
+ (void) g->get_property ("after-line-breaking");
+ }
message (_ ("Calculating line breaks..."));
progress_indication (" ");
@@ -303,8 +305,7 @@
Grob *g = all_elements_->grob (i);
apply_tweaks (g, true);
- g->calculate_dependencies (POSTCALCED, POSTCALCING,
- ly_symbol2scm
("after-line-breaking-callback"));
+ (void) g->get_property ("after-line-breaking");
}
Interval iv (extent (this, Y_AXIS));
Index: lilypond/lily/volta-bracket.cc
diff -u lilypond/lily/volta-bracket.cc:1.54 lilypond/lily/volta-bracket.cc:1.55
--- lilypond/lily/volta-bracket.cc:1.54 Sun Oct 16 01:06:19 2005
+++ lilypond/lily/volta-bracket.cc Sun Oct 16 01:25:47 2005
@@ -36,17 +36,6 @@
Volta_bracket_interface::print (SCM smob)
{
Spanner *me = unsmob_spanner (smob);
-
- /*
- UGH UGH dependency tracking.
- */
- SCM proc = me->get_property ("after-line-breaking-callback");
- if (ly_is_procedure (proc))
- {
- me->set_property ("after-line-breaking-callback", SCM_EOL);
- scm_call_1 (proc, me->self_scm ());
- }
-
Spanner *orig_span = dynamic_cast<Spanner *> (me->original_);
bool broken_first_bracket = orig_span && (orig_span->broken_intos_[0]
== (Spanner *)me);
Index: lilypond/scm/define-grob-properties.scm
diff -u lilypond/scm/define-grob-properties.scm:1.125
lilypond/scm/define-grob-properties.scm:1.126
--- lilypond/scm/define-grob-properties.scm:1.125 Sun Oct 16 01:06:19 2005
+++ lilypond/scm/define-grob-properties.scm Sun Oct 16 01:25:47 2005
@@ -84,9 +84,7 @@
beaming patterns from stem to stem inside a beam.")
- (before-line-breaking-callback ,procedure? "This procedure is
-called before line breaking, but after splitting breakable items at
-potential line breaks.")
+ (before-line-breaking ,boolean? "Dummy property, used to trigger a
callback function.")
(between-cols ,pair? "Where to attach a loose column to")
(bound-padding ,number? "The amount of padding to insert around spanner
bounds.")
(bracket-flare ,number-pair? "A pair of numbers specifying how
@@ -529,7 +527,7 @@
(axis-group-parent-Y ,ly:grob? "Containing Y axis group")
(accidental-grobs ,list? "Alist with (NOTENAME . GROBLIST) entries")
(adjacent-hairpins ,ly:grob-array? "List of directly neighboring
hairpins")
- (after-line-breaking-callback ,procedure? "This procedure is called after
line breaking. Its return value is ignored.")
+ (after-line-breaking ,boolean? "Dummy property, used to trigger callback
for after-line-breaking")
(all-elements ,ly:grob-array? "list of all grobs in this line. Its
function is to protect objects from being garbage collected.")
(arpeggio ,ly:grob? "pointer to arpeggio object.")
Index: lilypond/scm/define-grobs.scm
diff -u lilypond/scm/define-grobs.scm:1.246 lilypond/scm/define-grobs.scm:1.247
--- lilypond/scm/define-grobs.scm:1.246 Sun Oct 16 01:06:19 2005
+++ lilypond/scm/define-grobs.scm Sun Oct 16 01:25:47 2005
@@ -22,7 +22,8 @@
(print-function . ,Accidental_interface::print)
(avoid-slur . inside)
(cautionary-style . parentheses)
- (after-line-breaking-callback .
,Accidental_interface::after_line_breaking)
+ (callbacks ((after-line-breaking .
,Accidental_interface::after_line_breaking)))
+
(meta . ((class . Item)
(interfaces . (accidental-interface
font-interface))))))
@@ -94,7 +95,8 @@
(X-offset-callbacks . (,Side_position_interface::aligned_side))
(direction . -1)
(cautionary-style . parentheses)
- (after-line-breaking-callback .
,Accidental_interface::after_line_breaking)
+ (callbacks . ((after-line-breaking .
,Accidental_interface::after_line_breaking)
+ ))
(meta . ((class . Item)
(interfaces . (item-interface
accidental-interface
@@ -141,7 +143,7 @@
(print-function . ,Bar_line::print)
(break-visibility . ,all-visible)
(breakable . #t)
- (before-line-breaking-callback . ,Bar_line::before_line_breaking)
+ (callbacks . ((before-line-breaking . ,Bar_line::before_line_breaking)))
(space-alist . (
(time-signature . (extra-space . 0.75))
(custos . (minimum-space . 2.0))
@@ -264,8 +266,6 @@
;; TODO: should be in SLT.
(thickness . 0.48) ; in staff-space
-; (before-line-breaking-callback . ,Beam::before_line_breaking)
-; (after-line-breaking-callback . ,Beam::after_line_breaking)
(neutral-direction . -1)
(dir-function . ,beam-dir-majority-median)
@@ -377,7 +377,7 @@
(Clef
. (
(print-function . ,Clef::print)
- (before-line-breaking-callback . ,Clef::before_line_breaking)
+ (callbacks ((before-line-breaking . ,Clef::before_line_breaking)))
(breakable . #t)
(font-family . music)
(break-align-symbol . clef)
@@ -417,7 +417,8 @@
(ChordName
. (
(print-function . ,Text_interface::print)
- (after-line-breaking-callback . ,Chord_name::after_line_breaking)
+ (callbacks . ((after-line-breaking . ,Chord_name::after_line_breaking)
+ ))
(word-space . 0.0)
(font-family . sans)
(font-size . 1.5)
@@ -541,7 +542,8 @@
(DynamicText
. (
(print-function . ,Text_interface::print)
- (before-line-breaking-callback .
,Script_interface::before_line_breaking)
+ ;; todo.
+ (callbacks . ((before-line-breaking .
,Script_interface::before_line_breaking)))
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
(self-alignment-X . 0)
(Y-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
@@ -591,7 +593,7 @@
(self-alignment-X . 0)
(self-alignment-Y . 0)
(script-priority . 100)
- (before-line-breaking-callback .
,Script_interface::before_line_breaking)
+ (callbacks . ((before-line-breaking .
,Script_interface::before_line_breaking)))
(font-encoding . fetaNumber)
(font-size . -5) ; don't overlap when next to heads.
(meta . ((class . Item)
@@ -610,7 +612,8 @@
(breakable . #t)
(X-extent-callback . #f)
(Y-extent-callback . #f)
- (after-line-breaking-callback . ,Line_spanner::after_line_breaking)
+ (callbacks ((after-line-breaking . ,Line_spanner::after_line_breaking)
+ ))
(print-function . ,Line_spanner::print)
(meta . ((class . Spanner)
(interfaces . (line-interface
@@ -638,7 +641,7 @@
(Hairpin
. (
(print-function . ,Hairpin::print)
- (after-line-breaking-callback . ,Hairpin::after_line_breaking)
+ (callbacks . ((after-line-breaking . ,Hairpin::after_line_breaking)))
(thickness . 1.0)
(height . 0.6666)
(spacing-procedure . ,Spanner::set_spacing_rods)
@@ -1029,7 +1032,7 @@
(PaperColumn
. (
(axes . (0))
- (before-line-breaking-callback . ,Paper_column::before_line_breaking)
+ (callbacks ((before-line-breaking .
,Paper_column::before_line_breaking)))
(X-extent-callback . ,Axis_group_interface::group_extent_callback)
;; debugging
@@ -1058,7 +1061,7 @@
. (
(axes . (0))
(X-extent-callback . ,Axis_group_interface::group_extent_callback)
- (before-line-breaking-callback . ,Paper_column::before_line_breaking)
+ (callbacks . ((before-line-breaking .
,Paper_column::before_line_breaking)))
(breakable . #t)
;; debugging stuff: print column number.
@@ -1119,7 +1122,7 @@
(print-function . ,Text_interface::print)
(X-offset-callbacks . (,Self_alignment_interface::aligned_on_self))
(Y-offset-callbacks . (,Side_position_interface::aligned_side))
- (after-line-breaking-callback . ,shift-right-at-line-begin)
+ (callbacks . ((after-line-breaking . ,shift-right-at-line-begin)))
(self-alignment-X . 0)
(direction . 1)
(breakable . #t)
@@ -1154,12 +1157,14 @@
(interfaces . (percent-repeat-interface))))))
(Rest
. (
- (after-line-breaking-callback . ,Rest::after_line_breaking)
(X-extent-callback . ,Rest::extent_callback)
(Y-extent-callback . ,Rest::extent_callback)
(print-function . ,Rest::print)
- (Y-offset-callbacks . (,Staff_symbol_referencer::callback
- ,Rest::polyphonic_offset_callback))
+ (Y-offset-callbacks . (
+ ,Staff_symbol_referencer::callback
+ ,Rest::polyphonic_offset_callback
+ ,Rest::y_offset_callback
+ ))
(minimum-distance . 0.25)
(meta . ((class . Item)
(interfaces . (font-interface
@@ -1187,7 +1192,7 @@
(staff-padding . 0.25)
;; (script-priority . 0) priorities for scripts, see script.scm
(X-offset-callbacks . (,Self_alignment_interface::centered_on_parent))
- (before-line-breaking-callback .
,Script_interface::before_line_breaking)
+ (callbacks . ((before-line-breaking .
,Script_interface::before_line_breaking)))
(font-encoding . fetaMusic)
(meta . ((class . Item)
(interfaces . (script-interface
@@ -1196,7 +1201,7 @@
(ScriptColumn
. (
- (before-line-breaking-callback . ,Script_column::before_line_breaking)
+ (callbacks . ((before-line-breaking .
,Script_column::before_line_breaking)))
(meta . ((class . Item)
(interfaces . (script-column-interface))))))
@@ -1252,7 +1257,7 @@
(Y-extent-callback . ())
(layer . 0)
(breakable . #t)
- (before-line-breaking-callback . ,Span_bar::before_line_breaking)
+ (callbacks . ((before-line-breaking . ,Span_bar::before_line_breaking)))
;; ugh duplication!
;;
@@ -1473,7 +1478,8 @@
(print-function . ,System_start_delimiter::print)
(glyph . "bar-line")
(thickness . 1.6)
- (after-line-breaking-callback .
,System_start_delimiter::after_line_breaking)
+ (callbacks . ((after-line-breaking .
,System_start_delimiter::after_line_breaking)))
+
(meta . ((class . Spanner)
(interfaces . (system-start-delimiter-interface))))))
@@ -1502,7 +1508,7 @@
;; sync with Fingering ?
(padding . 0.5)
(staff-padding . 0.5)
- (before-line-breaking-callback .
,Script_interface::before_line_breaking)
+ (callbacks . ((before-line-breaking .
,Script_interface::before_line_breaking)))
(avoid-slur . around)
(slur-padding . 0.5)
(script-priority . 200)
@@ -1543,8 +1549,8 @@
(TieColumn
. (
(callbacks . ((positioning-done . ,Tie_column::calc_positioning_done)
+ (before-line-breaking . ,Tie_column::before_line_breaking)
))
- (before-line-breaking-callback . ,Tie_column::before_line_breaking)
(X-extent-callback . #f)
(Y-extent-callback . #f)
@@ -1722,7 +1728,7 @@
(VoltaBracket
. (
(print-function . ,Volta_bracket_interface::print)
- (after-line-breaking-callback .
,Volta_bracket_interface::after_line_breaking)
+ (callbacks . ((after-line-breaking .
,Volta_bracket_interface::after_line_breaking)))
(direction . ,UP)
(padding . 1)
(font-encoding . fetaNumber)
@@ -1747,7 +1753,7 @@
(X-extent-callback . #f)
(Y-extent-callback . #f)
(print-function . ,Line_spanner::print)
- (after-line-breaking-callback . ,Line_spanner::after_line_breaking)
+ (callbacks ((after-line-breaking . ,Line_spanner::after_line_breaking)))
(meta . ((class . Spanner)
(interfaces . (line-spanner-interface
line-interface))))))))
_______________________________________________
Lilypond-cvs mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-cvs