package com.xenoage.zong.musicxml.types;
import com.xenoage.utils.annotations.NonNull;
import com.xenoage.utils.xml.XmlReader;
import com.xenoage.utils.xml.XmlWriter;
import com.xenoage.zong.musicxml.types.enums.MxlBeamValue;
import com.xenoage.zong.musicxml.util.IncompleteMusicXML;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import static com.xenoage.utils.NullUtils.notNull;
/**
* MusicXML beam.
*
* @author Andreas Wenger
*/
@IncompleteMusicXML(missing = "repeater,fan,color")
@AllArgsConstructor @Getter @Setter
public final class MxlBeam {
public static final String elemName = "beam";
@NonNull private MxlBeamValue value;
private int number;
private static final int defaultNumber = 1;
@NonNull public static MxlBeam read(XmlReader reader) {
int number = notNull(reader.getAttributeInt("number"), defaultNumber);
MxlBeamValue value = MxlBeamValue.read(reader);
return new MxlBeam(value, number);
}
public void write(XmlWriter writer) {
writer.writeElementStart(elemName);
writer.writeAttribute("number", number);
value.write(writer);
writer.writeElementEnd();
}
}