package com.xenoage.zong.musiclayout.layouter.scoreframelayout.util;
import static com.xenoage.utils.collections.CollectionUtils.addAll;
import java.util.List;
import lombok.AllArgsConstructor;
import com.xenoage.zong.core.music.chord.Chord;
import com.xenoage.zong.musiclayout.stampings.AccidentalStamping;
import com.xenoage.zong.musiclayout.stampings.ArticulationStamping;
import com.xenoage.zong.musiclayout.stampings.FlagsStamping;
import com.xenoage.zong.musiclayout.stampings.LegerLineStamping;
import com.xenoage.zong.musiclayout.stampings.NoteheadStamping;
import com.xenoage.zong.musiclayout.stampings.ProlongationDotStamping;
import com.xenoage.zong.musiclayout.stampings.StaffStamping;
import com.xenoage.zong.musiclayout.stampings.Stamping;
import com.xenoage.zong.musiclayout.stampings.StemStamping;
/**
* Layout information on a chord: a list of noteheads,
* leger lines, dots, accidentals and a stem and flag.
*
* @author Andreas Wenger
*/
@AllArgsConstructor
public class ChordStampings {
public Chord chord;
public float xMm;
public StaffStamping staff;
public NoteheadStamping[] noteheads;
public ProlongationDotStamping[] dots;
public AccidentalStamping[] accidentals;
public LegerLineStamping[] legerLines;
public ArticulationStamping[] articulations;
public FlagsStamping flags;
public StemStamping stem;
public NoteheadStamping getFirstNotehead() {
return noteheads[0];
}
public NoteheadStamping getLastNotehead() {
return noteheads[noteheads.length - 1];
}
public void addAllTo(List<Stamping> list) {
addAll(list, noteheads);
addAll(list, dots);
addAll(list, accidentals);
addAll(list, legerLines);
addAll(list, articulations);
if (stem != null)
list.add(stem);
if (flags != null)
list.add(flags);
}
}