Skip to content

Commit

Permalink
[engraving] removed friend class TLayout from Hairpin
Browse files Browse the repository at this point in the history
  • Loading branch information
igorkorsukov committed Jun 13, 2023
1 parent c63be71 commit aa6031e
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 26 deletions.
46 changes: 25 additions & 21 deletions src/engraving/layout/v0/tlayout.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1513,7 +1513,7 @@ void TLayout::layout(Expression* item, LayoutContext& ctx)
}

item->setSnappedDynamic(nullptr);
if (!item->snappedDynamic()) {
if (!item->snapToDynamics()) {
item->autoplaceSegmentElement();
return;
}
Expand Down Expand Up @@ -2435,8 +2435,8 @@ void TLayout::layout(HairpinSegment* item, LayoutContext& ctx)
if (item->hairpin()->isLineType()) {
item->m_twoLines = false;
layoutTextLineBaseSegment(item, ctx);
item->m_drawCircledTip = false;
item->m_circledTipRadius = 0.0;
item->setDrawCircledTip(false);
item->setCircledTipRadius(0.0);
} else {
item->m_twoLines = true;

Expand Down Expand Up @@ -2464,25 +2464,27 @@ void TLayout::layout(HairpinSegment* item, LayoutContext& ctx)
double len = sqrt(x * x + y * y);
t.rotateRadians(asin(y / len));

item->m_drawCircledTip = item->hairpin()->hairpinCircledTip();
item->m_circledTipRadius = item->m_drawCircledTip ? 0.6 * _spatium * .5 : 0.0;
item->setDrawCircledTip(item->hairpin()->hairpinCircledTip());
item->setCircledTipRadius(item->drawCircledTip() ? 0.6 * _spatium * .5 : 0.0);

LineF l1, l2;

switch (type) {
case HairpinType::CRESC_HAIRPIN: {
switch (item->spannerSegmentType()) {
case SpannerSegmentType::SINGLE:
case SpannerSegmentType::BEGIN:
l1.setLine(x1 + item->m_circledTipRadius * 2.0, 0.0, len, h1);
l2.setLine(x1 + item->m_circledTipRadius * 2.0, 0.0, len, -h1);
item->m_circledTip.setX(x1 + item->m_circledTipRadius);
item->m_circledTip.setY(0.0);
break;
case SpannerSegmentType::BEGIN: {
l1.setLine(x1 + item->circledTipRadius() * 2.0, 0.0, len, h1);
l2.setLine(x1 + item->circledTipRadius() * 2.0, 0.0, len, -h1);
PointF circledTip;
circledTip.setX(x1 + item->circledTipRadius());
circledTip.setY(0.0);
item->setCircledTip(circledTip);
} break;

case SpannerSegmentType::MIDDLE:
case SpannerSegmentType::END:
item->m_drawCircledTip = false;
item->setDrawCircledTip(false);
l1.setLine(x1, h2, len, h1);
l2.setLine(x1, -h2, len, -h1);
break;
Expand All @@ -2492,15 +2494,17 @@ void TLayout::layout(HairpinSegment* item, LayoutContext& ctx)
case HairpinType::DECRESC_HAIRPIN: {
switch (item->spannerSegmentType()) {
case SpannerSegmentType::SINGLE:
case SpannerSegmentType::END:
l1.setLine(x1, h1, len - item->m_circledTipRadius * 2, 0.0);
l2.setLine(x1, -h1, len - item->m_circledTipRadius * 2, 0.0);
item->m_circledTip.setX(len - item->m_circledTipRadius);
item->m_circledTip.setY(0.0);
break;
case SpannerSegmentType::END: {
l1.setLine(x1, h1, len - item->circledTipRadius() * 2, 0.0);
l2.setLine(x1, -h1, len - item->circledTipRadius() * 2, 0.0);
PointF circledTip;
circledTip.setX(len - item->circledTipRadius());
circledTip.setY(0.0);
item->setCircledTip(circledTip);
} break;
case SpannerSegmentType::BEGIN:
case SpannerSegmentType::MIDDLE:
item->m_drawCircledTip = false;
item->setDrawCircledTip(false);
l1.setLine(x1, h1, len, +h2);
l2.setLine(x1, -h1, len, -h2);
break;
Expand All @@ -2514,8 +2518,8 @@ void TLayout::layout(HairpinSegment* item, LayoutContext& ctx)
// Do Coord rotation
l1 = t.map(l1);
l2 = t.map(l2);
if (item->m_drawCircledTip) {
item->m_circledTip = t.map(item->m_circledTip);
if (item->drawCircledTip()) {
item->setCircledTip(t.map(item->circledTip()));
}

item->m_points[0] = l1.p1();
Expand Down
1 change: 1 addition & 0 deletions src/engraving/libmscore/dynamic.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ class Dynamic final : public TextBase
static const std::vector<Dyn>& dynamicList() { return DYN_LIST; }

private:

M_PROPERTY(bool, avoidBarLines, setAvoidBarLines)
M_PROPERTY(double, dynamicsSize, setDynamicsSize)
M_PROPERTY(bool, centerOnNotehead, setCenterOnNotehead)
Expand Down
2 changes: 1 addition & 1 deletion src/engraving/libmscore/expression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ void Expression::undoChangeProperty(Pid id, const PropertyValue& v, PropertyFlag
TextBase::undoChangeProperty(id, v, ps);
if (m_snappedDynamic) {
if ((id == Pid::OFFSET && m_snappedDynamic->offset() != v.value<PointF>())
|| (id == Pid::PLACEMENT && m_snappedDynamic->placement() != v.value<PlacementV>())) {
|| (id == Pid::PLACEMENT && m_snappedDynamic->placement() != v.value<PlacementV>())) {
m_snappedDynamic->undoChangeProperty(id, v, ps);
}
}
Expand Down
4 changes: 2 additions & 2 deletions src/engraving/libmscore/figuredbass.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,8 @@ bool FiguredBassItem::parse(String& str)
// prefix, digit, suffix and cont.line cannot be ALL empty
// suffix cannot combine with empty digit
if ((m_prefix != Modifier::NONE && m_suffix != Modifier::NONE)
|| (m_prefix == Modifier::NONE && m_digit == FBIDigitNone && m_suffix == Modifier::NONE && m_contLine == ContLine::NONE)
|| ((m_suffix == Modifier::CROSS || m_suffix == Modifier::BACKSLASH || m_suffix == Modifier::SLASH)
|| (m_prefix == Modifier::NONE && m_digit == FBIDigitNone && m_suffix == Modifier::NONE && m_contLine == ContLine::NONE)
|| ((m_suffix == Modifier::CROSS || m_suffix == Modifier::BACKSLASH || m_suffix == Modifier::SLASH)
&& m_digit == FBIDigitNone)) {
return false;
}
Expand Down
9 changes: 7 additions & 2 deletions src/engraving/libmscore/hairpin.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,13 @@ class HairpinSegment final : public TextLineBaseSegment

Hairpin* hairpin() const { return (Hairpin*)spanner(); }

bool drawCircledTip() const { return m_drawCircledTip; }
void setDrawCircledTip(bool arg) { m_drawCircledTip = arg; }
double circledTipRadius() const { return m_circledTipRadius; }
void setCircledTipRadius(double r) { m_circledTipRadius = r; }
mu::PointF circledTip() const { return m_circledTip; }
void setCircledTip(const mu::PointF& p) { m_circledTip = p; }

EngravingItem* propertyDelegate(Pid) override;

Shape shape() const override;
Expand All @@ -67,8 +74,6 @@ class HairpinSegment final : public TextLineBaseSegment

private:

friend class layout::v0::TLayout;

void startEditDrag(EditData&) override;
void editDrag(EditData&) override;

Expand Down

0 comments on commit aa6031e

Please sign in to comment.