Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/engraving/data/styles/legacy-style-defaults-v1.mss
Original file line number Diff line number Diff line change
Expand Up @@ -1127,5 +1127,8 @@
<bracketedAccidentalPadding>0</bracketedAccidentalPadding>
<alignAccidentalsLeft>true</alignAccidentalsLeft>
<Spatium>1.76389</Spatium>
<lyricsEvenMusicalSymbolSize>11.0</lyricsEvenMusicalSymbolSize>
<lyricsOddMusicalSymbolSize>11.0</lyricsOddMusicalSymbolSize>
<pageNumberMusicalSymbolSize>9.0</pageNumberMusicalSymbolSize>
</Style>
</museScore>
3 changes: 3 additions & 0 deletions src/engraving/data/styles/legacy-style-defaults-v2.mss
Original file line number Diff line number Diff line change
Expand Up @@ -1127,5 +1127,8 @@
<bracketedAccidentalPadding>0</bracketedAccidentalPadding>
<alignAccidentalsLeft>true</alignAccidentalsLeft>
<Spatium>1.76389</Spatium>
<lyricsEvenMusicalSymbolSize>11.0</lyricsEvenMusicalSymbolSize>
<lyricsOddMusicalSymbolSize>11.0</lyricsOddMusicalSymbolSize>
<pageNumberMusicalSymbolSize>9.0</pageNumberMusicalSymbolSize>
</Style>
</museScore>
3 changes: 3 additions & 0 deletions src/engraving/data/styles/legacy-style-defaults-v3.mss
Original file line number Diff line number Diff line change
Expand Up @@ -1127,5 +1127,8 @@
<bracketedAccidentalPadding>0</bracketedAccidentalPadding>
<alignAccidentalsLeft>true</alignAccidentalsLeft>
<Spatium>1.76389</Spatium>
<lyricsEvenMusicalSymbolSize>11.0</lyricsEvenMusicalSymbolSize>
<lyricsOddMusicalSymbolSize>11.0</lyricsOddMusicalSymbolSize>
<pageNumberMusicalSymbolSize>9.0</pageNumberMusicalSymbolSize>
</Style>
</museScore>
3 changes: 3 additions & 0 deletions src/engraving/data/styles/legacy-style-defaults-v302.mss
Original file line number Diff line number Diff line change
Expand Up @@ -1290,6 +1290,9 @@
<autoplaceEnabled>1</autoplaceEnabled>
<usePre_3_6_defaults>0</usePre_3_6_defaults>
<defaultsVersion>302</defaultsVersion>
<lyricsEvenMusicalSymbolSize>11.0</lyricsEvenMusicalSymbolSize>
<lyricsOddMusicalSymbolSize>11.0</lyricsOddMusicalSymbolSize>
<pageNumberMusicalSymbolSize>9.0</pageNumberMusicalSymbolSize>sion>
<Spatium>1.74978</Spatium>
</Style>
</museScore>
3 changes: 3 additions & 0 deletions src/engraving/data/styles/migration-306-style-Edwin.mss
Original file line number Diff line number Diff line change
Expand Up @@ -97,5 +97,8 @@
<user12FontFace>Edwin</user12FontFace>
<letRingFontFace>Edwin</letRingFontFace>
<palmMuteFontFace>Edwin</palmMuteFontFace>
<lyricsEvenMusicalSymbolSize>11.0</lyricsEvenMusicalSymbolSize>
<lyricsOddMusicalSymbolSize>11.0</lyricsOddMusicalSymbolSize>
<pageNumberMusicalSymbolSize>9.0</pageNumberMusicalSymbolSize>
</Style>
</museScore>
3 changes: 3 additions & 0 deletions src/engraving/data/styles/migration-306-style-Leland.mss
Original file line number Diff line number Diff line change
Expand Up @@ -26,5 +26,8 @@
<voltaLineWidth>0.11</voltaLineWidth>
<lyricsLineThickness>0.1</lyricsLineThickness>
<tupletBracketWidth>0.1</tupletBracketWidth>
<lyricsEvenMusicalSymbolSize>11.0</lyricsEvenMusicalSymbolSize>
<lyricsOddMusicalSymbolSize>11.0</lyricsOddMusicalSymbolSize>
<pageNumberMusicalSymbolSize>9.0</pageNumberMusicalSymbolSize>
</Style>
</museScore>
9 changes: 1 addition & 8 deletions src/engraving/dom/dynamic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,6 @@ const std::vector<Dyn> Dynamic::DYN_LIST = {
static const ElementStyle dynamicsStyle {
{ Sid::dynamicsMinDistance, Pid::MIN_DISTANCE },
{ Sid::avoidBarLines, Pid::AVOID_BARLINES },
{ Sid::dynamicsSize, Pid::DYNAMICS_SIZE },
{ Sid::centerOnNotehead, Pid::CENTER_ON_NOTEHEAD },
};

Expand All @@ -133,7 +132,6 @@ Dynamic::Dynamic(const Dynamic& d)
m_changeInVelocity = d.m_changeInVelocity;
m_velChangeSpeed = d.m_velChangeSpeed;
_avoidBarLines = d._avoidBarLines;
_dynamicsSize = d._dynamicsSize;
_centerOnNotehead = d._centerOnNotehead;
}

