fix #24725
This commit is contained in:
parent
8cf7751728
commit
39895c9189
8 changed files with 205 additions and 9 deletions
|
@ -592,24 +592,30 @@ void SlurHandler::doSlurStop(Chord* chord, Notations& notations, Xml& xml)
|
||||||
// <glissando line-type="wavy" number="1" type="start"/>
|
// <glissando line-type="wavy" number="1" type="start"/>
|
||||||
// </notations>
|
// </notations>
|
||||||
|
|
||||||
static void glissando(Glissando* gli, int number, bool start, Notations& notations, Xml& xml)
|
static void glissando(const Glissando* gli, int number, bool start, Notations& notations, Xml& xml)
|
||||||
{
|
{
|
||||||
Glissando::Type st = gli->glissandoType();
|
Glissando::Type st = gli->glissandoType();
|
||||||
|
QString tagName;
|
||||||
switch (st) {
|
switch (st) {
|
||||||
case Glissando::Type::STRAIGHT:
|
case Glissando::Type::STRAIGHT:
|
||||||
notations.tag(xml);
|
tagName = "slide line-type=\"solid\"";
|
||||||
xml.tagE("slide line-type=\"solid\" number=\"%d\" type=\"%s\"",
|
|
||||||
number, start ? "start" : "stop");
|
|
||||||
break;
|
break;
|
||||||
case Glissando::Type::WAVY:
|
case Glissando::Type::WAVY:
|
||||||
notations.tag(xml);
|
tagName = "glissando line-type=\"wavy\"";
|
||||||
xml.tagE("glissando line-type=\"wavy\" number=\"%d\" type=\"%s\"",
|
|
||||||
number, start ? "start" : "stop");
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
qDebug("unknown glissando subtype %hhd", st);
|
qDebug("unknown glissando subtype %hhd", st);
|
||||||
|
return;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
tagName += QString(" number=\"%1\" type=\"%2\"").arg(number).arg(start ? "start" : "stop");
|
||||||
|
if (gli->color() != MScore::defaultColor)
|
||||||
|
tagName += " color=\"" + gli->color().name().toUpper() + "\"";
|
||||||
|
notations.tag(xml);
|
||||||
|
if (start && gli->showText() && gli->text() != "")
|
||||||
|
xml.tag(tagName, gli->text());
|
||||||
|
else
|
||||||
|
xml.tagE(tagName);
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
|
|
|
@ -769,6 +769,8 @@ void MusicXml::initPartState()
|
||||||
hairpin = 0;
|
hairpin = 0;
|
||||||
figBass = 0;
|
figBass = 0;
|
||||||
figBassExtend = false;
|
figBassExtend = false;
|
||||||
|
glissandoText = "";
|
||||||
|
glissandoColor = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
//---------------------------------------------------------
|
//---------------------------------------------------------
|
||||||
|
@ -4412,11 +4414,20 @@ void MusicXml::xmlNotations(Note* note, ChordRest* cr, int trk, int tick, int ti
|
||||||
else if (ee.tagName() == "non-arpeggiate")
|
else if (ee.tagName() == "non-arpeggiate")
|
||||||
arpeggioType = "non-arpeggiate";
|
arpeggioType = "non-arpeggiate";
|
||||||
// glissando and slide are added to the "stop" chord only
|
// glissando and slide are added to the "stop" chord only
|
||||||
|
// but text and color are read at start
|
||||||
else if (ee.tagName() == "glissando") {
|
else if (ee.tagName() == "glissando") {
|
||||||
if (ee.attribute("type") == "stop") glissandoType = "glissando";
|
if (ee.attribute("type") == "start") {
|
||||||
|
glissandoText = ee.text();
|
||||||
|
glissandoColor = ee.attribute("color");
|
||||||
|
}
|
||||||
|
else if (ee.attribute("type") == "stop") glissandoType = "glissando";
|
||||||
}
|
}
|
||||||
else if (ee.tagName() == "slide") {
|
else if (ee.tagName() == "slide") {
|
||||||
if (ee.attribute("type") == "stop") glissandoType = "slide";
|
if (ee.attribute("type") == "start") {
|
||||||
|
glissandoText = ee.text();
|
||||||
|
glissandoColor = ee.attribute("color");
|
||||||
|
}
|
||||||
|
else if (ee.attribute("type") == "stop") glissandoType = "slide";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
domError(ee);
|
domError(ee);
|
||||||
|
@ -4457,6 +4468,21 @@ void MusicXml::xmlNotations(Note* note, ChordRest* cr, int trk, int tick, int ti
|
||||||
delete g;
|
delete g;
|
||||||
g = 0;
|
g = 0;
|
||||||
}
|
}
|
||||||
|
if (g) {
|
||||||
|
if (glissandoText == "")
|
||||||
|
g->setShowText(false);
|
||||||
|
else {
|
||||||
|
g->setShowText(true);
|
||||||
|
g->setText(glissandoText);
|
||||||
|
glissandoText = "";
|
||||||
|
}
|
||||||
|
if (glissandoColor != "") {
|
||||||
|
QColor color(glissandoColor);
|
||||||
|
if (color.isValid())
|
||||||
|
g->setColor(color);
|
||||||
|
glissandoColor = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
if ((static_cast<Chord*>(cr))->glissando()) {
|
if ((static_cast<Chord*>(cr))->glissando()) {
|
||||||
// there can be only one
|
// there can be only one
|
||||||
delete g;
|
delete g;
|
||||||
|
|
|
@ -189,6 +189,8 @@ class MusicXml {
|
||||||
FiguredBass* figBass; ///< Current figured bass element (to attach to next note)
|
FiguredBass* figBass; ///< Current figured bass element (to attach to next note)
|
||||||
bool figBassExtend; ///< Current figured bass extend
|
bool figBassExtend; ///< Current figured bass extend
|
||||||
Beam::Mode beamMode; ///< Current beam mode
|
Beam::Mode beamMode; ///< Current beam mode
|
||||||
|
QString glissandoText; ///< Glissando text at glissando start
|
||||||
|
QString glissandoColor; ///< Glissando color at glissando start
|
||||||
|
|
||||||
int pageWidth; ///< Page width read from defaults
|
int pageWidth; ///< Page width read from defaults
|
||||||
int pageHeight; ///< Page height read from defaults
|
int pageHeight; ///< Page height read from defaults
|
||||||
|
|
Binary file not shown.
Binary file not shown.
BIN
mtest/musicxml/io/testArpGliss3.pdf
Normal file
BIN
mtest/musicxml/io/testArpGliss3.pdf
Normal file
Binary file not shown.
161
mtest/musicxml/io/testArpGliss3.xml
Normal file
161
mtest/musicxml/io/testArpGliss3.xml
Normal file
|
@ -0,0 +1,161 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 3.0 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
|
||||||
|
<score-partwise>
|
||||||
|
<work>
|
||||||
|
<work-number>MuseScore testfile</work-number>
|
||||||
|
<work-title>Arpeggio/glissando 3</work-title>
|
||||||
|
</work>
|
||||||
|
<identification>
|
||||||
|
<creator type="composer">Simon Giddings</creator>
|
||||||
|
<encoding>
|
||||||
|
<software>MuseScore 0.7.0</software>
|
||||||
|
<encoding-date>2007-09-10</encoding-date>
|
||||||
|
</encoding>
|
||||||
|
</identification>
|
||||||
|
<part-list>
|
||||||
|
<score-part id="P1">
|
||||||
|
<part-name>Voice</part-name>
|
||||||
|
<score-instrument id="P1-I3">
|
||||||
|
<instrument-name>Voice</instrument-name>
|
||||||
|
</score-instrument>
|
||||||
|
<midi-instrument id="P1-I3">
|
||||||
|
<midi-channel>1</midi-channel>
|
||||||
|
<midi-program>53</midi-program>
|
||||||
|
<volume>78.7402</volume>
|
||||||
|
<pan>0</pan>
|
||||||
|
</midi-instrument>
|
||||||
|
</score-part>
|
||||||
|
</part-list>
|
||||||
|
<part id="P1">
|
||||||
|
<measure number="1">
|
||||||
|
<attributes>
|
||||||
|
<divisions>1</divisions>
|
||||||
|
<key>
|
||||||
|
<fifths>0</fifths>
|
||||||
|
<mode>major</mode>
|
||||||
|
</key>
|
||||||
|
<time>
|
||||||
|
<beats>4</beats>
|
||||||
|
<beat-type>4</beat-type>
|
||||||
|
</time>
|
||||||
|
<clef>
|
||||||
|
<sign>G</sign>
|
||||||
|
<line>2</line>
|
||||||
|
</clef>
|
||||||
|
</attributes>
|
||||||
|
<note>
|
||||||
|
<pitch>
|
||||||
|
<step>D</step>
|
||||||
|
<octave>5</octave>
|
||||||
|
</pitch>
|
||||||
|
<duration>2</duration>
|
||||||
|
<voice>1</voice>
|
||||||
|
<type>half</type>
|
||||||
|
<stem>down</stem>
|
||||||
|
<notations>
|
||||||
|
<glissando line-type="wavy" number="1" type="start">gliss.</glissando>
|
||||||
|
</notations>
|
||||||
|
</note>
|
||||||
|
<note>
|
||||||
|
<pitch>
|
||||||
|
<step>G</step>
|
||||||
|
<octave>4</octave>
|
||||||
|
</pitch>
|
||||||
|
<duration>2</duration>
|
||||||
|
<voice>1</voice>
|
||||||
|
<type>half</type>
|
||||||
|
<stem>up</stem>
|
||||||
|
<notations>
|
||||||
|
<glissando line-type="wavy" number="1" type="stop"/>
|
||||||
|
</notations>
|
||||||
|
</note>
|
||||||
|
</measure>
|
||||||
|
<measure number="2">
|
||||||
|
<note>
|
||||||
|
<pitch>
|
||||||
|
<step>G</step>
|
||||||
|
<octave>4</octave>
|
||||||
|
</pitch>
|
||||||
|
<duration>2</duration>
|
||||||
|
<voice>1</voice>
|
||||||
|
<type>half</type>
|
||||||
|
<stem>up</stem>
|
||||||
|
<notations>
|
||||||
|
<glissando line-type="wavy" number="1" type="start" color="#005500"/>
|
||||||
|
</notations>
|
||||||
|
</note>
|
||||||
|
<note>
|
||||||
|
<pitch>
|
||||||
|
<step>F</step>
|
||||||
|
<octave>5</octave>
|
||||||
|
</pitch>
|
||||||
|
<duration>2</duration>
|
||||||
|
<voice>1</voice>
|
||||||
|
<type>half</type>
|
||||||
|
<stem>down</stem>
|
||||||
|
<notations>
|
||||||
|
<glissando line-type="wavy" number="1" type="stop" color="#005500"/>
|
||||||
|
</notations>
|
||||||
|
</note>
|
||||||
|
</measure>
|
||||||
|
<measure number="3">
|
||||||
|
<note>
|
||||||
|
<pitch>
|
||||||
|
<step>F</step>
|
||||||
|
<octave>5</octave>
|
||||||
|
</pitch>
|
||||||
|
<duration>2</duration>
|
||||||
|
<voice>1</voice>
|
||||||
|
<type>half</type>
|
||||||
|
<stem>down</stem>
|
||||||
|
<notations>
|
||||||
|
<slide line-type="solid" number="1" type="start">gliss.</slide>
|
||||||
|
</notations>
|
||||||
|
</note>
|
||||||
|
<note>
|
||||||
|
<pitch>
|
||||||
|
<step>E</step>
|
||||||
|
<octave>4</octave>
|
||||||
|
</pitch>
|
||||||
|
<duration>2</duration>
|
||||||
|
<voice>1</voice>
|
||||||
|
<type>half</type>
|
||||||
|
<stem>up</stem>
|
||||||
|
<notations>
|
||||||
|
<slide line-type="solid" number="1" type="stop"/>
|
||||||
|
</notations>
|
||||||
|
</note>
|
||||||
|
</measure>
|
||||||
|
<measure number="4">
|
||||||
|
<note>
|
||||||
|
<pitch>
|
||||||
|
<step>C</step>
|
||||||
|
<octave>4</octave>
|
||||||
|
</pitch>
|
||||||
|
<duration>2</duration>
|
||||||
|
<voice>1</voice>
|
||||||
|
<type>half</type>
|
||||||
|
<stem>up</stem>
|
||||||
|
<notations>
|
||||||
|
<slide line-type="solid" number="1" type="start" color="#AA0000"/>
|
||||||
|
</notations>
|
||||||
|
</note>
|
||||||
|
<note>
|
||||||
|
<pitch>
|
||||||
|
<step>D</step>
|
||||||
|
<octave>5</octave>
|
||||||
|
</pitch>
|
||||||
|
<duration>2</duration>
|
||||||
|
<voice>1</voice>
|
||||||
|
<type>half</type>
|
||||||
|
<stem>down</stem>
|
||||||
|
<notations>
|
||||||
|
<slide line-type="solid" number="1" type="stop" color="#AA0000"/>
|
||||||
|
</notations>
|
||||||
|
</note>
|
||||||
|
<barline location="right">
|
||||||
|
<bar-style>light-heavy</bar-style>
|
||||||
|
</barline>
|
||||||
|
</measure>
|
||||||
|
</part>
|
||||||
|
</score-partwise>
|
|
@ -57,6 +57,7 @@ private slots:
|
||||||
void accidentals3() { mxmlIoTest("testAccidentals3"); }
|
void accidentals3() { mxmlIoTest("testAccidentals3"); }
|
||||||
void arpGliss1() { mxmlIoTest("testArpGliss1"); }
|
void arpGliss1() { mxmlIoTest("testArpGliss1"); }
|
||||||
void arpGliss2() { mxmlIoTest("testArpGliss2"); }
|
void arpGliss2() { mxmlIoTest("testArpGliss2"); }
|
||||||
|
void arpGliss3() { mxmlIoTest("testArpGliss3"); }
|
||||||
void barStyles() { mxmlIoTest("testBarStyles"); }
|
void barStyles() { mxmlIoTest("testBarStyles"); }
|
||||||
void chordDiagrams1() { mxmlIoTest("testChordDiagrams1"); }
|
void chordDiagrams1() { mxmlIoTest("testChordDiagrams1"); }
|
||||||
void chordNoVoice() { mxmlIoTestRef("testChordNoVoice"); }
|
void chordNoVoice() { mxmlIoTestRef("testChordNoVoice"); }
|
||||||
|
|
Loading…
Reference in a new issue