Skip to content

Commit aefe389

Browse files
authored
Merge pull request #6425 from elerouxx/migrate-invisible-staff-lines-stype-3.x
Fix #308771: migrate invisible staff lines and line color to staffType
2 parents 1989849 + 119c450 commit aefe389

18 files changed

+377
-236
lines changed

libmscore/chord.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,7 @@ void Chord::addLedgerLines()
709709
lineBelow = (st->lines(tick) - 1) * 2;
710710
lineDistance = st->lineDistance(tick);
711711
mag = staff()->mag(tick);
712-
staffVisible = !staff()->invisible();
712+
staffVisible = !staff()->invisible(tick);
713713
}
714714

715715
// need ledger lines?

libmscore/ledgerline.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ void LedgerLine::layout()
6464
{
6565
setLineWidth(score()->styleP(Sid::ledgerLineWidth) * chord()->mag());
6666
if (staff())
67-
setColor(staff()->color());
67+
setColor(staff()->staffType(tick())->color());
6868
qreal w2 = _width * .5;
6969
if (vertical)
7070
bbox().setRect(-w2, 0, w2, _len);

libmscore/measure.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ Measure::Measure(Score* s)
208208
ms->setLines(new StaffLines(score()));
209209
ms->lines()->setTrack(staffIdx * VOICES);
210210
ms->lines()->setParent(this);
211-
ms->lines()->setVisible(!staff->invisible());
211+
ms->lines()->setVisible(!staff->invisible(tick()));
212212
_mstaves.push_back(ms);
213213
}
214214
setIrregular(false);
@@ -266,7 +266,7 @@ void Measure::createStaves(int staffIdx)
266266
s->setLines(new StaffLines(score()));
267267
s->lines()->setParent(this);
268268
s->lines()->setTrack(n * VOICES);
269-
s->lines()->setVisible(!staff->invisible());
269+
s->lines()->setVisible(!staff->invisible(tick()));
270270
_mstaves.push_back(s);
271271
}
272272
}
@@ -1146,7 +1146,7 @@ void Measure::cmdAddStaves(int sStaff, int eStaff, bool createRest)
11461146
ms->setLines(new StaffLines(score()));
11471147
ms->lines()->setTrack(i * VOICES);
11481148
ms->lines()->setParent(this);
1149-
ms->lines()->setVisible(!staff->invisible());
1149+
ms->lines()->setVisible(!staff->invisible(tick()));
11501150
score()->undo(new InsertMStaff(this, ms, i));
11511151
}
11521152

@@ -1262,7 +1262,7 @@ void Measure::insertStaff(Staff* staff, int staffIdx)
12621262
ms->setLines(new StaffLines(score()));
12631263
ms->lines()->setParent(this);
12641264
ms->lines()->setTrack(staffIdx * VOICES);
1265-
ms->lines()->setVisible(!staff->invisible());
1265+
ms->lines()->setVisible(!staff->invisible(tick()));
12661266
insertMStaff(ms, staffIdx);
12671267
}
12681268

@@ -1924,7 +1924,7 @@ void Measure::read(XmlReader& e, int staffIdx)
19241924
s->setLines(new StaffLines(score()));
19251925
s->lines()->setParent(this);
19261926
s->lines()->setTrack(n * VOICES);
1927-
s->lines()->setVisible(!staff->invisible());
1927+
s->lines()->setVisible(!staff->invisible(tick()));
19281928
_mstaves.push_back(s);
19291929
}
19301930