Expand Down Expand Up @@ -461,8 +459,6 @@ PropertyValue Dynamic::getProperty(Pid propertyId) const
return m_velChangeSpeed;
case Pid::AVOID_BARLINES:
return avoidBarLines();
case Pid::DYNAMICS_SIZE:
return _dynamicsSize;
case Pid::CENTER_ON_NOTEHEAD:
return _centerOnNotehead;
case Pid::PLAY:
Expand Down Expand Up @@ -502,9 +498,6 @@ bool Dynamic::setProperty(Pid propertyId, const PropertyValue& v)
case Pid::AVOID_BARLINES:
setAvoidBarLines(v.toBool());
break;
case Pid::DYNAMICS_SIZE:
_dynamicsSize = v.toDouble();
break;
case Pid::CENTER_ON_NOTEHEAD:
_centerOnNotehead = v.toBool();
break;
Expand Down Expand Up @@ -648,7 +641,7 @@ Shape Dynamic::symShapeWithCutouts(SymId id) const
{
Staff* stf = staff();
double staffMag = stf ? stf->staffMag(tick()) : 1.0;
Shape shape = score()->engravingFont()->shapeWithCutouts(id, magS() * staffMag * dynamicsSize());
Shape shape = score()->engravingFont()->shapeWithCutouts(id, magS() * staffMag * symbolScale());
for (ShapeElement& element : shape.elements()) {
element.setItem(this);
}
Expand Down
1 change: 0 additions & 1 deletion src/engraving/dom/dynamic.h
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,6 @@ class Dynamic final : public TextBase
private:

M_PROPERTY(bool, avoidBarLines, setAvoidBarLines)
M_PROPERTY(double, dynamicsSize, setDynamicsSize)
M_PROPERTY(bool, centerOnNotehead, setCenterOnNotehead)

std::pair<DynamicType, String> parseDynamicText(const String&) const;
Expand Down
2 changes: 1 addition & 1 deletion src/engraving/dom/expression.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ double Expression::computeDynamicExpressionDistance(const Dynamic* snappedDyn) c
String dynamicTextString = snappedDyn->xmlText();
String f = String::fromStdString("<sym>dynamicForte</sym>");
double distance = (dynamicTextString.endsWith(f) ? 0.2 : 0.5) * spatium();
distance *= 0.5 * (snappedDyn->dynamicsSize() + (size() / 10));
distance *= 0.5 * (snappedDyn->symbolScale() + (size() / 10));
return distance;
}

Expand Down
65 changes: 31 additions & 34 deletions src/engraving/dom/textbase.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include <cmath>
#include <stack>

#include "dom/harppedaldiagram.h"
#include "draw/fontmetrics.h"

