package com.xenoage.zong.musicxml.types.attributes;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import com.xenoage.utils.annotations.MaybeNull;
import com.xenoage.utils.xml.XmlReader;
import com.xenoage.utils.xml.XmlWriter;
import com.xenoage.zong.musicxml.types.enums.MxlCSSFontSize;
/**
* MusicXML font-size.
*
* @author Andreas Wenger
*/
@RequiredArgsConstructor @Getter
public final class MxlFontSize {
public static final String attrName = "font-size";
public static final MxlFontSize noFontSize = new MxlFontSize(null, null);
/** The font-size in points. */
@MaybeNull private final Float valuePt;
/** The font-size as a CSS font size. */
@MaybeNull private final MxlCSSFontSize valueCSS;
public static MxlFontSize read(XmlReader reader) {
String s = reader.getAttribute(attrName);
if (s == null)
return noFontSize;
else if (Character.isDigit(s.charAt(0)))
return new MxlFontSize(Float.parseFloat(s), null);
else
return new MxlFontSize(null, MxlCSSFontSize.read(s));
}
public void write(XmlWriter writer) {
if (valuePt != null)
writer.writeAttribute(attrName, "" + valuePt);
else if (valueCSS != null)
writer.writeAttribute(attrName, valueCSS.write());
}
}