void MidiEventBase::read(Xml& xml) { setType(Note); a = 0; b = 0; c = 0; int dataLen = 0; for (;;) { Xml::Token token = xml.parse(); const QString& tag = xml.s1(); switch (token) { case Xml::Error: case Xml::End: return; case Xml::TagStart: xml.unknown("Event"); break; case Xml::Text: { QByteArray ba = tag.toLatin1(); const char*s = ba.constData(); edata.data = new unsigned char[dataLen]; edata.dataLen = dataLen; unsigned char* d = edata.data; for (int i = 0; i < dataLen; ++i) { char* endp; *d++ = strtol(s, &endp, 16); s = endp; } } break; case Xml::Attribut: if (tag == "tick") setTick(xml.s2().toInt()); else if (tag == "type") setType(EventType(xml.s2().toInt())); else if (tag == "len") setLenTick(xml.s2().toInt()); else if (tag == "a") a = xml.s2().toInt(); else if (tag == "b") b = xml.s2().toInt(); else if (tag == "c") c = xml.s2().toInt(); else if (tag == "datalen") dataLen = xml.s2().toInt(); break; case Xml::TagEnd: if (tag == "event") return; default: break; } } }
void PosLen::read(Xml& xml, const char* name) { sn = -1; for (;;) { Xml::Token token = xml.parse(); const QString& tag = xml.s1(); switch (token) { case Xml::Error: case Xml::End: return; case Xml::TagStart: xml.unknown(name); break; case Xml::Attribut: if (tag == "tick") { setType(TICKS); setTick(xml.s2().toInt()); } else if (tag == "sample") { setType(FRAMES); setFrame(xml.s2().toInt()); } else if (tag == "len") { int n = xml.s2().toInt(); switch (type()) { case TICKS: setLenTick(n); break; case FRAMES: setLenFrame(n); break; } } else xml.unknown(name); break; case Xml::TagEnd: if (tag == name) return; default: break; } } }
void PosLen::read(XmlReader& e) { QString s; if (e.hasAttribute("tick")) { setType(TICKS); setTick(e.intAttribute("tick")); } if (e.hasAttribute("sample")) { setType(FRAMES); setFrame(e.intAttribute("sample")); } if (e.hasAttribute("len")) { int n = e.intAttribute("len"); if (type() == TICKS) setLenTick(n); else setLenFrame(n); } }
void PosLen::read(QDomNode node) { const QDomElement& e = node.toElement(); QString s; if (e.hasAttribute("tick")) { setType(TICKS); setTick(e.attribute("tick").toInt()); } if (e.hasAttribute("sample")) { setType(FRAMES); setFrame(e.attribute("sample").toInt()); } if (e.hasAttribute("len")) { int n = e.attribute("len").toInt(); if (type() == TICKS) setLenTick(n); else setLenFrame(n); } }
void PosLen::read(QDomNode node) { QDomElement e = node.toElement(); QString s; s = e.attribute("tick"); if (!s.isEmpty()) { setType(TICKS); setTick(s.toInt()); } s = e.attribute("sample"); if (!s.isEmpty()) { setType(FRAMES); setFrame(s.toInt()); } s = e.attribute("len"); if (!s.isEmpty()) { int n = s.toInt(); if (type() == TICKS) setLenTick(n); else setLenFrame(n); } }