libmscore/property.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,8 @@ static constexpr PropertyMetaData propertyList[] = {
259259
{ Pid::STAFF_SHOW_BARLINES, false, "", P_TYPE::BOOL, DUMMY_QT_TRANSLATE_NOOP("propertyName", "showing barlines") },
260260
{ Pid::STAFF_SHOW_LEDGERLINES, false, "", P_TYPE::BOOL, DUMMY_QT_TRANSLATE_NOOP("propertyName", "showing ledgerlines") },
261261
{ Pid::STAFF_STEMLESS, false, "", P_TYPE::BOOL, DUMMY_QT_TRANSLATE_NOOP("propertyName", "stemless") },
262+
{ Pid::STAFF_INVISIBLE, false, "", P_TYPE::BOOL, DUMMY_QT_TRANSLATE_NOOP("propertyName", "invisible") },
263+
{ Pid::STAFF_COLOR, false, "color", P_TYPE::COLOR, DUMMY_QT_TRANSLATE_NOOP("propertyName", "color") },
262264

263265
{ Pid::HEAD_SCHEME, false, "headScheme", P_TYPE::HEAD_SCHEME, DUMMY_QT_TRANSLATE_NOOP("propertyName", "notehead scheme") },
264266
{ Pid::STAFF_GEN_CLEF, false, "", P_TYPE::BOOL, DUMMY_QT_TRANSLATE_NOOP("propertyName", "generating clefs") },
@@ -274,7 +276,6 @@ static constexpr PropertyMetaData propertyList[] = {
274276
{ Pid::BRACKET_COLUMN, false, "level", P_TYPE::INT, DUMMY_QT_TRANSLATE_NOOP("propertyName", "level") },
275277
{ Pid::INAME_LAYOUT_POSITION, false, "layoutPosition", P_TYPE::INT, DUMMY_QT_TRANSLATE_NOOP("propertyName", "layout position") },
276278
{ Pid::SUB_STYLE, false, "style", P_TYPE::SUB_STYLE, DUMMY_QT_TRANSLATE_NOOP("propertyName", "style") },
277-
278279
{ Pid::FONT_FACE, false, "family", P_TYPE::FONT, DUMMY_QT_TRANSLATE_NOOP("propertyName", "family") },
279280
{ Pid::FONT_SIZE, false, "size", P_TYPE::REAL, DUMMY_QT_TRANSLATE_NOOP("propertyName", "size") },
280281
//200

libmscore/property.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,8 @@ enum class Pid {
265265
STAFF_SHOW_BARLINES,
266266
STAFF_SHOW_LEDGERLINES,
267267
STAFF_STEMLESS,
268+
STAFF_INVISIBLE,
269+
STAFF_COLOR,
268270

269271
HEAD_SCHEME,
270272
STAFF_GEN_CLEF,

libmscore/read114.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2385,7 +2385,7 @@ static void readStaff(Staff* staff, XmlReader& e)
23852385
else if (tag == "small")
23862386
staff->staffType(Fraction(0,1))->setSmall(e.readInt());
23872387
else if (tag == "invisible")
2388-
staff->setInvisible(e.readInt());
2388+
staff->setInvisible(Fraction(0,1),e.readInt());
23892389
else if (tag == "slashStyle")
23902390
e.skipCurrentElement();
23912391
else if (tag == "cleflist") {

libmscore/staff.cpp

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -655,8 +655,8 @@ void Staff::write(XmlWriter& xml) const
655655
xml.tag("defaultTransposingClef", ClefInfo::tag(ct._transposingClef));
656656
}
657657

658-
if (invisible())
659-
xml.tag("invisible", invisible());
658+
if (invisible(Fraction(0,1)))
659+
xml.tag("invisible", invisible(Fraction(0,1)));
660660
if (hideWhenEmpty() != HideMode::AUTO)
661661
xml.tag("hideWhenEmpty", int(hideWhenEmpty()));
662662
if (cutaway())
@@ -680,7 +680,7 @@ void Staff::write(XmlWriter& xml) const
680680
writeProperty(xml, Pid::STAFF_BARLINE_SPAN_FROM);
681681
writeProperty(xml, Pid::STAFF_BARLINE_SPAN_TO);
682682
writeProperty(xml, Pid::STAFF_USERDIST);
683-
writeProperty(xml, Pid::COLOR);
683+
writeProperty(xml, Pid::STAFF_COLOR);
684684
writeProperty(xml, Pid::PLAYBACK_VOICE1);
685685
writeProperty(xml, Pid::PLAYBACK_VOICE2);
686686
writeProperty(xml, Pid::PLAYBACK_VOICE3);
@@ -728,7 +728,7 @@ bool Staff::readProperties(XmlReader& e)
728728
else if (tag == "small") // obsolete
729729
staffType(Fraction(0,1))->setSmall(e.readInt());
730730
else if (tag == "invisible")
731-
setInvisible(e.readInt());
731+
staffType(Fraction(0,1))->setInvisible(e.readInt()); // same as: setInvisible(Fraction(0,1)), e.readInt())
732732
else if (tag == "hideWhenEmpty")
733733
setHideWhenEmpty(HideMode(e.readInt()));
734734
else if (tag == "cutaway")
@@ -780,7 +780,7 @@ bool Staff::readProperties(XmlReader& e)
780780
}
781781
}
782782
else if (tag == "color")
783-
_color = e.readColor();
783+
staffType(Fraction(0,1))->setColor(e.readColor());
784784
else if (tag == "transposeDiatonic")
785785
e.setTransposeDiatonic(e.readInt());
786786
else if (tag == "transposeChromatic")
@@ -1182,6 +1182,24 @@ bool Staff::showLedgerLines(const Fraction& tick) const
11821182
return staffType(tick)->showLedgerLines();
11831183
}
11841184

