cleared up DynamicSpeed enum
This commit is contained in:
parent
cd590fc29c
commit
cc67cea99c
9 changed files with 60 additions and 67 deletions
|
@ -113,16 +113,6 @@ static const ElementStyle dynamicsStyle {
|
|||
{ Sid::dynamicsMinDistance, Pid::MIN_DISTANCE },
|
||||
};
|
||||
|
||||
//---------------------------------------------------------
|
||||
// changeSpeedTable
|
||||
//---------------------------------------------------------
|
||||
|
||||
const std::vector<Dynamic::ChangeSpeedItem> Dynamic::changeSpeedTable {
|
||||
{ Dynamic::Speed::NORMAL, "normal" },
|
||||
{ Dynamic::Speed::SLOW, "slow" },
|
||||
{ Dynamic::Speed::FAST, "fast" },
|
||||
};
|
||||
|
||||
//---------------------------------------------------------
|
||||
// Dynamic
|
||||
//---------------------------------------------------------
|
||||
|
@ -134,7 +124,7 @@ Dynamic::Dynamic(Segment* parent)
|
|||
_dynRange = DynamicRange::PART;
|
||||
_dynamicType = DynamicType::OTHER;
|
||||
_changeInVelocity = 128;
|
||||
_velChangeSpeed = Speed::NORMAL;
|
||||
_velChangeSpeed = DynamicSpeed::NORMAL;
|
||||
initElementStyle(&dynamicsStyle);
|
||||
}
|
||||
|
||||
|
@ -193,13 +183,13 @@ Fraction Dynamic::velocityChangeLength() const
|
|||
double ratio = double(score()->tempomap()->tempo(segment()->tick().ticks())) / double(Score::defaultTempo());
|
||||
double speedMult;
|
||||
switch (velChangeSpeed()) {
|
||||
case Dynamic::Speed::SLOW:
|
||||
case DynamicSpeed::SLOW:
|
||||
speedMult = 1.3;
|
||||
break;
|
||||
case Dynamic::Speed::FAST:
|
||||
case DynamicSpeed::FAST:
|
||||
speedMult = 0.5;
|
||||
break;
|
||||
case Dynamic::Speed::NORMAL:
|
||||
case DynamicSpeed::NORMAL:
|
||||
default:
|
||||
speedMult = 0.8;
|
||||
break;
|
||||
|
@ -270,7 +260,7 @@ void Dynamic::read(XmlReader& e)
|
|||
} else if (tag == "veloChange") {
|
||||
_changeInVelocity = e.readInt();
|
||||
} else if (tag == "veloChangeSpeed") {
|
||||
_velChangeSpeed = nameToSpeed(e.readElementText());
|
||||
_velChangeSpeed = TConv::fromXml(e.readElementText(), DynamicSpeed::NORMAL);
|
||||
} else if (!TextBase::readProperties(e)) {
|
||||
e.unknown();
|
||||
}
|
||||
|
@ -477,35 +467,6 @@ void Dynamic::undoSetDynRange(DynamicRange v)
|
|||
undoChangeProperty(Pid::DYNAMIC_RANGE, v);
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// speedToName
|
||||
//---------------------------------------------------------
|
||||
|
||||
QString Dynamic::speedToName(Speed speed)
|
||||
{
|
||||
for (auto i : Dynamic::changeSpeedTable) {
|
||||
if (i.speed == speed) {
|
||||
return i.name;
|
||||
}
|
||||
}
|
||||
qFatal("Unrecognised change speed!");
|
||||
return "none"; // silence a compiler warning
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// nameToSpeed
|
||||
//---------------------------------------------------------
|
||||
|
||||
Dynamic::Speed Dynamic::nameToSpeed(QString name)
|
||||
{
|
||||
for (auto i : Dynamic::changeSpeedTable) {
|
||||
if (i.name == name) {
|
||||
return i.speed;
|
||||
}
|
||||
}
|
||||
return Speed::NORMAL; // default
|
||||
}
|
||||
|
||||
//---------------------------------------------------------
|
||||
// getProperty
|
||||
//---------------------------------------------------------
|
||||
|
@ -559,7 +520,7 @@ bool Dynamic::setProperty(Pid propertyId, const PropertyValue& v)
|
|||
}
|
||||
break;
|
||||
case Pid::VELO_CHANGE_SPEED:
|
||||
_velChangeSpeed = Speed(v.toInt());
|
||||
_velChangeSpeed = v.value<DynamicSpeed>();
|
||||
break;
|
||||
default:
|
||||
if (!TextBase::setProperty(propertyId, v)) {
|
||||
|
@ -591,7 +552,7 @@ PropertyValue Dynamic::propertyDefault(Pid id) const
|
|||
return PropertyValue();
|
||||
}
|
||||
case Pid::VELO_CHANGE_SPEED:
|
||||
return int(Speed::NORMAL);
|
||||
return DynamicSpeed::NORMAL;
|
||||
default:
|
||||
return TextBase::propertyDefault(id);
|
||||
}
|
||||
|
|
|
@ -41,12 +41,8 @@ class Dynamic final : public TextBase
|
|||
{
|
||||
public:
|
||||
|
||||
enum class Speed : char {
|
||||
SLOW, NORMAL, FAST
|
||||
};
|
||||
|
||||
struct ChangeSpeedItem {
|
||||
Speed speed;
|
||||
DynamicSpeed speed;
|
||||
const char* name;
|
||||
};
|
||||
|
||||
|
@ -58,7 +54,7 @@ private:
|
|||
DynamicRange _dynRange; // STAFF, PART, SYSTEM
|
||||
|
||||
int _changeInVelocity { 128 };
|
||||
Speed _velChangeSpeed { Speed::NORMAL };
|
||||
DynamicSpeed _velChangeSpeed { DynamicSpeed::NORMAL };
|
||||
|
||||
mu::RectF drag(EditData&) override;
|
||||
|
||||
|
@ -96,10 +92,8 @@ public:
|
|||
Fraction velocityChangeLength() const;
|
||||
bool isVelocityChangeAvailable() const;
|
||||
|
||||
Speed velChangeSpeed() const { return _velChangeSpeed; }
|
||||
void setVelChangeSpeed(Speed val) { _velChangeSpeed = val; }
|
||||
static QString speedToName(Speed speed);
|
||||
static Speed nameToSpeed(QString name);
|
||||
DynamicSpeed velChangeSpeed() const { return _velChangeSpeed; }
|
||||
void setVelChangeSpeed(DynamicSpeed val) { _velChangeSpeed = val; }
|
||||
|
||||
mu::engraving::PropertyValue getProperty(Pid propertyId) const override;
|
||||
bool setProperty(Pid propertyId, const mu::engraving::PropertyValue&) override;
|
||||
|
@ -112,8 +106,6 @@ public:
|
|||
QString screenReaderInfo() const override;
|
||||
void doAutoplace();
|
||||
|
||||
static const std::vector<ChangeSpeedItem> changeSpeedTable;
|
||||
|
||||
static QString dynamicText(DynamicType t);
|
||||
};
|
||||
} // namespace Ms
|
||||
|
|
|
@ -183,7 +183,7 @@ static constexpr PropertyMetaData propertyList[] = {
|
|||
{ Pid::HAIRPIN_CONT_HEIGHT, false, "hairpinContHeight", P_TYPE::SPATIUM, DUMMY_QT_TR_NOOP("propertyName", "hairpin cont height") },
|
||||
{ Pid::VELO_CHANGE, true, "veloChange", P_TYPE::INT, DUMMY_QT_TR_NOOP("propertyName", "velocity change") },
|
||||
{ Pid::VELO_CHANGE_METHOD, true, "veloChangeMethod", P_TYPE::CHANGE_METHOD, DUMMY_QT_TR_NOOP("propertyName", "velocity change method") }, // left as a compatability property - we need to be able to read it correctly
|
||||
{ Pid::VELO_CHANGE_SPEED, true, "veloChangeSpeed", P_TYPE::CHANGE_SPEED, DUMMY_QT_TR_NOOP("propertyName", "velocity change speed") },
|
||||
{ Pid::VELO_CHANGE_SPEED, true, "veloChangeSpeed", P_TYPE::DYNAMIC_SPEED, DUMMY_QT_TR_NOOP("propertyName", "velocity change speed") },
|
||||
{ Pid::DYNAMIC_TYPE, true, "subtype", P_TYPE::DYNAMIC_TYPE, DUMMY_QT_TR_NOOP("propertyName", "dynamic type") },
|
||||
{ Pid::DYNAMIC_RANGE, true, "dynType", P_TYPE::DYNAMIC_RANGE, DUMMY_QT_TR_NOOP("propertyName", "dynamic range") },
|
||||
|
||||
|
@ -544,14 +544,17 @@ PropertyValue readProperty(Pid id, XmlReader& e)
|
|||
return PropertyValue(XmlValue::fromXml(e.readElementText(), GlissandoStyle::CHROMATIC));
|
||||
case P_TYPE::BARLINE_TYPE:
|
||||
return PropertyValue(XmlValue::fromXml(e.readElementText(), BarLineType::NORMAL));
|
||||
|
||||
case P_TYPE::NOTEHEAD_TYPE:
|
||||
return PropertyValue(TConv::fromXml(e.readElementText(), NoteHeadType::HEAD_AUTO));
|
||||
case P_TYPE::NOTEHEAD_SCHEME:
|
||||
return PropertyValue(TConv::fromXml(e.readElementText(), NoteHeadScheme::HEAD_AUTO));
|
||||
case P_TYPE::NOTEHEAD_GROUP:
|
||||
return PropertyValue(TConv::fromXml(e.readElementText(), NoteHeadGroup::HEAD_NORMAL));
|
||||
|
||||
case P_TYPE::CLEF_TYPE:
|
||||
return PropertyValue(TConv::fromXml(e.readElementText(), ClefType::G));
|
||||
|
||||
case P_TYPE::DYNAMIC_TYPE:
|
||||
return PropertyValue(TConv::fromXml(e.readElementText(), DynamicType::OTHER));
|
||||
|
||||
|
@ -636,8 +639,6 @@ QString propertyToString(Pid id, const PropertyValue& value, bool mscx)
|
|||
return SymNames::nameForSymId(SymId(value.toInt()));
|
||||
case P_TYPE::SUB_STYLE:
|
||||
return textStyleName(Tid(value.toInt()));
|
||||
case P_TYPE::CHANGE_SPEED:
|
||||
return Dynamic::speedToName(Dynamic::Speed(value.toInt()));
|
||||
case P_TYPE::CHANGE_METHOD:
|
||||
return ChangeMap::changeMethodToName(ChangeMethod(value.toInt()));
|
||||
case P_TYPE::ORIENTATION: {
|
||||
|
|
|
@ -167,6 +167,7 @@ QVariant PropertyValue::toQVariant() const
|
|||
case P_TYPE::CLEF_TYPE: return static_cast<int>(value<ClefType>());
|
||||
case P_TYPE::DYNAMIC_TYPE: return static_cast<int>(value<DynamicType>());
|
||||
case P_TYPE::DYNAMIC_RANGE: return static_cast<int>(value<DynamicRange>());
|
||||
case P_TYPE::DYNAMIC_SPEED: return static_cast<int>(value<DynamicSpeed>());
|
||||
|
||||
// other
|
||||
case P_TYPE::SYMID: return static_cast<int>(value<Ms::SymId>());
|
||||
|
@ -234,6 +235,7 @@ PropertyValue PropertyValue::fromQVariant(const QVariant& v, P_TYPE type)
|
|||
case P_TYPE::CLEF_TYPE: return PropertyValue(ClefType(v.toInt()));
|
||||
case P_TYPE::DYNAMIC_TYPE: return PropertyValue(DynamicType(v.toInt()));
|
||||
case P_TYPE::DYNAMIC_RANGE: return PropertyValue(DynamicRange(v.toInt()));
|
||||
case P_TYPE::DYNAMIC_SPEED: return PropertyValue(DynamicSpeed(v.toInt()));
|
||||
|
||||
// other
|
||||
|
||||
|
|
|
@ -87,6 +87,7 @@ enum class P_TYPE {
|
|||
CLEF_TYPE,
|
||||
DYNAMIC_TYPE,
|
||||
DYNAMIC_RANGE,
|
||||
DYNAMIC_SPEED,
|
||||
|
||||
HOOK_TYPE,
|
||||
|
||||
|
@ -100,7 +101,6 @@ enum class P_TYPE {
|
|||
SUB_STYLE,
|
||||
|
||||
CHANGE_METHOD, // enum class VeloChangeMethod (for single note dynamics)
|
||||
CHANGE_SPEED, // enum class Dynamic::Speed
|
||||
|
||||
KEYMODE, // enum class KeyMode
|
||||
ORIENTATION, // enum class Orientation
|
||||
|
@ -210,6 +210,8 @@ public:
|
|||
: m_type(P_TYPE::DYNAMIC_TYPE), m_data(make_data<DynamicType>(v)) {}
|
||||
PropertyValue(DynamicRange v)
|
||||
: m_type(P_TYPE::DYNAMIC_RANGE), m_data(make_data<DynamicRange>(v)) {}
|
||||
PropertyValue(DynamicSpeed v)
|
||||
: m_type(P_TYPE::DYNAMIC_SPEED), m_data(make_data<DynamicSpeed>(v)) {}
|
||||
|
||||
// not sorted
|
||||
PropertyValue(Ms::SymId v)
|
||||
|
|
|
@ -283,7 +283,7 @@ void XmlWriter::tagProperty(const char* name, P_TYPE type, const PropertyValue&
|
|||
// draw
|
||||
case P_TYPE::COLOR: {
|
||||
putLevel();
|
||||
Color color(data.value<draw::Color>());
|
||||
Color color(data.value<Color>());
|
||||
*this << QString("<%1 r=\"%2\" g=\"%3\" b=\"%4\" a=\"%5\"/>\n")
|
||||
.arg(name).arg(color.red()).arg(color.green()).arg(color.blue()).arg(color.alpha());
|
||||
}
|
||||
|
@ -396,6 +396,12 @@ void XmlWriter::tagProperty(const char* name, P_TYPE type, const PropertyValue&
|
|||
*this << TConv::toXml(data.value<DynamicRange>());
|
||||
*this << "</" << ename << ">\n";
|
||||
} break;
|
||||
case P_TYPE::DYNAMIC_SPEED: {
|
||||
putLevel();
|
||||
*this << "<" << name << ">";
|
||||
*this << TConv::toXml(data.value<DynamicSpeed>());
|
||||
*this << "</" << ename << ">\n";
|
||||
} break;
|
||||
default: {
|
||||
UNREACHABLE; //! TODO
|
||||
}
|
||||
|
@ -415,7 +421,6 @@ void XmlWriter::tagProperty(const char* name, P_TYPE type, const PropertyValue&
|
|||
// case P_TYPE::SUB_STYLE,
|
||||
|
||||
// case P_TYPE::CHANGE_METHOD, // enum class VeloChangeMethod (for single note dynamics)
|
||||
// case P_TYPE::CHANGE_SPEED, // enum class Dynamic::Speed
|
||||
// case P_TYPE::KEYMODE, // enum class KeyMode
|
||||
// case P_TYPE::ORIENTATION, // enum class Orientation
|
||||
|
||||
|
|
|
@ -352,6 +352,11 @@ enum class DynamicType : char {
|
|||
enum class DynamicRange : char {
|
||||
STAFF, PART, SYSTEM
|
||||
};
|
||||
|
||||
// P_TYPE::DYNAMIC_SPEED
|
||||
enum class DynamicSpeed : char {
|
||||
SLOW, NORMAL, FAST
|
||||
};
|
||||
} // mu::engraving
|
||||
|
||||
//! NOTE compat
|
||||
|
@ -374,6 +379,7 @@ using NoteHeadGroup = mu::engraving::NoteHeadGroup;
|
|||
using ClefType = mu::engraving::ClefType;
|
||||
using DynamicType = mu::engraving::DynamicType;
|
||||
using DynamicRange = mu::engraving::DynamicRange;
|
||||
using DynamicSpeed = mu::engraving::DynamicSpeed;
|
||||
}
|
||||
|
||||
#endif // MU_ENGRAVING_TYPES_H
|
||||
|
|
|
@ -350,9 +350,9 @@ DynamicType TConv::fromXml(const QString& tag, DynamicType def)
|
|||
}
|
||||
|
||||
static const std::vector<Item<DynamicRange> > DYNAMIC_RANGES = {
|
||||
{ DynamicRange::STAFF, "staff", nullptr },
|
||||
{ DynamicRange::PART, "part", nullptr },
|
||||
{ DynamicRange::SYSTEM, "system", nullptr },
|
||||
{ DynamicRange::STAFF, "staff" },
|
||||
{ DynamicRange::PART, "part" },
|
||||
{ DynamicRange::SYSTEM, "system" },
|
||||
};
|
||||
|
||||
QString TConv::toUserName(DynamicRange v)
|
||||
|
@ -371,3 +371,24 @@ DynamicRange TConv::fromXml(const QString& tag, DynamicRange def)
|
|||
int v = tag.toInt(&ok);
|
||||
return ok ? DynamicRange(v) : def;
|
||||
}
|
||||
|
||||
static const std::vector<Item<DynamicSpeed> > DYNAMIC_SPEEDS = {
|
||||
{ DynamicSpeed::NORMAL, "normal" },
|
||||
{ DynamicSpeed::SLOW, "slow" },
|
||||
{ DynamicSpeed::FAST, "fast" },
|
||||
};
|
||||
|
||||
QString TConv::toUserName(DynamicSpeed v)
|
||||
{
|
||||
return findUserNameByType<DynamicSpeed>(DYNAMIC_SPEEDS, v);
|
||||
}
|
||||
|
||||
QString TConv::toXml(DynamicSpeed v)
|
||||
{
|
||||
return findXmlTagByType<DynamicSpeed>(DYNAMIC_SPEEDS, v);
|
||||
}
|
||||
|
||||
DynamicSpeed TConv::fromXml(const QString& tag, DynamicSpeed def)
|
||||
{
|
||||
return findTypeByXmlTag<DynamicSpeed>(DYNAMIC_SPEEDS, tag, def);
|
||||
}
|
||||
|
|
|
@ -54,6 +54,9 @@ public:
|
|||
static QString toUserName(DynamicRange v);
|
||||
static QString toXml(DynamicRange v);
|
||||
static DynamicRange fromXml(const QString& tag, DynamicRange def);
|
||||
static QString toUserName(DynamicSpeed v);
|
||||
static QString toXml(DynamicSpeed v);
|
||||
static DynamicSpeed fromXml(const QString& tag, DynamicSpeed def);
|
||||
};
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue