Skip to content

Commit

Permalink
[palette] added layout for Fermata
Browse files Browse the repository at this point in the history
  • Loading branch information
igorkorsukov committed Jul 10, 2023
1 parent 0893f80 commit 5c22e2a
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 47 deletions.
50 changes: 3 additions & 47 deletions src/engraving/layout/pal/tlayout.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -680,54 +680,10 @@ void TLayout::layout(Expression*, LayoutContext&)
UNREACHABLE;
}

void TLayout::layout(Fermata* item, LayoutContext& ctx)
void TLayout::layout(Fermata*, LayoutContext&)
{
const StaffType* stType = item->staffType();

item->setSkipDraw(false);
if (stType && stType->isHiddenElementOnTab(ctx.conf().style(), Sid::fermataShowTabCommon, Sid::fermataShowTabSimple)) {
item->setSkipDraw(true);
return;
}

Segment* s = item->segment();
item->setPos(PointF());
if (!s) { // for use in palette
item->setOffset(0.0, 0.0);
RectF b(item->symBbox(item->symId()));
item->setbbox(b.translated(-0.5 * b.width(), 0.0));
return;
}

if (item->isStyled(Pid::OFFSET)) {
item->setOffset(item->propertyDefault(Pid::OFFSET).value<PointF>());
}
EngravingItem* e = s->element(item->track());
if (e) {
if (e->isChord()) {
Chord* chord = toChord(e);
Note* note = chord->up() ? chord->downNote() : chord->upNote();
double offset = chord->xpos() + note->xpos() + note->headWidth() / 2;
item->movePosX(offset);
} else {
item->movePosX(e->x() - e->shape().left() + e->width() * item->staff()->staffMag(Fraction(0, 1)) * .5);
}
}

String name = String::fromAscii(SymNames::nameForSymId(item->symId()).ascii());
if (item->placeAbove()) {
if (name.endsWith(u"Below")) {
item->setSymId(SymNames::symIdByName(name.left(name.size() - 5) + u"Above"));
}
} else {
item->movePosY(item->staff()->height());
if (name.endsWith(u"Above")) {
item->setSymId(SymNames::symIdByName(name.left(name.size() - 5) + u"Below"));
}
}
RectF b(item->symBbox(item->symId()));
item->setbbox(b.translated(-0.5 * b.width(), 0.0));
item->autoplaceSegmentElement();
//! NOTE Moved to PaletteLayout
UNREACHABLE;
}

//---------------------------------------------------------
Expand Down
11 changes: 11 additions & 0 deletions src/palette/internal/palettelayout.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
#include "engraving/libmscore/clef.h"
#include "engraving/libmscore/dynamic.h"
#include "engraving/libmscore/expression.h"
#include "engraving/libmscore/fermata.h"
#include "engraving/libmscore/fingering.h"
#include "engraving/libmscore/fret.h"
#include "engraving/libmscore/glissando.h"
Expand Down Expand Up @@ -118,6 +119,8 @@ void PaletteLayout::layoutItem(EngravingItem* item)
break;
case ElementType::EXPRESSION: layout(toExpression(item), ctx);
break;
case ElementType::FERMATA: layout(toFermata(item), ctx);
break;
case ElementType::FINGERING: layout(toFingering(item), ctx);
break;
case ElementType::FRET_DIAGRAM: layout(toFretDiagram(item), ctx);
Expand Down Expand Up @@ -604,6 +607,14 @@ void PaletteLayout::layout(Expression* item, const Context& ctx)
layoutTextBase(item, ctx);
}

void PaletteLayout::layout(Fermata* item, const Context&)
{
item->setPos(PointF());
item->setOffset(PointF());
RectF b(item->symBbox(item->symId()));
item->setbbox(b.translated(-0.5 * b.width(), 0.0));
}

void PaletteLayout::layout(Fingering* item, const Context& ctx)
{
layoutTextBase(item, ctx);
Expand Down
2 changes: 2 additions & 0 deletions src/palette/internal/palettelayout.h
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ class Dynamic;

class Expression;

class Fermata;
class Fingering;
class FretDiagram;

Expand Down Expand Up @@ -149,6 +150,7 @@ class PaletteLayout

static void layout(engraving::Expression* item, const Context& ctx);

static void layout(engraving::Fermata* item, const Context& ctx);
static void layout(engraving::Fingering* item, const Context& ctx);
static void layout(engraving::FretDiagram* item, const Context& ctx);

Expand Down

0 comments on commit 5c22e2a

Please sign in to comment.