package com.xenoage.zong.io.musiclayout; import static com.xenoage.utils.collections.CollectionUtils.map; import java.io.IOException; import java.util.HashMap; import com.xenoage.utils.xml.XmlReader; import com.xenoage.zong.musiclayout.settings.ChordWidths; /** * Reader for {@link ChordWidths}. * * @author Andreas Wenger */ public class ChordWidthsReader { /** * Reads a {@link ChordWidths} from the given {@link XmlReader} at the "chordwidths" element. */ public static ChordWidths readChordWidths(XmlReader r) throws IOException { HashMap<String, Float> m = map(); while (r.openNextChildElement()) { String n = r.getElementName(); String width = r.getAttribute("width"); if (width != null) { m.put(n, Float.parseFloat(width)); } r.closeElement(); } return new ChordWidths(v(m, "whole"), v(m, "half"), v(m, "quarter"), v(m, "dotGap"), v(m, "dot"), v(m, "accToNoteGap"), v(m, "accToAccGap"), v(m, "doubleSharp"), v(m, "sharp"), v(m, "natural"), v(m, "flat"), v(m, "doubleFlat")); } private static float v(HashMap<String, Float> m, String key) { Float ret = m.get(key); if (ret == null) return 0; return ret; } }