fix bounding rectangle of Bend
Bend layout was distorted by way to large bounding rectangle.
This commit is contained in:
parent
5fadc466bd
commit
d3353c4e4a
4 changed files with 13 additions and 15 deletions
|
@ -76,14 +76,13 @@ void Bend::layout()
|
||||||
qreal _spatium = spatium();
|
qreal _spatium = spatium();
|
||||||
|
|
||||||
if (staff() && !staff()->isTabStaff(tick())) {
|
if (staff() && !staff()->isTabStaff(tick())) {
|
||||||
setbbox(QRectF());
|
|
||||||
if (!parent()) {
|
if (!parent()) {
|
||||||
noteWidth = -_spatium*2;
|
noteWidth = -_spatium*2;
|
||||||
notePos = QPointF(0.0, _spatium*3);
|
notePos = QPointF(0.0, _spatium*3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal _lw = _lineWidth.val() * _spatium;
|
qreal _lw = _lineWidth;
|
||||||
Note* note = toNote(parent());
|
Note* note = toNote(parent());
|
||||||
if (note == 0) {
|
if (note == 0) {
|
||||||
noteWidth = 0.0;
|
noteWidth = 0.0;
|
||||||
|
@ -95,7 +94,7 @@ void Bend::layout()
|
||||||
}
|
}
|
||||||
QRectF bb;
|
QRectF bb;
|
||||||
|
|
||||||
QFontMetricsF fm(font(_spatium));
|
QFontMetricsF fm(font(_spatium), MScore::paintDevice());
|
||||||
|
|
||||||
int n = _points.size();
|
int n = _points.size();
|
||||||
qreal x = noteWidth;
|
qreal x = noteWidth;
|
||||||
|
@ -143,7 +142,6 @@ void Bend::layout()
|
||||||
path.moveTo(x, y);
|
path.moveTo(x, y);
|
||||||
path.cubicTo(x+dx/2, y, x2, y+dy/4, x2, y2);
|
path.cubicTo(x+dx/2, y, x2, y+dy/4, x2, y2);
|
||||||
bb |= path.boundingRect();
|
bb |= path.boundingRect();
|
||||||
|
|
||||||
bb |= arrowUp.translated(x2, y2 + _spatium * .2).boundingRect();
|
bb |= arrowUp.translated(x2, y2 + _spatium * .2).boundingRect();
|
||||||
|
|
||||||
int idx = (_points[pt+1].pitch + 12)/25;
|
int idx = (_points[pt+1].pitch + 12)/25;
|
||||||
|
@ -181,7 +179,7 @@ void Bend::layout()
|
||||||
void Bend::draw(QPainter* painter) const
|
void Bend::draw(QPainter* painter) const
|
||||||
{
|
{
|
||||||
qreal _spatium = spatium();
|
qreal _spatium = spatium();
|
||||||
qreal _lw = _lineWidth.val();
|
qreal _lw = _lineWidth;
|
||||||
|
|
||||||
QPen pen(curColor(), _lw, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
|
QPen pen(curColor(), _lw, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
|
||||||
painter->setPen(pen);
|
painter->setPen(pen);
|
||||||
|
@ -189,7 +187,7 @@ void Bend::draw(QPainter* painter) const
|
||||||
|
|
||||||
QFont f = font(_spatium * MScore::pixelRatio);
|
QFont f = font(_spatium * MScore::pixelRatio);
|
||||||
painter->setFont(f);
|
painter->setFont(f);
|
||||||
QFontMetrics fm(f);
|
QFontMetrics fm(f, MScore::paintDevice());
|
||||||
|
|
||||||
qreal x = noteWidth + _spatium * .2;
|
qreal x = noteWidth + _spatium * .2;
|
||||||
qreal y = -_spatium * .8;
|
qreal y = -_spatium * .8;
|
||||||
|
@ -356,7 +354,7 @@ bool Bend::setProperty(Pid id, const QVariant& v)
|
||||||
setPlayBend(v.toBool());
|
setPlayBend(v.toBool());
|
||||||
break;
|
break;
|
||||||
case Pid::LINE_WIDTH:
|
case Pid::LINE_WIDTH:
|
||||||
_lineWidth = v.value<Spatium>();
|
_lineWidth = v.toReal();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return Element::setProperty(id, v);
|
return Element::setProperty(id, v);
|
||||||
|
|
|
@ -28,7 +28,7 @@ class Bend final : public Element {
|
||||||
M_PROPERTY(QString, fontFace, setFontFace)
|
M_PROPERTY(QString, fontFace, setFontFace)
|
||||||
M_PROPERTY(qreal, fontSize, setFontSize)
|
M_PROPERTY(qreal, fontSize, setFontSize)
|
||||||
M_PROPERTY(FontStyle, fontStyle, setFontStyle)
|
M_PROPERTY(FontStyle, fontStyle, setFontStyle)
|
||||||
M_PROPERTY(Spatium, lineWidth, setLineWidth)
|
M_PROPERTY(qreal, lineWidth, setLineWidth)
|
||||||
|
|
||||||
bool _playBend { true };
|
bool _playBend { true };
|
||||||
QList<PitchValue> _points;
|
QList<PitchValue> _points;
|
||||||
|
|
|
@ -4487,14 +4487,14 @@ Movements::~Movements()
|
||||||
|
|
||||||
//---------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
// ScoreLoad::_loading
|
// ScoreLoad::_loading
|
||||||
// If the _loading flag is set pushes and pops to
|
// If the _loading > 0 then pushes and pops to
|
||||||
// the undo stack do not emit a warning.
|
// the undo stack do not emit a warning.
|
||||||
// Usually pushes and pops to the undo stack are only
|
// Usually pushes and pops to the undo stack are only
|
||||||
// valid inside a startCmd() - endCmd(). Exceptions
|
// valid inside a startCmd() - endCmd(). Exceptions
|
||||||
// occure during score loading.
|
// occure during score loading.
|
||||||
//---------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
|
|
||||||
bool ScoreLoad::_loading = false;
|
int ScoreLoad::_loading = 0;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1331,12 +1331,12 @@ class MasterScore : public Score {
|
||||||
//---------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
|
|
||||||
class ScoreLoad {
|
class ScoreLoad {
|
||||||
static bool _loading;
|
static int _loading;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
ScoreLoad() { _loading = true; }
|
ScoreLoad() { ++_loading; }
|
||||||
~ScoreLoad() { _loading = false; }
|
~ScoreLoad() { --_loading; }
|
||||||
static bool loading() { return _loading; }
|
static bool loading() { return _loading > 0; }
|
||||||
};
|
};
|
||||||
|
|
||||||
inline UndoStack* Score::undoStack() const { return _masterScore->undoStack(); }
|
inline UndoStack* Score::undoStack() const { return _masterScore->undoStack(); }
|
||||||
|
|
Loading…
Reference in a new issue