use of com.xenoage.zong.core.header.ScoreHeader in project Zong by Xenoage.
the class PrintReader method readToContext.
public void readToContext(Context context) {
ScoreHeader header = context.getScore().getHeader();
int measure = context.getMp().measure;
// system and page break
Break break_ = readBreak();
if (break_ != null) {
// MusicXML print is in the first broken measure, but we
// store the break in the last measure before the break (thus -1)
int breakMeasure = measure - 1;
if (// ignore, when in the first measure
breakMeasure >= 0)
context.writeColumnElement(break_, breakMeasure);
}
// the first measure of a score is also ok.
if (measure == 0 || break_ != null) {
// first page or new page?
boolean isPageBreak = break_ != null && break_.getPageBreak() == PageBreak.NewPage;
boolean isPageStarted = (measure == 0 || isPageBreak);
if (isPageBreak) {
// increment page index
context.incPageIndex();
}
// first system or new system?
boolean isSystemBreak = isPageBreak || (break_ != null && break_.getSystemBreak() == SystemBreak.NewSystem);
if (isSystemBreak) {
// increment system index
context.incSystemIndex();
}
// read system layout, if there
SystemLayout systemLayout = readSystemLayout(isPageStarted, context.getTenthMm());
if (systemLayout != null)
header.setSystemLayout(context.getSystemIndex(), systemLayout);
// staff layouts
MxlLayout mxlLayout = mxlPrint.getLayout();
if (mxlLayout != null) {
for (MxlStaffLayout mxlStaffLayout : it(mxlLayout.getStaffLayouts())) {
int staffIndex = mxlStaffLayout.getNumberNotNull() - 1;
// get system layout. if it does not exist yet, create it
systemLayout = header.getSystemLayout(context.getSystemIndex());
if (systemLayout == null) {
systemLayout = new SystemLayout();
header.setSystemLayout(context.getSystemIndex(), systemLayout);
}
StaffLayout staffLayout = new StaffLayoutReader(mxlStaffLayout, context.getTenthMm()).read();
systemLayout.setStaffLayout(context.getPartStaffIndices().getStart() + staffIndex, staffLayout);
}
}
}
}
Aggregations