//----------------------------------------------------------------------------//
// //
// C a e s u r a P a t t e r n //
// //
//----------------------------------------------------------------------------//
// <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.glyph.pattern;
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.sheet.SystemInfo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.awt.Point;
/**
* Class {@code CaesuraPattern} checks that a caesura in a measure
* is not surrounded with chords.
*
* @author Hervé Bitteur
*/
public class CaesuraPattern
extends GlyphPattern
{
//~ Static fields/initializers ---------------------------------------------
/** Usual logger utility */
private static final Logger logger = LoggerFactory.getLogger(
CaesuraPattern.class);
//~ Constructors -----------------------------------------------------------
//----------------//
// CaesuraPattern //
//----------------//
/**
* Creates a new CaesuraPattern object.
*
* @param system the system to process
*/
public CaesuraPattern (SystemInfo system)
{
super("Caesura", system);
}
//~ Methods ----------------------------------------------------------------
//------------//
// runPattern //
//------------//
@Override
public int runPattern ()
{
int nb = 0;
ScoreSystem scoreSystem = system.getScoreSystem();
for (Glyph glyph : system.getGlyphs()) {
if ((glyph.getShape() != Shape.CAESURA) || glyph.isManualShape()) {
continue;
}
Point center = glyph.getAreaCenter();
SystemPart part = scoreSystem.getPartAt(center);
Measure measure = part.getMeasureAt(center);
if (!measure.getChords()
.isEmpty()) {
if (glyph.isVip() || logger.isDebugEnabled()) {
logger.info("Cancelled caesura #{}", glyph.getId());
}
glyph.setShape(null);
nb++;
}
}
return nb;
}
}