From 4d01358f0a9254c245e10cbc45f3baa584ab2edb Mon Sep 17 00:00:00 2001 From: James Date: Fri, 29 Sep 2023 12:26:10 +0100 Subject: [PATCH 1/2] factor notehead offset into stem length calculations --- src/engraving/dom/chord.cpp | 2 +- vtest/scores/notehead-offset.mscz | Bin 0 -> 16838 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 vtest/scores/notehead-offset.mscz diff --git a/src/engraving/dom/chord.cpp b/src/engraving/dom/chord.cpp index 0f7d8e58d3873..c39219aad7c24 100644 --- a/src/engraving/dom/chord.cpp +++ b/src/engraving/dom/chord.cpp @@ -1420,7 +1420,7 @@ double Chord::calcDefaultStemLength() // when the chord's magnitude is < 1, the stem length with mag can find itself below the middle line. // in those cases, we have to add the extra amount to it to bring it to a minimum. double upValue = m_up ? -1. : 1.; - double stemStart = startNote->pos().y(); + double stemStart = startNote->pos().y() - startNote->offset().y(); double stemEndMag = stemStart + (finalStemLength * upValue); double topLine = 0.0; lineDistance *= _spatium; diff --git a/vtest/scores/notehead-offset.mscz b/vtest/scores/notehead-offset.mscz new file mode 100644 index 0000000000000000000000000000000000000000..e62360d424dc206736c9dcc3b4418ff4e926ccdc GIT binary patch literal 16838 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 z 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 literal 0 HcmV?d00001 From a1ff998e7a0684a87e7553e76b99bcf5059f7705 Mon Sep 17 00:00:00 2001 From: James Date: Mon, 2 Oct 2023 10:51:54 +0100 Subject: [PATCH 2/2] Prevent beamed stems extending --- src/engraving/dom/chord.cpp | 2 +- .../rendering/dev/beamtremololayout.cpp | 2 +- vtest/scores/notehead-offset.mscz | Bin 16838 -> 17427 bytes 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engraving/dom/chord.cpp b/src/engraving/dom/chord.cpp index c39219aad7c24..8171bf3cb2788 100644 --- a/src/engraving/dom/chord.cpp +++ b/src/engraving/dom/chord.cpp @@ -1420,7 +1420,7 @@ double Chord::calcDefaultStemLength() // when the chord's magnitude is < 1, the stem length with mag can find itself below the middle line. // in those cases, we have to add the extra amount to it to bring it to a minimum. double upValue = m_up ? -1. : 1.; - double stemStart = startNote->pos().y() - startNote->offset().y(); + double stemStart = startNote->ldata()->pos().y(); double stemEndMag = stemStart + (finalStemLength * upValue); double topLine = 0.0; lineDistance *= _spatium; diff --git a/src/engraving/rendering/dev/beamtremololayout.cpp b/src/engraving/rendering/dev/beamtremololayout.cpp index 5ac05c6f4bcbe..c924ea9b3fa18 100644 --- a/src/engraving/rendering/dev/beamtremololayout.cpp +++ b/src/engraving/rendering/dev/beamtremololayout.cpp @@ -1085,7 +1085,7 @@ double BeamTremoloLayout::chordBeamAnchorY(const ChordRest* cr) const return y + chord->pagePos().y(); } - return position.y() + (chord->defaultStemLength() * upValue) - beamOffset; + return position.y() - note->offset().y() + (chord->defaultStemLength() * upValue) - beamOffset; } PointF BeamTremoloLayout::chordBeamAnchor(const ChordRest* cr, ChordBeamAnchorType anchorType) const diff --git a/vtest/scores/notehead-offset.mscz b/vtest/scores/notehead-offset.mscz index e62360d424dc206736c9dcc3b4418ff4e926ccdc..e5f86dbd6809a1696489a960878e885518d9d850 100644 GIT binary patch delta 6287 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