From f1383e00cec1c9a65c750b5b0a4040648c2f4f31 Mon Sep 17 00:00:00 2001 From: James Mizen Date: Wed, 12 Jun 2024 13:27:11 +0200 Subject: [PATCH] Fix GH#19669: Enable 2nd adjustment for cross staff beamed notes Backport of #19831 --- libmscore/layout.cpp | 16 +- vtest/cross-8-ref.png | Bin 0 -> 40773 bytes vtest/cross-8.mscx | 734 ++++++++++++++++++++++++++++++++++++++++++ vtest/gen | 2 +- vtest/gen.bat | 2 +- 5 files changed, 740 insertions(+), 14 deletions(-) create mode 100644 vtest/cross-8-ref.png create mode 100644 vtest/cross-8.mscx diff --git a/libmscore/layout.cpp b/libmscore/layout.cpp index d26fd3016c84a..df58d4c9df41c 100644 --- a/libmscore/layout.cpp +++ b/libmscore/layout.cpp @@ -151,7 +151,6 @@ void Score::layoutChords1(Segment* segment, int staffIdx) return; } - bool crossBeamFound = false; std::vector upStemNotes; std::vector downStemNotes; int upVoices = 0; @@ -176,8 +175,6 @@ void Score::layoutChords1(Segment* segment, int staffIdx) Element* e = segment->element(track); if (e && e->isChord()) { Chord* chord = toChord(e); - if (chord->beam() && chord->beam()->cross()) - crossBeamFound = true; bool hasGraceBefore = false; for (Chord* c : qAsConst(chord->graceNotes())) { if (c->isGraceBefore()) @@ -190,7 +187,7 @@ void Score::layoutChords1(Segment* segment, int staffIdx) upStemNotes.insert(upStemNotes.end(), chord->notes().begin(), chord->notes().end()); upDots = qMax(upDots, chord->dots()); maxUpMag = qMax(maxUpMag, chord->mag()); - if (!upHooks) + if (!upHooks && !chord->beam()) upHooks = chord->hook(); if (hasGraceBefore) upGrace = true; @@ -200,7 +197,7 @@ void Score::layoutChords1(Segment* segment, int staffIdx) downStemNotes.insert(downStemNotes.end(), chord->notes().begin(), chord->notes().end()); downDots = qMax(downDots, chord->dots()); maxDownMag = qMax(maxDownMag, chord->mag()); - if (!downHooks) + if (!downHooks && !chord->beam()) downHooks = chord->hook(); if (hasGraceBefore) downGrace = true; @@ -308,13 +305,8 @@ void Score::layoutChords1(Segment* segment, int staffIdx) if (upVoices && downVoices) { Note* bottomUpNote = upStemNotes.front(); Note* topDownNote = downStemNotes.back(); - int separation; - // TODO: handle conflicts for cross-staff notes and notes on cross-staff beams - // for now we simply treat these as though there is no conflict - if (bottomUpNote->chord()->staffMove() == topDownNote->chord()->staffMove() && !crossBeamFound) - separation = topDownNote->line() - bottomUpNote->line(); - else - separation = 2; // no conflict + int separation = topDownNote->line() - bottomUpNote->line(); + QVector overlapNotes; overlapNotes.reserve(8); diff --git a/vtest/cross-8-ref.png b/vtest/cross-8-ref.png new file mode 100644 index 0000000000000000000000000000000000000000..260e70059a183894da18e68342032c705da34314 GIT binary patch literal 40773 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

P3;xc3xe0DEsO9}Buy&*C}| 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 W_~DkdvNE}H%6kqdrtdm->AwKP*Qa#= literal 0 HcmV?d00001 diff --git a/vtest/cross-8.mscx b/vtest/cross-8.mscx new file mode 100644 index 0000000000000..689d31fcf725e --- /dev/null +++ b/vtest/cross-8.mscx @@ -0,0 +1,734 @@ + + + 3.6.3 + + + + 0 + 480 + + 1 + 1 + 1 + 0 + + + Composer / arranger + + 2023-10-25 + + + + 3.02 + Apple Macintosh + + + + Subtitle + + + Untitled score + + Orchestral + + Tasteninstrumente + +

