Merge pull request #4878 from MarcSabatella/287245-barline-symbols

fix #287245: allow symbols on barlines
This commit is contained in:
anatoly-os 2019-08-30 10:45:44 +02:00 committed by GitHub
commit 60e5389586
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 267 additions and 4 deletions

View file

@ -26,6 +26,8 @@
#include "spanner.h"
#include "undo.h"
#include "fermata.h"
#include "symbol.h"
#include "image.h"
namespace Ms {
@ -292,7 +294,7 @@ BarLine::BarLine(const BarLine& bl)
y2 = bl.y2;
for (Element* e : bl._el)
_el.push_back(e->clone());
add(e->clone());
}
BarLine::~BarLine()
@ -725,6 +727,22 @@ void BarLine::read(XmlReader& e)
a->read(e);
add(a);
}
else if (tag == "Symbol") {
Symbol* s = new Symbol(score());
s->setTrack(track());
s->read(e);
add(s);
}
else if (tag == "Image") {
if (MScore::noImages)
e.skipCurrentElement();
else {
Image* image = new Image(score());
image->setTrack(track());
image->read(e);
add(image);
}
}
else if (!Element::readProperties(e))
e.unknown();
}
@ -741,7 +759,7 @@ bool BarLine::acceptDrop(EditData& data) const
return true;
}
else {
return ((type == ElementType::ARTICULATION || type == ElementType::FERMATA)
return ((type == ElementType::ARTICULATION || type == ElementType::FERMATA || type == ElementType::SYMBOL || type == ElementType::IMAGE)
&& segment()
&& segment()->isEndBarLineType());
}
@ -805,6 +823,12 @@ Element* BarLine::drop(EditData& data)
score()->undoAddElement(atr);
return atr;
}
else if (e->isSymbol() || e->isImage()) {
e->setParent(this);
e->setTrack(track());
score()->undoAddElement(e);
return e;
}
else if (e->isFermata()) {
e->setPlacement(track() & 1 ? Placement::BELOW : Placement::ABOVE);
for (Element* el: segment()->annotations())
@ -1366,6 +1390,28 @@ void BarLine::scanElements(void* data, void (*func)(void*, Element*), bool all)
e->scanElements(data, func, all);
}
//---------------------------------------------------------
// setTrack
//---------------------------------------------------------
void BarLine::setTrack(int t)
{
Element::setTrack(t);
for (Element* e : _el)
e->setTrack(t);
}
//---------------------------------------------------------
// setScore
//---------------------------------------------------------
void BarLine::setScore(Score* s)
{
Element::setScore(s);
for (Element* e : _el)
e->setScore(s);
}
//---------------------------------------------------------
// add
//---------------------------------------------------------
@ -1375,6 +1421,8 @@ void BarLine::add(Element* e)
e->setParent(this);
switch (e->type()) {
case ElementType::ARTICULATION:
case ElementType::SYMBOL:
case ElementType::IMAGE:
_el.push_back(e);
setGenerated(false);
break;
@ -1393,6 +1441,8 @@ void BarLine::remove(Element* e)
{
switch(e->type()) {
case ElementType::ARTICULATION:
case ElementType::SYMBOL:
case ElementType::IMAGE:
if (!_el.remove(e))
qDebug("BarLine::remove(): cannot find %s", e->name());
break;

View file

@ -86,6 +86,8 @@ class BarLine final : public Element {
virtual void layout() override;
void layout2();
virtual void scanElements(void* data, void (*func)(void*, Element*), bool all=true) override;
virtual void setTrack(int t) override;
virtual void setScore(Score* s) override;
virtual void add(Element*) override;
virtual void remove(Element*) override;
virtual bool acceptDrop(EditData&) const override;

View file

@ -40,7 +40,7 @@ else
emmentaler-text-2 gonville-text-2 bravura-text-2 musejazz-text-2\
emmentaler-text-3 gonville-text-3 bravura-text-3 musejazz-text-3\
frametext ottava \
barline-1 instrument-1 \
barline-1 instrument-1 symbol-1 \
slurs-1 slurs-2 slurs-3 slurs-4 slurs-5 slurs-6 slurs-7 slurs-8 slurs-9 slurs-10 \
hairpins-1 pedal-1 line-1 line-2 line-3 line-4 line-5 line-6 gliss-1 gliss-2\
chord-layout-1 chord-layout-2 chord-layout-3 chord-layout-4 chord-layout-5\

View file

@ -20,7 +20,7 @@ set SRC=mmrest-1,bravura-mmrest,gonville-mmrest,mmrest-2,mmrest-4,mmrest-5,mmres
emmentaler-text-2,gonville-text-2,bravura-text-2,musejazz-text-2, ^
emmentaler-text-3,gonville-text-3,bravura-text-3,musejazz-text-3, ^
frametext,ottava, ^
barline-1,instrument-1, ^
barline-1,instrument-1,symbol-1, ^
slurs-1,slurs-2,slurs-3,slurs-4,hairpins-1,pedal-1,line-1,line-2,line-3,line-4,line-5,line-6,gliss-1,gliss-2, ^
chord-layout-1,chord-layout-2,chord-layout-3,chord-layout-4,chord-layout-5, ^
chord-layout-6,chord-layout-7,chord-layout-8,chord-layout-9,chord-layout-10, ^

211
vtest/symbol-1.mscx Normal file
View file

@ -0,0 +1,211 @@
<?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>3.93701</pageWidth>
<pageHeight>1.96851</pageHeight>
<pagePrintableWidth>3.77953</pagePrintableWidth>
<pageEvenLeftMargin>0.0787403</pageEvenLeftMargin>
<pageOddLeftMargin>0.0787403</pageOddLeftMargin>
<pageEvenTopMargin>0</pageEvenTopMargin>
<pageEvenBottomMargin>0</pageEvenBottomMargin>
<pageOddTopMargin>0</pageOddTopMargin>
<pageOddBottomMargin>0</pageOddBottomMargin>
<pageTwosided>0</pageTwosided>
<lyricsDashForce>0</lyricsDashForce>
<doubleBarDistance>0.46</doubleBarDistance>
<endBarDistance>0.65</endBarDistance>
<clefLeftMargin>0.64</clefLeftMargin>
<clefKeyRightMargin>1.75</clefKeyRightMargin>
<barNoteDistance>1.2</barNoteDistance>
<harmonyFretDist>0.5</harmonyFretDist>
<showMeasureNumber>0</showMeasureNumber>
<showFooter>0</showFooter>
<defaultFramePadding>0.5</defaultFramePadding>
<defaultFrameWidth>0.2</defaultFrameWidth>
<defaultFrameRound>25</defaultFrameRound>
<titleFramePadding>0.5</titleFramePadding>
<titleFrameWidth>0.2</titleFrameWidth>
<titleFrameRound>25</titleFrameRound>
<subTitleFramePadding>0.5</subTitleFramePadding>
<subTitleFrameWidth>0.2</subTitleFrameWidth>
<subTitleFrameRound>25</subTitleFrameRound>
<composerFramePadding>0.5</composerFramePadding>
<composerFrameWidth>0.2</composerFrameWidth>
<composerFrameRound>25</composerFrameRound>
<lyricistFramePadding>0.5</lyricistFramePadding>
<lyricistFrameWidth>0.2</lyricistFrameWidth>
<lyricistFrameRound>25</lyricistFrameRound>
<fingeringFramePadding>0.5</fingeringFramePadding>
<fingeringFrameWidth>0.2</fingeringFrameWidth>
<fingeringFrameRound>25</fingeringFrameRound>
<lhGuitarFingeringFramePadding>0.5</lhGuitarFingeringFramePadding>
<lhGuitarFingeringFrameWidth>0.2</lhGuitarFingeringFrameWidth>
<lhGuitarFingeringFrameRound>25</lhGuitarFingeringFrameRound>
<rhGuitarFingeringFramePadding>0.5</rhGuitarFingeringFramePadding>
<rhGuitarFingeringFrameWidth>0.2</rhGuitarFingeringFrameWidth>
<rhGuitarFingeringFrameRound>25</rhGuitarFingeringFrameRound>
<partInstrumentFramePadding>0.5</partInstrumentFramePadding>
<partInstrumentFrameWidth>0.2</partInstrumentFrameWidth>
<partInstrumentFrameRound>25</partInstrumentFrameRound>
<tempoFramePadding>0.5</tempoFramePadding>
<tempoFrameWidth>0.2</tempoFrameWidth>
<tempoFrameRound>25</tempoFrameRound>
<systemFramePadding>0.5</systemFramePadding>
<systemFrameWidth>0.2</systemFrameWidth>
<systemFrameRound>25</systemFrameRound>
<staffAlign>left,top</staffAlign>
<staffPosAbove x="0" y="-4"/>
<staffFramePadding>0.5</staffFramePadding>
<staffFrameWidth>0.2</staffFrameWidth>
<staffFrameRound>25</staffFrameRound>
<repeatLeftFramePadding>0.5</repeatLeftFramePadding>
<repeatLeftFrameWidth>0.2</repeatLeftFrameWidth>
<repeatLeftFrameRound>25</repeatLeftFrameRound>
<repeatRightFramePadding>0.5</repeatRightFramePadding>
<repeatRightFrameWidth>0.2</repeatRightFrameWidth>
<repeatRightFrameRound>25</repeatRightFrameRound>
<Spatium>1.764</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>Standard</name>
</StaffType>
</Staff>
<Staff id="2">
<StaffType group="pitched">
<name>Standard</name>
</StaffType>
<defaultClef>F</defaultClef>
</Staff>
<trackName>Piano</trackName>
<Instrument>
<shortName>Pno.</shortName>
<trackName>Piano</trackName>
<minPitchP>21</minPitchP>
<maxPitchP>108</maxPitchP>
<minPitchA>21</minPitchA>
<maxPitchA>108</maxPitchA>
<Articulation>
<velocity>100</velocity>
<gateTime>70</gateTime>
</Articulation>
<Articulation name="staccato">
<velocity>100</velocity>
<gateTime>40</gateTime>
</Articulation>
<Articulation name="tenuto">
<velocity>100</velocity>
<gateTime>100</gateTime>
</Articulation>
<Articulation name="sforzato">
<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>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
<Symbol>
<name>miscEyeglasses</name>
<font>Bravura</font>
</Symbol>
</Rest>
<BarLine>
<Symbol>
<name>repeat2Bars</name>
<font>Bravura</font>
<offset x="-1.5" y="2"/>
</Symbol>
</BarLine>
</voice>
</Measure>
<Measure>
<voice>
<Rest>
<durationType>measure</durationType>
<duration>4/4</duration>
</Rest>
<BarLine>
<subtype>end</subtype>
</BarLine>
</voice>
</Measure>
</Staff>
<Staff id="2">
<Measure>
<voice>
<TimeSig>
<sigN>4</sigN>
<sigD>4</sigD>
</TimeSig>
<Chord>
<durationType>whole</durationType>
<Note>
<Symbol>
<name>miscEyeglasses</name>
<font>Bravura</font>
</Symbol>
<pitch>48</pitch>
<tpc>14</tpc>
</Note>
</Chord>
</voice>
</Measure>
<Measure>
<voice>
<Chord>
<durationType>quarter</durationType>
<Note>
<pitch>48</pitch>
<tpc>14</tpc>
</Note>
</Chord>
<Rest>
<durationType>quarter</durationType>
<Symbol>
<name>miscEyeglasses</name>
<font>Bravura</font>
</Symbol>
</Rest>
<Rest>
<durationType>half</durationType>
</Rest>
<BarLine>
<subtype>end</subtype>
</BarLine>
</voice>
</Measure>
</Staff>
</Score>
</museScore>

BIN
vtest/symbol-1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB