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.MxlPrintStyle;
import com.xenoage.zong.musicxml.types.choice.MxlNotationsContent;
import com.xenoage.zong.musicxml.types.choice.MxlOrnamentsContent;
import com.xenoage.zong.musicxml.types.enums.MxlAccidentalText;
import com.xenoage.zong.musicxml.types.enums.MxlPlacement;
import com.xenoage.zong.musicxml.types.util.MxlPlacementContent;
import com.xenoage.zong.musicxml.types.util.MxlPrintStyleContent;
/**
* MusicXML accidental-mark.
*
* @author Andreas Wenger
*/
@AllArgsConstructor @Getter @Setter
public final class MxlAccidentalMark
implements MxlNotationsContent, MxlOrnamentsContent, MxlPrintStyleContent, MxlPlacementContent {
public static final String elemName = "accidental-mark";
private MxlAccidentalText accidentalText;
private MxlPrintStyle printStyle;
private MxlPlacement placement;
@Override public MxlNotationsContentType getNotationsContentType() {
return MxlNotationsContentType.AccidentalMark;
}
@Override public MxlOrnamentsContentType getOrnamentsContentType() {
return MxlOrnamentsContentType.AccidentalMark;
}
@NonNull public static MxlAccidentalMark read(XmlReader reader) {
MxlPrintStyle printStyle = MxlPrintStyle.read(reader);
MxlPlacement placement = MxlPlacement.read(reader);
MxlAccidentalText accidentalText = MxlAccidentalText.read(reader);
return new MxlAccidentalMark(accidentalText, printStyle, placement);
}
@Override public void write(XmlWriter writer) {
writer.writeElementStart(elemName);
printStyle.write(writer);
placement.write(writer);
accidentalText.write(writer);
writer.writeElementEnd();
}
}