MUSX Document Model
Loading...
Searching...
No Matches
Others.h
1/*
2 * Copyright (C) 2025, Robert Patterson
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 * THE SOFTWARE.
21 */
22#pragma once
23
24#include <string>
25#include <unordered_map>
26#include <vector>
27#include <memory>
28#include <stdexcept>
29#include <map>
30#include <tuple>
31
32#include "musx/util/EnigmaString.h"
33#include "musx/util/Logger.h"
34#include "musx/util/Fraction.h"
35#include "musx/util/PseudoTieUtils.h"
36#include "musx/dom/PercussionNoteType.h"
37
38#include "BaseClasses.h"
39#include "CommonClasses.h"
40#include "Options.h"
41 // do not add other dom class dependencies. Use Implementations.cpp for implementations that need total class access.
42
43namespace musx {
44namespace utils {
45enum class PseudoTieMode;
46} // namespace utils
47
48namespace dom {
49
50class Entry;
51class NoteInfoPtr;
52
53enum class KnownShapeDefType;
54
55namespace details {
56class FretboardDiagram;
57class GFrameHold;
58class IndependentStaffDetails;
59class StaffGroup;
60}
61
66namespace others {
67
68class ShapeDef;
69class Staff;
70class StaffComposite;
71class StaffList;
72class StaffListCategoryScore;
73class StaffListCategoryParts;
74class StaffListRepeatScore;
75class StaffListRepeatParts;
76class StaffListRepeatScoreForced;
77class StaffListRepeatPartsForced;
78
79template<class ScoreList, class PartsList, class ScoreForcedList, class PartsForcedList>
80class StaffListSet;
81
84
87
105class AcciAmountFlats : public OthersArray<int, 7>
106{
107 std::string_view xmlTag() const override { return XmlNodeName; }
108
109public:
111
112 constexpr static std::string_view XmlNodeName = "acciAmountFlats";
114};
115
138class AcciAmountSharps : public OthersArray<int, 7>
139{
140 std::string_view xmlTag() const override { return XmlNodeName; }
141
142public:
144
145 constexpr static std::string_view XmlNodeName = "acciAmountSharps";
147};
148
164class AcciOrderFlats : public OthersArray<unsigned, 7>
165{
166 std::string_view xmlTag() const override { return XmlNodeName; }
167
168public:
170
171 constexpr static std::string_view XmlNodeName = "acciOrderFlats";
173};
174
195class AcciOrderSharps : public OthersArray<unsigned, 7>
196{
197 std::string_view xmlTag() const override { return XmlNodeName; }
198
199public:
201
202 constexpr static std::string_view XmlNodeName = "acciOrderSharps";
204};
205
216{
217public:
224 {
227 StemSide,
229 AboveEntry,
230 BelowEntry,
231 };
232
237 enum class CopyMode
238 {
239 None,
240 Vertical,
242 };
243
249 {
250 Ignore,
251 InsideSlur,
252 AvoidSlur
253 };
254
257 {
259 bool isShape{};
263 char32_t character{};
264 std::shared_ptr<FontInfo> font;
265 };
266
272 explicit ArticulationDef(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
273 : OthersBase(document, partId, shareMode, cmper), fontMain(new FontInfo(document)), fontAlt(new FontInfo(document)) {}
274
275 char32_t charMain{};
276 std::shared_ptr<FontInfo> fontMain;
278 bool useTopNote{};
279 bool autoHorz{};
280 bool autoVert{};
285 bool insideSlur{};
286 bool noPrint{};
287 bool autoStack{};
290 char32_t charAlt{};
291 std::shared_ptr<FontInfo> fontAlt;
298 bool playArtic{};
301 bool mainIsShape{};
302 bool altIsShape{};
318
322 [[nodiscard]] SelectedSymbol calcSelectedSymbol(bool placeAbove) const;
323
324 constexpr static std::string_view XmlNodeName = "articDef";
326};
327
370{
371public:
373 explicit BeatChartElement(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
374 : OthersBase(document, partId, shareMode, cmper, inci)
375 {
376 }
377
393
394 // Populated only when the XML node includes a <control> element
395 std::shared_ptr<Control> control;
396
397 // Populated for standard beat entries (inci > 0)
402
403 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
404 {
406 if (control && getInci() != 0) {
407 MUSX_INTEGRITY_ERROR("Beat chart for measure " + std::to_string(getCmper()) + " has a control instance in inci " + std::to_string(*getInci()));
408 }
409 if (getInci() == 0 && !control) {
410 control = std::make_shared<Control>();
411 MUSX_INTEGRITY_ERROR("Beat chart for measure " + std::to_string(getCmper()) + " is missing its control instance.");
412 }
413 }
414
415 constexpr static std::string_view XmlNodeName = "beatChart";
417};
418
432{
433public:
438 enum class Prefix
439 {
440 None,
441 Minus,
442 Plus,
443 Sharp,
444 Flat
445 };
446
448 explicit ChordSuffixElement(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
449 : OthersBase(document, partId, shareMode, cmper, inci), font(new FontInfo(document))
450 {
451 }
452
453 std::shared_ptr<FontInfo> font;
454 char32_t symbol{};
457 bool isNumber{};
459
460 constexpr static std::string_view XmlNodeName = "chordSuffix";
462};
463
476class ChordSuffixPlayback : public OthersArray<int16_t>
477{
478 std::string_view xmlTag() const override { return XmlNodeName; }
479
480public:
482
483 constexpr static std::string_view XmlNodeName = "chordSuffixPlay";
485};
486
496class ClefList : public OthersBase
497{
498public:
500 explicit ClefList(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
501 : OthersBase(document, partId, shareMode, cmper, inci)
502 {
503 }
504
505 // Public properties corresponding to the XML structure, in the same order as in the XML.
511 int percent{};
514 bool unlockVert{};
516
517 constexpr static std::string_view XmlNodeName = "clefEnum";
519};
520
527class DrumStaff : public OthersBase
528{
529public:
531 explicit DrumStaff(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
532 : OthersBase(document, partId, shareMode, cmper) {}
533
536
537 constexpr static std::string_view XmlNodeName = "drumStaff";
539};
540
548{
549public:
551
552 constexpr static std::string_view XmlNodeName = "drumStaffStyle";
553};
554
564{
565public:
566 static constexpr uint32_t SYMBOL_CHARSET_MAC = 0xfff;
567 static constexpr uint32_t SYMBOL_CHARSET_WIN = 2;
569 explicit FontDefinition(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
570 : OthersBase(document, partId, shareMode, cmper) {}
571
575 {
576 MacOS,
577 Windows
578 };
579
580 // Public properties corresponding to the XML structure
587 int pitch{};
588 int family{};
589 std::string name;
590
604 bool calcIsSymbolFont() const
605 {
606 if (charsetBank == CharacterSetBank::MacOS && charsetVal == SYMBOL_CHARSET_MAC) {
607 return true;
608 }
610 return true;
611 }
612 return false;
613 }
614
615 constexpr static std::string_view XmlNodeName = "fontName";
617};
618
632class Frame : public OthersBase
633{
634public:
636 explicit Frame(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci = 0)
637 : OthersBase(document, partId, shareMode, cmper, inci) {}
638
642
646 bool iterateRawEntries(std::function<bool(const MusxInstance<Entry>& entry)> iterator) const;
647
653
654 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
655 {
656 this->OthersBase::integrityCheck(ptrToThis);
657 if (startTime && (startEntry || endEntry)) {
658 MUSX_INTEGRITY_ERROR("Frame " + std::to_string(getCmper()) + " has non-zero startTime and non-zero startEntry or endEntry.");
659 }
660 if (!startTime && !startEntry) {
661 MUSX_INTEGRITY_ERROR("Frame " + std::to_string(getCmper()) + " has no start entry.");
662 }
663 if (!startTime && !endEntry) {
664 MUSX_INTEGRITY_ERROR("Frame " + std::to_string(getCmper()) + " has no end entry.");
665 }
666 }
667
668 constexpr static std::string_view XmlNodeName = "frameSpec";
670};
671
672class FretInstrument;
686{
687public:
689 explicit FretboardGroup(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
690 : OthersBase(document, partId, shareMode, cmper, inci)
691 {
692 }
693
695 std::string name;
696
699
702
703 constexpr static std::string_view XmlNodeName = "fretGroup";
705};
706
716{
717public:
719 explicit FretboardStyle(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
720 : OthersBase(document, partId, shareMode, cmper)
721 {
722 }
723
725 bool rotate{};
743 std::shared_ptr<FontInfo> fretNumFont;
744 std::shared_ptr<FontInfo> fingNumFont;
747 std::string name;
748 std::string fretNumText;
749
750 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
751 {
752 this->OthersBase::integrityCheck(ptrToThis);
753 if (!fretNumFont) {
754 fretNumFont = std::make_shared<FontInfo>(getDocument());
755 }
756 if (!fingNumFont) {
757 fingNumFont = std::make_shared<FontInfo>(getDocument());
758 }
759 }
760
761 constexpr static std::string_view XmlNodeName = "fretStyle";
763};
764
774{
775public:
777 explicit FretInstrument(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
778 : OthersBase(document, partId, shareMode, cmper)
779 {
780 }
781
787 {
788 public:
789 int pitch{};
790 int nutOffset{};
792
794 };
795
796 int numFrets{};
798 std::string name;
799 std::vector<std::shared_ptr<StringInfo>> strings;
800 std::vector<int> fretSteps;
805
806 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
807 {
808 this->OthersBase::integrityCheck(ptrToThis);
809 if (numStrings != int(strings.size())) {
810 MUSX_INTEGRITY_ERROR("Fret instrument " + std::to_string(getCmper()) + " specifies " + std::to_string(numStrings)
811 + " strings but has " + std::to_string(strings.size()) + " StringInfo instances.");
812 }
813 if (!fretSteps.empty() && numFrets != int(fretSteps.size())) {
814 util::Logger::log(util::Logger::LogLevel::Info, "Fret instrument " + std::to_string(getCmper()) + " specifies " + std::to_string(numFrets)
815 + " frets but has " + std::to_string(fretSteps.size()) + " diatonic fret steps specified.");
816 }
817 }
818
819 constexpr static std::string_view XmlNodeName = "fretInst";
821};
822
829class KeyFormat : public OthersBase {
830public:
832 explicit KeyFormat(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
833 : OthersBase(document, partId, shareMode, cmper) {}
834
835 unsigned semitones{};
836 unsigned scaleTones{};
837
838 constexpr static std::string_view XmlNodeName = "keyFormat";
840};
841
848class KeyMapArray : public OthersBase {
849public:
851 explicit KeyMapArray(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
852 : OthersBase(document, partId, shareMode, cmper) {}
853
858 public:
859 bool diatonic{};
860 unsigned hlevel{};
861
863 };
864
865 std::vector<std::shared_ptr<StepElement>> steps;
866
868 unsigned countDiatonicSteps() const
869 {
870 return static_cast<unsigned>(std::count_if(steps.begin(), steps.end(), [](const auto& step) {
871 return step->diatonic;
872 }));
873 }
874
875 constexpr static std::string_view XmlNodeName = "keyMap";
877};
878
886class KeyAttributes : public OthersBase {
887public:
889 explicit KeyAttributes(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
890 : OthersBase(document, partId, shareMode, cmper) {}
891
892 // Public properties corresponding to the XML structure
893 int harmRefer{};
899 int gotoKey{};
903 bool hasClefOctv{};
904
905 constexpr static std::string_view XmlNodeName = "keysAttrib";
907};
908
919public:
921 explicit LayerAttributes(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
922 : OthersBase(document, partId, shareMode, cmper) {}
923
924 // Public properties corresponding to the XML structure
930 bool freezeLayer{};
931 bool playback{};
935 bool hideLayer{};
936
937 constexpr static std::string_view XmlNodeName = "layerAtts";
939};
940
955
980
1002
1008{
1009 AboveStaff,
1010 Manual,
1011 RefLine,
1012 BelowStaff,
1013 TopNote,
1014 BottomNote,
1015 AboveEntry,
1016 BelowEntry,
1019};
1020
1021class ShapeExpressionDef;
1022class TextExpressionDef;
1023
1031public:
1036 enum class CategoryType : Cmper
1037 {
1038 Invalid,
1039 Dynamics,
1040 TempoMarks,
1045 Misc
1046 };
1047
1049 explicit MarkingCategory(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1050 : OthersBase(document, partId, shareMode, cmper) {}
1051
1053
1054 // Font information for the marking category
1055 std::shared_ptr<FontInfo> textFont;
1056 std::shared_ptr<FontInfo> musicFont;
1057 std::shared_ptr<FontInfo> numberFont;
1058
1062
1063 // Vertical and horizontal offsets for positioning adjustments
1067
1068 // Usage flags representing certain behaviors and visual elements
1077
1078 // Staff list represented as an integer
1080
1085 std::map<Cmper, MusxInstanceWeak<ShapeExpressionDef>> shapeExpressions;
1086
1091 std::map<Cmper, MusxInstanceWeak<TextExpressionDef>> textExpressions;
1092
1094 std::string getName() const;
1095
1099
1100 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1101 {
1102 this->OthersBase::integrityCheck(ptrToThis);
1103 if (!textFont) {
1104 textFont = std::make_shared<FontInfo>(ptrToThis->getDocument());
1105 MUSX_INTEGRITY_ERROR("Marking category " + std::to_string(getCmper()) + " is missing text font.");
1106 }
1107 if (!musicFont) {
1108 musicFont = std::make_shared<FontInfo>(ptrToThis->getDocument());
1109 MUSX_INTEGRITY_ERROR("Marking category " + std::to_string(getCmper()) + " is missing music font.");
1110 }
1111 if (!numberFont) {
1112 numberFont = std::make_shared<FontInfo>(ptrToThis->getDocument());
1113 util::Logger::log(util::Logger::LogLevel::Info, "Marking category " + std::to_string(getCmper()) + " is missing number font.");
1114 }
1115 }
1116
1117 constexpr static std::string_view XmlNodeName = "markingsCategory";
1119};
1120
1130public:
1132
1133 constexpr static std::string_view XmlNodeName = "markingsCategoryName";
1134};
1135
1144[[nodiscard]]
1145std::optional<Cmper> importMarkingCategoryInto(const DocumentPtr& target,
1146 const DocumentPtr& source, Cmper cmper, const ImportObjectCallback& onImported = {});
1147
1148class MeasureNumberRegion;
1155class Measure : public OthersBase {
1156public:
1158 explicit Measure(const DocumentWeakPtr& document, Cmper measureId, ShareMode shareMode, Cmper cmper)
1159 : OthersBase(document, measureId, shareMode, cmper) {}
1160
1171
1174 enum class BarlineType
1175 {
1176 None,
1178 Normal,
1179 Double,
1180 Final,
1181 Solid,
1182 Dashed,
1183 Tick,
1184 Custom
1185 };
1186
1190 {
1191 IfNeeded,
1192 Always,
1193 Never
1194 };
1195
1199 {
1200 IfNeeded,
1201 Always,
1202 Never
1203 };
1204
1206 std::shared_ptr<KeySignature> globalKeySig;
1231 bool noMeasNum{};
1232 bool hasOssia{};
1237 bool hasEnding{};
1239 bool abbrvTime{};
1242 bool hasChord{};
1246 bool pageBreak{};
1247
1250 { return getCmper() == 1 || showFullNames; }
1251
1256
1263 std::optional<int> calcDisplayNumber() const;
1264
1268 std::optional<std::string> calcDisplayNumberText() const;
1269
1273 MusxInstance<KeySignature> createKeySignature(const std::optional<StaffCmper>& forStaff = std::nullopt) const;
1274
1277 MusxInstance<TimeSignature> createTimeSignature(const std::optional<StaffCmper>& forStaff = std::nullopt) const;
1278
1282 MusxInstance<TimeSignature> createDisplayTimeSignature(const std::optional<StaffCmper>& forStaff = std::nullopt) const;
1283
1290
1297 std::optional<Duration> calcDefaultPickupRestValue() const;
1298
1304
1309 util::Fraction calcDuration(const std::optional<StaffCmper>& forStaff = std::nullopt) const;
1310
1314 {
1315 return calcDuration() / calcDuration(forStaff);
1316 }
1317
1319 static void checkMeasureCmperSequence(const DocumentPtr& document);
1320
1321 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1322 {
1323 this->OthersBase::integrityCheck(ptrToThis);
1324 if (!globalKeySig) {
1325 globalKeySig = std::make_shared<KeySignature>(getDocument());
1326 }
1327 }
1328
1329 constexpr static std::string_view XmlNodeName = "measSpec";
1331};
1332
1342{
1343private:
1345 [[nodiscard]] std::optional<HorizontalMeasExprAlign> calcEntryAlignmentType() const;
1346
1348 [[nodiscard]] std::optional<utils::PseudoTieShapeInfo> calcPseudoTieShape() const;
1349
1350public:
1352 explicit MeasureExprAssign(const DocumentWeakPtr& document, Cmper ID, ShareMode shareMode, Cmper cmper, Inci inci)
1353 : OthersBase(document, ID, shareMode, cmper, inci) {}
1354
1358 {
1359 Current,
1360 ToLayer1,
1361 ToLayer2,
1362 ToLayer3,
1363 ToLayer4,
1364 ToChord,
1365 ToExpression,
1366 };
1367
1370 enum class PlaybackStart
1371 {
1376 };
1377
1380 enum class ShowStaffList
1381 {
1382 ScoreAndPart,
1383 ScoreOnly,
1384 PartOnly,
1385 };
1386
1387 // Public properties corresponding to the XML structure
1394 int layer{};
1395 bool voice2{};
1403 bool hidden{};
1407 unsigned graceNoteIndex{};
1409
1411 [[nodiscard]] bool calcIsSameDefinition(const MeasureExprAssign& src) const;
1412
1414 [[nodiscard]] bool calcIsPseudoTie(utils::PseudoTieMode mode, const EntryInfoPtr& forStartEntry) const;
1415
1419
1423
1427
1432
1437
1441 StaffCmper calcAssignedStaffId(bool forPageView = true) const;
1442
1445 MusxInstance<StaffComposite> createCurrentStaff(bool forPageView = true) const;
1446
1451
1453 bool calcIsAssignedInRequestedPart() const;
1454
1457 bool calcAppliesToLayer(LayerIndex layerIndex) const;
1458
1461
1466 [[nodiscard]] std::optional<Evpu> calcBaselinePosition(bool forAbove) const;
1467
1473 [[nodiscard]] std::optional<Evpu> calcDefaultVerticalPosition() const;
1474
1478 [[nodiscard]] VerticalPlacement calcVerticalPlacement() const;
1479
1487
1488 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1489 {
1490 this->OthersBase::integrityCheck(ptrToThis);
1491 if (!textExprId && !shapeExprId) {
1492 MUSX_INTEGRITY_ERROR("Expression assignment at measure " + std::to_string(getCmper()) + " inci " + std::to_string(getInci().value_or(-1))
1493 + " has no expression definition ID.");
1494 } else if (textExprId && shapeExprId) {
1495 MUSX_INTEGRITY_ERROR("Expression assignment at measure " + std::to_string(getCmper()) + " inci " + std::to_string(getInci().value_or(-1))
1496 + " has both text expr ID " + std::to_string(textExprId) + " and shape expr ID " + std::to_string(shapeExprId));
1497 }
1498 }
1499
1500 constexpr static std::string_view XmlNodeName = "measExprAssign";
1502};
1503
1511public:
1513 explicit MeasureNumberRegion(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1514 : OthersBase(document, partId, shareMode, cmper) {}
1515
1518 enum class TimePrecision
1519 {
1520 WholeSeconds,
1521 Tenths,
1522 Hundredths,
1523 Thousandths,
1524 };
1525
1528 {
1529 public:
1531
1532 std::shared_ptr<FontInfo> startFont;
1533 std::shared_ptr<FontInfo> multipleFont;
1534 std::shared_ptr<FontInfo> mmRestFont;
1535 std::shared_ptr<Enclosure> startEnclosure;
1536 std::shared_ptr<Enclosure> multipleEnclosure;
1537
1558 bool showOnTop{};
1565
1566 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1567 {
1568 this->ContainedClassBase::integrityCheck(ptrToThis);
1569 if (!startFont) {
1570 startFont = std::make_shared<FontInfo>(ptrToThis->getDocument());
1571 //MUSX_INTEGRITY_ERROR("Measure number region score part data is missing start font.");
1572 }
1573 if (!multipleFont) {
1574 multipleFont = std::make_shared<FontInfo>(ptrToThis->getDocument());
1575 MUSX_INTEGRITY_ERROR("Measure number region score part data is missing multiple numbers font.");
1576 }
1577 if (!mmRestFont) {
1578 mmRestFont = std::make_shared<FontInfo>(ptrToThis->getDocument());
1579 MUSX_INTEGRITY_ERROR("Measure number region score part data is missing multimeasure rest range font.");
1580 }
1581 }
1582
1584 };
1585
1586 // No fixture has a part-specific MeasureNumberRegion. If partial sharing is observed,
1587 // scoreData and partData must be copied and rebound before their nested fields are overlaid.
1588 // See PartContextRebinder<details::CenterShape> and the CenterShape field mappings for the pattern.
1589
1590 // Public properties
1591 std::shared_ptr<ScorePartData> scoreData;
1592 std::shared_ptr<ScorePartData> partData;
1593
1596 char32_t startChar{};
1597 int base{};
1599 std::string prefix;
1600 std::string suffix;
1601
1603 bool noZero{};
1604 bool doubleUp{};
1605 bool time{};
1609 int region{};
1611 bool hideScroll{};
1612 bool hidePage{};
1613
1616 [[nodiscard]] bool calcIncludesMeasure(MeasCmper measureId) const
1617 {
1618 return measureId >= startMeas && measureId < endMeas; // endMeas is non-inclusive!
1619 }
1620
1624 [[nodiscard]] int getStartNumber() const { return int(numberOffset + 1); }
1625
1629 [[nodiscard]] std::optional<int> calcDisplayNumberFor(MeasCmper measureId) const;
1630
1634 [[nodiscard]] std::optional<std::string> calcDisplayNumberTextFor(MeasCmper measureId) const;
1635
1639 [[nodiscard]] std::optional<MeasCmper> calcFirstDisplayedMeasureId() const;
1640
1644 [[nodiscard]] std::optional<MeasCmper> calcLastDisplayedMeasureId() const;
1645
1649 [[nodiscard]] std::optional<int> calcFirstDisplayNumber() const;
1650
1654 [[nodiscard]] std::optional<int> calcLastDisplayNumber() const;
1655
1656 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1657 {
1658 this->OthersBase::integrityCheck(ptrToThis);
1659 if (startMeas >= endMeas) {
1660 MUSX_INTEGRITY_ERROR("Measure number region " + std::to_string(getCmper())
1661 + " has an invalid measure range: start measure " + std::to_string(startMeas)
1662 + " is not before end measure " + std::to_string(endMeas) + ".");
1663 }
1664 if (!scoreData) {
1665 scoreData = std::make_shared<ScorePartData>(ptrToThis);
1666 MUSX_INTEGRITY_ERROR("Measure number region " + std::to_string(getCmper()) + " is missing score data.");
1667 }
1668 if (!partData) {
1669 partData = std::make_shared<ScorePartData>(ptrToThis);
1670 MUSX_INTEGRITY_ERROR("Measure number region " + std::to_string(getCmper()) + " is missing part data.");
1671 }
1672 scoreData->integrityCheck(scoreData);
1673 partData->integrityCheck(partData);
1674 }
1675
1676 constexpr static std::string_view XmlNodeName = "measNumbRegion";
1678};
1679
1689public:
1691 explicit MultimeasureRest(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper startMeasure)
1692 : OthersBase(document, partId, shareMode, startMeasure) {}
1693
1698 int numStart{};
1705 bool useSymbols{};
1707
1709 MeasCmper getStartMeasure() const { return getCmper(); }
1710
1712 int calcNumberOfMeasures() const { return (std::max)(nextMeas - getStartMeasure(), 0); }
1713
1715 bool calcUsesSymbols() const;
1716
1719
1720 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1721 {
1722 this->OthersBase::integrityCheck(ptrToThis);
1723 if (nextMeas <= getStartMeasure()) {
1724 MUSX_INTEGRITY_ERROR("Multimeasure rest at " + std::to_string(getCmper()) + " in part " + std::to_string(getSourcePartId()) + " spans 0 or fewer measures.");
1725 }
1726 }
1727
1728 constexpr static std::string_view XmlNodeName = "mmRest";
1730};
1731
1739public:
1741 explicit MultiStaffGroupId(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1742 : OthersBase(document, partId, shareMode, cmper) {}
1743
1745
1746 constexpr static std::string_view XmlNodeName = "multiStaffGroupID";
1748};
1749
1757public:
1759 explicit MultiStaffInstrumentGroup(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1760 : OthersBase(document, partId, shareMode, cmper) {}
1761
1762 std::vector<StaffCmper> staffNums;
1763
1767
1770
1772 std::optional<size_t> getIndexOf(StaffCmper staffId) const
1773 {
1774 for (size_t x = 0; x < staffNums.size(); x++) {
1775 if (staffNums[x] == staffId) return x;
1776 }
1777 return std::nullopt;
1778 }
1779
1783
1786 static void calcAllMultiStaffGroupIds(const DocumentPtr& document);
1787
1788 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1789 {
1790 OthersBase::integrityCheck(ptrToThis);
1791 if (staffNums.empty()) {
1792 MUSX_INTEGRITY_ERROR("MultiStaffInstrumentGroup " + std::to_string(getCmper()) + " contains no staves.");
1793 } else if (staffNums.size() > 3) {
1794 MUSX_INTEGRITY_ERROR("MultiStaffInstrumentGroup " + std::to_string(getCmper()) + " contains more than 3 staves.");
1795 }
1796 }
1797
1798 constexpr static std::string_view XmlNodeName = "multiStaffInstGroup";
1800};
1801
1809{
1810public:
1812
1813 constexpr static std::string_view XmlNodeName = "namePosAbbrv";
1814};
1815
1823{
1824public:
1826
1827 constexpr static std::string_view XmlNodeName = "namePosAbbrvStyle";
1828};
1829
1837{
1838public:
1840
1841 constexpr static std::string_view XmlNodeName = "namePosFull";
1842};
1843
1851{
1852public:
1854
1855 constexpr static std::string_view XmlNodeName = "namePosFullStyle";
1856};
1857
1864class Page : public OthersBase {
1865public:
1867 explicit Page(const DocumentWeakPtr& document, PageCmper pageId, ShareMode shareMode, Cmper cmper)
1868 : OthersBase(document, pageId, shareMode, cmper) {}
1869
1872 int percent{};
1879
1880 std::optional<SystemCmper> lastSystemId;
1881 std::optional<MeasCmper> firstMeasureId;
1882 std::optional<MeasCmper> lastMeasureId;
1883
1885 bool isBlank() const { return firstSystemId == -1; }
1886
1891 {
1893 }
1894
1898
1900 static void calcSystemInfo(const DocumentPtr& document);
1901
1902 constexpr static std::string_view XmlNodeName = "pageSpec";
1904};
1905
1906class TextBlock;
1929{
1930public:
1936 {
1937 AllPages,
1938 Even,
1939 Odd
1940 };
1941
1944
1946 explicit PageTextAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
1947 : OthersBase(document, partId, shareMode, cmper, inci)
1948 {
1949 }
1950
1962 bool hidden{};
1968 bool indRpPos{};
1971
1974
1979 std::optional<PageCmper> calcStartPageNumber(Cmper forPartId) const;
1980
1985 std::optional<PageCmper> calcEndPageNumber(Cmper forPartId) const;
1986
1994 util::EnigmaParsingContext getRawTextCtx(Cmper forPartId, std::optional<Cmper> forPageId = std::nullopt) const;
1995
1997 bool isMultiPage() const
1998 { return getCmper() == 0 && startPage != endPage; }
1999
2002 { return isMultiPage() && endPage == 0; }
2003
2004 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
2005 {
2006 this->OthersBase::integrityCheck(ptrToThis);
2007 if (getCmper() != 0) {
2008 if (startPage != getCmper() || endPage != getCmper()) {
2009 MUSX_INTEGRITY_ERROR("PageTextAssign " + std::to_string(getCmper()) + " inci " + std::to_string(getInci().value_or(0)) +
2010 " has startPage or endPage value that does not match.");
2011 }
2012 }
2013 }
2014
2021 static MusxInstance<others::PageTextAssign> getForPageId(const DocumentPtr& document, Cmper partId, PageCmper pageId, Inci inci);
2022
2029
2030 constexpr static std::string_view XmlNodeName = "pageTextAssign";
2032};
2033
2042{
2043public:
2045 explicit PartDefinition(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2046 : OthersBase(document, partId, shareMode, cmper) {}
2047
2048 // Public properties corresponding to the XML structure
2051 int copies{};
2052 bool printPart{};
2061
2064
2067
2070
2073 bool isLayoutCalculated() const;
2074
2076 bool isScore() const { return getCmper() == SCORE_PARTID; }
2077
2081 Cmper calcScrollViewCmper() const;
2082
2087 std::optional<PageCmper> calcPageNumberFromAssignmentId(PageCmper pageAssignmentId) const;
2088
2093
2095 static MusxInstance<PartDefinition> getScore(const DocumentPtr& document);
2096
2099
2100 constexpr static std::string_view XmlNodeName = "partDef";
2102};
2103
2112class PartGlobals : public OthersBase {
2113public:
2115 explicit PartGlobals(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2116 : OthersBase(document, partId, shareMode, cmper) {}
2117
2118 // Public properties corresponding to the XML structure
2139
2144 Cmper calcScrollViewCmper() const;
2145
2146 constexpr static std::string_view XmlNodeName = "partGlobals";
2148};
2149
2161class PartVoicing : public OthersBase {
2162public:
2168 explicit PartVoicing(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper staff)
2169 : OthersBase(document, partId, shareMode, staff) {}
2170
2172 enum class VoicingType
2173 {
2176 };
2177
2180 {
2181 AllNotes,
2182 TopNote,
2183 BottomNote,
2185 };
2186
2187 bool enabled{};
2190 bool select1st{};
2191 bool select2nd{};
2192 bool select3rd{};
2193 bool select4th{};
2194 bool select5th{};
2200
2205 bool calcShowsLayer(LayerIndex layerIndex, bool frameIsMultilayerInScore) const;
2206
2210 bool calcShowsNote(const NoteInfoPtr& noteInfoPtr) const;
2211
2212 constexpr static std::string_view XmlNodeName = "voicingDef";
2214};
2215
2226public:
2228 explicit PercussionNoteInfo(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
2229 : OthersBase(document, partId, shareMode, cmper, inci) {}
2230
2237 char32_t closedNotehead{};
2238 char32_t halfNotehead{};
2239 char32_t wholeNotehead{};
2240 char32_t dwholeNotehead{};
2241
2243 int calcStaffReferencePosition() const { return staffPosition - 10; }
2244
2248 { return percNoteType & 0xfff; }
2249
2252 unsigned getNoteTypeOrderId() const
2253 { return(percNoteType & 0xf000) >> 12; }
2254
2258
2259 constexpr static std::string_view XmlNodeName = "percussionNoteInfo";
2261};
2262
2268{
2269 JumpAuto,
2270 JumpAbsolute,
2271 JumpRelative,
2273 JumpToMark,
2274 Stop,
2275 NoJump
2276};
2277
2283{
2284 Always,
2285 OnPass,
2286 UntilPass
2287};
2288
2289class RepeatIndividualPositioning;
2290
2299class RepeatBack : public OthersBase {
2300public:
2302 explicit RepeatBack(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2303 : OthersBase(document, partId, shareMode, cmper) {}
2304
2305 // Public properties corresponding to the XML structure
2314 bool hidden{};
2321
2327
2331
2336 std::optional<MeasCmper> calcTargetMeasure() const;
2337
2338 constexpr static std::string_view XmlNodeName = "repeatBack";
2340};
2341
2351{
2352public:
2354 explicit RepeatEndingStart(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2355 : OthersBase(document, partId, shareMode, cmper)
2356 {
2357 }
2358
2366 bool hidden{};
2376
2378 int calcEndingLength() const;
2379
2385 std::optional<MeasCmper> calcTargetMeasure() const;
2386
2390 bool calcIsOpen() const;
2391
2397
2403
2406 std::string createEndingText() const;
2407
2411
2412 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
2413 {
2414 OthersBase::integrityCheck(ptrToThis);
2416 MUSX_INTEGRITY_ERROR("RepeatEndingStart at measure " + std::to_string(getCmper()) + " has an unexpected trigger value " +
2417 std::to_string(int(trigger)));
2418 }
2419 }
2420
2421 constexpr static std::string_view XmlNodeName = "repeatEndingStart";
2423};
2424
2436public:
2438 explicit RepeatEndingText(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2439 : OthersBase(document, partId, shareMode, cmper) {}
2440
2441 std::string text;
2442
2443 constexpr static std::string_view XmlNodeName = "repeatEndingText";
2445};
2446
2455class RepeatPassList : public OthersArray<int>
2456{
2457 std::string_view xmlTag() const override { return XmlNodeName; }
2458
2459public:
2461
2462 constexpr static std::string_view XmlNodeName = "repeatPassList";
2464};
2465
2476{
2477public:
2486 explicit RepeatIndividualPositioning(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
2487 : OthersBase(document, partId, shareMode, cmper, inci) {}
2488
2491 bool hidden{};
2496
2499};
2500
2509{
2510public:
2512
2513 constexpr static std::string_view XmlNodeName = "separatesRepeatBack";
2514};
2525{
2526public:
2528
2529 constexpr static std::string_view XmlNodeName = "separatesRepeatEndingLine";
2530};
2531
2541{
2542public:
2544
2545 constexpr static std::string_view XmlNodeName = "separatesRepeatEndingText";
2546};
2547
2556{
2557public:
2559
2560 constexpr static std::string_view XmlNodeName = "separatesTextRepeat";
2561};
2562
2609
2634class SplitMeasure : public OthersArray<Evpu>
2635{
2636 std::string_view xmlTag() const override { return XmlNodeName; }
2637
2638public:
2640
2641 constexpr static std::string_view XmlNodeName = "splitMeas";
2643};
2644
2651class StaffList : public OthersArray<StaffCmper>
2652{
2653public:
2655
2659 {
2660 TopStaff = -1,
2661 BottomStaff = -2
2662 };
2663
2665};
2666
2674{
2675public:
2677
2678 constexpr static std::string_view XmlNodeName = "categoryStaffListName";
2679};
2680
2688{
2689 std::string_view xmlTag() const override { return XmlNodeName; }
2690
2691public:
2692 using StaffList::StaffList;
2693
2694 constexpr static std::string_view XmlNodeName = "categoryStaffListParts";
2695};
2696
2704{
2705 std::string_view xmlTag() const override { return XmlNodeName; }
2706
2707public:
2708 using StaffList::StaffList;
2709
2710 constexpr static std::string_view XmlNodeName = "categoryStaffListScore";
2711};
2712
2721[[nodiscard]]
2722std::optional<Cmper> importCategoryStaffListInto(const DocumentPtr& target, const DocumentPtr& source,
2723 Cmper cmper, const ImportObjectCallback& onImported = {});
2724
2732{
2733public:
2735
2736 constexpr static std::string_view XmlNodeName = "repeatStaffListName";
2737};
2738
2746{
2747 std::string_view xmlTag() const override { return XmlNodeName; }
2748
2749public:
2750 using StaffList::StaffList;
2751
2752 constexpr static std::string_view XmlNodeName = "repeatStaffListParts";
2753};
2754
2763{
2764 std::string_view xmlTag() const override { return XmlNodeName; }
2765
2766public:
2767 using StaffList::StaffList;
2768
2769 constexpr static std::string_view XmlNodeName = "repeatStaffListPartsOverride";
2770};
2771
2779{
2780 std::string_view xmlTag() const override { return XmlNodeName; }
2781
2782public:
2783 using StaffList::StaffList;
2784
2785 constexpr static std::string_view XmlNodeName = "repeatStaffListScore";
2786};
2787
2796{
2797 std::string_view xmlTag() const override { return XmlNodeName; }
2798
2799public:
2800 using StaffList::StaffList;
2801
2802 constexpr static std::string_view XmlNodeName = "repeatStaffListScoreOverride";
2803};
2804
2813template<class ScoreList, class PartsList, class ScoreForcedList = void, class PartsForcedList = void>
2815{
2816public:
2818 StaffListSet(const DocumentPtr& document, Cmper partId, Cmper staffListId) noexcept;
2819
2824 bool contains(StaffCmper staffId, const MusxInstanceList<StaffUsed>& systemStaves, bool isHidden = false) const noexcept;
2825
2826private:
2827 MusxInstance<StaffList> m_staffList;
2828 MusxInstance<StaffList> m_forcedStaffList;
2829};
2830
2838{
2839public:
2841 explicit StaffSystem(const DocumentWeakPtr& document, Cmper staffSystemId, ShareMode shareMode, Cmper cmper)
2842 : OthersBase(document, staffSystemId, shareMode, cmper)
2843 {
2844 }
2845
2853 double horzPercent{};
2862 bool noNames{};
2866 bool scaleVert{};
2871
2873
2876 MeasCmper getLastMeasure() const { return endMeas - 1; }
2877
2880 int calcNumMeasures() const { return endMeas - startMeas; }
2881
2884
2888
2893
2896
2902 std::pair<util::Fraction, util::Fraction> calcMinMaxStaffSizes() const;
2903
2904 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
2905 {
2906 this->OthersBase::integrityCheck(ptrToThis);
2907 if (startMeas == 0 || endMeas == 0) {
2908 if (getSourcePartId() == SCORE_PARTID) {
2909 util::Logger::log(util::Logger::LogLevel::Info, "Layout for system " + std::to_string(getCmper())
2910 + " of part " + std::to_string(getSourcePartId()) + " has not been calculated.");
2911 } else {
2912 // Finale can retain zero-valued system placeholders until a linked-part layout is updated.
2913 util::Logger::log(util::Logger::LogLevel::Verbose, "Layout for system " + std::to_string(getCmper())
2914 + " of part " + std::to_string(getSourcePartId()) + " has not been calculated.");
2915 }
2916 }
2917 }
2918
2919 constexpr static std::string_view XmlNodeName = "staffSystemSpec";
2921};
2922
2933class StaffUsed : public OthersBase {
2934public:
2936 explicit StaffUsed(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
2937 : OthersBase(document, partId, shareMode, cmper, inci) {}
2938
2941 std::shared_ptr<EnigmaMusicRange> range;
2942
2945
2948
2950 MusxInstance<StaffComposite> getStaffInstance(MeasCmper measureId, Edu eduPosition = 0) const;
2951
2952 constexpr static std::string_view XmlNodeName = "instUsed";
2954};
2955
2966{
2967public:
2969 explicit SystemLock(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2970 : OthersBase(document, partId, shareMode, cmper) {}
2971
2976
2977 constexpr static std::string_view XmlNodeName = "lockMeas";
2979};
2980
2997{
2998public:
3000 explicit TempoChange(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
3001 : OthersBase(document, partId, shareMode, cmper, inci)
3002 {
3003 }
3004
3005 int ratio{};
3010 int unit{};
3011 bool isRelative{};
3014
3022 double getAbsoluteTempo(NoteType noteType = NoteType::Quarter) const;
3023
3024 constexpr static std::string_view XmlNodeName = "tempoDef";
3026};
3027
3035class TextBlock : public OthersBase
3036{
3037public:
3039
3044 enum class TextType
3045 {
3046 Block,
3047 Expression
3048 };
3049
3051 explicit TextBlock(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
3052 : OthersBase(document, partId, shareMode, cmper) {}
3053
3054 // Public properties corresponding to the XML structure
3063 std::optional<int> lineSpacingPercentage;
3064 std::optional<Evpu> lineSpacingEvpu;
3068 bool newPos36{};
3071 bool showShape{};
3073 bool wordWrap{};
3079
3085 util::EnigmaParsingContext getRawTextCtx(Cmper forPartId, std::optional<Cmper> forPageId = std::nullopt,
3087
3089 static std::string getText(const DocumentPtr& document, const Cmper textId, Cmper forPartId, bool trimTags = false,
3091
3092 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
3093 {
3094 this->OthersBase::integrityCheck(ptrToThis);
3096 lineSpacingEvpu.reset();
3097 MUSX_INTEGRITY_ERROR("Text options specify both a percent and an absolute line spacing. "
3098 "The absolute value was discarded.");
3099 } else if (!lineSpacingPercentage && !lineSpacingEvpu) {
3100 // this is what Finale reads when neither lineSpacingPercentage nor lineSpacingEvpu is present
3101 lineSpacingEvpu = 0;
3102 }
3103 }
3104
3105 constexpr static std::string_view XmlNodeName = "textBlock";
3107};
3108
3171
3181public:
3183
3184 constexpr static std::string_view XmlNodeName = "textExpressionEnclosure";
3186};
3187
3197{
3198public:
3200 explicit TextRepeatAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
3201 : OthersBase(document, partId, shareMode, cmper, inci)
3202 {
3203 }
3204
3205 // Public properties corresponding to the XML structure
3213 bool hidden{};
3217 bool autoUpdate{};
3221
3227
3231
3237 std::optional<MeasCmper> calcTargetMeasure() const;
3238
3239 constexpr static std::string_view XmlNodeName = "textRepeatAssign";
3241};
3242
3255{
3256public:
3262 {
3263 Passes,
3264 RepeatID,
3266 };
3267
3269 explicit TextRepeatDef(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
3270 : OthersBase(document, partId, shareMode, cmper), font(new FontInfo(document))
3271 {
3272 }
3273
3274 // Public properties corresponding to the XML structure
3275 std::shared_ptr<FontInfo> font;
3282 std::vector<int> passList;
3283
3284 constexpr static std::string_view XmlNodeName = "textRepeatDef";
3286};
3287
3297{
3298public:
3300
3301 constexpr static std::string_view XmlNodeName = "textRepeatEnclosure";
3303};
3304
3314{
3315public:
3317 explicit TextRepeatText(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
3318 : OthersBase(document, partId, shareMode, cmper)
3319 {
3320 }
3321
3322 std::string text;
3323
3324 constexpr static std::string_view XmlNodeName = "textRepeatText";
3326};
3327
3337{
3338public:
3340 explicit TimeCompositeLower(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
3341 : OthersBase(document, partId, shareMode, cmper)
3342 {
3343 }
3344
3349 {
3350 public:
3352 bool startGroup{};
3353
3355 };
3356
3357 std::vector<std::shared_ptr<CompositeItem>> items;
3358
3359 constexpr static std::string_view XmlNodeName = "timeLower";
3361};
3362
3372{
3373public:
3375 explicit TimeCompositeUpper(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
3376 : OthersBase(document, partId, shareMode, cmper)
3377 {
3378 }
3379
3395
3397 std::vector<std::shared_ptr<CompositeItem>> items;
3398
3399 constexpr static std::string_view XmlNodeName = "timeUpper";
3401};
3402
3415class TonalCenterFlats : public OthersArray<unsigned, 8>
3416{
3417 std::string_view xmlTag() const override { return XmlNodeName; }
3418
3419public:
3421
3422 constexpr static std::string_view XmlNodeName = "fstKeyFlats";
3424};
3425
3437class TonalCenterSharps : public OthersArray<unsigned, 8>
3438{
3439 std::string_view xmlTag() const override { return XmlNodeName; }
3440
3441public:
3443
3444 constexpr static std::string_view XmlNodeName = "fstKeySharps";
3446};
3447
3448} // namespace others
3449} // namespace dom
3450} // namespace musx
EnigmaBase class for classes that are contained by other classes.
Definition BaseClasses.h:181
ContainedClassBase(const MusxInstance< EnigmaBase > &parent)
Constructs a ContainedClassBase object.
Definition BaseClasses.h:213
DocumentPtr getDocument() const
Gets a reference to the Document.
Definition DocumentElement.h:58
ShareMode
Describes how this instance is shared between part and score.
Definition BaseClasses.h:95
Cmper getSourcePartId() const
Gets the source partId for this instance. If an instance is fully shared with the score,...
Definition BaseClasses.h:108
virtual void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis)
Performs a final consistency check after population.
Definition BaseClasses.h:116
Wraps a frame of shared_ptr<const EntryInfo> and an index for per entry access. This class manages ow...
Definition Entries.h:555
Represents the default font settings for a particular element type.
Definition CommonClasses.h:111
Provides optional per-type extension methods for MusxInstanceList.
Definition MusxInstance.h:118
Wraps an EntryInfo instance and a note index.
Definition Entries.h:1640
Template pattern for OthersBase items consisting of an array of a single item.
Definition BaseClasses.h:335
OthersArray(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition BaseClasses.h:341
EnigmaBase class for all "others" types.
Definition BaseClasses.h:263
std::optional< Inci > getInci() const
Gets the optional array index (inci).
Definition BaseClasses.h:317
Cmper getCmper() const
Gets the cmper key value.
Definition BaseClasses.h:310
Many element names are embedded directly in top-level xml tags. This encapsulates that pattern.
Definition BaseClasses.h:377
OthersName(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition BaseClasses.h:380
AlignJustify HorizontalAlignment
Horizontal alignment options for page text positioning.
Definition Options.h:1510
VerticalAlignment
Vertical alignment options for page text positioning.
Definition Options.h:1517
TextJustify
Text justification options.
Definition Options.h:1525
Lists the aleration values of each nth flat in a custom key signature. Normally these values are all ...
Definition Others.h:106
static const xml::XmlElementArray< AcciAmountFlats > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:112
Lists the aleration values of each nth sharp in a custom key signature. Normally these values are all...
Definition Others.h:139
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:145
static const xml::XmlElementArray< AcciAmountSharps > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Lists the order of flats by pitch class index (0..6 = C..B) in a custom key signature....
Definition Others.h:165
static const xml::XmlElementArray< AcciOrderFlats > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:171
Lists the order of sharps by pitch class index (0..6 = C..B) in a custom key signature....
Definition Others.h:196
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:202
static const xml::XmlElementArray< AcciOrderSharps > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Stores the properties and behaviors of articulation definitions.
Definition Others.h:216
bool autoVert
Whether vertical auto-positioning is enabled.
Definition Others.h:280
bool useTopNote
"Attach to top note"
Definition Others.h:278
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:324
Evpu distanceFromStemEnd
"On-stem distance from stem end/flag/beam"
Definition Others.h:317
Evpu xOffsetAlt
Horizontal offset for the alternate symbol.
Definition Others.h:299
Evpu yOffsetMain
Vertical offset for the main symbol.
Definition Others.h:293
char32_t charAlt
Alternate symbol character (utf32).
Definition Others.h:290
SelectedSymbol calcSelectedSymbol(bool placeAbove) const
Resolves which symbol data applies for the specified placement.
Definition Others.cpp:98
int startTopNoteDelta
Attack change for the top note.
Definition Others.h:305
int durBotNoteDelta
Duration change for the bottom note.
Definition Others.h:310
char32_t charMain
Main symbol character (utf32).
Definition Others.h:275
Cmper mainShape
Main shape ID (if applicable).
Definition Others.h:303
bool autoStack
Whether automatic stacking is enabled.
Definition Others.h:287
int ampTopNotePercent
Key velocity percentage for the top note.
Definition Others.h:315
int durTopNotePercent
Duration percent change for the top note.
Definition Others.h:311
bool aboveSymbolAlt
Whether the alternate symbol is used above. (Otherwise main symbol is used.)
Definition Others.h:283
int ampBotNotePercent
Key velocity percentage for the bottom note.
Definition Others.h:316
bool centerOnStem
Whether centering on the stem is enabled.
Definition Others.h:288
SlurInteractionMode
Defines the interaction mode with slurs.
Definition Others.h:249
@ Ignore
default value (may not appear in xml)
Evpu defVertPos
Default vertical position.
Definition Others.h:294
Evpu xOffsetMain
Horizontal offset for the main symbol.
Definition Others.h:292
Evpu yOffsetAlt
Vertical offset for the alternate symbol.
Definition Others.h:300
Cmper altShape
Alternate shape ID (if applicable).
Definition Others.h:304
bool altIsShape
Whether the alternate symbol is a shape.
Definition Others.h:302
std::shared_ptr< FontInfo > fontAlt
The font info for the alternate symbol. (xml nodes <fontAlt>, <sizeAlt>, and <efxAlt>)
Definition Others.h:291
int startTopNotePercent
Attack change percent for the top note.
Definition Others.h:307
bool playArtic
Whether playback articulation is enabled.
Definition Others.h:298
bool insideSlur
Whether the articulation is inside a slur. (Used in addition to SlurInteractionMode::InsideSlur)
Definition Others.h:285
AutoVerticalMode autoVertMode
Auto vertical positioning mode.
Definition Others.h:281
int durTopNoteDelta
Duration change for the top note.
Definition Others.h:309
std::shared_ptr< FontInfo > fontMain
The font info for the main symbol. (xml nodes <fontMain>, <sizeMain>, and <efxMain>)
Definition Others.h:276
bool belowSymbolAlt
Whether the alternate symbol is used below. (Otherwise main symbol is used.)
Definition Others.h:284
int ampBotNoteDelta
Key velocity change for the bottom note.
Definition Others.h:314
SlurInteractionMode slurInteractionMode
Slur interaction mode.
Definition Others.h:289
int startBotNotePercent
Attack change percent for the bottom note.
Definition Others.h:308
bool mainIsShape
Whether the main symbol is a shape.
Definition Others.h:301
int durBotNotePercent
Duration percent change for the bottom note.
Definition Others.h:312
CopyMode
Defines the character copy mode (vertical or horizontal)
Definition Others.h:238
@ Vertical
Copy symbol vertically (xml value is "both")
@ None
default value (may not appear in xml)
int ampTopNoteDelta
Key velocity change for the top note.
Definition Others.h:313
AutoVerticalMode
Defines the automatic vertical positioning mode. These values are only meaningful if autoVert is true...
Definition Others.h:224
@ AlwaysNoteheadSide
default value (may not appear in xml)
int startBotNoteDelta
Attack change for the bottom note.
Definition Others.h:306
bool outsideStaff
Whether the articulation is forced outside the staff.
Definition Others.h:282
bool autoHorz
Whether horizontal auto-positioning is enabled.
Definition Others.h:279
ArticulationDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:272
bool isStemSideWhenMultipleLayers
Definition Others.h:296
bool noPrint
"Display on screen only (do not print)"
Definition Others.h:286
CopyMode copyMode
"Copy Main Symbol" option.
Definition Others.h:277
bool avoidStaffLines
Whether to avoid staff lines.
Definition Others.h:295
static const xml::XmlElementArray< ArticulationDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Control settings for a beat chart, only used when inci == 0.
Definition Others.h:384
Edu totalDur
Total logical duration of the measure (XML: <totalDur>)
Definition Others.h:386
Evpu minWidth
Minimum required width (XML: <minWidth>)
Definition Others.h:388
static const xml::XmlElementArray< Control > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu totalWidth
Total width allocated to the measure (XML: <totalWidth>)
Definition Others.h:387
Evpu allotWidth
Allotted width before justification (XML: <allotWidth>)
Definition Others.h:389
A single beat chart element from Finale's music spacing system.
Definition Others.h:370
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:415
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:403
Edu dur
Duration of this beat span.
Definition Others.h:398
static const xml::XmlElementArray< BeatChartElement > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::shared_ptr< Control > control
Control data for this beat chart element (only present for inci == 0)
Definition Others.h:395
BeatChartElement(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:373
Evpu minPos
Minimum position (see remarks in the class-level description of BeatChartElement)
Definition Others.h:401
Evpu endPos
End position of the beat span.
Definition Others.h:400
Evpu pos
Horizontal position within the measure.
Definition Others.h:399
Represents a single element in a chord suffix (e.g., a symbol like "1" or "+").
Definition Others.h:432
static const xml::XmlElementArray< ChordSuffixElement > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::shared_ptr< FontInfo > font
Font info for this symbol (xml nodes are <fontID>, <fontSize>, and <efx>)
Definition Others.h:453
Evpu xdisp
Horizontal displacement in EVPU.
Definition Others.h:455
Prefix prefix
Optional prefix for the symbol, e.g., "plus".
Definition Others.h:458
bool isNumber
Indicates the symbol value is numeric rather than a codepoint.
Definition Others.h:457
char32_t symbol
Codepoint of glyph in font. (xml node is <suffix>)
Definition Others.h:454
Evpu ydisp
Vertical displacement in EVPU.
Definition Others.h:456
ChordSuffixElement(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:448
Prefix
Enum for chord symbol prefix options.
Definition Others.h:439
@ None
No prefix (default: may not appear in XML)
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:460
An array of semitone offsets that define the playback and voicing for the chord suffix....
Definition Others.h:477
static const xml::XmlElementArray< ChordSuffixPlayback > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:483
Represents an element in multimeasure clef list with its positioning and percentage values.
Definition Others.h:497
bool afterBarline
"Place Clef After Barline"
Definition Others.h:515
ShowClefMode clefMode
The clef mode from the <clefMode> element.
Definition Others.h:513
static const xml::XmlElementArray< ClefList > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int xEvpuOffset
The xEvpuOffset value from the <xEvpuOffset> element.
Definition Others.h:512
Edu xEduPos
Definition Others.h:507
ClefIndex clefIndex
The 0-based clef index from the <clef> element.
Definition Others.h:506
bool unlockVert
"Allow Vertical Drag"
Definition Others.h:514
ClefList(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:500
Evpu yEvpuPos
The yEvpuPos value from the <yEvpuPos> element.
Definition Others.h:510
int percent
The percentage value from the <percent> element.
Definition Others.h:511
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:517
Identifies the percussion map ("drum library") for a staff style with percussion notation.
Definition Others.h:548
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:552
Identifies the percussion map ("drum library") for a staff with percussion notation.
Definition Others.h:528
DrumStaff(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:531
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:537
static const xml::XmlElementArray< DrumStaff > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Cmper whichDrumLib
Definition Others.h:534
Represents the enclosure settings for text expressions.
Definition CommonClasses.h:826
Enclosure(const DocumentWeakPtr &document, Cmper partId=SCORE_PARTID, ShareMode shareMode=ShareMode::All, Cmper cmper=0)
Constructs an Enclosure object.
Definition CommonClasses.h:852
The name and font characteristics of fonts contained.
Definition Others.h:564
int charsetVal
Definition Others.h:582
bool calcIsSymbolFont() const
Calculates if this font is a symbol font.
Definition Others.h:604
static constexpr uint32_t SYMBOL_CHARSET_WIN
Windows symbol charset.
Definition Others.h:567
FontDefinition(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:569
static constexpr uint32_t SYMBOL_CHARSET_MAC
macOS symbol charset (4095).
Definition Others.h:566
CharacterSetBank charsetBank
The character set bank.
Definition Others.h:581
CharacterSetBank
The character set for the bank.
Definition Others.h:575
std::string name
The font name e.g., "Broadway Copyist Text".
Definition Others.h:589
int family
Represents the <family> element, e.g., 0. (use unknown)
Definition Others.h:588
static const xml::XmlElementArray< FontDefinition > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:615
int pitch
Represents the <pitch> element, e.g., 0. (use unknown)
Definition Others.h:587
Represents the attributes of a TGF entry frame.
Definition Others.h:633
Frame(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci=0)
Constructor function.
Definition Others.h:636
MusxInstanceList< Entry > getEntries() const
Returns a vector of entries contained in the frame.
Definition Others.cpp:137
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:668
Edu startTime
The starting position within the measure. (Appears to be zero when startEntry and endEntry are suppli...
Definition Others.h:641
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:654
EntryNumber endEntry
End entry number for this frame. (Appears to be zero when startTime is supplied.)
Definition Others.h:640
bool iterateRawEntries(std::function< bool(const MusxInstance< Entry > &entry)> iterator) const
Iterates all the raw entries in a frame, passing them to the iterator function. If the iterator funct...
Definition Others.cpp:117
EntryNumber startEntry
Start entry number for this frame. (Appears to be zero when startTime is supplied....
Definition Others.h:639
static const xml::XmlElementArray< Frame > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Information for a single string of the fretted instrument.
Definition Others.h:787
int pitch
Open-string MIDI pitch (60 is middle-C.)
Definition Others.h:789
static const xml::XmlElementArray< StringInfo > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Describes a fretted instrument (strings, frets, name, clef). It is used for both TAB notation and Fre...
Definition Others.h:774
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:819
ClefIndex speedyClef
The clef to use when entering notes for this instrument in Speedy Entry.
Definition Others.h:804
std::string name
Display name.
Definition Others.h:798
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:806
static const xml::XmlElementArray< FretInstrument > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::vector< std::shared_ptr< StringInfo > > strings
One entry per string: strings.size() should equal numStrings.
Definition Others.h:799
int numStrings
Number of strings (max is 24)
Definition Others.h:797
std::vector< int > fretSteps
Definition Others.h:800
FretInstrument(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:777
int numFrets
Number of frets.
Definition Others.h:796
A named group of fretboard diagrams associated with a specific fretboard instrument.
Definition Others.h:686
Cmper fretInstId
Fret instrument ID. (xml node <fretInstID>)
Definition Others.h:694
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:703
MusxInstance< FretInstrument > getFretInstrument() const
Get the FretInstrument associated with this fretboard group.
Definition Others.cpp:151
MusxInstanceList< details::FretboardDiagram > getFretboardDiagrams() const
Gets the array of details::FretboardDiagram instances associated with this fretboard group.
Definition Others.cpp:156
FretboardGroup(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor.
Definition Others.h:689
std::string name
Group name.
Definition Others.h:695
static const xml::XmlElementArray< FretboardGroup > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Fretboard diagram style: shapes, spacing, fonts, and offsets.
Definition Others.h:716
Efix stringGap
Gap between strings.
Definition Others.h:733
Efix fretWidth
Line width of frets.
Definition Others.h:736
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:750
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:761
Efix vertHandleOff
Vertical handle offset.
Definition Others.h:741
std::shared_ptr< FontInfo > fingNumFont
Font for fingering numbers.
Definition Others.h:744
bool showLastFret
Show the last fret marker.
Definition Others.h:724
static const xml::XmlElementArray< FretboardStyle > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Efix horzHandleOff
Horizontal handle offset.
Definition Others.h:740
Cmper fingStrShapeId
Fingering string shape ID. (xml node <fingStrShapeID>)
Definition Others.h:727
bool rotate
Rotate the diagram so the nut is on the left.
Definition Others.h:725
bool fingNumWhite
Render fingering numbers in white.
Definition Others.h:726
Cmper barreShapeId
Barre shape ID. (xml node <barreShapeID>)
Definition Others.h:730
Cmper openStrShapeId
Open string shape ID. (xml node <openStrShapeID>)
Definition Others.h:728
FretboardStyle(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:719
Efix whiteout
Whiteout thickness/extent. (xml node <whiteout>)
Definition Others.h:742
std::string fretNumText
Label preceding fret number (e.g., "fr."). (xml node <fretNumText>)
Definition Others.h:748
Efix horzFingNumOff
Horizontal fingering number offset.
Definition Others.h:745
Efix vertTextOff
Vertical text offset.
Definition Others.h:738
Efix stringWidth
Line width of strings.
Definition Others.h:735
std::string name
Style name. (xml node <name>)
Definition Others.h:747
std::shared_ptr< FontInfo > fretNumFont
Font for fret numbers.
Definition Others.h:743
Cmper customShapeId
Custom shape ID. (xml node <customShapeID>)
Definition Others.h:731
Efix fretGap
Gap between frets.
Definition Others.h:734
Cmper muteStrShapeId
Muted string shape ID. (xml node <muteStrShapeID>)
Definition Others.h:729
Efix nutWidth
Width of the nut.
Definition Others.h:737
Efix horzTextOff
Horizontal text offset.
Definition Others.h:739
int defNumFrets
Default number of frets.
Definition Others.h:732
Efix vertFingNumOff
Vertical fingering number offset.
Definition Others.h:746
Represents the attributes associated with a Finale key signature.
Definition Others.h:886
bool hasClefOctv
If true, the key signature has clef octave override tables. See details::ClefOctaveFlats and details:...
Definition Others.h:903
int gotoKey
Definition Others.h:899
KeyAttributes(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:889
int harmRefer
Definition Others.h:893
Cmper symbolList
Cmper of the symbol list that specifies the accidentals for the key. These are stored in incidents of...
Definition Others.h:902
int middleCKey
MIDI key number to use for middle C. This value transposes playback if it is set other than the MIDI ...
Definition Others.h:896
Cmper fontSym
Definition Others.h:897
static const xml::XmlElementArray< KeyAttributes > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:905
The key format for a custom key signature.
Definition Others.h:829
KeyFormat(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:832
static const xml::XmlElementArray< KeyFormat > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
unsigned semitones
Number of semitones in the octave (e.g. 12 for standard keys, 24 for 24-EDO, 31 for 31-EDO,...
Definition Others.h:835
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:838
unsigned scaleTones
Number of diatonic steps in the scale (almost always 7).
Definition Others.h:836
Represents a single <keych> element inside the <keyMap>.
Definition Others.h:857
bool diatonic
Whether the step is diatonic (true if <diatonic> is present).
Definition Others.h:859
unsigned hlevel
Harmonic level (scale degree) of this step. (xml node is <hlevel>)
Definition Others.h:860
static const xml::XmlElementArray< StepElement > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
An array of step elements from which one can create a key map.
Definition Others.h:848
std::vector< std::shared_ptr< StepElement > > steps
Collection of keych step elements.
Definition Others.h:865
unsigned countDiatonicSteps() const
Counts the number of diatonic steps in the steps array.
Definition Others.h:868
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:875
KeyMapArray(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:851
static const xml::XmlElementArray< KeyMapArray > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents the attributes of a Finale "layer".
Definition Others.h:918
bool freezeLayer
"Freeze Stems and Ties"
Definition Others.h:930
bool playback
If true, playback this layer. If false, the layer is muted.
Definition Others.h:931
int restOffset
"Adjust Floating Rests by " number of staff steps.
Definition Others.h:925
bool ignoreHiddenLayers
"Ignore Hidden Layers"
Definition Others.h:934
bool freezeStemsUp
If true, freeze stems up, otherwise freeze stems down. Only used if freezeLayer is true....
Definition Others.h:929
bool ignoreHiddenNotesOnly
"Ignore Layers Containing Only Hidden Notes" (xml node is <ignoreHidden>)
Definition Others.h:933
bool hideLayer
"Hide Layer when Inactive"
Definition Others.h:935
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:937
bool affectSpacing
"Affect Music Spacing" (xml node is <spacing>)
Definition Others.h:932
static const xml::XmlElementArray< LayerAttributes > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool useRestOffset
"Adjust Floating Rests by ". Determines if restOffset is used. (xml node is <useRestOff>)
Definition Others.h:928
bool onlyIfOtherLayersHaveNotes
"Apply Settings Only if Notes are in Other Layers" (xml node is <floatLayer>)
Definition Others.h:927
LayerAttributes(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:921
bool freezTiesToStems
"Freeze Ties in the Same Direction as Stems" (xml node is <flipTies>)
Definition Others.h:926
Represents the name associated with a MarkingCategory.
Definition Others.h:1129
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1133
Represents a category of markings used.
Definition Others.h:1030
bool usesTextFont
whether this category uses the text font
Definition Others.h:1069
Evpu horzOffset
Additional horizontal offset.
Definition Others.h:1064
bool usesMusicFont
whether this category uses the music font
Definition Others.h:1070
std::string getName() const
gets the name of the marking category
Definition Others.cpp:182
bool usesBreakMmRests
whether this category uses the breakMmRest setting
Definition Others.h:1074
bool usesNumberFont
whether this category uses the number font
Definition Others.h:1071
Evpu vertOffsetBaseline
Additional vertical offset.
Definition Others.h:1065
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1117
bool userCreated
whether the user created this category
Definition Others.h:1076
CategoryType
Enumeration for the type of marking category.
Definition Others.h:1037
@ RehearsalMarks
Rehearsal marks, often used for reference points in the score.
@ Dynamics
Dynamics markings, such as forte, piano, etc.
@ Invalid
There should always be a category type supplied.
@ TechniqueText
Technique text such as "pizzicato" or "arco.".
@ Misc
Represents miscellaneous markings that do not fit into other categories.
@ TempoMarks
Tempo indications such as Allegro (with or without metronome marking).
@ TempoAlterations
Tempo alteration markings, such as accel. and rit. (xml value is "tempoAlts")
@ ExpressiveText
Expressive text such as "espressivo.".
std::map< Cmper, MusxInstanceWeak< TextExpressionDef > > textExpressions
A list of text expressions in this category.
Definition Others.h:1091
AlignJustify justification
Justification for the text within the marking.
Definition Others.h:1061
std::shared_ptr< FontInfo > musicFont
Music font.
Definition Others.h:1056
static const xml::XmlElementArray< MarkingCategory > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:1100
Evpu vertOffsetEntry
Additional vertical entry offset.
Definition Others.h:1066
std::shared_ptr< FontInfo > textFont
Text font.
Definition Others.h:1055
CategoryStaffListSet createStaffListSet() const
Create a StaffListSet for the given instance. This can be used to interrogate whether a staff appears...
Definition Others.cpp:191
VerticalMeasExprAlign vertAlign
Vertical alignment for the marking.
Definition Others.h:1060
std::map< Cmper, MusxInstanceWeak< ShapeExpressionDef > > shapeExpressions
A list of shape expressions in this category.
Definition Others.h:1085
Cmper staffList
The staff list if useStaffList is true.
Definition Others.h:1079
bool breakMmRest
whether expressions in this category break multimeasure rests
Definition Others.h:1075
bool usesPositioning
whether this category uses the positioning elements (Finale UI only allows true)
Definition Others.h:1072
bool usesStaffList
whether this category uses a staff list
Definition Others.h:1073
MarkingCategory(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1049
HorizontalMeasExprAlign horzAlign
Horizontal alignment for the marking.
Definition Others.h:1059
CategoryType categoryType
Category type of the marking.
Definition Others.h:1052
std::shared_ptr< FontInfo > numberFont
Number font (not implemented in the Finale U.I.)
Definition Others.h:1057
Assigns a TextExpressionDef or ShapeExpressionDef to a measure.
Definition Others.h:1342
static const xml::XmlElementArray< MeasureExprAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
StaffCmper staffAssign
The staff to which this expression is assigned, or -1 if it is assigned to top staff and -2 if assign...
Definition Others.h:1393
ShowStaffList
Where to show the assignment. (Used both for staff list and singleton assignments....
Definition Others.h:1381
@ ScoreAndPart
Score and Part(s). (Default value may not appear in xml.)
ShowStaffList showStaffList
"Show On Score and Part(s)|Score Only|Part(s) Only".
Definition Others.h:1401
bool hidden
True if the expression is hidden.
Definition Others.h:1403
std::optional< Evpu > calcBaselinePosition(bool forAbove) const
Calculates the baseline position for this expression assignment in EVPU.
Definition Others.cpp:621
int rehearsalMarkOffset
Restarts the rehearsal mark sequence at this 1-based sequence value. If this is zero,...
Definition Others.h:1408
ChannelSwitchTarget
The values for "On Playback Affect". The target channels are specified in the Score Manager dropdown ...
Definition Others.h:1358
@ Current
Current channel. (Default value may not appear in xml.)
@ ToExpression
Switch to expression channel. (xml value is "toDyn")
@ ToLayer3
Switch to layer 3 channel. (xml value is "toL3")
@ ToChord
Switch to chord channel. (xml value is "toChord")
@ ToLayer4
Switch to layer 4 channel. (xml value is "toL4")
@ ToLayer2
Switch to layer 2 channel. (xml value is "toL2")
@ ToLayer1
Switch to layer 1 channel. (xml value is "toL1")
bool calcIsHiddenByAlternateNotation() const
Calculates if this assignment is hidden by alternate notation.
Definition Others.cpp:605
util::EnigmaParsingContext getRawTextCtx(Cmper forPartId) const
Gets the raw text context for parsing this expression assignment, or nullptr if none.
Definition Others.cpp:871
EntryInfoPtr calcAssociatedEntry() const
Calculates the entry associated with the the measure expression. This is the entry that Finale uses f...
Definition Others.cpp:528
bool dontScaleWithEntry
Inverse of "Scale Expression with Attached Note".
Definition Others.h:1399
Cmper staffList
Definition Others.h:1405
bool calcIsSameDefinition(const MeasureExprAssign &src) const
Calculate if this expression and the source expression point to the same definition.
Definition Others.cpp:433
MusxInstance< MarkingCategory > getMarkingCategory() const
Gets the marking category for the assigned text or shape expression.
Definition Others.cpp:461
bool calcIsPartOfStaffListAssignment() const
Calculates if this assignment participates in a staff-list-based assignment group.
Definition Others.cpp:480
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1500
int staffGroup
Assignment is part of a group of assignments associated with a staff list and should be modified as a...
Definition Others.h:1404
std::optional< Evpu > calcDefaultVerticalPosition() const
Calculates the default vertical position for the assigned expression, relative to the staff reference...
Definition Others.cpp:644
Cmper shapeExprId
The Cmper of a shape expression (xml node is <shapeExprID>)
Definition Others.h:1389
MusxInstance< TextExpressionDef > getTextExpression() const
Gets the assigned text expression.
Definition Others.cpp:445
ChannelSwitchTarget channelSwitch
"On Playback Affect" value.
Definition Others.h:1398
PlaybackStart playbackStart
Where to start playback.
Definition Others.h:1400
MeasureExprAssign(const DocumentWeakPtr &document, Cmper ID, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:1352
Cmper textExprId
The Cmper of a text expression (xml node is <textExprID>)
Definition Others.h:1388
int layer
The 1-based layer number (1..4) to which this expression is assigned. (0 = all layers....
Definition Others.h:1394
CategoryStaffListSet createStaffListSet() const
Create a StaffListSet for the given instance. This can be used to interrogate whether a staff appears...
Definition Others.cpp:475
bool calcAppliesToLayer(LayerIndex layerIndex) const
Calculates if this assignment applies to the specified layer.
Definition Others.cpp:571
Evpu horzEvpuOff
Horizontal Evpu offset from the default position.
Definition Others.h:1390
VerticalPlacement calcVerticalPlacement() const
Calculates a vertical placement classification for this assignment.
Definition Others.cpp:732
PlaybackStart
The choice where to start playback.
Definition Others.h:1371
@ PositionInMeasure
Start playback at the Edu position of the assignment. (xml value is "measPos")
@ BeginningOfMeasure
Start playback at beginning of measure. (Default value may not appear in xml.)
bool createdByHp
This assignment was created by Finale's smart playback engine.
Definition Others.h:1402
StaffCmper calcAssignedStaffId(bool forPageView=true) const
Calculates the effective staffId for the assignment, returning top or bottom staff if appropriate.
Definition Others.cpp:576
unsigned graceNoteIndex
1-based index from leftmost grace note. 0 = main note.
Definition Others.h:1407
MusxInstance< StaffComposite > createCurrentStaff(bool forPageView=true) const
Creates the current staff for this assignment.
Definition Others.cpp:600
Evpu vertEvpuOff
Vertical Evpu offset from the default position (xml node is <vertOff>)
Definition Others.h:1392
bool calcIsAssignedInRequestedPart() const
Calculates if this assignment is assigned in the current part or score, based on the requested part I...
Definition Others.cpp:563
bool voice2
Definition Others.h:1395
MusxInstance< ShapeExpressionDef > getShapeExpression() const
Gets the assigned shape expression.
Definition Others.cpp:453
bool calcIsPseudoTie(utils::PseudoTieMode mode, const EntryInfoPtr &forStartEntry) const
Returns true if this shape expression is likely acting as a pseudo tie for the specified mode.
Definition Others.cpp:775
Edu eduPosition
Horizontal Edu position in staff edu (xml node is <horzEduOff>)
Definition Others.h:1391
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:1488
Measure number data that can differ in score or part.
Definition Others.h:1528
bool showOnStart
"Show On Start of Staff System" (xml node is <startOfLine>)
Definition Others.h:1551
Evpu multipleXdisp
Horizontal offset for mid-system numbers.
Definition Others.h:1540
bool showOnEvery
"Show on Every" activates mid-system numbers. (xml node is <multipleOf>)
Definition Others.h:1552
bool useMultipleEncl
Use enclosure for mid-system settings.
Definition Others.h:1557
bool showOnBottom
Show measure numbers on the bottom staff.
Definition Others.h:1559
bool useStartEncl
Use enclosure for start-of-system settings.
Definition Others.h:1556
std::shared_ptr< Enclosure > startEnclosure
Enclosure settings for numbers at start of system.
Definition Others.h:1535
std::shared_ptr< FontInfo > startFont
The font used for numbers at start of system.
Definition Others.h:1532
AlignJustify multipleJustify
Justification for mid-system numbers.
Definition Others.h:1563
static const xml::XmlElementArray< ScorePartData > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::shared_ptr< FontInfo > mmRestFont
The font used for multi-measure rest ranges.
Definition Others.h:1534
AlignJustify startAlign
Alignment of numbers at the start of system.
Definition Others.h:1548
bool showOnTop
Show measure numbers on the top staff.
Definition Others.h:1558
int incidence
"Show on Every" value.
Definition Others.h:1547
Evpu startYdisp
Vertical offset for numbers at start of system.
Definition Others.h:1539
bool showMmRange
"Show Measure Ranges on Multimeasure Rests" (xml node is <mmRestRange>)
Definition Others.h:1554
bool excludeOthers
Exclude other staves.
Definition Others.h:1560
int startWith
"Beginning with" value. (This value is 0-based. The Finale UI adds 1 for user display....
Definition Others.h:1546
AlignJustify mmRestJustify
Justification for multi-measure rest ranges.
Definition Others.h:1564
AlignJustify startJustify
Justification for numbers at the start of system.
Definition Others.h:1562
char32_t rightMmBracketChar
UTF-32 code for the right bracket of multi-measure rest ranges.
Definition Others.h:1545
bool hideFirstMeasure
"Hide First Measure Number in Region." (xml node is <exceptFirstMeas>)
Definition Others.h:1553
std::shared_ptr< FontInfo > multipleFont
The font used for mid-system numbers.
Definition Others.h:1533
AlignJustify mmRestAlign
Alignment for multi-measure ranges.
Definition Others.h:1550
Evpu multipleYdisp
Vertical offset for mid-system numbers.
Definition Others.h:1541
bool showOnMmRest
"Show on Multimeasure Rests" (xml node is <mmRestRangeForce>)
Definition Others.h:1555
AlignJustify multipleAlign
Alignment for mid-system numbers.
Definition Others.h:1549
Evpu mmRestXdisp
Horizontal offset for multi-measure rest ranges.
Definition Others.h:1542
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:1566
char32_t leftMmBracketChar
UTF-32 code for the left bracket of multi-measure rest ranges.
Definition Others.h:1544
std::shared_ptr< Enclosure > multipleEnclosure
Enclosure settings for mid-system numbers.
Definition Others.h:1536
Evpu startXdisp
Horizontal offset for numbers at start of system.
Definition Others.h:1538
Evpu mmRestYdisp
Vertical offset for multi-measure rest ranges.
Definition Others.h:1543
bool breakMmRest
Mid-system numbers break multimeasure rests.
Definition Others.h:1561
Represents the Measure Number Region with detailed font and enclosure settings for score and part dat...
Definition Others.h:1510
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:1656
bool smpteFrames
SMPTE frames (when showing real time measure numbers). This option supercedes timePrecision.
Definition Others.h:1607
std::shared_ptr< ScorePartData > scoreData
Score-wide measure number data.
Definition Others.h:1591
bool hidePage
Indicates if numbers are hidden in Page View.
Definition Others.h:1612
static const xml::XmlElementArray< MeasureNumberRegion > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool hideScroll
Indicates if numbers are hidden in Scroll View and Studio View.
Definition Others.h:1611
std::string prefix
Text prefix for measure numbers (encoded UTF-8).
Definition Others.h:1599
MeasureNumberRegion(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1513
int base
The base used for measure number calculations. (Frequently 10 for numeric or 26 for alpha)
Definition Others.h:1597
bool doubleUp
Indicates "a, b, c...aa, bb, cc" number style: the symbols are repeated when they exceed the base.
Definition Others.h:1604
int region
The region ID. This 1-based value is set by Finale and never changes, whereas the Cmper may change wh...
Definition Others.h:1609
TimePrecision timePrecision
Precision for real-time sequences.
Definition Others.h:1610
std::optional< int > calcDisplayNumberFor(MeasCmper measureId) const
Returns the visible number for a measure id with respect to the region.
Definition Others.cpp:923
bool calcIncludesMeasure(MeasCmper measureId) const
Calculates whether the input measure is covered by this measure number region.
Definition Others.h:1616
std::optional< MeasCmper > calcFirstDisplayedMeasureId() const
Returns the MeasCmper of the first displayed measure number in this region.
Definition Others.cpp:951
TimePrecision
Precision for time display.
Definition Others.h:1519
std::optional< MeasCmper > calcLastDisplayedMeasureId() const
Returns the MeasCmper of the last displayed measure number in this region.
Definition Others.cpp:965
bool noZero
Indicates the base has no zero value: true for alpha sequences and false for numeric sequences.
Definition Others.h:1603
std::optional< int > calcFirstDisplayNumber() const
Returns the first visible number in the region. This function takes into account if the first measure...
Definition Others.cpp:979
char32_t startChar
UTF-32 code for the first character in the sequence. (Frequently '0', 'a', or 'A')
Definition Others.h:1596
MeasCmper startMeas
Starting measure number for the region.
Definition Others.h:1594
std::optional< int > calcLastDisplayNumber() const
Returns the last visible number in the region. This function takes into account if the last measure i...
Definition Others.cpp:987
bool time
Display real time sequences rather than numbers or letters.
Definition Others.h:1605
std::string suffix
Text suffix for measure numbers (encoded UTF-8).
Definition Others.h:1600
MeasCmper endMeas
Ending measure number for the region (non-inclusive).
Definition Others.h:1595
int numberOffset
This value is 1 less than the "Starting Number" field in the Finale UI. (xml node is <offset>)
Definition Others.h:1598
int getStartNumber() const
Returns the starting display measure number for this region. The value is irrespective of whether the...
Definition Others.h:1624
bool countFromOne
Start counting from 1 rather than 0, e.g., "1, 2, 3, 4" numbering style (in conjuction with base 10)
Definition Others.h:1602
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1676
std::optional< std::string > calcDisplayNumberTextFor(MeasCmper measureId) const
Returns the visible text for a measure id with respect to the region.
Definition Others.cpp:942
std::shared_ptr< ScorePartData > partData
Part-specific measure number data.
Definition Others.h:1592
bool includeHours
Display hours (when showing real time measure numbers)
Definition Others.h:1606
bool useScoreInfoForPart
Use score-wide settings for parts.
Definition Others.h:1608
Represents the attributes of a measure.
Definition Others.h:1155
std::optional< std::string > calcDisplayNumberText() const
Calculates the visible measure number text, based on the first MeasureNumberRegion that contains it.
Definition Others.cpp:295
MusxInstance< KeySignature > createKeySignature(const std::optional< StaffCmper > &forStaff=std::nullopt) const
Creates and returns a shared pointer to an instance of the KeySignature for this measure and staff.
Definition Others.cpp:306
bool hasTextBlock
Indicates if the measure has a measure-assigned text block. See details::MeasureTextAssign.
Definition Others.h:1233
std::shared_ptr< KeySignature > globalKeySig
the global key signature on this measure. Guaranteed to be non-null. (xml node is <keySig>)
Definition Others.h:1206
Evpu width
"Ideal" measure width in Evpu. Page layout determines actual width.
Definition Others.h:1205
PositioningType
Positioning (music spacing) type for the measure.
Definition Others.h:1164
@ BeatChart
Legacy option "Use a Beat Positioning Chart" (xml node is <beatchart>)
@ TimeSignature
Legacy option "Use the Time Signature" (xml node is <timesig>)
@ TimeSigPlusPositioning
"According to the Time Signature" (xml node is <timesigPlusPos>)
@ Manual
"Manually (By Dragging)" the default.
@ BeatChartPlusPositioning
"Using Beat-Chart Spacing" (xml node is <beatchartPlusPos>)
Cmper beats
Number of beats in the measure or the Cmper to a timesigUpper composite numerator list.
Definition Others.h:1207
bool useDisplayTimesig
Indicates whether to use the display time signature.
Definition Others.h:1241
std::optional< Duration > calcDefaultPickupRestValue() const
Returns the default rest value used for empty staves in a pickup, if any.
Definition Others.cpp:379
MusxInstance< MeasureNumberRegion > findMeasureNumberRegion() const
Finds the measure number region containing this measure.
Definition Others.cpp:261
Evpu backSpaceExtra
Extra space at end of bar.
Definition Others.h:1214
bool breakMmRest
"Break a Multimeasure Rests" (xml node is <breakRest>)
Definition Others.h:1230
bool abbrvTime
Definition Others.h:1239
bool hasSmartShape
Indicates if the measure has a smart shape.
Definition Others.h:1217
bool groupBarlineOverride
Override the barline specified by a details::StaffGroup (if any)
Definition Others.h:1218
std::optional< int > calcDisplayNumber() const
Calculates the visible number of the measure, based on the first MeasureNumberRegion that contains it...
Definition Others.cpp:284
bool pageBreak
If true, begin new page here. (Behavior is weird if the measure is not the first of its system....
Definition Others.h:1246
bool hasEnding
Indicates the presence of a repeat ending. (xml node is <barEnding>)
Definition Others.h:1237
MusxInstance< TimeSignature > createTimeSignature(const std::optional< StaffCmper > &forStaff=std::nullopt) const
Create a shared pointer to an instance of the TimeSignature for this measure and staff.
Definition Others.cpp:329
bool compositeNumerator
Indicates a composite numerator for the time signature. (xml node is <altNumTsig>)
Definition Others.h:1222
Cmper divBeat
Divisions per beat (Edu) or the Cmper to a timesigLower composite denominator list.
Definition Others.h:1208
util::Fraction calcMinLegacyPickupSpacer() const
Calculates the legacy pickup spacer in any staff, in global Edu values.
Definition Others.cpp:393
bool showFullNames
"Show Full Staff & Group Names"
Definition Others.h:1219
bool compositeDispNumerator
Indicates a composite numerator for the display time signature. (xml node is <displayAltNumTsig>)
Definition Others.h:1244
bool evenlyAcrossMeasure
"Position Evenly Across Measure" (xml node is <indivPosDef>)
Definition Others.h:1226
BarlineType barlineType
Barline type. (xml node is <barline>)
Definition Others.h:1234
Cmper customBarShape
Cmper of Shape Designer ShapeDef for custom right barline.
Definition Others.h:1211
ShowKeySigMode
How and whether to show a Key Signature in this measure.
Definition Others.h:1190
@ IfNeeded
Show if needed (the default)
@ Always
Always show (xml value is "deltaKey")
@ Never
Never show (xml value is "ignoreKey")
BarlineType
Barline type for left and right barlines.
Definition Others.h:1175
@ Tick
Right barlines only: tick barline (xml value is "partial")
@ None
No barline. (This is the default value for the enum.)
@ Custom
Custom barline (created with Shape Designer)
@ OptionsDefault
Left barlines only: use value from options::BarlineOptions (xml values is "default")
@ Dashed
Dashed barline (xml value is "dash")
Cmper dispDivbeat
Displayed divisions per beat (Edu) or the Cmper to a timesigLower composite denominator list.
Definition Others.h:1210
Evpu frontSpaceExtra
Extra space at front of bar.
Definition Others.h:1213
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1329
bool compositeDenominator
Indicates a composite denominator for the time signature. (xml node is <altDenTsig>)
Definition Others.h:1223
ShowKeySigMode showKey
Show mode for key signatures.
Definition Others.h:1224
Cmper customLeftBarShape
Cmper of Shape Designer ShapeDef for custom left barline.
Definition Others.h:1212
ShowTimeSigMode
How and whether to show a Time Signature in this measure.
Definition Others.h:1199
bool calcShouldShowFullNames() const
Calculates if a measure should show full names vs. abbreviated names.
Definition Others.h:1249
bool hasOssia
Indicates if the measure has an ossia assigned. (xml node is <arbitMusic>)
Definition Others.h:1232
bool hasExpression
Indicates if the measure has an expression assigned. See MeasureExprAssign. (xml node is <hasExpr>)
Definition Others.h:1229
Cmper dispBeats
Displayed beats in the measure or the Cmper to a timesigUpper composite numerator list.
Definition Others.h:1209
bool hasMeasNumbIndivPos
Has individual measure numbering positioning. (xml node is <mnSepPlace>)
Definition Others.h:1220
static void checkMeasureCmperSequence(const DocumentPtr &document)
Checks that score measure cmpers are sequential, starting with 1.
Definition Others.cpp:249
PositioningType positioningMode
Positioning type for the measure. (xml node is <posMode>)
Definition Others.h:1227
bool forwardRepeatBar
Indicates a forward repeat bar on this measure. (xml node is <forRepBar>)
Definition Others.h:1235
bool hasTextRepeat
Indicates the presence of one or more text repeat assigments. (xml node is <txtRepeats>)
Definition Others.h:1238
bool compositeDispDenominator
Indicates a composite denominator for the display time signature. (xml node is <displayAltDenTsig>)
Definition Others.h:1245
static const xml::XmlElementArray< Measure > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool noMeasNum
Inverse of "Include in Measure Numbering".
Definition Others.h:1231
BarlineType leftBarlineType
Left barline type. (xml node is <leftBarline>)
Definition Others.h:1243
util::Fraction calcDuration(const std::optional< StaffCmper > &forStaff=std::nullopt) const
Calculates the duration of the measure according to the time signature.
Definition Others.cpp:423
ShowTimeSigMode showTime
Show mode for time signatures.
Definition Others.h:1225
bool allowSplitPoints
"Allow Horizontal Split Points" See SplitMeasure. (xml node is <posSplit>)
Definition Others.h:1221
Measure(const DocumentWeakPtr &document, Cmper measureId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1158
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:1321
bool hasChord
Indicates the presence of one or more chords.
Definition Others.h:1242
bool hideCaution
"Hide Cautionary Clefs, Key, and Time Signature"
Definition Others.h:1216
bool breakWordExt
Barline ends word extensions on lyrics.
Definition Others.h:1215
bool backwardsRepeatBar
Indicates a backwards repeat bar on this measure. (xml node is <bacRepBar>)
Definition Others.h:1236
MusxInstance< TimeSignature > createDisplayTimeSignature(const std::optional< StaffCmper > &forStaff=std::nullopt) const
Create a shared pointer to an instance of the display TimeSignature for this measure and staff.
Definition Others.cpp:345
util::Fraction calcTimeStretch(StaffCmper forStaff) const
Calculates the time stretch. This is the value by which independent time edus are multiplied to get g...
Definition Others.h:1313
bool beginNewSystem
"Begin a New Staff System" (xml node is <lineBreak>)
Definition Others.h:1228
Represents a group ID for a multi-staff setup.
Definition Others.h:1738
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1746
MultiStaffGroupId(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1741
static const xml::XmlElementArray< MultiStaffGroupId > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Cmper staffGroupId
Cmper of details::StaffGroup that has the instrument's full and abbreviated names.
Definition Others.h:1744
Represents a group of instruments spanning multiple staves.
Definition Others.h:1756
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:1788
MusxInstance< Staff > getStaffInstanceAtIndex(size_t x) const
Returns the staff instance (without any staff styles applied) at the index position or null if out of...
Definition Others.cpp:1008
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1798
std::vector< StaffCmper > staffNums
Vector of Cmper values representing up to 3 staff numbers.
Definition Others.h:1762
MusxInstance< details::StaffGroup > getStaffGroup(Cmper forPartId) const
Gets the group associated with this multistaff instrument, or nullptr if not found.
Definition Others.cpp:1030
std::optional< size_t > getIndexOf(StaffCmper staffId) const
Returns the index of the input staffId or std::nullopt if not found.
Definition Others.h:1772
static const xml::XmlElementArray< MultiStaffInstrumentGroup > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
MultiStaffInstrumentGroup(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1759
static void calcAllMultiStaffGroupIds(const DocumentPtr &document)
Used by the factory to calculate all multistaff ids and visual ids for instances of Staff.
Definition Others.cpp:1046
MusxInstance< Staff > getFirstStaffInstance() const
Returns the first staff instance without any staff styles applied (with integrity check)
Definition Others.cpp:1019
Represents the attributes of a multimeasure rest in the page layout.
Definition Others.h:1688
int symbolThreshold
If the number of rests is less than this value, symbols are used when useSymbols is true....
Definition Others.h:1700
static const xml::XmlElementArray< MultimeasureRest > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu numVertAdj
Vertical number adjustment, sign-revered from Finale UI. (xml node is <numdec>)
Definition Others.h:1696
Cmper shapeDef
Cmper of Shape Designer ShapeDef that specifies the H-bar.
Definition Others.h:1697
bool useSymbols
Use symbols instead of an H-bar, based on symbolThreshold. (xml node is <useCharRestStyle>)
Definition Others.h:1705
int calcNumberOfMeasures() const
Calculates the number of measures spanned by this multimeasure rest.
Definition Others.h:1712
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:1720
MeasCmper nextMeas
Next measure after the multimeasure west.
Definition Others.h:1695
MultimeasureRest(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper startMeasure)
Constructor function.
Definition Others.h:1691
MeasCmper getStartMeasure() const
Get the start measure of this multimeasure rest.
Definition Others.h:1709
bool noHorizontalStretch
Inverse of "Stretch Horizontally" option.
Definition Others.h:1706
bool calcUsesSymbols() const
Calculates whether rest symbols are used instead of the multimeasure rest shape.
Definition Others.cpp:999
Evpu measWidth
Width of the multemeasure rest "measure" in Evpu. (xml node is <meaSpace>)
Definition Others.h:1694
Evpu shapeStartAdjust
Start adjustment for the H-bar shape in Evpu. (xml node is <startAdjust>)
Definition Others.h:1703
Evpu shapeEndAdjust
End adjustment for the shape in Evpu. (xml node is <endAdjust>)
Definition Others.h:1704
Evpu symbolSpacing
Spacing between symbols in Evpu. (xml node is <spacing>)
Definition Others.h:1701
int numStart
Definition Others.h:1698
Evpu numHorzAdj
Horizontal number adjustment in Evpu. (xml node is <numAdjX>)
Definition Others.h:1702
bool calcIsNumberVisible() const
Calculates if the number on this multimeasure rest is visible.
Definition Others.h:1718
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1728
Overrides abbreviated name positioning for Staff.
Definition Others.h:1809
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1813
Overrides full name positioning for Staff.
Definition Others.h:1837
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1841
Overrides abbreviated name positioning for StaffStyle.
Definition Others.h:1823
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1827
Overrides full name positioning for StaffStyle.
Definition Others.h:1851
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1855
Contains horizontal and vertical offsets, alignment, and expansion settings for name positioning.
Definition CommonClasses.h:935
NamePositioning(const DocumentWeakPtr &document, Cmper partId=SCORE_PARTID, ShareMode shareMode=ShareMode::All, Cmper cmper=0)
Constructs an NamePositioning object.
Definition CommonClasses.h:945
Represents a page text assignment with positioning and page range properties.
Definition Others.h:1929
PageCmper startPage
Definition Others.h:1954
Evpu yDisp
The vertical displacement from the default position. (xml tag is <ydisp>)
Definition Others.h:1953
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2030
PageTextAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:1946
static MusxInstanceList< others::PageTextAssign > getArrayForPageId(const DocumentPtr &document, Cmper partId, PageCmper pageId)
Returns all the page text assignments for a given page number in a given part. This allows the caller...
Definition Others.cpp:1213
bool indRpPos
Individual right page positioning indicator. (xml tag is <indRpPos>)
Definition Others.h:1968
bool hPosPageEdge
Definition Others.h:1964
bool hidden
Indicates if the page text appears only on screen. (xml tag is <postIt>)
Definition Others.h:1962
std::optional< PageCmper > calcEndPageNumber(Cmper forPartId) const
Return the ending page number, taking into account leading blank pages in all parts This calculation ...
Definition Others.cpp:1240
static const xml::XmlElementArray< PageTextAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
PageCmper endPage
Definition Others.h:1956
Evpu rightPgXDisp
Horizontal displacement for right pages (if indRpPos is true). (xml tag is <rightPgXdisp>)
Definition Others.h:1969
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:2004
PageAssignType oddEven
Determines if a multipage assignment appears on all, even (left), or odd (right) pages.
Definition Others.h:1959
util::EnigmaParsingContext getRawTextCtx(Cmper forPartId, std::optional< Cmper > forPageId=std::nullopt) const
Gets the raw text for parsing this assignment, or nullptr if none.
Definition Others.cpp:1193
MusxInstance< TextBlock > getTextBlock() const
Gets the TextBlock for this assignment, or nullptr if none.
Definition Others.cpp:1188
PageAssignType
Which pages a multipage assignment appears on.
Definition Others.h:1936
@ AllPages
default (may not appear in xml)
Evpu rightPgYDisp
Vertical displacement for right pages (if indRpPos is true). (xml tag is <rightPgYdisp>)
Definition Others.h:1970
bool isMultiAssignedThruLastPage() const
Returns true if this is a multi-page assignment that is assigned to through last page,...
Definition Others.h:2001
HorizontalAlignment hPosLp
Horizontal alignment on left or all pages (depending on indRpPos). (xml tag is <hposLp>)
Definition Others.h:1960
static MusxInstance< others::PageTextAssign > getForPageId(const DocumentPtr &document, Cmper partId, PageCmper pageId, Inci inci)
Returns a specific page text assignment for a given page number in a given part. This allows the call...
Definition Others.cpp:1204
Evpu xDisp
The horizontal displacement from the default position. (xml tag is <xdisp>)
Definition Others.h:1952
std::optional< PageCmper > calcStartPageNumber(Cmper forPartId) const
Return the starting page number, taking into account leading blank pages in all parts....
Definition Others.cpp:1222
VerticalAlignment vPos
Vertical alignment. (xml tag is <vpos>)
Definition Others.h:1963
HorizontalAlignment hPosRp
Horizontal alignment on right pages (if indRpPos is true). (xml tag is <hposRp>)
Definition Others.h:1961
bool isMultiPage() const
Returns true if this is a multi-page assignment.
Definition Others.h:1997
bool vPosPageEdge
Definition Others.h:1966
Cmper block
The Cmper for the assigned TextBlock. (xml tag is <block>)
Definition Others.h:1951
Represents the attributes of a page in the page layout.
Definition Others.h:1864
std::optional< SystemCmper > lastSystemId
Computed by the Resolver function calcSystemInfo. This value is not in the xml.
Definition Others.h:1880
util::Fraction calcPageScaling() const
Calculate the page scaling.
Definition Others.h:1896
Evpu margTop
Top margin in Evpu. (Sign reversed in Finale UI.)
Definition Others.h:1875
bool isBlank() const
is this a blank page
Definition Others.h:1885
Evpu width
Page width in Evpu.
Definition Others.h:1871
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1902
std::optional< MeasCmper > firstMeasureId
Computed by the Resolver function calcSystemInfo. This value is not in the xml.
Definition Others.h:1881
static const xml::XmlElementArray< Page > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool isLayoutCalculated() const
Returns whether this page has a calculated layout.
Definition Others.h:1890
int percent
Percent value (scaling factor).
Definition Others.h:1872
std::optional< MeasCmper > lastMeasureId
Computed by the Resolver function calcSystemInfo. This value is not in the xml.
Definition Others.h:1882
Evpu height
Page height in Evpu.
Definition Others.h:1870
static void calcSystemInfo(const DocumentPtr &document)
Resolver function used by factory to compute system and measure information for all pages.
Definition Others.cpp:1074
Evpu margLeft
Left margin in Evpu.
Definition Others.h:1876
Evpu margBottom
Bottom margin in Evpu.
Definition Others.h:1877
Evpu margRight
Right margin in Evpu. (Sign reversed in Finale UI.)
Definition Others.h:1878
SystemCmper firstSystemId
First system on the page (-1 if page is blank). See StaffSystem. (xml node is <firstSystem>)
Definition Others.h:1873
bool holdMargins
"Hold Margins" (xml node is <scaleContentOnly>)
Definition Others.h:1874
Page(const DocumentWeakPtr &document, PageCmper pageId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1867
Represents the attributes of a Finale "partDef".
Definition Others.h:2042
Cmper nameId
Cmper of the part name TextBlock. (xml tag is <nameID>)
Definition Others.h:2049
int smartMusicInst
SmartMusic instrument ID (-1 if not used).
Definition Others.h:2058
std::optional< PageCmper > calcPageNumberFromAssignmentId(PageCmper pageAssignmentId) const
Calculates a page number in this part from a page assignment ID. (See PageTextAssign....
Definition Others.cpp:1328
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2100
int copies
Number of copies to print.
Definition Others.h:2051
bool unlinkInsts
Finale flag with currently unknown semantics. (xml node is <unlinkInsts>)
Definition Others.h:2057
Cmper calcScrollViewCmper() const
Returns the StaffUsed cmper for Scroll View for this part. See Document::calcScrollViewCmper.
Definition Others.cpp:1323
int numberOfLeadingBlankPages
The number of leading blank pages in the part. This is not in the xml but calculated in factory::Docu...
Definition Others.h:2062
static const xml::XmlElementArray< PartDefinition > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool applyFormat
Meaning uncertain. May have to do with page format for parts and whether it has been applied.
Definition Others.h:2054
Cmper defaultNameStaff
If non-zero, this points to the Staff that has the default name (if unspecified by nameId....
Definition Others.h:2059
int partOrder
Value that determines the order of listed parts in Finale's UI.
Definition Others.h:2050
static MusxInstanceList< PartDefinition > getInUserOrder(const DocumentPtr &document)
Return the linked parts sorted in UI order by partOrder.
Definition Others.cpp:1314
PageCmper calcAssignmentIdFromPageNumber(PageCmper pageId) const
Calculates a page assignment ID from a page number in the part.
Definition Others.cpp:1345
bool extractPart
Indicates if the part should be extracted.
Definition Others.h:2053
PartDefinition(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2045
Cmper defaultNameGroup
If non-zero, this points to the details::StaffGroup that has the default name (if unspecified by name...
Definition Others.h:2060
int numberOfPages
The total number of pages in the part. This is not in the xml but calculated in factory::DocumentFact...
Definition Others.h:2063
util::EnigmaParsingContext getNameRawTextCtx() const
Get the raw text context for the part name if any.
Definition Others.cpp:1260
static MusxInstance< PartDefinition > getScore(const DocumentPtr &document)
Return the instance for the score.
Definition Others.cpp:1303
std::string getName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Get the part name if any.
Definition Others.cpp:1271
bool useAsSmpInst
Indicates if the part is used as a SmartMusic instrument.
Definition Others.h:2056
bool isLayoutCalculated() const
Returns whether this part has a calculated page layout.
Definition Others.cpp:1295
bool isScore() const
Return true if this part corresponds to the score.
Definition Others.h:2076
bool needsRecalc
Indicates if the part needs update layout.
Definition Others.h:2055
bool printPart
Indicates the part should be printed.
Definition Others.h:2052
Represents global values that can vary by part.
Definition Others.h:2112
Cmper scrollViewIUlist
If this value is non-zero, it is the iuList Cmper of the current Staff List in Scroll View.
Definition Others.h:2120
bool showTransposed
If true, "Display Concert Pitch" is unchecked for the part.
Definition Others.h:2119
Cmper specialPartExtractionIUList
If non-zero, Special Part Extraction is enabled and this is the Cmper for its legacy StaffUsed array.
Definition Others.h:2138
static const xml::XmlElementArray< PartGlobals > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
PartGlobals(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2115
Cmper calcScrollViewCmper() const
Return the StaffUsed cmper for Scroll View for this part.
Definition Others.cpp:1360
Cmper studioViewIUlist
The iuList Cmper for Studio View.
Definition Others.h:2121
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2146
Defines voicing options for linked parts, either by selection rules or by assigning a layer.
Definition Others.h:2161
SingleLayerVoiceType
Choices for how notes are selected when the staff contains only one layer.
Definition Others.h:2180
@ SelectedNotes
Use flags select1st, select2nd, etc., to select notes. (xml value is "selected")
@ BottomNote
Select the bottom note. (xml value is "botNote")
@ AllNotes
Select all notes. (This is the default value and may never appear in the xml.)
PartVoicing(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper staff)
Constructor function.
Definition Others.h:2168
bool select1st
Select the first note from top or bottom. (See selectFromBottom.)
Definition Others.h:2190
static const xml::XmlElementArray< PartVoicing > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool enabled
Indicates that this voicing is enabled.
Definition Others.h:2187
VoicingType voicingType
Determines how notes are selected from the staff.
Definition Others.h:2188
LayerIndex multiLayer
The 0-based LayerIndex of the layer to include when the staff contains multiple layers and voicingTyp...
Definition Others.h:2199
bool selectFromBottom
Definition Others.h:2195
VoicingType
Choices for how notes are selected from the staff.
Definition Others.h:2173
@ UseSingleLayer
Display all notes from the layer specified by singleLayer. (This is the default value and may never a...
@ UseMultipleLayers
Display selected notes from one or more layer(s).
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2212
bool select5th
Select the fifth note from top or bottom. (See selectFromBottom.)
Definition Others.h:2194
SingleLayerVoiceType singleLayerVoiceType
Determines how notes are selected when the staff contains only one layer. (xml node is <singleVoiceTy...
Definition Others.h:2189
bool selectSingleNote
If true, always include any passages containing only a single note.
Definition Others.h:2197
bool calcShowsLayer(LayerIndex layerIndex, bool frameIsMultilayerInScore) const
Returns if this part voicing includes the specified layer in a given frame context.
Definition Others.cpp:1372
bool calcShowsNote(const NoteInfoPtr &noteInfoPtr) const
Returns if this part voicing includes the specified note.
Definition Others.cpp:1383
bool select3rd
Select the third note from top or bottom. (See selectFromBottom.)
Definition Others.h:2192
bool select2nd
Select the second note from top or bottom. (See selectFromBottom.)
Definition Others.h:2191
LayerIndex singleLayer
The 0-based LayerIndex of the layer to uses when voicingType is UseSingleLayer.
Definition Others.h:2198
bool select4th
Select the fourth note from top or bottom. (See selectFromBottom.)
Definition Others.h:2193
Represents percussion notehead and staff position info for a given percussion note type.
Definition Others.h:2225
char32_t wholeNotehead
Codepoint for whole notehead (from percussion notehead font. See options::FontOptions::FontType::Perc...
Definition Others.h:2239
char32_t closedNotehead
Codepoint for closed notehead (from percussion notehead font. See options::FontOptions::FontType::Per...
Definition Others.h:2237
const percussion::PercussionNoteType & getNoteType() const
Gets a reference to the PercussionNoteType record for this note id.
Definition Others.cpp:1439
PercussionNoteInfo(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:2228
int staffPosition
Definition Others.h:2232
PercussionNoteTypeId percNoteType
The percussion note type ID. Compare this with the value in details::PercussionNoteCode.
Definition Others.h:2231
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2259
static const xml::XmlElementArray< PercussionNoteInfo > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
char32_t dwholeNotehead
Codepoint for double whole notehead (from percussion notehead font. See options::FontOptions::FontTyp...
Definition Others.h:2240
char32_t halfNotehead
Codepoint for half notehead (from percussion notehead font. See options::FontOptions::FontType::Percu...
Definition Others.h:2238
PercussionNoteTypeId getBaseNoteTypeId() const
Gets the base PercussionNoteTypeId.
Definition Others.h:2247
int calcStaffReferencePosition() const
Calculates the fixed staff position for this percussion note relative to a staff's reference line.
Definition Others.h:2243
unsigned getNoteTypeOrderId() const
Gets the orderId.
Definition Others.h:2252
Per-instance positioning overrides for RepeatBack.
Definition Others.h:2509
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2513
Represents a repeat-backward marker with positioning and behavior properties.
Definition Others.h:2299
bool resetOnAction
"Reset on Repeat Action" (xml tag is <clrOnChange>)
Definition Others.h:2315
Evpu rightVPos
The vertical position of the upper right bracket, relative to the default. (xml tag is <line2>)
Definition Others.h:2320
RepeatTriggerType trigger
The condition that triggers the jumpAction.
Definition Others.h:2317
static const xml::XmlElementArray< RepeatBack > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int passNumber
Definition Others.h:2306
Evpu leftVPos
The vertical position of the lower left bracket, relative to the default. (xml tag is <line1>)
Definition Others.h:2311
bool hidden
Inverse of "Show" checkbox.
Definition Others.h:2314
Evpu leftHPos
The horizontal position of the left bracket, relative to the default. (xml tag is <pos1>)
Definition Others.h:2310
Evpu rightHPos
The horizontal position of the upper right bracket, relative to the default. (xml tag is <pos2>)
Definition Others.h:2319
RepeatActionType jumpAction
The jump action for this repeat ending. The automatic jump is to the next ending. (xml tag is <action...
Definition Others.h:2316
Cmper staffList
If non-zero, specifies a staff list for which staves to show the ending.
Definition Others.h:2318
std::optional< MeasCmper > calcTargetMeasure() const
Calculates the target measure for this repeat-back jump action, if any.
Definition Others.cpp:1477
bool topStaffOnly
"Show On: Top Staff Only"
Definition Others.h:2313
RepeatStaffListSet createStaffListSet() const
Create a StaffListSet for the given instance. This can be used to interrogate whether a staff appears...
Definition Others.cpp:1472
int targetValue
Absolute or relative measure number, depending on jumpAction. (xml tag is <target>)
Definition Others.h:2309
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2338
RepeatBack(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2302
bool individualPlacement
"Allow Individual Edits Per Staff" (xml tag is <indivPlac>)
Definition Others.h:2312
MusxInstance< RepeatIndividualPositioning > getIndividualPositioning(StaffCmper staffId) const
Returns the RepeatIndividualPositioning record for a given staff. Check individualPlacement to see if...
Definition Others.cpp:1467
Per-instance positioning overrides for the line positioning of RepeatEndingStart.
Definition Others.h:2525
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2529
Represents a repeat ending start marker in the document.
Definition Others.h:2351
Evpu leftVPos
The vertical position of the lower left bracket, relative to the default. (xml tag is <line1>)
Definition Others.h:2363
Evpu rightVPos
The vertical position of the upper right bracket, relative to the default. (xml tag is <line2>)
Definition Others.h:2375
RepeatTriggerType trigger
Definition Others.h:2368
std::string createEndingText() const
Taking into account all options, creates a string containing the text for this ending....
Definition Others.cpp:1605
Evpu leftHPos
The horizontal position of the lower left bracket, relative to the default. (xml tag is <pos1>)
Definition Others.h:2362
Evpu textVPos
The vertical position of the text relative to leftVPos. (xml tag is <textLine>)
Definition Others.h:2373
Evpu endLineVPos
The vertical offset of the final bracket, relative to rightVPos or 0 if the ending is open....
Definition Others.h:2372
Evpu rightHPos
The horizontal position of the upper right bracket, relative to the default. (xml tag is <pos2>)
Definition Others.h:2374
MusxInstance< RepeatIndividualPositioning > getIndividualPositioning(StaffCmper staffId) const
Returns the RepeatIndividualPositioning record for a given staff. Check individualPlacement to see if...
Definition Others.cpp:1595
static const xml::XmlElementArray< RepeatEndingStart > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool calcIsOpen() const
Calculates if the ending is open or closed, based on a number of factors.
Definition Others.cpp:1570
Evpu textHPos
The horizontal position of the text relative to leftHPos. (xml tag is <textPos>)
Definition Others.h:2361
int targetValue
Absolute or relative measure number, depending on jumpAction. (xml tag is <nextEnd>)
Definition Others.h:2360
bool jumpIfIgnoring
"Skip Ending if Ignoring Repeats" (xml tag is <jmpIgnore>)
Definition Others.h:2371
std::optional< MeasCmper > calcTargetMeasure() const
Calculates the target measure for the ending's jump action, if any.
Definition Others.cpp:1546
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:2412
bool hidden
Inverse of "Show" checkbox.
Definition Others.h:2366
bool topStaffOnly
"Show On: Top Staff Only"
Definition Others.h:2365
Cmper staffList
If non-zero, specifies a staff list for which staves to show the ending.
Definition Others.h:2359
MusxInstance< RepeatIndividualPositioning > getTextIndividualPositioning(StaffCmper staffId) const
Returns the RepeatIndividualPositioning record for the text a given staff. Check individualPlacement ...
Definition Others.cpp:1600
RepeatStaffListSet createStaffListSet() const
Create a StaffListSet for the given instance. This can be used to interrogate whether a staff appears...
Definition Others.cpp:1628
RepeatActionType jumpAction
The jump action for this repeat ending. The automatic jump is to the next ending. (xml tag is <action...
Definition Others.h:2367
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2421
int calcEndingLength() const
Calculates the number of measures in the ending based on jumpAction.
Definition Others.cpp:1510
bool individualPlacement
"Allow Individual Edits Per Staff" (xml tag is <indivPlac>)
Definition Others.h:2364
RepeatEndingStart(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2354
Per-instance positioning overrides for text positioning of RepeatEndingStart.
Definition Others.h:2541
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2545
Represents the text associated with a RepeatEndingStart.
Definition Others.h:2435
static const xml::XmlElementArray< RepeatEndingText > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::string text
The text.
Definition Others.h:2441
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2443
RepeatEndingText(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2438
Per-instance positioning overrides for repeat elements.
Definition Others.h:2476
Evpu x1add
Left/start X offset in Evpu.
Definition Others.h:2492
MeasCmper measureId
Measure for text repeats, otherwise zero. (xml tag is <id>)
Definition Others.h:2490
StaffCmper staffId
Staff for this individual positioning. (xml tag is <instno>)
Definition Others.h:2489
static const xml::XmlElementArray< RepeatIndividualPositioning > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool hidden
Overrides the value in the main record. (Ignored for RepeatEndingTextIndividualPositioning)
Definition Others.h:2491
Evpu y2add
Right/end Y offset in Evpu. (Always zero for RepeatEndingTextIndividualPositioning and TextRepeatIndi...
Definition Others.h:2495
Evpu y1add
Left/start Y offset in Evpu.
Definition Others.h:2493
RepeatIndividualPositioning(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructs a RepeatIndividualPositioning object.
Definition Others.h:2486
Evpu x2add
Right/end X offset in Evpu. (Always zero for RepeatEndingTextIndividualPositioning and TextRepeatIndi...
Definition Others.h:2494
Represents a list of repeat ending numbers for a RepeatEndingStart instance.
Definition Others.h:2456
static const xml::XmlElementArray< RepeatPassList > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2462
Stores the properties and behaviors of shape expressions.
Definition Others.h:2570
int auxData1
Auxiliary data for the expression. (xml node is "auxdata1")
Definition Others.h:2585
bool masterShape
Whether this expression references the master copy of the shape.
Definition Others.h:2589
PlaybackType playbackType
Playback behavior of the text expression.
Definition Others.h:2592
int playPass
"Play Only on Pass" value.
Definition Others.h:2586
Cmper categoryId
Identifier for the category of the text expression. (xml node is "categoryID")
Definition Others.h:2581
bool breakMmRest
Whether the text breaks multimeasure rests.
Definition Others.h:2587
AlignJustify horzExprJustification
Horizontal justification of the text expression.
Definition Others.h:2595
bool noPrint
Inverse of "Hidden" checkbox.
Definition Others.h:2590
int value
Value associated with the expression (e.g., velocity).
Definition Others.h:2583
std::string description
Description of the text expression. (xml node is "descStr")
Definition Others.h:2601
bool useCategoryFonts
Whether to use category fonts (may not be meaningful shape expressions).
Definition Others.h:2599
Cmper shapeDef
Identifier for the Shape Designer ShapeDef associated with this expression.
Definition Others.h:2580
bool useAuxData
Whether auxiliary data is used.
Definition Others.h:2588
static const xml::XmlElementArray< ShapeExpressionDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
HorizontalMeasExprAlign horzMeasExprAlign
Horizontal alignment of the expression.
Definition Others.h:2593
Evpu yAdjustEntry
Vertical adjustment for entry alignment.
Definition Others.h:2597
RehearsalMarkStyle rehearsalMarkStyle
Auto-sequencing style for rehearsal marks.
Definition Others.h:2582
bool useCategoryPos
Whether to use category position.
Definition Others.h:2600
VerticalMeasExprAlign vertMeasExprAlign
Vertical alignment of the expression.
Definition Others.h:2594
ShapeExpressionDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:2577
MusxInstance< ShapeDef > getShape() const
Get the shape for this shape expression.
Definition Others.cpp:1637
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2606
Evpu measXAdjust
Horizontal adjustment for measurement alignment.
Definition Others.h:2596
Cmper execShape
Executable shape Cmper for playback (ShapeDef)
Definition Others.h:2584
bool noHorzStretch
Inverse of "Allow Horizontal Stretching" checkbox.
Definition Others.h:2591
Evpu yAdjustBaseline
Vertical adjustment for baseline alignment.
Definition Others.h:2598
Defines the split point(s) where a measure may be divided between two systems. A measure can only spl...
Definition Others.h:2635
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2641
static const xml::XmlElementArray< SplitMeasure > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
This class specified the name of a staff list used by @ ref MarkingCategory.
Definition Others.h:2674
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2678
This class is used by MarkingCategory to define the staves for parts in a staff list.
Definition Others.h:2688
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2694
This class is used by MarkingCategory to define the staves for parts in a staff list.
Definition Others.h:2704
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2710
This class specified the name of a staff list used by RepeatEndingStart, RepeatBack,...
Definition Others.h:2732
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2736
This class is used by repeat classes to define the forced staves for parts in a staff list....
Definition Others.h:2763
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2769
This class is used by repeat classes to define the staves for parts in a staff list.
Definition Others.h:2746
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2752
This class is used by repeat classes to define the forced staves for the score in a staff list....
Definition Others.h:2796
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2802
This class is used by repeat classes to define the staves for the score in a staff list.
Definition Others.h:2779
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2785
Generic resolver for a family of staff lists.
Definition Others.h:2815
bool contains(StaffCmper staffId, const MusxInstanceList< StaffUsed > &systemStaves, bool isHidden=false) const noexcept
Returns true is the staff list includes a particular staff on a particular system.
Definition Others.cpp:1664
Defines a staff list. See subclasses for how it is used.
Definition Others.h:2652
static const xml::XmlElementArray< StaffList > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
FloatingValues
Defines special assignment values used for floating staff assignments.
Definition Others.h:2659
@ TopStaff
This value means the assignment is to the top staff of any system or part.
@ BottomStaff
This value means the assignment is to the bottom staff of any system or part.
Represents the attributes of a staff system in the page layout.
Definition Others.h:2838
bool hasStaffScaling
Indicates if any individual staff in the system has scaling applied.
Definition Others.h:2864
Evpu right
Right margin in Evpu. (Sign reversed in Finale UI.)
Definition Others.h:2859
util::Fraction calcSystemScaling() const
Calculate the system scaling.
Definition Others.h:2886
MeasCmper startMeas
Starting measure of the staff system. See Measure.
Definition Others.h:2846
bool scaleVert
"Resize Vertical Space"
Definition Others.h:2866
StaffSystem(const DocumentWeakPtr &document, Cmper staffSystemId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2841
util::Fraction calcEffectiveScaling() const
Calculates the effective scaling on this system, taking into account page scaling.
Definition Others.cpp:1773
Evpu left
Left margin in Evpu.
Definition Others.h:2858
Efix staffHeight
Staff height in Efix units. Note that this is different units than options::PageFormatOptions::PageFo...
Definition Others.h:2856
int calcNumMeasures() const
Calculates the number of measures on the system, encapsulating how endMeas works.
Definition Others.h:2880
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2919
util::Fraction calcStaffScaling(StaffCmper staffId) const
Calculate individual staff scaling for a given staff.
Definition Others.cpp:1782
bool holdMargins
"Hold Margins" (xml node is <scaleContentOnly>)
Definition Others.h:2867
double horzPercent
Definition Others.h:2853
bool placeEndSpaceBeforeBarline
Indicates that extra space is placed before the barline.
Definition Others.h:2865
Evpu distanceToPrev
Distance to the previous staff system in Evpu.
Definition Others.h:2868
std::pair< util::Fraction, util::Fraction > calcMinMaxStaffSizes() const
Calculates the maximum and minimum staff scaling values for this system by searching each staff for i...
Definition Others.cpp:1792
Evpu bottom
Definition Others.h:2860
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:2904
Evpu extraEndSystemSpace
Extra space at the end of the staff system in Evpu.
Definition Others.h:2870
Evpu top
Top margin in Evpu. (Sign reversed in Finale UI.)
Definition Others.h:2857
PageCmper pageId
The page this system is on. This values is not in the xml but is computed by the factory.
Definition Others.h:2872
bool noNames
Definition Others.h:2862
MeasCmper endMeas
Definition Others.h:2847
static const xml::XmlElementArray< StaffSystem > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
MeasCmper getLastMeasure() const
Encapsulates the weird Finale fact that endMeas is actually one past the end of the system.
Definition Others.h:2876
MusxInstance< others::Page > getPage() const
Gets the page this system is on, or nullptr if the page layout is unavailable.
Definition Others.cpp:1763
Evpu extraStartSystemSpace
Extra space at the start of the staff system in Evpu.
Definition Others.h:2869
int ssysPercent
Staff system scaling percentage (100 means no scaling).
Definition Others.h:2855
An array of StaffUsed defines a set of staves in a staff system or in Scroll View.
Definition Others.h:2933
std::shared_ptr< EnigmaMusicRange > range
The music range. (Late versions of Finale may always include the entire piece here....
Definition Others.h:2941
MusxInstance< Staff > getStaffInstance() const
Returns the Staff instance for this element, without any staff styles applied.
Definition Others.cpp:1908
StaffUsed(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:2936
Evpu distFromTop
Distance from the top of the system (negative is down)
Definition Others.h:2940
StaffCmper staffId
Staff cmper (xml node is <inst>)
Definition Others.h:2939
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2952
static const xml::XmlElementArray< StaffUsed > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
util::Fraction calcEffectiveScaling() const
Calculates the effective scaling on this instance, taking into accound system and page scaling.
Definition Others.cpp:1897
Locks a span of one or more measures so that they always appear in a StaffSystem together.
Definition Others.h:2966
MeasCmper endMeas
Definition Others.h:2972
static const xml::XmlElementArray< SystemLock > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
SystemLock(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2969
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2977
A single tempo change value entered with Finale's Tempo tool.
Definition Others.h:2997
int unit
Hardware ticks/sec. For Macs this is 1000.
Definition Others.h:3010
TempoChange(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:3000
int ratio
Definition Others.h:3005
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:3024
static const xml::XmlElementArray< TempoChange > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
double getAbsoluteTempo(NoteType noteType=NoteType::Quarter) const
Computes the absolute tempo represented by the TempoChange Instance.
Definition Others.cpp:1813
Edu eduPosition
The position within the measure. (xml node is <eldur>)
Definition Others.h:3009
bool isRelative
Definition Others.h:3011
Represents the attributes of a Finale "textBlock".
Definition Others.h:3036
TextType textType
Text tag indicating the type of text block. (xml tag is <textTag>)
Definition Others.h:3078
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Others.h:3092
bool noExpandSingleWord
Do not expand single word.
Definition Others.h:3072
bool roundCorners
Use rounded corners on frame.
Definition Others.h:3076
bool wordWrap
Wrap words (in frames)
Definition Others.h:3073
bool newPos36
Definition Others.h:3068
TextType
Enum for textTag values.
Definition Others.h:3045
@ Expression
textId is a Cmper for a texts::ExpressionText
@ Block
textId is a Cmper for a texts::BlockText
static std::string getText(const DocumentPtr &document, const Cmper textId, Cmper forPartId, bool trimTags=false, util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii)
return displayable text with Enigma tags removed
Definition Others.cpp:1868
Efix cornerRadius
Corner radius for rounded corners.
Definition Others.h:3077
TextJustify justify
Justification (left, center, right, full, force full)
Definition Others.h:3067
Cmper shapeId
If non-zero, the Cmper of the custom frame shape. (xml tag is <shapeID>)
Definition Others.h:3056
bool showShape
Show shape.
Definition Others.h:3071
util::EnigmaParsingContext getRawTextCtx(Cmper forPartId, std::optional< Cmper > forPageId=std::nullopt, util::EnigmaString::TextInsertCallback defaultInsertFunc=util::EnigmaString::defaultInsertsCallback) const
Gets the raw text block context (from the texts pool) based on textType.
Definition Others.cpp:1849
std::optional< Evpu > lineSpacingEvpu
"Line Spacing: Set To" absolute value. (See lineSpacingPercentage.)
Definition Others.h:3064
Evpu width
Width of standard frame. If zero, the width expands to fit the text.
Definition Others.h:3057
Evpu height
Definition Others.h:3058
Evpu xAdd
Horizontal offset from handle.
Definition Others.h:3065
Cmper textId
Cmper of the text block. (xml tag is <textID>)
Definition Others.h:3055
static const xml::XmlElementArray< TextBlock > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
TextBlock(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:3051
std::optional< int > lineSpacingPercentage
"Line Spacing: Automatic" percent value.
Definition Others.h:3063
Efix inset
Text inset from frame (all sides)
Definition Others.h:3074
Efix stdLineThickness
Thickness of standard frame line. (xml tag is <stdLine>)
Definition Others.h:3075
Evpu yAdd
Vertical offset from handle.
Definition Others.h:3066
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:3105
Stores the properties and behaviors of text expressions.
Definition Others.h:3115
Evpu yAdjustBaseline
Vertical adjustment for baseline alignment.
Definition Others.h:3148
RehearsalMarkStyle rehearsalMarkStyle
Auto-sequencing style for rehearsal marks.
Definition Others.h:3127
bool matchPlayback
Definition Others.h:3133
bool hideMeasureNum
"Hide Measure Numbers" (used on Rehearsal Marks)
Definition Others.h:3132
MusxInstance< Enclosure > getEnclosure() const
Gets the enclosure for this expression, or nullptr if none.
Definition Others.cpp:1887
Cmper categoryId
Identifier for the category of the text expression.
Definition Others.h:3126
PlaybackType playbackType
Playback behavior of the text expression.
Definition Others.h:3142
Evpu measXAdjust
Horizontal adjustment for measurement alignment.
Definition Others.h:3146
int playPass
"Play Only on Pass" value.
Definition Others.h:3131
int auxData1
Auxiliary data for the expression. (xml node is "auxdata1")
Definition Others.h:3130
AlignJustify horzExprJustification
Horizontal justification of the text expression.
Definition Others.h:3145
MusxInstance< TextBlock > getTextBlock() const
Gets the TextBlock for this expression, or nullptr if none.
Definition Others.cpp:1881
bool useCategoryFonts
Whether to use category fonts.
Definition Others.h:3149
static const xml::XmlElementArray< TextExpressionDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Cmper execShape
Executable shape Cmper for playback (ShapeDef)
Definition Others.h:3129
std::string description
Description of the text expression. (xml node is "descStr")
Definition Others.h:3151
TextExpressionDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:3122
bool hasEnclosure
Whether the text expression has an enclosure. (xml node is "newEnclosure")
Definition Others.h:3139
int value
Value associated with the expression (e.g., velocity).
Definition Others.h:3128
util::EnigmaParsingContext getRawTextCtx(Cmper forPartId, util::EnigmaString::TextInsertCallback defaultInsertFunc=util::EnigmaString::defaultInsertsCallback) const
Gets the raw text context for parsing this expression, or nullptr if none.
Definition Others.cpp:895
bool createdByHp
Whether the text block was created by Finale's smart playback system.
Definition Others.h:3141
bool useAuxData
Whether auxiliary data is used.
Definition Others.h:3138
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:3168
bool breakMmRest
Whether the text breaks multimeasure rests.
Definition Others.h:3140
VerticalMeasExprAlign vertMeasExprAlign
Vertical alignment of the expression.
Definition Others.h:3144
Evpu yAdjustEntry
Vertical adjustment for entry alignment.
Definition Others.h:3147
HorizontalMeasExprAlign horzMeasExprAlign
Horizontal alignment of the expression.
Definition Others.h:3143
bool useCategoryPos
Whether to use category position.
Definition Others.h:3150
Cmper textIdKey
Identifier for the TextBlock associated with this.
Definition Others.h:3125
The enclosure for a text expression (if it exists)
Definition Others.h:3180
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:3184
static const xml::XmlElementArray< TextExpressionEnclosure > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents a text repeat assignment with positioning and behavior properties.
Definition Others.h:3197
bool jumpOnMultiplePasses
If true, use TextRepeatDef::passList to get the passes and ignore passNumber. (xml tag is <multiActua...
Definition Others.h:3215
RepeatStaffListSet createStaffListSet() const
Create a StaffListSet for the given instance. This can be used to interrogate whether a staff appears...
Definition Others.cpp:1937
bool individualPlacement
"Allow Individual Edits Per Staff" (xml tag is <indivPlac>)
Definition Others.h:3211
Cmper textRepeatId
The Cmper of the assigned TextRepeatDef. (xml tag is <repnum>)
Definition Others.h:3209
Cmper staffList
If non-zero, specifies a staff list for which staves to show the ending.
Definition Others.h:3220
int targetValue
Measure number, TextRepeatDef ID, or offset, depending on jumpAction. (xml tag is <target>)
Definition Others.h:3208
TextRepeatAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:3200
std::optional< MeasCmper > calcTargetMeasure() const
Calculates the target measure for this text repeat assignment, if any.
Definition Others.cpp:1942
bool autoUpdate
"Auto-Update Target"
Definition Others.h:3217
int passNumber
Play Section N Times, Jump on Pass, Stop on Pass value, depending on jumpAction and trigger....
Definition Others.h:3207
bool topStaffOnly
"Show On: Top Staff Only"
Definition Others.h:3212
Evpu vertPos
The vertical offset from default of the text repeat marker.
Definition Others.h:3210
bool jumpIfIgnoring
"Jump if Ignoring Repeats" (xml tag is <jmpIgnore>)
Definition Others.h:3219
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:3239
MusxInstance< RepeatIndividualPositioning > getIndividualPositioning(StaffCmper staffId) const
Returns the RepeatIndividualPositioning record for a given staff. Check individualPlacement to see if...
Definition Others.cpp:1931
bool hidden
Inverse of "Show" checkbox.
Definition Others.h:3213
static const xml::XmlElementArray< TextRepeatAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
RepeatTriggerType trigger
The condition that triggers the jumpAction.
Definition Others.h:3218
RepeatActionType jumpAction
The jump action for this repeat assignment. (xml tag is <action>)
Definition Others.h:3216
bool resetOnAction
"Reset on Repeat Action" (xml tag is <clrOnChange>)
Definition Others.h:3214
Evpu horzPos
The horizontal offset from default of the text repeat marker.
Definition Others.h:3206
Defines text repeat elements with font styling and justification.
Definition Others.h:3255
PoundReplaceOption poundReplace
"Replace # With" choice.
Definition Others.h:3278
TextRepeatDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:3269
PoundReplaceOption
Enum for poundReplace options.
Definition Others.h:3262
@ MeasureNumber
"Measure Number in Target" (xml value is "measNum")
@ Passes
"Number of Times Played" (the default: may never appear in xml)
@ RepeatID
"Text Repeat ID in Target" (xml value is "repeatID")
std::shared_ptr< FontInfo > font
The font for this text repeat. (xml nodes <fontID>, <fontSize>, and <efx>)
Definition Others.h:3275
bool useThisFont
"Use This Font" (for the # substitution)
Definition Others.h:3277
std::vector< int > passList
If this vector contains elements, they define the repeat passes that apply to this instance.
Definition Others.h:3282
AlignJustify justification
Definition Others.h:3279
bool hasEnclosure
Whether the text repeat has an enclosure. (xml node is <newEnclosure>)
Definition Others.h:3276
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:3284
static const xml::XmlElementArray< TextRepeatDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
The enclosure for a text expression (if it exists)
Definition Others.h:3297
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:3301
static const xml::XmlElementArray< TextRepeatEnclosure > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Per-instance positioning overrides for TextRepeatDef.
Definition Others.h:2556
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2560
Represents the text associated with a TextRepeatDef.
Definition Others.h:3314
TextRepeatText(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:3317
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:3324
static const xml::XmlElementArray< TextRepeatText > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::string text
The text.
Definition Others.h:3322
Represents an individual lower composite item in the time signature.
Definition Others.h:3349
static const xml::XmlElementArray< CompositeItem > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool startGroup
Indicates the start of a group.
Definition Others.h:3352
Edu unit
The size of the unit for this item. (xml node is <integer>)
Definition Others.h:3351
Represents the lower composite time signature array.
Definition Others.h:3337
static constexpr std::string_view XmlNodeName
XML node name.
Definition Others.h:3359
static const xml::XmlElementArray< TimeCompositeLower > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::vector< std::shared_ptr< CompositeItem > > items
composite items collection
Definition Others.h:3357
TimeCompositeLower(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:3340
Represents an individual composite item in the time signature.
Definition Others.h:3384
util::Fraction fullFraction() const
Return the beats as a complete fraction.
Definition Others.h:3391
bool startGroup
Indicates the start of a group.
Definition Others.h:3388
static const xml::XmlElementArray< CompositeItem > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Edu beats
The number of beats in this item. (xml node is <integer>)
Definition Others.h:3386
util::Fraction fraction
Fraction of beats (between 0 <= fraction < 1)
Definition Others.h:3387
Represents the upper composite time signature structure.
Definition Others.h:3372
static constexpr std::string_view XmlNodeName
XML node name.
Definition Others.h:3399
static const xml::XmlElementArray< TimeCompositeUpper > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::vector< std::shared_ptr< CompositeItem > > items
Collection of composite items.
Definition Others.h:3397
TimeCompositeUpper(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:3375
Maps the number of flats to a tonal center for a linear custom key. If there are zero flats or sharps...
Definition Others.h:3416
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:3422
static const xml::XmlElementArray< TonalCenterFlats > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Maps number of sharps (0..7) to a tonal center for a linear custom key. Also maps 0 sharps or flats....
Definition Others.h:3438
static const xml::XmlElementArray< TonalCenterSharps > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:3444
Wrapper class for interpreting and rendering Enigma-style strings with insert handling.
Definition EnigmaString.h:501
AccidentalStyle
Enumeration to specify the type of accidental substitution representation.
Definition EnigmaString.h:253
@ Ascii
Use ASCII substitutions for accidentals.
static TextInsertCallback defaultInsertsCallback
Inserts callback to take all default insert subsitutions determined by parseEnigmaText.
Definition EnigmaString.h:413
std::function< std::optional< std::string >(const std::vector< std::string > &parsedCommand)> TextInsertCallback
Iteration function type that the parser calls back when it encounters an Enigma text insert that requ...
Definition EnigmaString.h:410
A class to represent fractions with integer m_numerator and m_denominator, automatically reduced to s...
Definition Fraction.h:38
static constexpr Fraction fromPercent(int percent)
Constructs a Fraction from a percent (where 100 is 100%)
Definition Fraction.h:97
@ Info
Informational messages for general program operation.
@ Verbose
Informational messages that should only displayed when verbose logging is requested.
static void log(LogLevel level, const std::string &message)
Logs a message with a specific severity level.
Definition Logger.h:87
RehearsalMarkStyle
Specifies the sequencing style for rehearsal marks.
Definition Others.h:946
@ MeasureNumber
Displays the current measure number.
@ None
Default value, no rehearsal mark style.
@ LetterNumbers
A, B, C...A1, B1, C1.
@ LettersNumbersLowerCase
a, b, c...a1, b1, c1
@ LettersLowerCase
a, b, c...aa, bb, cc
VerticalMeasExprAlign
Specifies the vertical alignment relative to musical elements for an expression or marking category.
Definition Others.h:1008
@ AboveStaffOrEntry
Align above the staff or entry.
@ BottomNote
Align with bottom note.
@ RefLine
Align to staff reference line.
@ BelowStaffOrEntry
Align below the staff or entry.
@ AboveStaff
Align above ths staff (the default).
std::optional< Cmper > importCategoryStaffListInto(const DocumentPtr &target, const DocumentPtr &source, Cmper cmper, const ImportObjectCallback &onImported)
Copies one marking-category staff list from one document into another.
Definition Others.cpp:1740
HorizontalMeasExprAlign
Specifies the horizontal alignment relative to musical elements for an expression or marking category...
Definition Others.h:986
@ RightBarline
Align with left barline. (xml value is "rightEdge")
@ AfterClefKeyTime
Align after clef/key/time/repeat.
@ RightOfAllNoteheads
Align to the right of all noteheads.
@ StartTimeSig
Align at the start of the time signature.
@ LeftBarline
Align with left barline (the default). (xml value is "leftEdge", if encountered)
@ CenterPrimaryNotehead
Align to the center of the primary notehead.
@ CenterOverBarlines
Align over the center of the barlines.
@ CenterAllNoteheads
Align to the center of all noteheads.
@ CenterOverMusic
Align over the center of music.
@ LeftOfAllNoteheads
Align left of all noteheads.
@ LeftOfPrimaryNotehead
Align to the left of the primary notehead.
@ StartOfMusic
Align at start of music.
@ Manual
"Horizontal Click Position" alignment.
RepeatActionType
Enum for the possible values of the <action> element.
Definition Others.h:2268
@ Stop
Stops playback after a number of passes (e.g. "Fine")
@ JumpToMark
Jump to a specified repeat number (used by text repeats).
@ JumpAuto
Automatically Jump. (the default). The targetValue is meaningless for this action.
@ JumpAbsolute
Jump to the measure number specified in the targetValue field.
@ NoJump
Do not jump. The targetValue is meaningless for this action.
PlaybackType
Specifies the playback behavior for the an expression or marking category.
Definition Others.h:961
@ Swing
Playback in swing style.
@ SmartPlaybackOn
Turn on smart playback. (xml value is "hpOn")
@ SmartPlaybackOff
Turn off smart playback. (xml value is "hpOff")
@ IgnoreTempoToolChanges
Ignore changes from Tempo Tool. (xml value is "stopTempo")
@ RestrikeKeys
Playback retrikes keys. (xml value is "rekey")
@ Channel
Playback set the MIDI channel.
@ MidiPitchWheel
Playback affects the MIDI pitch wheel. (xml value is "midiPitchwheel")
@ KeyVelocity
Playback affects key velocity. (xml value is "amplitude")
@ MidiController
Playback type for MIDI controller commands.
@ MidiPatchChange
Playback changes the MIDI patch.
@ PercussionMidiMap
Playback uses percussion MIDI map. (xml value is "percMidiMap")
@ PlayTempoToolChanges
Play changes from Tempo Tool. (xml value is "startTempo")
@ Transpose
Playback causes transposition.
@ ChannelPressure
Playback affects MIDI channel pressure. (xml value is "midiPressure")
@ Tempo
Playback affects tempo. (xml value is "time")
@ Dump
Playback is an arbitrary data dump. (Data is in node <playDumpText> with the same Cmper value....
std::optional< Cmper > importMarkingCategoryInto(const DocumentPtr &target, const DocumentPtr &source, Cmper cmper, const ImportObjectCallback &onImported)
Copies one marking category and its optional name from one document into another.
Definition Others.cpp:196
RepeatTriggerType
Enum for the possible values of the <trigger> element.
Definition Others.h:2283
@ Always
Always jump (the default)
@ OnPass
Jump on a sepecified pass number.
@ UntilPass
Jump until a specified pass number is reached.
ShowClefMode
Enum representing the clef display mode for a frame.
Definition EnumClasses.h:182
KnownShapeDefType
Enumerates the shape types we can recognize semantically.
Definition ShapeDesigner.h:41
uint16_t PercussionNoteTypeId
multiple times in one layout. The rest are the "pure" note type. See percussion::PercussionNoteType.
Definition Fundamentals.h:76
constexpr double EFIX_PER_SPACE
Number of Efix units per space (spatium)
Definition Fundamentals.h:93
NoteType
Enum class representing note types based on EDU values.
Definition EnumClasses.h:140
int16_t MeasCmper
Enigma meas Cmper (may be negative when not applicable)
Definition Fundamentals.h:66
int32_t Efix
EFIX value (64 per EVPU, 64*288=18432 per inch)
Definition Fundamentals.h:62
std::shared_ptr< const T > MusxInstance
Defines the type of a musx instance stored in a pool.
Definition MusxInstance.h:40
unsigned int LayerIndex
Layer index (valid values are 0..3)
Definition Fundamentals.h:73
constexpr Cmper SCORE_PARTID
The part id of the score.
Definition Fundamentals.h:81
VerticalPlacement
Specifies a vertical placement relationship for notation objects.
Definition EnumClasses.h:220
int16_t Inci
Enigma "incident" key type.
Definition Fundamentals.h:58
int32_t Evpu
EVPU value (288 per inch)
Definition Fundamentals.h:59
uint16_t Cmper
Enigma "comperator" key type.
Definition Fundamentals.h:57
uint16_t ClefIndex
Index into options::ClefOptions::clefDefs.
Definition Fundamentals.h:70
int32_t Edu
"Enigma Durational Units" value (1024 per quarter note)
Definition Fundamentals.h:63
std::weak_ptr< Document > DocumentWeakPtr
Shared weak Document pointer.
Definition DocumentElement.h:37
int32_t EntryNumber
Entry identifier.
Definition Fundamentals.h:71
std::function< void(const EnigmaBase &)> ImportObjectCallback
Receives each document-pool object newly created by an import helper.
Definition BaseClasses.h:150
std::shared_ptr< Document > DocumentPtr
Shared Document pointer.
Definition DocumentElement.h:35
int16_t StaffCmper
Enigma staff (staffId) Cmper (may be negative when not applicable)
Definition Fundamentals.h:67
int16_t SystemCmper
Enigma systems Cmper (may be negative when not applicable)
Definition Fundamentals.h:68
AlignJustify
Alignment and justification options for staff and group names.
Definition EnumClasses.h:30
int16_t PageCmper
Enigma page Cmper (may be negative when not applicable)
Definition Fundamentals.h:69
std::vector< XmlElementDescriptor< T > > XmlElementArray
an array type for XmlElementDescriptor instances.
Definition XmlInterface.h:133
object model for musx file (enigmaxml)
Definition BaseClasses.h:38
The resolved main or alternate symbol selection for an articulation definition.
Definition Others.h:257
char32_t character
The selected symbol character.
Definition Others.h:263
Evpu xOffset
Horizontal offset for the selected symbol.
Definition Others.h:261
bool isShape
Whether the selected symbol uses a shape definition.
Definition Others.h:259
Cmper shapeId
Shape ID for the selected symbol when isShape is true.
Definition Others.h:260
Evpu yOffset
Vertical offset for the selected symbol.
Definition Others.h:262
bool usesAlternate
True when the alternate symbol is selected.
Definition Others.h:258
std::shared_ptr< FontInfo > font
Font info for the selected symbol.
Definition Others.h:264
Represents a percussion note type mapping entry.
Definition PercussionNoteType.h:40