MuseScore/libmscore/repeat.cpp

100 lines
2.6 KiB
C++
Raw Normal View History

2012-05-26 14:26:10 +02:00
//=============================================================================
// 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"
2012-05-26 14:26:10 +02:00
2013-05-13 18:49:17 +02:00
namespace Ms {
2012-05-26 14:26:10 +02:00
//---------------------------------------------------------
// 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()
{
2016-12-06 09:35:52 +01:00
for (Element* e : el())
e->layout();
Staff* st = staff();
qreal ld = st ? st->lineDistance(tick()) : 1.0;
2012-05-26 14:26:10 +02:00
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);
2012-05-26 14:26:10 +02:00
2014-10-16 18:51:14 +02:00
path = QPainterPath();
2012-05-26 14:26:10 +02:00
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());
2016-01-04 14:48:58 +01:00
// _space.setRw(width());
2012-05-26 14:26:10 +02:00
}
2013-02-25 11:17:08 +01:00
//---------------------------------------------------------
// ticks
2013-02-25 11:17:08 +01:00
//---------------------------------------------------------
Fraction RepeatMeasure::ticks() const
2013-02-25 11:17:08 +01:00
{
if (measure())
return measure()->stretchedLen(staff());
2013-02-25 11:17:08 +01:00
return Fraction(0, 1);
}
2013-05-13 18:49:17 +02:00
//---------------------------------------------------------
// accessibleInfo
//---------------------------------------------------------
2016-02-04 17:06:32 +01:00
QString RepeatMeasure::accessibleInfo() const
{
return Element::accessibleInfo();
}
2013-05-13 18:49:17 +02:00
}