From 7feba98e51e9e7d54c252b5679168a45b3627eeb Mon Sep 17 00:00:00 2001 From: iveshenry18 Date: Thu, 24 Jun 2021 19:54:38 -0600 Subject: [PATCH] ENG-54: Check spanners when assessing emptiness Previously, a staff's emptiness was calculated based on its note and annotation content. Since this is evaluated before the system was laid out, the system did not have pointers to its SpannerSegments. This commit adds a way to include whether a staff has any spanners (particularly pedal markings and hanging slurs) in assessing emptiness, creating more consistent/expected hiding behavior in HideMode::AUTO. Duplicate of #8430, part 2 --- libmscore/layout.cpp | 10 + .../libmscore/layout/testStaffEmptiness.mscx | 1538 +++++++++++++++++ 2 files changed, 1548 insertions(+) create mode 100644 mtest/libmscore/layout/testStaffEmptiness.mscx diff --git a/libmscore/layout.cpp b/libmscore/layout.cpp index e6bf30c96b485..3fd502a0fc498 100644 --- a/libmscore/layout.cpp +++ b/libmscore/layout.cpp @@ -1328,6 +1328,10 @@ void Score::hideEmptyStaves(System* system, bool isFirstSystem) int staffIdx = 0; bool systemIsEmpty = true; + Fraction stick = system->measures().front()->tick(); + Fraction etick = system->measures().back()->endTick(); + auto spanners = score()->spannerMap().findOverlapping(stick.ticks(), etick.ticks()); + for (Staff* staff : qAsConst(_staves)) { SysStaff* ss = system->staff(staffIdx); @@ -1339,6 +1343,12 @@ void Score::hideEmptyStaves(System* system, bool isFirstSystem) && !(isFirstSystem && styleB(Sid::dontHideStavesInFirstSystem)) && hideMode != Staff::HideMode::NEVER)) { bool hideStaff = true; + for (auto spanner : spanners) { + if (spanner.value->staff() == staff) { + hideStaff = false; + break; + } + } for (MeasureBase* m : system->measures()) { if (!m->isMeasure()) continue; diff --git a/mtest/libmscore/layout/testStaffEmptiness.mscx b/mtest/libmscore/layout/testStaffEmptiness.mscx new file mode 100644 index 0000000000000..1ed3d2f0c9ae6 --- /dev/null +++ b/mtest/libmscore/layout/testStaffEmptiness.mscx @@ -0,0 +1,1538 @@ + + + 3.6.2 + + + + 0 + 480 + + 1 + 1 + 1 + 0 + + Henry Ives + + 2021-06-24 + + + + Microsoft Windows + + + + + Spanner Emptiness + + Orchestral + + Keyboards + +
+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + tubas +
+
+ timpani +
+
+ keyboard-percussion + drums + unpitched-metal-percussion + unpitched-wooden-percussion + other-percussion +
+ keyboards + harps + organs + synths +
+ plucked-strings +
+ +
+ voices +
+
+ orchestral-strings +
+ +
+ + + + stdNormal + + + 1 + + + + stdNormal + + F + + Piano + + Piano + Pno. + Piano + 21 + 108 + 21 + 108 + keyboard.piano + F + + 100 + 95 + + + 100 + 33 + + + 100 + 50 + + + 100 + 67 + + + 100 + 100 + + + 120 + 67 + + + 150 + 100 + + + 150 + 50 + + + 120 + 50 + + + 120 + 100 + + + + Fluid + + + + + + 10 + + + Staff Emptiness + + + + MuseScore Testcase + + + + Henry Ives + + + + + + + 4 + 4 + + + quarter + + 76 + 18 + + + + quarter + + + half + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + quarter + + 62 + 16 + + + + quarter + + + half + + + + + + + + measure + 4/4 + + + + + + + line + + + + quarter + + 65 + 13 + + + + quarter + + + half + + + + + + + + Hanging Slur + + + quarter + + 65 + 13 + + + + quarter + + + half + + + + + + + + measure + 4/4 + + + + + + + + quarter + + 65 + 13 + + + + quarter + + + quarter + + 69 + 17 + + + + quarter + + + + + + + + measure + 4/4 + + + + + + + + quarter + + 64 + 18 + + + + quarter + + + quarter + + 76 + 18 + + + + quarter + + 79 + 15 + + + + + + + + + quarter + + 79 + 15 + + + + quarter + + + half + + + + + + + line + + + + quarter + + 67 + 15 + + + + quarter + + + half + + + + + + + + quarter + + 64 + 18 + + + 72 + 14 + + + + quarter + + + quarter + + 71 + 19 + + + 79 + 15 + + + + quarter + + + + + + + + quarter + + 79 + 15 + + + + quarter + + + quarter + + 69 + 17 + + + + quarter + + + + + + + + quarter + + 67 + 15 + + + 77 + 13 + + + + quarter + + + half + + + + + + + + quarter + + 74 + 16 + + + + quarter + + 60 + 14 + + + + quarter + + 69 + 17 + + + + quarter + + + + + + + line + + + + quarter + + 62 + 16 + + + + quarter + + + quarter + + 65 + 13 + + + 72 + 14 + + + + quarter + + + + + + + + quarter + + 72 + 14 + + + + quarter + + + half + + + + + + + + quarter + + 72 + 14 + + + + quarter + + + quarter + + 71 + 19 + + + + quarter + + + + + + + + quarter + + 64 + 18 + + + + quarter + + + half + + + + + + + + Pedal Line + + + quarter + + 64 + 18 + + + 72 + 14 + + + + quarter + + 64 + 18 + + + + quarter + + 72 + 14 + + + + quarter + + + + + + + line + + + + quarter + + 67 + 15 + + + + quarter + + + quarter + + 72 + 14 + + + + quarter + + + + + + + + quarter + + 81 + 17 + + + 86 + 16 + + + + quarter + + 76 + 18 + + + + quarter + + 69 + 17 + + + + quarter + + 77 + 13 + + + + + + + + + quarter + + 62 + 16 + + + 69 + 17 + + + + quarter + + + quarter + + 65 + 13 + + + 69 + 17 + + + + quarter + + + + + + + + quarter + + 64 + 18 + + + + quarter + + 69 + 17 + + + + half + + + + + + + + quarter + + 72 + 14 + + + + quarter + + + quarter + + 72 + 14 + + + 74 + 16 + + + + quarter + + + + + + + + quarter + + 79 + 15 + + + + quarter + + + quarter + + 74 + 16 + + + + quarter + + + + + + + line + + + + measure + 4/4 + + + + + + + + Ottava Line + + + quarter + + 67 + 15 + + + + quarter + + + half + + + + + + + + measure + 4/4 + + + + + + + + quarter + + 69 + 17 + + + + quarter + + + quarter + + 71 + 19 + + + + quarter + + + + + + + + measure + 4/4 + + + + + + + + quarter + + 69 + 17 + + + + quarter + + + half + + + + + + + line + + + + quarter + + 69 + 17 + + + + quarter + + + quarter + + 67 + 15 + + + + quarter + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + + + 4 + 4 + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + quarter + + 47 + 19 + + + + quarter + + + quarter + + 52 + 18 + + + + quarter + + + + + + 1 + -3/4 + + + + + 47 + 19 + + + + + + + + + quarter + + + + -1 + 3/4 + + + + + + quarter + + + half + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + + 1 + 1 + + + + 1 + + + + + measure + 4/4 + + + + + + + + + + -1 + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + + 8vb + + + + 8 + + + + + quarter + + 43 + 15 + + + + quarter + + + half + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + measure + 4/4 + + + + + + + + quarter + + 47 + 19 + + + + quarter + + + quarter + + 52 + 18 + + + 53 + 13 + + + + quarter + + 57 + 17 + + + + + + + + + + + -8 + + + + + quarter + + 52 + 18 + + + 57 + 17 + + + + quarter + + 48 + 14 + + + + quarter + + 52 + 18 + + + 55 + 15 + + + + quarter + + + + + + + + quarter + + 52 + 18 + + + + quarter + + 52 + 18 + + + 53 + 13 + + + + quarter + + 52 + 18 + + + + quarter + + + + + + + + quarter + + 52 + 18 + + + + quarter + + 55 + 15 + + + + quarter + + 52 + 18 + + + + quarter + + 52 + 18 + + + + + +
+