/* * Created on 26-nov-2005 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package org.herac.tuxguitar.song.models; import java.util.ArrayList; import java.util.List; import org.herac.tuxguitar.song.factory.TGFactory; /** * @author julian * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public abstract class TGMeasure { public static final int CLEF_TREBLE = 1; public static final int CLEF_BASS = 2; public static final int CLEF_TENOR = 3; public static final int CLEF_ALTO = 4; public static final int DEFAULT_CLEF = CLEF_TREBLE; public static final int DEFAULT_KEY_SIGNATURE= 0; private TGMeasureHeader header; private TGTrack track; private int clef; private int keySignature; private List beats; public TGMeasure(TGMeasureHeader header){ this.header = header; this.clef = DEFAULT_CLEF; this.keySignature = DEFAULT_KEY_SIGNATURE; this.beats = new ArrayList(); } public TGTrack getTrack() { return this.track; } public void setTrack(TGTrack track) { this.track = track; } public int getClef() { return this.clef; } public void setClef(int clef) { this.clef = clef; } public int getKeySignature() { return this.keySignature; } public void setKeySignature(int keySignature) { this.keySignature = keySignature; } public List getBeats() { return this.beats; } public void addBeat(TGBeat beat){ beat.setMeasure(this); this.beats.add(beat); } public void moveBeat(int index,TGBeat beat){ this.beats.remove(beat); this.beats.add(index,beat); } public void removeBeat(TGBeat beat){ this.beats.remove(beat); } public TGBeat getBeat(int index){ if(index >= 0 && index < countBeats()){ return (TGBeat)this.beats.get(index); } return null; } public int countBeats(){ return this.beats.size(); } public TGMeasureHeader getHeader() { return this.header; } public void setHeader(TGMeasureHeader header) { this.header = header; } public int getNumber() { return this.header.getNumber(); } public int getRepeatClose() { return this.header.getRepeatClose(); } public long getStart() { return this.header.getStart(); } public TGTempo getTempo() { return this.header.getTempo(); } public TGTimeSignature getTimeSignature() { return this.header.getTimeSignature(); } public boolean isRepeatOpen() { return this.header.isRepeatOpen(); } public int getTripletFeel() { return this.header.getTripletFeel(); } public long getLength() { return this.header.getLength(); } public boolean hasMarker() { return this.header.hasMarker(); } public TGMarker getMarker(){ return this.header.getMarker(); } public void makeEqual(TGMeasure measure){ this.clef = measure.getClef(); this.keySignature = measure.getKeySignature(); this.beats.clear(); for(int i = 0; i < measure.countBeats(); i ++){ TGBeat beat = measure.getBeat(i); this.addBeat(beat); } } public TGMeasure clone(TGFactory factory,TGMeasureHeader header){ TGMeasure measure = factory.newMeasure(header); measure.setClef(getClef()); measure.setKeySignature(getKeySignature()); for(int i = 0; i < countBeats(); i ++){ TGBeat beat = (TGBeat)this.beats.get(i); measure.addBeat(beat.clone(factory)); } return measure; } }