From 2696f893f764da31603bc45989d5a9bdbb73cdd6 Mon Sep 17 00:00:00 2001 From: Michele Spagnolo Date: Fri, 4 Aug 2023 11:56:47 +0200 Subject: [PATCH 1/2] Fix #18818 Slur misshaped when flipped --- src/engraving/libmscore/slur.cpp | 56 +++++++++++++++++--------------- src/engraving/libmscore/tie.cpp | 2 +- 2 files changed, 31 insertions(+), 27 deletions(-) diff --git a/src/engraving/libmscore/slur.cpp b/src/engraving/libmscore/slur.cpp index 64845f8fe7af..e4433af94e29 100644 --- a/src/engraving/libmscore/slur.cpp +++ b/src/engraving/libmscore/slur.cpp @@ -329,6 +329,7 @@ Shape SlurSegment::getSegmentShape(Segment* seg, ChordRest* startCR, ChordRest* staff_idx_t startStaffIdx = startCR->staffIdx(); staff_idx_t endStaffIdx = endCR->staffIdx(); Shape segShape = seg->staffShape(startStaffIdx).translated(seg->pos() + seg->measure()->pos()); + // If cross-staff, also add the shape of second staff if (slur()->isCrossStaff() && seg != startCR->segment()) { endStaffIdx = (endCR->staffIdx() != startStaffIdx) ? endCR->staffIdx() : endCR->vStaffIdx(); @@ -339,31 +340,7 @@ Shape SlurSegment::getSegmentShape(Segment* seg, ChordRest* startCR, ChordRest* secondStaffShape.translate(PointF(0.0, dist)); // translate vertically segShape.add(secondStaffShape); } - // Remove items that the slur shouldn't try to avoid - mu::remove_if(segShape, [&](ShapeElement& shapeEl) { - if (!shapeEl.toItem || !shapeEl.toItem->parentItem()) { - return true; - } - const EngravingItem* item = shapeEl.toItem; - const EngravingItem* parent = item->parentItem(); - // Its own startCR or items belonging to it, lyrics, fingering, ledger lines, articulation on endCR - if (item == startCR || parent == startCR || item->isTextBase() || item->isLedgerLine() - || (item->isArticulationFamily() && parent == endCR) || item->isBend() || item->isStretchedBend()) { - return true; - } - // Items that are on the start segment but in a different voice - if ((item->tick() == startCR->tick() && item->track() != startCR->track()) - || (item->tick() == endCR->tick() && item->track() != endCR->track())) { - return true; - } - // Edge-case: multiple voices and slur is on the inside - if (item->vStaffIdx() == startCR->staffIdx() - && ((!slur()->up() && item->track() > startCR->track()) // slur-down: ignore lower voices - || (slur()->up() && item->track() < startCR->track()))) { // slur-up: ignore higher voices - return true; - } - return false; - }); + for (track_idx_t track = staff2track(startStaffIdx); track < staff2track(endStaffIdx, VOICES); ++track) { EngravingItem* e = seg->elementAt(track); if (!e || !e->isChordRest()) { @@ -389,6 +366,33 @@ Shape SlurSegment::getSegmentShape(Segment* seg, ChordRest* startCR, ChordRest* } } } + + // Remove items that the slur shouldn't try to avoid + mu::remove_if(segShape, [&](ShapeElement& shapeEl) { + if (!shapeEl.toItem || !shapeEl.toItem->parentItem()) { + return true; + } + const EngravingItem* item = shapeEl.toItem; + const EngravingItem* parent = item->parentItem(); + // Its own startCR or items belonging to it, lyrics, fingering, ledger lines, articulation on endCR + if (item == startCR || parent == startCR || item->isTextBase() || item->isLedgerLine() + || (item->isArticulationFamily() && parent == endCR) || item->isBend() || item->isStretchedBend()) { + return true; + } + // Items that are on the start segment but in a different voice + if ((item->tick() == startCR->tick() && item->track() != startCR->track()) + || (item->tick() == endCR->tick() && item->track() != endCR->track())) { + return true; + } + // Edge-case: multiple voices and slur is on the inside + if (item->vStaffIdx() == startCR->staffIdx() + && ((!slur()->up() && item->track() > startCR->track()) // slur-down: ignore lower voices + || (slur()->up() && item->track() < startCR->track()))) { // slur-up: ignore higher voices + return true; + } + return false; + }); + return segShape; } @@ -791,7 +795,7 @@ void SlurSegment::computeBezier(mu::PointF p6offset) double d1 = (minH - re.height()) * .5; re.adjust(0.0, -d1, 0.0, d1); } - m_shape.add(re); + m_shape.add(re, this); start = point; } } diff --git a/src/engraving/libmscore/tie.cpp b/src/engraving/libmscore/tie.cpp index 407c9e344a07..4018964f581e 100644 --- a/src/engraving/libmscore/tie.cpp +++ b/src/engraving/libmscore/tie.cpp @@ -353,7 +353,7 @@ void TieSegment::computeBezier(PointF shoulderOffset) tieWidthInSp = (minH - re.height()) * .5; re.adjust(0.0, -tieWidthInSp, 0.0, tieWidthInSp); } - m_shape.add(re); + m_shape.add(re, this); start = point; } } From c347d2e257cb826a34dd3478e667d93de53c5595 Mon Sep 17 00:00:00 2001 From: Michele Spagnolo Date: Fri, 4 Aug 2023 11:57:53 +0200 Subject: [PATCH 2/2] changed vtest --- vtest/scores/slurs-20.mscz | Bin 17101 -> 18247 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/vtest/scores/slurs-20.mscz b/vtest/scores/slurs-20.mscz index 57d5d73848a42f3311286c2cba784036bf751069..1f405335ad1c127a3a955c19be2bd169a0d0b7de 100644 GIT binary patch literal 18247 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 JI?NnFJOH!R4cGtx