From bf1ad8de5b85931575e1b6e83f56d84f0e296233 Mon Sep 17 00:00:00 2001 From: Joachim Schmitz Date: Thu, 17 Oct 2019 14:56:19 +0200 Subject: [PATCH] fix #277501: support more individual text styles esp. for importing MuseScore 2 scores using many such styles --- libmscore/read206.cpp | 7 +- libmscore/score.cpp | 5 +- libmscore/style.cpp | 207 +++++++++++++++++++++++- libmscore/style.h | 96 +++++++++++ libmscore/types.h | 6 + libmscore/xmlreader.cpp | 12 ++ mscore/inspector/inspectorFingering.cpp | 8 +- 7 files changed, 333 insertions(+), 8 deletions(-) diff --git a/libmscore/read206.cpp b/libmscore/read206.cpp index 9fcd6e2ae67f..9f1b1522fe09 100644 --- a/libmscore/read206.cpp +++ b/libmscore/read206.cpp @@ -633,11 +633,12 @@ void readTextStyle206(MStyle* style, XmlReader& e, std::map 5)) { - qDebug("User style index %d outside of range [0,5].", idx); + if ((int(ss) < int(Tid::USER1)) || (int(ss) > int(Tid::USER12))) { + qDebug("User style index %d outside of range.", idx); return; } - Sid sid[] = { Sid::user1Name, Sid::user2Name, Sid::user3Name, Sid::user4Name, Sid::user5Name, Sid::user6Name }; + Sid sid[] = { Sid::user1Name, Sid::user2Name, Sid::user3Name, Sid::user4Name, Sid::user5Name, Sid::user6Name, + Sid::user7Name, Sid::user8Name, Sid::user9Name, Sid::user10Name, Sid::user11Name, Sid::user12Name}; style->set(sid[idx], name); } } diff --git a/libmscore/score.cpp b/libmscore/score.cpp index 1e94878e3c49..39afa306d5b8 100644 --- a/libmscore/score.cpp +++ b/libmscore/score.cpp @@ -4455,9 +4455,10 @@ void Score::setStyle(const MStyle& s) QString Score::getTextStyleUserName(Tid tid) { QString name = ""; - if (int(tid) >= int(Tid::USER1) && int(tid) <= int(Tid::USER6)) { + if (int(tid) >= int(Tid::USER1) && int(tid) <= int(Tid::USER12)) { int idx = int(tid) - int(Tid::USER1); - Sid sid[] = { Sid::user1Name, Sid::user2Name, Sid::user3Name, Sid::user4Name, Sid::user5Name, Sid::user6Name }; + Sid sid[] = { Sid::user1Name, Sid::user2Name, Sid::user3Name, Sid::user4Name, Sid::user5Name, Sid::user6Name, + Sid::user7Name, Sid::user8Name, Sid::user9Name, Sid::user10Name, Sid::user11Name, Sid::user12Name}; name = styleSt(sid[idx]); } if (name == "") diff --git a/libmscore/style.cpp b/libmscore/style.cpp index f831f284a6ad..af83696febd6 100644 --- a/libmscore/style.cpp +++ b/libmscore/style.cpp @@ -1144,6 +1144,102 @@ static const StyleType styleTypes[] { { Sid::user6FrameFgColor, "user6FrameFgColor", QColor(0, 0, 0, 255) }, { Sid::user6FrameBgColor, "user6FrameBgColor", QColor(255, 255, 255, 0) }, + { Sid::user7Name, "user7Name", "" }, + { Sid::user7FontFace, "user7FontFace", "FreeSerif" }, + { Sid::user7FontSize, "user7FontSize", 10.0 }, + { Sid::user7FontSpatiumDependent, "user7FontSpatiumDependent", true }, + { Sid::user7FontStyle, "user7FontStyle", int(FontStyle::Normal) }, + { Sid::user7Color, "user7Color", QColor(0, 0, 0, 255) }, + { Sid::user7Align, "user7Align", QVariant::fromValue(Align::LEFT | Align::TOP) }, + { Sid::user7Offset, "user7Offset", QPointF() }, + { Sid::user7OffsetType, "user7OffsetType", int(OffsetType::SPATIUM) }, + { Sid::user7FrameType, "user7FrameType", int(FrameType::NO_FRAME) }, + { Sid::user7FramePadding, "user7FramePadding", 0.2 }, + { Sid::user7FrameWidth, "user7FrameWidth", 0.1 }, + { Sid::user7FrameRound, "user7FrameRound", 0 }, + { Sid::user7FrameFgColor, "user7FrameFgColor", QColor(0, 0, 0, 255) }, + { Sid::user7FrameBgColor, "user7FrameBgColor", QColor(255, 255, 255, 0) }, + + { Sid::user8Name, "user8Name", "" }, + { Sid::user8FontFace, "user8FontFace", "FreeSerif" }, + { Sid::user8FontSize, "user8FontSize", 10.0 }, + { Sid::user8FontSpatiumDependent, "user8FontSpatiumDependent", true }, + { Sid::user8FontStyle, "user8FontStyle", int(FontStyle::Normal) }, + { Sid::user8Color, "user8Color", QColor(0, 0, 0, 255) }, + { Sid::user8Align, "user8Align", QVariant::fromValue(Align::LEFT | Align::TOP) }, + { Sid::user8Offset, "user8Offset", QPointF() }, + { Sid::user8OffsetType, "user8OffsetType", int(OffsetType::SPATIUM) }, + { Sid::user8FrameType, "user8FrameType", int(FrameType::NO_FRAME) }, + { Sid::user8FramePadding, "user8FramePadding", 0.2 }, + { Sid::user8FrameWidth, "user8FrameWidth", 0.1 }, + { Sid::user8FrameRound, "user8FrameRound", 0 }, + { Sid::user8FrameFgColor, "user8FrameFgColor", QColor(0, 0, 0, 255) }, + { Sid::user8FrameBgColor, "user8FrameBgColor", QColor(255, 255, 255, 0) }, + + { Sid::user9Name, "user9Name", "" }, + { Sid::user9FontFace, "user9FontFace", "FreeSerif" }, + { Sid::user9FontSize, "user9FontSize", 10.0 }, + { Sid::user9FontSpatiumDependent, "user9FontSpatiumDependent", true }, + { Sid::user9FontStyle, "user9FontStyle", int(FontStyle::Normal) }, + { Sid::user9Color, "user9Color", QColor(0, 0, 0, 255) }, + { Sid::user9Align, "user9Align", QVariant::fromValue(Align::LEFT | Align::TOP) }, + { Sid::user9Offset, "user9Offset", QPointF() }, + { Sid::user9OffsetType, "user9OffsetType", int(OffsetType::SPATIUM) }, + { Sid::user9FrameType, "user9FrameType", int(FrameType::NO_FRAME) }, + { Sid::user9FramePadding, "user9FramePadding", 0.2 }, + { Sid::user9FrameWidth, "user9FrameWidth", 0.1 }, + { Sid::user9FrameRound, "user9FrameRound", 0 }, + { Sid::user9FrameFgColor, "user9FrameFgColor", QColor(0, 0, 0, 255) }, + { Sid::user9FrameBgColor, "user9FrameBgColor", QColor(255, 255, 255, 0) }, + + { Sid::user10Name, "user10Name", "" }, + { Sid::user10FontFace, "user10FontFace", "FreeSerif" }, + { Sid::user10FontSize, "user10FontSize", 10.0 }, + { Sid::user10FontSpatiumDependent, "user10FontSpatiumDependent", true }, + { Sid::user10FontStyle, "user10FontStyle", int(FontStyle::Normal) }, + { Sid::user10Color, "user10Color", QColor(0, 0, 0, 255) }, + { Sid::user10Align, "user10Align", QVariant::fromValue(Align::LEFT | Align::TOP) }, + { Sid::user10Offset, "user10Offset", QPointF() }, + { Sid::user10OffsetType, "user10OffsetType", int(OffsetType::SPATIUM) }, + { Sid::user10FrameType, "user10FrameType", int(FrameType::NO_FRAME) }, + { Sid::user10FramePadding, "user10FramePadding", 0.2 }, + { Sid::user10FrameWidth, "user10FrameWidth", 0.1 }, + { Sid::user10FrameRound, "user10FrameRound", 0 }, + { Sid::user10FrameFgColor, "user10FrameFgColor", QColor(0, 0, 0, 255) }, + { Sid::user10FrameBgColor, "user10FrameBgColor", QColor(255, 255, 255, 0) }, + + { Sid::user11Name, "user11Name", "" }, + { Sid::user11FontFace, "user11FontFace", "FreeSerif" }, + { Sid::user11FontSize, "user11FontSize", 10.0 }, + { Sid::user11FontSpatiumDependent, "user11FontSpatiumDependent", true }, + { Sid::user11FontStyle, "user11FontStyle", int(FontStyle::Normal) }, + { Sid::user11Color, "user11Color", QColor(0, 0, 0, 255) }, + { Sid::user11Align, "user11Align", QVariant::fromValue(Align::LEFT | Align::TOP) }, + { Sid::user11Offset, "user11Offset", QPointF() }, + { Sid::user11OffsetType, "user11OffsetType", int(OffsetType::SPATIUM) }, + { Sid::user11FrameType, "user11FrameType", int(FrameType::NO_FRAME) }, + { Sid::user11FramePadding, "user11FramePadding", 0.2 }, + { Sid::user11FrameWidth, "user11FrameWidth", 0.1 }, + { Sid::user11FrameRound, "user11FrameRound", 0 }, + { Sid::user11FrameFgColor, "user11FrameFgColor", QColor(0, 0, 0, 255) }, + { Sid::user11FrameBgColor, "user11FrameBgColor", QColor(255, 255, 255, 0) }, + + { Sid::user12Name, "user12Name", "" }, + { Sid::user12FontFace, "user12FontFace", "FreeSerif" }, + { Sid::user12FontSize, "user12FontSize", 10.0 }, + { Sid::user12FontSpatiumDependent, "user12FontSpatiumDependent", true }, + { Sid::user12FontStyle, "user12FontStyle", int(FontStyle::Normal) }, + { Sid::user12Color, "user12Color", QColor(0, 0, 0, 255) }, + { Sid::user12Align, "user12Align", QVariant::fromValue(Align::LEFT | Align::TOP) }, + { Sid::user12Offset, "user12Offset", QPointF() }, + { Sid::user12OffsetType, "user12OffsetType", int(OffsetType::SPATIUM) }, + { Sid::user12FrameType, "user12FrameType", int(FrameType::NO_FRAME) }, + { Sid::user12FramePadding, "user12FramePadding", 0.2 }, + { Sid::user12FrameWidth, "user12FrameWidth", 0.1 }, + { Sid::user12FrameRound, "user12FrameRound", 0 }, + { Sid::user12FrameFgColor, "user12FrameFgColor", QColor(0, 0, 0, 255) }, + { Sid::user12FrameBgColor, "user12FrameBgColor", QColor(255, 255, 255, 0) }, + { Sid::letRingFontFace, "letRingFontFace", "FreeSerif" }, { Sid::letRingFontSize, "letRingFontSize", 10.0 }, { Sid::letRingFontSpatiumDependent, "letRingFontSpatiumDependent", true }, @@ -2020,6 +2116,102 @@ const TextStyle user6TextStyle {{ { Sid::user6FrameBgColor, Pid::FRAME_BG_COLOR }, }}; +const TextStyle user7TextStyle {{ + { Sid::user7FontFace, Pid::FONT_FACE }, + { Sid::user7FontSize, Pid::FONT_SIZE }, + { Sid::user7FontSpatiumDependent, Pid::SIZE_SPATIUM_DEPENDENT }, + { Sid::user7FontStyle, Pid::FONT_STYLE }, + { Sid::user7Color, Pid::COLOR }, + { Sid::user7Align, Pid::ALIGN }, + { Sid::user7Offset, Pid::OFFSET }, + { Sid::user7FrameType, Pid::FRAME_TYPE }, + { Sid::user7FramePadding, Pid::FRAME_PADDING }, + { Sid::user7FrameWidth, Pid::FRAME_WIDTH }, + { Sid::user7FrameRound, Pid::FRAME_ROUND }, + { Sid::user7FrameFgColor, Pid::FRAME_FG_COLOR }, + { Sid::user7FrameBgColor, Pid::FRAME_BG_COLOR }, + }}; + +const TextStyle user8TextStyle {{ + { Sid::user8FontFace, Pid::FONT_FACE }, + { Sid::user8FontSize, Pid::FONT_SIZE }, + { Sid::user8FontSpatiumDependent, Pid::SIZE_SPATIUM_DEPENDENT }, + { Sid::user8FontStyle, Pid::FONT_STYLE }, + { Sid::user8Color, Pid::COLOR }, + { Sid::user8Align, Pid::ALIGN }, + { Sid::user8Offset, Pid::OFFSET }, + { Sid::user8FrameType, Pid::FRAME_TYPE }, + { Sid::user8FramePadding, Pid::FRAME_PADDING }, + { Sid::user8FrameWidth, Pid::FRAME_WIDTH }, + { Sid::user8FrameRound, Pid::FRAME_ROUND }, + { Sid::user8FrameFgColor, Pid::FRAME_FG_COLOR }, + { Sid::user8FrameBgColor, Pid::FRAME_BG_COLOR }, + }}; + +const TextStyle user9TextStyle {{ + { Sid::user9FontFace, Pid::FONT_FACE }, + { Sid::user9FontSize, Pid::FONT_SIZE }, + { Sid::user9FontSpatiumDependent, Pid::SIZE_SPATIUM_DEPENDENT }, + { Sid::user9FontStyle, Pid::FONT_STYLE }, + { Sid::user9Color, Pid::COLOR }, + { Sid::user9Align, Pid::ALIGN }, + { Sid::user9Offset, Pid::OFFSET }, + { Sid::user9FrameType, Pid::FRAME_TYPE }, + { Sid::user9FramePadding, Pid::FRAME_PADDING }, + { Sid::user9FrameWidth, Pid::FRAME_WIDTH }, + { Sid::user9FrameRound, Pid::FRAME_ROUND }, + { Sid::user9FrameFgColor, Pid::FRAME_FG_COLOR }, + { Sid::user9FrameBgColor, Pid::FRAME_BG_COLOR }, + }}; + +const TextStyle user10TextStyle {{ + { Sid::user10FontFace, Pid::FONT_FACE }, + { Sid::user10FontSize, Pid::FONT_SIZE }, + { Sid::user10FontSpatiumDependent, Pid::SIZE_SPATIUM_DEPENDENT }, + { Sid::user10FontStyle, Pid::FONT_STYLE }, + { Sid::user10Color, Pid::COLOR }, + { Sid::user10Align, Pid::ALIGN }, + { Sid::user10Offset, Pid::OFFSET }, + { Sid::user10FrameType, Pid::FRAME_TYPE }, + { Sid::user10FramePadding, Pid::FRAME_PADDING }, + { Sid::user10FrameWidth, Pid::FRAME_WIDTH }, + { Sid::user10FrameRound, Pid::FRAME_ROUND }, + { Sid::user10FrameFgColor, Pid::FRAME_FG_COLOR }, + { Sid::user10FrameBgColor, Pid::FRAME_BG_COLOR }, + }}; + +const TextStyle user11TextStyle {{ + { Sid::user11FontFace, Pid::FONT_FACE }, + { Sid::user11FontSize, Pid::FONT_SIZE }, + { Sid::user11FontSpatiumDependent, Pid::SIZE_SPATIUM_DEPENDENT }, + { Sid::user11FontStyle, Pid::FONT_STYLE }, + { Sid::user11Color, Pid::COLOR }, + { Sid::user11Align, Pid::ALIGN }, + { Sid::user11Offset, Pid::OFFSET }, + { Sid::user11FrameType, Pid::FRAME_TYPE }, + { Sid::user11FramePadding, Pid::FRAME_PADDING }, + { Sid::user11FrameWidth, Pid::FRAME_WIDTH }, + { Sid::user11FrameRound, Pid::FRAME_ROUND }, + { Sid::user11FrameFgColor, Pid::FRAME_FG_COLOR }, + { Sid::user11FrameBgColor, Pid::FRAME_BG_COLOR }, + }}; + +const TextStyle user12TextStyle {{ + { Sid::user12FontFace, Pid::FONT_FACE }, + { Sid::user12FontSize, Pid::FONT_SIZE }, + { Sid::user12FontSpatiumDependent, Pid::SIZE_SPATIUM_DEPENDENT }, + { Sid::user12FontStyle, Pid::FONT_STYLE }, + { Sid::user12Color, Pid::COLOR }, + { Sid::user12Align, Pid::ALIGN }, + { Sid::user12Offset, Pid::OFFSET }, + { Sid::user12FrameType, Pid::FRAME_TYPE }, + { Sid::user12FramePadding, Pid::FRAME_PADDING }, + { Sid::user12FrameWidth, Pid::FRAME_WIDTH }, + { Sid::user12FrameRound, Pid::FRAME_ROUND }, + { Sid::user12FrameFgColor, Pid::FRAME_FG_COLOR }, + { Sid::user12FrameBgColor, Pid::FRAME_BG_COLOR }, + }}; + //--------------------------------------------------------- // TextStyleName //--------------------------------------------------------- @@ -2089,8 +2281,13 @@ static constexpr std::array textStyles { { { QT_TRANSLATE_NOOP("TextStyle", "User-3"), &user3TextStyle, Tid::USER3 }, { QT_TRANSLATE_NOOP("TextStyle", "User-4"), &user4TextStyle, Tid::USER4 }, { QT_TRANSLATE_NOOP("TextStyle", "User-5"), &user5TextStyle, Tid::USER5 }, - { QT_TRANSLATE_NOOP("TextStyle", "User-6"), &user6TextStyle, Tid::USER6 }, + { QT_TRANSLATE_NOOP("TextStyle", "User-7"), &user7TextStyle, Tid::USER7 }, + { QT_TRANSLATE_NOOP("TextStyle", "User-8"), &user8TextStyle, Tid::USER8 }, + { QT_TRANSLATE_NOOP("TextStyle", "User-9"), &user9TextStyle, Tid::USER9 }, + { QT_TRANSLATE_NOOP("TextStyle", "User-10"), &user10TextStyle, Tid::USER10}, + { QT_TRANSLATE_NOOP("TextStyle", "User-11"), &user11TextStyle, Tid::USER11}, + { QT_TRANSLATE_NOOP("TextStyle", "User-12"), &user12TextStyle, Tid::USER12}, } }; //--------------------------------------------------------- @@ -2185,7 +2382,13 @@ static const std::vector _primaryTextStyles = { Tid::USER3, Tid::USER4, Tid::USER5, - Tid::USER6 + Tid::USER6, + Tid::USER7, + Tid::USER8, + Tid::USER9, + Tid::USER10, + Tid::USER11, + Tid::USER12, }; //--------------------------------------------------------- diff --git a/libmscore/style.h b/libmscore/style.h index 64fba137b1f9..6fa1d4f97a16 100644 --- a/libmscore/style.h +++ b/libmscore/style.h @@ -1118,6 +1118,102 @@ enum class Sid { user6FrameFgColor, user6FrameBgColor, + user7Name, + user7FontFace, + user7FontSize, + user7FontSpatiumDependent, + user7FontStyle, + user7Color, + user7Align, + user7Offset, + user7OffsetType, + user7FrameType, + user7FramePadding, + user7FrameWidth, + user7FrameRound, + user7FrameFgColor, + user7FrameBgColor, + + user8Name, + user8FontFace, + user8FontSize, + user8FontSpatiumDependent, + user8FontStyle, + user8Color, + user8Align, + user8Offset, + user8OffsetType, + user8FrameType, + user8FramePadding, + user8FrameWidth, + user8FrameRound, + user8FrameFgColor, + user8FrameBgColor, + + user9Name, + user9FontFace, + user9FontSize, + user9FontSpatiumDependent, + user9FontStyle, + user9Color, + user9Align, + user9Offset, + user9OffsetType, + user9FrameType, + user9FramePadding, + user9FrameWidth, + user9FrameRound, + user9FrameFgColor, + user9FrameBgColor, + + user10Name, + user10FontFace, + user10FontSize, + user10FontSpatiumDependent, + user10FontStyle, + user10Color, + user10Align, + user10Offset, + user10OffsetType, + user10FrameType, + user10FramePadding, + user10FrameWidth, + user10FrameRound, + user10FrameFgColor, + user10FrameBgColor, + + user11Name, + user11FontFace, + user11FontSize, + user11FontSpatiumDependent, + user11FontStyle, + user11Color, + user11Align, + user11Offset, + user11OffsetType, + user11FrameType, + user11FramePadding, + user11FrameWidth, + user11FrameRound, + user11FrameFgColor, + user11FrameBgColor, + + user12Name, + user12FontFace, + user12FontSize, + user12FontSpatiumDependent, + user12FontStyle, + user12Color, + user12Align, + user12Offset, + user12OffsetType, + user12FrameType, + user12FramePadding, + user12FrameWidth, + user12FrameRound, + user12FrameFgColor, + user12FrameBgColor, + letRingFontFace, letRingFontSize, letRingFontSpatiumDependent, diff --git a/libmscore/types.h b/libmscore/types.h index 7c32bdc008bf..86923435a83d 100644 --- a/libmscore/types.h +++ b/libmscore/types.h @@ -420,6 +420,12 @@ enum class Tid { USER4, USER5, USER6, + USER7, + USER8, + USER9, + USER10, + USER11, + USER12, // special, no-contents, styles used while importing older scores TEXT_STYLES, // used for user-defined styles IGNORED_STYLES // used for styles no longer relevant (mainly Figured bass text style) diff --git a/libmscore/xmlreader.cpp b/libmscore/xmlreader.cpp index 02c6eeed9623..1f167122d362 100644 --- a/libmscore/xmlreader.cpp +++ b/libmscore/xmlreader.cpp @@ -520,6 +520,18 @@ Tid XmlReader::addUserTextStyle(const QString& name) id = Tid::USER5; else if (userTextStyles.size() == 5) id = Tid::USER6; + else if (userTextStyles.size() == 6) + id = Tid::USER7; + else if (userTextStyles.size() == 7) + id = Tid::USER8; + else if (userTextStyles.size() == 8) + id = Tid::USER9; + else if (userTextStyles.size() == 9) + id = Tid::USER10; + else if (userTextStyles.size() == 10) + id = Tid::USER11; + else if (userTextStyles.size() == 11) + id = Tid::USER12; else qDebug("too many user defined textstyles"); if (id != Tid::TEXT_STYLES) diff --git a/mscore/inspector/inspectorFingering.cpp b/mscore/inspector/inspectorFingering.cpp index a7d557ed8395..fe09f3528b29 100644 --- a/mscore/inspector/inspectorFingering.cpp +++ b/mscore/inspector/inspectorFingering.cpp @@ -42,7 +42,13 @@ const std::vector& InspectorFingering::allowedTextStyles() Tid::USER3, Tid::USER4, Tid::USER5, - Tid::USER6 + Tid::USER6, + Tid::USER7, + Tid::USER8, + Tid::USER9, + Tid::USER10, + Tid::USER11, + Tid::USER12, }; return _fingeringTextStyles;