Skip to content

Commit

Permalink
ENG-78: fix wedges with <offset> values
Browse files Browse the repository at this point in the history
Previously, the <offset> element was not correctly applied to any
spanners in <direction> elements. This commit fixes that and adjusts the
applicable tests accordingly.
  • Loading branch information
iveshenry18 authored and vpereverzev committed Aug 5, 2021
1 parent 5b14aab commit 6a740d3
Show file tree
Hide file tree
Showing 5 changed files with 2,692 additions and 32 deletions.
12 changes: 6 additions & 6 deletions importexport/musicxml/importmxmlpass2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3070,20 +3070,20 @@ void MusicXMLParserDirection::direction(const QString& partId,
}

// handle the spanner stops first
foreach (auto desc, stops) {
for (auto desc : stops) {
auto& spdesc = _pass2.getSpanner({ desc._tp, desc._nr });
if (spdesc._isStopped) {
_logger->logError("spanner already stopped", &_e);
delete desc._sp;
}
else {
if (spdesc._isStarted) {
handleSpannerStop(spdesc._sp, track, tick, spanners);
handleSpannerStop(spdesc._sp, track, tick + _offset, spanners);
_pass2.clearSpanner(desc);
}
else {
spdesc._sp = desc._sp;
spdesc._tick2 = tick;
spdesc._tick2 = tick + _offset;
spdesc._track2 = track;
spdesc._isStopped = true;
}
Expand All @@ -3092,7 +3092,7 @@ void MusicXMLParserDirection::direction(const QString& partId,

// then handle the spanner starts
// TBD handle offset ?
foreach (auto desc, starts) {
for (auto desc : starts) {
auto& spdesc = _pass2.getSpanner({ desc._tp, desc._nr });
if (spdesc._isStarted) {
_logger->logError("spanner already started", &_e);
Expand All @@ -3103,13 +3103,13 @@ void MusicXMLParserDirection::direction(const QString& partId,
_pass2.addSpanner(desc);
// handleSpannerStart and handleSpannerStop must be called in order
// due to allocation of elements in the map
handleSpannerStart(desc._sp, track, placement(), tick, spanners);
handleSpannerStart(desc._sp, track, placement(), tick + _offset, spanners);
handleSpannerStop(spdesc._sp, spdesc._track2, spdesc._tick2, spanners);
_pass2.clearSpanner(desc);
}
else {
_pass2.addSpanner(desc);
handleSpannerStart(desc._sp, track, placement(), tick, spanners);
handleSpannerStart(desc._sp, track, placement(), tick + _offset, spanners);
spdesc._isStarted = true;
}
}
Expand Down
52 changes: 26 additions & 26 deletions mtest/musicxml/io/testBackupRoundingError_ref.mscx
Original file line number Diff line number Diff line change
Expand Up @@ -705,7 +705,7 @@
</HairPin>
<next>
<location>
<fractions>11/24</fractions>
<fractions>1/6</fractions>
</location>
</next>
</Spanner>
Expand Down Expand Up @@ -745,6 +745,13 @@
<tpc>14</tpc>
</Note>
</Chord>
<Spanner type="HairPin">
<prev>
<location>
<fractions>-1/6</fractions>
</location>
</prev>
</Spanner>
<Chord>
<BeamMode>mid</BeamMode>
<small>1</small>
Expand Down Expand Up @@ -783,19 +790,6 @@
<tpc>20</tpc>
</Note>
</Chord>
<location>
<fractions>-1/4</fractions>
</location>
<Spanner type="HairPin">
<prev>
<location>
<fractions>-11/24</fractions>
</location>
</prev>
</Spanner>
<location>
<fractions>1/4</fractions>
</location>
<Chord>
<BeamMode>no</BeamMode>
<small>1</small>
Expand Down Expand Up @@ -1757,21 +1751,34 @@
<tpc>20</tpc>
</Note>
</Chord>
<Fermata>
<subtype>fermataBelow</subtype>
<placement>below</placement>
</Fermata>
<location>
<fractions>-1/8</fractions>
</location>
<Spanner type="Pedal">
<Pedal>
<endHookType>1</endHookType>
<beginText>&lt;sym&gt;keyboardPedalPed&lt;/sym&gt;</beginText>
</Pedal>
<next>
<location>
<fractions>1/4</fractions>
<fractions>1/8</fractions>
</location>
</next>
</Spanner>
<location>
<fractions>1/8</fractions>
</location>
<Fermata>
<subtype>fermataBelow</subtype>
<placement>below</placement>
</Fermata>
<Spanner type="Pedal">
<prev>
<location>
<fractions>-1/8</fractions>
</location>
</prev>
</Spanner>
<Chord>
<durationType>quarter</durationType>
<StemDirection>up</StemDirection>
Expand Down Expand Up @@ -1800,13 +1807,6 @@
<Fermata>
<subtype>fermataAbove</subtype>
</Fermata>
<Spanner type="Pedal">
<prev>
<location>
<fractions>-1/4</fractions>
</location>
</prev>
</Spanner>
<Rest>
<durationType>eighth</durationType>
</Rest>
Expand Down
Loading

0 comments on commit 6a740d3

Please sign in to comment.