1185+
//---------------------------------------------------------
1186+
// color
1187+
//---------------------------------------------------------
1188+
1189+
QColor Staff::color(const Fraction& tick) const
1190+
{
1191+
return staffType(tick)->color();
1192+
}
1193+
1194+
//---------------------------------------------------------
1195+
// setColor
1196+
//---------------------------------------------------------
1197+
1198+
void Staff::setColor(const Fraction& tick, const QColor& val)
1199+
{
1200+
staffType(tick)->setColor(val);
1201+
}
1202+
11851203
//---------------------------------------------------------
11861204
// updateOttava
11871205
//---------------------------------------------------------
@@ -1318,8 +1336,10 @@ QVariant Staff::getProperty(Pid id) const
13181336
return staffType(Fraction(0,1))->small();
13191337
case Pid::MAG:
13201338
return staffType(Fraction(0,1))->userMag();
1321-
case Pid::COLOR:
1322-
return color();
1339+
case Pid::STAFF_INVISIBLE:
1340+
return staffType(Fraction(0,1))->invisible();
1341+
case Pid::STAFF_COLOR:
1342+
return staffType(Fraction(0,1))->color();
13231343
case Pid::PLAYBACK_VOICE1:
13241344
return playbackVoice(0);
13251345
case Pid::PLAYBACK_VOICE2:
@@ -1363,8 +1383,8 @@ bool Staff::setProperty(Pid id, const QVariant& v)
13631383
localSpatiumChanged(_spatium, spatium(Fraction(0,1)), Fraction(0, 1));
13641384
}
13651385
break;
1366-
case Pid::COLOR:
1367-
setColor(v.value<QColor>());
1386+
case Pid::STAFF_COLOR:
1387+
setColor(Fraction(0,1),v.value<QColor>());
13681388
break;
13691389
case Pid::PLAYBACK_VOICE1:
13701390
setPlaybackVoice(0, v.toBool());
@@ -1427,7 +1447,7 @@ QVariant Staff::propertyDefault(Pid id) const
14271447
return false;
14281448
case Pid::MAG:
14291449
return 1.0;
1430-
case Pid::COLOR:
1450+
case Pid::STAFF_COLOR:
14311451
return QColor(Qt::black);
14321452
case Pid::PLAYBACK_VOICE1:
14331453
case Pid::PLAYBACK_VOICE2:
@@ -1536,5 +1556,23 @@ qreal Staff::lineDistance(const Fraction& tick) const
15361556
return staffType(tick)->lineDistance().val();
15371557
}
15381558

1559+
//---------------------------------------------------------
1560+
// invisible
1561+
//---------------------------------------------------------
1562+
1563+
bool Staff::invisible(const Fraction& tick) const
1564+
{
1565+
return staffType(tick)->invisible();
1566+
}
1567+
1568+
//---------------------------------------------------------
1569+
// setInvisible
1570+
//---------------------------------------------------------
1571+
1572+
void Staff::setInvisible(const Fraction& tick, bool val)
1573+
{
1574+
staffType(tick)->setInvisible(val);
1575+
}
1576+
15391577
}
15401578

libmscore/staff.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -168,8 +168,6 @@ class Staff final : public ScoreElement {
168168

169169
bool show() const;
170170
bool stemless(const Fraction&) const;
171-
bool invisible() const { return _invisible; }
172-
void setInvisible(bool val) { _invisible = val; }
173171
bool cutaway() const { return _cutaway; }
174172
void setCutaway(bool val) { _cutaway = val; }
175173
bool showIfEmpty() const { return _showIfEmpty; }
@@ -223,6 +221,9 @@ class Staff final : public ScoreElement {
223221
void setLines(const Fraction&, int lines);
224222
qreal lineDistance(const Fraction&) const;
225223

224+
bool invisible(const Fraction&) const;
225+
void setInvisible(const Fraction&, bool val);
226+
226227
void setSlashStyle(const Fraction&, bool val);
227228
int middleLine(const Fraction&) const;
228229
int bottomLine(const Fraction&) const;
@@ -251,8 +252,8 @@ class Staff final : public ScoreElement {
251252
bool genKeySig();
252253
bool showLedgerLines(const Fraction&) const;
253254

254-
QColor color() const { return _color; }
255-
void setColor(const QColor& val) { _color = val; }
255+
QColor color(const Fraction&) const;
256+
void setColor(const Fraction&, const QColor& val);
256257
void undoSetColor(const QColor& val);
257258
void insertTime(const Fraction&, const Fraction& len);
258259

libmscore/stafflines.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,8 @@ void StaffLines::layoutForWidth(qreal w)
9393
int _lines;
9494
if (s) {
9595
setMag(s->mag(measure()->tick()));
96-
setColor(s->color());
96+
setVisible(!s->invisible(measure()->tick()));
97+
setColor(s->color(measure()->tick()));
9798
const StaffType* st = s->staffType(measure()->tick());
9899
dist *= st->lineDistance().val();
99100
_lines = st->lines();

0 commit comments

Comments
 (0)