Skip to content

Commit

Permalink
Merge pull request #5538 from MarcSabatella/298564-slur-shift
Browse files Browse the repository at this point in the history
fix #298564: shift of manually adjusted slur on small staff
  • Loading branch information
dmitrio95 committed Dec 24, 2019
2 parents ff245fa + 29a9ee0 commit 13649eb
Show file tree
Hide file tree
Showing 5 changed files with 364 additions and 3 deletions.
4 changes: 2 additions & 2 deletions libmscore/slurtie.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ void SlurTieSegment::writeSlur(XmlWriter& xml, int no) const

xml.stag(this, QString("no=\"%1\"").arg(no));

qreal _spatium = spatium();
qreal _spatium = score()->spatium();
if (!ups(Grip::START).off.isNull())
xml.tag("o1", ups(Grip::START).off / _spatium);
if (!ups(Grip::BEZIER1).off.isNull())
Expand All @@ -330,7 +330,7 @@ void SlurTieSegment::writeSlur(XmlWriter& xml, int no) const

void SlurTieSegment::read(XmlReader& e)
{
qreal _spatium = spatium();
qreal _spatium = score()->spatium();
while (e.readNextStartElement()) {
const QStringRef& tag(e.name());
if (tag == "o1")
Expand Down
172 changes: 172 additions & 0 deletions mtest/libmscore/spanners/smallstaff01-ref.mscx
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8"?>
<museScore version="3.01">
<Score>
<LayerTag id="0" tag="default"></LayerTag>
<currentLayer>0</currentLayer>
<Division>480</Division>
<Style>
<pageWidth>8.27</pageWidth>
<pageHeight>11.69</pageHeight>
<pagePrintableWidth>7.4826</pagePrintableWidth>
<Spatium>1.76389</Spatium>
</Style>
<showInvisible>1</showInvisible>
<showUnprintable>1</showUnprintable>
<showFrames>1</showFrames>
<showMargins>0</showMargins>
<metaTag name="arranger"></metaTag>
<metaTag name="composer"></metaTag>
<metaTag name="copyright"></metaTag>
<metaTag name="lyricist"></metaTag>
<metaTag name="movementNumber"></metaTag>
<metaTag name="movementTitle"></metaTag>
<metaTag name="poet"></metaTag>
<metaTag name="source"></metaTag>
<metaTag name="translator"></metaTag>
<metaTag name="workNumber"></metaTag>
<metaTag name="workTitle"></metaTag>
<Part>
<Staff id="1">
<StaffType group="pitched">
<name>stdNormal</name>
<small>1</small>
</StaffType>
</Staff>
<trackName>Piano</trackName>
<Instrument>
<longName>Piano</longName>
<shortName>Pno.</shortName>
<trackName>Piano</trackName>
<minPitchP>21</minPitchP>
<maxPitchP>108</maxPitchP>
<minPitchA>21</minPitchA>
<maxPitchA>108</maxPitchA>
<instrumentId>keyboard.piano</instrumentId>
<Articulation>
<velocity>100</velocity>
<gateTime>95</gateTime>
</Articulation>
<Articulation name="staccatissimo">
<velocity>100</velocity>
<gateTime>33</gateTime>
</Articulation>
<Articulation name="staccato">
<velocity>100</velocity>
<gateTime>50</gateTime>
</Articulation>
<Articulation name="portato">
<velocity>100</velocity>
<gateTime>67</gateTime>
</Articulation>
<Articulation name="tenuto">
<velocity>100</velocity>
<gateTime>100</gateTime>
</Articulation>
<Articulation name="marcato">
<velocity>120</velocity>
<gateTime>67</gateTime>
</Articulation>
<Articulation name="sforzato">
<velocity>150</velocity>
<gateTime>100</gateTime>
</Articulation>
<Articulation name="sforzatoStaccato">
<velocity>150</velocity>
<gateTime>50</gateTime>
</Articulation>
<Articulation name="marcatoStaccato">
<velocity>120</velocity>
<gateTime>50</gateTime>
</Articulation>
<Articulation name="marcatoTenuto">
<velocity>120</velocity>
<gateTime>100</gateTime>
</Articulation>
<Channel>
<program value="0"/>
</Channel>
</Instrument>
</Part>
<Staff id="1">
<Measure>
<voice>
<TimeSig>
<sigN>4</sigN>
<sigD>4</sigD>
</TimeSig>
<Spanner type="Pedal">
<Pedal>
<endHookType>1</endHookType>
<beginHookType>1</beginHookType>
<Segment>
<subtype>0</subtype>
<offset x="0" y="2.8"/>
<off2 x="-10.5" y="0"/>
</Segment>
</Pedal>
<next>
<location>
<fractions>1/1</fractions>
</location>
</next>
</Spanner>
<Chord>
<durationType>quarter</durationType>
<Spanner type="Slur">
<Slur>
<SlurSegment no="0">
<o2 x="0" y="-2.8"/>
<o3 x="0" y="-2.8"/>
</SlurSegment>
</Slur>
<next>
<location>
<fractions>3/4</fractions>
</location>
</next>
</Spanner>
<Note>
<pitch>72</pitch>
<tpc>14</tpc>
</Note>
</Chord>
<Chord>
<durationType>quarter</durationType>
<Note>
<pitch>74</pitch>
<tpc>16</tpc>
</Note>
</Chord>
<Chord>
<durationType>quarter</durationType>
<Note>
<pitch>76</pitch>
<tpc>18</tpc>
</Note>
</Chord>
<Chord>
<durationType>quarter</durationType>
<Spanner type="Slur">
<prev>
<location>
<fractions>-3/4</fractions>
</location>
</prev>
</Spanner>
<Note>
<pitch>77</pitch>
<tpc>13</tpc>
</Note>
</Chord>
<Spanner type="Pedal">
<prev>
<location>
<fractions>-1/1</fractions>
</location>
</prev>
</Spanner>
</voice>
</Measure>
</Staff>
</Score>
</museScore>
172 changes: 172 additions & 0 deletions mtest/libmscore/spanners/smallstaff01.mscx
Original file line number Diff line number Diff line change
@@ -0,0 +1,172 @@
<?xml version="1.0" encoding="UTF-8"?>
<museScore version="3.01">
<Score>
<LayerTag id="0" tag="default"></LayerTag>
<currentLayer>0</currentLayer>
<Division>480</Division>
<Style>
<pageWidth>8.27</pageWidth>
<pageHeight>11.69</pageHeight>
<pagePrintableWidth>7.4826</pagePrintableWidth>
<Spatium>1.76389</Spatium>
</Style>
<showInvisible>1</showInvisible>
<showUnprintable>1</showUnprintable>
<showFrames>1</showFrames>
<showMargins>0</showMargins>
<metaTag name="arranger"></metaTag>
<metaTag name="composer"></metaTag>
<metaTag name="copyright"></metaTag>
<metaTag name="lyricist"></metaTag>
<metaTag name="movementNumber"></metaTag>
<metaTag name="movementTitle"></metaTag>
<metaTag name="poet"></metaTag>
<metaTag name="source"></metaTag>
<metaTag name="translator"></metaTag>
<metaTag name="workNumber"></metaTag>
<metaTag name="workTitle"></metaTag>
<Part>
<Staff id="1">
<StaffType group="pitched">
<name>stdNormal</name>
<small>1</small>
</StaffType>
</Staff>
<trackName>Piano</trackName>
<Instrument>
<longName>Piano</longName>
<shortName>Pno.</shortName>
<trackName>Piano</trackName>
<minPitchP>21</minPitchP>
<maxPitchP>108</maxPitchP>
<minPitchA>21</minPitchA>
<maxPitchA>108</maxPitchA>
<instrumentId>keyboard.piano</instrumentId>
<Articulation>
<velocity>100</velocity>
<gateTime>95</gateTime>
</Articulation>
<Articulation name="staccatissimo">
<velocity>100</velocity>
<gateTime>33</gateTime>
</Articulation>
<Articulation name="staccato">
<velocity>100</velocity>
<gateTime>50</gateTime>
</Articulation>
<Articulation name="portato">
<velocity>100</velocity>
<gateTime>67</gateTime>
</Articulation>
<Articulation name="tenuto">
<velocity>100</velocity>
<gateTime>100</gateTime>
</Articulation>
<Articulation name="marcato">
<velocity>120</velocity>
<gateTime>67</gateTime>
</Articulation>
<Articulation name="sforzato">
<velocity>150</velocity>
<gateTime>100</gateTime>
</Articulation>
<Articulation name="sforzatoStaccato">
<velocity>150</velocity>
<gateTime>50</gateTime>
</Articulation>
<Articulation name="marcatoStaccato">
<velocity>120</velocity>
<gateTime>50</gateTime>
</Articulation>
<Articulation name="marcatoTenuto">
<velocity>120</velocity>
<gateTime>100</gateTime>
</Articulation>
<Channel>
<program value="0"/>
</Channel>
</Instrument>
</Part>
<Staff id="1">
<Measure>
<voice>
<TimeSig>
<sigN>4</sigN>
<sigD>4</sigD>
</TimeSig>
<Spanner type="Pedal">
<Pedal>
<endHookType>1</endHookType>
<beginHookType>1</beginHookType>
<Segment>
<subtype>0</subtype>
<offset x="0" y="2.8"/>
<off2 x="-10.5" y="0"/>
</Segment>
</Pedal>
<next>
<location>
<fractions>1/1</fractions>
</location>
</next>
</Spanner>
<Chord>
<durationType>quarter</durationType>
<Spanner type="Slur">
<Slur>
<SlurSegment no="0">
<o2 x="0" y="-2.8"/>
<o3 x="0" y="-2.8"/>
</SlurSegment>
</Slur>
<next>
<location>
<fractions>3/4</fractions>
</location>
</next>
</Spanner>
<Note>
<pitch>72</pitch>
<tpc>14</tpc>
</Note>
</Chord>
<Chord>
<durationType>quarter</durationType>
<Note>
<pitch>74</pitch>
<tpc>16</tpc>
</Note>
</Chord>
<Chord>
<durationType>quarter</durationType>
<Note>
<pitch>76</pitch>
<tpc>18</tpc>
</Note>
</Chord>
<Chord>
<durationType>quarter</durationType>
<Spanner type="Slur">
<prev>
<location>
<fractions>-3/4</fractions>
</location>
</prev>
</Spanner>
<Note>
<pitch>77</pitch>
<tpc>13</tpc>
</Note>
</Chord>
<Spanner type="Pedal">
<prev>
<location>
<fractions>-1/1</fractions>
</location>
</prev>
</Spanner>
</voice>
</Measure>
</Staff>
</Score>
</museScore>
15 changes: 15 additions & 0 deletions mtest/libmscore/spanners/tst_spanners.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ class TestSpanners : public QObject, public MTest
// void spanners13(); // drop a line break at the middle of a LyricsLine and check LyricsLineSegments
void spanners14(); // creating part from an existing grand staff containing a cross staff glissando
void spanners15(); // change the color & min distance of a line and save it
void spanners16(); // read lines with manual adjustments on a small staff and save
};

//---------------------------------------------------------
Expand Down Expand Up @@ -647,6 +648,20 @@ void TestSpanners::spanners15()
delete score;
}

//---------------------------------------------------------
/// spanners16
/// read manually adjusted lines on a small staff and save
//---------------------------------------------------------

void TestSpanners::spanners16()
{
MasterScore* score = readScore(DIR + "smallstaff01.mscx");
QVERIFY(score);

QVERIFY(saveCompareScore(score, "smallstaff01.mscx", DIR + "smallstaff01-ref.mscx"));
delete score;
}



QTEST_MAIN(TestSpanners)
Expand Down
Loading

0 comments on commit 13649eb

Please sign in to comment.