diff --git a/src/braille/tests/data/testArticulations_Example_22.1_MBC2015_ref.brf b/src/braille/tests/data/testArticulations_Example_22.1_MBC2015_ref.brf index 5f01f46689799..3b62a72411102 100644 --- a/src/braille/tests/data/testArticulations_Example_22.1_MBC2015_ref.brf +++ b/src/braille/tests/data/testArticulations_Example_22.1_MBC2015_ref.brf @@ -5,4 +5,4 @@ composer ,composer #a ,piano a >/l#d4 .8"?8.8?8;8?_8? -b "8"?,8?>k.8.?#0-vk.8.?#0-vspatium(this) : style().spatium(); } +double EngravingItem::defaultSpatium() const +{ + return style().defaultSpatium(); +} + bool EngravingItem::isInteractionAvailable() const { if (!getProperty(Pid::VISIBLE).toBool() && (score()->printing() || !score()->isShowInvisible())) { @@ -293,7 +298,7 @@ PlacementV EngravingItem::placement() const double EngravingItem::magS() const { - return mag() * (style().spatium() / SPATIUM20); + return mag() * (style().spatium() / defaultSpatium()); } //--------------------------------------------------------- diff --git a/src/engraving/dom/engravingitem.h b/src/engraving/dom/engravingitem.h index d573c4565f65a..b00f164f18b77 100644 --- a/src/engraving/dom/engravingitem.h +++ b/src/engraving/dom/engravingitem.h @@ -189,6 +189,7 @@ class EngravingItem : public EngravingObject virtual bool isEngravingItem() const override { return true; } double spatium() const; + double defaultSpatium() const; inline void setFlag(ElementFlag f, bool v) { diff --git a/src/engraving/dom/harmony.cpp b/src/engraving/dom/harmony.cpp index f51409724d8b7..ac3d670091ec2 100644 --- a/src/engraving/dom/harmony.cpp +++ b/src/engraving/dom/harmony.cpp @@ -1200,12 +1200,12 @@ void TextSegment::setFont(const muse::draw::Font& f) const Char& c2 = m_text.at(i + 1); ++i; char32_t v = Char::surrogateToUcs4(c, c2); - if (!fm.inFontUcs4(v)) { + if (!fm.inFont(v)) { fail = true; break; } } else { - if (!fm.inFont(c)) { + if (!fm.inFont(c.unicode())) { fail = true; break; } diff --git a/src/engraving/dom/indicatoricon.cpp b/src/engraving/dom/indicatoricon.cpp index a68d3b7fc286f..f30033aa12173 100644 --- a/src/engraving/dom/indicatoricon.cpp +++ b/src/engraving/dom/indicatoricon.cpp @@ -37,7 +37,7 @@ Font IndicatorIcon::font() const { Font font(configuration()->iconsFontFamily(), Font::Type::Icon); static constexpr double STANDARD_POINT_SIZE = 12.0; - const double scaling = spatium() / SPATIUM20; + const double scaling = spatium() / defaultSpatium(); font.setPointSizeF(STANDARD_POINT_SIZE * scaling); return font; } diff --git a/src/engraving/dom/layoutbreak.cpp b/src/engraving/dom/layoutbreak.cpp index f8269e6d91d7f..a7421ec6e26b7 100644 --- a/src/engraving/dom/layoutbreak.cpp +++ b/src/engraving/dom/layoutbreak.cpp @@ -260,7 +260,7 @@ Font LayoutBreak::font() const { Font font(configuration()->iconsFontFamily(), Font::Type::Icon); static constexpr double STANDARD_POINT_SIZE = 12.0; - double scaling = spatium() / SPATIUM20; + double scaling = spatium() / defaultSpatium(); font.setPointSizeF(STANDARD_POINT_SIZE * scaling); return font; } diff --git a/src/engraving/dom/mscore.cpp b/src/engraving/dom/mscore.cpp index c159c5008dd2e..a10b3949d3767 100644 --- a/src/engraving/dom/mscore.cpp +++ b/src/engraving/dom/mscore.cpp @@ -60,8 +60,6 @@ bool MScore::noImages = false; bool MScore::pdfPrinting = false; bool MScore::svgPrinting = false; -double MScore::pixelRatio = 0.8; // DPI / logicalDPI - extern void initDrumset(); MsError MScore::_error { MsError::MS_NO_ERROR }; diff --git a/src/engraving/dom/mscore.h b/src/engraving/dom/mscore.h index c71f3b79b9571..10cf9ea982889 100644 --- a/src/engraving/dom/mscore.h +++ b/src/engraving/dom/mscore.h @@ -63,12 +63,15 @@ inline constexpr bool isDownVoice(voice_idx_t voiceIdx) static constexpr int MAX_HEADERS = 3; static constexpr int MAX_FOOTERS = 3; -static constexpr double INCH = 25.4; -static constexpr double PPI = 72.0; // printer points per inch -static constexpr double DPI_F = 5; -static constexpr double DPI = 72.0 * DPI_F; -static constexpr double SPATIUM20 = 5.0 * (DPI / 72.0); -static constexpr double DPMM = DPI / INCH; +// UNIVERSAL UNITS +static constexpr double INCH = 25.4; // millimitres per inch +static constexpr double PPI = 72.0; // typographical points per inch + +// INTERNAL DRAWING UNITS +// Given that it's ultimately arbitrary, we may as well set our internal units to +// something that makes them easier to read when debugging, e.g. 1/100 of millimitre. +static constexpr double DPI = 1200; +static constexpr double DPMM = DPI / INCH; // NOTE: the SMuFL default is actually 20pt. We use 10 for historical reasons // and back-compatibility, but this will be multiplied x2 during layout. @@ -220,7 +223,6 @@ class MScore static bool pdfPrinting; static bool svgPrinting; - static double pixelRatio; static double verticalPageGap; static double horizontalPageGapEven; diff --git a/src/engraving/dom/score.cpp b/src/engraving/dom/score.cpp index 2353db531c1ca..ad9cdc82e79b4 100644 --- a/src/engraving/dom/score.cpp +++ b/src/engraving/dom/score.cpp @@ -1382,7 +1382,7 @@ void Score::spatiumChanged(double oldValue, double newValue) for (Staff* staff : m_staves) { staff->spatiumChanged(oldValue, newValue); } - m_layoutOptions.noteHeadWidth = m_engravingFont->width(SymId::noteheadBlack, newValue / SPATIUM20); + m_layoutOptions.noteHeadWidth = m_engravingFont->width(SymId::noteheadBlack, newValue / style().defaultSpatium()); createPaddingTable(); } @@ -6008,7 +6008,7 @@ void Score::doLayoutRange(const Fraction& st, const Fraction& et) } m_engravingFont = engravingFonts()->fontByName(style().value(Sid::musicalSymbolFont).value().toStdString()); - m_layoutOptions.noteHeadWidth = m_engravingFont->width(SymId::noteheadBlack, style().spatium() / SPATIUM20); + m_layoutOptions.noteHeadWidth = m_engravingFont->width(SymId::noteheadBlack, style().spatium() / style().defaultSpatium()); if (this->cmdState().layoutFlags & LayoutFlag::REBUILD_MIDI_MAPPING) { if (this->isMaster()) { diff --git a/src/engraving/dom/scorefile.cpp b/src/engraving/dom/scorefile.cpp index 96b53b57c6be4..879fdd297c1c5 100644 --- a/src/engraving/dom/scorefile.cpp +++ b/src/engraving/dom/scorefile.cpp @@ -88,9 +88,6 @@ std::shared_ptr Score::createThumbnail() auto pixmap = imageProvider()->createPixmap(w, h, dpm, configuration()->thumbnailBackgroundColor()); - double pr = MScore::pixelRatio; - MScore::pixelRatio = 1.0; - auto painterProvider = imageProvider()->painterForImage(pixmap); Painter p(painterProvider, "thumbnail"); @@ -99,8 +96,6 @@ std::shared_ptr Score::createThumbnail() print(&p, 0); p.endDraw(); - MScore::pixelRatio = pr; - if (layoutMode() != mode) { setLayoutMode(mode); doLayout(); diff --git a/src/engraving/dom/stafftype.cpp b/src/engraving/dom/stafftype.cpp index 92a23bf1b69b3..d80e6520e03ea 100644 --- a/src/engraving/dom/stafftype.cpp +++ b/src/engraving/dom/stafftype.cpp @@ -441,7 +441,7 @@ void StaffType::setDurationMetrics() RectF bb(fm.tightBoundingRect(txt)); // raise symbols by a default margin and, if marks are above lines, by half the line distance // (converted from spatium units to raster units) - m_durationGridYOffset = (TAB_DEFAULT_DUR_YOFFS - (m_onLines ? 0.0 : lineDistance().val() * 0.5)) * SPATIUM20; + m_durationGridYOffset = (TAB_DEFAULT_DUR_YOFFS - (m_onLines ? 0.0 : lineDistance().val() * 0.5)) * defaultSpatium(); // this is the bottomest point of any duration sign m_durationYOffset = m_durationGridYOffset; // move symbols so that the lowest margin 'sits' on the base line: @@ -480,12 +480,12 @@ void StaffType::setFretMetrics() // Calculate position for dead fret marks - these must be centred separately based on their glyph RectF deadBb = fm.tightBoundingRect(m_fretFontInfo.xChar); - double lineThickness = style().styleS(Sid::staffLineWidth).val() * SPATIUM20 * 0.5; + double lineThickness = style().styleS(Sid::staffLineWidth).val() * defaultSpatium() * 0.5; m_deadFretYOffset = -deadBb.y() / 2.0 + lineThickness; // if on string, we are done; if between strings, raise by half line distance if (!m_onLines) { - double lineAdj = lineDistance().val() * SPATIUM20 * 0.5; + double lineAdj = lineDistance().val() * defaultSpatium() * 0.5; m_fretYOffset -= lineAdj; m_deadFretYOffset -= lineAdj; } @@ -522,6 +522,11 @@ void StaffType::setDurationFontName(const String& name) // durationBoxH / durationBoxY //--------------------------------------------------------- +double StaffType::defaultSpatium() const +{ + return StyleDef::styleValues[static_cast(Sid::spatium)].defaultValue().toDouble(); +} + double StaffType::durationBoxH() const { if (!m_genDurations && !m_stemless) { @@ -535,7 +540,37 @@ double StaffType::durationBoxY() const if (!m_genDurations && !m_stemless) { return 0.0; } - return m_durationBoxY + m_durationFontUserY * SPATIUM20; + return m_durationBoxY + m_durationFontUserY * defaultSpatium(); +} + +double StaffType::durationFontYOffset() const +{ + return m_durationYOffset + m_durationFontUserY * defaultSpatium(); +} + +double StaffType::fretBoxY() const +{ + return m_fretBoxY + m_fretFontUserY * defaultSpatium(); +} + +double StaffType::deadFretBoxY() const +{ + return m_deadFretBoxY + m_fretFontUserY * defaultSpatium(); +} + +double StaffType::fretMaskH() const +{ + return m_lineDistance.val() * defaultSpatium(); +} + +double StaffType::fretMaskY() const +{ + return (m_onLines ? -0.5 : -1.0) * m_lineDistance.val() * defaultSpatium(); +} + +double StaffType::fretFontYOffset() const +{ + return m_fretYOffset + m_fretFontUserY * defaultSpatium(); } //--------------------------------------------------------- @@ -669,7 +704,7 @@ void StaffType::drawInputStringMarks(Painter* p, int string, const Color& select static constexpr double LEDGER_LINE_LEFTX = 0.25; // in % of cursor rectangle width static constexpr double LEDGER_LINE_RIGHTX = 0.75; // in % of cursor rectangle width - double spatium = SPATIUM20; + double spatium = defaultSpatium(); double lineDist = m_lineDistance.val() * spatium; bool hasFret = false; String text = tabBassStringPrefix(string, &hasFret); @@ -691,7 +726,7 @@ void StaffType::drawInputStringMarks(Painter* p, int string, const Color& select // draw the text, if any if (!text.isEmpty()) { Font f = fretFont(); - f.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); + f.setPointSizeF(f.pointSizeF()); p->setFont(f); p->drawText(PointF(rect.left(), rect.top() + lineDist), text); } diff --git a/src/engraving/dom/stafftype.h b/src/engraving/dom/stafftype.h index 672d3a1c17a3f..89ab7810992a3 100644 --- a/src/engraving/dom/stafftype.h +++ b/src/engraving/dom/stafftype.h @@ -258,22 +258,22 @@ class StaffType const String& durationFontName() const { return m_durationFonts[m_durationFontIdx].displayName; } double durationFontSize() const { return m_durationFontSize; } double durationFontUserY() const { return m_durationFontUserY; } - double durationFontYOffset() const { return m_durationYOffset + m_durationFontUserY * SPATIUM20; } + double durationFontYOffset() const; double durationGridYOffset() const { return m_durationGridYOffset; } double fretBoxH() const { return m_fretBoxH; } double deadFretBoxH() const { return m_deadFretBoxH; } - double fretBoxY() const { return m_fretBoxY + m_fretFontUserY * SPATIUM20; } - double deadFretBoxY() const { return m_deadFretBoxY + m_fretFontUserY * SPATIUM20; } + double fretBoxY() const; + double deadFretBoxY() const; // 2 methods to return the size of a box masking lines under a fret mark - double fretMaskH() const { return m_lineDistance.val() * SPATIUM20; } - double fretMaskY() const { return (m_onLines ? -0.5 : -1.0) * m_lineDistance.val() * SPATIUM20; } + double fretMaskH() const; + double fretMaskY() const; const muse::draw::Font& fretFont() const { return m_fretFont; } const String fretFontName() const { return m_fretFontInfo.displayName; } double fretFontSize() const { return m_fretFontSize; } double fretFontUserY() const { return m_fretFontUserY; } - double fretFontYOffset() const { return m_fretYOffset + m_fretFontUserY * SPATIUM20; } + double fretFontYOffset() const; bool genDurations() const { return m_genDurations; } bool linesThrough() const { return m_linesThrough; } TablatureMinimStyle minimStyle() const { return m_minimStyle; } @@ -336,6 +336,7 @@ class StaffType Score* m_score = nullptr; + double defaultSpatium() const; void setDurationMetrics(); void setFretMetrics(); diff --git a/src/engraving/dom/textbase.cpp b/src/engraving/dom/textbase.cpp index 12cf47d1fdd2b..49ba81301e977 100644 --- a/src/engraving/dom/textbase.cpp +++ b/src/engraving/dom/textbase.cpp @@ -24,7 +24,6 @@ #include #include "draw/fontmetrics.h" -#include "draw/painter.h" #include "iengravingfont.h" @@ -851,37 +850,6 @@ bool TextFragment::operator ==(const TextFragment& f) const return format == f.format && text == f.text; } -//--------------------------------------------------------- -// draw -//--------------------------------------------------------- - -void TextFragment::draw(Painter* p, const TextBase* t) const -{ - Font f(font(t)); - f.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); -#ifndef Q_OS_MACOS - TextBase::drawTextWorkaround(p, f, pos, text); -#else - p->setFont(f); - p->drawText(pos, text); -#endif -} - -//--------------------------------------------------------- -// drawTextWorkaround -//--------------------------------------------------------- - -void TextBase::drawTextWorkaround(Painter* p, Font& f, const PointF& pos, const String& text) -{ - double mm = p->worldTransform().m11(); - if (!(MScore::pdfPrinting) && (mm < 1.0) && f.bold() && !(f.underline() || f.strike())) { - p->drawTextWorkaround(f, pos, text); - } else { - p->setFont(f); - p->drawText(pos, text); - } -} - //--------------------------------------------------------- // font //--------------------------------------------------------- @@ -894,9 +862,9 @@ Font TextFragment::font(const TextBase* t) const double spatiumScaling = 0.0; if (t->isInstrumentName()) { - spatiumScaling = toInstrumentName(t)->largestStaffSpatium() / SPATIUM20; + spatiumScaling = toInstrumentName(t)->largestStaffSpatium() / t->defaultSpatium(); } else { - spatiumScaling = t->spatium() / SPATIUM20; + spatiumScaling = t->spatium() / t->defaultSpatium(); } if (t->sizeIsSpatiumDependent()) { @@ -969,12 +937,12 @@ Font TextFragment::font(const TextBase* t) const const Char& c2 = text.at(i + 1); ++i; char32_t v = Char::surrogateToUcs4(c, c2); - if (!fm.inFontUcs4(v)) { + if (!fm.inFont(v)) { fail = true; break; } } else { - if (!fm.inFont(c)) { + if (!fm.inFont(c.unicode())) { fail = true; break; } @@ -1003,20 +971,8 @@ Font TextFragment::font(const TextBase* t) const return font; } -//--------------------------------------------------------- -// draw //--------------------------------------------------------- -void TextBlock::draw(Painter* p, const TextBase* t) const -{ - p->translate(0.0, m_y); - for (const TextFragment& f : m_fragments) { - f.draw(p, t); - } - p->translate(0.0, -m_y); -} - -//--------------------------------------------------------- // fragmentsWithoutEmpty //--------------------------------------------------------- @@ -2580,7 +2536,7 @@ Font TextBase::font() const { double m = size(); if (sizeIsSpatiumDependent()) { - m *= spatium() / SPATIUM20; + m *= spatium() / defaultSpatium(); } Font f(family(), Font::Type::Unknown); f.setPointSizeF(m); diff --git a/src/engraving/dom/textbase.h b/src/engraving/dom/textbase.h index 14cc277ea9f3f..44c404e4965ac 100644 --- a/src/engraving/dom/textbase.h +++ b/src/engraving/dom/textbase.h @@ -235,7 +235,6 @@ class TextFragment bool operator ==(const TextFragment& f) const; TextFragment split(int column); - void draw(muse::draw::Painter*, const TextBase*) const; muse::draw::Font font(const TextBase*) const; int columns() const; void changeFormat(FormatId id, const FormatValue& data); @@ -253,7 +252,7 @@ class TextBlock bool operator ==(const TextBlock& x) const { return m_fragments == x.m_fragments; } bool operator !=(const TextBlock& x) const { return m_fragments != x.m_fragments; } - void draw(muse::draw::Painter*, const TextBase*) const; + const std::list& fragments() const { return m_fragments; } std::list& fragments() { return m_fragments; } std::list fragmentsWithoutEmpty(); @@ -313,8 +312,6 @@ class TextBase : public EngravingItem AlignH position() const { return m_position; } void setPosition(AlignH val) { m_position = val; } - static void drawTextWorkaround(muse::draw::Painter* p, muse::draw::Font& f, const PointF& pos, const String& text); - static String plainToXmlText(const String& s) { return s.toXmlEscaped(); } void setPlainText(const String& t) { setXmlText(plainToXmlText(t)); } virtual void setXmlText(const String&); diff --git a/src/engraving/engravingmodule.cpp b/src/engraving/engravingmodule.cpp index 8288061f5dcc6..946bebab25506 100644 --- a/src/engraving/engravingmodule.cpp +++ b/src/engraving/engravingmodule.cpp @@ -297,7 +297,8 @@ void EngravingModule::onInit(const IApplication::RunMode& mode) gpaletteScore->style().set(Sid::musicalTextFont, String(u"Leland Text")); IEngravingFontPtr scoreFont = m_engravingfonts->fontByName("Leland"); gpaletteScore->setEngravingFont(scoreFont); - gpaletteScore->setNoteHeadWidth(scoreFont->width(SymId::noteheadBlack, gpaletteScore->style().spatium()) / SPATIUM20); + gpaletteScore->setNoteHeadWidth(scoreFont->width(SymId::noteheadBlack, + gpaletteScore->style().spatium()) / gpaletteScore->style().defaultSpatium()); #endif } diff --git a/src/engraving/internal/engravingfont.cpp b/src/engraving/internal/engravingfont.cpp index 4694d7851ecbc..72908895593f6 100644 --- a/src/engraving/internal/engravingfont.cpp +++ b/src/engraving/internal/engravingfont.cpp @@ -21,6 +21,7 @@ */ #include "engravingfont.h" +#include "engraving/dom/mscore.h" #include "serialization/json.h" #include "io/file.h" #include "io/fileinfo.h" @@ -28,6 +29,7 @@ #include "types/symnames.h" #include "dom/mscore.h" +#include "../style/styledef.h" #include "smufl.h" @@ -89,6 +91,15 @@ double EngravingFont::textEnclosureThickness() return m_textEnclosureThickness; } +double DEFAULT_SMUFL_POINT_SIZE() +{ + const double DEFAULT_SPATIUM = StyleDef::styleValues[static_cast(Sid::spatium)].defaultValue().toDouble(); + const double DEFAULT_SPATIUM_IN_POINT_UNITS = DEFAULT_SPATIUM / mu::engraving::DPI * mu::engraving::PPI; + const double DEFAULT_SMUFL_POINT_SIZE = 4 * DEFAULT_SPATIUM_IN_POINT_UNITS; // By Smufl spec the spatium is 1/4 of the em + + return DEFAULT_SMUFL_POINT_SIZE; +} + // ============================================= // Load // ============================================= @@ -110,6 +121,8 @@ void EngravingFont::ensureLoad() m_font.setNoFontMerging(true); m_font.setHinting(Font::Hinting::PreferVerticalHinting); + m_font.setPointSizeF(DEFAULT_SMUFL_POINT_SIZE()); + for (size_t id = 0; id < m_symbols.size(); ++id) { Smufl::Code code = Smufl::code(static_cast(id)); if (!code.isValid()) { @@ -744,8 +757,8 @@ void EngravingFont::loadGlyphsWithAnchors(const JsonObject& glyphsWithAnchors) const JsonArray arr = anchors.value(anchorId).toArray(); const double x = arr.at(0).toDouble(); const double y = arr.at(1).toDouble(); - - sym.smuflAnchors[search->second] = PointF(x, -y) * SPATIUM20; + const double defaultSpatium = StyleDef::styleValues[static_cast(Sid::spatium)].defaultValue().toDouble(); + sym.smuflAnchors[search->second] = PointF(x, -y) * defaultSpatium; } } } @@ -842,15 +855,15 @@ void EngravingFont::loadEngravingDefaults(const JsonObject& engravingDefaultsObj void EngravingFont::computeMetrics(EngravingFont::Sym& sym, const Smufl::Code& code) { - if (fontProvider()->inFontUcs4(m_font, code.smuflCode)) { + if (fontProvider()->inFont(m_font, code.smuflCode)) { sym.code = code.smuflCode; - } else if (fontProvider()->inFontUcs4(m_font, code.musicSymBlockCode)) { + } else if (fontProvider()->inFont(m_font, code.musicSymBlockCode)) { sym.code = code.musicSymBlockCode; } if (sym.code > 0) { - sym.bbox = fontProvider()->symBBox(m_font, sym.code, DPI_F); - sym.advance = fontProvider()->symAdvance(m_font, sym.code, DPI_F); + sym.bbox = fontProvider()->boundingRect(m_font, sym.code); + sym.advance = fontProvider()->horizontalAdvance(m_font, sym.code); } } @@ -1107,8 +1120,7 @@ void EngravingFont::draw(SymId id, Painter* painter, const SizeF& mag, const Poi } painter->save(); - double size = 20.0 * MScore::pixelRatio; - m_font.setPointSizeF(size); + m_font.setPointSizeF(DEFAULT_SMUFL_POINT_SIZE()); painter->scale(mag.width(), mag.height()); painter->setFont(m_font); if (angle != 0) { diff --git a/src/engraving/rendering/editmode/editmoderenderer.cpp b/src/engraving/rendering/editmode/editmoderenderer.cpp index 52cd6d4b361f9..29f11390d6f2d 100644 --- a/src/engraving/rendering/editmode/editmoderenderer.cpp +++ b/src/engraving/rendering/editmode/editmoderenderer.cpp @@ -240,7 +240,7 @@ void EditModeRenderer::drawTextBase(const TextBase* item, muse::draw::Painter* p TextBase::sort(r1, c1, r2, c2); size_t row = 0; for (const TextBlock& t : ldata->blocks) { - t.draw(painter, item); + draw(t, item, painter); if (row >= r1 && row <= r2) { RectF br; if (row == r1 && r1 == r2) { @@ -278,3 +278,20 @@ void EditModeRenderer::drawTextBase(const TextBase* item, muse::draw::Painter* p painter->drawRect(r); pen = Pen(item->configuration()->defaultColor(), 0.0); } + +void EditModeRenderer::draw(const TextBlock& textBlock, const TextBase* item, muse::draw::Painter* painter) +{ + painter->translate(0.0, textBlock.y()); + for (const TextFragment& f : textBlock.fragments()) { + draw(f, item, painter); + } + painter->translate(0.0, -textBlock.y()); +} + +void EditModeRenderer::draw(const TextFragment& textFragment, const TextBase* item, muse::draw::Painter* painter) +{ + Font f(textFragment.font(item)); + f.setPointSizeF(f.pointSizeF()); + painter->setFont(f); + painter->drawText(textFragment.pos, textFragment.text); +} diff --git a/src/engraving/rendering/editmode/editmoderenderer.h b/src/engraving/rendering/editmode/editmoderenderer.h index a3a7a5efc5003..b7c93ec39c065 100644 --- a/src/engraving/rendering/editmode/editmoderenderer.h +++ b/src/engraving/rendering/editmode/editmoderenderer.h @@ -38,6 +38,8 @@ class BarLine; class Dynamic; class SlurTieSegment; class TextBase; +class TextBlock; +class TextFragment; } namespace mu::engraving::rendering::editmode { @@ -59,7 +61,10 @@ class EditModeRenderer : public IEditModeRenderer const PaintOptions& opt); static void drawSlurTieSegment(const SlurTieSegment* item, muse::draw::Painter* painter, const EditData& ed, double currentViewScaling, const PaintOptions& opt); + static void drawTextBase(const TextBase* item, muse::draw::Painter* painter, const EditData& ed, double currentViewScaling, const PaintOptions& opt); + static void draw(const TextBlock& textBlock, const TextBase* item, muse::draw::Painter* painter); + static void draw(const TextFragment& textFragment, const TextBase* item, muse::draw::Painter* painter); }; } diff --git a/src/engraving/rendering/score/accidentalslayout.cpp b/src/engraving/rendering/score/accidentalslayout.cpp index ae8de3a033ba0..4f51636e00d81 100644 --- a/src/engraving/rendering/score/accidentalslayout.cpp +++ b/src/engraving/rendering/score/accidentalslayout.cpp @@ -837,7 +837,10 @@ double AccidentalsLayout::minAccidentalToAccidentalGroupDistance(Accidental* acc double vertPadding = verticalPadding(acc, acc2, ctx); double horPadding = horizontalPadding(acc, acc2, ctx); - if (accShape.intersects(groupElement.adjusted(-horPadding, -vertPadding, horPadding, vertPadding))) { + // If the tolerance for detecting intersections is the same as the padding, + // we may randomly detect wrong intersections just because of rounding errors + double horPaddingWithTolerance = 0.999 * horPadding; + if (accShape.intersects(groupElement.adjusted(-horPaddingWithTolerance, -vertPadding, horPaddingWithTolerance, vertPadding))) { collisionFound = true; } else { continue; @@ -1055,6 +1058,17 @@ void AccidentalsLayout::collectVerticalSets( void AccidentalsLayout::alignVerticalSets(AccidentalGroups& vertSets, AccidentalsLayoutContext& ctx) { + AccidentalGroups accidentalColumns; + for (std::vector& group : ctx.accidentalSubChords) { + for (Accidental* acc : group) { + size_t column = acc->ldata()->column; + while (accidentalColumns.size() <= column) { + accidentalColumns.push_back(std::vector()); + } + accidentalColumns[column].push_back(acc); + } + } + for (std::vector& vertSet : vertSets) { // Align the set double x = DBL_MAX; @@ -1068,14 +1082,16 @@ void AccidentalsLayout::alignVerticalSets(AccidentalGroups& vertSets, Accidental } // Re-check the outer ones for collisions - int curColumn = vertSet.front()->ldata()->column.value(); + size_t curColumn = vertSet.front()->ldata()->column.value(); Shape accidentalGroupShape; - for (std::vector& group : ctx.accidentalSubChords) { - for (Accidental* acc : group) { + for (size_t column = 0; column < accidentalColumns.size(); ++column) { + if (column < curColumn) { + continue; + } + for (Accidental* acc : accidentalColumns[column]) { double curXPos = xPosRelativeToSegment(acc); Shape accShape = acc->shape().translate(PointF(curXPos, acc->note()->y())); - int accColumn = acc->ldata()->column; - if (accColumn >= curColumn && !muse::contains(vertSet, acc)) { + if (!muse::contains(vertSet, acc)) { double minDistToAccidGroup = minAccidentalToAccidentalGroupDistance(acc, accShape, accidentalGroupShape, ctx); accShape.translateX(-minDistToAccidGroup); setXposRelativeToSegment(acc, curXPos - minDistToAccidGroup); diff --git a/src/engraving/rendering/score/layoutcontext.h b/src/engraving/rendering/score/layoutcontext.h index ab41db2d2271c..c5fd6e7ef4cf1 100644 --- a/src/engraving/rendering/score/layoutcontext.h +++ b/src/engraving/rendering/score/layoutcontext.h @@ -123,8 +123,9 @@ class LayoutConfiguration int styleI(Sid idx) const { return style().styleI(idx); } double spatium() const { return styleD(Sid::spatium); } + double defaultSpatium() const { return style().defaultSpatium(); } double point(const Spatium sp) const { return sp.val() * spatium(); } - double magS(double mag) const { return mag * (spatium() / SPATIUM20); } + double magS(double mag) const { return mag * (spatium() / defaultSpatium()); } double loWidth() const { return styleD(Sid::pageWidth) * DPI; } double loHeight() const { return styleD(Sid::pageHeight) * DPI; } diff --git a/src/engraving/rendering/score/pagelayout.cpp b/src/engraving/rendering/score/pagelayout.cpp index 8704c4c0858d2..63a234ee6ae40 100644 --- a/src/engraving/rendering/score/pagelayout.cpp +++ b/src/engraving/rendering/score/pagelayout.cpp @@ -641,12 +641,12 @@ void PageLayout::checkDivider(LayoutContext& ctx, bool left, System* s, double y TLayout::layoutSystemDivider(divider, divider->mutldata(), ctx); dividerLdata->setPosY(divider->height() * .5 + yOffset); if (left) { - dividerLdata->moveY(ctx.conf().styleD(Sid::dividerLeftY) * SPATIUM20); - dividerLdata->setPosX(ctx.conf().styleD(Sid::dividerLeftX) * SPATIUM20); + dividerLdata->moveY(ctx.conf().styleD(Sid::dividerLeftY) * ctx.conf().defaultSpatium()); + dividerLdata->setPosX(ctx.conf().styleD(Sid::dividerLeftX) * ctx.conf().defaultSpatium()); } else { - dividerLdata->moveY(ctx.conf().styleD(Sid::dividerRightY) * SPATIUM20); + dividerLdata->moveY(ctx.conf().styleD(Sid::dividerRightY) * ctx.conf().defaultSpatium()); dividerLdata->setPosX(ctx.conf().styleD(Sid::pagePrintableWidth) * DPI - divider->width()); - dividerLdata->moveX(ctx.conf().styleD(Sid::dividerRightX) * SPATIUM20); + dividerLdata->moveX(ctx.conf().styleD(Sid::dividerRightX) * ctx.conf().defaultSpatium()); } } else if (divider) { if (divider->generated()) { diff --git a/src/engraving/rendering/score/paint.cpp b/src/engraving/rendering/score/paint.cpp index b92814ea7513f..ea23e55b31c5e 100644 --- a/src/engraving/rendering/score/paint.cpp +++ b/src/engraving/rendering/score/paint.cpp @@ -67,7 +67,6 @@ void Paint::paintScore(Painter* painter, Score* score, const IScoreRenderer::Sco } // Setup score draw system - mu::engraving::MScore::pixelRatio = mu::engraving::DPI / DEVICE_DPI; mu::engraving::MScore::pdfPrinting = opt.isPrinting; const bool wasPrinting = score->printing(); diff --git a/src/engraving/rendering/score/paintdebugger.cpp b/src/engraving/rendering/score/paintdebugger.cpp index d068f71344860..5f1c886f355e1 100644 --- a/src/engraving/rendering/score/paintdebugger.cpp +++ b/src/engraving/rendering/score/paintdebugger.cpp @@ -186,11 +186,6 @@ void PaintDebugger::drawText(const RectF& rect, int flags, const String& text) m_real->drawText(rect, flags, text); } -void PaintDebugger::drawTextWorkaround(const Font& f, const PointF& pos, const String& text) -{ - m_real->drawTextWorkaround(f, pos, text); -} - void PaintDebugger::drawSymbol(const PointF& point, char32_t ucs4Code) { m_real->drawSymbol(point, ucs4Code); @@ -238,3 +233,8 @@ void PaintDebugger::setClipping(bool enable) { m_real->setClipping(enable); } + +double mu::engraving::rendering::score::PaintDebugger::deviceLogicalDpi() const +{ + return m_real->deviceLogicalDpi(); +} diff --git a/src/engraving/rendering/score/paintdebugger.h b/src/engraving/rendering/score/paintdebugger.h index 9b2e16975dcd4..d56fc8095e189 100644 --- a/src/engraving/rendering/score/paintdebugger.h +++ b/src/engraving/rendering/score/paintdebugger.h @@ -60,6 +60,8 @@ class PaintDebugger : public muse::draw::IPaintProvider void save() override; void restore() override; + double deviceLogicalDpi() const override; + void setTransform(const muse::draw::Transform& transform) override; const muse::draw::Transform& transform() const override; @@ -68,7 +70,6 @@ class PaintDebugger : public muse::draw::IPaintProvider void drawText(const muse::PointF& point, const muse::String& text) override; void drawText(const muse::RectF& rect, int flags, const muse::String& text) override; - void drawTextWorkaround(const muse::draw::Font& f, const muse::PointF& pos, const muse::String& text) override; void drawSymbol(const muse::PointF& point, char32_t ucs4Code) override; diff --git a/src/engraving/rendering/score/tdraw.cpp b/src/engraving/rendering/score/tdraw.cpp index b7aea4d38acda..825d53844e71b 100644 --- a/src/engraving/rendering/score/tdraw.cpp +++ b/src/engraving/rendering/score/tdraw.cpp @@ -841,13 +841,13 @@ void TDraw::draw(const BarLine* item, Painter* painter, const PaintOptions& opt) painter->setPen(item->configuration()->invisibleColor()); Font f(u"Edwin", Font::Type::Text); - f.setPointSizeF(12 * item->spatium() / SPATIUM20); + f.setPointSizeF(12 * item->spatium() / item->defaultSpatium()); f.setBold(true); Char ch = m->ticks() > m->timesig() ? u'+' : u'-'; RectF r = FontMetrics(f).boundingRect(ch); Font scaledFont(f); - scaledFont.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); + scaledFont.setPointSizeF(f.pointSizeF()); painter->setFont(scaledFont); painter->drawText(-r.width(), 0.0, ch); @@ -904,7 +904,7 @@ void TDraw::draw(const Bend* item, Painter* painter, const PaintOptions& opt) painter->setPen(pen); painter->setBrush(Brush(item->curColor(opt))); - Font f = item->font(spatium * MScore::pixelRatio); + Font f = item->font(spatium); painter->setFont(f); double x = data->noteWidth + spatium * .2; @@ -999,7 +999,7 @@ void TDraw::draw(const Box* item, Painter* painter, const PaintOptions& opt) const bool showFrame = showHighlightedFrame || (item->score() ? item->score()->showFrames() : false); if (showFrame) { - double lineWidth = SPATIUM20 * .10; + double lineWidth = item->defaultSpatium() * .10; Pen pen; pen.setWidthF(lineWidth); pen.setJoinStyle(PenJoinStyle::RoundJoin); @@ -1052,11 +1052,12 @@ void TDraw::draw(const Bracket* item, Painter* painter, const PaintOptions& opt) painter->drawPath(ldata->path); } else { double h = ldata->bracketHeight; - double mag = h / (100 * item->magS()); + double glyphHeight = item->symHeight(ldata->braceSymbol); + double mag = h / glyphHeight; painter->setPen(item->curColor(opt)); painter->save(); painter->scale(item->magx(), mag); - item->drawSymbol(ldata->braceSymbol, painter, PointF(0, 100 * item->magS())); + item->drawSymbol(ldata->braceSymbol, painter, PointF(0.0, glyphHeight)); painter->restore(); } } @@ -1216,8 +1217,8 @@ void TDraw::draw(const FiguredBassItem* item, Painter* painter, const PaintOptio Font f(FiguredBass::FBFonts().at(font).family, Font::Type::Tablature); // (use the same font selection as used in layout() above) - double m = item->style().styleD(Sid::figuredBassFontSize) * item->spatium() / SPATIUM20; - f.setPointSizeF(m * MScore::pixelRatio); + double m = item->style().styleD(Sid::figuredBassFontSize) * item->spatium() / item->defaultSpatium(); + f.setPointSizeF(m); painter->setFont(f); painter->setBrush(BrushStyle::NoBrush); @@ -1421,7 +1422,7 @@ void TDraw::draw(const FretDiagram* item, Painter* painter, const PaintOptions& // Draw fret offset number if (item->fretOffset() > 0) { Font scaledFont(item->fretNumFont()); - scaledFont.setPointSizeF(scaledFont.pointSizeF() * (item->spatium() / SPATIUM20) * MScore::pixelRatio); + scaledFont.setPointSizeF(scaledFont.pointSizeF() * (item->spatium() / item->defaultSpatium())); painter->setFont(scaledFont); String text = ldata->fretText; @@ -1454,7 +1455,7 @@ void TDraw::draw(const FretDiagram* item, Painter* painter, const PaintOptions& painter->save(); Font scaledFont(item->fingeringFont()); - scaledFont.setPointSizeF(scaledFont.pointSizeF() * (item->spatium() / SPATIUM20) * MScore::pixelRatio); + scaledFont.setPointSizeF(scaledFont.pointSizeF() * (item->spatium() / item->defaultSpatium())); painter->setFont(scaledFont); if (item->orientation() == Orientation::HORIZONTAL) { painter->translate(-translation); @@ -1547,7 +1548,7 @@ void TDraw::draw(const GlissandoSegment* item, Painter* painter, const PaintOpti if (glissando->showText()) { Font f(glissando->fontFace(), Font::Type::Unknown); - f.setPointSizeF(glissando->fontSize() * _spatium / SPATIUM20); + f.setPointSizeF(glissando->fontSize() * _spatium / item->defaultSpatium()); f.setBold(glissando->fontStyle() & FontStyle::Bold); f.setItalic(glissando->fontStyle() & FontStyle::Italic); f.setUnderline(glissando->fontStyle() & FontStyle::Underline); @@ -1562,7 +1563,7 @@ void TDraw::draw(const GlissandoSegment* item, Painter* painter, const PaintOpti yOffset += _spatium * (glissando->glissandoType() == GlissandoType::WAVY ? 0.4 : 0.1); Font scaledFont(f); - scaledFont.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); + scaledFont.setPointSizeF(f.pointSizeF()); painter->setFont(scaledFont); double x = (l - r.width()) * 0.5; @@ -1645,10 +1646,27 @@ void TDraw::drawTextBase(const TextBase* item, Painter* painter, const PaintOpti painter->setBrush(BrushStyle::NoBrush); painter->setPen(item->textColor(opt)); for (const TextBlock& t : ldata->blocks) { - t.draw(painter, item); + draw(t, item, painter); } } +void TDraw::draw(const TextBlock& textBlock, const TextBase* item, Painter* painter) +{ + painter->translate(0.0, textBlock.y()); + for (const TextFragment& f : textBlock.fragments()) { + draw(f, item, painter); + } + painter->translate(0.0, -textBlock.y()); +} + +void TDraw::draw(const TextFragment& textFragment, const TextBase* item, muse::draw::Painter* painter) +{ + Font f(textFragment.font(item)); + f.setPointSizeF(f.pointSizeF()); + painter->setFont(f); + painter->drawText(textFragment.pos, textFragment.text); +} + void TDraw::drawTextLineBaseSegment(const TextLineBaseSegment* item, Painter* painter, const PaintOptions& opt) { const TextLineBase* tl = item->textLineBase(); @@ -1842,13 +1860,9 @@ void TDraw::draw(const Harmony* item, Painter* painter, const PaintOptions& opt) for (const HarmonyRenderItem* renderItem : ldata->renderItemList()) { if (const TextSegment* ts = dynamic_cast(renderItem)) { Font f(ts->font()); - f.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); -#ifndef Q_OS_MACOS - TextBase::drawTextWorkaround(painter, f, ts->pos(), ts->text()); -#else + f.setPointSizeF(f.pointSizeF()); painter->setFont(f); painter->drawText(ts->pos(), ts->text()); -#endif } else if (const ChordSymbolParen* parenItem = dynamic_cast(renderItem)) { Parenthesis* p = parenItem->parenItem; painter->translate(parenItem->pos()); @@ -2022,7 +2036,7 @@ void TDraw::draw(const LayoutBreak* item, Painter* painter, const PaintOptions& painter->setPen(pen); Font f(item->font()); - f.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); + f.setPointSizeF(f.pointSizeF()); painter->setFont(f); painter->drawSymbol(PointF(), item->iconCode()); @@ -2215,7 +2229,7 @@ void TDraw::draw(const Note* item, Painter* painter, const PaintOptions& opt) } Font f(tab->fretFont()); - f.setPointSizeF(f.pointSizeF() * item->magS() * MScore::pixelRatio); + f.setPointSizeF(f.pointSizeF() * item->magS()); painter->setFont(f); painter->setPen(c); double startPosX = ldata->bbox().x(); @@ -2867,7 +2881,7 @@ void TDraw::draw(const FSymbol* item, Painter* painter, const PaintOptions& opt) TRACE_DRAW_ITEM; Font f(item->font()); - f.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); + f.setPointSizeF(f.pointSizeF()); painter->setFont(f); painter->setPen(item->curColor(opt)); painter->drawText(PointF(0, 0), item->toString()); @@ -2895,7 +2909,7 @@ void TDraw::draw(const IndicatorIcon* item, muse::draw::Painter* painter, const painter->setPen(pen); Font f(item->font()); - f.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); + f.setPointSizeF(f.pointSizeF()); painter->setFont(f); painter->drawSymbol(PointF(), item->iconCode()); @@ -2961,7 +2975,7 @@ void TDraw::draw(const TabDurationSymbol* item, Painter* painter, const PaintOpt if (ldata->beamGrid == TabBeamGrid::NONE) { // if no beam grid, draw symbol Font f(item->tab()->durationFont()); - f.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); + f.setPointSizeF(f.pointSizeF()); painter->setFont(f); painter->drawText(PointF(0.0, 0.0), item->text()); } else { diff --git a/src/engraving/rendering/score/tdraw.h b/src/engraving/rendering/score/tdraw.h index 39fae20ebf077..af6485c0b7aac 100644 --- a/src/engraving/rendering/score/tdraw.h +++ b/src/engraving/rendering/score/tdraw.h @@ -150,6 +150,8 @@ class TabDurationSymbol; class Tapping; class TempoText; class TextBase; +class TextBlock; +class TextFragment; class Text; class TextLine; class TextLineSegment; @@ -317,6 +319,8 @@ class TDraw static void draw(const WhammyBarSegment* item, muse::draw::Painter* painter, const PaintOptions& opt); static void drawTextBase(const TextBase* item, muse::draw::Painter* painter, const PaintOptions& opt); + static void draw(const TextBlock& textBlock, const TextBase* item, muse::draw::Painter* painter); + static void draw(const TextFragment& textFragment, const TextBase* item, muse::draw::Painter* painter); static void drawTextLineBaseSegment(const TextLineBaseSegment* item, muse::draw::Painter* painter, const PaintOptions& opt); static void setMask(const EngravingItem* item, muse::draw::Painter* painter); diff --git a/src/engraving/rendering/score/tlayout.cpp b/src/engraving/rendering/score/tlayout.cpp index 5cd990fd20a74..69c9e9a75deae 100644 --- a/src/engraving/rendering/score/tlayout.cpp +++ b/src/engraving/rendering/score/tlayout.cpp @@ -1307,9 +1307,7 @@ void TLayout::layoutBend(const Bend* item, Bend::LayoutData* ldata) int idx = (pitch + 12) / 25; const char* l = Bend::label[idx]; - bb.unite(fm.boundingRect(RectF(x2, y2, 0, 0), - muse::draw::AlignHCenter | muse::draw::AlignBottom | muse::draw::TextDontClip, - String::fromAscii(l))); + bb.unite(fm.boundingRect(String::fromAscii(l))); y = y2; } if (pitch == item->points().at(pt + 1).pitch) { @@ -1334,9 +1332,7 @@ void TLayout::layoutBend(const Bend* item, Bend::LayoutData* ldata) int idx = (item->points().at(pt + 1).pitch + 12) / 25; const char* l = Bend::label[idx]; - bb.unite(fm.boundingRect(RectF(x2, y2, 0, 0), - muse::draw::AlignHCenter | muse::draw::AlignBottom | muse::draw::TextDontClip, - String::fromAscii(l))); + bb.unite(fm.boundingRect(String::fromAscii(l))); } else { // down x2 = x + spatium * .5; @@ -1987,7 +1983,7 @@ void TLayout::layoutFiguredBassItem(const FiguredBassItem* item, FiguredBassItem // font size in pixels, scaled according to spatium() // (use the same font selection as used in draw() below) - double m = ctx.conf().styleD(Sid::figuredBassFontSize) * item->spatium() / SPATIUM20; + double m = ctx.conf().styleD(Sid::figuredBassFontSize) * item->spatium() / item->defaultSpatium(); f.setPointSizeF(m); FontMetrics fm(f); @@ -5804,8 +5800,8 @@ void TLayout::layoutTextLineBaseSegment(TextLineBaseSegment* item, LayoutContext } if (!item->textLineBase()->textSizeSpatiumDependent()) { - item->text()->setSize(item->text()->size() * SPATIUM20 / item->spatium()); - item->endText()->setSize(item->endText()->size() * SPATIUM20 / item->spatium()); + item->text()->setSize(item->text()->size() * item->defaultSpatium() / item->spatium()); + item->endText()->setSize(item->endText()->size() * item->defaultSpatium() / item->spatium()); } PointF pp1; diff --git a/src/engraving/rendering/single/singledraw.cpp b/src/engraving/rendering/single/singledraw.cpp index 4b9ae5246e4b9..5495185b6d411 100644 --- a/src/engraving/rendering/single/singledraw.cpp +++ b/src/engraving/rendering/single/singledraw.cpp @@ -524,7 +524,7 @@ void SingleDraw::draw(const Note* item, Painter* painter, const PaintOptions& op } } Font f(tab->fretFont()); - f.setPointSizeF(f.pointSizeF() * item->magS() * MScore::pixelRatio); + f.setPointSizeF(f.pointSizeF() * item->magS()); painter->setFont(f); painter->setPen(c); double startPosX = ldata->bbox().x(); @@ -870,7 +870,7 @@ void SingleDraw::draw(const Bend* item, Painter* painter, const PaintOptions& op painter->setPen(pen); painter->setBrush(Brush(item->curColor(opt))); - Font f = item->font(_spatium * MScore::pixelRatio); + Font f = item->font(_spatium); painter->setFont(f); double x = ldata->noteWidth + _spatium * .2; @@ -961,11 +961,12 @@ void SingleDraw::draw(const Bracket* item, Painter* painter, const PaintOptions& switch (item->bracketType()) { case BracketType::BRACE: { double h = ldata->bracketHeight; - double mag = h / (100 * item->magS()); + double glyphHeight = item->symHeight(ldata->braceSymbol); + double mag = h / glyphHeight; painter->setPen(item->curColor(opt)); painter->save(); painter->scale(item->magx(), mag); - item->drawSymbol(ldata->braceSymbol, painter, PointF(0, 100 * item->magS())); + item->drawSymbol(ldata->braceSymbol, painter, PointF(0, glyphHeight)); painter->restore(); } break; @@ -1112,8 +1113,8 @@ void SingleDraw::draw(const FiguredBassItem* item, Painter* painter, const Paint Font f(FiguredBass::FBFonts().at(font).family, Font::Type::Tablature); // (use the same font selection as used in layout() above) - double m = item->style().styleD(Sid::figuredBassFontSize) * item->spatium() / SPATIUM20; - f.setPointSizeF(m * MScore::pixelRatio); + double m = item->style().styleD(Sid::figuredBassFontSize) * item->spatium() / item->defaultSpatium(); + f.setPointSizeF(m); painter->setFont(f); painter->setBrush(BrushStyle::NoBrush); @@ -1304,7 +1305,7 @@ void SingleDraw::draw(const FretDiagram* item, Painter* painter, const PaintOpti // Draw fret offset number if (item->fretOffset() > 0) { Font scaledFont(item->fretNumFont()); - scaledFont.setPointSizeF(scaledFont.pointSizeF() * (item->spatium() / SPATIUM20) * MScore::pixelRatio); + scaledFont.setPointSizeF(scaledFont.pointSizeF() * (item->spatium() / item->defaultSpatium())); painter->setFont(scaledFont); String text = String::number(item->fretOffset() + 1); @@ -1382,7 +1383,7 @@ void SingleDraw::draw(const GlissandoSegment* item, Painter* painter, const Pain if (glissando->showText()) { Font f(glissando->fontFace(), Font::Type::Unknown); - f.setPointSizeF(glissando->fontSize() * _spatium / SPATIUM20); + f.setPointSizeF(glissando->fontSize() * _spatium / item->defaultSpatium()); f.setBold(glissando->fontStyle() & FontStyle::Bold); f.setItalic(glissando->fontStyle() & FontStyle::Italic); f.setUnderline(glissando->fontStyle() & FontStyle::Underline); @@ -1397,7 +1398,7 @@ void SingleDraw::draw(const GlissandoSegment* item, Painter* painter, const Pain yOffset += _spatium * (glissando->glissandoType() == GlissandoType::WAVY ? 0.4 : 0.1); Font scaledFont(f); - scaledFont.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); + scaledFont.setPointSizeF(f.pointSizeF()); painter->setFont(scaledFont); double x = (l - r.width()) * 0.5; @@ -1535,10 +1536,27 @@ void SingleDraw::drawTextBase(const TextBase* item, Painter* painter, const Pain painter->setBrush(BrushStyle::NoBrush); painter->setPen(item->textColor(opt)); for (const TextBlock& t : ldata->blocks) { - t.draw(painter, item); + draw(t, item, painter); } } +void SingleDraw::draw(const TextBlock& textBlock, const TextBase* item, muse::draw::Painter* painter) +{ + painter->translate(0.0, textBlock.y()); + for (const TextFragment& f : textBlock.fragments()) { + draw(f, item, painter); + } + painter->translate(0.0, -textBlock.y()); +} + +void SingleDraw::draw(const TextFragment& textFragment, const TextBase* item, muse::draw::Painter* painter) +{ + Font f(textFragment.font(item)); + f.setPointSizeF(f.pointSizeF()); + painter->setFont(f); + painter->drawText(textFragment.pos, textFragment.text); +} + void SingleDraw::drawTextLineBaseSegment(const TextLineBaseSegment* item, Painter* painter, const PaintOptions& opt) { const TextLineBase* tl = item->textLineBase(); @@ -1752,13 +1770,9 @@ void SingleDraw::draw(const Harmony* item, Painter* painter, const PaintOptions& for (const HarmonyRenderItem* renderItem : ldata->renderItemList()) { if (const TextSegment* ts = dynamic_cast(renderItem)) { Font f(ts->font()); - f.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); -#ifndef Q_OS_MACOS - TextBase::drawTextWorkaround(painter, f, ts->pos(), ts->text()); -#else + f.setPointSizeF(f.pointSizeF()); painter->setFont(f); painter->drawText(ts->pos(), ts->text()); -#endif } } } @@ -1884,7 +1898,7 @@ void SingleDraw::draw(const LayoutBreak* item, Painter* painter, const PaintOpti painter->setPen(pen); Font f(item->font()); - f.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); + f.setPointSizeF(f.pointSizeF()); painter->setFont(f); painter->drawSymbol(PointF(0.0, 0.0), item->iconCode()); @@ -2176,7 +2190,7 @@ void SingleDraw::draw(const StaffText* item, Painter* painter, const PaintOption drawTextBase(item, painter, opt); if (item->hasSoundFlag()) { - item->soundFlag()->setIconFontSize(item->font().pointSizeF() * MScore::pixelRatio); + item->soundFlag()->setIconFontSize(item->font().pointSizeF()); draw(item->soundFlag(), painter, opt); } } @@ -2237,7 +2251,7 @@ void SingleDraw::draw(const FSymbol* item, Painter* painter, const PaintOptions& TRACE_DRAW_ITEM; Font f(item->font()); - f.setPointSizeF(f.pointSizeF() * MScore::pixelRatio); + f.setPointSizeF(f.pointSizeF()); painter->setFont(f); painter->setPen(item->curColor(opt)); painter->drawText(PointF(0, 0), item->toString()); diff --git a/src/engraving/rendering/single/singledraw.h b/src/engraving/rendering/single/singledraw.h index 350350c036dba..9325c80c6f0e9 100644 --- a/src/engraving/rendering/single/singledraw.h +++ b/src/engraving/rendering/single/singledraw.h @@ -142,6 +142,8 @@ class Tapping; class TempoText; class Text; class TextBase; +class TextBlock; +class TextFragment; class TextLine; class TextLineSegment; class TextLineBaseSegment; @@ -281,6 +283,8 @@ class SingleDraw static void draw(const WhammyBarSegment* item, muse::draw::Painter* painter, const PaintOptions& opt); static void drawTextBase(const TextBase* item, muse::draw::Painter* painter, const PaintOptions& opt); + static void draw(const TextBlock& textBlock, const TextBase* item, muse::draw::Painter* painter); + static void draw(const TextFragment& textFragment, const TextBase* item, muse::draw::Painter* painter); static void drawTextLineBaseSegment(const TextLineBaseSegment* item, muse::draw::Painter* painter, const PaintOptions& opt); }; } diff --git a/src/engraving/rendering/single/singlelayout.cpp b/src/engraving/rendering/single/singlelayout.cpp index c3d186353aeb3..3a2ff57fd75b2 100644 --- a/src/engraving/rendering/single/singlelayout.cpp +++ b/src/engraving/rendering/single/singlelayout.cpp @@ -431,7 +431,7 @@ void SingleLayout::layout(Arpeggio* item, const Context& ctx) ldata->bottom = ldata->arpeggioHeight; ldata->setMag(item->staff() ? item->staff()->staffMag(item->tick()) : item->mag()); - ldata->magS = ldata->mag() * (ctx.style().spatium() / SPATIUM20); + ldata->magS = ldata->mag() * (ctx.style().spatium() / ctx.style().defaultSpatium()); std::shared_ptr font = ctx.engravingFont(); switch (item->arpeggioType()) { @@ -670,9 +670,7 @@ void SingleLayout::layout(Bend* item, const Context&) int idx = (pitch + 12) / 25; const char* l = Bend::label[idx]; - bb.unite(fm.boundingRect(RectF(x2, y2, 0, 0), - muse::draw::AlignHCenter | muse::draw::AlignBottom | muse::draw::TextDontClip, - String::fromAscii(l))); + bb.unite(fm.boundingRect(String::fromAscii(l))); y = y2; } if (pitch == item->points().at(pt + 1).pitch) { @@ -697,9 +695,7 @@ void SingleLayout::layout(Bend* item, const Context&) int idx = (item->points().at(pt + 1).pitch + 12) / 25; const char* l = Bend::label[idx]; - bb.unite(fm.boundingRect(RectF(x2, y2, 0, 0), - muse::draw::AlignHCenter | muse::draw::AlignBottom | muse::draw::TextDontClip, - String::fromAscii(l))); + bb.unite(fm.boundingRect(String::fromAscii(l))); } else { // down x2 = x + spatium * .5; @@ -2120,8 +2116,8 @@ void SingleLayout::layoutTextLineBaseSegment(TextLineBaseSegment* item, const Co } if (!item->textLineBase()->textSizeSpatiumDependent()) { - item->text()->setSize(item->text()->size() * SPATIUM20 / item->spatium()); - item->endText()->setSize(item->endText()->size() * SPATIUM20 / item->spatium()); + item->text()->setSize(item->text()->size() * item->defaultSpatium() / item->spatium()); + item->endText()->setSize(item->endText()->size() * item->defaultSpatium() / item->spatium()); } PointF pp1; diff --git a/src/engraving/rw/compat/compatutils.cpp b/src/engraving/rw/compat/compatutils.cpp index b114ffad9fa9c..5ce7b854c2e3f 100644 --- a/src/engraving/rw/compat/compatutils.cpp +++ b/src/engraving/rw/compat/compatutils.cpp @@ -583,9 +583,10 @@ double CompatUtils::convertChordExtModUnits(double val) // After 4.6 this is in % of root cap height // The best we can do for conversion of old files is to assume a default spatium of 1.75mm and a default font size of 10pt // The height value is calculated from Edwin at 10pt using FontMetrics::capHeight - constexpr double DEFAULT_STAVE_SPACE_MM = 1.75; - constexpr double DEFAULT_SPATIUM = DEFAULT_STAVE_SPACE_MM * DPMM; - constexpr double DEFAULT_FONT_CAP_HEIGHT = 35.3795; + const double DEFAULT_SPATIUM = StyleDef::styleValues[static_cast(Sid::spatium)].defaultValue().toDouble(); + muse::draw::Font f(u"Edwin", muse::draw::Font::Type::Text); + f.setPointSizeF(10); + const double DEFAULT_FONT_CAP_HEIGHT = muse::draw::FontMetrics::capHeight(f); // 121 return ((val / 5) * DEFAULT_SPATIUM) / DEFAULT_FONT_CAP_HEIGHT; } diff --git a/src/engraving/style/style.cpp b/src/engraving/style/style.cpp index c69d4ae1c1843..f93f09a2799d1 100644 --- a/src/engraving/style/style.cpp +++ b/src/engraving/style/style.cpp @@ -85,7 +85,7 @@ void MStyle::set(const Sid t, const PropertyValue& val) double MStyle::defaultSpatium() const { - return DefaultStyle::resolveStyleDefaults(defaultStyleVersion()).spatium(); + return StyleDef::styleValues[static_cast(Sid::spatium)].defaultValue().toDouble(); } void MStyle::precomputeValues() diff --git a/src/engraving/style/styledef.cpp b/src/engraving/style/styledef.cpp index 11d64925330c6..43ad047a313c5 100644 --- a/src/engraving/style/styledef.cpp +++ b/src/engraving/style/styledef.cpp @@ -742,7 +742,7 @@ const std::array StyleDef::styleValue styleDef(minVerticalDistance, 0.5_sp), styleDef(skylineMinHorizontalClearance, 0.25_sp), styleDef(ornamentStyle, int(OrnamentStyle::DEFAULT)), - styleDef(spatium, 24.8), + styleDef(spatium, 1.75 /*mm*/ * DPMM), styleDef(autoplaceHairpinDynamicsDistance, 0.5_sp), diff --git a/src/engraving/style/styledef.h b/src/engraving/style/styledef.h index 329db4971f70b..727aab5a3ff30 100644 --- a/src/engraving/style/styledef.h +++ b/src/engraving/style/styledef.h @@ -2044,11 +2044,7 @@ typedef std::vector ElementStyle; //--------------------------------------------------------- struct StyleDef { -private: - - friend class MStyle; - friend class EngravingStyleModel; - +public: struct StyleValue { Sid _idx; muse::AsciiStringView _name; // xml name for read()/write() diff --git a/src/engraving/tests/chordsymbol_data/no-system-ref.mscx b/src/engraving/tests/chordsymbol_data/no-system-ref.mscx index 21225371a8d7b..b3560acf6c5be 100644 --- a/src/engraving/tests/chordsymbol_data/no-system-ref.mscx +++ b/src/engraving/tests/chordsymbol_data/no-system-ref.mscx @@ -213,7 +213,7 @@ 480 1 1 @@ -328,7 +328,7 @@ 480 1 1 diff --git a/src/engraving/tests/copypaste_data/copypaste27-ref.mscx b/src/engraving/tests/copypaste_data/copypaste27-ref.mscx index 40b52d5954b02..10502d6384ce7 100644 --- a/src/engraving/tests/copypaste_data/copypaste27-ref.mscx +++ b/src/engraving/tests/copypaste_data/copypaste27-ref.mscx @@ -6,7 +6,7 @@ 1 1 diff --git a/src/engraving/tests/copypaste_data/copypasteNote12-ref.mscx b/src/engraving/tests/copypaste_data/copypasteNote12-ref.mscx index 6f66ee1bafdc0..8db32ee97600b 100644 --- a/src/engraving/tests/copypaste_data/copypasteNote12-ref.mscx +++ b/src/engraving/tests/copypaste_data/copypasteNote12-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/copypaste_data/copypasteSplit01-ref.mscx b/src/engraving/tests/copypaste_data/copypasteSplit01-ref.mscx index fe46c0a925b17..9b51244f30b9d 100644 --- a/src/engraving/tests/copypaste_data/copypasteSplit01-ref.mscx +++ b/src/engraving/tests/copypaste_data/copypasteSplit01-ref.mscx @@ -6,7 +6,7 @@ 1 1 diff --git a/src/engraving/tests/copypaste_data/copypasteSplit02-ref.mscx b/src/engraving/tests/copypaste_data/copypasteSplit02-ref.mscx index 4b1de04d623a4..bacfa8d4c6685 100644 --- a/src/engraving/tests/copypaste_data/copypasteSplit02-ref.mscx +++ b/src/engraving/tests/copypaste_data/copypasteSplit02-ref.mscx @@ -6,7 +6,7 @@ 1 1 diff --git a/src/engraving/tests/copypaste_data/copypasteSplit03-ref.mscx b/src/engraving/tests/copypaste_data/copypasteSplit03-ref.mscx index 4cba6fd05b7ad..fe10bc2eb3e9d 100644 --- a/src/engraving/tests/copypaste_data/copypasteSplit03-ref.mscx +++ b/src/engraving/tests/copypaste_data/copypasteSplit03-ref.mscx @@ -6,7 +6,7 @@ 1 1 diff --git a/src/engraving/tests/copypaste_data/copypasteSplit04-ref.mscx b/src/engraving/tests/copypaste_data/copypasteSplit04-ref.mscx index a384f0a155f05..fe1330d44e5a9 100644 --- a/src/engraving/tests/copypaste_data/copypasteSplit04-ref.mscx +++ b/src/engraving/tests/copypaste_data/copypasteSplit04-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/copypaste_data/copypaste_parts-ref.mscx b/src/engraving/tests/copypaste_data/copypaste_parts-ref.mscx index ae589adfe750c..c186f507f3638 100644 --- a/src/engraving/tests/copypaste_data/copypaste_parts-ref.mscx +++ b/src/engraving/tests/copypaste_data/copypaste_parts-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 @@ -862,7 +862,7 @@ Flute 480 1 1 diff --git a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-articulation-ref.mscx b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-articulation-ref.mscx index 5847d853c9cab..86454897c4b3b 100644 --- a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-articulation-ref.mscx +++ b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-articulation-ref.mscx @@ -4,7 +4,7 @@ /+vtFWytmdJ_BOa72y05K/L 480 1 1 diff --git a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-articulation-rest-ref.mscx b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-articulation-rest-ref.mscx index fd336e5e1fb4e..fde4ee9b184a7 100644 --- a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-articulation-rest-ref.mscx +++ b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-articulation-rest-ref.mscx @@ -4,7 +4,7 @@ WUHOWRmipHO_AihwL/79hxN 480 1 1 diff --git a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-chordnames-01-ref.mscx b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-chordnames-01-ref.mscx index f370b37008f8b..7f216c1d2d8a4 100644 --- a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-chordnames-01-ref.mscx +++ b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-chordnames-01-ref.mscx @@ -4,7 +4,7 @@ mhHGVe39sbN_YFUuTNn9+3G 480 1 1 diff --git a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-chordnames-ref.mscx b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-chordnames-ref.mscx index 7bc61d251772d..382cd57ad9951 100644 --- a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-chordnames-ref.mscx +++ b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-chordnames-ref.mscx @@ -4,7 +4,7 @@ lY++WRUB2gO_kbQdvZIEvYB 480 1 1 diff --git a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-lyrics-ref.mscx b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-lyrics-ref.mscx index 8424414e840cd..e3b3f0d9acdbd 100644 --- a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-lyrics-ref.mscx +++ b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-lyrics-ref.mscx @@ -4,7 +4,7 @@ InjUi4jYhiM_C46UOerHNuN 480 1 1 diff --git a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-ornament-ref.mscx b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-ornament-ref.mscx index cc7077a104525..f5b4212b819dd 100644 --- a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-ornament-ref.mscx +++ b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-ornament-ref.mscx @@ -4,7 +4,7 @@ jWgi4s3mJTD_BYErbXVs0qK 480 1 1 diff --git a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-range-01-ref.mscx b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-range-01-ref.mscx index e5401e33bb538..bb7c4239a763c 100644 --- a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-range-01-ref.mscx +++ b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-range-01-ref.mscx @@ -4,7 +4,7 @@ OtTg8irRnjI_blklwh+2DXE 480 1 1 diff --git a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-range-ref.mscx b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-range-ref.mscx index 9b638d185ab19..2e489b88407e9 100644 --- a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-range-ref.mscx +++ b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-range-ref.mscx @@ -4,7 +4,7 @@ 9Je8EOSdoiK_qjT8dFWC6nG 480 1 1 diff --git a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-stafftext-ref.mscx b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-stafftext-ref.mscx index 916da405eb2e9..ada9c373d106c 100644 --- a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-stafftext-ref.mscx +++ b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-stafftext-ref.mscx @@ -4,7 +4,7 @@ Rf33I1H4IXI_6rfDBu7ei1K 480 1 1 diff --git a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-sticking-ref.mscx b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-sticking-ref.mscx index 2c9afc77ce56d..1c1f86134b554 100644 --- a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-sticking-ref.mscx +++ b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-sticking-ref.mscx @@ -4,7 +4,7 @@ otkRLnuFR4E_J1MFz+OM4nC 480 1 1 diff --git a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-tremolo-single-chord-ref.mscx b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-tremolo-single-chord-ref.mscx index 0e6c74361e18f..b2816bc8c2aa3 100644 --- a/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-tremolo-single-chord-ref.mscx +++ b/src/engraving/tests/copypastesymbollist_data/copypastesymbollist-tremolo-single-chord-ref.mscx @@ -4,7 +4,7 @@ CDOgQaN4I2L_mOLOWDjYgKM 480 1 1 diff --git a/src/engraving/tests/expression_data/expression-1-ref.mscx b/src/engraving/tests/expression_data/expression-1-ref.mscx index e0220e3f592e7..48c6476734caa 100644 --- a/src/engraving/tests/expression_data/expression-1-ref.mscx +++ b/src/engraving/tests/expression_data/expression-1-ref.mscx @@ -6,7 +6,7 @@ 1 1 diff --git a/src/engraving/tests/expression_data/expression-2-ref.mscx b/src/engraving/tests/expression_data/expression-2-ref.mscx index 8af14548d80a9..2f7f5f714eefe 100644 --- a/src/engraving/tests/expression_data/expression-2-ref.mscx +++ b/src/engraving/tests/expression_data/expression-2-ref.mscx @@ -6,7 +6,7 @@ 1 1 diff --git a/src/engraving/tests/implode_explode_data/explodeDynamics01-ref.mscx b/src/engraving/tests/implode_explode_data/explodeDynamics01-ref.mscx index d29886c3e72f0..0fa2598a984a3 100644 --- a/src/engraving/tests/implode_explode_data/explodeDynamics01-ref.mscx +++ b/src/engraving/tests/implode_explode_data/explodeDynamics01-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/implode_explode_data/explodeDynamics02-ref.mscx b/src/engraving/tests/implode_explode_data/explodeDynamics02-ref.mscx index 0192a4cf1fde0..cefd449e1ce5c 100644 --- a/src/engraving/tests/implode_explode_data/explodeDynamics02-ref.mscx +++ b/src/engraving/tests/implode_explode_data/explodeDynamics02-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/implode_explode_data/implodeDynamics01-ref.mscx b/src/engraving/tests/implode_explode_data/implodeDynamics01-ref.mscx index 0d792f29cacf7..61e285ef8aad7 100644 --- a/src/engraving/tests/implode_explode_data/implodeDynamics01-ref.mscx +++ b/src/engraving/tests/implode_explode_data/implodeDynamics01-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/implode_explode_data/implodeDynamics02-ref.mscx b/src/engraving/tests/implode_explode_data/implodeDynamics02-ref.mscx index 9745408271c21..6c5005db85b32 100644 --- a/src/engraving/tests/implode_explode_data/implodeDynamics02-ref.mscx +++ b/src/engraving/tests/implode_explode_data/implodeDynamics02-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/join_data/join09-ref.mscx b/src/engraving/tests/join_data/join09-ref.mscx index 23089d50f3056..adb990e73530c 100644 --- a/src/engraving/tests/join_data/join09-ref.mscx +++ b/src/engraving/tests/join_data/join09-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/join_data/join10-ref.mscx b/src/engraving/tests/join_data/join10-ref.mscx index ee840df4ed7bb..7adde2a3e238c 100644 --- a/src/engraving/tests/join_data/join10-ref.mscx +++ b/src/engraving/tests/join_data/join10-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/links_data/testPickupLinkedStaff-ref.mscx b/src/engraving/tests/links_data/testPickupLinkedStaff-ref.mscx index 80039f7d5565c..92db8532f2d1f 100644 --- a/src/engraving/tests/links_data/testPickupLinkedStaff-ref.mscx +++ b/src/engraving/tests/links_data/testPickupLinkedStaff-ref.mscx @@ -4,7 +4,7 @@ gY8R+JIYuhL_buEc7F+kvMG 480 1 1 diff --git a/src/engraving/tests/measure_data/changeMeasureLen-ref.mscx b/src/engraving/tests/measure_data/changeMeasureLen-ref.mscx index 20e6c9a84d179..d09c690fea8ef 100644 --- a/src/engraving/tests/measure_data/changeMeasureLen-ref.mscx +++ b/src/engraving/tests/measure_data/changeMeasureLen-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/measure_data/measureSplit-ref.mscx b/src/engraving/tests/measure_data/measureSplit-ref.mscx index d4339ae21549f..b7e128adc60b4 100644 --- a/src/engraving/tests/measure_data/measureSplit-ref.mscx +++ b/src/engraving/tests/measure_data/measureSplit-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 @@ -1330,7 +1330,7 @@ Flute 480 1 1 @@ -2068,7 +2068,7 @@ Oboe 480 1 1 diff --git a/src/engraving/tests/partialtie_data/coda-ref.mscx b/src/engraving/tests/partialtie_data/coda-ref.mscx index 4084b3866ef4c..879c733087261 100644 --- a/src/engraving/tests/partialtie_data/coda-ref.mscx +++ b/src/engraving/tests/partialtie_data/coda-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/partialtie_data/copyPastePartials01-ref.mscx b/src/engraving/tests/partialtie_data/copyPastePartials01-ref.mscx index db91196d134a5..cfe8b188eb4f0 100644 --- a/src/engraving/tests/partialtie_data/copyPastePartials01-ref.mscx +++ b/src/engraving/tests/partialtie_data/copyPastePartials01-ref.mscx @@ -4,7 +4,7 @@ IwzIRUFGaBG_0DMmCJg0oKB 480 1 1 diff --git a/src/engraving/tests/partialtie_data/copyPastePartials02-ref.mscx b/src/engraving/tests/partialtie_data/copyPastePartials02-ref.mscx index 504232db2ba33..69b218b5047a2 100644 --- a/src/engraving/tests/partialtie_data/copyPastePartials02-ref.mscx +++ b/src/engraving/tests/partialtie_data/copyPastePartials02-ref.mscx @@ -4,7 +4,7 @@ IwzIRUFGaBG_0DMmCJg0oKB 480 1 1 diff --git a/src/engraving/tests/partialtie_data/copyPastePartials03-ref.mscx b/src/engraving/tests/partialtie_data/copyPastePartials03-ref.mscx index 51f6d875dc26b..7b143b97dd5e9 100644 --- a/src/engraving/tests/partialtie_data/copyPastePartials03-ref.mscx +++ b/src/engraving/tests/partialtie_data/copyPastePartials03-ref.mscx @@ -4,7 +4,7 @@ IwzIRUFGaBG_0DMmCJg0oKB 480 1 1 diff --git a/src/engraving/tests/partialtie_data/copyPastePartials04-ref.mscx b/src/engraving/tests/partialtie_data/copyPastePartials04-ref.mscx index 1cd7f50d4ca3b..eefb385fc24ec 100644 --- a/src/engraving/tests/partialtie_data/copyPastePartials04-ref.mscx +++ b/src/engraving/tests/partialtie_data/copyPastePartials04-ref.mscx @@ -4,7 +4,7 @@ IwzIRUFGaBG_0DMmCJg0oKB 480 1 1 diff --git a/src/engraving/tests/partialtie_data/partialTieList-ref.mscx b/src/engraving/tests/partialtie_data/partialTieList-ref.mscx index a67d4dd341cfe..ceeb81eba8039 100644 --- a/src/engraving/tests/partialtie_data/partialTieList-ref.mscx +++ b/src/engraving/tests/partialtie_data/partialTieList-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/partialtie_data/repeat_barlines-ref.mscx b/src/engraving/tests/partialtie_data/repeat_barlines-ref.mscx index ee34d058715f0..c4d04839cdb06 100644 --- a/src/engraving/tests/partialtie_data/repeat_barlines-ref.mscx +++ b/src/engraving/tests/partialtie_data/repeat_barlines-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/partialtie_data/volta_coda-ref.mscx b/src/engraving/tests/partialtie_data/volta_coda-ref.mscx index 98eba99a9afca..d303e6ff94ed7 100644 --- a/src/engraving/tests/partialtie_data/volta_coda-ref.mscx +++ b/src/engraving/tests/partialtie_data/volta_coda-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/parts_data/linked-ties-1.mscx b/src/engraving/tests/parts_data/linked-ties-1.mscx index 0564fe210ccba..c9b78b43d0ace 100644 --- a/src/engraving/tests/parts_data/linked-ties-1.mscx +++ b/src/engraving/tests/parts_data/linked-ties-1.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/parts_data/linked-ties-parts.mscx b/src/engraving/tests/parts_data/linked-ties-parts.mscx index e26d385cf36c0..43b6e70eed615 100644 --- a/src/engraving/tests/parts_data/linked-ties-parts.mscx +++ b/src/engraving/tests/parts_data/linked-ties-parts.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 @@ -401,7 +401,7 @@ Flute 480 1 1 diff --git a/src/engraving/tests/parts_data/part-54346-parts.mscx b/src/engraving/tests/parts_data/part-54346-parts.mscx index 30bd09d6d79cd..98f3e73f8880a 100644 --- a/src/engraving/tests/parts_data/part-54346-parts.mscx +++ b/src/engraving/tests/parts_data/part-54346-parts.mscx @@ -291,7 +291,7 @@ Bâ™­ Trumpet 480 1 1 @@ -474,7 +474,7 @@ C Trumpet 480 1 1 diff --git a/src/engraving/tests/parts_data/part-all-appendmeasures.mscx b/src/engraving/tests/parts_data/part-all-appendmeasures.mscx index a12aea678d57a..a385858b1e3f8 100644 --- a/src/engraving/tests/parts_data/part-all-appendmeasures.mscx +++ b/src/engraving/tests/parts_data/part-all-appendmeasures.mscx @@ -1121,7 +1121,7 @@ Alto 480 1 1 @@ -1874,7 +1874,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-all-insertmeasures.mscx b/src/engraving/tests/parts_data/part-all-insertmeasures.mscx index eb5357c1cfd50..d719470a3c24b 100644 --- a/src/engraving/tests/parts_data/part-all-insertmeasures.mscx +++ b/src/engraving/tests/parts_data/part-all-insertmeasures.mscx @@ -1121,7 +1121,7 @@ Alto 480 1 1 @@ -1872,7 +1872,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-all-parts.mscx b/src/engraving/tests/parts_data/part-all-parts.mscx index d39a586d0a812..c22c37fabee41 100644 --- a/src/engraving/tests/parts_data/part-all-parts.mscx +++ b/src/engraving/tests/parts_data/part-all-parts.mscx @@ -1102,7 +1102,7 @@ Alto 480 1 1 @@ -1844,7 +1844,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-all-uappendmeasures.mscx b/src/engraving/tests/parts_data/part-all-uappendmeasures.mscx index 6b69f78771d9a..f0fe115c66224 100644 --- a/src/engraving/tests/parts_data/part-all-uappendmeasures.mscx +++ b/src/engraving/tests/parts_data/part-all-uappendmeasures.mscx @@ -1102,7 +1102,7 @@ Alto 480 1 1 @@ -1844,7 +1844,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-all-uinsertmeasures.mscx b/src/engraving/tests/parts_data/part-all-uinsertmeasures.mscx index 04350b9730a2f..143d5332db9fa 100644 --- a/src/engraving/tests/parts_data/part-all-uinsertmeasures.mscx +++ b/src/engraving/tests/parts_data/part-all-uinsertmeasures.mscx @@ -1102,7 +1102,7 @@ Alto 480 1 1 @@ -1844,7 +1844,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-breath-add.mscx b/src/engraving/tests/parts_data/part-breath-add.mscx index ead488b1012ce..8052d1e5a0177 100644 --- a/src/engraving/tests/parts_data/part-breath-add.mscx +++ b/src/engraving/tests/parts_data/part-breath-add.mscx @@ -821,7 +821,7 @@ Alto 480 1 1 @@ -1300,7 +1300,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-breath-del.mscx b/src/engraving/tests/parts_data/part-breath-del.mscx index 4af03719d5fdc..134148ec269a1 100644 --- a/src/engraving/tests/parts_data/part-breath-del.mscx +++ b/src/engraving/tests/parts_data/part-breath-del.mscx @@ -817,7 +817,7 @@ Alto 480 1 1 @@ -1291,7 +1291,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-breath-parts.mscx b/src/engraving/tests/parts_data/part-breath-parts.mscx index 6b36a03c8725f..5431088c45238 100644 --- a/src/engraving/tests/parts_data/part-breath-parts.mscx +++ b/src/engraving/tests/parts_data/part-breath-parts.mscx @@ -830,7 +830,7 @@ Alto 480 1 1 @@ -1315,7 +1315,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-breath-uadd.mscx b/src/engraving/tests/parts_data/part-breath-uadd.mscx index 4af03719d5fdc..134148ec269a1 100644 --- a/src/engraving/tests/parts_data/part-breath-uadd.mscx +++ b/src/engraving/tests/parts_data/part-breath-uadd.mscx @@ -817,7 +817,7 @@ Alto 480 1 1 @@ -1291,7 +1291,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-breath-udel.mscx b/src/engraving/tests/parts_data/part-breath-udel.mscx index ead488b1012ce..8052d1e5a0177 100644 --- a/src/engraving/tests/parts_data/part-breath-udel.mscx +++ b/src/engraving/tests/parts_data/part-breath-udel.mscx @@ -821,7 +821,7 @@ Alto 480 1 1 @@ -1300,7 +1300,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-breath-uradd.mscx b/src/engraving/tests/parts_data/part-breath-uradd.mscx index ead488b1012ce..8052d1e5a0177 100644 --- a/src/engraving/tests/parts_data/part-breath-uradd.mscx +++ b/src/engraving/tests/parts_data/part-breath-uradd.mscx @@ -821,7 +821,7 @@ Alto 480 1 1 @@ -1300,7 +1300,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-breath-urdel.mscx b/src/engraving/tests/parts_data/part-breath-urdel.mscx index 4af03719d5fdc..134148ec269a1 100644 --- a/src/engraving/tests/parts_data/part-breath-urdel.mscx +++ b/src/engraving/tests/parts_data/part-breath-urdel.mscx @@ -817,7 +817,7 @@ Alto 480 1 1 @@ -1291,7 +1291,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-chordline-add.mscx b/src/engraving/tests/parts_data/part-chordline-add.mscx index 09bfe90d4ddae..2ea60883f8d79 100644 --- a/src/engraving/tests/parts_data/part-chordline-add.mscx +++ b/src/engraving/tests/parts_data/part-chordline-add.mscx @@ -821,7 +821,7 @@ Alto 480 1 1 @@ -1300,7 +1300,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-chordline-del.mscx b/src/engraving/tests/parts_data/part-chordline-del.mscx index e4e8d5e720583..55dc8de1ac881 100644 --- a/src/engraving/tests/parts_data/part-chordline-del.mscx +++ b/src/engraving/tests/parts_data/part-chordline-del.mscx @@ -812,7 +812,7 @@ Alto 480 1 1 @@ -1280,7 +1280,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-chordline-parts.mscx b/src/engraving/tests/parts_data/part-chordline-parts.mscx index 9979e10245689..b26b79b09aa6b 100644 --- a/src/engraving/tests/parts_data/part-chordline-parts.mscx +++ b/src/engraving/tests/parts_data/part-chordline-parts.mscx @@ -816,7 +816,7 @@ Alto 480 1 1 @@ -1289,7 +1289,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-chordline-uadd.mscx b/src/engraving/tests/parts_data/part-chordline-uadd.mscx index 4af03719d5fdc..134148ec269a1 100644 --- a/src/engraving/tests/parts_data/part-chordline-uadd.mscx +++ b/src/engraving/tests/parts_data/part-chordline-uadd.mscx @@ -817,7 +817,7 @@ Alto 480 1 1 @@ -1291,7 +1291,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-chordline-udel.mscx b/src/engraving/tests/parts_data/part-chordline-udel.mscx index 9979e10245689..b26b79b09aa6b 100644 --- a/src/engraving/tests/parts_data/part-chordline-udel.mscx +++ b/src/engraving/tests/parts_data/part-chordline-udel.mscx @@ -816,7 +816,7 @@ Alto 480 1 1 @@ -1289,7 +1289,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-chordline-uradd.mscx b/src/engraving/tests/parts_data/part-chordline-uradd.mscx index 09bfe90d4ddae..2ea60883f8d79 100644 --- a/src/engraving/tests/parts_data/part-chordline-uradd.mscx +++ b/src/engraving/tests/parts_data/part-chordline-uradd.mscx @@ -821,7 +821,7 @@ Alto 480 1 1 @@ -1300,7 +1300,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-chordline-urdel.mscx b/src/engraving/tests/parts_data/part-chordline-urdel.mscx index e4e8d5e720583..55dc8de1ac881 100644 --- a/src/engraving/tests/parts_data/part-chordline-urdel.mscx +++ b/src/engraving/tests/parts_data/part-chordline-urdel.mscx @@ -812,7 +812,7 @@ Alto 480 1 1 @@ -1280,7 +1280,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-empty-parts.mscx b/src/engraving/tests/parts_data/part-empty-parts.mscx index 4af03719d5fdc..134148ec269a1 100644 --- a/src/engraving/tests/parts_data/part-empty-parts.mscx +++ b/src/engraving/tests/parts_data/part-empty-parts.mscx @@ -817,7 +817,7 @@ Alto 480 1 1 @@ -1291,7 +1291,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-fingering-add.mscx b/src/engraving/tests/parts_data/part-fingering-add.mscx index 5452040691be7..c774ea4cf2314 100644 --- a/src/engraving/tests/parts_data/part-fingering-add.mscx +++ b/src/engraving/tests/parts_data/part-fingering-add.mscx @@ -821,7 +821,7 @@ Alto 480 1 1 @@ -1300,7 +1300,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-fingering-del.mscx b/src/engraving/tests/parts_data/part-fingering-del.mscx index 48d257145ef53..ceb3420849d8b 100644 --- a/src/engraving/tests/parts_data/part-fingering-del.mscx +++ b/src/engraving/tests/parts_data/part-fingering-del.mscx @@ -822,7 +822,7 @@ Alto 480 1 1 @@ -1302,7 +1302,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-fingering-parts.mscx b/src/engraving/tests/parts_data/part-fingering-parts.mscx index e7e4718dc2578..7f02fab038177 100644 --- a/src/engraving/tests/parts_data/part-fingering-parts.mscx +++ b/src/engraving/tests/parts_data/part-fingering-parts.mscx @@ -827,7 +827,7 @@ Alto 480 1 1 @@ -1313,7 +1313,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-fingering-uadd.mscx b/src/engraving/tests/parts_data/part-fingering-uadd.mscx index 4af03719d5fdc..134148ec269a1 100644 --- a/src/engraving/tests/parts_data/part-fingering-uadd.mscx +++ b/src/engraving/tests/parts_data/part-fingering-uadd.mscx @@ -817,7 +817,7 @@ Alto 480 1 1 @@ -1291,7 +1291,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-fingering-udel.mscx b/src/engraving/tests/parts_data/part-fingering-udel.mscx index e7e4718dc2578..7f02fab038177 100644 --- a/src/engraving/tests/parts_data/part-fingering-udel.mscx +++ b/src/engraving/tests/parts_data/part-fingering-udel.mscx @@ -827,7 +827,7 @@ Alto 480 1 1 @@ -1313,7 +1313,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-fingering-uradd.mscx b/src/engraving/tests/parts_data/part-fingering-uradd.mscx index 5452040691be7..c774ea4cf2314 100644 --- a/src/engraving/tests/parts_data/part-fingering-uradd.mscx +++ b/src/engraving/tests/parts_data/part-fingering-uradd.mscx @@ -821,7 +821,7 @@ Alto 480 1 1 @@ -1300,7 +1300,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-fingering-urdel.mscx b/src/engraving/tests/parts_data/part-fingering-urdel.mscx index 48d257145ef53..ceb3420849d8b 100644 --- a/src/engraving/tests/parts_data/part-fingering-urdel.mscx +++ b/src/engraving/tests/parts_data/part-fingering-urdel.mscx @@ -822,7 +822,7 @@ Alto 480 1 1 @@ -1302,7 +1302,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-image-add.mscx b/src/engraving/tests/parts_data/part-image-add.mscx index d43005857ad63..3c9864a7ec35c 100644 --- a/src/engraving/tests/parts_data/part-image-add.mscx +++ b/src/engraving/tests/parts_data/part-image-add.mscx @@ -822,7 +822,7 @@ Alto 480 1 1 @@ -1302,7 +1302,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-image-del.mscx b/src/engraving/tests/parts_data/part-image-del.mscx index 0b682837eb3aa..436cd0e36900e 100644 --- a/src/engraving/tests/parts_data/part-image-del.mscx +++ b/src/engraving/tests/parts_data/part-image-del.mscx @@ -818,7 +818,7 @@ Alto 480 1 1 @@ -1292,7 +1292,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-image-parts.mscx b/src/engraving/tests/parts_data/part-image-parts.mscx index 88cd00e6e6cc2..12cbff93711a6 100644 --- a/src/engraving/tests/parts_data/part-image-parts.mscx +++ b/src/engraving/tests/parts_data/part-image-parts.mscx @@ -830,7 +830,7 @@ Alto 480 1 1 @@ -1317,7 +1317,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-image-uadd.mscx b/src/engraving/tests/parts_data/part-image-uadd.mscx index 4af03719d5fdc..134148ec269a1 100644 --- a/src/engraving/tests/parts_data/part-image-uadd.mscx +++ b/src/engraving/tests/parts_data/part-image-uadd.mscx @@ -817,7 +817,7 @@ Alto 480 1 1 @@ -1291,7 +1291,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-image-udel.mscx b/src/engraving/tests/parts_data/part-image-udel.mscx index 88cd00e6e6cc2..12cbff93711a6 100644 --- a/src/engraving/tests/parts_data/part-image-udel.mscx +++ b/src/engraving/tests/parts_data/part-image-udel.mscx @@ -830,7 +830,7 @@ Alto 480 1 1 @@ -1317,7 +1317,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-image-uradd.mscx b/src/engraving/tests/parts_data/part-image-uradd.mscx index d43005857ad63..3c9864a7ec35c 100644 --- a/src/engraving/tests/parts_data/part-image-uradd.mscx +++ b/src/engraving/tests/parts_data/part-image-uradd.mscx @@ -822,7 +822,7 @@ Alto 480 1 1 @@ -1302,7 +1302,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-image-urdel.mscx b/src/engraving/tests/parts_data/part-image-urdel.mscx index 0b682837eb3aa..436cd0e36900e 100644 --- a/src/engraving/tests/parts_data/part-image-urdel.mscx +++ b/src/engraving/tests/parts_data/part-image-urdel.mscx @@ -818,7 +818,7 @@ Alto 480 1 1 @@ -1292,7 +1292,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-measure-repeat-add.mscx b/src/engraving/tests/parts_data/part-measure-repeat-add.mscx index 3ede704ac51ab..ec0b724528218 100644 --- a/src/engraving/tests/parts_data/part-measure-repeat-add.mscx +++ b/src/engraving/tests/parts_data/part-measure-repeat-add.mscx @@ -834,7 +834,7 @@ Alto 480 1 1 @@ -1313,7 +1313,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-measure-repeat-del.mscx b/src/engraving/tests/parts_data/part-measure-repeat-del.mscx index 287302e0d0cb6..4af214bbed3c3 100644 --- a/src/engraving/tests/parts_data/part-measure-repeat-del.mscx +++ b/src/engraving/tests/parts_data/part-measure-repeat-del.mscx @@ -1056,7 +1056,7 @@ 480 1 1 @@ -1538,7 +1538,7 @@ 480 1 1 diff --git a/src/engraving/tests/parts_data/part-measure-repeat-parts.mscx b/src/engraving/tests/parts_data/part-measure-repeat-parts.mscx index 5dce188874526..57091ade1e4be 100644 --- a/src/engraving/tests/parts_data/part-measure-repeat-parts.mscx +++ b/src/engraving/tests/parts_data/part-measure-repeat-parts.mscx @@ -1062,7 +1062,7 @@ Alto 480 1 1 @@ -1546,7 +1546,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-measure-repeat-uadd.mscx b/src/engraving/tests/parts_data/part-measure-repeat-uadd.mscx index 4af03719d5fdc..134148ec269a1 100644 --- a/src/engraving/tests/parts_data/part-measure-repeat-uadd.mscx +++ b/src/engraving/tests/parts_data/part-measure-repeat-uadd.mscx @@ -817,7 +817,7 @@ Alto 480 1 1 @@ -1291,7 +1291,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-measure-repeat-udel.mscx b/src/engraving/tests/parts_data/part-measure-repeat-udel.mscx index 587ffaeb42e6c..013087956809c 100644 --- a/src/engraving/tests/parts_data/part-measure-repeat-udel.mscx +++ b/src/engraving/tests/parts_data/part-measure-repeat-udel.mscx @@ -1063,7 +1063,7 @@ 480 1 1 @@ -1548,7 +1548,7 @@ 480 1 1 diff --git a/src/engraving/tests/parts_data/part-measure-repeat-uradd.mscx b/src/engraving/tests/parts_data/part-measure-repeat-uradd.mscx index 3ede704ac51ab..ec0b724528218 100644 --- a/src/engraving/tests/parts_data/part-measure-repeat-uradd.mscx +++ b/src/engraving/tests/parts_data/part-measure-repeat-uradd.mscx @@ -834,7 +834,7 @@ Alto 480 1 1 @@ -1313,7 +1313,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-measure-repeat-urdel.mscx b/src/engraving/tests/parts_data/part-measure-repeat-urdel.mscx index 287302e0d0cb6..4af214bbed3c3 100644 --- a/src/engraving/tests/parts_data/part-measure-repeat-urdel.mscx +++ b/src/engraving/tests/parts_data/part-measure-repeat-urdel.mscx @@ -1056,7 +1056,7 @@ 480 1 1 @@ -1538,7 +1538,7 @@ 480 1 1 diff --git a/src/engraving/tests/parts_data/part-spanners-parts.mscx b/src/engraving/tests/parts_data/part-spanners-parts.mscx index 5432e099f6f0f..8889219e26673 100644 --- a/src/engraving/tests/parts_data/part-spanners-parts.mscx +++ b/src/engraving/tests/parts_data/part-spanners-parts.mscx @@ -691,7 +691,7 @@ Flute 480 1 1 @@ -1068,7 +1068,7 @@ Oboe 480 1 1 diff --git a/src/engraving/tests/parts_data/part-stemless-parts.mscx b/src/engraving/tests/parts_data/part-stemless-parts.mscx index 68d6bfcbb06df..c339f2e40bf41 100644 --- a/src/engraving/tests/parts_data/part-stemless-parts.mscx +++ b/src/engraving/tests/parts_data/part-stemless-parts.mscx @@ -500,7 +500,7 @@ Flute 480 1 1 @@ -794,7 +794,7 @@ Oboe 480 1 1 diff --git a/src/engraving/tests/parts_data/part-symbol-add.mscx b/src/engraving/tests/parts_data/part-symbol-add.mscx index 019cac7d4baa7..a042a2206f172 100644 --- a/src/engraving/tests/parts_data/part-symbol-add.mscx +++ b/src/engraving/tests/parts_data/part-symbol-add.mscx @@ -821,7 +821,7 @@ Alto 480 1 1 @@ -1300,7 +1300,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-symbol-del.mscx b/src/engraving/tests/parts_data/part-symbol-del.mscx index 24fc63a6f0782..c400d26c33ce2 100644 --- a/src/engraving/tests/parts_data/part-symbol-del.mscx +++ b/src/engraving/tests/parts_data/part-symbol-del.mscx @@ -817,7 +817,7 @@ Alto 480 1 1 @@ -1291,7 +1291,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-symbol-parts.mscx b/src/engraving/tests/parts_data/part-symbol-parts.mscx index 92ceb2a9dc422..76af6949a77e1 100644 --- a/src/engraving/tests/parts_data/part-symbol-parts.mscx +++ b/src/engraving/tests/parts_data/part-symbol-parts.mscx @@ -821,7 +821,7 @@ Alto 480 1 1 @@ -1300,7 +1300,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-symbol-uadd.mscx b/src/engraving/tests/parts_data/part-symbol-uadd.mscx index 4af03719d5fdc..134148ec269a1 100644 --- a/src/engraving/tests/parts_data/part-symbol-uadd.mscx +++ b/src/engraving/tests/parts_data/part-symbol-uadd.mscx @@ -817,7 +817,7 @@ Alto 480 1 1 @@ -1291,7 +1291,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-symbol-udel.mscx b/src/engraving/tests/parts_data/part-symbol-udel.mscx index 92ceb2a9dc422..76af6949a77e1 100644 --- a/src/engraving/tests/parts_data/part-symbol-udel.mscx +++ b/src/engraving/tests/parts_data/part-symbol-udel.mscx @@ -821,7 +821,7 @@ Alto 480 1 1 @@ -1300,7 +1300,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-symbol-uradd.mscx b/src/engraving/tests/parts_data/part-symbol-uradd.mscx index 019cac7d4baa7..a042a2206f172 100644 --- a/src/engraving/tests/parts_data/part-symbol-uradd.mscx +++ b/src/engraving/tests/parts_data/part-symbol-uradd.mscx @@ -821,7 +821,7 @@ Alto 480 1 1 @@ -1300,7 +1300,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-symbol-urdel.mscx b/src/engraving/tests/parts_data/part-symbol-urdel.mscx index 24fc63a6f0782..c400d26c33ce2 100644 --- a/src/engraving/tests/parts_data/part-symbol-urdel.mscx +++ b/src/engraving/tests/parts_data/part-symbol-urdel.mscx @@ -817,7 +817,7 @@ Alto 480 1 1 @@ -1291,7 +1291,7 @@ Tenor 480 1 1 diff --git a/src/engraving/tests/parts_data/part-visible-tracks-score-ref.mscx b/src/engraving/tests/parts_data/part-visible-tracks-score-ref.mscx index 89760cc02e13d..cc6a734564def 100644 --- a/src/engraving/tests/parts_data/part-visible-tracks-score-ref.mscx +++ b/src/engraving/tests/parts_data/part-visible-tracks-score-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/engraving/tests/parts_data/partExclusion-part-0.mscx b/src/engraving/tests/parts_data/partExclusion-part-0.mscx index b20e0ef5644d4..e2ae0693465c5 100644 --- a/src/engraving/tests/parts_data/partExclusion-part-0.mscx +++ b/src/engraving/tests/parts_data/partExclusion-part-0.mscx @@ -5,7 +5,7 @@ Flute 480 1 1 diff --git a/src/engraving/tests/parts_data/partExclusion-part-1.mscx b/src/engraving/tests/parts_data/partExclusion-part-1.mscx index 5b1dc1f3941f7..4025efb99363b 100644 --- a/src/engraving/tests/parts_data/partExclusion-part-1.mscx +++ b/src/engraving/tests/parts_data/partExclusion-part-1.mscx @@ -5,7 +5,7 @@ Flute 480 1 1 diff --git a/src/engraving/tests/parts_data/partPropertyLinking-part-0.mscx b/src/engraving/tests/parts_data/partPropertyLinking-part-0.mscx index 8505f4065bb4f..1f446d51b675b 100644 --- a/src/engraving/tests/parts_data/partPropertyLinking-part-0.mscx +++ b/src/engraving/tests/parts_data/partPropertyLinking-part-0.mscx @@ -5,7 +5,7 @@ Flute 480 1 1 diff --git a/src/engraving/tests/parts_data/partPropertyLinking-part-1.mscx b/src/engraving/tests/parts_data/partPropertyLinking-part-1.mscx index 238f6b522d325..bec1a9889479d 100644 --- a/src/engraving/tests/parts_data/partPropertyLinking-part-1.mscx +++ b/src/engraving/tests/parts_data/partPropertyLinking-part-1.mscx @@ -5,7 +5,7 @@ Flute 480 1 1 diff --git a/src/engraving/tests/parts_data/partStyle-score-ref.mscx b/src/engraving/tests/parts_data/partStyle-score-ref.mscx index d57d9621d5fc3..c18d12634571a 100644 --- a/src/engraving/tests/parts_data/partStyle-score-ref.mscx +++ b/src/engraving/tests/parts_data/partStyle-score-ref.mscx @@ -327,7 +327,7 @@ Flute 480 1 1 @@ -537,7 +537,7 @@ Oboe 480 1 1 diff --git a/src/engraving/tests/parts_data/voices-ref.mscx b/src/engraving/tests/parts_data/voices-ref.mscx index c591567968860..0ec61724004c7 100644 --- a/src/engraving/tests/parts_data/voices-ref.mscx +++ b/src/engraving/tests/parts_data/voices-ref.mscx @@ -1091,7 +1091,7 @@ 480 1 1 @@ -1759,7 +1759,7 @@ 480 1 1 @@ -2172,7 +2172,7 @@ 480 1 1 diff --git a/src/engraving/tests/selectionfilter_data/selectionfilter_notesinchords_copypaste-ref.mscx b/src/engraving/tests/selectionfilter_data/selectionfilter_notesinchords_copypaste-ref.mscx index 7723123e544f9..69a4261ae5ae3 100644 --- a/src/engraving/tests/selectionfilter_data/selectionfilter_notesinchords_copypaste-ref.mscx +++ b/src/engraving/tests/selectionfilter_data/selectionfilter_notesinchords_copypaste-ref.mscx @@ -4,7 +4,7 @@ u3owA0tiskD_dyTHnBjo+sH 480 1 1 diff --git a/src/engraving/tests/selectionfilter_data/selectionfilter_notesinchords_deleterange-ref.mscx b/src/engraving/tests/selectionfilter_data/selectionfilter_notesinchords_deleterange-ref.mscx index 76fb7a77fcf89..9432616be6712 100644 --- a/src/engraving/tests/selectionfilter_data/selectionfilter_notesinchords_deleterange-ref.mscx +++ b/src/engraving/tests/selectionfilter_data/selectionfilter_notesinchords_deleterange-ref.mscx @@ -4,7 +4,7 @@ u3owA0tiskD_dyTHnBjo+sH 480 1 1 diff --git a/src/engraving/tests/transpose_data/undoDiatonicTransposeChordSymbols01-ref.mscx b/src/engraving/tests/transpose_data/undoDiatonicTransposeChordSymbols01-ref.mscx index 8c221aefa8b5f..3831abb4b4e71 100644 --- a/src/engraving/tests/transpose_data/undoDiatonicTransposeChordSymbols01-ref.mscx +++ b/src/engraving/tests/transpose_data/undoDiatonicTransposeChordSymbols01-ref.mscx @@ -4,7 +4,7 @@ 2kOmbTnFT2K_1Ffu11EvJBD 480 1 1 diff --git a/src/engraving/tests/transpose_data/undoDiatonicTransposeChordSymbols02-ref.mscx b/src/engraving/tests/transpose_data/undoDiatonicTransposeChordSymbols02-ref.mscx index eacbd9cb262a1..3c8d3845b42b2 100644 --- a/src/engraving/tests/transpose_data/undoDiatonicTransposeChordSymbols02-ref.mscx +++ b/src/engraving/tests/transpose_data/undoDiatonicTransposeChordSymbols02-ref.mscx @@ -4,7 +4,7 @@ 2kOmbTnFT2K_1Ffu11EvJBD 480 1 1 diff --git a/src/engraving/tests/transpose_data/undoTransposeChordSymbols01-ref.mscx b/src/engraving/tests/transpose_data/undoTransposeChordSymbols01-ref.mscx index d41fbdb434a85..98164f85db04b 100644 --- a/src/engraving/tests/transpose_data/undoTransposeChordSymbols01-ref.mscx +++ b/src/engraving/tests/transpose_data/undoTransposeChordSymbols01-ref.mscx @@ -4,7 +4,7 @@ 2kOmbTnFT2K_1Ffu11EvJBD 480 1 1 diff --git a/src/engraving/tests/transpose_data/undoTransposeChordSymbols02-ref.mscx b/src/engraving/tests/transpose_data/undoTransposeChordSymbols02-ref.mscx index eacbd9cb262a1..3c8d3845b42b2 100644 --- a/src/engraving/tests/transpose_data/undoTransposeChordSymbols02-ref.mscx +++ b/src/engraving/tests/transpose_data/undoTransposeChordSymbols02-ref.mscx @@ -4,7 +4,7 @@ 2kOmbTnFT2K_1Ffu11EvJBD 480 1 1 diff --git a/src/framework/draw/bufferedpaintprovider.cpp b/src/framework/draw/bufferedpaintprovider.cpp index 313a937571462..ff911ae639e61 100644 --- a/src/framework/draw/bufferedpaintprovider.cpp +++ b/src/framework/draw/bufferedpaintprovider.cpp @@ -256,6 +256,11 @@ void BufferedPaintProvider::restore() { } +double BufferedPaintProvider::deviceLogicalDpi() const +{ + return 360; +} + void BufferedPaintProvider::setTransform(const Transform& transform) { DrawData::State& st = editableState(); @@ -300,12 +305,6 @@ void BufferedPaintProvider::drawText(const RectF& rect, int flags, const String& editableData().texts.push_back(DrawText { DrawText::Rect, rect, flags, text }); } -void BufferedPaintProvider::drawTextWorkaround(const Font& f, const PointF& pos, const String& text) -{ - setFont(f); - drawText(pos, text); -} - void BufferedPaintProvider::drawSymbol(const PointF& point, char32_t ucs4Code) { drawText(point, String::fromUcs4(&ucs4Code, 1)); diff --git a/src/framework/draw/bufferedpaintprovider.h b/src/framework/draw/bufferedpaintprovider.h index ea6a204ffd243..96b607f7de1a0 100644 --- a/src/framework/draw/bufferedpaintprovider.h +++ b/src/framework/draw/bufferedpaintprovider.h @@ -61,6 +61,8 @@ class BufferedPaintProvider : public IPaintProvider void save() override; void restore() override; + double deviceLogicalDpi() const override; + void setTransform(const Transform& transform) override; const Transform& transform() const override; @@ -70,7 +72,6 @@ class BufferedPaintProvider : public IPaintProvider void drawText(const PointF& point, const String& text) override; void drawText(const RectF& rect, int flags, const String& text) override; - void drawTextWorkaround(const Font& f, const PointF& pos, const String& text) override; void drawSymbol(const PointF& point, char32_t ucs4Code) override; diff --git a/src/framework/draw/drawmodule.cpp b/src/framework/draw/drawmodule.cpp index 936841b9264fb..3978bd75b9d24 100644 --- a/src/framework/draw/drawmodule.cpp +++ b/src/framework/draw/drawmodule.cpp @@ -49,12 +49,10 @@ void DrawModule::registerExports() ioc()->registerExport(moduleName(), new QImageProvider()); - auto mainFProvider = std::make_shared(iocContext()); auto qtFProvider = std::make_shared(); - auto fdispatcher = std::make_shared(mainFProvider, qtFProvider); m_fontsEngine = std::make_shared(iocContext()); - ioc()->registerExport(moduleName(), fdispatcher); + ioc()->registerExport(moduleName(), qtFProvider); ioc()->registerExport(moduleName(), m_fontsEngine); ioc()->registerExport(moduleName(), new FontsDatabase()); diff --git a/src/framework/draw/fontmetrics.cpp b/src/framework/draw/fontmetrics.cpp index 7f2226a824f11..b3fa21d0b2187 100644 --- a/src/framework/draw/fontmetrics.cpp +++ b/src/framework/draw/fontmetrics.cpp @@ -74,9 +74,9 @@ double FontMetrics::horizontalAdvance(const String& string) const return fontProvider()->horizontalAdvance(m_font, string); } -double FontMetrics::horizontalAdvance(const Char& ch) const +double FontMetrics::horizontalAdvance(char32_t ucs4) const { - return fontProvider()->horizontalAdvance(m_font, ch); + return fontProvider()->horizontalAdvance(m_font, ucs4); } RectF FontMetrics::boundingRect(const String& string) const @@ -84,14 +84,9 @@ RectF FontMetrics::boundingRect(const String& string) const return fontProvider()->boundingRect(m_font, string); } -RectF FontMetrics::boundingRect(const Char& ch) const +RectF FontMetrics::boundingRect(char32_t ucs4) const { - return fontProvider()->boundingRect(m_font, ch); -} - -RectF FontMetrics::boundingRect(const RectF& r, int flags, const String& string) const -{ - return fontProvider()->boundingRect(m_font, r, flags, string); + return fontProvider()->boundingRect(m_font, ucs4); } RectF FontMetrics::tightBoundingRect(const String& string) const @@ -104,14 +99,9 @@ RectF FontMetrics::tightBoundingRect(const Char& ch) const return fontProvider()->tightBoundingRect(m_font, ch); } -bool FontMetrics::inFont(Char ch) const -{ - return fontProvider()->inFont(m_font, ch); -} - -bool FontMetrics::inFontUcs4(char32_t ucs4) const +bool FontMetrics::inFont(char32_t ucs4) const { - return fontProvider()->inFontUcs4(m_font, ucs4); + return fontProvider()->inFont(m_font, ucs4); } // Static diff --git a/src/framework/draw/fontmetrics.h b/src/framework/draw/fontmetrics.h index 4ed3140b9d244..1ff1aee5ccdd0 100644 --- a/src/framework/draw/fontmetrics.h +++ b/src/framework/draw/fontmetrics.h @@ -49,16 +49,15 @@ class FontMetrics double width(const Char& ch) const; double horizontalAdvance(const String& string) const; - double horizontalAdvance(const Char& ch) const; + double horizontalAdvance(char32_t ucs4) const; RectF boundingRect(const String& string) const; - RectF boundingRect(const Char& ch) const; - RectF boundingRect(const RectF& r, int flags, const String& string) const; + RectF boundingRect(char32_t ucs4) const; + RectF tightBoundingRect(const String& string) const; RectF tightBoundingRect(const Char& ch) const; - bool inFont(Char ch) const; - bool inFontUcs4(char32_t ucs4) const; + bool inFont(char32_t ucs4) const; static double width(const Font& f, const String& string); static RectF boundingRect(const Font& f, const String& string); diff --git a/src/framework/draw/ifontprovider.h b/src/framework/draw/ifontprovider.h index 4c8ec431e2687..29f6987d70da8 100644 --- a/src/framework/draw/ifontprovider.h +++ b/src/framework/draw/ifontprovider.h @@ -47,21 +47,16 @@ class IFontProvider : MODULE_EXPORT_INTERFACE virtual double ascent(const Font& f) const = 0; virtual double descent(const Font& f) const = 0; - virtual bool inFont(const Font& f, Char ch) const = 0; - virtual bool inFontUcs4(const Font& f, char32_t ucs4) const = 0; + virtual bool inFont(const Font& f, char32_t ucs4) const = 0; // Text virtual double horizontalAdvance(const Font& f, const String& string) const = 0; - virtual double horizontalAdvance(const Font& f, const Char& ch) const = 0; + virtual double horizontalAdvance(const Font& f, char32_t ucs4) const = 0; virtual RectF boundingRect(const Font& f, const String& string) const = 0; - virtual RectF boundingRect(const Font& f, const Char& ch) const = 0; - virtual RectF boundingRect(const Font& f, const RectF& r, int flags, const String& string) const = 0; - virtual RectF tightBoundingRect(const Font& f, const String& string) const = 0; + virtual RectF boundingRect(const Font& f, char32_t ucs4) const = 0; - // Score symbols - virtual RectF symBBox(const Font& f, char32_t ucs4, double DPI_F) const = 0; - virtual double symAdvance(const Font& f, char32_t ucs4, double DPI_F) const = 0; + virtual RectF tightBoundingRect(const Font& f, const String& string) const = 0; }; } diff --git a/src/framework/draw/internal/fontprovider.cpp b/src/framework/draw/internal/fontprovider.cpp index 5a5b9cc42a45d..c90ab68726009 100644 --- a/src/framework/draw/internal/fontprovider.cpp +++ b/src/framework/draw/internal/fontprovider.cpp @@ -63,14 +63,9 @@ double FontProvider::descent(const muse::draw::Font& f) const return fontsEngine()->descent(f); } -bool FontProvider::inFont(const muse::draw::Font& f, muse::Char ch) const +bool FontProvider::inFont(const muse::draw::Font& f, char32_t ucs4) const { - return inFontUcs4(f, static_cast(ch.unicode())); -} - -bool FontProvider::inFontUcs4(const muse::draw::Font& f, char32_t ucs4) const -{ - return fontsEngine()->inFontUcs4(f, ucs4); + return fontsEngine()->inFont(f, ucs4); } // Text @@ -79,9 +74,9 @@ double FontProvider::horizontalAdvance(const muse::draw::Font& f, const muse::St return fontsEngine()->horizontalAdvance(f, string.toStdU32String()); } -double FontProvider::horizontalAdvance(const muse::draw::Font& f, const muse::Char& ch) const +double FontProvider::horizontalAdvance(const muse::draw::Font& f, char32_t ucs4) const { - return fontsEngine()->horizontalAdvance(f, ch.unicode()); + return fontsEngine()->horizontalAdvance(f, ucs4); } RectF FontProvider::boundingRect(const muse::draw::Font& f, const muse::String& string) const @@ -89,32 +84,12 @@ RectF FontProvider::boundingRect(const muse::draw::Font& f, const muse::String& return fontsEngine()->boundingRect(f, string.toStdU32String()); } -RectF FontProvider::boundingRect(const muse::draw::Font& f, const muse::Char& ch) const -{ - return fontsEngine()->boundingRect(f, ch.unicode()); -} - -RectF FontProvider::boundingRect(const muse::draw::Font& f, const RectF& r, int flags, const muse::String& string) const +RectF FontProvider::boundingRect(const muse::draw::Font& f, char32_t ucs4) const { - UNUSED(r); - UNUSED(flags); - return boundingRect(f, string); + return fontsEngine()->boundingRect(f, ucs4); } RectF FontProvider::tightBoundingRect(const muse::draw::Font& f, const muse::String& string) const { return fontsEngine()->tightBoundingRect(f, string.toStdU32String()); } - -// Score symbols -RectF FontProvider::symBBox(const muse::draw::Font& f, char32_t ucs4, double dpi_f) const -{ - UNUSED(dpi_f); - return fontsEngine()->symBBox(f, ucs4); -} - -double FontProvider::symAdvance(const muse::draw::Font& f, char32_t ucs4, double dpi_f) const -{ - UNUSED(dpi_f); - return fontsEngine()->symAdvance(f, ucs4); -} diff --git a/src/framework/draw/internal/fontprovider.h b/src/framework/draw/internal/fontprovider.h index 0e7ae113cd1d6..1f45d9653fa13 100644 --- a/src/framework/draw/internal/fontprovider.h +++ b/src/framework/draw/internal/fontprovider.h @@ -46,20 +46,15 @@ class FontProvider : public IFontProvider, public Injectable double ascent(const Font& f) const override; double descent(const Font& f) const override; - bool inFont(const Font& f, Char ch) const override; - bool inFontUcs4(const Font& f, char32_t ucs4) const override; + bool inFont(const Font& f, char32_t ucs4) const override; // Text double horizontalAdvance(const Font& f, const String& string) const override; - double horizontalAdvance(const Font& f, const Char& ch) const override; + double horizontalAdvance(const Font& f, char32_t ucs4) const override; RectF boundingRect(const Font& f, const String& string) const override; - RectF boundingRect(const Font& f, const Char& ch) const override; - RectF boundingRect(const Font& f, const RectF& r, int flags, const String& string) const override; - RectF tightBoundingRect(const Font& f, const String& string) const override; + RectF boundingRect(const Font& f, char32_t ucs4) const override; - // Score symbols - RectF symBBox(const Font& f, char32_t ucs4, double DPI_F) const override; - double symAdvance(const Font& f, char32_t ucs4, double DPI_F) const override; + RectF tightBoundingRect(const Font& f, const String& string) const override; }; } diff --git a/src/framework/draw/internal/fontproviderdispatcher.cpp b/src/framework/draw/internal/fontproviderdispatcher.cpp index c7c0aef8e18dc..28a7e67a182d2 100644 --- a/src/framework/draw/internal/fontproviderdispatcher.cpp +++ b/src/framework/draw/internal/fontproviderdispatcher.cpp @@ -71,14 +71,9 @@ double FontProviderDispatcher::descent(const muse::draw::Font& f) const return m_mainFProvider->descent(f); } -bool FontProviderDispatcher::inFont(const muse::draw::Font& f, muse::Char ch) const +bool FontProviderDispatcher::inFont(const muse::draw::Font& f, char32_t ucs4) const { - return inFontUcs4(f, static_cast(ch.unicode())); -} - -bool FontProviderDispatcher::inFontUcs4(const muse::draw::Font& f, char32_t ucs4) const -{ - bool ret = m_mainFProvider->inFontUcs4(f, ucs4); + bool ret = m_mainFProvider->inFont(f, ucs4); return ret; } @@ -88,9 +83,9 @@ double FontProviderDispatcher::horizontalAdvance(const muse::draw::Font& f, cons return m_qtFProvider->horizontalAdvance(f, string); } -double FontProviderDispatcher::horizontalAdvance(const muse::draw::Font& f, const muse::Char& ch) const +double FontProviderDispatcher::horizontalAdvance(const muse::draw::Font& f, char32_t ucs4) const { - return m_qtFProvider->horizontalAdvance(f, ch.unicode()); + return m_qtFProvider->horizontalAdvance(f, ucs4); } RectF FontProviderDispatcher::boundingRect(const muse::draw::Font& f, const muse::String& string) const @@ -98,30 +93,12 @@ RectF FontProviderDispatcher::boundingRect(const muse::draw::Font& f, const muse return m_qtFProvider->boundingRect(f, string); } -RectF FontProviderDispatcher::boundingRect(const muse::draw::Font& f, const muse::Char& ch) const -{ - return m_qtFProvider->boundingRect(f, ch.unicode()); -} - -RectF FontProviderDispatcher::boundingRect(const muse::draw::Font& f, const RectF& r, int flags, const muse::String& string) const +RectF FontProviderDispatcher::boundingRect(const muse::draw::Font& f, char32_t ucs4) const { - UNUSED(r); - UNUSED(flags); - return boundingRect(f, string); + return m_qtFProvider->boundingRect(f, ucs4); } RectF FontProviderDispatcher::tightBoundingRect(const muse::draw::Font& f, const muse::String& string) const { return m_qtFProvider->tightBoundingRect(f, string); } - -// Score symbols -RectF FontProviderDispatcher::symBBox(const muse::draw::Font& f, char32_t ucs4, double dpi_f) const -{ - return m_mainFProvider->symBBox(f, ucs4, dpi_f); -} - -double FontProviderDispatcher::symAdvance(const muse::draw::Font& f, char32_t ucs4, double dpi_f) const -{ - return m_mainFProvider->symAdvance(f, ucs4, dpi_f); -} diff --git a/src/framework/draw/internal/fontproviderdispatcher.h b/src/framework/draw/internal/fontproviderdispatcher.h index abcfed0d984f7..51f0b7025eb3d 100644 --- a/src/framework/draw/internal/fontproviderdispatcher.h +++ b/src/framework/draw/internal/fontproviderdispatcher.h @@ -42,21 +42,16 @@ class FontProviderDispatcher : public IFontProvider double ascent(const Font& f) const override; double descent(const Font& f) const override; - bool inFont(const Font& f, Char ch) const override; - bool inFontUcs4(const Font& f, char32_t ucs4) const override; + bool inFont(const Font& f, char32_t ucs4) const override; // Text double horizontalAdvance(const Font& f, const String& string) const override; - double horizontalAdvance(const Font& f, const Char& ch) const override; + double horizontalAdvance(const Font& f, char32_t ucs4) const override; RectF boundingRect(const Font& f, const String& string) const override; - RectF boundingRect(const Font& f, const Char& ch) const override; - RectF boundingRect(const Font& f, const RectF& r, int flags, const String& string) const override; - RectF tightBoundingRect(const Font& f, const String& string) const override; + RectF boundingRect(const Font& f, char32_t ucs4) const override; - // Score symbols - RectF symBBox(const Font& f, char32_t ucs4, double DPI_F) const override; - double symAdvance(const Font& f, char32_t ucs4, double DPI_F) const override; + RectF tightBoundingRect(const Font& f, const String& string) const override; private: std::shared_ptr m_mainFProvider; diff --git a/src/framework/draw/internal/fontsengine.cpp b/src/framework/draw/internal/fontsengine.cpp index 2258893ecad9d..7d9bf3d93f3ec 100644 --- a/src/framework/draw/internal/fontsengine.cpp +++ b/src/framework/draw/internal/fontsengine.cpp @@ -149,7 +149,7 @@ double FontsEngine::descent(const Font& f) const return from_f26d6(rf->face->descent()) * rf->pixelScale(); } -bool FontsEngine::inFontUcs4(const Font& f, char32_t ucs4) const +bool FontsEngine::inFont(const Font& f, char32_t ucs4) const { RequireFace* rf = fontFace(f); IF_ASSERT_FAILED(rf && rf->face) { @@ -331,30 +331,6 @@ RectF FontsEngine::tightBoundingRect(const Font& f, const std::u32string& text) return fromFBBox(rect, rf->pixelScale()); } -RectF FontsEngine::symBBox(const Font& f, char32_t ucs4) const -{ - RequireFace* rf = fontFace(f, true); - IF_ASSERT_FAILED(rf && rf->face) { - return RectF(); - } - - glyph_idx_t glyphIdx = rf->face->glyphIndex(ucs4); - FBBox bb = rf->face->glyphBbox(glyphIdx); - return fromFBBox(bb, rf->pixelScale()); -} - -double FontsEngine::symAdvance(const Font& f, char32_t ucs4) const -{ - RequireFace* rf = fontFace(f, true); - IF_ASSERT_FAILED(rf && rf->face) { - return 0.0; - } - - glyph_idx_t glyphIdx = rf->face->glyphIndex(ucs4); - f26dot6_t advance = rf->face->glyphAdvance(glyphIdx); - return from_f26d6(advance) * rf->pixelScale(); -} - #ifndef MUSE_MODULE_DRAW_USE_QTTEXTDRAW static void generateSdf(GlyphImage& out, glyph_idx_t glyphIdx, const IFontFace* face) { diff --git a/src/framework/draw/internal/fontsengine.h b/src/framework/draw/internal/fontsengine.h index d3cef6f3dea05..54798e543dd2e 100644 --- a/src/framework/draw/internal/fontsengine.h +++ b/src/framework/draw/internal/fontsengine.h @@ -51,7 +51,7 @@ class FontsEngine : public IFontsEngine, public Injectable double ascent(const Font& f) const override; double descent(const Font& f) const override; - bool inFontUcs4(const Font& f, char32_t ucs4) const override; + bool inFont(const Font& f, char32_t ucs4) const override; double horizontalAdvance(const Font& f, const char32_t& ch) const override; double horizontalAdvance(const Font& f, const std::u32string& text) const override; @@ -60,10 +60,6 @@ class FontsEngine : public IFontsEngine, public Injectable RectF boundingRect(const Font& f, const std::u32string& text) const override; RectF tightBoundingRect(const Font& f, const std::u32string& text) const override; - // Score symbols - RectF symBBox(const Font& f, char32_t ucs4) const override; - double symAdvance(const Font& f, char32_t ucs4) const override; - // For draw std::vector render(const Font& f, const std::u32string& text) const override; diff --git a/src/framework/draw/internal/ifontsengine.h b/src/framework/draw/internal/ifontsengine.h index 740419ebc8345..d75768a3144fd 100644 --- a/src/framework/draw/internal/ifontsengine.h +++ b/src/framework/draw/internal/ifontsengine.h @@ -42,7 +42,7 @@ class IFontsEngine : public modularity::IModuleExportInterface virtual double ascent(const Font& f) const = 0; virtual double descent(const Font& f) const = 0; - virtual bool inFontUcs4(const Font& f, char32_t ucs4) const = 0; + virtual bool inFont(const Font& f, char32_t ucs4) const = 0; virtual double horizontalAdvance(const Font& f, const char32_t& ch) const = 0; virtual double horizontalAdvance(const Font& f, const std::u32string& text) const = 0; @@ -51,10 +51,6 @@ class IFontsEngine : public modularity::IModuleExportInterface virtual RectF boundingRect(const Font& f, const std::u32string& text) const = 0; virtual RectF tightBoundingRect(const Font& f, const std::u32string& text) const = 0; - // Score symbols - virtual RectF symBBox(const Font& f, char32_t ucs4) const = 0; - virtual double symAdvance(const Font& f, char32_t ucs4) const = 0; - // Draw virtual std::vector render(const Font& f, const std::u32string& text) const = 0; }; diff --git a/src/framework/draw/internal/qfontprovider.cpp b/src/framework/draw/internal/qfontprovider.cpp index c0c0354f2c211..e64cc8302d4a8 100644 --- a/src/framework/draw/internal/qfontprovider.cpp +++ b/src/framework/draw/internal/qfontprovider.cpp @@ -25,14 +25,8 @@ #include #include #include - -#define DISABLED_MUSICSYMBOLS_METRICS - -#ifndef DISABLED_MUSICSYMBOLS_METRICS -#include "fontengineft.h" -#endif - -#include "log.h" +#include +#include using namespace muse; using namespace muse::draw; @@ -46,11 +40,12 @@ class FontPaintDevice : public QPaintDevice } protected: + static constexpr double MU_ENGRAVING_DPI = 1200; // Same as mu::engraving::DPI. TODO: pass as parameter int metric(PaintDeviceMetric m) const override { switch (m) { case QPaintDevice::PdmDpiY: - return 360; // same as mu::engraving::DPI + return MU_ENGRAVING_DPI; default: return 1; } @@ -95,21 +90,23 @@ double QFontProvider::descent(const Font& f) const return QFontMetricsF(f.toQFont(), &device).descent(); } -bool QFontProvider::inFont(const Font& f, Char ch) const -{ - return QFontMetricsF(f.toQFont(), &device).inFont(ch); -} - -bool QFontProvider::inFontUcs4(const Font& f, char32_t ucs4) const +bool QFontProvider::inFont(const Font& f, char32_t ucs4) const { - if (!QFontMetricsF(f.toQFont(), &device).inFontUcs4(ucs4)) { + // NOTE: QFontMetricsF::inFontUcs4 is unreliable for our use case because it uses Qt's fallback + // system even if the flag noFontMerging is set, and returns true if the character + // is found in any of the fallbacks. We need to use instead QRawFont, which represents the + // *actual* font, not Qt's interpretation of the query. From QRawFont we can query the glyph index + // of a character (zero if not in font) and the bounding rectangle of the actual glyph at that index. + QRawFont qRawFont = QRawFont::fromFont(f.toQFont()); + int glyphIndex = qRawFont.glyphIndexesForString(QString(QChar::fromUcs4(ucs4)))[0]; + if (glyphIndex == 0) { return false; } //! @NOTE some symbols in fonts dont have glyph. For example U+ee80 //! exists in Bravura.otf but doesn't have glyph //! so QFontMetricsF returns true in that case - return symBBox(f, ucs4, 1.).isValid(); + return qRawFont.boundingRect(glyphIndex).isValid(); } double QFontProvider::horizontalAdvance(const Font& f, const String& string) const @@ -117,9 +114,13 @@ double QFontProvider::horizontalAdvance(const Font& f, const String& string) con return QFontMetricsF(f.toQFont(), &device).horizontalAdvance(string); } -double QFontProvider::horizontalAdvance(const Font& f, const Char& ch) const +double QFontProvider::horizontalAdvance(const Font& f, char32_t ucs4) const { - return QFontMetricsF(f.toQFont(), &device).horizontalAdvance(ch); + if (Char::requiresSurrogates(ucs4)) { + return QFontMetricsF(f.toQFont(), &device).horizontalAdvance(String::fromUcs4(ucs4)); + } + + return QFontMetricsF(f.toQFont(), &device).horizontalAdvance(static_cast(ucs4)); } RectF QFontProvider::boundingRect(const Font& f, const String& string) const @@ -127,14 +128,27 @@ RectF QFontProvider::boundingRect(const Font& f, const String& string) const return RectF::fromQRectF(QFontMetricsF(f.toQFont(), &device).boundingRect(string)); } -RectF QFontProvider::boundingRect(const Font& f, const Char& ch) const +RectF QFontProvider::boundingRect(const Font& f, char32_t ucs4) const { - return RectF::fromQRectF(QFontMetricsF(f.toQFont(), &device).boundingRect(ch)); -} + if (Char::requiresSurrogates(ucs4)) { + return RectF::fromQRectF(QFontMetrics(f.toQFont(), &device).boundingRect(String::fromUcs4(ucs4))); + } -RectF QFontProvider::boundingRect(const Font& f, const RectF& r, int flags, const String& string) const -{ - return RectF::fromQRectF(QFontMetricsF(f.toQFont(), &device).boundingRect(r.toQRectF(), flags, string)); + if (f.type() == Font::Type::MusicSymbol || f.type() == Font::Type::MusicSymbolText) { + // QFontMetrics::boundingRect returns pixel values obtained by rasterization of the font. + // QPainterPath::boundingRect works from the actual vector shape so it's more accurate. + // There is still some discretization going on so we can make it even more accurate by upscaling. + // CAUTION: More expensive! Ok for music glyphs because they are cached. + QFont qf = f.toQFont(); + qf = QFont(qf, &device); + static constexpr double UPSCALING = 4.0; + qf.setPointSizeF(qf.pointSizeF() * UPSCALING); + QPainterPath path; + path.addText(QPointF(), qf, QString(static_cast(ucs4))); + return RectF::fromQRectF(path.boundingRect()).scaled(SizeF(1.0 / UPSCALING, 1.0 / UPSCALING)); + } + + return RectF::fromQRectF(QFontMetricsF(f.toQFont(), &device).boundingRect(static_cast(ucs4))); } RectF QFontProvider::tightBoundingRect(const Font& f, const String& string) const @@ -146,100 +160,3 @@ RectF QFontProvider::tightBoundingRect(const Font& f, const String& string) cons } return RectF::fromQRectF(boundingRect); } - -// Score symbols - -RectF QFontProvider::symBBox(const Font& f, char32_t ucs4, double dpi_f) const -{ -#ifndef DISABLED_MUSICSYMBOLS_METRICS - FontEngineFT* engine = symEngine(f); - if (!engine) { - return RectF(); - } - - RectF rect = RectF::fromQRectF(engine->bbox(ucs4, dpi_f)); - if (!rect.isValid()) { - for (const auto& fontName : QFont::substitutes(f.family())) { - Font subFont(f); - subFont.setFamily(fontName, f.type()); - engine = symEngine(subFont); - if (!engine) { - continue; - } - - rect = RectF::fromQRectF(engine->bbox(ucs4, dpi_f)); - if (rect.isValid()) { - break; - } - } - } - - return rect; -#else - UNUSED(f); - UNUSED(ucs4); - UNUSED(dpi_f); - UNREACHABLE; - return RectF(); -#endif -} - -double QFontProvider::symAdvance(const Font& f, char32_t ucs4, double dpi_f) const -{ -#ifndef DISABLED_MUSICSYMBOLS_METRICS - FontEngineFT* engine = symEngine(f); - if (!engine) { - return 0.0; - } - - double symAdvance = engine->advance(ucs4, dpi_f); - if (RealIsNull(symAdvance)) { - for (const auto& fontName : QFont::substitutes(f.family())) { - Font subFont(f); - subFont.setFamily(fontName, f.type()); - engine = symEngine(subFont); - if (!engine) { - continue; - } - - symAdvance = engine->advance(ucs4, dpi_f); - if (!RealIsNull(symAdvance)) { - break; - } - } - } - - return symAdvance; -#else - UNUSED(f); - UNUSED(ucs4); - UNUSED(dpi_f); - UNREACHABLE; - return 0.0; -#endif -} - -FontEngineFT* QFontProvider::symEngine(const Font& f) const -{ -#ifndef DISABLED_MUSICSYMBOLS_METRICS - QString path = m_symbolsFonts.value(f.family()).toQString(); - if (path.isEmpty()) { - return nullptr; - } - - FontEngineFT* engine = m_symEngines.value(path, nullptr); - if (!engine) { - engine = new FontEngineFT(); - if (!engine->load(path)) { - delete engine; - return nullptr; - } - m_symEngines[path] = engine; - } - return engine; -#else - UNUSED(f); - UNREACHABLE; - return nullptr; -#endif -} diff --git a/src/framework/draw/internal/qfontprovider.h b/src/framework/draw/internal/qfontprovider.h index 713739b1cabe9..37ffaef68c9b2 100644 --- a/src/framework/draw/internal/qfontprovider.h +++ b/src/framework/draw/internal/qfontprovider.h @@ -41,27 +41,19 @@ class QFontProvider : public IFontProvider double ascent(const Font& f) const override; double descent(const Font& f) const override; - bool inFont(const Font& f, Char ch) const override; - bool inFontUcs4(const Font& f, char32_t ucs4) const override; + bool inFont(const Font& f, char32_t ucs4) const override; // Text double horizontalAdvance(const Font& f, const String& string) const override; - double horizontalAdvance(const Font& f, const Char& ch) const override; + double horizontalAdvance(const Font& f, char32_t ucs4) const override; RectF boundingRect(const Font& f, const String& string) const override; - RectF boundingRect(const Font& f, const Char& ch) const override; - RectF boundingRect(const Font& f, const RectF& r, int flags, const String& string) const override; - RectF tightBoundingRect(const Font& f, const String& string) const override; + RectF boundingRect(const Font& f, char32_t ucs4) const override; - // Score symbols - RectF symBBox(const Font& f, char32_t ucs4, double DPI_F) const override; - double symAdvance(const Font& f, char32_t ucs4, double DPI_F) const override; + RectF tightBoundingRect(const Font& f, const String& string) const override; private: - FontEngineFT* symEngine(const Font& f) const; - QHash m_symbolsFonts; - mutable QHash m_symEngines; }; } diff --git a/src/framework/draw/internal/qpainterprovider.cpp b/src/framework/draw/internal/qpainterprovider.cpp index e63109a050fa9..6d84612078589 100644 --- a/src/framework/draw/internal/qpainterprovider.cpp +++ b/src/framework/draw/internal/qpainterprovider.cpp @@ -190,6 +190,11 @@ void QPainterProvider::restore() m_transform = Transform::fromQTransform(m_painter->transform()); } +double QPainterProvider::deviceLogicalDpi() const +{ + return m_painter->device()->logicalDpiX(); +} + void QPainterProvider::setTransform(const Transform& transform) { m_transform = transform; @@ -242,67 +247,6 @@ void QPainterProvider::drawText(const RectF& rect, int flags, const String& text m_painter->drawText(rect.toQRectF(), flags, text); } -void QPainterProvider::drawTextWorkaround(const Font& f, const PointF& pos, const String& text) -{ - m_painter->save(); - double mm = m_painter->worldTransform().m11(); - double dx = m_painter->worldTransform().dx(); - double dy = m_painter->worldTransform().dy(); - // diagonal elements will now be changed to 1.0 - m_painter->setWorldTransform(QTransform(1.0, 0.0, 0.0, 1.0, dx, dy)); - - // correction factor for bold text drawing, due to the change of the diagonal elements - double factor = 1.0 / mm; - QFont fnew(f.toQFont(), m_painter->device()); - fnew.setPointSizeF(f.pointSizeF() / factor); - QRawFont fRaw = QRawFont::fromFont(fnew); - QTextLayout textLayout(text, f.toQFont(), m_painter->device()); - textLayout.beginLayout(); - while (true) { - QTextLine line = textLayout.createLine(); - if (!line.isValid()) { - break; - } - } - textLayout.endLayout(); - // glyphruns with correct positions, but potentially wrong glyphs - // (see bug https://musescore.org/en/node/117191 regarding positions and DPI) - QList glyphruns = textLayout.glyphRuns(); - double offset = 0; - // glyphrun drawing has an offset equal to the max ascent of the text fragment - for (int i = 0; i < glyphruns.length(); i++) { - double value = glyphruns.at(i).rawFont().ascent() / factor; - if (value > offset) { - offset = value; - } - } - for (int i = 0; i < glyphruns.length(); i++) { - QVector positions1 = glyphruns.at(i).positions(); - QVector positions2; - // calculate the new positions for the scaled geometry - for (int j = 0; j < positions1.length(); j++) { - QPointF newPoint = positions1.at(j) / factor; - positions2.append(newPoint); - } - QGlyphRun glyphrun2 = glyphruns.at(i); - glyphrun2.setPositions(positions2); - // change the glyphs with the correct glyphs - // and account for glyph substitution - if (glyphrun2.rawFont().familyName() != fnew.family()) { - QFont f2(fnew); - f2.setFamily(glyphrun2.rawFont().familyName()); - glyphrun2.setRawFont(QRawFont::fromFont(f2)); - } else { - glyphrun2.setRawFont(fRaw); - } - m_painter->drawGlyphRun(QPointF(pos.x() / factor, pos.y() / factor - offset), glyphrun2); - positions2.clear(); - } - // Restore the QPainter to its former state - m_painter->setWorldTransform(QTransform(mm, 0.0, 0.0, mm, dx, dy)); - m_painter->restore(); -} - void QPainterProvider::drawSymbol(const PointF& point, char32_t ucs4Code) { static QHash cache; diff --git a/src/framework/draw/internal/qpainterprovider.h b/src/framework/draw/internal/qpainterprovider.h index 14efc0215f8bc..e5b9421ad6c36 100644 --- a/src/framework/draw/internal/qpainterprovider.h +++ b/src/framework/draw/internal/qpainterprovider.h @@ -65,6 +65,8 @@ class QPainterProvider : public IPaintProvider void save() override; void restore() override; + double deviceLogicalDpi() const override; + void setTransform(const Transform& transform) override; const Transform& transform() const override; @@ -74,7 +76,6 @@ class QPainterProvider : public IPaintProvider void drawText(const PointF& point, const String& text) override; void drawText(const RectF& rect, int flags, const String& text) override; - void drawTextWorkaround(const Font& f, const PointF& pos, const String& text) override; void drawSymbol(const PointF& point, char32_t ucs4Code) override; diff --git a/src/framework/draw/ipaintprovider.h b/src/framework/draw/ipaintprovider.h index 3e33d2823df1e..2f442f9719995 100644 --- a/src/framework/draw/ipaintprovider.h +++ b/src/framework/draw/ipaintprovider.h @@ -65,6 +65,8 @@ class IPaintProvider virtual void save() = 0; virtual void restore() = 0; + virtual double deviceLogicalDpi() const = 0; + virtual void setTransform(const Transform& transform) = 0; virtual const Transform& transform() const = 0; @@ -74,7 +76,6 @@ class IPaintProvider virtual void drawText(const PointF& point, const String& text) = 0; virtual void drawText(const RectF& rect, int flags, const String& text) = 0; - virtual void drawTextWorkaround(const Font& f, const PointF& pos, const String& text) = 0; // see Painter::drawTextWorkaround .h file virtual void drawSymbol(const PointF& point, char32_t ucs4Code) = 0; diff --git a/src/framework/draw/painter.cpp b/src/framework/draw/painter.cpp index a6998712bdfac..023d327a4c1dd 100644 --- a/src/framework/draw/painter.cpp +++ b/src/framework/draw/painter.cpp @@ -216,6 +216,11 @@ void Painter::restore() } } +double Painter::deviceLogicalDpi() const +{ + return m_provider->deviceLogicalDpi(); +} + void Painter::setWorldTransform(const Transform& matrix, bool combine) { State& st = editableState(); @@ -420,8 +425,19 @@ void Painter::drawRoundedRect(const RectF& rect, double xRadius, double yRadius) drawPath(path); } +void Painter::applyFontSizeScaling() +{ + static constexpr double MU_ENGRAVING_DPI = 1200; // Same as mu::engraving::DPI. TODO: pass as parameter. + Font f = font(); + double scaledPointSize = f.pointSizeF() * MU_ENGRAVING_DPI / deviceLogicalDpi(); + f.setPointSizeF(scaledPointSize); + setFont(f); +} + void Painter::drawText(const PointF& point, const String& text) { + applyFontSizeScaling(); + m_provider->drawText(point, text); if (extended) { extended->drawText(point, text); @@ -430,22 +446,18 @@ void Painter::drawText(const PointF& point, const String& text) void Painter::drawText(const RectF& rect, int flags, const String& text) { + applyFontSizeScaling(); + m_provider->drawText(rect, flags, text); if (extended) { extended->drawText(rect, flags, text); } } -void Painter::drawTextWorkaround(Font& f, const PointF pos, const String& text) -{ - m_provider->drawTextWorkaround(f, pos, text); - if (extended) { - extended->drawTextWorkaround(f, pos, text); - } -} - void Painter::drawSymbol(const PointF& point, char32_t ucs4Code) { + applyFontSizeScaling(); + m_provider->drawSymbol(point, ucs4Code); if (extended) { extended->drawSymbol(point, ucs4Code); diff --git a/src/framework/draw/painter.h b/src/framework/draw/painter.h index 62c686dca83db..550cd357a5b04 100644 --- a/src/framework/draw/painter.h +++ b/src/framework/draw/painter.h @@ -93,6 +93,8 @@ class Painter void save(); void restore(); + double deviceLogicalDpi() const; + // drawing void fillPath(const PainterPath& path, const Brush& brush); void drawPath(const PainterPath& path); @@ -131,17 +133,6 @@ class Painter void drawText(const RectF& rect, int flags, const String& text); - //! NOTE workaround for https://musescore.org/en/node/284218 - //! and https://musescore.org/en/node/281601 - //! only needed for certain artificially emboldened fonts - //! see https://musescore.org/en/node/281601#comment-900261 - //! in Qt 5.12.x this workaround should be no more necessary if - //! env variable QT_MAX_CACHED_GLYPH_SIZE is set to 1. - //! The workaround works badly if the text is at the same time - //! bold and underlined or struck out. - //! (moved from TextBase::drawTextWorkaround) - void drawTextWorkaround(Font& f, const PointF pos, const String& text); - void drawSymbol(const PointF& point, char32_t ucs4Code); void fillRect(const RectF& rect, const Brush& brush); @@ -182,6 +173,8 @@ class Painter void updateViewTransform(); void updateMatrix(); + void applyFontSizeScaling(); + bool endTarget(bool endDraw); IPaintProviderPtr m_provider; diff --git a/src/framework/draw/types/font.cpp b/src/framework/draw/types/font.cpp index 6bb0dbbc3ae22..e7c83696145a9 100644 --- a/src/framework/draw/types/font.cpp +++ b/src/framework/draw/types/font.cpp @@ -176,6 +176,7 @@ QFont Font::toQFont() const if (noFontMerging()) { qf.setStyleStrategy(QFont::NoFontMerging); } + qf.setStyleStrategy(QFont::PreferTypoLineMetrics); qf.setHintingPreference(static_cast(hinting())); return qf; diff --git a/src/importexport/imagesexport/internal/svgwriter.cpp b/src/importexport/imagesexport/internal/svgwriter.cpp index ef855a355c5d0..a67ac018f388b 100644 --- a/src/importexport/imagesexport/internal/svgwriter.cpp +++ b/src/importexport/imagesexport/internal/svgwriter.cpp @@ -68,7 +68,6 @@ Ret SvgWriter::write(INotationPtr notation, io::IODevice& destinationDevice, con mu::engraving::MScore::svgPrinting = true; const std::vector& pages = score->pages(); - double pixelRationBackup = mu::engraving::MScore::pixelRatio; const size_t PAGE_NUMBER = muse::value(options, OptionKey::PAGE_NUMBER, Val(0)).toInt(); if (PAGE_NUMBER >= pages.size()) { @@ -106,8 +105,6 @@ Ret SvgWriter::write(INotationPtr notation, io::IODevice& destinationDevice, con painter.translate(-pageRect.topLeft()); } - mu::engraving::MScore::pixelRatio = mu::engraving::DPI / printer.logicalDpiX(); - const bool TRANSPARENT_BACKGROUND = muse::value(options, OptionKey::TRANSPARENT_BACKGROUND, Val(configuration()->exportSvgWithTransparentBackground())).toBool(); if (!TRANSPARENT_BACKGROUND) { @@ -271,7 +268,6 @@ Ret SvgWriter::write(INotationPtr notation, io::IODevice& destinationDevice, con destinationDevice.write(data); // Clean up and return - mu::engraving::MScore::pixelRatio = pixelRationBackup; score->setPrinting(false); mu::engraving::MScore::pdfPrinting = false; mu::engraving::MScore::svgPrinting = false; diff --git a/src/importexport/mei/tests/data/accid-01.mscx b/src/importexport/mei/tests/data/accid-01.mscx index 6035b9a100c45..e1c879d942261 100644 --- a/src/importexport/mei/tests/data/accid-01.mscx +++ b/src/importexport/mei/tests/data/accid-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/accid-02.mscx b/src/importexport/mei/tests/data/accid-02.mscx index d3781fb5d844a..67d39ab886f25 100644 --- a/src/importexport/mei/tests/data/accid-02.mscx +++ b/src/importexport/mei/tests/data/accid-02.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/arpeg-01.mscx b/src/importexport/mei/tests/data/arpeg-01.mscx index 815ad9691bf99..9531f658e97a1 100644 --- a/src/importexport/mei/tests/data/arpeg-01.mscx +++ b/src/importexport/mei/tests/data/arpeg-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/artic-01.mscx b/src/importexport/mei/tests/data/artic-01.mscx index 41f6381ad1c60..6b35ab11ab5f9 100644 --- a/src/importexport/mei/tests/data/artic-01.mscx +++ b/src/importexport/mei/tests/data/artic-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/beam-01.mscx b/src/importexport/mei/tests/data/beam-01.mscx index 21a426b145951..244984c148529 100644 --- a/src/importexport/mei/tests/data/beam-01.mscx +++ b/src/importexport/mei/tests/data/beam-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/beam-02.mscx b/src/importexport/mei/tests/data/beam-02.mscx index b2260bc2acc55..316ffa1fc662a 100644 --- a/src/importexport/mei/tests/data/beam-02.mscx +++ b/src/importexport/mei/tests/data/beam-02.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/beam-03.mscx b/src/importexport/mei/tests/data/beam-03.mscx index 7cf0be88c0f3e..89c7dd4e1a8db 100644 --- a/src/importexport/mei/tests/data/beam-03.mscx +++ b/src/importexport/mei/tests/data/beam-03.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/breaks-01.mscx b/src/importexport/mei/tests/data/breaks-01.mscx index 3f45fae0ec734..9bb41836fecd8 100644 --- a/src/importexport/mei/tests/data/breaks-01.mscx +++ b/src/importexport/mei/tests/data/breaks-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/breath-01.mscx b/src/importexport/mei/tests/data/breath-01.mscx index 9ac4a896870c0..2acb4ed0afebe 100644 --- a/src/importexport/mei/tests/data/breath-01.mscx +++ b/src/importexport/mei/tests/data/breath-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/btrem-01.mscx b/src/importexport/mei/tests/data/btrem-01.mscx index d10694ba741c9..830d1c478a180 100644 --- a/src/importexport/mei/tests/data/btrem-01.mscx +++ b/src/importexport/mei/tests/data/btrem-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/chord-label-01.mscx b/src/importexport/mei/tests/data/chord-label-01.mscx index 579cd76c153ae..9dc5c3ac67dcc 100644 --- a/src/importexport/mei/tests/data/chord-label-01.mscx +++ b/src/importexport/mei/tests/data/chord-label-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/clef-01.mscx b/src/importexport/mei/tests/data/clef-01.mscx index a12a988b7b642..66f1c4816e424 100644 --- a/src/importexport/mei/tests/data/clef-01.mscx +++ b/src/importexport/mei/tests/data/clef-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/color-01.mscx b/src/importexport/mei/tests/data/color-01.mscx index b1cf59c45b3b8..176116c52c4af 100644 --- a/src/importexport/mei/tests/data/color-01.mscx +++ b/src/importexport/mei/tests/data/color-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/cross-staff-01.mscx b/src/importexport/mei/tests/data/cross-staff-01.mscx index b69eacea5892b..0c3ae029a5b6e 100644 --- a/src/importexport/mei/tests/data/cross-staff-01.mscx +++ b/src/importexport/mei/tests/data/cross-staff-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/dir-01.mscx b/src/importexport/mei/tests/data/dir-01.mscx index 534b1db9dffd9..c83085d9a35df 100644 --- a/src/importexport/mei/tests/data/dir-01.mscx +++ b/src/importexport/mei/tests/data/dir-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/dynamic-01.mscx b/src/importexport/mei/tests/data/dynamic-01.mscx index d393257d0a9c9..87f99e3e132a9 100644 --- a/src/importexport/mei/tests/data/dynamic-01.mscx +++ b/src/importexport/mei/tests/data/dynamic-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/ending-01.mscx b/src/importexport/mei/tests/data/ending-01.mscx index 0cfe7192f98a5..df2c0d7ebc7ce 100644 --- a/src/importexport/mei/tests/data/ending-01.mscx +++ b/src/importexport/mei/tests/data/ending-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/fermata-01.mscx b/src/importexport/mei/tests/data/fermata-01.mscx index f7a37451b98b1..77124db2573a4 100644 --- a/src/importexport/mei/tests/data/fermata-01.mscx +++ b/src/importexport/mei/tests/data/fermata-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/fig-bass-01.mscx b/src/importexport/mei/tests/data/fig-bass-01.mscx index cb42024d07b54..bf3418b33e425 100644 --- a/src/importexport/mei/tests/data/fig-bass-01.mscx +++ b/src/importexport/mei/tests/data/fig-bass-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/fingering-01.mscx b/src/importexport/mei/tests/data/fingering-01.mscx index b118a149899b4..f52bd856b4786 100644 --- a/src/importexport/mei/tests/data/fingering-01.mscx +++ b/src/importexport/mei/tests/data/fingering-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/gliss-01.mscx b/src/importexport/mei/tests/data/gliss-01.mscx index 75da04e44217a..826d8f71d34cc 100644 --- a/src/importexport/mei/tests/data/gliss-01.mscx +++ b/src/importexport/mei/tests/data/gliss-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/gracenote-01.mscx b/src/importexport/mei/tests/data/gracenote-01.mscx index 518340c008c70..74c64aa94db63 100644 --- a/src/importexport/mei/tests/data/gracenote-01.mscx +++ b/src/importexport/mei/tests/data/gracenote-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/gracenote-02.mscx b/src/importexport/mei/tests/data/gracenote-02.mscx index 049265545760d..a97d3940fa36c 100644 --- a/src/importexport/mei/tests/data/gracenote-02.mscx +++ b/src/importexport/mei/tests/data/gracenote-02.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/hairpin-01.mscx b/src/importexport/mei/tests/data/hairpin-01.mscx index 5bafe083f5e72..b2c77f7fcfbe4 100644 --- a/src/importexport/mei/tests/data/hairpin-01.mscx +++ b/src/importexport/mei/tests/data/hairpin-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/harp-01.mscx b/src/importexport/mei/tests/data/harp-01.mscx index e3af6d8feecf1..0963d8078256a 100644 --- a/src/importexport/mei/tests/data/harp-01.mscx +++ b/src/importexport/mei/tests/data/harp-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/jump-01.mscx b/src/importexport/mei/tests/data/jump-01.mscx index ff5137764ab45..c948b744c0f2b 100644 --- a/src/importexport/mei/tests/data/jump-01.mscx +++ b/src/importexport/mei/tests/data/jump-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/jump-02.mscx b/src/importexport/mei/tests/data/jump-02.mscx index cc962662e058a..98d23539ef09a 100644 --- a/src/importexport/mei/tests/data/jump-02.mscx +++ b/src/importexport/mei/tests/data/jump-02.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/key-signature-01.mscx b/src/importexport/mei/tests/data/key-signature-01.mscx index 9a05e73124c5b..0a690814f8e75 100644 --- a/src/importexport/mei/tests/data/key-signature-01.mscx +++ b/src/importexport/mei/tests/data/key-signature-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/label-01.mscx b/src/importexport/mei/tests/data/label-01.mscx index 1e95edb58cd88..12d2369ca1f8f 100644 --- a/src/importexport/mei/tests/data/label-01.mscx +++ b/src/importexport/mei/tests/data/label-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/laissez-vibrer-01.mscx b/src/importexport/mei/tests/data/laissez-vibrer-01.mscx index cc94e9b183dcd..ca78ff3770a48 100644 --- a/src/importexport/mei/tests/data/laissez-vibrer-01.mscx +++ b/src/importexport/mei/tests/data/laissez-vibrer-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/lyric-01.mscx b/src/importexport/mei/tests/data/lyric-01.mscx index 9aa0c9699efaa..1dae6dbe35c54 100644 --- a/src/importexport/mei/tests/data/lyric-01.mscx +++ b/src/importexport/mei/tests/data/lyric-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/lyric-02.mscx b/src/importexport/mei/tests/data/lyric-02.mscx index aaefbfa648eb5..77a1c946c1130 100644 --- a/src/importexport/mei/tests/data/lyric-02.mscx +++ b/src/importexport/mei/tests/data/lyric-02.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/lyric-03.mscx b/src/importexport/mei/tests/data/lyric-03.mscx index 70d9836912693..4cc30a5722470 100644 --- a/src/importexport/mei/tests/data/lyric-03.mscx +++ b/src/importexport/mei/tests/data/lyric-03.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/lyric-04.mscx b/src/importexport/mei/tests/data/lyric-04.mscx index 77daba8e00b74..8e42207b8e257 100644 --- a/src/importexport/mei/tests/data/lyric-04.mscx +++ b/src/importexport/mei/tests/data/lyric-04.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/measure-01.mscx b/src/importexport/mei/tests/data/measure-01.mscx index 2f3553974f906..0f58dbb276e34 100644 --- a/src/importexport/mei/tests/data/measure-01.mscx +++ b/src/importexport/mei/tests/data/measure-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/measure-02.mscx b/src/importexport/mei/tests/data/measure-02.mscx index 051ab17ada224..db818c8b48713 100644 --- a/src/importexport/mei/tests/data/measure-02.mscx +++ b/src/importexport/mei/tests/data/measure-02.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/measure-repeat-01.mscx b/src/importexport/mei/tests/data/measure-repeat-01.mscx index 8db7c812eddca..e9dd858681fb6 100644 --- a/src/importexport/mei/tests/data/measure-repeat-01.mscx +++ b/src/importexport/mei/tests/data/measure-repeat-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/metadata-01.mscx b/src/importexport/mei/tests/data/metadata-01.mscx index 04c27bdce1a81..d753f76ea5c11 100644 --- a/src/importexport/mei/tests/data/metadata-01.mscx +++ b/src/importexport/mei/tests/data/metadata-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/midi-01.mscx b/src/importexport/mei/tests/data/midi-01.mscx index 1cefdb073dda2..39fd242ebd7ab 100644 --- a/src/importexport/mei/tests/data/midi-01.mscx +++ b/src/importexport/mei/tests/data/midi-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/mordent-01.mscx b/src/importexport/mei/tests/data/mordent-01.mscx index 7286ae96c2c23..110b060abca0a 100644 --- a/src/importexport/mei/tests/data/mordent-01.mscx +++ b/src/importexport/mei/tests/data/mordent-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/octave-01.mscx b/src/importexport/mei/tests/data/octave-01.mscx index 8ccbe3eca7ca4..5c79c11f60a04 100644 --- a/src/importexport/mei/tests/data/octave-01.mscx +++ b/src/importexport/mei/tests/data/octave-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/ornam-01.mscx b/src/importexport/mei/tests/data/ornam-01.mscx index c93653e2ec068..229f72f50fa45 100644 --- a/src/importexport/mei/tests/data/ornam-01.mscx +++ b/src/importexport/mei/tests/data/ornam-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/page-head-01.mscx b/src/importexport/mei/tests/data/page-head-01.mscx index 50872bd851f73..5c4b6ca3e6ed6 100644 --- a/src/importexport/mei/tests/data/page-head-01.mscx +++ b/src/importexport/mei/tests/data/page-head-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/page-head-02.mscx b/src/importexport/mei/tests/data/page-head-02.mscx index 84e64abb9ddd4..10cfc3e540493 100644 --- a/src/importexport/mei/tests/data/page-head-02.mscx +++ b/src/importexport/mei/tests/data/page-head-02.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/pedal-01.mscx b/src/importexport/mei/tests/data/pedal-01.mscx index 0cf7bbdf59399..732871cbb577a 100644 --- a/src/importexport/mei/tests/data/pedal-01.mscx +++ b/src/importexport/mei/tests/data/pedal-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/reh-01.mscx b/src/importexport/mei/tests/data/reh-01.mscx index 09d491fe9808f..beb3e20b895a4 100644 --- a/src/importexport/mei/tests/data/reh-01.mscx +++ b/src/importexport/mei/tests/data/reh-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/roman-numeral-01.mscx b/src/importexport/mei/tests/data/roman-numeral-01.mscx index 0dc228727d3ce..fc54a33044b4c 100644 --- a/src/importexport/mei/tests/data/roman-numeral-01.mscx +++ b/src/importexport/mei/tests/data/roman-numeral-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/score-01.mscx b/src/importexport/mei/tests/data/score-01.mscx index ea9e5ce30340a..9c97a0f119945 100644 --- a/src/importexport/mei/tests/data/score-01.mscx +++ b/src/importexport/mei/tests/data/score-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/score-02.mscx b/src/importexport/mei/tests/data/score-02.mscx index 48de754d70dbc..2d41f6b15431a 100644 --- a/src/importexport/mei/tests/data/score-02.mscx +++ b/src/importexport/mei/tests/data/score-02.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/score-03.mscx b/src/importexport/mei/tests/data/score-03.mscx index 4272d9556eecd..fab86c0d42844 100644 --- a/src/importexport/mei/tests/data/score-03.mscx +++ b/src/importexport/mei/tests/data/score-03.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/slur-01.mscx b/src/importexport/mei/tests/data/slur-01.mscx index 9b797c904c37a..80571a8b0162d 100644 --- a/src/importexport/mei/tests/data/slur-01.mscx +++ b/src/importexport/mei/tests/data/slur-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/slur-02.mscx b/src/importexport/mei/tests/data/slur-02.mscx index 7cec7ade23470..14c45e73158d5 100644 --- a/src/importexport/mei/tests/data/slur-02.mscx +++ b/src/importexport/mei/tests/data/slur-02.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/stem-01.mscx b/src/importexport/mei/tests/data/stem-01.mscx index 66575ca701e08..5fa546aef3e09 100644 --- a/src/importexport/mei/tests/data/stem-01.mscx +++ b/src/importexport/mei/tests/data/stem-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/tempo-01.mscx b/src/importexport/mei/tests/data/tempo-01.mscx index 0630d142e2a69..246a205f75ea5 100644 --- a/src/importexport/mei/tests/data/tempo-01.mscx +++ b/src/importexport/mei/tests/data/tempo-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/tie-01.mscx b/src/importexport/mei/tests/data/tie-01.mscx index b3beb149a7559..18b736cf054ad 100644 --- a/src/importexport/mei/tests/data/tie-01.mscx +++ b/src/importexport/mei/tests/data/tie-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/time-signature-01.mscx b/src/importexport/mei/tests/data/time-signature-01.mscx index ef373a8cdc14f..d9a583f35c234 100644 --- a/src/importexport/mei/tests/data/time-signature-01.mscx +++ b/src/importexport/mei/tests/data/time-signature-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/time-signature-02.mscx b/src/importexport/mei/tests/data/time-signature-02.mscx index 107a409c53ce6..2944f411031e4 100644 --- a/src/importexport/mei/tests/data/time-signature-02.mscx +++ b/src/importexport/mei/tests/data/time-signature-02.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/transpose-01.mscx b/src/importexport/mei/tests/data/transpose-01.mscx index cb3245f8b028f..3b4ff3c79f3e9 100644 --- a/src/importexport/mei/tests/data/transpose-01.mscx +++ b/src/importexport/mei/tests/data/transpose-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/trill-01.mscx b/src/importexport/mei/tests/data/trill-01.mscx index 10c6d4da18497..8c8f17f1f838a 100644 --- a/src/importexport/mei/tests/data/trill-01.mscx +++ b/src/importexport/mei/tests/data/trill-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/tuplet-01.mscx b/src/importexport/mei/tests/data/tuplet-01.mscx index 996feabef789c..9d2afd0fd4ca8 100644 --- a/src/importexport/mei/tests/data/tuplet-01.mscx +++ b/src/importexport/mei/tests/data/tuplet-01.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/tuplet-02.mscx b/src/importexport/mei/tests/data/tuplet-02.mscx index 2391b678f88af..a016be85728fc 100644 --- a/src/importexport/mei/tests/data/tuplet-02.mscx +++ b/src/importexport/mei/tests/data/tuplet-02.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/mei/tests/data/tuplet-03.mscx b/src/importexport/mei/tests/data/tuplet-03.mscx index 70b74d30f5d76..797703f935c1e 100644 --- a/src/importexport/mei/tests/data/tuplet-03.mscx +++ b/src/importexport/mei/tests/data/tuplet-03.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/chord_1_tick_long-ref.mscx b/src/importexport/midi/tests/midiimport_data/chord_1_tick_long-ref.mscx index a15bd503abe83..78ad954647b7d 100644 --- a/src/importexport/midi/tests/midiimport_data/chord_1_tick_long-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/chord_1_tick_long-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/chord_big_error-ref.mscx b/src/importexport/midi/tests/midiimport_data/chord_big_error-ref.mscx index 6f647c1cdd4be..665c2157ac578 100644 --- a/src/importexport/midi/tests/midiimport_data/chord_big_error-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/chord_big_error-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/chord_collect-ref.mscx b/src/importexport/midi/tests/midiimport_data/chord_collect-ref.mscx index 1c22c524392f6..cc7756a83f672 100644 --- a/src/importexport/midi/tests/midiimport_data/chord_collect-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/chord_collect-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/chord_legato-ref.mscx b/src/importexport/midi/tests/midiimport_data/chord_legato-ref.mscx index e48eca8e7f5f1..97abc24583ed3 100644 --- a/src/importexport/midi/tests/midiimport_data/chord_legato-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/chord_legato-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/chord_small_error-ref.mscx b/src/importexport/midi/tests/midiimport_data/chord_small_error-ref.mscx index 6f647c1cdd4be..665c2157ac578 100644 --- a/src/importexport/midi/tests/midiimport_data/chord_small_error-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/chord_small_error-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/clef_melody-ref.mscx b/src/importexport/midi/tests/midiimport_data/clef_melody-ref.mscx index f38a562562ba8..fee5a4f39d76a 100644 --- a/src/importexport/midi/tests/midiimport_data/clef_melody-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/clef_melody-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/clef_prev-ref.mscx b/src/importexport/midi/tests/midiimport_data/clef_prev-ref.mscx index 8336d7f5f5add..f07de030d36db 100644 --- a/src/importexport/midi/tests/midiimport_data/clef_prev-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/clef_prev-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/clef_tied-ref.mscx b/src/importexport/midi/tests/midiimport_data/clef_tied-ref.mscx index f6cfa097a5a17..2f5a93f3d65c9 100644 --- a/src/importexport/midi/tests/midiimport_data/clef_tied-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/clef_tied-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/division-ref.mscx b/src/importexport/midi/tests/midiimport_data/division-ref.mscx index 2edac354cd580..f3e4f574a6e64 100644 --- a/src/importexport/midi/tests/midiimport_data/division-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/division-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/human_4-4-ref.mscx b/src/importexport/midi/tests/midiimport_data/human_4-4-ref.mscx index e64c16285acb5..ff19cb5b178e4 100644 --- a/src/importexport/midi/tests/midiimport_data/human_4-4-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/human_4-4-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/human_tempo-ref.mscx b/src/importexport/midi/tests/midiimport_data/human_tempo-ref.mscx index c559b65fd1fe7..1511cd9410049 100644 --- a/src/importexport/midi/tests/midiimport_data/human_tempo-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/human_tempo-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/instrument_3staff_organ-ref.mscx b/src/importexport/midi/tests/midiimport_data/instrument_3staff_organ-ref.mscx index b85cd7647ea5d..f1d195d389f37 100644 --- a/src/importexport/midi/tests/midiimport_data/instrument_3staff_organ-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/instrument_3staff_organ-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/instrument_channels-ref.mscx b/src/importexport/midi/tests/midiimport_data/instrument_channels-ref.mscx index 3ebe5d99f6185..4f50ca709ffeb 100644 --- a/src/importexport/midi/tests/midiimport_data/instrument_channels-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/instrument_channels-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/instrument_clef-ref.mscx b/src/importexport/midi/tests/midiimport_data/instrument_clef-ref.mscx index 67a609488e858..54be87914dddb 100644 --- a/src/importexport/midi/tests/midiimport_data/instrument_clef-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/instrument_clef-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/instrument_grand-ref.mscx b/src/importexport/midi/tests/midiimport_data/instrument_grand-ref.mscx index b9d47e0f77943..09d29bf301582 100644 --- a/src/importexport/midi/tests/midiimport_data/instrument_grand-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/instrument_grand-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/instrument_grand2-ref.mscx b/src/importexport/midi/tests/midiimport_data/instrument_grand2-ref.mscx index 208080c795db1..f547887609346 100644 --- a/src/importexport/midi/tests/midiimport_data/instrument_grand2-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/instrument_grand2-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/lyrics_time_0-ref.mscx b/src/importexport/midi/tests/midiimport_data/lyrics_time_0-ref.mscx index cd3686b842f93..013d039fcf211 100644 --- a/src/importexport/midi/tests/midiimport_data/lyrics_time_0-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/lyrics_time_0-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/lyrics_voice_1-ref.mscx b/src/importexport/midi/tests/midiimport_data/lyrics_voice_1-ref.mscx index 3c77a12e6d470..2d5ee4d692d45 100644 --- a/src/importexport/midi/tests/midiimport_data/lyrics_voice_1-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/lyrics_voice_1-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/m1-ref.mscx b/src/importexport/midi/tests/midiimport_data/m1-ref.mscx index 3e4df66e50fa9..de76756a265e1 100644 --- a/src/importexport/midi/tests/midiimport_data/m1-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/m1-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/m2-ref.mscx b/src/importexport/midi/tests/midiimport_data/m2-ref.mscx index 7a8fe5c5ffdc4..f947ecd90b8a8 100644 --- a/src/importexport/midi/tests/midiimport_data/m2-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/m2-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/m3-ref.mscx b/src/importexport/midi/tests/midiimport_data/m3-ref.mscx index fd20901f18274..3f49b6a507b62 100644 --- a/src/importexport/midi/tests/midiimport_data/m3-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/m3-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/m4-ref.mscx b/src/importexport/midi/tests/midiimport_data/m4-ref.mscx index b3848bdad0aad..0cd581c5c3164 100644 --- a/src/importexport/midi/tests/midiimport_data/m4-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/m4-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/m5-ref.mscx b/src/importexport/midi/tests/midiimport_data/m5-ref.mscx index 3e4df66e50fa9..de76756a265e1 100644 --- a/src/importexport/midi/tests/midiimport_data/m5-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/m5-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_12-8-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_12-8-ref.mscx index d91a50a03c0a1..207ddb326e454 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_12-8-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_12-8-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_15-8-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_15-8-ref.mscx index c9fc68d3966ea..14fb7c8389e38 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_15-8-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_15-8-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_4-4-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_4-4-ref.mscx index 4be7f46827720..073853c8b22a7 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_4-4-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_4-4-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_9-8-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_9-8-ref.mscx index bf02a997a47f5..28c4633261b36 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_9-8-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_9-8-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_central_long_note-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_central_long_note-ref.mscx index dd897dc637e9a..d9cf81ac1b656 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_central_long_note-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_central_long_note-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_central_long_rest-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_central_long_rest-ref.mscx index b4df1658de5be..fe33c581010ec 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_central_long_rest-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_central_long_rest-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_chord_example-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_chord_example-ref.mscx index 387935ce824bf..9b0991f048b84 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_chord_example-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_chord_example-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_dot_tie-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_dot_tie-ref.mscx index ff79a2d7e1f5f..abed7853f8a75 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_dot_tie-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_dot_tie-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_dots_example1-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_dots_example1-ref.mscx index e1dca59c8e1d2..dc4aaba0055d9 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_dots_example1-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_dots_example1-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_dots_example2-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_dots_example2-ref.mscx index f2a606dc2a209..38a43645243cd 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_dots_example2-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_dots_example2-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_dots_example3-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_dots_example3-ref.mscx index 48785cc0dacb3..f37dae081fdb0 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_dots_example3-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_dots_example3-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_first_2_8th_rests_compound-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_first_2_8th_rests_compound-ref.mscx index 2caed43358a49..c0ae957835aa3 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_first_2_8th_rests_compound-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_first_2_8th_rests_compound-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_half_rest_3-4-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_half_rest_3-4-ref.mscx index 98aef35189e04..1dba792ef8652 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_half_rest_3-4-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_half_rest_3-4-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_last_quarter_rest_compound-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_last_quarter_rest_compound-ref.mscx index d96755b970256..215d31cb70b16 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_last_quarter_rest_compound-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_last_quarter_rest_compound-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_rests-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_rests-ref.mscx index 2ac33602d6408..ca71da7b76080 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_rests-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_rests-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/meter_two_beats_over-ref.mscx b/src/importexport/midi/tests/midiimport_data/meter_two_beats_over-ref.mscx index c6de675e27bf6..fc82411a3e1e8 100644 --- a/src/importexport/midi/tests/midiimport_data/meter_two_beats_over-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/meter_two_beats_over-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/min_duration-ref.mscx b/src/importexport/midi/tests/midiimport_data/min_duration-ref.mscx index b1594842d831d..e23fb699fd7a1 100644 --- a/src/importexport/midi/tests/midiimport_data/min_duration-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/min_duration-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/perc_drums-ref.mscx b/src/importexport/midi/tests/midiimport_data/perc_drums-ref.mscx index ba46767acc3f0..f9022dcdea93e 100644 --- a/src/importexport/midi/tests/midiimport_data/perc_drums-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/perc_drums-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/perc_no_grand_staff-ref.mscx b/src/importexport/midi/tests/midiimport_data/perc_no_grand_staff-ref.mscx index 0811856b3c178..b30695856cef2 100644 --- a/src/importexport/midi/tests/midiimport_data/perc_no_grand_staff-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/perc_no_grand_staff-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/perc_remove_ties-ref.mscx b/src/importexport/midi/tests/midiimport_data/perc_remove_ties-ref.mscx index 041e142951854..a43f854fff944 100644 --- a/src/importexport/midi/tests/midiimport_data/perc_remove_ties-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/perc_remove_ties-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/perc_respect_beat-ref.mscx b/src/importexport/midi/tests/midiimport_data/perc_respect_beat-ref.mscx index 2b8db90ed8095..5e2c38ddede6e 100644 --- a/src/importexport/midi/tests/midiimport_data/perc_respect_beat-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/perc_respect_beat-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/perc_short_notes-ref.mscx b/src/importexport/midi/tests/midiimport_data/perc_short_notes-ref.mscx index 7da39798d3f69..d7fc4ee506316 100644 --- a/src/importexport/midi/tests/midiimport_data/perc_short_notes-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/perc_short_notes-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/perc_triplet-ref.mscx b/src/importexport/midi/tests/midiimport_data/perc_triplet-ref.mscx index 46c6e228893d6..b4c486fa9c3d7 100644 --- a/src/importexport/midi/tests/midiimport_data/perc_triplet-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/perc_triplet-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/perc_tuplet_simplify-ref.mscx b/src/importexport/midi/tests/midiimport_data/perc_tuplet_simplify-ref.mscx index 1d95973bd7b0b..c3b24d08d71eb 100644 --- a/src/importexport/midi/tests/midiimport_data/perc_tuplet_simplify-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/perc_tuplet_simplify-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/perc_tuplet_simplify2-ref.mscx b/src/importexport/midi/tests/midiimport_data/perc_tuplet_simplify2-ref.mscx index 08a9405ec41fc..f0724cda1f75e 100644 --- a/src/importexport/midi/tests/midiimport_data/perc_tuplet_simplify2-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/perc_tuplet_simplify2-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/perc_tuplet_voice-ref.mscx b/src/importexport/midi/tests/midiimport_data/perc_tuplet_voice-ref.mscx index 2b4298a2a4e35..6cf7b0700d444 100644 --- a/src/importexport/midi/tests/midiimport_data/perc_tuplet_voice-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/perc_tuplet_voice-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/pickup-ref.mscx b/src/importexport/midi/tests/midiimport_data/pickup-ref.mscx index 63c7b445238eb..343cd16def301 100644 --- a/src/importexport/midi/tests/midiimport_data/pickup-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/pickup-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/pickup_long-ref.mscx b/src/importexport/midi/tests/midiimport_data/pickup_long-ref.mscx index 46cb7e28afa42..1f769d76be935 100644 --- a/src/importexport/midi/tests/midiimport_data/pickup_long-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/pickup_long-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/pickup_turn_off-ref.mscx b/src/importexport/midi/tests/midiimport_data/pickup_turn_off-ref.mscx index 35a70843ffdb2..90cda994095e7 100644 --- a/src/importexport/midi/tests/midiimport_data/pickup_turn_off-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/pickup_turn_off-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/quant_dotted_4th-ref.mscx b/src/importexport/midi/tests/midiimport_data/quant_dotted_4th-ref.mscx index 74e4fbcaa6914..20a7e2957f0a9 100644 --- a/src/importexport/midi/tests/midiimport_data/quant_dotted_4th-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/quant_dotted_4th-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/simplify_16th_staccato-ref.mscx b/src/importexport/midi/tests/midiimport_data/simplify_16th_staccato-ref.mscx index 0374394d43bdf..61b9a7767e841 100644 --- a/src/importexport/midi/tests/midiimport_data/simplify_16th_staccato-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/simplify_16th_staccato-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/simplify_32nd_staccato-ref.mscx b/src/importexport/midi/tests/midiimport_data/simplify_32nd_staccato-ref.mscx index e5b0eff5c3340..b14cf30c34cfc 100644 --- a/src/importexport/midi/tests/midiimport_data/simplify_32nd_staccato-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/simplify_32nd_staccato-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/simplify_4th_dotted_tied-ref.mscx b/src/importexport/midi/tests/midiimport_data/simplify_4th_dotted_tied-ref.mscx index a3c2f55a53004..b35e271e4ff73 100644 --- a/src/importexport/midi/tests/midiimport_data/simplify_4th_dotted_tied-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/simplify_4th_dotted_tied-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/simplify_8th_dont-ref.mscx b/src/importexport/midi/tests/midiimport_data/simplify_8th_dont-ref.mscx index 165e61d758f72..ffb1cfe841c70 100644 --- a/src/importexport/midi/tests/midiimport_data/simplify_8th_dont-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/simplify_8th_dont-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/simplify_8th_dotted_no_staccato-ref.mscx b/src/importexport/midi/tests/midiimport_data/simplify_8th_dotted_no_staccato-ref.mscx index bfe85d045dc60..cf8557c80e9db 100644 --- a/src/importexport/midi/tests/midiimport_data/simplify_8th_dotted_no_staccato-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/simplify_8th_dotted_no_staccato-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/simplify_dotted_3-4-ref.mscx b/src/importexport/midi/tests/midiimport_data/simplify_dotted_3-4-ref.mscx index 0d3acd2f7f871..782fab407db72 100644 --- a/src/importexport/midi/tests/midiimport_data/simplify_dotted_3-4-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/simplify_dotted_3-4-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/simplify_staccato_9-8-ref.mscx b/src/importexport/midi/tests/midiimport_data/simplify_staccato_9-8-ref.mscx index cdc60ae9ecc73..b4e43939785bd 100644 --- a/src/importexport/midi/tests/midiimport_data/simplify_staccato_9-8-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/simplify_staccato_9-8-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/simplify_triplet_staccato-ref.mscx b/src/importexport/midi/tests/midiimport_data/simplify_triplet_staccato-ref.mscx index 51a9fca0974a5..10542b4dcb2ad 100644 --- a/src/importexport/midi/tests/midiimport_data/simplify_triplet_staccato-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/simplify_triplet_staccato-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/split_2_melodies-ref.mscx b/src/importexport/midi/tests/midiimport_data/split_2_melodies-ref.mscx index 57447376c2c5d..dd63d57509fdc 100644 --- a/src/importexport/midi/tests/midiimport_data/split_2_melodies-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/split_2_melodies-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/split_acid-ref.mscx b/src/importexport/midi/tests/midiimport_data/split_acid-ref.mscx index a14eee577ca81..f1687fb1bdb0b 100644 --- a/src/importexport/midi/tests/midiimport_data/split_acid-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/split_acid-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/split_nontuplet-ref.mscx b/src/importexport/midi/tests/midiimport_data/split_nontuplet-ref.mscx index d76cca7c1e574..72742d37a86fc 100644 --- a/src/importexport/midi/tests/midiimport_data/split_nontuplet-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/split_nontuplet-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/split_octave-ref.mscx b/src/importexport/midi/tests/midiimport_data/split_octave-ref.mscx index 75479de28fa40..afc86fee9a76f 100644 --- a/src/importexport/midi/tests/midiimport_data/split_octave-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/split_octave-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/split_tuplet-ref.mscx b/src/importexport/midi/tests/midiimport_data/split_tuplet-ref.mscx index 4a0ef8a615407..b41a842d81034 100644 --- a/src/importexport/midi/tests/midiimport_data/split_tuplet-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/split_tuplet-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/swing_clef-ref.mscx b/src/importexport/midi/tests/midiimport_data/swing_clef-ref.mscx index 50bfc7a499062..8dd87bff0552a 100644 --- a/src/importexport/midi/tests/midiimport_data/swing_clef-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/swing_clef-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/swing_shuffle-ref.mscx b/src/importexport/midi/tests/midiimport_data/swing_shuffle-ref.mscx index 33e1132696966..301d0ab62b131 100644 --- a/src/importexport/midi/tests/midiimport_data/swing_shuffle-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/swing_shuffle-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/swing_triplets-ref.mscx b/src/importexport/midi/tests/midiimport_data/swing_triplets-ref.mscx index 4c1e053689fbc..8491fb2d0510f 100644 --- a/src/importexport/midi/tests/midiimport_data/swing_triplets-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/swing_triplets-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/timesig_changes-ref.mscx b/src/importexport/midi/tests/midiimport_data/timesig_changes-ref.mscx index 5a7434684de63..e855d01678427 100644 --- a/src/importexport/midi/tests/midiimport_data/timesig_changes-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/timesig_changes-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_16th_8th-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_16th_8th-ref.mscx index c83a16c394011..8093e3c176d35 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_16th_8th-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_16th_8th-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_2_voices_3_5_tuplets-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_2_voices_3_5_tuplets-ref.mscx index 4d7d6ce650e6a..5914fe51cc2bf 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_2_voices_3_5_tuplets-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_2_voices_3_5_tuplets-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_2_voices_tuplet_non-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_2_voices_tuplet_non-ref.mscx index f932c1d9f0927..4f9835cddf6df 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_2_voices_tuplet_non-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_2_voices_tuplet_non-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_3-4-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_3-4-ref.mscx index 4eecca2ed0b1d..b4b9f1f0d1726 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_3-4-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_3-4-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_3_5_7_tuplets-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_3_5_7_tuplets-ref.mscx index efa24aab46db5..4ffd9c1c2e7e8 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_3_5_7_tuplets-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_3_5_7_tuplets-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_5_5_tuplets_rests-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_5_5_tuplets_rests-ref.mscx index fcca8298f1561..5f2da9ac019b6 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_5_5_tuplets_rests-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_5_5_tuplets_rests-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_7_staccato-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_7_staccato-ref.mscx index bc55b21b79659..493a9b63bf5d0 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_7_staccato-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_7_staccato-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_duplet-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_duplet-ref.mscx index 1759cd4741ead..20052fd054cc0 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_duplet-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_duplet-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_mars-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_mars-ref.mscx index f3296f0a3cfd9..9e42ba5d4d7a9 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_mars-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_mars-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_nonuplet_3-4-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_nonuplet_3-4-ref.mscx index 04523b0d47bf0..b98409fd74376 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_nonuplet_3-4-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_nonuplet_3-4-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_nonuplet_4-4-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_nonuplet_4-4-ref.mscx index e48375edd507b..8dcf33b51d4cc 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_nonuplet_4-4-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_nonuplet_4-4-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_off_time_other_bar-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_off_time_other_bar-ref.mscx index 200d03d25c020..c159105f67111 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_off_time_other_bar-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_off_time_other_bar-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_off_time_other_bar2-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_off_time_other_bar2-ref.mscx index fc7309b6a973d..547cb945fe9e1 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_off_time_other_bar2-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_off_time_other_bar2-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_quadruplet-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_quadruplet-ref.mscx index fb407eb988c2f..13e5d6aecd14e 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_quadruplet-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_quadruplet-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_septuplet-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_septuplet-ref.mscx index e6c91d7d16cb3..0d45cdec841c4 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_septuplet-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_septuplet-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_tied_3_5_tuplets-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_tied_3_5_tuplets-ref.mscx index cbf67f250596d..4b6c362e6da19 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_tied_3_5_tuplets-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_tied_3_5_tuplets-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_tied_3_5_tuplets2-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_tied_3_5_tuplets2-ref.mscx index 6dfb8dade959d..967abec0f6230 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_tied_3_5_tuplets2-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_tied_3_5_tuplets2-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_triplet-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_triplet-ref.mscx index bab531afa51eb..4430f36498e55 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_triplet-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_triplet-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_triplet_first_tied-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_triplet_first_tied-ref.mscx index 835e1ba927998..5870a735962c6 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_triplet_first_tied-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_triplet_first_tied-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_triplet_first_tied2-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_triplet_first_tied2-ref.mscx index d03a5084f3c38..d6a156bcab2b9 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_triplet_first_tied2-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_triplet_first_tied2-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_triplet_last_tied-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_triplet_last_tied-ref.mscx index 25c0c604f1997..8bfa4371ff13c 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_triplet_last_tied-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_triplet_last_tied-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/tuplet_triplets_mixed-ref.mscx b/src/importexport/midi/tests/midiimport_data/tuplet_triplets_mixed-ref.mscx index fa8c3dde65331..eafc38ec81ae9 100644 --- a/src/importexport/midi/tests/midiimport_data/tuplet_triplets_mixed-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/tuplet_triplets_mixed-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/voice_acid-ref.mscx b/src/importexport/midi/tests/midiimport_data/voice_acid-ref.mscx index dff9272d7c6b0..e55f2e325520d 100644 --- a/src/importexport/midi/tests/midiimport_data/voice_acid-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/voice_acid-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/voice_central-ref.mscx b/src/importexport/midi/tests/midiimport_data/voice_central-ref.mscx index 81ea279022a6d..6516951da7fe5 100644 --- a/src/importexport/midi/tests/midiimport_data/voice_central-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/voice_central-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/voice_intersect-ref.mscx b/src/importexport/midi/tests/midiimport_data/voice_intersect-ref.mscx index 4d7e19fe90d16..99c83d7fbe45f 100644 --- a/src/importexport/midi/tests/midiimport_data/voice_intersect-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/voice_intersect-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/midi/tests/midiimport_data/voice_tuplet-ref.mscx b/src/importexport/midi/tests/midiimport_data/voice_tuplet-ref.mscx index b9a83a7df43bc..7cee61d698da9 100644 --- a/src/importexport/midi/tests/midiimport_data/voice_tuplet-ref.mscx +++ b/src/importexport/midi/tests/midiimport_data/voice_tuplet-ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/musicxml/internal/musicxml/import/importmusicxmlpass1.cpp b/src/importexport/musicxml/internal/musicxml/import/importmusicxmlpass1.cpp index 75ad49b647941..3d7579cfa58d5 100644 --- a/src/importexport/musicxml/internal/musicxml/import/importmusicxmlpass1.cpp +++ b/src/importexport/musicxml/internal/musicxml/import/importmusicxmlpass1.cpp @@ -1898,12 +1898,10 @@ static double scaleText(const String& str, const Sid fontFaceSid, const double f const FontMetrics fm(font); const double pagePrintableWidth = style.styleV(Sid::pagePrintableWidth).value() * DPI; - const double pageWidth = style.styleV(Sid::pageWidth).value() * DPI; - const double pageHeight = style.styleV(Sid::pageHeight).value() * DPI; double longestLine = 0.0; for (const String& line : str.split(u"\n")) { - const double textWidth = fm.boundingRect(RectF(0, 0, pageWidth, pageHeight), TextShowMnemonic, line).width(); + const double textWidth = fm.boundingRect(line).width(); longestLine = std::max(longestLine, textWidth); } diff --git a/src/importexport/musicxml/tests/data/importTie1_ref.mscx b/src/importexport/musicxml/tests/data/importTie1_ref.mscx index f413a699e67a6..7fc0a9cb9911e 100644 --- a/src/importexport/musicxml/tests/data/importTie1_ref.mscx +++ b/src/importexport/musicxml/tests/data/importTie1_ref.mscx @@ -5,7 +5,7 @@ 480 1 1 diff --git a/src/importexport/musicxml/tests/data/testBackupRoundingError_ref.mscx b/src/importexport/musicxml/tests/data/testBackupRoundingError_ref.mscx index 87520fbc8bec4..c1647739530bd 100644 --- a/src/importexport/musicxml/tests/data/testBackupRoundingError_ref.mscx +++ b/src/importexport/musicxml/tests/data/testBackupRoundingError_ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/musicxml/tests/data/testDurationLargeError_ref.mscx b/src/importexport/musicxml/tests/data/testDurationLargeError_ref.mscx index f74f350f156ef..8b8a5692b2646 100644 --- a/src/importexport/musicxml/tests/data/testDurationLargeError_ref.mscx +++ b/src/importexport/musicxml/tests/data/testDurationLargeError_ref.mscx @@ -5,7 +5,7 @@ 480 1 1 diff --git a/src/importexport/musicxml/tests/data/testDurationRoundingError_ref.mscx b/src/importexport/musicxml/tests/data/testDurationRoundingError_ref.mscx index f169ab2e3123b..012be3b4b439c 100644 --- a/src/importexport/musicxml/tests/data/testDurationRoundingError_ref.mscx +++ b/src/importexport/musicxml/tests/data/testDurationRoundingError_ref.mscx @@ -5,7 +5,7 @@ 480 1 1 diff --git a/src/importexport/musicxml/tests/data/testFinaleInstr_ref.mscx b/src/importexport/musicxml/tests/data/testFinaleInstr_ref.mscx index edbc1e5c7a4bf..46f13211b418f 100644 --- a/src/importexport/musicxml/tests/data/testFinaleInstr_ref.mscx +++ b/src/importexport/musicxml/tests/data/testFinaleInstr_ref.mscx @@ -135,7 +135,7 @@ 7.4 Times 7.4 - 1.31233 + 1.31232 1 1 diff --git a/src/importexport/musicxml/tests/data/testInferredCredits1_ref.mscx b/src/importexport/musicxml/tests/data/testInferredCredits1_ref.mscx index 611f2184c86f5..4c59bb99677a5 100644 --- a/src/importexport/musicxml/tests/data/testInferredCredits1_ref.mscx +++ b/src/importexport/musicxml/tests/data/testInferredCredits1_ref.mscx @@ -118,7 +118,7 @@ the video game: a tone poem - 10.641 + 10.636 D_D E_E diff --git a/src/importexport/musicxml/tests/data/testInferredCredits2_ref.mscx b/src/importexport/musicxml/tests/data/testInferredCredits2_ref.mscx index 70453f27779c4..7b071ac19be49 100644 --- a/src/importexport/musicxml/tests/data/testInferredCredits2_ref.mscx +++ b/src/importexport/musicxml/tests/data/testInferredCredits2_ref.mscx @@ -120,7 +120,7 @@ Words & Music by also Henry Ives (and ampersands) - 10.3739 + 10.3705 D_D E_E diff --git a/src/importexport/musicxml/tests/data/testLayout.xml b/src/importexport/musicxml/tests/data/testLayout.xml index 4caacfd756ece..29c7fc03f57f7 100644 --- a/src/importexport/musicxml/tests/data/testLayout.xml +++ b/src/importexport/musicxml/tests/data/testLayout.xml @@ -78,14 +78,14 @@ - + - 75.74 + 75.29 0 - 169.98 + 170 65 @@ -110,7 +110,7 @@ 4 - + 4 1 @@ -121,11 +121,11 @@ - + 2 - + C 4 @@ -138,11 +138,11 @@ - + 2 - + F @@ -155,7 +155,7 @@ up 2 - + G 4 @@ -166,7 +166,7 @@ down 2 - + B 3 @@ -183,7 +183,7 @@ 2 - + D 3 diff --git a/src/importexport/musicxml/tests/data/testLyricExtension2_ref.mscx b/src/importexport/musicxml/tests/data/testLyricExtension2_ref.mscx index a9a2110bd7d25..56a5ad3acc043 100644 --- a/src/importexport/musicxml/tests/data/testLyricExtension2_ref.mscx +++ b/src/importexport/musicxml/tests/data/testLyricExtension2_ref.mscx @@ -5,7 +5,7 @@ 480 1 1 diff --git a/src/importexport/musicxml/tests/data/testLyricExtensions_ref.mscx b/src/importexport/musicxml/tests/data/testLyricExtensions_ref.mscx index 56c9d4e4b8424..5597b4c333646 100644 --- a/src/importexport/musicxml/tests/data/testLyricExtensions_ref.mscx +++ b/src/importexport/musicxml/tests/data/testLyricExtensions_ref.mscx @@ -5,7 +5,7 @@ 480 1 1 diff --git a/src/importexport/musicxml/tests/data/testLyricVisibility_ref.mscx b/src/importexport/musicxml/tests/data/testLyricVisibility_ref.mscx index 2657e2121d225..3bda725df162d 100644 --- a/src/importexport/musicxml/tests/data/testLyricVisibility_ref.mscx +++ b/src/importexport/musicxml/tests/data/testLyricVisibility_ref.mscx @@ -5,7 +5,7 @@ 480 1 1 diff --git a/src/importexport/musicxml/tests/data/testNoteAttributes2_ref.mscx b/src/importexport/musicxml/tests/data/testNoteAttributes2_ref.mscx index accd97cd2bd3a..5374a46aa6204 100644 --- a/src/importexport/musicxml/tests/data/testNoteAttributes2_ref.mscx +++ b/src/importexport/musicxml/tests/data/testNoteAttributes2_ref.mscx @@ -5,7 +5,7 @@ 480 1 1 diff --git a/src/importexport/musicxml/tests/data/testStringmute_ref.mscx b/src/importexport/musicxml/tests/data/testStringmute_ref.mscx index 75f59739ecb72..67529b31985b5 100644 --- a/src/importexport/musicxml/tests/data/testStringmute_ref.mscx +++ b/src/importexport/musicxml/tests/data/testStringmute_ref.mscx @@ -5,7 +5,7 @@ 480 1 1 diff --git a/src/importexport/musicxml/tests/data/testSystemBrackets3_ref.mscx b/src/importexport/musicxml/tests/data/testSystemBrackets3_ref.mscx index d2d237ada64c3..8bace71f90123 100644 --- a/src/importexport/musicxml/tests/data/testSystemBrackets3_ref.mscx +++ b/src/importexport/musicxml/tests/data/testSystemBrackets3_ref.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/musicxml/tests/data/testSystemDistance_ref.xml b/src/importexport/musicxml/tests/data/testSystemDistance_ref.xml index 81123b46117e2..3ff9824070ad7 100644 --- a/src/importexport/musicxml/tests/data/testSystemDistance_ref.xml +++ b/src/importexport/musicxml/tests/data/testSystemDistance_ref.xml @@ -86,7 +86,7 @@ - + @@ -110,7 +110,7 @@ 2 - + A 4 @@ -120,7 +120,7 @@ half up - + A 4 @@ -131,7 +131,7 @@ up - + A @@ -153,7 +153,7 @@ up - + A @@ -175,7 +175,7 @@ up - + A @@ -197,7 +197,7 @@ up - + A @@ -219,7 +219,7 @@ up - + A @@ -241,7 +241,7 @@ up - + A @@ -263,8 +263,8 @@ up - - + + A 4 @@ -274,7 +274,7 @@ half up - + A 4 @@ -520,7 +520,7 @@ - + A 4 @@ -530,7 +530,7 @@ half up - + A 4 @@ -541,7 +541,7 @@ up - + A @@ -563,7 +563,7 @@ up - + A @@ -595,7 +595,7 @@ 87.26 - + A 4 @@ -1004,7 +1004,7 @@ - + A 4 @@ -1014,7 +1014,7 @@ half up - + A 4 @@ -1025,7 +1025,7 @@ up - + A @@ -1047,7 +1047,7 @@ up - + A @@ -1069,7 +1069,7 @@ up - + @@ -1079,7 +1079,7 @@ 87.26 - + A 4 @@ -1089,7 +1089,7 @@ half up - + A 4 @@ -1255,7 +1255,7 @@ - + A 4 @@ -1265,7 +1265,7 @@ half up - + A 4 @@ -1276,7 +1276,7 @@ up - + A @@ -1298,7 +1298,7 @@ up - + A @@ -1320,7 +1320,7 @@ up - + @@ -1330,7 +1330,7 @@ 70 - + A 4 @@ -1340,7 +1340,7 @@ half up - + A 4 @@ -1505,8 +1505,8 @@ up - - + + A 4 @@ -1516,7 +1516,7 @@ half up - + A 4 diff --git a/src/importexport/musicxml/tests/data/testSystemDividers.xml b/src/importexport/musicxml/tests/data/testSystemDividers.xml index f263ffc42315d..5702830a6f45a 100644 --- a/src/importexport/musicxml/tests/data/testSystemDividers.xml +++ b/src/importexport/musicxml/tests/data/testSystemDividers.xml @@ -136,14 +136,14 @@ - + - 126.16 + 125.72 0 - 170 + 170.02 @@ -160,242 +160,242 @@ 2 - + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - + - 68.5 + 68.14 0 - 143.84 + 143.83 - + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - + - 68.5 + 68.14 0 161.69 - + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 @@ -406,7 +406,7 @@ - + 57.53 @@ -426,234 +426,234 @@ 2 - + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - + 57.53 - + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - + 64.68 - + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 @@ -664,7 +664,7 @@ - + 57.53 @@ -684,234 +684,234 @@ 3 - + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - + 57.53 - + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - + 64.68 - + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 @@ -922,7 +922,7 @@ - + 57.53 @@ -942,234 +942,234 @@ 4 - + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - + 57.53 - + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - + 64.68 - + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 - - + + 4 1 diff --git a/src/importexport/musicxml/tests/data/testTimeTick_ref.mscx b/src/importexport/musicxml/tests/data/testTimeTick_ref.mscx index 5fd06ace5de68..fc282855983eb 100644 --- a/src/importexport/musicxml/tests/data/testTimeTick_ref.mscx +++ b/src/importexport/musicxml/tests/data/testTimeTick_ref.mscx @@ -5,7 +5,7 @@ 480 1 1 diff --git a/src/importexport/musicxml/tests/data/testTupletTie_ref.mscx b/src/importexport/musicxml/tests/data/testTupletTie_ref.mscx index 3a60b7f40d60d..020de90f24ede 100644 --- a/src/importexport/musicxml/tests/data/testTupletTie_ref.mscx +++ b/src/importexport/musicxml/tests/data/testTupletTie_ref.mscx @@ -5,7 +5,7 @@ 480 1 1 diff --git a/src/importexport/musicxml/tests/data/testUnnecessaryBarlines_ref.mscx b/src/importexport/musicxml/tests/data/testUnnecessaryBarlines_ref.mscx index 34a0ad3762717..2f312a0717da2 100644 --- a/src/importexport/musicxml/tests/data/testUnnecessaryBarlines_ref.mscx +++ b/src/importexport/musicxml/tests/data/testUnnecessaryBarlines_ref.mscx @@ -5,7 +5,7 @@ 480 1 1 diff --git a/src/importexport/tabledit/tests/data/bass.mscx b/src/importexport/tabledit/tests/data/bass.mscx index 3cbbce15a1718..908a1a2921984 100644 --- a/src/importexport/tabledit/tests/data/bass.mscx +++ b/src/importexport/tabledit/tests/data/bass.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/chord_C_D.mscx b/src/importexport/tabledit/tests/data/chord_C_D.mscx index 8d0151e47f7ae..bf2cb81fb2fec 100644 --- a/src/importexport/tabledit/tests/data/chord_C_D.mscx +++ b/src/importexport/tabledit/tests/data/chord_C_D.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/dynamic.mscx b/src/importexport/tabledit/tests/data/dynamic.mscx index d51736878ad35..ee7ac33278f0e 100644 --- a/src/importexport/tabledit/tests/data/dynamic.mscx +++ b/src/importexport/tabledit/tests/data/dynamic.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/grace_1.mscx b/src/importexport/tabledit/tests/data/grace_1.mscx index bb3ce4647a905..e740dd6446d87 100644 --- a/src/importexport/tabledit/tests/data/grace_1.mscx +++ b/src/importexport/tabledit/tests/data/grace_1.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/guitar.mscx b/src/importexport/tabledit/tests/data/guitar.mscx index 8ee68504afee7..1a84b860a56b3 100644 --- a/src/importexport/tabledit/tests/data/guitar.mscx +++ b/src/importexport/tabledit/tests/data/guitar.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/guitar_bass.mscx b/src/importexport/tabledit/tests/data/guitar_bass.mscx index a16d060003dc4..b74b8881b4588 100644 --- a/src/importexport/tabledit/tests/data/guitar_bass.mscx +++ b/src/importexport/tabledit/tests/data/guitar_bass.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/guitar_drop_D.mscx b/src/importexport/tabledit/tests/data/guitar_drop_D.mscx index dd1cd0ada5ec5..7ff4b44c31983 100644 --- a/src/importexport/tabledit/tests/data/guitar_drop_D.mscx +++ b/src/importexport/tabledit/tests/data/guitar_drop_D.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/guitar_new_standard_tuning.mscx b/src/importexport/tabledit/tests/data/guitar_new_standard_tuning.mscx index 85df454f55dd2..222dc22b4c68f 100644 --- a/src/importexport/tabledit/tests/data/guitar_new_standard_tuning.mscx +++ b/src/importexport/tabledit/tests/data/guitar_new_standard_tuning.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/key_signatures.mscx b/src/importexport/tabledit/tests/data/key_signatures.mscx index 21b76015b5d5f..f681931938525 100644 --- a/src/importexport/tabledit/tests/data/key_signatures.mscx +++ b/src/importexport/tabledit/tests/data/key_signatures.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/key_signatures_2.mscx b/src/importexport/tabledit/tests/data/key_signatures_2.mscx index 2bea5b3a48cb8..b2e12e2558076 100644 --- a/src/importexport/tabledit/tests/data/key_signatures_2.mscx +++ b/src/importexport/tabledit/tests/data/key_signatures_2.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/metadata.mscx b/src/importexport/tabledit/tests/data/metadata.mscx index 41fc9885ee45f..f7d5f9fb3f6a7 100644 --- a/src/importexport/tabledit/tests/data/metadata.mscx +++ b/src/importexport/tabledit/tests/data/metadata.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/multi_track_rests.mscx b/src/importexport/tabledit/tests/data/multi_track_rests.mscx index 66e9369a02a85..c228f89828aca 100644 --- a/src/importexport/tabledit/tests/data/multi_track_rests.mscx +++ b/src/importexport/tabledit/tests/data/multi_track_rests.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/notes_dotted.mscx b/src/importexport/tabledit/tests/data/notes_dotted.mscx index 47a29bb5ebb2d..7bbfc62167390 100644 --- a/src/importexport/tabledit/tests/data/notes_dotted.mscx +++ b/src/importexport/tabledit/tests/data/notes_dotted.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/notes_normal.mscx b/src/importexport/tabledit/tests/data/notes_normal.mscx index dffe081287241..a50474ae583ef 100644 --- a/src/importexport/tabledit/tests/data/notes_normal.mscx +++ b/src/importexport/tabledit/tests/data/notes_normal.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/positions.mscx b/src/importexport/tabledit/tests/data/positions.mscx index e3a31e083583e..9443828bede42 100644 --- a/src/importexport/tabledit/tests/data/positions.mscx +++ b/src/importexport/tabledit/tests/data/positions.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/reading_list_1.mscx b/src/importexport/tabledit/tests/data/reading_list_1.mscx index 8df9ca44f3230..477d20eba1123 100644 --- a/src/importexport/tabledit/tests/data/reading_list_1.mscx +++ b/src/importexport/tabledit/tests/data/reading_list_1.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/rests_dotted.mscx b/src/importexport/tabledit/tests/data/rests_dotted.mscx index fddcfb99c58c5..bca791958f4e2 100644 --- a/src/importexport/tabledit/tests/data/rests_dotted.mscx +++ b/src/importexport/tabledit/tests/data/rests_dotted.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/rests_normal.mscx b/src/importexport/tabledit/tests/data/rests_normal.mscx index 163836d73ca72..3eb725ef4f3c6 100644 --- a/src/importexport/tabledit/tests/data/rests_normal.mscx +++ b/src/importexport/tabledit/tests/data/rests_normal.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/staff_text_1.mscx b/src/importexport/tabledit/tests/data/staff_text_1.mscx index a91c08cab42fe..6834793189616 100644 --- a/src/importexport/tabledit/tests/data/staff_text_1.mscx +++ b/src/importexport/tabledit/tests/data/staff_text_1.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/staff_text_2.mscx b/src/importexport/tabledit/tests/data/staff_text_2.mscx index 8127b2e05d0d2..063065c3a3998 100644 --- a/src/importexport/tabledit/tests/data/staff_text_2.mscx +++ b/src/importexport/tabledit/tests/data/staff_text_2.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/tie_1.mscx b/src/importexport/tabledit/tests/data/tie_1.mscx index c1308984b992e..6ff0a845256e0 100644 --- a/src/importexport/tabledit/tests/data/tie_1.mscx +++ b/src/importexport/tabledit/tests/data/tie_1.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/tie_2.mscx b/src/importexport/tabledit/tests/data/tie_2.mscx index 24b0c9200e7ae..ef25ca824e1c0 100644 --- a/src/importexport/tabledit/tests/data/tie_2.mscx +++ b/src/importexport/tabledit/tests/data/tie_2.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/time_signatures.mscx b/src/importexport/tabledit/tests/data/time_signatures.mscx index da290098b581b..e36ac74531f12 100644 --- a/src/importexport/tabledit/tests/data/time_signatures.mscx +++ b/src/importexport/tabledit/tests/data/time_signatures.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/time_signatures_2.mscx b/src/importexport/tabledit/tests/data/time_signatures_2.mscx index 79fac75590754..2874f6c184096 100644 --- a/src/importexport/tabledit/tests/data/time_signatures_2.mscx +++ b/src/importexport/tabledit/tests/data/time_signatures_2.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/triplet_eighths.mscx b/src/importexport/tabledit/tests/data/triplet_eighths.mscx index b5db53bbf1323..4e4fea1acd488 100644 --- a/src/importexport/tabledit/tests/data/triplet_eighths.mscx +++ b/src/importexport/tabledit/tests/data/triplet_eighths.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/triplet_quarters.mscx b/src/importexport/tabledit/tests/data/triplet_quarters.mscx index 8f47ed34a75c6..0f522c353f436 100644 --- a/src/importexport/tabledit/tests/data/triplet_quarters.mscx +++ b/src/importexport/tabledit/tests/data/triplet_quarters.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/triplets_mixed.mscx b/src/importexport/tabledit/tests/data/triplets_mixed.mscx index 810d515b9f491..cf8c5f79f8db4 100644 --- a/src/importexport/tabledit/tests/data/triplets_mixed.mscx +++ b/src/importexport/tabledit/tests/data/triplets_mixed.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/voices.mscx b/src/importexport/tabledit/tests/data/voices.mscx index 3515858556d7d..38a4f624bdbe0 100644 --- a/src/importexport/tabledit/tests/data/voices.mscx +++ b/src/importexport/tabledit/tests/data/voices.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/importexport/tabledit/tests/data/voices_multi_part.mscx b/src/importexport/tabledit/tests/data/voices_multi_part.mscx index 056a898e8f223..05eff454eef20 100644 --- a/src/importexport/tabledit/tests/data/voices_multi_part.mscx +++ b/src/importexport/tabledit/tests/data/voices_multi_part.mscx @@ -4,7 +4,7 @@ B_B 480 1 1 diff --git a/src/notation/internal/notationinteraction.cpp b/src/notation/internal/notationinteraction.cpp index 7bd773eb5573d..376f952b4d0da 100644 --- a/src/notation/internal/notationinteraction.cpp +++ b/src/notation/internal/notationinteraction.cpp @@ -1445,12 +1445,10 @@ void NotationInteraction::startOutgoingDragElement(const EngravingItem* element, pixmap.fill(Qt::transparent); QPainter qp(&pixmap); - const qreal dpi = qp.device()->logicalDpiX(); Painter p(&qp, "prepareDragCopyElement"); p.setAntialiasing(true); - mu::engraving::MScore::pixelRatio = mu::engraving::DPI / dpi; p.translate(qAbs(bbox.x() * adjustedRatio), qAbs(bbox.y() * adjustedRatio)); p.scale(adjustedRatio, adjustedRatio); diff --git a/src/notation/utilities/engravingitempreviewpainter.cpp b/src/notation/utilities/engravingitempreviewpainter.cpp index ccb156a99172a..740fdd28893ca 100644 --- a/src/notation/utilities/engravingitempreviewpainter.cpp +++ b/src/notation/utilities/engravingitempreviewpainter.cpp @@ -107,7 +107,7 @@ void EngravingItemPreviewPainter::paintPreviewForActionIcon(mu::engraving::Engra Painter* painter = params.painter; painter->save(); - double DPIscaling = (mu::engraving::DPI / mu::engraving::DPI_F) / params.dpi; + double DPIscaling = mu::engraving::PPI / params.dpi; ActionIcon* action = toActionIcon(element); action->setFontSize(ActionIcon::DEFAULT_FONT_SIZE * params.mag * DPIscaling); @@ -172,8 +172,6 @@ void EngravingItemPreviewPainter::paintPreviewForItem(mu::engraving::EngravingIt Painter* painter = params.painter; painter->save(); - mu::engraving::MScore::pixelRatio = mu::engraving::DPI / params.dpi; - const double sizeRatio = params.spatium / gpaletteScore->style().spatium(); painter->scale(sizeRatio, sizeRatio); // scale coordinates so element is drawn at correct size diff --git a/src/notation/view/loopmarker.cpp b/src/notation/view/loopmarker.cpp index 693aae5a56347..bbdc961579234 100644 --- a/src/notation/view/loopmarker.cpp +++ b/src/notation/view/loopmarker.cpp @@ -106,7 +106,7 @@ RectF LoopMarker::resolveMarkerRectByTick(engraving::Fraction tick) const double y = system->staffYpage(0) + system->page()->pos().y(); double _spatium = score->style().spatium(); - qreal mag = _spatium / mu::engraving::SPATIUM20; + qreal mag = _spatium / score->style().defaultSpatium(); double width = (_spatium * 2.0 + score->engravingFont()->width(mu::engraving::SymId::noteheadBlack, mag)) / 3; double height = 6 * _spatium; diff --git a/src/notation/view/widgets/exampleview.cpp b/src/notation/view/widgets/exampleview.cpp index e75da59eacc41..418ff4b652d96 100644 --- a/src/notation/view/widgets/exampleview.cpp +++ b/src/notation/view/widgets/exampleview.cpp @@ -91,7 +91,7 @@ ExampleView::~ExampleView() void ExampleView::resetMatrix() { - qreal _spatium = SPATIUM20 * m_defaultScaling; + qreal _spatium = score()->style().defaultSpatium() * m_defaultScaling; // example would normally be 10sp from top of page; this leaves 3sp margin above m_matrix = Transform(m_defaultScaling, 0.0, 0.0, m_defaultScaling, _spatium, -_spatium * 7.0); } @@ -196,7 +196,7 @@ PointF ExampleView::toLogical(const QPointF& point) QSize ExampleView::sizeHint() const { qreal mag = m_defaultScaling; - qreal _spatium = SPATIUM20 * mag; + qreal _spatium = score()->style().defaultSpatium() * mag; // staff is 4sp tall with 3sp margin above; this leaves 3sp margin below qreal height = 10.0 * _spatium; if (score() && score()->pages().size() > 0) { @@ -270,8 +270,8 @@ void ExampleView::constraintCanvas(int* dxx) Q_ASSERT(m_score->pages().front()->system(0)); // should exist if doLayout ran // form rectangle bounding the system with a spatium margin and translate relative to view space - qreal xstart = m_score->pages().front()->system(0)->ldata()->bbox().left() - SPATIUM20; - qreal xend = m_score->pages().front()->system(0)->ldata()->bbox().right() + 2.0 * SPATIUM20; + qreal xstart = m_score->pages().front()->system(0)->ldata()->bbox().left() - score()->style().defaultSpatium(); + qreal xend = m_score->pages().front()->system(0)->ldata()->bbox().right() + 2.0 * score()->style().defaultSpatium(); QRectF systemScaledViewRect(xstart * m_matrix.m11(), 0, xend * m_matrix.m11(), 0); systemScaledViewRect.translate(m_matrix.dx(), 0); diff --git a/src/palette/view/widgets/palettewidget.cpp b/src/palette/view/widgets/palettewidget.cpp index a767f0e9eb79e..bbfb4ae41ad2b 100644 --- a/src/palette/view/widgets/palettewidget.cpp +++ b/src/palette/view/widgets/palettewidget.cpp @@ -937,7 +937,7 @@ void PaletteWidget::paintEvent(QPaintEvent* /*event*/) qreal _spatium = gpaletteScore->style().spatium(); qreal magS = configuration()->paletteSpatium() * mag() * paletteScaling(); qreal mag = magS / _spatium; - gpaletteScore->style().setSpatium(SPATIUM20); + gpaletteScore->style().setSpatium(gpaletteScore->style().defaultSpatium()); muse::draw::Painter painter(this, "palette"); painter.setAntialiasing(true); diff --git a/tools/check_build_without_qt/fontproviderstub.cpp b/tools/check_build_without_qt/fontproviderstub.cpp index 14fb4a9e05ce3..bb272e9f251e7 100644 --- a/tools/check_build_without_qt/fontproviderstub.cpp +++ b/tools/check_build_without_qt/fontproviderstub.cpp @@ -38,12 +38,7 @@ double FontProviderStub::descent(const Font&) const return 0.0; } -bool FontProviderStub::inFont(const Font&, Char) const -{ - return false; -} - -bool FontProviderStub::inFontUcs4(const Font&, char32_t) const +bool FontProviderStub::inFont(const Font&, char32_t) const { return false; } @@ -54,7 +49,7 @@ double FontProviderStub::horizontalAdvance(const Font&, const String&) const return 0.0; } -double FontProviderStub::horizontalAdvance(const Font&, const Char&) const +double FontProviderStub::horizontalAdvance(const Font&, char32_t) const { return 0.0; } @@ -64,12 +59,7 @@ RectF FontProviderStub::boundingRect(const Font&, const String&) const return RectF(); } -RectF FontProviderStub::boundingRect(const Font&, const Char&) const -{ - return RectF(); -} - -RectF FontProviderStub::boundingRect(const Font&, const RectF&, int, const String&) const +RectF FontProviderStub::boundingRect(const Font&, char32_t) const { return RectF(); } @@ -78,14 +68,3 @@ RectF FontProviderStub::tightBoundingRect(const Font&, const String&) const { return RectF(); } - -// Score symbols -RectF FontProviderStub::symBBox(const Font&, char32_t, double) const -{ - return RectF(); -} - -double FontProviderStub::symAdvance(const Font&, char32_t, double) const -{ - return 0.0; -} diff --git a/tools/check_build_without_qt/fontproviderstub.h b/tools/check_build_without_qt/fontproviderstub.h index 307792480e28a..349dabe4fd674 100644 --- a/tools/check_build_without_qt/fontproviderstub.h +++ b/tools/check_build_without_qt/fontproviderstub.h @@ -17,21 +17,16 @@ class FontProviderStub : public IFontProvider double ascent(const Font& f) const override; double descent(const Font& f) const override; - bool inFont(const Font& f, Char ch) const override; - bool inFontUcs4(const Font& f, char32_t ucs4) const override; + bool inFont(const Font& f, char32_t ucs4) const override; // Text double horizontalAdvance(const Font& f, const String& string) const override; - double horizontalAdvance(const Font& f, const Char& ch) const override; + double horizontalAdvance(const Font& f, char32_t ucs4) const override; RectF boundingRect(const Font& f, const String& string) const override; - RectF boundingRect(const Font& f, const Char& ch) const override; - RectF boundingRect(const Font& f, const RectF& r, int flags, const String& string) const override; - RectF tightBoundingRect(const Font& f, const String& string) const override; + RectF boundingRect(const Font& f, char32_t ucs4) const override; - // Score symbols - RectF symBBox(const Font& f, char32_t ucs4, double DPI_F) const override; - double symAdvance(const Font& f, char32_t ucs4, double DPI_F) const override; + RectF tightBoundingRect(const Font& f, const String& string) const override; }; } diff --git a/vtest/scores/beams-24.mscz b/vtest/scores/beams-24.mscz index 38f76544e07cf..000c0f9a0b804 100644 Binary files a/vtest/scores/beams-24.mscz and b/vtest/scores/beams-24.mscz differ diff --git a/vtest/scores/harmony-23.mscz b/vtest/scores/harmony-23.mscz index a66292642a130..350be4573fa40 100644 Binary files a/vtest/scores/harmony-23.mscz and b/vtest/scores/harmony-23.mscz differ diff --git a/vtest/scores/harmony-24.mscz b/vtest/scores/harmony-24.mscz index e831545978d79..f49addb6f1a0f 100644 Binary files a/vtest/scores/harmony-24.mscz and b/vtest/scores/harmony-24.mscz differ diff --git a/vtest/scores/justify-text.mscz b/vtest/scores/justify-text.mscz index a73f6ba8ac8c3..67e3c4eba10bc 100644 Binary files a/vtest/scores/justify-text.mscz and b/vtest/scores/justify-text.mscz differ diff --git a/vtest/scores/tempoText-2.mscz b/vtest/scores/tempoText-2.mscz index a3fb706bc9053..7f0a2582516e3 100644 Binary files a/vtest/scores/tempoText-2.mscz and b/vtest/scores/tempoText-2.mscz differ