From bfae9cb2f19182967c61238d34b515e5ee278408 Mon Sep 17 00:00:00 2001 From: Joachim Schmitz Date: Wed, 17 Jul 2024 15:03:44 +0200 Subject: [PATCH 1/2] Improve Mu1 import here esp. the vertical and horizontal frames and their margins, by moving stuff from read206.cpp's readBox() to read114.cpp's readBox() , plus some cleanup and removing apparenbtly unneded stuff. --- src/engraving/rw/read114/read114.cpp | 20 +++++++++++++++----- src/engraving/rw/read206/read206.cpp | 23 +---------------------- 2 files changed, 16 insertions(+), 27 deletions(-) diff --git a/src/engraving/rw/read114/read114.cpp b/src/engraving/rw/read114/read114.cpp index e4d2302d83b5a..2556c728bc9d5 100644 --- a/src/engraving/rw/read114/read114.cpp +++ b/src/engraving/rw/read114/read114.cpp @@ -2232,13 +2232,11 @@ static bool readBoxProperties(XmlReader& e, ReadContext& ctx, Box* b) static void readBox(XmlReader& e, ReadContext& ctx, Box* b) { - b->setLeftMargin(0.0); - b->setRightMargin(0.0); - b->setTopMargin(0.0); - b->setBottomMargin(0.0); + b->setAutoSizeEnabled(false); // didn't exist in Mu1 + b->setBoxHeight(Spatium(0)); // override default set in constructor b->setBoxWidth(Spatium(0)); - b->setAutoSizeEnabled(false); + bool keepMargins = false; // whether original margins have to be kept when reading old file System* bSystem = b->system() ? b->system() : ctx.dummy()->system(); while (e.readNextStartElement()) { @@ -2247,14 +2245,26 @@ static void readBox(XmlReader& e, ReadContext& ctx, Box* b) HBox* hb = Factory::createHBox(bSystem); readBox(e, ctx, hb); b->add(hb); + keepMargins = true; // in old file, box nesting used outer box margins } else if (tag == "VBox") { VBox* vb = Factory::createVBox(bSystem); readBox(e, ctx, vb); b->add(vb); + keepMargins = true; // in old file, box nesting used outer box margins } else if (!readBoxProperties(e, ctx, b)) { e.unknown(); } } + + // with .msc versions prior to 1.17, box margins were only used when nesting another box inside this box: + // for backward compatibility set them to 0.0 in all other cases, the Mu1 defaults of 5.0 just look horrible in Mu3 and Mu4 + + if (ctx.mscVersion() <= 114 && (b->isHBox() || b->isVBox()) && !keepMargins) { + b->setLeftMargin(0.0); + b->setRightMargin(0.0); + b->setTopMargin(0.0); // 2.0 would look closest to Mu1 and Mu2, but 0.0 is the default since Mu2 + b->setBottomMargin(0.0); // 1.0 would look closest to Mu1 and Mu2, but 0.0 is the default since Mu2 + } } //--------------------------------------------------------- diff --git a/src/engraving/rw/read206/read206.cpp b/src/engraving/rw/read206/read206.cpp index 109833c2e5300..868a692bec8e5 100644 --- a/src/engraving/rw/read206/read206.cpp +++ b/src/engraving/rw/read206/read206.cpp @@ -3022,19 +3022,10 @@ static void readMeasure206(Measure* m, int staffIdx, XmlReader& e, ReadContext& static void readBox(Box* b, XmlReader& e, ReadContext& ctx) { - b->setLeftMargin(0.0); - b->setRightMargin(0.0); - b->setTopMargin(0.0); - b->setBottomMargin(0.0); - b->setTopGap(Millimetre(0.0)); - b->setBottomGap(Millimetre(0.0)); - b->setAutoSizeEnabled(false); - b->setPropertyFlags(Pid::TOP_GAP, PropertyFlags::UNSTYLED); - b->setPropertyFlags(Pid::BOTTOM_GAP, PropertyFlags::UNSTYLED); + b->setAutoSizeEnabled(false); // didn't exist in Mu2 b->setBoxHeight(Spatium(0)); // override default set in constructor b->setBoxWidth(Spatium(0)); - bool keepMargins = false; // whether original margins have to be kept when reading old file while (e.readNextStartElement()) { const AsciiStringView tag(e.name()); @@ -3042,12 +3033,10 @@ static void readBox(Box* b, XmlReader& e, ReadContext& ctx) HBox* hb = Factory::createHBox(b->score()->dummy()->system()); read400::TRead::read(hb, e, ctx); b->add(hb); - keepMargins = true; // in old file, box nesting used outer box margins } else if (tag == "VBox") { VBox* vb = Factory::createVBox(b->score()->dummy()->system()); read400::TRead::read(vb, e, ctx); b->add(vb); - keepMargins = true; // in old file, box nesting used outer box margins } else if (tag == "Text") { Text* t; if (b->isTBox()) { @@ -3066,16 +3055,6 @@ static void readBox(Box* b, XmlReader& e, ReadContext& ctx) e.unknown(); } } - - // with .msc versions prior to 1.17, box margins were only used when nesting another box inside this box: - // for backward compatibility set them to 0 in all other cases - - if (ctx.mscVersion() <= 114 && (b->isHBox() || b->isVBox()) && !keepMargins) { - b->setLeftMargin(0.0); - b->setRightMargin(0.0); - b->setTopMargin(0.0); - b->setBottomMargin(0.0); - } } //--------------------------------------------------------- From 2996148efa4c5f401d93c89ea2f817e84e9b62d8 Mon Sep 17 00:00:00 2001 From: Joachim Schmitz Date: Fri, 19 Jul 2024 21:44:03 +0200 Subject: [PATCH 2/2] Fix (read: adjust) unit tests and a vtest they actually proove my pain point Fix vtest by saving the score with 3.6.2 --- .../tests/compat114_data/clefs-ref.mscx | 4 - .../tests/compat114_data/fingering-ref.mscx | 4 - .../tests/compat114_data/hairpin-ref.mscx | 4 - .../hor_frame_and_mmrest-ref.mscx | 4 - .../tests/compat114_data/keysig-ref.mscx | 4 - .../tests/compat114_data/notes-ref.mscx | 4 - .../tests/compat114_data/textstyles-ref.mscx | 4 - .../tests/compat114_data/title-ref.mscx | 4 - .../tests/compat114_data/tuplets-ref.mscx | 4 - .../tests/compat114_data/tuplets_1-ref.mscx | 4 - .../tests/compat114_data/tuplets_2-ref.mscx | 4 - .../tests/compat206_data/frame_text2-ref.mscx | 2 - vtest/scores/mmrest-6.mscx | 215 +++++++++--------- 13 files changed, 105 insertions(+), 156 deletions(-) diff --git a/src/engraving/tests/compat114_data/clefs-ref.mscx b/src/engraving/tests/compat114_data/clefs-ref.mscx index 2069dc9e4e344..d5467e964a5b3 100644 --- a/src/engraving/tests/compat114_data/clefs-ref.mscx +++ b/src/engraving/tests/compat114_data/clefs-ref.mscx @@ -65,10 +65,6 @@ 10 - 5 - 5 - 5 - 5 0 diff --git a/src/engraving/tests/compat114_data/fingering-ref.mscx b/src/engraving/tests/compat114_data/fingering-ref.mscx index 814881c725beb..819bfb9ee8ba0 100644 --- a/src/engraving/tests/compat114_data/fingering-ref.mscx +++ b/src/engraving/tests/compat114_data/fingering-ref.mscx @@ -73,10 +73,6 @@ 10 - 5 - 5 - 5 - 5 0 diff --git a/src/engraving/tests/compat114_data/hairpin-ref.mscx b/src/engraving/tests/compat114_data/hairpin-ref.mscx index e6c1192b249bf..523ea998f7830 100644 --- a/src/engraving/tests/compat114_data/hairpin-ref.mscx +++ b/src/engraving/tests/compat114_data/hairpin-ref.mscx @@ -69,10 +69,6 @@ 10 - 5 - 5 - 5 - 5 0 diff --git a/src/engraving/tests/compat114_data/hor_frame_and_mmrest-ref.mscx b/src/engraving/tests/compat114_data/hor_frame_and_mmrest-ref.mscx index 99786d8b24dae..32dab19ba5495 100644 --- a/src/engraving/tests/compat114_data/hor_frame_and_mmrest-ref.mscx +++ b/src/engraving/tests/compat114_data/hor_frame_and_mmrest-ref.mscx @@ -65,10 +65,6 @@ 5 - 5 - 5 - 5 - 5 0 diff --git a/src/engraving/tests/compat114_data/keysig-ref.mscx b/src/engraving/tests/compat114_data/keysig-ref.mscx index 4a4c59fe9758e..7a0e796cb8443 100644 --- a/src/engraving/tests/compat114_data/keysig-ref.mscx +++ b/src/engraving/tests/compat114_data/keysig-ref.mscx @@ -64,10 +64,6 @@ 10 - 5 - 5 - 5 - 5 0 diff --git a/src/engraving/tests/compat114_data/notes-ref.mscx b/src/engraving/tests/compat114_data/notes-ref.mscx index b7a2da01d594a..615e6c53bc797 100644 --- a/src/engraving/tests/compat114_data/notes-ref.mscx +++ b/src/engraving/tests/compat114_data/notes-ref.mscx @@ -64,10 +64,6 @@ 10 - 5 - 5 - 5 - 5 0 diff --git a/src/engraving/tests/compat114_data/textstyles-ref.mscx b/src/engraving/tests/compat114_data/textstyles-ref.mscx index 0939e25d5f9ca..72d143e18852d 100644 --- a/src/engraving/tests/compat114_data/textstyles-ref.mscx +++ b/src/engraving/tests/compat114_data/textstyles-ref.mscx @@ -69,10 +69,6 @@ 6.36254 - 5 - 5 - 5 - 5 0 diff --git a/src/engraving/tests/compat114_data/title-ref.mscx b/src/engraving/tests/compat114_data/title-ref.mscx index 06d141e9cacee..80f700dd8a26d 100644 --- a/src/engraving/tests/compat114_data/title-ref.mscx +++ b/src/engraving/tests/compat114_data/title-ref.mscx @@ -69,10 +69,6 @@ 10 - 5 - 5 - 5 - 5 0 diff --git a/src/engraving/tests/compat114_data/tuplets-ref.mscx b/src/engraving/tests/compat114_data/tuplets-ref.mscx index 517b0c6bf1f1e..99012df9e67c6 100644 --- a/src/engraving/tests/compat114_data/tuplets-ref.mscx +++ b/src/engraving/tests/compat114_data/tuplets-ref.mscx @@ -62,10 +62,6 @@ 10 - 5 - 5 - 5 - 5 0 diff --git a/src/engraving/tests/compat114_data/tuplets_1-ref.mscx b/src/engraving/tests/compat114_data/tuplets_1-ref.mscx index 041cafaf2f667..cc24fb386fff5 100644 --- a/src/engraving/tests/compat114_data/tuplets_1-ref.mscx +++ b/src/engraving/tests/compat114_data/tuplets_1-ref.mscx @@ -62,10 +62,6 @@ 10 - 5 - 5 - 5 - 5 0 diff --git a/src/engraving/tests/compat114_data/tuplets_2-ref.mscx b/src/engraving/tests/compat114_data/tuplets_2-ref.mscx index 2283445f1ff7d..9dc676e8e7423 100644 --- a/src/engraving/tests/compat114_data/tuplets_2-ref.mscx +++ b/src/engraving/tests/compat114_data/tuplets_2-ref.mscx @@ -62,10 +62,6 @@ 10 - 5 - 5 - 5 - 5 0 diff --git a/src/engraving/tests/compat206_data/frame_text2-ref.mscx b/src/engraving/tests/compat206_data/frame_text2-ref.mscx index 1896fd4cd609f..113f26d71a235 100644 --- a/src/engraving/tests/compat206_data/frame_text2-ref.mscx +++ b/src/engraving/tests/compat206_data/frame_text2-ref.mscx @@ -189,7 +189,6 @@ 25.5926 - 0 3 0 @@ -205,7 +204,6 @@ 47.762 10 - 0 0 diff --git a/vtest/scores/mmrest-6.mscx b/vtest/scores/mmrest-6.mscx index fabfe4a09b44f..7e9ad155833e5 100644 --- a/vtest/scores/mmrest-6.mscx +++ b/vtest/scores/mmrest-6.mscx @@ -1,27 +1,26 @@ - - 2.1.0 - 3543170 + + 3.6.2 + 3224f34 0 - - 480 1 @@ -36,24 +35,16 @@ X11 + - - - - - - - - stdNormal - Piano @@ -66,6 +57,7 @@ p, li { white-space: pre-wrap; } 108 21 108 + keyboard.piano 100 70 @@ -91,102 +83,105 @@ p, li { white-space: pre-wrap; } 7.1335 + 0 - + vbox - - - G - G - - - 4 - 4 - 1 - - - measure - - + + + + 4 + 4 + + + measure + 4/4 + + - + 4 - - 4 - 4 - 1 - - - measure - - - - F - F - - - normal - 1 - + + + 4 + 4 + + + measure + 16/4 + + + F + F + + + + - 1920 - - - measure - - + + + + measure + 4/4 + + - - - measure - - + + + + measure + 4/4 + + - - - measure - - - - F - F - + + + + measure + 4/4 + + + F + F + + - - - quarter - - 48 - 14 - - - - quarter - - 48 - 14 - - - - quarter - - 48 - 14 - - - - quarter - - 48 - 14 - - - - end - 1 - + + + + quarter + + 48 + 14 + + + + quarter + + 48 + 14 + + + + quarter + + 48 + 14 + + + + quarter + + 48 + 14 + + + + end + +