Пример #1
0
void Bracket::layout()
      {
      path = QPainterPath();
      if (h2 == 0.0)
            return;

      if (bracketType() == BRACKET_BRACE) {
            qreal w = point(score()->styleS(ST_akkoladeWidth));

#define XM(a) (a+700)*w/700
#define YM(a) (a+7100)*h2/7100

            path.moveTo( XM(   -8), YM(-2048));
            path.cubicTo(XM(   -8), YM(-3192), XM(-360), YM(-4304), XM( -360), YM(-5400)); // c 0
            path.cubicTo(XM( -360), YM(-5952), XM(-264), YM(-6488), XM(   32), YM(-6968)); // c 1
            path.cubicTo(XM(   40), YM(-6976), XM(  40), YM(-6976), XM(   40), YM(-6984)); // c 0
            path.cubicTo(XM(   40), YM(-7000), XM(  16), YM(-7024), XM(    0), YM(-7024)); // c 0
            path.cubicTo(XM(   -8), YM(-7024), XM( -24), YM(-7024), XM(  -32), YM(-7008)); // c 1
            path.cubicTo(XM( -416), YM(-6392), XM(-544), YM(-5680), XM( -544), YM(-4960)); // c 0
            path.cubicTo(XM( -544), YM(-3800), XM(-168), YM(-2680), XM( -168), YM(-1568)); // c 0
            path.cubicTo(XM( -168), YM(-1016), XM(-264), YM( -496), XM( -560), YM(  -16)); // c 1
            path.lineTo( XM( -560), YM(    0));  //  l 1
            path.lineTo( XM( -560), YM(   16));  //  l 1
            path.cubicTo(XM( -264), YM(  496), XM(-168), YM( 1016), XM( -168), YM( 1568)); // c 0
            path.cubicTo(XM( -168), YM( 2680), XM(-544), YM( 3800), XM( -544), YM( 4960)); // c 0
            path.cubicTo(XM( -544), YM( 5680), XM(-416), YM( 6392), XM(  -32), YM( 7008)); // c 1
            path.cubicTo(XM(  -24), YM( 7024), XM(  -8), YM( 7024), XM(    0), YM( 7024)); // c 0
            path.cubicTo(XM(   16), YM( 7024), XM(  40), YM( 7000), XM(   40), YM( 6984)); // c 0
            path.cubicTo(XM(   40), YM( 6976), XM(  40), YM( 6976), XM(   32), YM( 6968)); // c 1
            path.cubicTo(XM( -264), YM( 6488), XM(-360), YM( 5952), XM( -360), YM( 5400)); // c 0
            path.cubicTo(XM( -360), YM( 4304), XM(  -8), YM( 3192), XM(   -8), YM( 2048)); // c 0
            path.cubicTo(XM( -  8), YM( 1320), XM(-136), YM(  624), XM( -512), YM(    0)); // c 1
            path.cubicTo(XM( -136), YM( -624), XM(  -8), YM(-1320), XM(   -8), YM(-2048)); // c 0
            setbbox(path.boundingRect());
            }
      else if (bracketType() == BRACKET_NORMAL) {
            qreal mags = 1.0;
            qreal _spatium = spatium();
            int idx = score()->symIdx();
            qreal w = score()->styleS(ST_bracketWidth).val() * _spatium * .5;
            qreal x = -w;
            w      += symbols[idx][brackettipsRightUp].width(mags);
            qreal bd = _spatium * .25;
            qreal y = -symbols[idx][brackettipsRightUp].height(mags) - bd;
            qreal h = (-y + h2) * 2;
            bbox().setRect(x, y, w, h);
            }
      else if (bracketType() == BRACKET_SQUARE) {
            qreal _spatium = spatium();
            qreal w = score()->styleS(ST_staffLineWidth).val() * _spatium * .5;
            qreal x = -w;
            qreal y = -w;
            qreal h = (h2 + w) * 2 ;
            w      += (.5 * spatium() + 3* w);
            bbox().setRect(x, y, w, h);
            }
      }
Пример #2
0
qreal Bracket::width() const
      {
      qreal w;
      if (bracketType() == BRACKET_BRACE)
            w = point(score()->styleS(ST_akkoladeWidth) + score()->styleS(ST_akkoladeBarDistance));
      else if (bracketType() == BRACKET_NORMAL)
            w = point(score()->styleS(ST_bracketWidth) + score()->styleS(ST_bracketDistance));
      else if (bracketType() == BRACKET_SQUARE)
            w = point(score()->styleS(ST_staffLineWidth) + Spatium(0.5));
      return w;
      }
