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;
/**
* MusicXML scaling.
*
* @author Andreas Wenger
*/
@AllArgsConstructor @Getter @Setter
public final class MxlScaling {
public static final String elemName = "scaling";
private float millimeters;
private float tenths;
@NonNull public static MxlScaling read(XmlReader reader) {
Float millimeters = null, tenths = null;
while (reader.openNextChildElement()) {
String n = reader.getElementName();
if (n.equals("millimeters"))
millimeters = reader.getTextFloatNotNull();
else if (n.equals("tenths"))
tenths = reader.getTextFloatNotNull();
reader.closeElement();
}
if (millimeters == null)
throw reader.dataException("millimeters unknown");
if (tenths == null)
throw reader.dataException("tenths unknown");
return new MxlScaling(millimeters, tenths);
}
public void write(XmlWriter writer) {
writer.writeElementStart(elemName);
writer.writeElementText("millimeters", millimeters);
writer.writeElementText("tenths", tenths);
writer.writeElementEnd();
}
}