Skip to content

Commit

Permalink
Merge pull request #4715 from MarcSabatella/284341-hairpinline-align
Browse files Browse the repository at this point in the history
fix #284341: alignment of hairpin lines is off
  • Loading branch information
anatoly-os committed Feb 25, 2019
1 parent ebc1674 commit b451ead
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
12 changes: 6 additions & 6 deletions libmscore/hairpin.cpp
Expand Up @@ -97,7 +97,7 @@ void HairpinSegment::layout()
Segment* start = hairpin()->startSegment();
if (start && start->system() == sys)
sd = toDynamic(start->findAnnotation(ElementType::DYNAMIC, _trck, _trck));
if (sd && sd->visible() && sd->autoplace()) {
if (sd && sd->visible() && sd->autoplace() && sd->placement() == hairpin()->placement()) {
const qreal sdRight = sd->bbox().right() + sd->pos().x()
+ sd->segment()->pos().x() + sd->measure()->pos().x();
const qreal dist = sdRight - pos().x() + score()->styleP(Sid::autoplaceHairpinDynamicsDistance);
Expand All @@ -114,11 +114,11 @@ void HairpinSegment::layout()
// systems may be unknown at layout stage.
ed = toDynamic(end->findAnnotation(ElementType::DYNAMIC, _trck, _trck));
}
if (ed && ed->visible() && ed->autoplace()) {
if (ed && ed->visible() && ed->autoplace() && ed->placement() == hairpin()->placement()) {
const qreal edLeft = ed->bbox().left() + ed->pos().x()
+ ed->segment()->pos().x() + ed->measure()->pos().x();
const qreal dist = edLeft - pos2().x() - pos().x() - score()->styleP(Sid::autoplaceHairpinDynamicsDistance);
if (dist < 0.0 || dist >= 3.0 * spatium())
if (dist < 0.0 || dist >= 3.0 * _spatium)
rxpos2() += dist;
// prepare to align vertically
if (hairpin()->placeBelow())
Expand Down Expand Up @@ -148,8 +148,8 @@ void HairpinSegment::layout()
x1 = _text->width() + _spatium * .5;

QTransform t;
qreal h1 = hairpin()->hairpinHeight().val() * spatium() * .5;
qreal h2 = hairpin()->hairpinContHeight().val() * spatium() * .5;
qreal h1 = hairpin()->hairpinHeight().val() * _spatium * .5;
qreal h2 = hairpin()->hairpinContHeight().val() * _spatium * .5;

qreal len;
qreal x = pos2().x();
Expand Down Expand Up @@ -240,7 +240,7 @@ void HairpinSegment::layout()
qreal minDistance = spatium() * .7;
qreal ymax = pos().y();
qreal d;
qreal ddiff = spatium() * 0.5;
qreal ddiff = hairpin()->isLineType() ? 0.0 : _spatium * 0.5;

SkylineLine sl(!hairpin()->placeAbove());
sl.add(shape().translated(pos()));
Expand Down
2 changes: 1 addition & 1 deletion libmscore/style.cpp
Expand Up @@ -210,7 +210,7 @@ static const StyleType styleTypes[] {
{ Sid::hairpinPosAbove, "hairpinPosAbove", QPointF(0.0, -3.5) },
{ Sid::hairpinPosBelow, "hairpinPosBelow", QPointF(.0, 3.5) },
{ Sid::hairpinLinePosAbove, "hairpinLinePosAbove", QPointF(0.0, -3.0) },
{ Sid::hairpinLinePosBelow, "hairpinLinePosBelow", QPointF(.0, 3.0) },
{ Sid::hairpinLinePosBelow, "hairpinLinePosBelow", QPointF(.0, 4.0) },
{ Sid::hairpinHeight, "hairpinHeight", Spatium(1.2) },
{ Sid::hairpinContHeight, "hairpinContHeight", Spatium(0.5) },
{ Sid::hairpinLineWidth, "hairpinWidth", Spatium(0.13) },
Expand Down

0 comments on commit b451ead

Please sign in to comment.