Пример #3
0
qreal Bracket::width() const
      {
      qreal w = 0;
      if (bracketType() == BracketType::BRACE)
            w = point(score()->styleS(StyleIdx::akkoladeWidth) + score()->styleS(StyleIdx::akkoladeBarDistance));
      else if (bracketType() == BracketType::NORMAL)
            w = point(score()->styleS(StyleIdx::bracketWidth) + score()->styleS(StyleIdx::bracketDistance));
      else if (bracketType() == BracketType::SQUARE)
            w = point(score()->styleS(StyleIdx::staffLineWidth) + Spatium(0.5));
      else if (bracketType() == BracketType::LINE)
            w = point(0.67f * score()->styleS(StyleIdx::bracketWidth) + score()->styleS(StyleIdx::bracketDistance));
      return w;
      }
Пример #4
0
void Bracket::draw(QPainter* painter) const
{
    if (h2 == 0.0)
        return;
    if (bracketType() == BRACKET_BRACE) {
        painter->setPen(Qt::NoPen);
        painter->setBrush(QBrush(curColor()));
        painter->drawPath(path);
    }
    else if (bracketType() == BRACKET_NORMAL) {
        qreal h = 2 * h2;
        qreal _spatium = spatium();
        qreal w = score()->styleS(ST_bracketWidth).val() * _spatium;
        QPen pen(curColor(), w, Qt::SolidLine, Qt::FlatCap);
        painter->setPen(pen);
        qreal bd   = _spatium * .25;
        painter->drawLine(QLineF(0.0, -bd, 0.0, h + bd));
        qreal x    =  -w * .5;
        qreal y1   = -bd;
        qreal y2   = h + bd;
        drawSymbol(SymId::bracketTop, painter, QPointF(x, y1));
        drawSymbol(SymId::bracketBottom, painter, QPointF(x, y2));
    }
    else if (bracketType() == BRACKET_SQUARE) {
        qreal h = 2 * h2;
        qreal _spatium = spatium();
        qreal w = score()->styleS(ST_staffLineWidth).val() * _spatium;
        QPen pen(curColor(), w, Qt::SolidLine, Qt::SquareCap);
        painter->setPen(pen);
        painter->drawLine(QLineF(0.0, 0.0, 0.0, h));
        painter->drawLine(QLineF(0.0, 0.0, w + .5 *_spatium, 0.0));
        painter->drawLine(QLineF(0.0, h  , w + .5 *_spatium, h));
    }
    else if (bracketType() == BRACKET_LINE) {
        qreal h = 2 * h2;
        qreal _spatium = spatium();
        qreal w = 0.67 * score()->styleS(ST_bracketWidth).val() * _spatium;
        QPen pen(curColor(), w, Qt::SolidLine, Qt::FlatCap);
        painter->setPen(pen);
        qreal bd   = _spatium * .25;
        painter->drawLine(QLineF(0.0, -bd, 0.0, h + bd));
    }
}
Пример #5
0
void Bracket::draw(QPainter* painter) const
      {
      if (h2 == 0.0)
            return;
      if (bracketType() == BRACKET_BRACE) {
            painter->setPen(Qt::NoPen);
            painter->setBrush(QBrush(curColor()));
            painter->drawPath(path);
            }
      else if (bracketType() == BRACKET_NORMAL) {
            qreal h = 2 * h2;
            qreal _spatium = spatium();
            qreal w = score()->styleS(ST_bracketWidth).val() * _spatium;
            QPen pen(curColor(), w, Qt::SolidLine, Qt::FlatCap);
            painter->setPen(pen);
            qreal bd   = _spatium * .25;
            painter->drawLine(QLineF(0.0, -bd, 0.0, h + bd));
            int idx = score()->symIdx();
            qreal mags = 1.0;
            qreal x    =  -w * .5;
            qreal y1   = -bd;
            qreal y2   = h + bd;
            symbols[idx][brackettipsRightUp].draw(painter,   mags, QPointF(x, y1));
            symbols[idx][brackettipsRightDown].draw(painter, mags, QPointF(x, y2));
            }
      else if (bracketType() == BRACKET_SQUARE) {
            qreal h = 2 * h2;
            qreal _spatium = spatium();
            qreal w = score()->styleS(ST_staffLineWidth).val() * _spatium;
            QPen pen(curColor(), w, Qt::SolidLine, Qt::SquareCap);
            painter->setPen(pen);
            painter->drawLine(QLineF(0.0, 0.0, 0.0, h));
            painter->drawLine(QLineF(0.0, 0.0, w + .5 *_spatium, 0.0));
            painter->drawLine(QLineF(0.0, h  , w + .5 *_spatium, h));
            }
      }
