void TextLineBaseSegment::draw(QPainter* painter) const { TextLineBase* tl = textLineBase(); qreal _spatium = spatium(); // color for line (text color comes from the text properties) QColor color; if (selected() && !(score() && score()->printing())) color = (track() > -1) ? MScore::selectColor[voice()] : MScore::selectColor[0]; else if (!tl->visible() || !tl->lineVisible()) color = Qt::gray; else color = tl->lineColor(); if (!_text->empty()) { painter->translate(_text->pos()); _text->setVisible(tl->visible()); _text->draw(painter); painter->translate(-_text->pos()); } if (!_endText->empty()) { painter->translate(_endText->pos()); _endText->setVisible(tl->visible()); _endText->draw(painter); painter->translate(-_endText->pos()); } if (npoints == 0) return; qreal textlineLineWidth = tl->lineWidth().val() * _spatium; QPen pen(color, textlineLineWidth, tl->lineStyle()); if (tl->lineStyle() == Qt::CustomDashLine) { QVector<qreal> dashes { tl->dashLineLen(), tl->dashGapLen() }; pen.setDashPattern(dashes); } painter->setPen(pen); if (twoLines) { // hairpins painter->drawLines(&points[0], 1); painter->drawLines(&points[2], 1); } else { for (int i = 0; i < npoints; ++i) painter->drawLines(&points[i], 1); } }