#include "iengravingfont.h"
Expand Down Expand Up @@ -877,37 +878,22 @@ Font TextFragment::font(const TextBase* t) const
String family;
Font::Type fontType = Font::Type::Unknown;
if (format.fontFamily() == "ScoreText") {
if (t->isDynamic()
|| t->isStringTunings()
|| t->isPlayTechAnnotation()
|| t->textStyleType() == TextStyleType::OTTAVA
|| t->textStyleType() == TextStyleType::HARP_PEDAL_DIAGRAM
|| t->textStyleType() == TextStyleType::TUPLET
|| t->textStyleType() == TextStyleType::PEDAL
) {
if (t->hasSymbolScale()) {
std::string fontName = engravingFonts()->fontByName(t->style().styleSt(Sid::musicalSymbolFont).toStdString())->family();
family = String::fromStdString(fontName);
fontType = Font::Type::MusicSymbol;
if (!t->isStringTunings()) {
m = MUSICAL_SYMBOLS_DEFAULT_FONT_SIZE;
if (t->isDynamic()) {
m *= t->getProperty(Pid::DYNAMICS_SIZE).toDouble() * spatiumScaling;
if (t->style().styleB(Sid::dynamicsOverrideFont)) {
std::string fontName2 = engravingFonts()->fontByName(t->style().styleSt(Sid::dynamicsFont).toStdString())->family();
family = String::fromStdString(fontName2);
}
} else {
for (const auto& a : *textStyle(t->textStyleType())) {
if (a.type == TextStylePropertyType::MusicalSymbolsScale) {
m *= t->style().styleD(a.sid);
if (t->sizeIsSpatiumDependent()) {
m *= spatiumScaling;
}
break;
}
}
}

m = MUSICAL_SYMBOLS_DEFAULT_FONT_SIZE;
m *= t->getProperty(Pid::MUSICAL_SYMBOLS_SCALE).toDouble();
if (t->sizeIsSpatiumDependent()) {
m *= spatiumScaling;
}

if (t->style().styleB(Sid::dynamicsOverrideFont)) {
std::string fontName2 = engravingFonts()->fontByName(t->style().styleSt(Sid::dynamicsFont).toStdString())->family();
family = String::fromStdString(fontName2);
}

// We use a default font size of 10pt for historical reasons,
// but SMuFL standard is 20pt so multiply x2 here.
m *= 2;
Expand All @@ -918,9 +904,6 @@ Font TextFragment::font(const TextBase* t) const
if (t->sizeIsSpatiumDependent()) {
m *= spatiumScaling;
}
} else {
family = t->style().styleSt(Sid::musicalTextFont);
fontType = Font::Type::MusicSymbolText;
}
// check if all symbols are available
font.setFamily(family, fontType);
Expand Down Expand Up @@ -2627,6 +2610,8 @@ PropertyValue TextBase::getProperty(Pid propertyId) const
return voiceAssignment();
case Pid::MUSIC_SYMBOL_SIZE:
return symbolSize();
case Pid::MUSICAL_SYMBOLS_SCALE:
return symbolScale();
default:
return EngravingItem::getProperty(propertyId);
}
Expand Down Expand Up @@ -2716,6 +2701,9 @@ bool TextBase::setProperty(Pid pid, const PropertyValue& v)
case Pid::MUSIC_SYMBOL_SIZE:
setSymbolSize(v.toDouble());
break;
case Pid::MUSICAL_SYMBOLS_SCALE:
setSymbolScale(v.toDouble());
break;
default:
rv = EngravingItem::setProperty(pid, v);
break;
Expand Down Expand Up @@ -2763,8 +2751,6 @@ PropertyValue TextBase::propertyDefault(Pid id) const
return AutoOnOff::AUTO;
case Pid::VOICE_ASSIGNMENT:
return VoiceAssignment::ALL_VOICE_IN_INSTRUMENT;
case Pid::MUSIC_SYMBOL_SIZE:
return styleValue(Pid::FONT_SIZE, getPropertyStyle(Pid::FONT_SIZE));
default:
for (const auto& p : *textStyle(TextStyleType::DEFAULT)) {
if (p.pid == id) {
Expand Down Expand Up @@ -3082,8 +3068,6 @@ void TextBase::initTextStyleType(TextStyleType tid)
for (const auto& p : *textStyle(tid)) {
setProperty(getTextPID(p.pid), styleValue(p.pid, p.sid));
}

resetProperty(Pid::MUSIC_SYMBOL_SIZE);
}

RectF TextBase::drag(EditData& ed)
Expand Down Expand Up @@ -3408,4 +3392,17 @@ void TextBase::undoChangeProperty(Pid id, const PropertyValue& v, PropertyFlags
}
}
}

bool mu::engraving::TextBase::hasSymbolScale() const
{
bool hasSymbolScale = isDynamic()
|| isStringTunings()
|| isPlayTechAnnotation()
|| (isHarpPedalDiagram() && toHarpPedalDiagram(this)->isDiagram())
|| (parent() && parent()->isOttavaSegment())
|| (parent() && parent()->isTuplet())
|| (parent() && parent()->isPedalSegment());

return hasSymbolScale;
}
}
8 changes: 7 additions & 1 deletion src/engraving/dom/textbase.h
Original file line number Diff line number Diff line change
Expand Up @@ -498,7 +498,12 @@ class TextBase : public EngravingItem