Пример #6
0
void Bracket::write(Xml& xml) const
      {
      switch(bracketType()) {
            case BRACKET_BRACE:
                  xml.stag("Bracket type=\"Brace\"");
                  break;
            case BRACKET_NORMAL:
                  xml.stag("Bracket");
                  break;
            case BRACKET_SQUARE:
                  xml.stag("Bracket type=\"Square\"");
                  break;
            case NO_BRACKET:
                  break;
            }
      if (_column)
            xml.tag("level", _column);
      Element::writeProperties(xml);
      xml.etag();
      }
Пример #7
0
void Bracket::layout()
      {
      path = QPainterPath();
      if (h2 == 0.0)
            return;

      if (bracketType() == BracketType::BRACE) {
            qreal w = point(score()->styleS(StyleIdx::akkoladeWidth));

#define XM(a) (a+700)*w/700
#define YM(a) (a+7100)*h2/7100

            path.moveTo( XM(   -8), YM(-2048));
            path.cubicTo(XM(   -8), YM(-3192), XM(-360), YM(-4304), XM( -360), YM(-5400)); // c 0
            path.cubicTo(XM( -360), YM(-5952), XM(-264), YM(-6488), XM(   32), YM(-6968)); // c 1
            path.cubicTo(XM(   36), YM(-6974), XM(  38), YM(-6984), XM(   38), YM(-6990)); // c 0
            path.cubicTo(XM(   38), YM(-7008), XM(  16), YM(-7024), XM(    0), YM(-7024)); // c 0
            path.cubicTo(XM(   -8), YM(-7024), XM( -22), YM(-7022), XM(  -32), YM(-7008)); // c 1
            path.cubicTo(XM( -416), YM(-6392), XM(-544), YM(-5680), XM( -544), YM(-4960)); // c 0
            path.cubicTo(XM( -544), YM(-3800), XM(-168), YM(-2680), XM( -168), YM(-1568)); // c 0
            path.cubicTo(XM( -168), YM(-1016), XM(-264), YM( -496), XM( -560), YM(  -16)); // c 1
            path.lineTo( XM( -560), YM(    0));  //  l 1
            path.lineTo( XM( -560), YM(   16));  //  l 1
            path.cubicTo(XM( -264), YM(  496), XM(-168), YM( 1016), XM( -168), YM( 1568)); // c 0
            path.cubicTo(XM( -168), YM( 2680), XM(-544), YM( 3800), XM( -544), YM( 4960)); // c 0
            path.cubicTo(XM( -544), YM( 5680), XM(-416), YM( 6392), XM(  -32), YM( 7008)); // c 1
            path.cubicTo(XM(  -22), YM( 7022), XM(  -8), YM( 7024), XM(    0), YM( 7024)); // c 0
            path.cubicTo(XM(   16), YM( 7024), XM(  38), YM( 7008), XM(   38), YM( 6990)); // c 0
            path.cubicTo(XM(   38), YM( 6984), XM(  36), YM( 6974), XM(   32), YM( 6968)); // c 1
            path.cubicTo(XM( -264), YM( 6488), XM(-360), YM( 5952), XM( -360), YM( 5400)); // c 0
            path.cubicTo(XM( -360), YM( 4304), XM(  -8), YM( 3192), XM(   -8), YM( 2048)); // c 0
            path.cubicTo(XM( -  8), YM( 1320), XM(-136), YM(  624), XM( -512), YM(    0)); // c 1
            path.cubicTo(XM( -136), YM( -624), XM(  -8), YM(-1320), XM(   -8), YM(-2048)); // c 0
            setbbox(path.boundingRect());
            }
      else if (bracketType() == BracketType::NORMAL) {
            qreal _spatium = spatium();
            qreal w = score()->styleS(StyleIdx::bracketWidth).val() * _spatium * .5;
            qreal x = -w;
            w      += symWidth(SymId::bracketTop);
            qreal bd = _spatium * .25;
            qreal y = - symHeight(SymId::bracketTop) - bd;
            qreal h = (-y + h2) * 2;
            bbox().setRect(x, y, w, h);
            }
      else if (bracketType() == BracketType::SQUARE) {
            qreal _spatium = spatium();
            qreal w = score()->styleS(StyleIdx::staffLineWidth).val() * _spatium * .5;
            qreal x = -w;
            qreal y = -w;
            qreal h = (h2 + w) * 2 ;
            w      += (.5 * spatium() + 3* w);
            bbox().setRect(x, y, w, h);
            }
      else if (bracketType() == BracketType::LINE) {
            qreal _spatium = spatium();
            qreal w = 0.67 * score()->styleS(StyleIdx::bracketWidth).val() * _spatium * .5;
            qreal x = -w;
            qreal bd = _spatium * .25;
            qreal y = -bd;
            qreal h = (-y + h2) * 2;
            bbox().setRect(x, y, w, h);
            }
      }