package com.xenoage.zong.musicxml.types;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import com.xenoage.utils.annotations.NonNull;
import com.xenoage.utils.xml.XmlReader;
import com.xenoage.utils.xml.XmlWriter;
import com.xenoage.zong.musicxml.types.attributes.MxlColor;
import com.xenoage.zong.musicxml.types.attributes.MxlPosition;
import com.xenoage.zong.musicxml.types.enums.MxlStemValue;
import com.xenoage.zong.musicxml.types.util.MxlPositionContent;
/**
* MusicXML stem.
*
* @author Andreas Wenger
*/
@AllArgsConstructor @Getter @Setter
public final class MxlStem
implements MxlPositionContent {
public static final String elemName = "stem";
@NonNull private MxlStemValue value;
private MxlPosition position;
private MxlColor color;
@NonNull public static MxlStem read(XmlReader reader) {
MxlPosition yPosition = MxlPosition.read(reader);
MxlColor color = MxlColor.read(reader);
MxlStemValue stem = MxlStemValue.read(reader);
return new MxlStem(stem, yPosition, color);
}
public void write(XmlWriter writer) {
writer.writeElementStart(elemName);
position.write(writer);
color.write(writer);
value.write(writer);
writer.writeElementEnd();
}
}