int main(){ Pet p; Dog jack; voice(p); voice(jack); }
void HairpinSegment::draw(QPainter* painter) const { if (hairpin()->useTextLine()) { TextLineSegment::draw(painter); return; } QColor color; if (selected() && !(score() && score()->printing())) color = (track() > -1) ? MScore::selectColor[voice()] : MScore::selectColor[0]; else if (!hairpin()->visible()) // || !hairpin()->lineVisible() color = Qt::gray; else color = hairpin()->lineColor(); QPen pen(color, point(hairpin()->lineWidth()), hairpin()->lineStyle()); if (hairpin()->lineStyle() == Qt::CustomDashLine) { QVector<qreal> pattern; pattern << 5.0 << 20.0; pen.setDashPattern(pattern); } painter->setPen(pen); painter->drawLine(l1); painter->drawLine(l2); if( drawCircledTip ) { painter->setBrush(Qt::NoBrush); painter->drawEllipse( circledTip,circledTipRadius,circledTipRadius ); } }
int main(){ initEmic(); // Initialize EMIC 2 module. voice(4); say("Wouldn't you like to be a pepper to?"); /* sayInt(321); say("four out of three people have difficulty with fractions, and some robots."); demo(0); // English demo of what EMIC ccan do. say("Now let me sing you a song!"); demo(1); // Sing Daisy. for(int i = 0; i < 9; i++) { voice(i); // Select each of the built-in voices. say("Here is one of my nine voices."); pause(500); } say("two times three is."); sayInt(6); */ return 0; }
void Drumset::save(Xml& xml) { for (int i = 0; i < 128; ++i) { if (!isValid(i)) continue; xml.stag(QString("Drum pitch=\"%1\"").arg(i)); xml.tag("head", int(noteHead(i))); xml.tag("line", line(i)); xml.tag("voice", voice(i)); xml.tag("name", name(i)); xml.tag("stem", int(stemDirection(i))); if (shortcut(i)) { switch (shortcut(i)) { case 'C': case 'D': case 'E': case 'F': case 'G': case 'A': case 'B': { char a[2]; a[0] = shortcut(i); a[1] = 0; xml.tag("shortcut", a); } break; default: qDebug("illegal drum shortcut"); break; } } xml.etag(); } }
void Cursor::draw(Painter* p) const { if (!visible()) return; int v = track() == -1 ? 0 : voice(); Color c(preferences.selectColor[v]); c.setAlpha(50); p->setBrush(c); QRectF r(abbox()); p->fillRect(r.x(), r.y(), r.width(), r.height()); }
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); } }
void HairpinSegment::draw(QPainter* painter) const { TextLineSegment::draw(painter); QColor color; if (selected() && !(score() && score()->printing())) color = (track() > -1) ? MScore::selectColor[voice()] : MScore::selectColor[0]; else if (!hairpin()->visible()) // || !hairpin()->lineVisible() color = Qt::gray; else color = hairpin()->lineColor(); QPen pen(color, point(hairpin()->lineWidth()), hairpin()->lineStyle()); painter->setPen(pen); if (drawCircledTip) { painter->setBrush(Qt::NoBrush); painter->drawEllipse( circledTip,circledTipRadius,circledTipRadius ); } }
void Text::draw(Painter* p) const { Font f = style().font(spatium()); p->drawText(f, QPointF(), _text); #if 0 QAbstractTextDocumentLayout::PaintContext c; c.cursorPosition = -1; if (cursor && !(score() && score()->printing())) { if (cursor->hasSelection()) { QAbstractTextDocumentLayout::Selection selection; selection.cursor = *cursor; selection.format.setBackground(c.palette.brush(QPalette::Active, QPalette::Highlight)); selection.format.setForeground(c.palette.brush(QPalette::Active, QPalette::HighlightedText)); c.selections.append(selection); } c.cursorPosition = cursor->position(); } Color color = p->pen().color(); c.palette.setColor(QPalette::Text, color); _doc->documentLayout()->draw(p->painter(), c); // draw frame if (hasFrame()) { Color color(frameColor()); if (!visible()) color = Qt::gray; else if (selected()) color = preferences.selectColor[track() == -1 ? 0 : voice()]; p->setPen(Pen(QBrush(color), frameWidth() * DPMM)); p->setBrush(QBrush(Qt::NoBrush)); if (circle()) p->drawArc(frame, 0, 5760); else { int r2 = frameRound() * lrint((frame.width() / frame.height())); if (r2 > 99) r2 = 99; p->drawRoundRect(frame, frameRound(), r2); } } #endif }
void Rest::layout() { int lines = staff()->lines(); switch(durationType().type()) { case Duration::V_64TH: case Duration::V_32ND: dotline = -3; break; case Duration::V_256TH: case Duration::V_128TH: dotline = -5; break; default: dotline = -1; break; } qreal _spatium = spatium(); int line = lrint(userOff().y() / _spatium); // + ((staff()->lines()-1) * 2); int lineOffset = 0; if (measure()->mstaff(staffIdx())->hasVoices) { // move rests in a multi voice context bool up = (voice() == 0) || (voice() == 2); // TODO: use style values switch(durationType().type()) { case Duration::V_LONG: lineOffset = up ? -3 : 5; break; case Duration::V_BREVE: lineOffset = up ? -3 : 5; break; case Duration::V_MEASURE: case Duration::V_WHOLE: lineOffset = up ? -4 : 6; break; case Duration::V_HALF: lineOffset = up ? -4 : 4; break; case Duration::V_QUARTER: lineOffset = up ? -4 : 4; break; case Duration::V_EIGHT: lineOffset = up ? -4 : 4; break; case Duration::V_16TH: lineOffset = up ? -6 : 4; break; case Duration::V_32ND: lineOffset = up ? -6 : 6; break; case Duration::V_64TH: lineOffset = up ? -8 : 6; break; case Duration::V_128TH: lineOffset = up ? -8 : 8; break; case Duration::V_256TH: // not available lineOffset = up ? -10 : 6; break; default: break; } } else { switch(durationType().type()) { case Duration::V_LONG: case Duration::V_BREVE: case Duration::V_MEASURE: case Duration::V_WHOLE: if (lines == 1) lineOffset = -2; break; case Duration::V_HALF: case Duration::V_QUARTER: case Duration::V_EIGHT: case Duration::V_16TH: case Duration::V_32ND: case Duration::V_64TH: case Duration::V_128TH: case Duration::V_256TH: // not available if (lines == 1) lineOffset = -4; break; default: break; } } int yo; _sym = getSymbol(durationType().type(), line + lineOffset/2, lines, &yo); setYoff(qreal(yo) + qreal(lineOffset) * .5); layoutArticulations(); setPos(0.0, yoff() * _spatium); Spatium rs; if (dots()) { rs = Spatium(score()->styleS(ST_dotNoteDistance) + dots() * score()->styleS(ST_dotDotDistance)); } Segment* s = segment(); if (s && s->measure() && s->measure()->multiMeasure()) { qreal _spatium = spatium(); qreal h = _spatium * 6.5; qreal w = point(score()->styleS(ST_minMMRestWidth)); setbbox(QRectF(-w * .5, -h + 2 * _spatium, w, h)); } else { if (dots()) { rs = Spatium(score()->styleS(ST_dotNoteDistance) + dots() * score()->styleS(ST_dotDotDistance)); } setbbox(symbols[score()->symIdx()][_sym].bbox(magS())); } _space.setLw(point(_extraLeadingSpace)); _space.setRw(width() + point(_extraTrailingSpace + rs)); // adjustReadPos(); }
void Rest::layout() { _space.setLw(0.0); if (parent() && measure() && measure()->multiMeasure()) { _space.setRw(point(score()->styleS(ST_minMMRestWidth))); return; } rxpos() = 0.0; if (staff() && staff()->isTabStaff()) { StaffTypeTablature* tab = (StaffTypeTablature*)staff()->staffType(); // if rests are shown and note values are shown as duration symbols if(tab->showRests() &&tab->genDurations()) { // symbol needed; if not exist, create, if exists, update duration if (!_tabDur) _tabDur = new TabDurationSymbol(score(), tab, durationType().type(), dots()); else _tabDur->setDuration(durationType().type(), dots(), tab); _tabDur->setParent(this); // needed? _tabDur->setTrack(track()); _tabDur->layout(); setbbox(_tabDur->bbox()); setPos(0.0, 0.0); // no rest is drawn: reset any position might be set for it _space.setLw(0.0); _space.setRw(width()); return; } // if no rests or no duration symbols, delete any dur. symbol and chain into standard staff mngmt // this is to ensure horiz space is reserved for rest, even if they are not diplayed // Rest::draw() will skip their drawing, if not needed if(_tabDur) { delete _tabDur; _tabDur = 0; } } switch(durationType().type()) { case TDuration::V_64TH: case TDuration::V_32ND: dotline = -3; break; case TDuration::V_256TH: case TDuration::V_128TH: dotline = -5; break; default: dotline = -1; break; } qreal _spatium = spatium(); int stepOffset = 0; if (staff()) stepOffset = staff()->staffType()->stepOffset(); int line = lrint(userOff().y() / _spatium); // + ((staff()->lines()-1) * 2); qreal lineDist = staff() ? staff()->staffType()->lineDistance().val() : 1.0; int lineOffset = 0; int lines = staff() ? staff()->lines() : 5; if (segment() && measure() && measure()->mstaff(staffIdx())->hasVoices) { // move rests in a multi voice context bool up = (voice() == 0) || (voice() == 2); // TODO: use style values switch(durationType().type()) { case TDuration::V_LONG: lineOffset = up ? -3 : 5; break; case TDuration::V_BREVE: lineOffset = up ? -3 : 5; break; case TDuration::V_MEASURE: if (duration() >= Fraction(2, 1)) // breve symbol lineOffset = up ? -3 : 5; // fall through case TDuration::V_WHOLE: lineOffset = up ? -4 : 6; break; case TDuration::V_HALF: lineOffset = up ? -4 : 4; break; case TDuration::V_QUARTER: lineOffset = up ? -4 : 4; break; case TDuration::V_EIGHT: lineOffset = up ? -4 : 4; break; case TDuration::V_16TH: lineOffset = up ? -6 : 4; break; case TDuration::V_32ND: lineOffset = up ? -6 : 6; break; case TDuration::V_64TH: lineOffset = up ? -8 : 6; break; case TDuration::V_128TH: lineOffset = up ? -8 : 8; break; case TDuration::V_256TH: // not available lineOffset = up ? -10 : 6; break; default: break; } } else { switch(durationType().type()) { case TDuration::V_LONG: case TDuration::V_BREVE: case TDuration::V_MEASURE: case TDuration::V_WHOLE: if (lines == 1) lineOffset = -2; break; case TDuration::V_HALF: case TDuration::V_QUARTER: case TDuration::V_EIGHT: case TDuration::V_16TH: case TDuration::V_32ND: case TDuration::V_64TH: case TDuration::V_128TH: case TDuration::V_256TH: // not available if (lines == 1) lineOffset = -4; break; default: break; } } int yo; _sym = getSymbol(durationType().type(), line + lineOffset/2, lines, &yo); layoutArticulations(); rypos() = (qreal(yo) + qreal(lineOffset + stepOffset) * .5) * lineDist * _spatium; Spatium rs; if (dots()) { rs = Spatium(score()->styleS(ST_dotNoteDistance) + dots() * score()->styleS(ST_dotDotDistance)); } if (dots()) { rs = Spatium(score()->styleS(ST_dotNoteDistance) + dots() * score()->styleS(ST_dotDotDistance)); } setbbox(symbols[score()->symIdx()][_sym].bbox(magS())); _space.setRw(width() + point(rs)); }
int Rest::computeLineOffset() { int lineOffset = 0; int lines = staff() ? staff()->lines() : 5; if (segment() && measure() && measure()->mstaff(staffIdx())->hasVoices) { // move rests in a multi voice context bool up = (voice() == 0) || (voice() == 2); // TODO: use style values switch(durationType().type()) { case TDuration::DurationType::V_LONG: lineOffset = up ? -3 : 5; break; case TDuration::DurationType::V_BREVE: lineOffset = up ? -3 : 5; break; case TDuration::DurationType::V_MEASURE: if (duration() >= Fraction(2, 1)) // breve symbol lineOffset = up ? -3 : 5; // fall through case TDuration::DurationType::V_WHOLE: lineOffset = up ? -4 : 6; break; case TDuration::DurationType::V_HALF: lineOffset = up ? -4 : 4; break; case TDuration::DurationType::V_QUARTER: lineOffset = up ? -4 : 4; break; case TDuration::DurationType::V_EIGHT: lineOffset = up ? -4 : 4; break; case TDuration::DurationType::V_16TH: lineOffset = up ? -6 : 4; break; case TDuration::DurationType::V_32ND: lineOffset = up ? -6 : 6; break; case TDuration::DurationType::V_64TH: lineOffset = up ? -8 : 6; break; case TDuration::DurationType::V_128TH: lineOffset = up ? -8 : 8; break; case TDuration::DurationType::V_1024TH: case TDuration::DurationType::V_512TH: case TDuration::DurationType::V_256TH: lineOffset = up ? -10 : 6; break; default: break; } } else { switch(durationType().type()) { case TDuration::DurationType::V_LONG: case TDuration::DurationType::V_BREVE: case TDuration::DurationType::V_MEASURE: case TDuration::DurationType::V_WHOLE: if (lines == 1) lineOffset = -2; break; case TDuration::DurationType::V_HALF: case TDuration::DurationType::V_QUARTER: case TDuration::DurationType::V_EIGHT: case TDuration::DurationType::V_16TH: case TDuration::DurationType::V_32ND: case TDuration::DurationType::V_64TH: case TDuration::DurationType::V_128TH: case TDuration::DurationType::V_256TH: case TDuration::DurationType::V_512TH: case TDuration::DurationType::V_1024TH: if (lines == 1) lineOffset = -4; break; default: break; } } return lineOffset; }