本文整理汇总了C++中StaffType::group方法的典型用法代码示例。如果您正苦于以下问题:C++ StaffType::group方法的具体用法?C++ StaffType::group怎么用?C++ StaffType::group使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StaffType
的用法示例。
在下文中一共展示了StaffType::group方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: layout
void Clef::layout()
{
// determine current number of lines and line distance
int lines = 5; // assume a resonable default
qreal lineDist = 1.0;
StaffType* staffType;
if (staff() && staff()->staffType()) {
staffType = staff()->staffType();
if (!staffType->genClef()) { // if no clef, set empty bbox and do nothing
setbbox(QRectF());
return;
}
// tablatures:
if (staffType->group() == TAB_STAFF) {
// if current clef type not compatible with tablature,
// set tab clef according to score style
if (clefTable[clefType()].staffGroup != TAB_STAFF)
setClefType( ClefType(score()->styleI(ST_tabClef)) );
}
// all staff types: init values from staff type
lines = staffType->lines();
lineDist = staffType->lineDistance().val();
}
// if nothing changed since last layout, do nothing
if (curClefType == clefType() && curLines == lines && curLineDist == lineDist)
return;
// if something has changed, cache new values and re-layout
curClefType = clefType();
curLines = lines;
curLineDist = lineDist;
layout1();
}
示例2: isSameStructure
bool StaffType::isSameStructure(const StaffType& st) const
{
if (st.group() != group() // common to all type groups
|| st._lines != _lines
|| st._stepOffset != _stepOffset
|| st._lineDistance != _lineDistance
|| st._genClef != _genClef
|| st._showBarlines != _showBarlines
|| st._slashStyle != _slashStyle
|| st._genTimesig != _genTimesig)
return false;
if (_group != StaffGroup::TAB) { // common to pitched and percussion
return st._genKeysig == _genKeysig
&& st._showLedgerLines == _showLedgerLines
;
}
else { // TAB-specific
return st._genDurations == _genDurations
&& st._linesThrough == _linesThrough
&& st._minimStyle == _minimStyle
&& st._onLines == _onLines
&& st._showRests == _showRests
&& st._stemsDown == _stemsDown
&& st._stemsThrough == _stemsThrough
&& st._upsideDown == _upsideDown
&& st._useNumbers == _useNumbers
;
}
}
示例3: apply
void EditStaff::apply()
{
Score* score = staff->score();
Part* part = staff->part();
int intervalIdx = iList->currentIndex();
bool upFlag = up->isChecked();
Interval interval = intervalList[intervalIdx];
interval.diatonic += octave->value() * 7;
interval.chromatic += octave->value() * 12;
if (!upFlag)
interval.flip();
instrument.setTranspose(interval);
instrument.setMinPitchA(_minPitchA);
instrument.setMaxPitchA(_maxPitchA);
instrument.setMinPitchP(_minPitchP);
instrument.setMaxPitchP(_maxPitchP);
instrument.setShortName(QTextDocumentFragment(shortName->document()));
instrument.setLongName(QTextDocumentFragment(longName->document()));
bool s = small->isChecked();
bool inv = invisible->isChecked();
qreal userDist = spinExtraDistance->value();
QColor col = color->color();
int staffIdx = staffType->itemData(staffType->currentIndex()).toInt();
StaffType* st = score->staffType(staffIdx);
// before changing instrument, check if notes need to be updated
// true if changing into or away from TAB or from one TAB type to another
StaffGroup ng = st->group(); // new staff group
StaffGroup og = staff->staffType()->group(); // old staff group
bool updateNeeded = (ng == TAB_STAFF_GROUP && og != TAB_STAFF_GROUP) ||
(ng != TAB_STAFF_GROUP && og == TAB_STAFF_GROUP) ||
(ng == TAB_STAFF_GROUP && og == TAB_STAFF_GROUP
&& instrument.stringData() != part->instr()->stringData());
if (!(instrument == *part->instr()) || part->partName() != partName->text()) {
score->undo(new ChangePart(part, instrument, partName->text()));
emit instrumentChanged();
}
if (s != staff->small() || inv != staff->invisible() || userDist != staff->userDist() || st != staff->staffType() || col != staff->color())
score->undo(new ChangeStaff(staff, s, inv, userDist * score->spatium(), col, st));
if (updateNeeded)
score->cmdUpdateNotes();
score->setLayoutAll(true);
score->update();
}
示例4: isEqual
bool StaffType::isEqual(const StaffType& st) const
{
return st.group() == group()
&& st._name == _name
&& st._stepOffset == _stepOffset
&& st._genClef == _genClef
&& st._showBarlines == _showBarlines
&& st._slashStyle == _slashStyle
&& st._genTimesig == _genTimesig
;
}
示例5: fillStaffTypeCombo
void EditStaff::fillStaffTypeCombo()
{
Score* score = staff->score();
int curIdx = 0;
int n = score->staffTypes().size();
// can this instrument accept tabs or drum set?
bool canUseTabs = instrument.stringData() && instrument.stringData()->strings() > 0;
bool canUsePerc = instrument.useDrumset();
staffType->clear();
for (int idx = 0; idx < n; ++idx) {
StaffType* st = score->staffType(idx);
if ( (canUseTabs && st->group() == TAB_STAFF_GROUP)
|| ( canUsePerc && st->group() == PERCUSSION_STAFF_GROUP)
|| (!canUsePerc && st->group() == STANDARD_STAFF_GROUP) ) {
staffType->addItem(st->name(), idx);
if (st == staff->staffType())
curIdx = staffType->count() - 1;
}
}
staffType->setCurrentIndex(curIdx);
}
示例6: isSameStructure
bool StaffType::isSameStructure(const StaffType& st) const
{
return st.group() == group()
&& st._lines == _lines
&& st._stepOffset == _stepOffset
&& st._lineDistance == _lineDistance
&& st._genClef == _genClef
&& st._showBarlines == _showBarlines
&& st._slashStyle == _slashStyle
&& st._genTimesig == _genTimesig
;
}
示例7: typeChanged
void EditStaffType::typeChanged(QListWidgetItem* n, QListWidgetItem* o)
{
if (n == 0)
return;
if (o)
saveCurrent(o);
// retrieve staff type corresponding to new current item in type list
int idx = n->data(Qt::UserRole).toInt();
StaffType* st = staffTypes[idx];
// switch to stack page and set props specific to each staff group
switch(st->group()) {
case STANDARD_STAFF_GROUP:
{
StaffTypePitched* ps = static_cast<StaffTypePitched*>(st);
stack->setCurrentIndex(0);
name->setText(st->name());
lines->setValue(st->lines());
lineDistance->setValue(st->lineDistance().val());
genClef->setChecked(st->genClef());
showBarlines->setChecked(st->showBarlines());
genTimesig->setChecked(st->genTimesig());
genKeysigPitched->setChecked(ps->genKeysig());
showLedgerLinesPitched->setChecked(ps->showLedgerLines());
stemlessPitched->setChecked(st->slashStyle());
}
break;
case TAB_STAFF_GROUP:
{
StaffTypeTablature* stt = static_cast<StaffTypeTablature*>(st);
blockTabPreviewSignals(true);
setDlgFromTab(stt);
name->setText(stt->name()); // setDlgFromTab() does not copy the name and it shouldn't
stack->setCurrentIndex(1);
blockTabPreviewSignals(false);
}
break;
case PERCUSSION_STAFF_GROUP:
{
StaffTypePercussion* ps = static_cast<StaffTypePercussion*>(st);
blockPercPreviewSignals(true);
setDlgFromPerc(ps);
name->setText(ps->name()); // setDlgFromPerc() does not copy the name and it shouldn't
stack->setCurrentIndex(2);
blockPercPreviewSignals(false);
}
break;
}
}
示例8: createNewType
void EditStaffType::createNewType()
{
//
// initialize new StaffType with current selected one
//
int idx = staffTypeList->currentItem()->data(Qt::UserRole).toInt();
StaffType* ns = staffTypes[idx]->clone();
//
// create unique new name for StaffType
//
// count how many types there are already of the same group of the new type
for (int i = idx = 0; i < staffTypes.count(); i++)
if (staffTypes[i]->group() == ns->group())
idx++;
QString name;
switch (ns->group())
{
case STANDARD_STAFF_GROUP:
name = QString("Standard-%1 [*]").arg(idx);
break;
case PERCUSSION_STAFF_GROUP:
name = QString("Perc-%1 [*]").arg(idx);
break;
case TAB_STAFF_GROUP:
name = QString("Tab-%1 [*]").arg(idx);
break;
}
ns->setName(name);
staffTypes.append(ns);
QListWidgetItem* item = new QListWidgetItem(ns->name());
item->setData(Qt::UserRole, staffTypes.size() - 1);
staffTypeList->addItem(item);
staffTypeList->setCurrentItem(item);
modified = true;
}
示例9: paint
void PositionCursor::paint(QPainter* p)
{
if (!visible())
return;
QPointF points[3];
qreal h = _sv->score()->spatium() * 2;
qreal x = _rect.left();
qreal y = _rect.top();
switch(_type) {
case CursorType::LOOP_IN: // draw a right-pointing triangle
{
qreal tx = x - 1.0;
p->setPen(QPen(_color, 2.0, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin));
p->drawLine(x, y, x, _rect.bottom());
points[0] = QPointF(tx, y);
points[1] = QPointF(tx, y + h);
points[2] = QPointF(tx + h, y + h * .5);
p->setBrush(_color);
p->drawConvexPolygon(points, 3);
}
break;
case CursorType::LOOP_OUT: // draw a left-pointing triangle
p->setPen(QPen(_color, 2.0, Qt::SolidLine, Qt::FlatCap, Qt::MiterJoin));
p->drawLine(x, y, x, _rect.bottom());
points[0] = QPointF(x, y);
points[1] = QPointF(x, y + h);
points[2] = QPointF(x - h, y + h * .5);
p->setBrush(_color);
p->drawConvexPolygon(points, 3);
break;
default: // fill the rectangle and add TAB string marks, if required
p->fillRect(_rect, color());
if (_sv->score()->noteEntryMode()) {
int track = _sv->score()->inputTrack();
if (track >= 0) {
Staff* staff = _sv->score()->staff(track2staff(track));
StaffType* staffType = staff->staffType();
if (staffType && staffType->group() == StaffGroup::TAB)
staffType->drawInputStringMarks(p, _sv->score()->inputState().string(),
track2voice(track), _rect);
}
}
break;
}
}
示例10: createNewType
void EditStaffType::createNewType()
{
//
// initialize new StaffType with current selected one
//
int idx = staffTypeList->currentItem()->data(Qt::UserRole).toInt();
StaffType* ns = staffTypes[idx]->clone();
ns->setName(createUniqueStaffTypeName(ns->group()));
staffTypes.append(ns);
QListWidgetItem* item = new QListWidgetItem(ns->name());
item->setData(Qt::UserRole, staffTypes.size() - 1);
staffTypeList->addItem(item);
staffTypeList->setCurrentItem(item);
modified = true;
}
示例11: layout
void Clef::layout()
{
// determine current number of lines and line distance
int lines;
qreal lineDist;
Segment* clefSeg = segment();
// check clef visibility and type compatibility
if (clefSeg && staff()) {
StaffType* staffType = staff()->staffType();
bool show = staffType->genClef(); // check staff type allows clef display
int tick = clefSeg->tick();
// check clef is compatible with staff type group:
if (ClefInfo::staffGroup(clefType()) != staffType->group()) {
if (tick > 0 && !generated()) // if clef is not generated, hide it
show = false;
else // if generated, replace with initial clef type
// TODO : instead of initial staff clef (which is assumed to be compatible)
// use the last compatible clef previously found in staff
_clefTypes = staff()->clefType(0);
}
// if clef not to show or not compatible with staff group
if (!show) {
setbbox(QRectF());
qDebug("Clef::layout(): invisible clef at tick %d(%d) staff %d",
segment()->tick(), segment()->tick()/1920, staffIdx());
return;
}
lines = staffType->lines(); // init values from staff type
lineDist = staffType->lineDistance().val();
}
else {
lines = 5;
lineDist = 1.0;
}
qreal _spatium = spatium();
qreal yoff = 0.0;
if (clefType() != ClefType::INVALID && clefType() != ClefType::MAX) {
symId = ClefInfo::symId(clefType());
yoff = lineDist * (lines - ClefInfo::line(clefType()));
}
switch (clefType()) {
case ClefType::C_19C: // 19th C clef is like a G clef
yoff = lineDist * 1.5;
break;
case ClefType::TAB: // TAB clef
// on tablature, position clef at half the number of spaces * line distance
yoff = lineDist * (lines - 1) * .5;
break;
case ClefType::TAB4: // TAB clef 4 strings
// on tablature, position clef at half the number of spaces * line distance
yoff = lineDist * (lines - 1) * .5;
break;
case ClefType::TAB_SERIF: // TAB clef alternate style
// on tablature, position clef at half the number of spaces * line distance
yoff = lineDist * (lines - 1) * .5;
break;
case ClefType::TAB4_SERIF: // TAB clef alternate style
// on tablature, position clef at half the number of spaces * line distance
yoff = lineDist * (lines - 1) * .5;
break;
case ClefType::PERC: // percussion clefs
yoff = lineDist * (lines - 1) * 0.5;
break;
case ClefType::PERC2:
yoff = lineDist * (lines - 1) * 0.5;
break;
case ClefType::INVALID:
case ClefType::MAX:
qDebug("Clef::layout: invalid type");
return;
default:
break;
}
// clefs are right aligned to Segment
QRectF r(symBbox(symId));
// setPos(-r.right(), yoff * _spatium);
setPos(0.0, yoff * _spatium);
setbbox(r);
}
示例12: layout
void Clef::layout()
{
// determine current number of lines and line distance
int lines;
qreal lineDist;
Segment* clefSeg = segment();
qDeleteAll(elements);
elements.clear();
// check clef visibility and type compatibility
if (clefSeg && staff()) {
StaffType* staffType = staff()->staffType();
bool show = staffType->genClef(); // check staff type allows clef display
int tick = clefSeg->tick();
// check clef is compatible with staff type group:
if (ClefInfo::staffGroup(clefType()) != staffType->group()) {
if (tick > 0 && !generated()) // if clef is not generated, hide it
show = false;
else // if generated, replace with initial clef type
// TODO : instead of initial staff clef (which is assumed to be compatible)
// use the last compatible clef previously found in staff
_clefTypes = staff()->clefType(0);
}
// if clef not to show or not compatible with staff group
if (!show) {
setbbox(QRectF());
qDebug("Clef::layout(): invisible clef at tick %d(%d) staff %d",
segment()->tick(), segment()->tick()/1920, staffIdx());
return;
}
lines = staffType->lines(); // init values from staff type
lineDist = staffType->lineDistance().val();
}
else {
lines = 5;
lineDist = 1.0;
}
qreal _spatium = spatium();
qreal yoff = 0.0;
Symbol* symbol = new Symbol(score());
switch (clefType()) {
case ClefType::G: // G clef on 2nd line
symbol->setSym(SymId::gClef);
yoff = 3.0 * lineDist;
break;
case ClefType::G1: // G clef 8va on 2nd line
symbol->setSym(SymId::gClef8va);
yoff = 3.0 * lineDist;
break;
case ClefType::G2: // G clef 15ma on 2nd line
symbol->setSym(SymId::gClef15ma);
yoff = 3.0 * lineDist;
break;
case ClefType::G3: // G clef 8vb on 2nd line
symbol->setSym(SymId::gClef8vb);
yoff = 3.0 * lineDist;
break;
case ClefType::G3_O: // double G clef 8vb on 2nd line
symbol->setSym(SymId::gClef8vbOld);
yoff = 3.0 * lineDist;
break;
case ClefType::F: // F clef on penultimate line
symbol->setSym(SymId::fClef);
yoff = 1.0 * lineDist;
break;
case ClefType::F8: // F clef 8va bassa on penultimate line
symbol->setSym(SymId::fClef8vb);
yoff = 1.0 * lineDist;
break;
case ClefType::F15: // F clef 15ma bassa on penultimate line
symbol->setSym(SymId::fClef15mb);
yoff = 1.0 * lineDist;
break;
case ClefType::F_B: // baritone clef
symbol->setSym(SymId::fClef);
yoff = 2.0 * lineDist;
break;
case ClefType::F_C: // subbass clef
symbol->setSym(SymId::fClef);
yoff = 0.0;
break;
case ClefType::C1: // C clef in 1st line
symbol->setSym(SymId::cClef);
yoff = 4.0 * lineDist;
break;
case ClefType::C2: // C clef on 2nd line
symbol->setSym(SymId::cClef);
yoff = 3.0 * lineDist;
break;
case ClefType::C3: // C clef in 3rd line
symbol->setSym(SymId::cClef);
yoff = 2.0 * lineDist;
break;
case ClefType::C4: // C clef on 4th line
//.........这里部分代码省略.........
示例13: layout
void Clef::layout()
{
setPos(QPoint());
// determine current number of lines and line distance
int lines = 5; // assume resonable defaults
qreal lineDist = 1.0;
Staff* stf = staff();
StaffType* staffType = nullptr;
Segment* clefSeg = static_cast<Segment*>(parent());
// check clef visibility and type compatibility
if (clefSeg && stf && stf->staffType()) {
bool bHide;
// check staff type allows clef display
staffType = stf->staffType();
bHide = !staffType->genClef();
// check clef is compatible with staff type group
int tick = clefSeg->tick();
if (ClefInfo::staffGroup(clefType()) != staffType->group()) {
if (tick > 0 && !generated()) // if clef is not generated, hide it
bHide = true;
else // if generated, replace with initial clef type
// TODO : instead of initial staff clef (which is assumed to be compatible)
// use the last compatible clef previously found in staff
_clefTypes = stf->clefType(0);
}
//
// courtesy clef
//
bool showClef = true;
// only if there is a clef change
if (!bHide && tick > 0 ) {
Measure* meas = clefSeg->measure();
// courtesy clef: end of last measure measure of system
bool courtesy = clefSeg->tick() == meas->endTick() && meas->system() && (meas == meas->system()->lastMeasure() || meas->system()->measures().indexOf(meas) == -1);
showClef = // show this clef if:
// it is not a courtesy clef
!courtesy
// or, if courtesy clef: show if score has courtesy clefs on
|| ( score()->styleB(StyleIdx::genCourtesyClef)
// AND measure is not at the end of a repeat or of a section
&& !( (meas->repeatFlags() & Repeat::END) || meas->isFinalMeasureOfSection() )
// AND this clef has courtesy clef turned on
&& showCourtesy() );
bHide |= !showClef;
}
// if clef not to show or not compatible with staff group
if (bHide) {
qDeleteAll(elements); // set empty bbox and do nothing
elements.clear();
setbbox(QRectF());
return;
}
lines = staffType->lines(); // init values from staff type
#if 0
// with fewer than 5 lines, keep clef toward top of staff (ignore line spacing)
if (!stf->isPitchedStaff() || lines >= 5)
#endif
lineDist = staffType->lineDistance().val();
}
// if nothing changed since last layout, do nothing
//DEBUG if (curClefType == clefType() && curLines == lines && curLineDist == lineDist)
// return;
// if something has changed, cache new values and re-layout
curClefType = clefType();
curLines = lines;
curLineDist = lineDist;
layout1();
}
示例14: saveCurrent
void EditStaffType::saveCurrent(QListWidgetItem* o)
{
bool modif = false; // assume no modifications
int idx = o->data(Qt::UserRole).toInt();
StaffType* st = staffTypes[idx];
// if any of the common properties is modified
if (name->text() != st->name()
|| st->lines() != lines->value()
|| st->lineDistance().val()!= lineDistance->value()
|| st->genClef() != genClef->isChecked()
|| st->showBarlines() != showBarlines->isChecked()
|| st->genTimesig() != genTimesig->isChecked()
) {
modif = true;
}
// or if any of the props specific to each group is modified
switch(st->group()) {
case STANDARD_STAFF_GROUP:
{
StaffTypePitched* sp = static_cast<StaffTypePitched*>(st);
if (sp->genKeysig() != genKeysigPitched->isChecked()
|| sp->showLedgerLines() != showLedgerLinesPitched->isChecked()
|| st->slashStyle() != stemlessPitched->isChecked()
) {
modif = true;
}
}
break;
case TAB_STAFF_GROUP:
{
StaffTypeTablature* stt = static_cast<StaffTypeTablature*>(st);
TablatureMinimStyle minimStyle = minimNoneRadio->isChecked() ? TAB_MINIM_NONE :
(minimShortRadio->isChecked() ? TAB_MINIM_SHORTER : TAB_MINIM_SLASHED);
if (stt->durationFontName() != durFontName->currentText()
|| stt->durationFontSize() != durFontSize->value()
|| stt->durationFontUserY()!= durY->value()
|| stt->fretFontName() != fretFontName->currentText()
|| stt->fretFontSize() != fretFontSize->value()
|| stt->fretFontUserY() != fretY->value()
|| stt->linesThrough() != linesThroughRadio->isChecked()
|| stt->onLines() != onLinesRadio->isChecked()
|| stt->upsideDown() != upsideDown->isChecked()
|| stt->useNumbers() != numbersRadio->isChecked()
|| ( noteValuesNone->isChecked() && (!stt->slashStyle() || stt->genDurations()) )
|| ( noteValuesSymb->isChecked() && (!stt->slashStyle() || !stt->genDurations()) )
// if stems, there are more values to take into account
|| ( noteValuesStems->isChecked()&& ( stt->slashStyle() || stt->genDurations()
|| stt->stemsDown() != stemBelowRadio->isChecked()
|| stt->stemThrough() != stemThroughRadio->isChecked()
|| stt->minimStyle() != minimStyle)
)
|| stt->showRests() != showRests->isChecked()
) {
modif = true;
}
}
break;
case PERCUSSION_STAFF_GROUP:
{
StaffTypePercussion* sp = static_cast<StaffTypePercussion*>(st);
if (sp->genKeysig() != genKeysigPercussion->isChecked()
|| sp->showLedgerLines() != showLedgerLinesPercussion->isChecked()
|| st->slashStyle() != stemlessPercussion->isChecked()
) {
modif = true;
}
}
break;
}
if (modif) {
// save common properties
// save-group specific properties
if(name->text().isEmpty()) {
QString n = createUniqueStaffTypeName(st->group());
name->setText(n);
o->setText(n);
}
switch(st->group()) {
case STANDARD_STAFF_GROUP:
{
StaffTypePitched* stp = static_cast<StaffTypePitched*>(st);
stp->setName(name->text());
stp->setLines(lines->value());
stp->setLineDistance(Spatium(lineDistance->value()));
stp->setShowBarlines(showBarlines->isChecked());
stp->setGenClef(genClef->isChecked());
stp->setGenTimesig(genTimesig->isChecked());
stp->setGenKeysig(genKeysigPitched->isChecked());
stp->setShowLedgerLines(showLedgerLinesPitched->isChecked());
stp->setSlashStyle(stemlessPitched->isChecked());
}
break;
case TAB_STAFF_GROUP:
{
StaffTypeTablature* stt = static_cast<StaffTypeTablature*>(st);
//.........这里部分代码省略.........
示例15: layout
void Clef::layout()
{
if (curClefType == clefType())
return;
qreal smag = _small ? score()->style(ST_smallClefMag).toDouble() : 1.0;
qreal _spatium = spatium();
qreal msp = _spatium * smag;
qreal yoff = 0.0;
qDeleteAll(elements);
elements.clear();
curClefType = clefType();
int lines = 5;
qreal lineDist = 1.0;
#if 0 // TODO: does not work with caching of curClefType
if (staff() && staff()->staffType()) {
StaffType* staffType = staff()->staffType();
if (staffType->group() == TAB_STAFF) {
if (!staffType->genClef())
return;
if (clefTable[st].staffGroup != TAB_STAFF)
st = ClefType(score()->styleI(ST_tabClef));
}
lines = staffType->lines();
lineDist = staffType->lineDistance().val();
}
#endif
Symbol* symbol = new Symbol(score());
switch (curClefType) {
case CLEF_G:
symbol->setSym(trebleclefSym);
yoff = 3.0;
break;
case CLEF_G1:
{
symbol->setSym(trebleclefSym);
yoff = 3.0;
Symbol* number = new Symbol(score());
number->setMag(smag);
number->setSym(clefEightSym);
addElement(number, 1.0 * msp, -5.0 * msp + yoff * _spatium);
}
break;
case CLEF_G2:
{
symbol->setSym(trebleclefSym);
yoff = 3.0;
Symbol* number = new Symbol(score());
symbol->setMag(smag);
number->setSym(clefOneSym);
addElement(number, .6 * msp, -5.0 * msp + yoff * _spatium);
number = new Symbol(score());
number->setSym(clefFiveSym);
addElement(number, 1.4 * msp, -5.0 * msp + yoff * _spatium);
}
break;
case CLEF_G3:
{
symbol->setSym(trebleclefSym);
yoff = 3.0;
Symbol* number = new Symbol(score());
symbol->setMag(smag);
number->setSym(clefEightSym);
addElement(number, 1.0 * msp, 4.0 * msp + yoff * _spatium);
}
break;
case CLEF_F:
symbol->setSym(bassclefSym);
yoff = 1.0;
break;
case CLEF_F8:
{
symbol->setSym(bassclefSym);
yoff = 1.0;
Symbol* number = new Symbol(score());
symbol->setMag(smag);
number->setSym(clefEightSym);
addElement(number, .0, 4.5 * msp + yoff * _spatium);
}
break;
case CLEF_F15:
{
symbol->setSym(bassclefSym);
yoff = 1.0;
Symbol* number = new Symbol(score());
symbol->setMag(smag);
number->setSym(clefOneSym);
addElement(number, .0, 4.5 * msp + yoff * _spatium);
number = new Symbol(score());
number->setSym(clefFiveSym);
addElement(number, .8 * msp, 4.5 * msp + yoff * _spatium);
}
break;
case CLEF_F_B: // baritone clef
symbol->setSym(bassclefSym);
yoff = 2.0;
//.........这里部分代码省略.........