Plugin: make available Accidental.accType and Accidental.role properties and enums

This commit is contained in:
Maurizio M. Gavioli 2012-10-01 20:03:31 +02:00
parent 45c50c13a8
commit 105eb1f241
13 changed files with 191 additions and 180 deletions

View file

@ -336,7 +336,7 @@ const char* Accidental::subtype2name(AccidentalType st)
// value2subtype
//---------------------------------------------------------
AccidentalType Accidental::value2subtype(AccidentalVal v)
Accidental::AccidentalType Accidental::value2subtype(AccidentalVal v)
{
switch(v) {
case NATURAL: return ACC_NONE;
@ -355,7 +355,7 @@ AccidentalType Accidental::value2subtype(AccidentalVal v)
// name2subtype
//---------------------------------------------------------
AccidentalType Accidental::name2subtype(const QString& tag)
Accidental::AccidentalType Accidental::name2subtype(const QString& tag)
{
int n = sizeof(accList)/sizeof(*accList);
for (int i = 0; i < n; ++i) {

View file

@ -35,25 +35,63 @@ struct SymElement {
SymElement(int _sym, qreal _x) : sym(_sym), x(_x) {}
};
//---------------------------------------------------------
// AccidentalRole
//---------------------------------------------------------
enum AccidentalRole {
ACC_AUTO, // layout created accidental
ACC_USER // user created accidental
};
//---------------------------------------------------------
// @@ Accidental
// @P hasBracket bool
// @P small bool
// @P acctype enum ACC_NONE, ACC_SHARP, ACC_FLAT, ACC_SHARP2, ACC_FLAT2, ACC_NATURAL, ...
// @P role enum ACC_AUTO, ACC_USER
//---------------------------------------------------------
class Accidental : public Element {
public:
enum AccidentalRole {
ACC_AUTO, // layout created accidental
ACC_USER // user created accidental
};
enum AccidentalType {
ACC_NONE,
ACC_SHARP,
ACC_FLAT,
ACC_SHARP2,
ACC_FLAT2,
ACC_NATURAL,
ACC_FLAT_SLASH,
ACC_FLAT_SLASH2,
ACC_MIRRORED_FLAT2,
ACC_MIRRORED_FLAT,
ACC_MIRRIRED_FLAT_SLASH,
ACC_FLAT_FLAT_SLASH,
ACC_SHARP_SLASH,
ACC_SHARP_SLASH2,
ACC_SHARP_SLASH3,
ACC_SHARP_SLASH4,
ACC_SHARP_ARROW_UP,
ACC_SHARP_ARROW_DOWN,
ACC_SHARP_ARROW_BOTH,
ACC_FLAT_ARROW_UP,
ACC_FLAT_ARROW_DOWN,
ACC_FLAT_ARROW_BOTH,
ACC_NATURAL_ARROW_UP,
ACC_NATURAL_ARROW_DOWN,
ACC_NATURAL_ARROW_BOTH,
ACC_SORI,
ACC_KORON,
ACC_END
};
private:
Q_OBJECT
Q_PROPERTY(bool hasBracket READ hasBracket WRITE undoSetHasBracket)
Q_PROPERTY(bool small READ small WRITE undoSetSmall)
Q_PROPERTY(bool hasBracket READ hasBracket WRITE undoSetHasBracket)
Q_PROPERTY(bool small READ small WRITE undoSetSmall)
Q_PROPERTY(AccidentalType accType READ subtype)
Q_PROPERTY(AccidentalRole role READ role)
Q_ENUMS(AccidentalType)
Q_ENUMS(AccidentalRole)
QList<SymElement> el;
AccidentalType _subtype;
@ -104,6 +142,9 @@ class Accidental : public Element {
static AccidentalType name2subtype(const QString&);
};
Q_DECLARE_METATYPE(Accidental::AccidentalRole)
Q_DECLARE_METATYPE(Accidental::AccidentalType)
//---------------------------------------------------------
// @@ AccidentalBracket
// used as icon in palette

View file

@ -1245,7 +1245,7 @@ void Score::addArticulation(ArticulationType attr)
/// notes.
//---------------------------------------------------------
void Score::changeAccidental(AccidentalType idx)
void Score::changeAccidental(Accidental::AccidentalType idx)
{
foreach(Note* note, selection().noteList())
changeAccidental(note, idx);
@ -1257,7 +1257,7 @@ void Score::changeAccidental(AccidentalType idx)
/// note \a note.
//---------------------------------------------------------
void Score::changeAccidental(Note* note, AccidentalType accidental)
void Score::changeAccidental(Note* note, Accidental::AccidentalType accidental)
{
QList<Staff*> staffList;
Staff* ostaff = note->chord()->staff();
@ -1284,14 +1284,14 @@ void Score::changeAccidental(Note* note, AccidentalType accidental)
//
AccidentalVal acc = Accidental::subtype2value(accidental);
AccidentalVal acc2 = measure->findAccidental(note);
AccidentalType accType;
Accidental::AccidentalType accType;
int pitch, tpc;
if (accidental == ACC_NONE) {
if (accidental == Accidental::ACC_NONE) {
//
// delete accidentals
//
accType = ACC_NONE;
accType = Accidental::ACC_NONE;
pitch = line2pitch(note->line(), clef, 0) + acc2;
tpc = step2tpc(step, acc2);
// check if there's accidentals left, previously set as
@ -1312,7 +1312,7 @@ void Score::changeAccidental(Note* note, AccidentalType accidental)
Accidental* a = new Accidental(this);
a->setParent(note);
a->setSubtype(accidental);
a->setRole(ACC_USER);
a->setRole(Accidental::ACC_USER);
undoAddElement(a);
}
else {
@ -2115,15 +2115,15 @@ void Score::cmd(const QAction* a)
else if (cmd == "beam-32")
cmdSetBeamMode(BEAM_BEGIN32);
else if (cmd == "sharp2")
changeAccidental(ACC_SHARP2);
changeAccidental(Accidental::ACC_SHARP2);
else if (cmd == "sharp")
changeAccidental(ACC_SHARP);
changeAccidental(Accidental::ACC_SHARP);
else if (cmd == "nat")
changeAccidental(ACC_NATURAL);
changeAccidental(Accidental::ACC_NATURAL);
else if (cmd == "flat")
changeAccidental(ACC_FLAT);
changeAccidental(Accidental::ACC_FLAT);
else if (cmd == "flat2")
changeAccidental(ACC_FLAT2);
changeAccidental(Accidental::ACC_FLAT2);
else if (cmd == "repitch")
_is.setRepitchMode(a->isChecked());
else if (cmd == "flip")

View file

@ -1131,7 +1131,7 @@ void Score::deleteItem(Element* el)
break;
case Element::ACCIDENTAL:
changeAccidental(static_cast<Note*>(el->parent()), ACC_NONE);
changeAccidental(static_cast<Note*>(el->parent()), Accidental::ACC_NONE);
break;
case Element::BAR_LINE:

View file

@ -266,13 +266,13 @@ void Score::layoutChords1(Segment* segment, int staffIdx)
int st1 = aclist[0].note->accidental()->subtype();
int st2 = acc->subtype();
int ldiff = st1 == ACC_FLAT ? 4 : 5;
int ldiff = st1 == Accidental::ACC_FLAT ? 4 : 5;
if (qAbs(l1-l2) > ldiff) {
aclist[nAcc-1].x = -pnd * acc->mag() - acc->width() - acc->bbox().x();
}
else {
if ((st1 == ACC_FLAT) && (st2 == ACC_FLAT) && (qAbs(l1-l2) > 2))
if ((st1 == Accidental::ACC_FLAT) && (st2 == Accidental::ACC_FLAT) && (qAbs(l1-l2) > 2))
aclist[nAcc-1].x = aclist[0].x - acc->width() * .5;
else
aclist[nAcc-1].x = aclist[0].x - acc->width();
@ -295,15 +295,15 @@ void Score::layoutChords1(Segment* segment, int staffIdx)
int st1 = aclist[i-1].note->accidental()->subtype();
int st2 = acc->subtype();
int ldiff = st1 == ACC_FLAT ? 4 : 5;
int ldiff = st1 == Accidental::ACC_FLAT ? 4 : 5;
if (qAbs(l1-l2) <= ldiff) { // overlap accidental above
if ((st1 == ACC_FLAT) && (st2 == ACC_FLAT) && (qAbs(l1-l2) > 2))
if ((st1 == Accidental::ACC_FLAT) && (st2 == Accidental::ACC_FLAT) && (qAbs(l1-l2) > 2))
x = aclist[i-1].x + acc->width() * .5; // undercut flats
else
x = aclist[i-1].x;
}
ldiff = acc->subtype() == ACC_FLAT ? 4 : 5;
ldiff = acc->subtype() == Accidental::ACC_FLAT ? 4 : 5;
if (qAbs(l2-l3) <= ldiff) { // overlap accidental below
if (aclist[n].x < x)
x = aclist[n].x;

View file

@ -15,6 +15,7 @@
#include "style.h"
#include "mscore.h"
#include "sequencer.h"
#include "accidental.h"
#include "figuredbass.h"
#include "stafftype.h"
#include "note.h"
@ -72,6 +73,8 @@ void MScore::init()
qRegisterMetaType<MScore::ValueType>("ValueType");
qRegisterMetaType<MScore::Direction>("Direction");
qRegisterMetaType<MScore::DirectionH>("DirectionH");
qRegisterMetaType<Accidental::AccidentalRole>("AccidentalRole");
qRegisterMetaType<Accidental::AccidentalType>("AccidentalType");
qRegisterMetaType<Spanner::Anchor>("Anchor");
qRegisterMetaType<Note::NoteHeadGroup>("NoteHeadGroup");
qRegisterMetaType<Note::NoteHeadType>("NoteHeadType");

View file

@ -212,43 +212,9 @@ enum NoteType {
};
//---------------------------------------------------------
// AccidentalType
// AccidentalVal
//---------------------------------------------------------
enum AccidentalType {
ACC_NONE,
ACC_SHARP,
ACC_FLAT,
ACC_SHARP2,
ACC_FLAT2,
ACC_NATURAL,
ACC_FLAT_SLASH,
ACC_FLAT_SLASH2,
ACC_MIRRORED_FLAT2,
ACC_MIRRORED_FLAT,
ACC_MIRRIRED_FLAT_SLASH,
ACC_FLAT_FLAT_SLASH,
ACC_SHARP_SLASH,
ACC_SHARP_SLASH2,
ACC_SHARP_SLASH3,
ACC_SHARP_SLASH4,
ACC_SHARP_ARROW_UP,
ACC_SHARP_ARROW_DOWN,
ACC_SHARP_ARROW_BOTH,
ACC_FLAT_ARROW_UP,
ACC_FLAT_ARROW_DOWN,
ACC_FLAT_ARROW_BOTH,
ACC_NATURAL_ARROW_UP,
ACC_NATURAL_ARROW_DOWN,
ACC_NATURAL_ARROW_BOTH,
ACC_SORI,
ACC_KORON,
ACC_END
};
enum AccidentalVal {
SHARP2 = 2,
SHARP = 1,

View file

@ -782,51 +782,51 @@ void Note::read(const QDomElement& de)
// TODO: for backward compatibility
bool bracket = k & 0x8000;
k &= 0xfff;
AccidentalType at = ACC_NONE;
Accidental::AccidentalType at = Accidental::ACC_NONE;
switch(k) {
case 0: at = ACC_NONE; break;
case 0: at = Accidental::ACC_NONE; break;
case 1:
case 11: at = ACC_SHARP; break;
case 11: at = Accidental::ACC_SHARP; break;
case 2:
case 12: at = ACC_FLAT; break;
case 12: at = Accidental::ACC_FLAT; break;
case 3:
case 13: at = ACC_SHARP2; break;
case 13: at = Accidental::ACC_SHARP2; break;
case 4:
case 14: at = ACC_FLAT2; break;
case 14: at = Accidental::ACC_FLAT2; break;
case 5:
case 15: at = ACC_NATURAL; break;
case 15: at = Accidental::ACC_NATURAL; break;
case 6: at = ACC_SHARP; bracket = true; break;
case 7: at = ACC_FLAT; bracket = true; break;
case 8: at = ACC_SHARP2; bracket = true; break;
case 9: at = ACC_FLAT2; bracket = true; break;
case 10: at = ACC_NATURAL; bracket = true; break;
case 6: at = Accidental::ACC_SHARP; bracket = true; break;
case 7: at = Accidental::ACC_FLAT; bracket = true; break;
case 8: at = Accidental::ACC_SHARP2; bracket = true; break;
case 9: at = Accidental::ACC_FLAT2; bracket = true; break;
case 10: at = Accidental::ACC_NATURAL; bracket = true; break;
case 16: at = ACC_FLAT_SLASH; break;
case 17: at = ACC_FLAT_SLASH2; break;
case 18: at = ACC_MIRRORED_FLAT2; break;
case 19: at = ACC_MIRRORED_FLAT; break;
case 20: at = ACC_MIRRIRED_FLAT_SLASH; break;
case 21: at = ACC_FLAT_FLAT_SLASH; break;
case 16: at = Accidental::ACC_FLAT_SLASH; break;
case 17: at = Accidental::ACC_FLAT_SLASH2; break;
case 18: at = Accidental::ACC_MIRRORED_FLAT2; break;
case 19: at = Accidental::ACC_MIRRORED_FLAT; break;
case 20: at = Accidental::ACC_MIRRIRED_FLAT_SLASH; break;
case 21: at = Accidental::ACC_FLAT_FLAT_SLASH; break;
case 22: at = ACC_SHARP_SLASH; break;
case 23: at = ACC_SHARP_SLASH2; break;
case 24: at = ACC_SHARP_SLASH3; break;
case 25: at = ACC_SHARP_SLASH4; break;
case 22: at = Accidental::ACC_SHARP_SLASH; break;
case 23: at = Accidental::ACC_SHARP_SLASH2; break;
case 24: at = Accidental::ACC_SHARP_SLASH3; break;
case 25: at = Accidental::ACC_SHARP_SLASH4; break;
case 26: at = ACC_SHARP_ARROW_UP; break;
case 27: at = ACC_SHARP_ARROW_DOWN; break;
case 28: at = ACC_SHARP_ARROW_BOTH; break;
case 29: at = ACC_FLAT_ARROW_UP; break;
case 30: at = ACC_FLAT_ARROW_DOWN; break;
case 31: at = ACC_FLAT_ARROW_BOTH; break;
case 32: at = ACC_NATURAL_ARROW_UP; break;
case 33: at = ACC_NATURAL_ARROW_DOWN; break;
case 34: at = ACC_NATURAL_ARROW_BOTH; break;
case 26: at = Accidental::ACC_SHARP_ARROW_UP; break;
case 27: at = Accidental::ACC_SHARP_ARROW_DOWN; break;
case 28: at = Accidental::ACC_SHARP_ARROW_BOTH; break;
case 29: at = Accidental::ACC_FLAT_ARROW_UP; break;
case 30: at = Accidental::ACC_FLAT_ARROW_DOWN; break;
case 31: at = Accidental::ACC_FLAT_ARROW_BOTH; break;
case 32: at = Accidental::ACC_NATURAL_ARROW_UP; break;
case 33: at = Accidental::ACC_NATURAL_ARROW_DOWN; break;
case 34: at = Accidental::ACC_NATURAL_ARROW_BOTH; break;
}
_accidental->setSubtype(at);
_accidental->setHasBracket(bracket);
_accidental->setRole(ACC_USER);
_accidental->setRole(Accidental::ACC_USER);
hasAccidental = true; // we now have an accidental
}
}
@ -1386,11 +1386,11 @@ void Note::layout10(AccidentalState* as)
// calculate accidental
AccidentalType acci = ACC_NONE;
if (_accidental && _accidental->role() == ACC_USER) {
Accidental::AccidentalType acci = Accidental::ACC_NONE;
if (_accidental && _accidental->role() == Accidental::ACC_USER) {
acci = _accidental->subtype();
if (acci == ACC_SHARP || acci == ACC_FLAT) {
int ntpc = pitch2tpc2(_pitch, acci == ACC_SHARP);
if (acci == Accidental::ACC_SHARP || acci == Accidental::ACC_FLAT) {
int ntpc = pitch2tpc2(_pitch, acci == Accidental::ACC_SHARP);
if (ntpc != _tpc) {
qDebug("note has wrong tpc: %d, expected %d", _tpc, ntpc);
// setColor(QColor(255, 0, 0));
@ -1406,12 +1406,12 @@ void Note::layout10(AccidentalState* as)
as->setAccidentalVal(int(_line), accVal, _tieBack != 0);
if (!_tieBack) {
acci = Accidental::value2subtype(accVal);
if (acci == ACC_NONE)
acci = ACC_NATURAL;
if (acci == Accidental::ACC_NONE)
acci = Accidental::ACC_NATURAL;
}
}
}
if (acci != ACC_NONE && !_tieBack && !_hidden) {
if (acci != Accidental::ACC_NONE && !_tieBack && !_hidden) {
if (_accidental == 0) {
_accidental = new Accidental(score());
_accidental->setGenerated(true);
@ -1632,31 +1632,31 @@ void Note::updateAccidental(AccidentalState* as)
// calculate accidental
AccidentalType acci = ACC_NONE;
if (_accidental && _accidental->role() == ACC_USER) {
Accidental::AccidentalType acci = Accidental::ACC_NONE;
if (_accidental && _accidental->role() == Accidental::ACC_USER) {
// check if user accidental fits tpc
// in case tpc was changed
AccidentalType newUserAcc;
Accidental::AccidentalType newUserAcc;
switch (_accidental->subtype()) {
case ACC_FLAT2:
case ACC_FLAT:
case ACC_NATURAL:
case ACC_SHARP:
case ACC_SHARP2:
case Accidental::ACC_FLAT2:
case Accidental::ACC_FLAT:
case Accidental::ACC_NATURAL:
case Accidental::ACC_SHARP:
case Accidental::ACC_SHARP2:
if (_tpc < 6)
newUserAcc = ACC_FLAT2;
newUserAcc = Accidental::ACC_FLAT2;
else if (_tpc < 13)
newUserAcc = ACC_FLAT;
newUserAcc = Accidental::ACC_FLAT;
else if (_tpc < 20)
newUserAcc = ACC_NATURAL;
newUserAcc = Accidental::ACC_NATURAL;
else if (_tpc < 27)
newUserAcc = ACC_SHARP;
newUserAcc = Accidental::ACC_SHARP;
else
newUserAcc = ACC_SHARP2;
newUserAcc = Accidental::ACC_SHARP2;
if (_accidental->subtype() != newUserAcc)
acci = ACC_NONE; // don't use this any more
acci = Accidental::ACC_NONE; // don't use this any more
else {
acci = newUserAcc; // keep it
// if the key signature is changed:
@ -1672,20 +1672,20 @@ void Note::updateAccidental(AccidentalState* as)
acci = _accidental->subtype();
}
}
if (acci == ACC_NONE) {
if (acci == Accidental::ACC_NONE) {
AccidentalVal accVal = tpc2alter(_tpc);
if ((accVal != as->accidentalVal(int(_line))) || hidden() || as->tieContext(int(_line))) {
as->setAccidentalVal(int(_line), accVal, _tieBack != 0);
if (_tieBack)
acci = ACC_NONE;
acci = Accidental::ACC_NONE;
else {
acci = Accidental::value2subtype(accVal);
if (acci == ACC_NONE)
acci = ACC_NATURAL;
if (acci == Accidental::ACC_NONE)
acci = Accidental::ACC_NATURAL;
}
}
}
if (acci != ACC_NONE && !_tieBack && !_hidden) {
if (acci != Accidental::ACC_NONE && !_tieBack && !_hidden) {
if (_accidental == 0) {
Accidental* a = new Accidental(score());
a->setParent(this);

View file

@ -28,6 +28,7 @@
#include "sparm.h"
#include "mscoreview.h"
#include "segment.h"
#include "accidental.h"
#include "note.h"
class TempoMap;
@ -531,8 +532,8 @@ class Score : public QObject {
// undo/redo ops
void addArticulation(ArticulationType);
void changeAccidental(AccidentalType);
void changeAccidental(Note* oNote, AccidentalType);
void changeAccidental(Accidental::AccidentalType);
void changeAccidental(Note* oNote, Accidental::AccidentalType);
void addElement(Element*);
void removeElement(Element*);

View file

@ -2348,8 +2348,8 @@ void AccidentalView::setElement(Element* e)
ShowElementBase::setElement(e);
acc.hasBracket->setChecked(s->hasBracket());
acc.accAuto->setChecked(s->role() == ACC_AUTO);
acc.accUser->setChecked(s->role() == ACC_USER);
acc.accAuto->setChecked(s->role() == Accidental::ACC_AUTO);
acc.accUser->setChecked(s->role() == Accidental::ACC_USER);
}
//---------------------------------------------------------

View file

@ -2066,25 +2066,25 @@ void ExportMusicXml::chord(Chord* chord, int staff, const QList<Lyrics*>* ll, bo
*/
QString s;
switch (acc->subtype()) {
case ACC_SHARP: s = "sharp"; break;
case ACC_FLAT: s = "flat"; break;
case ACC_SHARP2: s = "double-sharp"; break;
case ACC_FLAT2: s = "flat-flat"; break;
case ACC_NATURAL: s = "natural"; break;
case ACC_FLAT_SLASH: s = "quarter-flat"; break; // (alternative)
case ACC_MIRRORED_FLAT: s = "quarter-flat"; break; // (recommended by Michael)
case ACC_FLAT_ARROW_UP: s = "quarter-flat"; break; // (alternative)
case ACC_NATURAL_ARROW_DOWN: s = "quarter-flat"; break; // (alternative)
case ACC_SHARP_SLASH: s = "quarter-sharp"; break; // (recommended by Michael)
case ACC_SHARP_ARROW_DOWN: s = "quarter-sharp"; break; // (alternative)
case ACC_NATURAL_ARROW_UP: s = "quarter-sharp"; break; // (alternative)
case ACC_MIRRORED_FLAT2: s = "three-quarters-flat"; break; // (recommended by Michael)
case ACC_FLAT_FLAT_SLASH: s = "three-quarters-flat"; break; // (alternative)
case ACC_FLAT_ARROW_DOWN: s = "three-quarters-flat"; break; // (alternative)
case ACC_SHARP_SLASH4: s = "three-quarters-sharp"; break; // (recommended by Michael)
case ACC_SHARP_ARROW_UP: s = "three-quarters-sharp"; break; // (alternate)
case ACC_SORI: s = "sori"; break; //sori
case ACC_KORON: s = "koron"; break; //koron
case Accidental::ACC_SHARP: s = "sharp"; break;
case Accidental::ACC_FLAT: s = "flat"; break;
case Accidental::ACC_SHARP2: s = "double-sharp"; break;
case Accidental::ACC_FLAT2: s = "flat-flat"; break;
case Accidental::ACC_NATURAL: s = "natural"; break;
case Accidental::ACC_FLAT_SLASH: s = "quarter-flat"; break; // (alternative)
case Accidental::ACC_MIRRORED_FLAT: s = "quarter-flat"; break; // (recommended by Michael)
case Accidental::ACC_FLAT_ARROW_UP: s = "quarter-flat"; break; // (alternative)
case Accidental::ACC_NATURAL_ARROW_DOWN: s = "quarter-flat"; break; // (alternative)
case Accidental::ACC_SHARP_SLASH: s = "quarter-sharp"; break; // (recommended by Michael)
case Accidental::ACC_SHARP_ARROW_DOWN: s = "quarter-sharp"; break; // (alternative)
case Accidental::ACC_NATURAL_ARROW_UP: s = "quarter-sharp"; break; // (alternative)
case Accidental::ACC_MIRRORED_FLAT2: s = "three-quarters-flat"; break; // (recommended by Michael)
case Accidental::ACC_FLAT_FLAT_SLASH: s = "three-quarters-flat"; break; // (alternative)
case Accidental::ACC_FLAT_ARROW_DOWN: s = "three-quarters-flat"; break; // (alternative)
case Accidental::ACC_SHARP_SLASH4: s = "three-quarters-sharp"; break; // (recommended by Michael)
case Accidental::ACC_SHARP_ARROW_UP: s = "three-quarters-sharp"; break; // (alternate)
case Accidental::ACC_SORI: s = "sori"; break; //sori
case Accidental::ACC_KORON: s = "koron"; break; //koron
default:
qDebug("unknown accidental %d\n", acc->subtype());
}

View file

@ -4191,49 +4191,49 @@ static bool readArticulations(ChordRest* cr, QString mxmlName)
//---------------------------------------------------------
/**
Convert a MusicXML accidental name to a MuseScore enum AccidentalType.
Convert a MusicXML accidental name to a MuseScore enum Accidental::Type.
*/
static AccidentalType convertAccidental(QString mxmlName)
static Accidental::AccidentalType convertAccidental(QString mxmlName)
{
QMap<QString, AccidentalType> map; // map MusicXML accidental name to MuseScore enum AccidentalType
map["natural"] = ACC_NATURAL;
map["flat"] = ACC_FLAT;
map["sharp"] = ACC_SHARP;
map["double-sharp"] = ACC_SHARP2;
map["sharp-sharp"] = ACC_SHARP2;
map["flat-flat"] = ACC_FLAT2;
map["double-flat"] = ACC_FLAT2;
map["natural-flat"] = ACC_NONE;
QMap<QString, Accidental::AccidentalType> map; // map MusicXML accidental name to MuseScore enum Accidental::Type
map["natural"] = Accidental::ACC_NATURAL;
map["flat"] = Accidental::ACC_FLAT;
map["sharp"] = Accidental::ACC_SHARP;
map["double-sharp"] = Accidental::ACC_SHARP2;
map["sharp-sharp"] = Accidental::ACC_SHARP2;
map["flat-flat"] = Accidental::ACC_FLAT2;
map["double-flat"] = Accidental::ACC_FLAT2;
map["natural-flat"] = Accidental::ACC_NONE;
map["quarter-flat"] = ACC_MIRRORED_FLAT;
map["quarter-sharp"] = ACC_SHARP_SLASH;
map["three-quarters-flat"] = ACC_MIRRORED_FLAT2;
map["three-quarters-sharp"] = ACC_SHARP_SLASH4;
map["quarter-flat"] = Accidental::ACC_MIRRORED_FLAT;
map["quarter-sharp"] = Accidental::ACC_SHARP_SLASH;
map["three-quarters-flat"] = Accidental::ACC_MIRRORED_FLAT2;
map["three-quarters-sharp"] = Accidental::ACC_SHARP_SLASH4;
map["sharp-down"] = ACC_SHARP_ARROW_DOWN;
map["sharp-up"] = ACC_SHARP_ARROW_UP;
map["natural-down"] = ACC_NATURAL_ARROW_DOWN;
map["natural-up"] = ACC_NATURAL_ARROW_UP;
map["flat-down"] = ACC_FLAT_ARROW_DOWN;
map["flat-up"] = ACC_FLAT_ARROW_UP;
map["sharp-down"] = Accidental::ACC_SHARP_ARROW_DOWN;
map["sharp-up"] = Accidental::ACC_SHARP_ARROW_UP;
map["natural-down"] = Accidental::ACC_NATURAL_ARROW_DOWN;
map["natural-up"] = Accidental::ACC_NATURAL_ARROW_UP;
map["flat-down"] = Accidental::ACC_FLAT_ARROW_DOWN;
map["flat-up"] = Accidental::ACC_FLAT_ARROW_UP;
map["slash-quarter-sharp"] = ACC_MIRRIRED_FLAT_SLASH;
map["slash-sharp"] = ACC_SHARP_SLASH;
map["slash-flat"] = ACC_FLAT_SLASH;
map["double-slash-flat"] = ACC_FLAT_SLASH2;
map["slash-quarter-sharp"] = Accidental::ACC_MIRRIRED_FLAT_SLASH;
map["slash-sharp"] = Accidental::ACC_SHARP_SLASH;
map["slash-flat"] = Accidental::ACC_FLAT_SLASH;
map["double-slash-flat"] = Accidental::ACC_FLAT_SLASH2;
map["sori"] = ACC_SORI;
map["koron"] = ACC_KORON;
map["sori"] = Accidental::ACC_SORI;
map["koron"] = Accidental::ACC_KORON;
map["natural-sharp"] = ACC_NONE;
map["natural-sharp"] = Accidental::ACC_NONE;
if (map.contains(mxmlName))
return map.value(mxmlName);
else
qDebug("unknown accidental %s", qPrintable(mxmlName));
// default: return ACC_NONE
return ACC_NONE;
// default: return Accidental::ACC_NONE
return Accidental::ACC_NONE;
}
//---------------------------------------------------------
@ -4770,7 +4770,7 @@ void MusicXml::xmlNote(Measure* measure, int staff, const QString& partId, QDomE
QString step;
int alter = 0;
int octave = 4;
AccidentalType accidental = ACC_NONE;
Accidental::AccidentalType accidental = Accidental::ACC_NONE;
bool parentheses = false;
bool editorial = false;
bool cautionary = false;
@ -5143,7 +5143,7 @@ void MusicXml::xmlNote(Measure* measure, int staff, const QString& partId, QDomE
Accidental* a = new Accidental(score);
a->setSubtype(accidental);
a->setHasBracket(cautionary || parentheses);
a->setRole(ACC_USER);
a->setRole(Accidental::ACC_USER);
note->add(a);
}

View file

@ -204,9 +204,9 @@ Palette* MuseScore::newAccidentalsPalette()
sp->setGrid(33, 36);
sp->setDrawGrid(true);
for (int i = ACC_SHARP; i < ACC_END; ++i) {
for (int i = Accidental::ACC_SHARP; i < Accidental::ACC_END; ++i) {
Accidental* s = new Accidental(gscore);
s->setSubtype(AccidentalType(i));
s->setSubtype(Accidental::AccidentalType(i));
sp->append(s, qApp->translate("accidental", s->subtypeUserName()));
}
AccidentalBracket* ab = new AccidentalBracket(gscore);