QVariant getProperty(P_ID id, XmlReader& e) { switch(propertyType(id)) { case P_TYPE::BOOL: return QVariant(bool(e.readInt())); case P_TYPE::SUBTYPE: case P_TYPE::INT: return QVariant(e.readInt()); case P_TYPE::REAL: case P_TYPE::SPATIUM: case P_TYPE::SP_REAL: case P_TYPE::TEMPO: return QVariant(e.readDouble()); case P_TYPE::FRACTION: return QVariant::fromValue(e.readFraction()); case P_TYPE::COLOR: return QVariant(e.readColor()); case P_TYPE::POINT: return QVariant(e.readPoint()); case P_TYPE::SCALE: case P_TYPE::SIZE: return QVariant(e.readSize()); case P_TYPE::STRING: return QVariant(e.readElementText()); case P_TYPE::DIRECTION: { QString value(e.readElementText()); if (value == "up") return QVariant(int(MScore::Direction::UP)); else if (value == "down") return QVariant(int(MScore::Direction::DOWN)); else if (value == "auto") return QVariant(int(MScore::Direction::AUTO)); } break; case P_TYPE::DIRECTION_H: { QString value(e.readElementText()); if (value == "left" || value == "1") return QVariant(int(MScore::DirectionH::LEFT)); else if (value == "right" || value == "2") return QVariant(int(MScore::DirectionH::RIGHT)); else if (value == "auto") return QVariant(int(MScore::DirectionH::AUTO)); } break; case P_TYPE::LAYOUT_BREAK: { QString value(e.readElementText()); if (value == "line") return QVariant(int(LayoutBreak::Type::LINE)); if (value == "page") return QVariant(int(LayoutBreak::Type::PAGE)); if (value == "section") return QVariant(int(LayoutBreak::Type::SECTION)); qDebug("getProperty: invalid P_TYPE::LAYOUT_BREAK: <%s>", qPrintable(value)); } break; case P_TYPE::VALUE_TYPE: { QString value(e.readElementText()); if (value == "offset") return QVariant(int(Note::ValueType::OFFSET_VAL)); else if (value == "user") return QVariant(int(Note::ValueType::USER_VAL)); } break; case P_TYPE::PLACEMENT: { QString value(e.readElementText()); if (value == "above") return QVariant(int(Element::Placement::ABOVE)); else if (value == "below") return QVariant(int(Element::Placement::BELOW)); } break; case P_TYPE::BEAM_MODE: // TODO return QVariant(int(0)); case P_TYPE::GROUPS: { Groups g; g.read(e); return QVariant::fromValue(g); } case P_TYPE::POINT_MM: case P_TYPE::SIZE_MM: case P_TYPE::SYMID: case P_TYPE::TEXT_STYLE: return QVariant(); } return QVariant(); }
QVariant getProperty(P_ID id, XmlReader& e) { switch(propertyType(id)) { case T_BOOL: return QVariant(bool(e.readInt())); case T_SUBTYPE: case T_INT: return QVariant(e.readInt()); case T_REAL: case T_SPATIUM: case T_SP_REAL: case T_TEMPO: return QVariant(e.readDouble()); case T_FRACTION: return QVariant::fromValue(e.readFraction()); case T_COLOR: return QVariant(e.readColor()); case T_POINT: return QVariant(e.readPoint()); case T_SCALE: case T_SIZE: return QVariant(e.readSize()); case T_STRING: return QVariant(e.readElementText()); case T_DIRECTION: { QString value(e.readElementText()); if (value == "up") return QVariant(MScore::UP); else if (value == "down") return QVariant(MScore::DOWN); else if (value == "auto") return QVariant(MScore::AUTO); } break; case T_DIRECTION_H: { QString value(e.readElementText()); if (value == "left") return QVariant(MScore::DH_LEFT); else if (value == "right") return QVariant(MScore::DH_RIGHT); else if (value == "auto") return QVariant(MScore::DH_AUTO); } break; case T_LAYOUT_BREAK: { QString value(e.readElementText()); if (value == "line") return QVariant(int(LAYOUT_BREAK_LINE)); if (value == "page") return QVariant(int(LAYOUT_BREAK_PAGE)); if (value == "section") return QVariant(int(LAYOUT_BREAK_SECTION)); qDebug("getProperty: invalid T_LAYOUT_BREAK: <%s>", qPrintable(value)); } break; case T_VALUE_TYPE: { QString value(e.readElementText()); if (value == "offset") return QVariant(int(MScore::OFFSET_VAL)); else if (value == "user") return QVariant(int(MScore::USER_VAL)); } break; case T_PLACEMENT: { QString value(e.readElementText()); if (value == "above") return QVariant(int(Element::ABOVE)); else if (value == "below") return QVariant(int(Element::BELOW)); } break; case T_BEAM_MODE: // TODO return QVariant(int(0)); case T_GROUPS: { Groups g; g.read(e); return QVariant::fromValue(g); } case T_POINT_MM: case T_SIZE_MM: return QVariant(); } return QVariant(); }
QVariant getProperty(P_ID id, XmlReader& e) { switch (propertyType(id)) { case P_TYPE::BOOL: return QVariant(bool(e.readInt())); case P_TYPE::SUBTYPE: case P_TYPE::INT: return QVariant(e.readInt()); case P_TYPE::REAL: case P_TYPE::SPATIUM: case P_TYPE::SP_REAL: case P_TYPE::TEMPO: return QVariant(e.readDouble()); case P_TYPE::FRACTION: return QVariant::fromValue(e.readFraction()); case P_TYPE::COLOR: return QVariant(e.readColor()); case P_TYPE::POINT: return QVariant(e.readPoint()); case P_TYPE::SCALE: case P_TYPE::SIZE: return QVariant(e.readSize()); case P_TYPE::STRING: return QVariant(e.readElementText()); case P_TYPE::GLISSANDO_STYLE: { QString value(e.readElementText()); if ( value == "whitekeys") return QVariant(int(MScore::GlissandoStyle::WHITE_KEYS)); else if ( value == "blackkeys") return QVariant(int(MScore::GlissandoStyle::BLACK_KEYS)); else if ( value == "diatonic") return QVariant(int(MScore::GlissandoStyle::DIATONIC)); else // e.g., normally "Chromatic" return QVariant(int(MScore::GlissandoStyle::CHROMATIC)); } break; case P_TYPE::ORNAMENT_STYLE: { QString value(e.readElementText()); if ( value == "baroque") return QVariant(int(MScore::OrnamentStyle::BAROQUE)); return QVariant(int(MScore::OrnamentStyle::DEFAULT)); } case P_TYPE::DIRECTION: return QVariant::fromValue(Direction(e.readElementText())); case P_TYPE::DIRECTION_H: { QString value(e.readElementText()); if (value == "left" || value == "1") return QVariant(int(MScore::DirectionH::LEFT)); else if (value == "right" || value == "2") return QVariant(int(MScore::DirectionH::RIGHT)); else if (value == "auto") return QVariant(int(MScore::DirectionH::AUTO)); } break; case P_TYPE::LAYOUT_BREAK: { QString value(e.readElementText()); if (value == "line") return QVariant(int(LayoutBreak::Type::LINE)); if (value == "page") return QVariant(int(LayoutBreak::Type::PAGE)); if (value == "section") return QVariant(int(LayoutBreak::Type::SECTION)); qDebug("getProperty: invalid P_TYPE::LAYOUT_BREAK: <%s>", qPrintable(value)); } break; case P_TYPE::VALUE_TYPE: { QString value(e.readElementText()); if (value == "offset") return QVariant(int(Note::ValueType::OFFSET_VAL)); else if (value == "user") return QVariant(int(Note::ValueType::USER_VAL)); } break; case P_TYPE::PLACEMENT: { QString value(e.readElementText()); if (value == "above") return QVariant(int(Element::Placement::ABOVE)); else if (value == "below") return QVariant(int(Element::Placement::BELOW)); } break; case P_TYPE::BARLINE_TYPE: { bool ok; const QString& val(e.readElementText()); int ct = val.toInt(&ok); if (ok) return QVariant(ct); else { BarLineType t = BarLine::barLineType(val); return QVariant::fromValue(t); } } break; case P_TYPE::BEAM_MODE: // TODO return QVariant(int(0)); case P_TYPE::GROUPS: { Groups g; g.read(e); return QVariant::fromValue(g); } case P_TYPE::POINT_MM: // not supported case P_TYPE::TDURATION: case P_TYPE::SIZE_MM: case P_TYPE::SYMID: case P_TYPE::TEXT_STYLE: case P_TYPE::INT_LIST: return QVariant(); } return QVariant(); }
QVariant getProperty(P_ID id, XmlReader& e) { switch (propertyType(id)) { case P_TYPE::BOOL: return QVariant(bool(e.readInt())); case P_TYPE::SUBTYPE: case P_TYPE::ZERO_INT: case P_TYPE::INT: return QVariant(e.readInt()); case P_TYPE::REAL: case P_TYPE::SPATIUM: case P_TYPE::SP_REAL: case P_TYPE::TEMPO: return QVariant(e.readDouble()); case P_TYPE::FRACTION: return QVariant::fromValue(e.readFraction()); case P_TYPE::COLOR: return QVariant(e.readColor()); case P_TYPE::POINT: return QVariant(e.readPoint()); case P_TYPE::SCALE: case P_TYPE::SIZE: return QVariant(e.readSize()); case P_TYPE::FONT: case P_TYPE::STRING: return QVariant(e.readElementText()); case P_TYPE::GLISSANDO_STYLE: { QString value(e.readElementText()); if ( value == "whitekeys") return QVariant(int(MScore::GlissandoStyle::WHITE_KEYS)); else if ( value == "blackkeys") return QVariant(int(MScore::GlissandoStyle::BLACK_KEYS)); else if ( value == "diatonic") return QVariant(int(MScore::GlissandoStyle::DIATONIC)); else // e.g., normally "Chromatic" return QVariant(int(MScore::GlissandoStyle::CHROMATIC)); } break; case P_TYPE::ORNAMENT_STYLE: { QString value(e.readElementText()); if ( value == "baroque") return QVariant(int(MScore::OrnamentStyle::BAROQUE)); return QVariant(int(MScore::OrnamentStyle::DEFAULT)); } case P_TYPE::DIRECTION: return QVariant::fromValue(Direction(e.readElementText())); case P_TYPE::DIRECTION_H: { QString value(e.readElementText()); if (value == "left" || value == "1") return QVariant(int(MScore::DirectionH::LEFT)); else if (value == "right" || value == "2") return QVariant(int(MScore::DirectionH::RIGHT)); else if (value == "auto") return QVariant(int(MScore::DirectionH::AUTO)); } break; case P_TYPE::LAYOUT_BREAK: { QString value(e.readElementText()); if (value == "line") return QVariant(int(LayoutBreak::LINE)); if (value == "page") return QVariant(int(LayoutBreak::PAGE)); if (value == "section") return QVariant(int(LayoutBreak::SECTION)); if (value == "nobreak") return QVariant(int(LayoutBreak::NOBREAK)); qDebug("getProperty: invalid P_TYPE::LAYOUT_BREAK: <%s>", qPrintable(value)); } break; case P_TYPE::VALUE_TYPE: { QString value(e.readElementText()); if (value == "offset") return QVariant(int(Note::ValueType::OFFSET_VAL)); else if (value == "user") return QVariant(int(Note::ValueType::USER_VAL)); } break; case P_TYPE::PLACEMENT: { QString value(e.readElementText()); if (value == "above") return QVariant(int(Element::Placement::ABOVE)); else if (value == "below") return QVariant(int(Element::Placement::BELOW)); } break; case P_TYPE::BARLINE_TYPE: { bool ok; const QString& val(e.readElementText()); int ct = val.toInt(&ok); if (ok) return QVariant(ct); else { BarLineType t = BarLine::barLineType(val); return QVariant::fromValue(t); } } break; case P_TYPE::BEAM_MODE: // TODO return QVariant(int(0)); case P_TYPE::GROUPS: { Groups g; g.read(e); return QVariant::fromValue(g); } case P_TYPE::SYMID: return QVariant::fromValue(Sym::name2id(e.readElementText())); break; case P_TYPE::HEAD_GROUP: return QVariant::fromValue(NoteHead::name2group(e.readElementText()));; case P_TYPE::HEAD_TYPE: return QVariant::fromValue(NoteHead::name2type(e.readElementText())); case P_TYPE::POINT_MM: // not supported case P_TYPE::TDURATION: case P_TYPE::SIZE_MM: case P_TYPE::TEXT_STYLE: case P_TYPE::INT_LIST: return QVariant(); case P_TYPE::SUB_STYLE: return int(subStyleFromName(e.readElementText())); case P_TYPE::ALIGN: { QString s = e.readElementText(); QStringList sl = s.split(','); if (sl.size() != 2) { qDebug("bad align text <%s>", qPrintable(s)); return QVariant(); } Align align = Align::LEFT; if (sl[0] == "center") align = align | Align::HCENTER; else if (sl[0] == "right") align = align | Align::RIGHT; else if (sl[0] == "left") ; else { qDebug("bad align text <%s>", qPrintable(sl[0])); return QVariant(); } if (sl[1] == "center") align = align | Align::VCENTER; else if (sl[1] == "bottom") align = align | Align::BOTTOM; else if (sl[1] == "baseline") align = align | Align::BASELINE; else if (sl[1] == "top") ; else { qDebug("bad align text <%s>", qPrintable(sl[1])); return QVariant(); } return int(align); } default: qFatal("unhandled PID type"); break; } return QVariant(); }