+ flutes + oboes + clarinets + saxophones + bassoons + +
+
+ horns + trumpets + cornets + flugelhorns + trombones + baritone-horns + euphoniums + 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 + + + Piano + + Piano + Pno. + Piano + 21 + 108 + 21 + 108 + keyboard.piano + F + + + Fluid + + + + + + + + 4 + 4 + + + + + + + + + + + + quarter + + 69 + 17 + + + + quarter + + 69 + 17 + + + + eighth + + + 67 + 15 + + + + quarter + + 67 + 15 + + + + quarter + + 67 + 15 + + + + + + + + 1 + quarter + + 65 + 13 + + + + eighth + + + quarter + + 65 + 13 + + + + eighth + + + eighth + + + + + + line + + + + quarter + + 65 + 13 + + + + quarter + + 65 + 13 + + + + quarter + + 60 + 14 + + + + eighth + + 53 + 13 + + + + eighth + + 77 + 13 + + + + + + + + 1 + eighth + + 53 + 13 + + + + eighth + + 65 + 13 + + + + 1 + eighth + + + accidentalSharp + + 54 + 20 + + + + eighth + + 65 + 13 + + + + 1 + eighth + + + 55 + 15 + + + + 1 + eighth + + 55 + 15 + + + + eighth + + 65 + 13 + + + + 1 + eighth + + 55 + 15 + + + + eighth + + 65 + 13 + + + + + + + + 1 + 1 + eighth + + 55 + 15 + + + + 16th + + 65 + 13 + + + + 1 + eighth + + 55 + 15 + + + + eighth + + 65 + 13 + + + + quarter + + + 1 + eighth + + 53 + 13 + + + + eighth + + 65 + 13 + + + + + + + + 1 + eighth + + 53 + 13 + + + + eighth + + 65 + 13 + + + + quarter + + + 1 + eighth + + 48 + 14 + + + + eighth + + 65 + 13 + + + + 1 + eighth + + 53 + 13 + + + + eighth + + 65 + 13 + + + + + + + + + + F + F + + + 4 + 4 + + + + + + + + + + + + -1 + eighth + + 69 + 17 + + + + eighth + + 53 + 13 + + + + -1 + eighth + + + accidentalSharp + + 70 + 24 + + + + eighth + + 53 + 13 + + + + -1 + eighth + + 67 + 15 + + + + eighth + + 53 + 13 + + + + -1 + eighth + + 65 + 13 + + + + eighth + + 53 + 13 + + + + + + + + -1 + eighth + + 64 + 18 + + + + eighth + + 53 + 13 + + + + quarter + + + 1 + -1 + eighth + + 64 + 18 + + + + 16th + + 53 + 13 + + + + quarter + + + + + + + + + -1 + eighth + + 67 + 15 + + + + eighth + + 55 + 15 + + + + 1 + -1 + eighth + + 67 + 15 + + + + 16th + + 55 + 15 + + + + -1 + eighth + + 67 + 15 + + + + eighth + + 55 + 15 + + + + -1 + eighth + + 65 + 13 + + + + eighth + + 41 + 13 + + + + + + + + quarter + + 53 + 13 + + + + quarter + + 53 + 13 + + + + quarter + + 55 + 15 + + + + quarter + + 53 + 13 + + + + + + + + quarter + + 53 + 13 + + + + 1 + quarter + + 53 + 13 + + + + eighth + + + quarter + + 55 + 15 + + + + + + + + 1 + quarter + + 55 + 15 + + + + eighth + + + quarter + + 55 + 15 + + + + eighth + + 65 + 13 + + + + eighth + + 41 + 13 + + + + + + + diff --git a/vtest/gen b/vtest/gen index a7831db045d45..2e144bbc60fc8 100755 --- a/vtest/gen +++ b/vtest/gen @@ -53,7 +53,7 @@ else chord-layout-1 chord-layout-2 chord-layout-3 chord-layout-4 chord-layout-5\ chord-layout-6 chord-layout-7 chord-layout-8 chord-layout-9 chord-layout-10\ chord-layout-11 chord-layout-12 chord-layout-13 chord-layout-14 chord-layout-15 chord-layout-16 chord-layout-17 chord-small\ - cross-1 cross-2 cross-3 cross-4 cross-9 narrow-spacing-2 cross-staff-accents\ + cross-1 cross-2 cross-3 cross-4 cross-8 cross-9 narrow-spacing-2 cross-staff-accents\ accidental-1 accidental-2 accidental-3 accidental-4 accidental-5\ accidental-6 accidental-7 accidental-8 accidental-9 accidental-10\ accidental-11 accidental-12 accidental-13 accidental-14 accidental-15\ diff --git a/vtest/gen.bat b/vtest/gen.bat index 26f92dd691dbb..0a650e34ab079 100644 --- a/vtest/gen.bat +++ b/vtest/gen.bat @@ -29,7 +29,7 @@ set SRC=bravura-mmrest,gonville-mmrest, ^ chord-layout-1,chord-layout-2,chord-layout-3,chord-layout-4,chord-layout-5, ^ chord-layout-6,chord-layout-7,chord-layout-8,chord-layout-9,chord-layout-10, ^ chord-layout-11,chord-layout-12,chord-layout-13,chord-layout-14,chord-layout-15,chord-layout-16,chord-layout-17,chord-small, ^ - cross-1,cross-2,cross-3,cross-4,cross-9,narrow-spacing-2,cross-staff-accents, ^ + cross-1,cross-2,cross-3,cross-4,cross-8,cross-9,narrow-spacing-2,cross-staff-accents, ^ accidental-1,accidental-2,accidental-3,accidental-4,accidental-5, ^ accidental-6,accidental-7,accidental-8,accidental-9,accidental-10, ^ accidental-11,accidental-12,accidental-13,accidental-14,accidental-15, ^