diff --git a/src/engraving/rw/read114/read114.cpp b/src/engraving/rw/read114/read114.cpp index 0890d6d455df4..a5839c157ab79 100644 --- a/src/engraving/rw/read114/read114.cpp +++ b/src/engraving/rw/read114/read114.cpp @@ -2918,7 +2918,7 @@ muse::Ret Read114::readScoreFile(Score* score, XmlReader& e, ReadInOutData* out) } } else if (tag == "Excerpt") { Excerpt* ex = new Excerpt(masterScore); - read400::TRead::read(ex, e, ctx); + readExcerpt(ex, e, ctx); masterScore->m_excerpts.push_back(ex); } else if (tag == "Beam") { Beam* beam = Factory::createBeam(masterScore->dummy()->system()); @@ -3178,6 +3178,26 @@ muse::Ret Read114::readScoreFile(Score* score, XmlReader& e, ReadInOutData* out) return muse::make_ok(); } +void Read114::readExcerpt(Excerpt* item, XmlReader& e, ReadContext&) +{ + const std::vector& pl = item->masterScore()->parts(); + std::vector parts; + while (e.readNextStartElement()) { + const AsciiStringView tag = e.name(); + if (tag == "name" || tag == "title") { + item->setName(e.readText().trimmed()); + } else if (tag == "part") { + size_t partIdx = static_cast(e.readInt()); + if (partIdx >= pl.size()) { + LOGD("Excerpt::read: bad part index"); + } else { + parts.push_back(pl.at(partIdx)); + } + } + } + item->setParts(parts); +} + bool Read114::pasteStaff(XmlReader&, Segment*, staff_idx_t, Fraction) { UNREACHABLE; diff --git a/src/engraving/rw/read114/read114.h b/src/engraving/rw/read114/read114.h index c050cdc6e0c60..61405d29dc7c5 100644 --- a/src/engraving/rw/read114/read114.h +++ b/src/engraving/rw/read114/read114.h @@ -24,6 +24,10 @@ #include "../ireader.h" +namespace mu::engraving { +class Excerpt; +} + namespace mu::engraving::read400 { class ReadContext; } @@ -47,5 +51,7 @@ class Read114 : public rw::IReader private: void doReadItem(EngravingItem* item, XmlReader& xml) override; + + void readExcerpt(Excerpt* ex, XmlReader& e, read400::ReadContext& ctx); }; } diff --git a/src/engraving/rw/read206/read206.cpp b/src/engraving/rw/read206/read206.cpp index b304591d2d187..f558b49edbea3 100644 --- a/src/engraving/rw/read206/read206.cpp +++ b/src/engraving/rw/read206/read206.cpp @@ -3480,6 +3480,7 @@ bool Read206::readScoreTag(Score* score, XmlReader& e, ReadContext& ctx) ctx.setLastMeasure(nullptr); ReadContext exCtx(s); + s->setIsOpen(true); readScoreTag(s, e, exCtx); ex->setTracksMapping(ctx.tracks()); diff --git a/src/engraving/rw/read302/read302.cpp b/src/engraving/rw/read302/read302.cpp index aef3002b83309..03781d3262ad0 100644 --- a/src/engraving/rw/read302/read302.cpp +++ b/src/engraving/rw/read302/read302.cpp @@ -156,6 +156,7 @@ bool Read302::readScoreTag(Score* score, XmlReader& e, ReadContext& ctx) Score* curScore = ctx.score(); ctx.setScore(s); + s->setIsOpen(true); readScoreTag(s, e, ctx); ctx.setScore(curScore); diff --git a/src/engraving/rw/read400/tread.cpp b/src/engraving/rw/read400/tread.cpp index efda04bf898fd..4309bd9f96785 100644 --- a/src/engraving/rw/read400/tread.cpp +++ b/src/engraving/rw/read400/tread.cpp @@ -1335,26 +1335,6 @@ void TRead::read(FiguredBassItem* i, XmlReader& e, ReadContext& ctx) } } -void TRead::read(Excerpt* item, XmlReader& e, ReadContext&) -{ - const std::vector& pl = item->masterScore()->parts(); - std::vector parts; - while (e.readNextStartElement()) { - const AsciiStringView tag = e.name(); - if (tag == "name" || tag == "title") { - item->setName(e.readText().trimmed()); - } else if (tag == "part") { - size_t partIdx = static_cast(e.readInt()); - if (partIdx >= pl.size()) { - LOGD("Excerpt::read: bad part index"); - } else { - parts.push_back(pl.at(partIdx)); - } - } - } - item->setParts(parts); -} - void TRead::read(Fermata* f, XmlReader& e, ReadContext& ctx) { while (e.readNextStartElement()) { diff --git a/src/engraving/rw/read400/tread.h b/src/engraving/rw/read400/tread.h index e5e7d62976ca9..ee09f4cb5c9a8 100644 --- a/src/engraving/rw/read400/tread.h +++ b/src/engraving/rw/read400/tread.h @@ -65,8 +65,6 @@ class ChordRest; class ChordLine; class Clef; -class Excerpt; - class FiguredBass; class FiguredBassItem; class Fingering; @@ -208,7 +206,6 @@ class TRead static void read(ChordLine* l, XmlReader& xml, ReadContext& ctx); static void read(Clef* c, XmlReader& xml, ReadContext& ctx); - static void read(Excerpt* item, XmlReader& xml, ReadContext& ctx); static void read(Expression* item, XmlReader& xml, ReadContext& ctx); static void read(Fermata* f, XmlReader& xml, ReadContext& ctx); diff --git a/src/engraving/tests/chordsymbol_data/add-part-ref.mscx b/src/engraving/tests/chordsymbol_data/add-part-ref.mscx index acb0723ab4f3a..528f73fa75303 100644 --- a/src/engraving/tests/chordsymbol_data/add-part-ref.mscx +++ b/src/engraving/tests/chordsymbol_data/add-part-ref.mscx @@ -121,6 +121,7 @@ 1 1 0 + 1 diff --git a/src/engraving/tests/chordsymbol_data/transpose-part-ref.mscx b/src/engraving/tests/chordsymbol_data/transpose-part-ref.mscx index 6f5ac0300db08..d33605e6d124f 100644 --- a/src/engraving/tests/chordsymbol_data/transpose-part-ref.mscx +++ b/src/engraving/tests/chordsymbol_data/transpose-part-ref.mscx @@ -146,6 +146,7 @@ 1 1 0 + 1 P_P diff --git a/src/engraving/tests/compat206_data/articulations-double-ref.mscx b/src/engraving/tests/compat206_data/articulations-double-ref.mscx index 9d1deb716c130..1bb76328c57cc 100644 --- a/src/engraving/tests/compat206_data/articulations-double-ref.mscx +++ b/src/engraving/tests/compat206_data/articulations-double-ref.mscx @@ -1880,6 +1880,7 @@ 1 1 0 + 1 Piano diff --git a/src/engraving/tests/compat206_data/hairpin-ref.mscx b/src/engraving/tests/compat206_data/hairpin-ref.mscx index f297db4e156c1..25b42d1dd78cb 100644 --- a/src/engraving/tests/compat206_data/hairpin-ref.mscx +++ b/src/engraving/tests/compat206_data/hairpin-ref.mscx @@ -650,6 +650,7 @@ 1 1 0 + 1 Piano diff --git a/src/engraving/tests/compat206_data/lidemptytext-ref.mscx b/src/engraving/tests/compat206_data/lidemptytext-ref.mscx index bef8309959b13..f71e32b15c6c1 100644 --- a/src/engraving/tests/compat206_data/lidemptytext-ref.mscx +++ b/src/engraving/tests/compat206_data/lidemptytext-ref.mscx @@ -263,6 +263,7 @@ 1 1 0 + 1 Bass diff --git a/src/engraving/tests/compat206_data/userstylesparts-ref.mscx b/src/engraving/tests/compat206_data/userstylesparts-ref.mscx index a2a39f94e567b..06b3331f190e4 100644 --- a/src/engraving/tests/compat206_data/userstylesparts-ref.mscx +++ b/src/engraving/tests/compat206_data/userstylesparts-ref.mscx @@ -464,6 +464,7 @@ 1 1 0 + 1 Piano @@ -701,6 +702,7 @@ 1 1 0 + 1 Flute 1 @@ -937,6 +939,7 @@ 1 1 0 + 1 Flute 2 diff --git a/src/engraving/tests/exchangevoices_data/undoChangeVoice01-ref.mscx b/src/engraving/tests/exchangevoices_data/undoChangeVoice01-ref.mscx index 0c3a8eb2d5a68..4db50c1e44ca8 100644 --- a/src/engraving/tests/exchangevoices_data/undoChangeVoice01-ref.mscx +++ b/src/engraving/tests/exchangevoices_data/undoChangeVoice01-ref.mscx @@ -581,6 +581,7 @@ 1 1 0 + 1 Piano diff --git a/src/engraving/tests/exchangevoices_data/undoChangeVoice02-ref.mscx b/src/engraving/tests/exchangevoices_data/undoChangeVoice02-ref.mscx index 2fb46636cde21..8b4c1632e2b0e 100644 --- a/src/engraving/tests/exchangevoices_data/undoChangeVoice02-ref.mscx +++ b/src/engraving/tests/exchangevoices_data/undoChangeVoice02-ref.mscx @@ -565,6 +565,7 @@ 1 1 0 + 1 Piano diff --git a/src/engraving/tests/measure_data/measure-1-ref.mscx b/src/engraving/tests/measure_data/measure-1-ref.mscx index 5a386b1e5d375..36d5ca3c5fd03 100644 --- a/src/engraving/tests/measure_data/measure-1-ref.mscx +++ b/src/engraving/tests/measure_data/measure-1-ref.mscx @@ -358,6 +358,7 @@ 1 1 0 + 1 @@ -635,6 +636,7 @@ 1 1 0 + 1 @@ -731,8 +733,8 @@ - - 4 + + 5 bB_bB diff --git a/src/engraving/tests/measure_data/measure-2-ref.mscx b/src/engraving/tests/measure_data/measure-2-ref.mscx index 8f8cf8e3cd535..351b5641b803a 100644 --- a/src/engraving/tests/measure_data/measure-2-ref.mscx +++ b/src/engraving/tests/measure_data/measure-2-ref.mscx @@ -358,6 +358,7 @@ 1 1 0 + 1 @@ -633,6 +634,7 @@ 1 1 0 + 1 @@ -743,19 +745,14 @@ 4 dB_dB - - eB_eB - 2 - 4 - 1.66667 - fB_fB + eB_eB bB_bB 𝅘𝅥 = 100 - gB_gB + fB_fB above measure 8/4 @@ -763,10 +760,10 @@ - hB_hB + gB_gB - iB_iB + hB_hB p_p measure 2/4 @@ -774,10 +771,10 @@ - jB_jB + iB_iB - kB_kB + jB_jB q_q measure 2/4 @@ -785,10 +782,10 @@ - lB_lB + kB_kB - mB_mB + lB_lB r_r measure 2/4 diff --git a/src/engraving/tests/measure_data/measure-3-ref.mscx b/src/engraving/tests/measure_data/measure-3-ref.mscx index bb9ecd3a6f656..2f2bdecd270b5 100644 --- a/src/engraving/tests/measure_data/measure-3-ref.mscx +++ b/src/engraving/tests/measure_data/measure-3-ref.mscx @@ -358,6 +358,7 @@ 1 1 0 + 1 @@ -635,6 +636,7 @@ 1 1 0 + 1 @@ -731,8 +733,8 @@ - - 4 + + 5 bB_bB diff --git a/src/engraving/tests/parts_data/partStyle-score-reload-ref.mscx b/src/engraving/tests/parts_data/partStyle-score-reload-ref.mscx index 7284b344c1132..a2c1450842889 100644 --- a/src/engraving/tests/parts_data/partStyle-score-reload-ref.mscx +++ b/src/engraving/tests/parts_data/partStyle-score-reload-ref.mscx @@ -341,6 +341,7 @@ 1 1 0 + 1 r_r @@ -552,6 +553,7 @@ 1 1 0 + 1 JB_JB diff --git a/src/engraving/tests/spanners_data/glissando-cloning04-ref.mscx b/src/engraving/tests/spanners_data/glissando-cloning04-ref.mscx index 4f9b59b77bce2..c7409c6737e3a 100644 --- a/src/engraving/tests/spanners_data/glissando-cloning04-ref.mscx +++ b/src/engraving/tests/spanners_data/glissando-cloning04-ref.mscx @@ -149,6 +149,7 @@ 1 1 0 + 1 Flute diff --git a/src/engraving/tests/tools_data/undoResequencePart01-ref.mscx b/src/engraving/tests/tools_data/undoResequencePart01-ref.mscx index 4c8df9d08d8b2..e4f2be492c0c0 100644 --- a/src/engraving/tests/tools_data/undoResequencePart01-ref.mscx +++ b/src/engraving/tests/tools_data/undoResequencePart01-ref.mscx @@ -339,6 +339,7 @@ 1 1 0 + 1 5_5 diff --git a/src/engraving/tests/tools_data/undoResequencePart02-ref.mscx b/src/engraving/tests/tools_data/undoResequencePart02-ref.mscx index c7349c47c3235..671107c42207a 100644 --- a/src/engraving/tests/tools_data/undoResequencePart02-ref.mscx +++ b/src/engraving/tests/tools_data/undoResequencePart02-ref.mscx @@ -339,6 +339,7 @@ 1 1 0 + 1 5_5