double symbolSize() const { return m_symbolSize; }
void setSymbolSize(double v) { m_symbolSize = v; }
inline bool hasSymbolSize() const { return isMarker() || isTempoText() || isSystemText() || isStaffText(); }

double symbolScale() const { return m_symbolScale; }
void setSymbolScale(double v) { m_symbolScale = v; }

bool hasSymbolScale() const;
bool hasSymbolSize() const { return !hasSymbolScale(); }

protected:
TextBase(const ElementType& type, EngravingItem* parent = 0, TextStyleType tid = TextStyleType::DEFAULT,
Expand Down Expand Up @@ -561,6 +566,7 @@ class TextBase : public EngravingItem
bool m_primed = 0;

double m_symbolSize = 18.0;
double m_symbolScale = 1.0;

TextCursor* m_cursor = nullptr;

Expand Down
2 changes: 1 addition & 1 deletion src/engraving/rendering/score/alignmentlayout.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ double AlignmentLayout::yOpticalCenter(const EngravingItem* item)
break;
case AlignV::BASELINE:
if (item->isDynamic()) {
curY -= 0.46 * item->spatium() * toDynamic(item)->dynamicsSize(); // approximated half x-height of dynamic
curY -= 0.46 * item->spatium() * toDynamic(item)->symbolScale(); // approximated half x-height of dynamic
} else {
curY -= 0.5 * toExpression(item)->fontMetrics().xHeight();
}
Expand Down
31 changes: 31 additions & 0 deletions src/engraving/rw/compat/compatutils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -976,3 +976,34 @@ void CompatUtils::setTextLineTextPositionFromAlign(TextLineBase* tl)
tl->setPropertyFlags(Pid::END_TEXT_POSITION, PropertyFlags::UNSTYLED);
}
}

void mu::engraving::compat::CompatUtils::setMusicSymbolSize470(MStyle& style)
{
// Music symbols have their own point size in 4.7
// Initialize this to the text type's default font size
for (TextStyleType textStyleType : allTextStyles()) {
if (textStyleType == TextStyleType::REPEAT_LEFT || textStyleType == TextStyleType::REPEAT_RIGHT) {
continue;
}

const TextStyle* ts = textStyle(textStyleType);
Sid musicSymbolSizeSid = Sid::NOSTYLE;
Sid fontSizeSid = Sid::NOSTYLE;

for (size_t i = 0; i < TEXT_STYLE_SIZE; ++i) {
if (ts->at(i).pid == Pid::MUSIC_SYMBOL_SIZE) {
musicSymbolSizeSid = ts->at(i).sid;
}

if (ts->at(i).pid == Pid::FONT_SIZE) {
fontSizeSid = ts->at(i).sid;
}
}

if (musicSymbolSizeSid == Sid::NOSTYLE || fontSizeSid == Sid::NOSTYLE) {
continue;
}

style.set(musicSymbolSizeSid, style.value(fontSizeSid));
}
}
1 change: 1 addition & 0 deletions src/engraving/rw/compat/compatutils.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class CompatUtils
static const std::map<Sid, Sid> ALIGN_VALS_TO_CONVERT;
static Sid positionStyleFromAlign(Sid align);
static void setTextLineTextPositionFromAlign(TextLineBase* tl);
static void setMusicSymbolSize470(MStyle& style);

