Joe Neeman wrote: > [explanation of spacing code...] > One solution might be the following, which involves modifying only > accidental-placement: make 2 copies of every accidental, one for the > start-of-a-line case and one for the middle-of-a-line case (so the > start-of-a-line accidentals would be, in the terminology of > Accidental_placement::split_accidentals, the break_reminder accidentals > and the real_accidentals while the middle-of-a-line accidentals would > have copies of only the real_accidentals). Run the accidental layout > algorithm (currently in Accidental_placement::calc_positioning_done, but > you'll want to move it to a different function and make > calc_positioning_done call it twice) twice, once for each set of > accidentals. Then modify Accidental_placement::get_relevant_accidentals > to return one of the sets of accidentals.
I've looked into this approach, and have a few questions: I tried cloning the accidentals in Accidental_placement::add_accidental, but that led to a segfault later on while trying to calculate the X-extent of the cloned accidental, since its layout_ was null. From what I can tell, this is because the cloned grob was never announced. Perhaps I should modify accidental-engraver as well, and have it create two copies there, passing them both to Accidental_placement::add_accidental? Which copy of the accidental should be put into the accidental-grob property of the note head? Thanks, -Chris _______________________________________________ lilypond-devel mailing list [email protected] http://lists.gnu.org/mailman/listinfo/lilypond-devel
