From 62580c5f61a20b06498b30c3650ece2c811331d0 Mon Sep 17 00:00:00 2001 From: James Date: Thu, 28 Sep 2023 13:07:00 +0100 Subject: [PATCH 1/2] Correct fermata placement over rests --- src/engraving/dom/rest.cpp | 5 +++++ src/engraving/dom/rest.h | 1 + src/engraving/rendering/dev/tlayout.cpp | 4 ++++ vtest/scores/fermata-4.mscz | Bin 0 -> 20482 bytes 4 files changed, 10 insertions(+) create mode 100644 vtest/scores/fermata-4.mscz diff --git a/src/engraving/dom/rest.cpp b/src/engraving/dom/rest.cpp index 857590782dac..fcfacdbdd9a2 100644 --- a/src/engraving/dom/rest.cpp +++ b/src/engraving/dom/rest.cpp @@ -697,6 +697,11 @@ double Rest::rightEdge() const return x() + width(); } +double Rest::centerX() const +{ + return score()->engravingFont()->width(layoutData()->sym(), mag()) / 2; +} + //--------------------------------------------------------- // accent //--------------------------------------------------------- diff --git a/src/engraving/dom/rest.h b/src/engraving/dom/rest.h index 06461ef41af9..39fb968349e8 100644 --- a/src/engraving/dom/rest.h +++ b/src/engraving/dom/rest.h @@ -115,6 +115,7 @@ class Rest : public ChordRest double stemPosX() const override; mu::PointF stemPosBeam() const override; double rightEdge() const override; + double centerX() const; void localSpatiumChanged(double oldValue, double newValue) override; PropertyValue propertyDefault(Pid) const override; diff --git a/src/engraving/rendering/dev/tlayout.cpp b/src/engraving/rendering/dev/tlayout.cpp index 2ca30f83c199..76b3e1ccb91a 100644 --- a/src/engraving/rendering/dev/tlayout.cpp +++ b/src/engraving/rendering/dev/tlayout.cpp @@ -1933,6 +1933,10 @@ void TLayout::layout(const Fermata* item, Fermata::LayoutData* ldata, const Layo const Chord* chord = toChord(e); x = chord->x() + chord->centerX(); y = chord->y(); + } else if (e->isRest()) { + const Rest* rest = toRest(e); + x = rest->pos().x() + rest->centerX(); + y = rest->y(); } else { x = e->x() - e->shape().left() + e->width() * item->staff()->staffMag(Fraction(0, 1)) * .5; y = e->y(); diff --git a/vtest/scores/fermata-4.mscz b/vtest/scores/fermata-4.mscz new file mode 100644 index 0000000000000000000000000000000000000000..e20c2fa1d08628df8c21557d10a58f087938638d GIT binary patch literal 20482 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

=bc)kic{?Jdhud#lGMR<(6vJ#yIe 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 literal 0 HcmV?d00001 From 34be935bc9497654ffeac4e45058f9151e8723d3 Mon Sep 17 00:00:00 2001 From: James Date: Thu, 28 Sep 2023 16:04:15 +0100 Subject: [PATCH 2/2] Fix fermata placement on ledger-line rests --- src/engraving/dom/rest.cpp | 4 +++- src/engraving/rendering/dev/tlayout.cpp | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/engraving/dom/rest.cpp b/src/engraving/dom/rest.cpp index fcfacdbdd9a2..dfced9f76422 100644 --- a/src/engraving/dom/rest.cpp +++ b/src/engraving/dom/rest.cpp @@ -699,7 +699,9 @@ double Rest::rightEdge() const double Rest::centerX() const { - return score()->engravingFont()->width(layoutData()->sym(), mag()) / 2; + SymId sym = layoutData()->sym(); + RectF bbox = symBbox(sym); + return bbox.left() + bbox.width() / 2; } //--------------------------------------------------------- diff --git a/src/engraving/rendering/dev/tlayout.cpp b/src/engraving/rendering/dev/tlayout.cpp index 76b3e1ccb91a..19d5033277f9 100644 --- a/src/engraving/rendering/dev/tlayout.cpp +++ b/src/engraving/rendering/dev/tlayout.cpp @@ -1935,7 +1935,7 @@ void TLayout::layout(const Fermata* item, Fermata::LayoutData* ldata, const Layo y = chord->y(); } else if (e->isRest()) { const Rest* rest = toRest(e); - x = rest->pos().x() + rest->centerX(); + x = rest->x() + rest->centerX(); y = rest->y(); } else { x = e->x() - e->shape().left() + e->width() * item->staff()->staffMag(Fraction(0, 1)) * .5;