[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Reduces algorithm time by prefinding footnoted grobs (issue4213042)
From: |
n . puttock |
Subject: |
Re: Reduces algorithm time by prefinding footnoted grobs (issue4213042) |
Date: |
Tue, 01 Mar 2011 22:15:37 +0000 |
http://codereview.appspot.com/4213042/diff/24025/lily/balloon-engraver.cc
File lily/balloon-engraver.cc (right):
http://codereview.appspot.com/4213042/diff/24025/lily/balloon-engraver.cc#newcode65
lily/balloon-engraver.cc:65: Pointer_group_interface::add_grob (g,
ly_symbol2scm ("annotations"), b);
remove (and all related code)
http://codereview.appspot.com/4213042/diff/24025/lily/grob.cc
File lily/grob.cc (right):
http://codereview.appspot.com/4213042/diff/24025/lily/grob.cc#newcode257
lily/grob.cc:257: extract_grob_set (this, "annotations", annotations);
I'm not sure what you were thinking here, but this would never get
called anyway since object_alist_ is empty :)
http://codereview.appspot.com/4213042/diff/24025/lily/page-spacing.cc
File lily/page-spacing.cc (right):
http://codereview.appspot.com/4213042/diff/24025/lily/page-spacing.cc#newcode87
lily/page-spacing.cc:87: return footnote_height;
This produces incorrect results in some cases, since footnotes_ is
initialized before line breaking has taken place. For example, compare
the return values for the following snippets:
\relative c' {
\repeat unfold 3 \footnoteGrob #'NoteHead #'(0 . 2) "foo" "bar"
c1
}
\new Staff \with { \consists "Footnote_engraver" }
\relative c' {
\footnoteGrob #'TimeSignature #'(0 . 2) "foo" "bar"
c1
}
http://codereview.appspot.com/4213042/diff/24025/lily/system.cc
File lily/system.cc (right):
http://codereview.appspot.com/4213042/diff/24025/lily/system.cc#newcode237
lily/system.cc:237: && all_elts[i]->is_live ())
This doesn't do anything: it's the parent which is suicided in
Item::break_visible (), but that happens later than this.
http://codereview.appspot.com/4213042/diff/24025/lily/system.cc#newcode257
lily/system.cc:257: if (!footnote_grobs_[j]->is_live ())
See comment above.
http://codereview.appspot.com/4213042/diff/24025/lily/system.cc#newcode276
lily/system.cc:276: if (!Text_interface::is_markup (footnote_markup))
This is where the defunct footnotes are removed: since you're using the
footnote_grobs_ cache instead of storing the stencils, any FootnoteItem
whose parent has been suicided due to break-visibility settings will
also be suicided in Grob::handle_broken_dependencies (): thus
footnote-text returns '().
http://codereview.appspot.com/4213042/
Re: Reduces algorithm time by prefinding footnoted grobs (issue4213042), hanwenn, 2011/03/04
Re: Reduces algorithm time by prefinding footnoted grobs (issue4213042), mtsolo, 2011/03/04