private:
static void replaceStaffTextWithPlayTechniqueAnnotation(MasterScore* score);
Expand Down
3 changes: 2 additions & 1 deletion src/engraving/rw/read400/tread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -573,8 +573,9 @@ void TRead::read(Dynamic* d, XmlReader& e, ReadContext& ctx)
d->setVelChangeSpeed(TConv::fromXml(e.readAsciiText(), DynamicSpeed::NORMAL));
} else if (tag == "size" && mscVersion < 400) {
e.skipCurrentElement();
} else if (tag == "dynamicsSize") {
d->setSymbolScale(e.readDouble());
} else if (readProperty(d, tag, e, ctx, Pid::AVOID_BARLINES)) {
} else if (readProperty(d, tag, e, ctx, Pid::DYNAMICS_SIZE)) {
} else if (readProperty(d, tag, e, ctx, Pid::CENTER_ON_NOTEHEAD)) {
} else if (!readProperties(static_cast<TextBase*>(d), e, ctx)) {
e.unknown();
Expand Down
3 changes: 2 additions & 1 deletion src/engraving/rw/read410/tread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -778,8 +778,9 @@ void TRead::read(Dynamic* d, XmlReader& e, ReadContext& ctx)
d->setVelChangeSpeed(TConv::fromXml(e.readAsciiText(), DynamicSpeed::NORMAL));
} else if (tag == "play") {
d->setPlayDynamic(e.readBool());
} else if (tag == "dynamicsSize") {
d->setSymbolScale(e.readDouble());
} else if (readProperty(d, tag, e, ctx, Pid::AVOID_BARLINES)) {
} else if (readProperty(d, tag, e, ctx, Pid::DYNAMICS_SIZE)) {
} else if (readProperty(d, tag, e, ctx, Pid::CENTER_ON_NOTEHEAD)) {
} else if (readProperty(d, tag, e, ctx, Pid::ANCHOR_TO_END_OF_PREVIOUS)) {
} else if (!readProperties(static_cast<TextBase*>(d), e, ctx)) {
Expand Down
4 changes: 3 additions & 1 deletion src/engraving/rw/read460/tread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -774,8 +774,9 @@ void TRead::read(Dynamic* d, XmlReader& e, ReadContext& ctx)
d->setVelChangeSpeed(TConv::fromXml(e.readAsciiText(), DynamicSpeed::NORMAL));
} else if (tag == "play") {
d->setPlayDynamic(e.readBool());
} else if (ctx.mscVersion() < 470 && tag == "dynamicsSize") {
d->setSymbolScale(e.readDouble());
} else if (readProperty(d, tag, e, ctx, Pid::AVOID_BARLINES)) {
} else if (readProperty(d, tag, e, ctx, Pid::DYNAMICS_SIZE)) {
} else if (readProperty(d, tag, e, ctx, Pid::CENTER_ON_NOTEHEAD)) {
} else if (readProperty(d, tag, e, ctx, Pid::ANCHOR_TO_END_OF_PREVIOUS)) {
} else if (!readProperties(static_cast<TextBase*>(d), e, ctx)) {
Expand Down Expand Up @@ -4469,6 +4470,7 @@ bool TRead::readProperties(TextBase* t, XmlReader& e, ReadContext& ctx)
} else if (readProperty(t, tag, e, ctx, Pid::DIRECTION)) {
} else if (readProperty(t, tag, e, ctx, Pid::CENTER_BETWEEN_STAVES)) {
} else if (readProperty(t, tag, e, ctx, Pid::MUSIC_SYMBOL_SIZE)) {
} else if (readProperty(t, tag, e, ctx, Pid::MUSICAL_SYMBOLS_SCALE)) {
} else if (!readItemProperties(t, e, ctx)) {
return false;
}
Expand Down
4 changes: 0 additions & 4 deletions src/engraving/rw/write/twrite.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1243,7 +1243,6 @@ void TWrite::write(const Dynamic* item, XmlWriter& xml, WriteContext& ctx)
writeProperty(item, xml, Pid::DYNAMIC_TYPE);
writeProperty(item, xml, Pid::VELOCITY);
writeProperty(item, xml, Pid::AVOID_BARLINES);
writeProperty(item, xml, Pid::DYNAMICS_SIZE);
writeProperty(item, xml, Pid::CENTER_ON_NOTEHEAD);
writeProperty(item, xml, Pid::PLAY);
writeProperty(item, xml, Pid::ANCHOR_TO_END_OF_PREVIOUS);
Expand Down Expand Up @@ -1283,9 +1282,6 @@ void TWrite::writeProperties(const TextBase* item, XmlWriter& xml, WriteContext&
writeProperty(item, xml, spp.pid);
}
}
if (item->hasSymbolSize()) {
writeProperty(item, xml, Pid::MUSIC_SYMBOL_SIZE);
}
for (const auto& spp : *textStyle(item->textStyleType())) {
if (item->isStyled(spp.pid)
|| (spp.pid == Pid::FONT_SIZE && item->getProperty(spp.pid).toDouble() == TextBase::UNDEFINED_FONT_SIZE)
Expand Down
3 changes: 3 additions & 0 deletions src/engraving/style/style.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -628,6 +628,9 @@ void MStyle::read(XmlReader& e, compat::ReadChordListHook* readChordListHook, in
if (mscVersion < 470) {
set(Sid::dividerLeftAlignToSystemBarline, false);
set(Sid::dividerRightAlignToSystemBarline, false);

// Musical symbol size
compat::CompatUtils::setMusicSymbolSize470(*this);
}

if (mscVersion < 460) {
Expand Down
Loading
Loading