package com.xenoage.zong.musiclayout.spacer; import static com.xenoage.utils.collections.CollectionUtils.alist; import static com.xenoage.utils.kernel.Range.range; import static com.xenoage.zong.musiclayout.spacer.measure.ColumnSpacer.columnSpacer; import java.util.List; import com.xenoage.zong.core.position.MP; import com.xenoage.zong.musiclayout.layouter.Context; import com.xenoage.zong.musiclayout.notation.Notations; import com.xenoage.zong.musiclayout.spacing.ColumnSpacing; import com.xenoage.zong.musiclayout.spacing.LeadingSpacing; /** * Computes the optimal {@link ColumnSpacing}s for a score, * unbounded by frames or systems constraints, and without * {@link LeadingSpacing}s. * * @author Andreas Wenger */ public class ColumnsSpacer { public static final ColumnsSpacer columnsSpacer = new ColumnsSpacer(); private static final boolean noLeading = false; public List<ColumnSpacing> compute(Notations notations, Context context) { context.saveMp(); List<ColumnSpacing> ret = alist(); for (int iMeasure : range(context.score.getMeasuresCount())) { context.mp = MP.atMeasure(iMeasure); ColumnSpacing column = columnSpacer.compute(context, noLeading, notations); ret.add(column); } context.restoreMp(); return ret; } }