void Text::setAbove(bool val) { setYoff(val ? -2.0 : 7.0); }
bool ElementLayout::readProperties(XmlReader& e) { const QStringRef& tag(e.name()); if (tag == "halign") { const QString& val(e.readElementText()); _align &= ~(ALIGN_HCENTER | ALIGN_RIGHT); if (val == "center") _align |= ALIGN_HCENTER; else if (val == "right") _align |= ALIGN_RIGHT; else if (val == "left") ; else qDebug("Text::readProperties: unknown alignment: <%s>", qPrintable(val)); } else if (tag == "valign") { const QString& val(e.readElementText()); _align &= ~(ALIGN_VCENTER | ALIGN_BOTTOM | ALIGN_BASELINE); if (val == "center") _align |= ALIGN_VCENTER; else if (val == "bottom") _align |= ALIGN_BOTTOM; else if (val == "baseline") _align |= ALIGN_BASELINE; else if (val == "top") ; else qDebug("Text::readProperties: unknown alignment: <%s>", qPrintable(val)); } else if (tag == "xoffset") { qreal xo = e.readDouble(); if (offsetType() == OffsetType::ABS) xo /= INCH; setXoff(xo); } else if (tag == "yoffset") { qreal yo = e.readDouble(); if (offsetType() == OffsetType::ABS) yo /= INCH; setYoff(yo); } else if (tag == "rxoffset") // obsolete e.readDouble(); else if (tag == "ryoffset") // obsolete e.readDouble(); else if (tag == "offsetType") { const QString& val(e.readElementText()); OffsetType ot = OffsetType::ABS; if (val == "spatium" || val == "1") ot = OffsetType::SPATIUM; if (ot != offsetType()) { setOffsetType(ot); if (ot == OffsetType::ABS) _offset /= INCH; // convert spatium -> inch else _offset *= INCH; // convert inch -> spatium } } else return false; return true; }
bool ElementLayout::readProperties(XmlReader* r) { MString8 tag = r->tag(); QString val; int i; qreal d; if (r->readString("halign", &val)) { _align &= ~(ALIGN_HCENTER | ALIGN_RIGHT); if (val == "center") _align |= ALIGN_HCENTER; else if (val == "right") _align |= ALIGN_RIGHT; else if (val == "left") { ; } } else if (r->readString("valign", &val)) { _align &= ~(ALIGN_VCENTER | ALIGN_BOTTOM | ALIGN_BASELINE); if (val == "center") _align |= ALIGN_VCENTER; else if (val == "bottom") _align |= ALIGN_BOTTOM; else if (val == "baseline") _align |= ALIGN_BASELINE; else if (val == "top") { ; } } else if (r->readReal("xoffset", &d)) { if (offsetType() == OFFSET_ABS) d /= INCH; setXoff(d); } else if (r->readReal("yoffset", &d)) { if (offsetType() == OFFSET_ABS) d /= INCH; setYoff(d); } else if (r->readReal("rxoffset", &d)) setRxoff(d); else if (r->readReal("ryoffset", &d)) setRyoff(val.toDouble()); else if (r->readInt("offsetType", &i)) { OffsetType ot = (OffsetType)i; if (ot != offsetType()) { setOffsetType(ot); if (ot == OFFSET_ABS) { _xoff /= INCH; _yoff /= INCH; } else { _xoff *= INCH; _yoff *= INCH; } } } else return false; return true; }
Ottava::Ottava(Score* s) : TextLine(s) { setSubtype(0); setYoff(-3.5); // default position }
Trill::Trill(Score* s) : SLine(s) { _subtype = TRILL_LINE; setYoff(-1.0); // default position }
void Symbol::setAbove(bool val) { setYoff(val ? -2.0 : 7.0); }
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(); }