//----------------------------------------------------------------------------//
// //
// S c o r e C l e a n 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.glyph.Shape;
import omr.glyph.facets.Glyph;
import omr.score.entity.Measure;
import omr.score.entity.ScoreSystem;
import omr.score.entity.SystemPart;
import omr.score.visitor.AbstractScoreVisitor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Class {@code ScoreCleaner} can visit the score hierarchy to get rid
* of all measure items except barlines, ready for a new score
* translation.
*
* @author Hervé Bitteur
*/
public class ScoreCleaner
extends AbstractScoreVisitor
{
//~ Static fields/initializers ---------------------------------------------
/** Usual logger utility */
private static final Logger logger = LoggerFactory.getLogger(
ScoreCleaner.class);
//~ Constructors -----------------------------------------------------------
//--------------//
// ScoreCleaner //
//--------------//
/**
* Creates a new ScoreCleaner object.
*/
public ScoreCleaner ()
{
}
//~ Methods ----------------------------------------------------------------
//--------------//
// visit System //
//--------------//
@Override
public boolean visit (ScoreSystem system)
{
try {
logger.debug("Cleaning up {}", system);
// Remove recorded translations for all system glyphs
for (Glyph glyph : system.getInfo()
.getGlyphs()) {
if (glyph.getShape() != Shape.LEDGER) {
glyph.clearTranslations();
}
}
system.acceptChildren(this);
} catch (Exception ex) {
logger.warn(
getClass().getSimpleName() + " Error visiting " + system,
ex);
}
return false;
}
//------------------//
// visit SystemPart //
//------------------//
@Override
public boolean visit (SystemPart systemPart)
{
try {
if (systemPart.isDummy()) {
systemPart.getParent()
.getChildren()
.remove(systemPart);
return false;
} else {
// Remove slurs and wedges
systemPart.cleanupNode();
return true;
}
} catch (Exception ex) {
logger.warn(
getClass().getSimpleName() + " Error visiting " + systemPart,
ex);
}
return false;
}
//---------------//
// visit Measure //
//---------------//
@Override
public boolean visit (Measure measure)
{
try {
measure.cleanupNode();
} catch (Exception ex) {
logger.warn(
getClass().getSimpleName() + " Error visiting " + measure,
ex);
}
return false;
}
}