98 lines
2.6 KiB
C++
98 lines
2.6 KiB
C++
//=============================================================================
|
|
// MuseScore
|
|
// Music Composition & Notation
|
|
//
|
|
// Copyright (C) 2002-2011 Werner Schweer
|
|
//
|
|
// This program is free software; you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License version 2
|
|
// as published by the Free Software Foundation and appearing in
|
|
// the file LICENCE.GPL
|
|
//=============================================================================
|
|
|
|
#include "repeat.h"
|
|
#include "sym.h"
|
|
#include "score.h"
|
|
#include "system.h"
|
|
#include "measure.h"
|
|
#include "mscore.h"
|
|
#include "staff.h"
|
|
|
|
namespace Ms {
|
|
//---------------------------------------------------------
|
|
// RepeatMeasure
|
|
//---------------------------------------------------------
|
|
|
|
RepeatMeasure::RepeatMeasure(Score* score)
|
|
: Rest(score)
|
|
{
|
|
}
|
|
|
|
//---------------------------------------------------------
|
|
// draw
|
|
//---------------------------------------------------------
|
|
|
|
void RepeatMeasure::draw(QPainter* painter) const
|
|
{
|
|
painter->setBrush(QBrush(curColor()));
|
|
painter->setPen(Qt::NoPen);
|
|
painter->drawPath(path);
|
|
}
|
|
|
|
//---------------------------------------------------------
|
|
// layout
|
|
//---------------------------------------------------------
|
|
|
|
void RepeatMeasure::layout()
|
|
{
|
|
for (Element* e : el()) {
|
|
e->layout();
|
|
}
|
|
|
|
Staff* st = staff();
|
|
qreal ld = st ? st->lineDistance(tick()) : 1.0;
|
|
qreal sp = spatium();
|
|
|
|
qreal y = sp * 1.0 * ld;
|
|
qreal w = sp * 2.4 * ld;
|
|
qreal h = sp * 2.0 * ld;
|
|
qreal lw = sp * .50 * ld; // line width
|
|
qreal r = sp * .20 * ld; // dot radius
|
|
|
|
setPos(0.0, (st ? (st->height() - h) / 2.0 : y) - y);
|
|
|
|
path = QPainterPath();
|
|
|
|
path.moveTo(w - lw, y);
|
|
path.lineTo(w, y);
|
|
path.lineTo(lw, h + y);
|
|
path.lineTo(0.0, h + y);
|
|
path.closeSubpath();
|
|
path.addEllipse(QRectF(w * .25 - r, y + h * .25 - r, r * 2.0, r * 2.0));
|
|
path.addEllipse(QRectF(w * .75 - r, y + h * .75 - r, r * 2.0, r * 2.0));
|
|
|
|
setbbox(path.boundingRect());
|
|
// _space.setRw(width());
|
|
}
|
|
|
|
//---------------------------------------------------------
|
|
// ticks
|
|
//---------------------------------------------------------
|
|
|
|
Fraction RepeatMeasure::ticks() const
|
|
{
|
|
if (measure()) {
|
|
return measure()->stretchedLen(staff());
|
|
}
|
|
return Fraction(0, 1);
|
|
}
|
|
|
|
//---------------------------------------------------------
|
|
// accessibleInfo
|
|
//---------------------------------------------------------
|
|
|
|
QString RepeatMeasure::accessibleInfo() const
|
|
{
|
|
return Element::accessibleInfo();
|
|
}
|
|
}
|