//----------------------------------------------------------------------------// // // // M e a s u r e B a s i c N u m b e r e r // // // //----------------------------------------------------------------------------// // <editor-fold defaultstate="collapsed" desc="hdr"> // // Copyright © Hervé Bitteur and others 2000-2013. All rights reserved. // // This software is released under the GNU General Public License. // // Goto http://kenai.com/projects/audiveris to report bugs or suggestions. // //----------------------------------------------------------------------------// // </editor-fold> package omr.score; import omr.score.entity.Measure; import omr.score.entity.Page; import omr.score.visitor.AbstractScoreVisitor; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Class {@code MeasureBasicNumberer} visits a page hierarchy to * assign very basic measures ids. * These Ids are very basic (and temporary), ranging from 1 for the first * measure in the page. * * @author Hervé Bitteur */ public class MeasureBasicNumberer extends AbstractScoreVisitor { //~ Static fields/initializers --------------------------------------------- /** Usual logger utility */ private static final Logger logger = LoggerFactory.getLogger( MeasureBasicNumberer.class); //~ Constructors ----------------------------------------------------------- //----------------------// // MeasureBasicNumberer // //----------------------// /** * Creates a new MeasureBasicNumberer object. */ public MeasureBasicNumberer () { } //~ Methods ---------------------------------------------------------------- //---------------// // visit Measure // //---------------// @Override public boolean visit (Measure measure) { try { // Set measure id, based on a preceding measure, whatever the part Measure precedingMeasure = measure.getPrecedingInPage(); if (precedingMeasure != null) { int precedingId = precedingMeasure.getIdValue(); measure.setPageId(precedingId + 1, false); } else { // Very first measure (in this page) measure.setPageId(1, false); } } catch (Exception ex) { logger.warn( getClass().getSimpleName() + " Error visiting " + measure, ex); } return true; } //------------// // visit Page // //------------// @Override public boolean visit (Page page) { page.acceptChildren(this); // Temporary value page.setDeltaMeasureId(0); return false; } //-------------// // visit Score // //-------------// @Override public boolean visit (Score score) { score.acceptChildren(this); return false; } }