diff --git a/libmscore/fret.cpp b/libmscore/fret.cpp index 2d40e37fc8489..0f22e5a9dd0af 100644 --- a/libmscore/fret.cpp +++ b/libmscore/fret.cpp @@ -40,6 +40,7 @@ static const ElementStyle fretStyle { { Sid::fretFrets, Pid::FRET_FRETS }, { Sid::fretNut, Pid::FRET_NUT }, { Sid::fretMinDistance, Pid::MIN_DISTANCE }, + { Sid::fretOrientation, Pid::ORIENTATION }, }; //--------------------------------------------------------- @@ -68,6 +69,7 @@ FretDiagram::FretDiagram(const FretDiagram& f) _markers = f._markers; _barres = f._barres; _showNut = f._showNut; + _orientation= f._orientation; if (f._harmony) { Harmony* h = new Harmony(*f._harmony); @@ -267,6 +269,13 @@ void FretDiagram::init(StringData* stringData, Chord* chord) void FretDiagram::draw(QPainter* painter) const { + QPointF translation = -QPointF(stringDist * (_strings - 1), 0); + if (_orientation == Orientation::HORIZONTAL) { + painter->save(); + painter->rotate(-90); + painter->translate(translation); + } + // Init pen and other values qreal _spatium = spatium() * _userMag; QPen pen(curColor()); @@ -296,18 +305,10 @@ void FretDiagram::draw(QPainter* painter) const painter->drawLine(QLineF(0.0, y, x2, y)); } - // Setup the font for the markers - QFont scaledFont(font); - scaledFont.setPointSizeF(font.pointSize() * _userMag * (spatium() / SPATIUM20)); - QFontMetricsF fm(scaledFont, MScore::paintDevice()); - scaledFont.setPointSizeF(scaledFont.pointSizeF() * MScore::pixelRatio); - - painter->setFont(scaledFont); - // dotd is the diameter of a dot qreal dotd = _spatium * .49 * score()->styleD(Sid::fretDotSize); - // Draw dots, sym pen is used to draw them + // Draw dots, sym pen is used to draw them (and markers) QPen symPen(pen); symPen.setCapStyle(Qt::RoundCap); qreal symPenWidth = stringLw * 1.2; @@ -356,19 +357,24 @@ void FretDiagram::draw(QPainter* painter) const } // Draw markers - painter->setPen(pen); + symPen.setWidthF(symPenWidth * 1.2); + painter->setBrush(Qt::NoBrush); + painter->setPen(symPen); for (auto const& i : _markers) { int string = i.first; FretItem::Marker marker = i.second; if (!marker.exists()) continue; - QChar markerChar = FretItem::markerToChar(marker.mtype); - - qreal x = stringDist * string; - qreal y = -fretDist * .3 - fm.ascent(); - painter->drawText(QRectF(x, y, .0, .0), - Qt::AlignHCenter|Qt::TextDontClip, markerChar); + qreal x = stringDist * string - markerSize * .5; + qreal y = -fretDist - markerSize * .5; + if (marker.mtype == FretMarkerType::CIRCLE) { + painter->drawEllipse(QRectF(x, y, markerSize, markerSize)); + } + else if (marker.mtype == FretMarkerType::CROSS) { + painter->drawLine(QPointF(x, y), QPointF(x + markerSize, y + markerSize)); + painter->drawLine(QPointF(x, y + markerSize), QPointF(x + markerSize, y)); + } } // Draw barres @@ -389,22 +395,44 @@ void FretDiagram::draw(QPainter* painter) const // Draw fret offset number if (_fretOffset > 0) { qreal fretNumMag = score()->styleD(Sid::fretNumMag); - scaledFont.setPointSizeF(scaledFont.pointSizeF() * fretNumMag); + QFont scaledFont(font); + scaledFont.setPointSizeF(font.pointSize() * _userMag * (spatium() / SPATIUM20) * MScore::pixelRatio * fretNumMag); painter->setFont(scaledFont); - if (_numPos == 0) { - painter->drawText(QRectF(-stringDist *.4, .0, .0, fretDist), - Qt::AlignVCenter|Qt::AlignRight|Qt::TextDontClip, - QString("%1").arg(_fretOffset+1)); + QString text = QString("%1").arg(_fretOffset+1); + + if (_orientation == Orientation::VERTICAL) { + if (_numPos == 0) { + painter->drawText(QRectF(-stringDist * .4, .0, .0, fretDist), + Qt::AlignVCenter|Qt::AlignRight|Qt::TextDontClip, text); + } + else { + painter->drawText(QRectF(x2 + (stringDist * .4), .0, .0, fretDist), + Qt::AlignVCenter|Qt::AlignLeft|Qt::TextDontClip, + QString("%1").arg(_fretOffset+1)); + } } - else { - painter->drawText(QRectF(x2 + (stringDist * 0.4), .0, .0, fretDist), - Qt::AlignVCenter|Qt::AlignLeft|Qt::TextDontClip, - QString("%1").arg(_fretOffset+1)); + else if (_orientation == Orientation::HORIZONTAL) { + painter->save(); + painter->translate(-translation); + painter->rotate(90); + if (_numPos == 0) { + painter->drawText(QRectF(.0, stringDist * (_strings - 1), .0, .0), + Qt::AlignLeft|Qt::TextDontClip, text); + } + else { + painter->drawText(QRectF(.0, .0, .0, .0), + Qt::AlignBottom|Qt::AlignLeft|Qt::TextDontClip, text); + } + painter->restore(); } painter->setFont(font); } // NOTE:JT possible future todo - draw fingerings + + if (_orientation == Orientation::HORIZONTAL) { + painter->restore(); + } } //--------------------------------------------------------- @@ -418,39 +446,70 @@ void FretDiagram::layout() nutLw = (_fretOffset || !_showNut) ? stringLw : _spatium * 0.2; stringDist = score()->styleP(Sid::fretStringSpacing) * _userMag; fretDist = score()->styleP(Sid::fretFretSpacing) * _userMag; + markerSize = stringDist * .8; - qreal w = stringDist * (_strings - 1); - qreal h = _frets * fretDist + fretDist * .5; - qreal y = 0.0; - qreal dotd = _spatium * .49 * score()->styleD(Sid::fretDotSize); - qreal x = -((dotd+stringLw) * .5); - w += dotd + stringLw; - - // Always allocate space for markers - QFont scaledFont(font); - scaledFont.setPointSize(font.pointSize() * _userMag); - QFontMetricsF fm(scaledFont, MScore::paintDevice()); - y = -(fretDist * .1 + fm.height()); - h -= y; + qreal w = stringDist * (_strings - 1) + markerSize; + qreal h = (_frets + 1) * fretDist + markerSize; + qreal y = -(markerSize * .5 + fretDist); + qreal x = -(markerSize * .5); + // Allocate space for fret offset number if (_fretOffset > 0) { + QFont scaledFont(font); + scaledFont.setPointSize(font.pointSize() * _userMag); + QFontMetricsF fm(scaledFont, MScore::paintDevice()); + qreal fretNumMag = score()->styleD(Sid::fretNumMag); scaledFont.setPointSizeF(scaledFont.pointSizeF() * fretNumMag); QFontMetricsF fm2(scaledFont, MScore::paintDevice()); qreal numw = fm2.width(QString("%1").arg(_fretOffset+1)); qreal xdiff = numw + stringDist * .4; w += xdiff; - x += _numPos == 0 ? -xdiff : 0; + x += (_numPos == 0) == (_orientation == Orientation::VERTICAL) ? -xdiff : 0; } - bbox().setRect(x, y, w, h); + if (_orientation == Orientation::HORIZONTAL) { + qreal tempW = w, + tempX = x; + w = h; + h = tempW; + x = y; + y = tempX; + } - setPos(-_spatium, -h - styleP(Sid::fretY) + _spatium ); + bbox().setRect(x, y, w, h); if (!parent() || !parent()->isSegment()) { setPos(QPointF()); return; } + + // We need to get the width of the notehead/rest in order to position the fret diagram correctly + Segment* pSeg = toSegment(parent()); + qreal noteheadWidth = 0; + if (pSeg->isChordRestType()) { + int idx = staff()->idx(); + for (Element* e = pSeg->firstElementOfSegment(pSeg, idx); e; e = pSeg->nextElementOfSegment(pSeg, e, idx)) { + if (e->isRest()) { + Rest* r = toRest(e); + noteheadWidth = symWidth(r->sym()); + break; + } + else if (e->isNote()) { + Note* n = toNote(e); + noteheadWidth = n->headWidth(); + break; + } + } + } + + qreal mainWidth; + if (_orientation == Orientation::VERTICAL) + mainWidth = stringDist * (_strings - 1); + else if (_orientation == Orientation::HORIZONTAL) + mainWidth = fretDist * (_frets + 0.5); + setPos((noteheadWidth - mainWidth)/2, -(h + styleP(Sid::fretY))); + autoplaceSegmentElement(); // don't display harmony in palette @@ -501,14 +560,15 @@ qreal FretDiagram::centerX() const // written, edit the writeNew function. writeOld is purely compatibility. //--------------------------------------------------------- -static const std::array pids { { +static const std::array pids { { Pid::MIN_DISTANCE, Pid::FRET_OFFSET, Pid::FRET_FRETS, Pid::FRET_STRINGS, Pid::FRET_NUT, Pid::MAG, - Pid::FRET_NUM_POS + Pid::FRET_NUM_POS, + Pid::ORIENTATION } }; void FretDiagram::write(XmlWriter& xml) const @@ -707,6 +767,8 @@ void FretDiagram::read(XmlReader& e) // Check for new properties else if (tag == "showNut") readProperty(e, Pid::FRET_NUT); + else if (tag == "orientation") + readProperty(e, Pid::ORIENTATION); // Then read the rest if there is no new format diagram (compatibility read) else if (tag == "strings") @@ -1118,6 +1180,7 @@ void FretDiagram::add(Element* e) _harmony = toHarmony(e); _harmony->setTrack(track()); _harmony->resetProperty(Pid::OFFSET); + _harmony->setProperty(Pid::ALIGN, int(Align::HCENTER | Align::TOP)); } else qWarning("FretDiagram: cannot add <%s>\n", e->name()); @@ -1278,6 +1341,9 @@ QVariant FretDiagram::getProperty(Pid propertyId) const return fretOffset(); case Pid::FRET_NUM_POS: return _numPos; + case Pid::ORIENTATION: + return int(_orientation); + break; default: return Element::getProperty(propertyId); } @@ -1308,6 +1374,9 @@ bool FretDiagram::setProperty(Pid propertyId, const QVariant& v) case Pid::FRET_NUM_POS: _numPos = v.toInt(); break; + case Pid::ORIENTATION: + _orientation = Orientation(v.toInt()); + break; default: return Element::setProperty(propertyId, v); } diff --git a/libmscore/fret.h b/libmscore/fret.h index 306a8499fa5ba..3a3409b1dffb1 100644 --- a/libmscore/fret.h +++ b/libmscore/fret.h @@ -21,6 +21,11 @@ namespace Ms { class StringData; class Chord; +enum class Orientation : signed char { + VERTICAL, + HORIZONTAL + }; + // Keep this in order - not used directly for comparisons, but the dots will appear in // this order in fret multidot mode. See fretproperties.cpp. enum class FretDotType : signed char { @@ -125,6 +130,7 @@ class FretDiagram final : public Element { int _fretOffset { 0 }; int _maxFrets { 24 }; bool _showNut { true }; + Orientation _orientation { Orientation::VERTICAL }; // Barres are stored in the format: K: fret, V: barre struct BarreMap _barres; @@ -143,6 +149,7 @@ class FretDiagram final : public Element { qreal fretDist; QFont font; qreal _userMag { 1.0 }; // allowed 0.1 - 10.0 + qreal markerSize; int _numPos; void removeDot(int s, int f = 0); diff --git a/libmscore/harmony.cpp b/libmscore/harmony.cpp index b610a6154bf9f..eaf0e24c807f6 100644 --- a/libmscore/harmony.cpp +++ b/libmscore/harmony.cpp @@ -970,23 +970,65 @@ QString HDegree::text() const return ss; } +//--------------------------------------------------------- +// findInSeg +/// find a Harmony in a given segment on the same track as this harmony. +/// +/// returns 0 if there is none +//--------------------------------------------------------- + +Harmony* Harmony::findInSeg(Segment* seg) const + { + // Find harmony as parent of fret diagram on same track + Element* fde = seg->findAnnotation(ElementType::FRET_DIAGRAM, track(), track()); + if (fde) { + FretDiagram* fd = toFretDiagram(fde); + if (fd->harmony()) { + return toHarmony(fd->harmony()); + } + } + + // Find harmony on same track + Element* e = seg->findAnnotation(ElementType::HARMONY, track(), track()); + if (e) { + return toHarmony(e); + } + return nullptr; + } + +//--------------------------------------------------------- +// getParentSeg +/// gets the parent segment of this harmony +//--------------------------------------------------------- + +Segment* Harmony::getParentSeg() const + { + Segment* seg; + if (parent()->isFretDiagram()) { + // When this harmony is the child of a fret diagram, we need to go up twice + // to get to the parent seg. + seg = toSegment(parent()->parent()); + } + else { + seg = toSegment(parent()); + } + return seg; + } + //--------------------------------------------------------- // findNext /// find the next Harmony in the score /// /// returns 0 if there is none //--------------------------------------------------------- + Harmony* Harmony::findNext() const { - Segment* seg = toSegment(parent()); - Segment* cur = seg->next1(); + Segment* cur = getParentSeg()->next1(); while (cur) { - //find harmony on same track - Element* e = cur->findAnnotation(ElementType::HARMONY, - track(), track()); - if (e) { - //we have found harmony element - return toHarmony(e); + Harmony* h = findInSeg(cur); + if (h) { + return h; } cur = cur->next1(); } @@ -999,17 +1041,14 @@ Harmony* Harmony::findNext() const /// /// returns 0 if there is none //--------------------------------------------------------- + Harmony* Harmony::findPrev() const { - Segment* seg = toSegment(parent()); - Segment* cur = seg->prev1(); + Segment* cur = getParentSeg()->prev1(); while (cur) { - //find harmony on same track - Element* e = cur->findAnnotation(ElementType::HARMONY, - track(), track()); - if (e) { - //we have found harmony element - return toHarmony(e); + Harmony* h = findInSeg(cur); + if (h) { + return h; } cur = cur->prev1(); } diff --git a/libmscore/harmony.h b/libmscore/harmony.h index cea8aec7ac8cd..3f65f1df3ddba 100644 --- a/libmscore/harmony.h +++ b/libmscore/harmony.h @@ -109,6 +109,9 @@ class Harmony final : public TextBase { void render(const QList& renderList, qreal&, qreal&, int tpc, NoteSpellingType noteSpelling = NoteSpellingType::STANDARD, NoteCaseType noteCase = NoteCaseType::AUTO); Sid getPropertyStyle(Pid) const override; + Segment* getParentSeg() const; + Harmony* findInSeg(Segment* seg) const; + public: Harmony(Score* = 0); Harmony(const Harmony&); diff --git a/libmscore/property.cpp b/libmscore/property.cpp index 2ea8afbcf8c97..c2b47182124bf 100644 --- a/libmscore/property.cpp +++ b/libmscore/property.cpp @@ -28,6 +28,7 @@ #include "style.h" #include "sym.h" #include "changeMap.h" +#include "fret.h" namespace Ms { @@ -230,6 +231,8 @@ static constexpr PropertyMetaData propertyList[] = { { Pid::FRET_NUT, true, "showNut", P_TYPE::BOOL, DUMMY_QT_TRANSLATE_NOOP("propertyName", "show nut") }, { Pid::FRET_OFFSET, true, "fretOffset", P_TYPE::INT, DUMMY_QT_TRANSLATE_NOOP("propertyName", "fret offset") }, { Pid::FRET_NUM_POS, true, "fretNumPos", P_TYPE::INT, DUMMY_QT_TRANSLATE_NOOP("propertyName", "fret number position") }, + { Pid::ORIENTATION, true, "orientation", P_TYPE::ORIENTATION, DUMMY_QT_TRANSLATE_NOOP("propertyName", "orientation") }, + { Pid::HARMONY_VOICE_LITERAL, true, "harmonyVoiceLiteral", P_TYPE::BOOL, DUMMY_QT_TRANSLATE_NOOP("propertyName", "harmony voice literal") }, { Pid::HARMONY_VOICING, true, "harmonyVoicing", P_TYPE::INT, DUMMY_QT_TRANSLATE_NOOP("propertyName", "harmony voicing") }, { Pid::HARMONY_DURATION, true, "harmonyDuration", P_TYPE::INT, DUMMY_QT_TRANSLATE_NOOP("propertyName", "harmony duration") }, @@ -588,6 +591,14 @@ QVariant propertyFromString(Pid id, QString value) } return int(align); } + case P_TYPE::CHANGE_METHOD: + return QVariant(int(ChangeMap::nameToChangeMethod(value))); + case P_TYPE::ORIENTATION: + if (value == "vertical") + return QVariant(int(Orientation::VERTICAL)); + else if (value == "horizontal") + return QVariant(int(Orientation::HORIZONTAL)); + break; default: break; } @@ -641,6 +652,7 @@ QVariant readProperty(Pid id, XmlReader& e) case P_TYPE::HEAD_TYPE: case P_TYPE::SUB_STYLE: case P_TYPE::ALIGN: + case P_TYPE::ORIENTATION: return propertyFromString(id, e.readElementText()); case P_TYPE::BEAM_MODE: // TODO @@ -850,6 +862,14 @@ QString propertyToString(Pid id, QVariant value, bool mscx) v = "top"; return QString("%1,%2").arg(h, v); } + case P_TYPE::ORIENTATION: { + const Orientation o = Orientation(value.toInt()); + if (o == Orientation::VERTICAL) + return "vertical"; + else if (o == Orientation::HORIZONTAL) + return "horizontal"; + break; + } case P_TYPE::POINT_MM: qFatal("unknown: POINT_MM"); case P_TYPE::SIZE_MM: diff --git a/libmscore/property.h b/libmscore/property.h index 30529c7b79af3..071ea31908b58 100644 --- a/libmscore/property.h +++ b/libmscore/property.h @@ -239,6 +239,7 @@ enum class Pid { FRET_NUT, FRET_OFFSET, FRET_NUM_POS, + ORIENTATION, HARMONY_VOICE_LITERAL, HARMONY_VOICING, @@ -402,6 +403,7 @@ enum class P_TYPE : char { CLEF_TYPE, // enum class ClefType DYNAMIC_TYPE, // enum class Dynamic::Type KEYMODE, // enum class KeyMode + ORIENTATION, // enum class Orientation PATH, // QPainterPath HEAD_SCHEME, // enum class NoteHead::Scheme diff --git a/libmscore/style.cpp b/libmscore/style.cpp index 93eb311c3dd07..26069065cef9a 100644 --- a/libmscore/style.cpp +++ b/libmscore/style.cpp @@ -358,6 +358,7 @@ static const StyleType styleTypes[] { { Sid::fretDotSize, "fretDotSize", QVariant(1.0) }, { Sid::fretStringSpacing, "fretStringSpacing", Spatium(0.7) }, { Sid::fretFretSpacing, "fretFretSpacing", Spatium(0.8) }, + { Sid::fretOrientation, "fretOrientation", int(Orientation::VERTICAL) }, { Sid::showPageNumber, "showPageNumber", QVariant(true) }, { Sid::showPageNumberOne, "showPageNumberOne", QVariant(false) }, diff --git a/libmscore/style.h b/libmscore/style.h index ee61445e5a0cd..8ac6020ed8b79 100644 --- a/libmscore/style.h +++ b/libmscore/style.h @@ -328,6 +328,7 @@ enum class Sid { fretDotSize, fretStringSpacing, fretFretSpacing, + fretOrientation, showPageNumber, showPageNumberOne, diff --git a/mscore/inspector/inspectorFret.cpp b/mscore/inspector/inspectorFret.cpp index ab31b1f117b92..6ccb9ffcc473b 100644 --- a/mscore/inspector/inspectorFret.cpp +++ b/mscore/inspector/inspectorFret.cpp @@ -34,6 +34,7 @@ InspectorFretDiagram::InspectorFretDiagram(QWidget* parent) { Pid::FRET_STRINGS, 0, f.strings, f.resetStrings }, { Pid::FRET_FRETS, 0, f.frets, f.resetFrets }, { Pid::FRET_NUT, 0, f.showNut, f.resetShowNut }, + { Pid::ORIENTATION, 0, f.orientation, f.resetOrientation }, }; const std::vector ppList = { { f.title, f.panel } @@ -132,7 +133,7 @@ void InspectorFretDiagram::genericButtonToggled(QPushButton* b, bool v, FretDotT f.diagram->setCurrentDotType(dtype); b->setChecked(true); } - + f.diagram->setAutomaticDotType(!v); for (QPushButton* p : dotTypeButtons) @@ -142,7 +143,7 @@ void InspectorFretDiagram::genericButtonToggled(QPushButton* b, bool v, FretDotT // circleButtonToggled //--------------------------------------------------------- -void InspectorFretDiagram::circleButtonToggled(bool v) +void InspectorFretDiagram::circleButtonToggled(bool v) { genericButtonToggled(f.circleSelect, v, FretDotType::NORMAL); } @@ -151,7 +152,7 @@ void InspectorFretDiagram::circleButtonToggled(bool v) // crossButtonToggled //--------------------------------------------------------- -void InspectorFretDiagram::crossButtonToggled(bool v) +void InspectorFretDiagram::crossButtonToggled(bool v) { genericButtonToggled(f.crossSelect, v, FretDotType::CROSS); } @@ -160,7 +161,7 @@ void InspectorFretDiagram::crossButtonToggled(bool v) // squareButtonToggled //--------------------------------------------------------- -void InspectorFretDiagram::squareButtonToggled(bool v) +void InspectorFretDiagram::squareButtonToggled(bool v) { genericButtonToggled(f.squareSelect, v, FretDotType::SQUARE); } @@ -169,7 +170,7 @@ void InspectorFretDiagram::squareButtonToggled(bool v) // triangleButtonToggled //--------------------------------------------------------- -void InspectorFretDiagram::triangleButtonToggled(bool v) +void InspectorFretDiagram::triangleButtonToggled(bool v) { genericButtonToggled(f.triangleSelect, v, FretDotType::TRIANGLE); } @@ -178,7 +179,7 @@ void InspectorFretDiagram::triangleButtonToggled(bool v) // barreButtonToggled //--------------------------------------------------------- -void InspectorFretDiagram::barreButtonToggled(bool v) +void InspectorFretDiagram::barreButtonToggled(bool v) { f.diagram->setBarreMode(v); } @@ -187,7 +188,7 @@ void InspectorFretDiagram::barreButtonToggled(bool v) // multidotButtonToggled //--------------------------------------------------------- -void InspectorFretDiagram::multidotButtonToggled(bool v) +void InspectorFretDiagram::multidotButtonToggled(bool v) { f.diagram->setMultidotMode(v); } @@ -196,7 +197,7 @@ void InspectorFretDiagram::multidotButtonToggled(bool v) // clearButtonClicked //--------------------------------------------------------- -void InspectorFretDiagram::clearButtonClicked() +void InspectorFretDiagram::clearButtonClicked() { f.diagram->clear(); } diff --git a/mscore/inspector/inspector_fret.ui b/mscore/inspector/inspector_fret.ui index d7abe05aa608b..ab24616caf51c 100644 --- a/mscore/inspector/inspector_fret.ui +++ b/mscore/inspector/inspector_fret.ui @@ -7,7 +7,7 @@ 0 0 220 - 550 + 732 @@ -66,7 +66,7 @@ 10 - + 3 @@ -82,84 +82,92 @@ 3 - - - - - 0 - 0 - - + + - Reset 'Frets' value + Fret number + + + 1 - - + + - + 0 0 - Strings + Reset 'Strings' value - - 1 + + + + + + Fret number: + + + fretNumber - - + + - + 0 - 0 + 10 - - Scale - - - 0.200000000000000 - - - 50.000000000000000 + + + 50 + 250 + - - 0.200000000000000 + + true - - 1.000000000000000 + + true - - + + - Scale: + Frets: - mag + frets - + - Strings: + Orientation: + + + + + + + Fret number: - strings + fretNumber - + - + 0 0 @@ -169,49 +177,32 @@ - - + + - + 0 0 - Reset 'Placement' value - - - - - - - - 0 - 10 - + Scale - - - 50 - 250 - + + 0.200000000000000 - - true + + 50.000000000000000 - - - - - - Fret number: + + 0.200000000000000 - - fretNumber + + 1.000000000000000 - + @@ -227,7 +218,7 @@ - + @@ -243,39 +234,33 @@ - - + + - + 0 0 - Frets - - - 1 + Reset 'Frets' value - - - - - 0 - 0 - + + + + Placement: - - Reset 'Show nut' value + + placement - + 0 0 @@ -285,8 +270,8 @@ - - + + 0 @@ -294,57 +279,27 @@ - Placement - - - true - - - - Above - - - - - Below - - - - - - - - Placement: + Frets - - placement + + 1 - + - + 0 0 - Reset 'Strings' value - - - - - - - Frets: - - - frets + Reset 'Orientation' value - + @@ -529,6 +484,93 @@ + + + + + 0 + 0 + + + + Reset 'Placement' value + + + + + + + Strings: + + + strings + + + + + + + + Vertical + + + + + Horizontal + + + + + + + + Scale: + + + + + + + + 0 + 0 + + + + Strings + + + 1 + + + + + + + + 0 + 0 + + + + Reset 'Show nut' value + + + + + + + + Above + + + + + Below + + + + @@ -551,7 +593,6 @@ title mag - placement frets diff --git a/vtest/gen-ref b/vtest/gen-ref index c6bbb1239fc71..a22c6fe58a7b1 100755 --- a/vtest/gen-ref +++ b/vtest/gen-ref @@ -4,7 +4,7 @@ # create reference # - MSCORE=../build.debug/mscore/mscore + MSCORE=../build.debug/main/mscore #MSCORE=mscore2 DPI=130 diff --git a/vtest/harmony-2-ref.png b/vtest/harmony-2-ref.png index 545bd058fa798..1f5c9664631d6 100644 Binary files a/vtest/harmony-2-ref.png and b/vtest/harmony-2-ref.png differ diff --git a/vtest/layout-sequence-10-ref.png b/vtest/layout-sequence-10-ref.png index 44d10ebc3f5ac..b8d299e33da44 100644 Binary files a/vtest/layout-sequence-10-ref.png and b/vtest/layout-sequence-10-ref.png differ diff --git a/vtest/layout-sequence-14-ref.png b/vtest/layout-sequence-14-ref.png index 27e4dee3b4348..230d048bd65b4 100644 Binary files a/vtest/layout-sequence-14-ref.png and b/vtest/layout-sequence-14-ref.png differ diff --git a/vtest/layout-sequence-16-ref.png b/vtest/layout-sequence-16-ref.png index e067f1459cb37..f5d964227a6df 100644 Binary files a/vtest/layout-sequence-16-ref.png and b/vtest/layout-sequence-16-ref.png differ