Search in sources :

Example 6 with ScoreHeader

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);
            }
        }
    }
}
Also used : ScoreHeader(com.xenoage.zong.core.header.ScoreHeader) MxlStaffLayout(com.xenoage.zong.musicxml.types.MxlStaffLayout) StaffLayout(com.xenoage.zong.core.format.StaffLayout) SystemLayout(com.xenoage.zong.core.format.SystemLayout) MxlSystemLayout(com.xenoage.zong.musicxml.types.MxlSystemLayout) SystemBreak(com.xenoage.zong.core.music.layout.SystemBreak) PageBreak(com.xenoage.zong.core.music.layout.PageBreak) Break(com.xenoage.zong.core.format.Break) MxlLayout(com.xenoage.zong.musicxml.types.groups.MxlLayout) MxlStaffLayout(com.xenoage.zong.musicxml.types.MxlStaffLayout) MxlPrint(com.xenoage.zong.musicxml.types.MxlPrint)

Aggregations

ScoreHeader (com.xenoage.zong.core.header.ScoreHeader)6 Score (com.xenoage.zong.core.Score)4 ScoreFormat (com.xenoage.zong.core.format.ScoreFormat)4 StaffLayout (com.xenoage.zong.core.format.StaffLayout)2 SystemLayout (com.xenoage.zong.core.format.SystemLayout)2 StavesSpacing (com.xenoage.zong.musiclayout.spacing.StavesSpacing)2 SystemSpacing (com.xenoage.zong.musiclayout.spacing.SystemSpacing)2 Paint (android.graphics.Paint)1 Point2f (com.xenoage.utils.math.geom.Point2f)1 Size2f (com.xenoage.utils.math.geom.Size2f)1 Break (com.xenoage.zong.core.format.Break)1 PageFormat (com.xenoage.zong.core.format.PageFormat)1 PageMargins (com.xenoage.zong.core.format.PageMargins)1 ColumnHeader (com.xenoage.zong.core.header.ColumnHeader)1 Part (com.xenoage.zong.core.music.Part)1 StavesList (com.xenoage.zong.core.music.StavesList)1 BracketGroup (com.xenoage.zong.core.music.group.BracketGroup)1 StavesRange (com.xenoage.zong.core.music.group.StavesRange)1 PageBreak (com.xenoage.zong.core.music.layout.PageBreak)1 SystemBreak (com.xenoage.zong.core.music.layout.SystemBreak)1