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); } }
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; }
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; }
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)); } }
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)); } }
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(); }
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); } }