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/dom/PercussionNoteType.h"
36
37#include "BaseClasses.h"
38#include "CommonClasses.h"
39#include "Options.h"
40 // do not add other dom class dependencies. Use Implementations.cpp for implementations that need total class access.
41
42namespace musx {
43namespace dom {
44
45class Entry;
46
47namespace details {
48class FretboardDiagram;
49class GFrameHold;
50class IndependentStaffDetails;
51class StaffGroup;
52}
53
58namespace others {
59
60class Staff;
61
79class AcciAmountFlats : public OthersArray<int, 7>
80{
81 std::string_view xmlTag() const override { return XmlNodeName; }
82
83public:
85
86 constexpr static std::string_view XmlNodeName = "acciAmountFlats";
88};
89
112class AcciAmountSharps : public OthersArray<int, 7>
113{
114 std::string_view xmlTag() const override { return XmlNodeName; }
115
116public:
118
119 constexpr static std::string_view XmlNodeName = "acciAmountSharps";
121};
122
138class AcciOrderFlats : public OthersArray<unsigned, 7>
139{
140 std::string_view xmlTag() const override { return XmlNodeName; }
141
142public:
144
145 constexpr static std::string_view XmlNodeName = "acciOrderFlats";
147};
148
169class AcciOrderSharps : public OthersArray<unsigned, 7>
170{
171 std::string_view xmlTag() const override { return XmlNodeName; }
172
173public:
175
176 constexpr static std::string_view XmlNodeName = "acciOrderSharps";
178};
179
190{
191public:
198 {
201 StemSide,
203 AboveEntry,
204 BelowEntry,
205 };
206
211 enum class CopyMode
212 {
213 None,
214 Vertical,
216 };
217
223 {
224 Ignore,
225 InsideSlur,
226 AvoidSlur
227 };
228
234 explicit ArticulationDef(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
235 : OthersBase(document, partId, shareMode, cmper), fontMain(new FontInfo(document)), fontAlt(new FontInfo(document)) {}
236
237 char32_t charMain{};
238 std::shared_ptr<FontInfo> fontMain;
240 bool useTopNote{};
241 bool autoHorz{};
242 bool autoVert{};
247 bool insideSlur{};
248 bool noPrint{};
249 bool autoStack{};
252 char32_t charAlt{};
253 std::shared_ptr<FontInfo> fontAlt;
259 bool playArtic{};
262 bool mainIsShape{};
263 bool altIsShape{};
279
280 constexpr static std::string_view XmlNodeName = "articDef";
282};
283
326{
327public:
329 explicit BeatChartElement(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
330 : OthersBase(document, partId, shareMode, cmper, inci)
331 {
332 }
333
349
350 // Populated only when the XML node includes a <control> element
351 std::shared_ptr<Control> control;
352
353 // Populated for standard beat entries (inci > 0)
358
359 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
360 {
362 if (control && getInci() != 0) {
363 MUSX_INTEGRITY_ERROR("Beat chart for measure " + std::to_string(getCmper()) + " has a control instance in inci " + std::to_string(*getInci()));
364 }
365 if (getInci() == 0 && !control) {
366 control = std::make_shared<Control>();
367 MUSX_INTEGRITY_ERROR("Beat chart for measure " + std::to_string(getCmper()) + " is missing its control instance.");
368 }
369 }
370
371 constexpr static std::string_view XmlNodeName = "beatChart";
373};
374
388{
389public:
394 enum class Prefix
395 {
396 None,
397 Minus,
398 Plus,
399 Sharp,
400 Flat
401 };
402
404 explicit ChordSuffixElement(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
405 : OthersBase(document, partId, shareMode, cmper, inci), font(new FontInfo(document))
406 {
407 }
408
409 std::shared_ptr<FontInfo> font;
410 char32_t symbol{};
413 bool isNumber{};
415
416 constexpr static std::string_view XmlNodeName = "chordSuffix";
418};
419
434class ChordSuffixPlayback : public OthersArray<int16_t>
435{
436 std::string_view xmlTag() const override { return XmlNodeName; }
437
438public:
440
441 constexpr static std::string_view XmlNodeName = "chordSuffixPlay";
443};
444
454class ClefList : public OthersBase
455{
456public:
458 explicit ClefList(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
459 : OthersBase(document, partId, shareMode, cmper, inci)
460 {
461 }
462
463 // Public properties corresponding to the XML structure, in the same order as in the XML.
469 int percent{};
472 bool unlockVert{};
474
475 constexpr static std::string_view XmlNodeName = "clefEnum";
477};
478
485class DrumStaff : public OthersBase
486{
487public:
489 explicit DrumStaff(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
490 : OthersBase(document, partId, shareMode, cmper) {}
491
494
495 constexpr static std::string_view XmlNodeName = "drumStaff";
497};
498
506{
507public:
509
510 constexpr static std::string_view XmlNodeName = "drumStaffStyle";
511};
512
522{
523 static constexpr uint32_t SYMBOL_CHARSET_MAC = 0xfff; // (4095)
524 static constexpr uint32_t SYMBOL_CHARSET_WIN = 2;
525
526public:
528 explicit FontDefinition(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
529 : OthersBase(document, partId, shareMode, cmper) {}
530
534 {
535 MacOS,
536 Windows
537 };
538
539 // Public properties corresponding to the XML structure
546 int pitch{};
547 int family{};
548 std::string name;
549
563 bool calcIsSymbolFont() const
564 {
565 if (charsetBank == CharacterSetBank::MacOS && charsetVal == SYMBOL_CHARSET_MAC) {
566 return true;
567 }
568 if (charsetBank == CharacterSetBank::Windows && charsetVal == SYMBOL_CHARSET_WIN) {
569 return true;
570 }
571 return false;
572 }
573
574 constexpr static std::string_view XmlNodeName = "fontName";
576};
577
591class Frame : public OthersBase
592{
593public:
595 explicit Frame(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci = 0)
596 : OthersBase(document, partId, shareMode, cmper, inci) {}
597
601
604 void iterateRawEntries(std::function<bool(const MusxInstance<Entry>& entry)> iterator) const;
605
611
612 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
613 {
614 this->OthersBase::integrityCheck(ptrToThis);
615 if (startTime && (startEntry || endEntry)) {
616 MUSX_INTEGRITY_ERROR("Frame " + std::to_string(getCmper()) + " has non-zero startTime and non-zero startEntry or endEntry.");
617 }
618 if (!startTime && !startEntry) {
619 MUSX_INTEGRITY_ERROR("Frame " + std::to_string(getCmper()) + " has no start entry.");
620 }
621 if (!startTime && !endEntry) {
622 MUSX_INTEGRITY_ERROR("Frame " + std::to_string(getCmper()) + " has no end entry.");
623 }
624 }
625
626 constexpr static std::string_view XmlNodeName = "frameSpec";
628};
629
630class FretInstrument;
644{
645public:
647 explicit FretboardGroup(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
648 : OthersBase(document, partId, shareMode, cmper, inci)
649 {
650 }
651
653 std::string name;
654
657
660
661 constexpr static std::string_view XmlNodeName = "fretGroup";
663};
664
674{
675public:
677 explicit FretboardStyle(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
678 : OthersBase(document, partId, shareMode, cmper)
679 {
680 }
681
683 bool rotate{};
701 std::shared_ptr<FontInfo> fretNumFont;
702 std::shared_ptr<FontInfo> fingNumFont;
705 std::string name;
706 std::string fretNumText;
707
708 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
709 {
710 this->OthersBase::integrityCheck(ptrToThis);
711 if (!fretNumFont) {
712 fretNumFont = std::make_shared<FontInfo>(getDocument());
713 }
714 if (!fingNumFont) {
715 fingNumFont = std::make_shared<FontInfo>(getDocument());
716 }
717 }
718
719 constexpr static std::string_view XmlNodeName = "fretStyle";
721};
722
732{
733public:
735 explicit FretInstrument(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
736 : OthersBase(document, partId, shareMode, cmper)
737 {
738 }
739
745 {
746 public:
747 int pitch{};
748 int nutOffset{};
750
752 };
753
754 int numFrets{};
756 std::string name;
757 std::vector<std::shared_ptr<StringInfo>> strings;
758 std::vector<int> fretSteps;
763
764 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
765 {
766 this->OthersBase::integrityCheck(ptrToThis);
767 if (numStrings != int(strings.size())) {
768 MUSX_INTEGRITY_ERROR("Fret instrument " + std::to_string(getCmper()) + " specifies " + std::to_string(numStrings)
769 + " strings but has " + std::to_string(strings.size()) + " StringInfo instances.");
770 }
771 if (!fretSteps.empty() && numFrets != int(fretSteps.size())) {
772 util::Logger::log(util::Logger::LogLevel::Info, "Fret instrument " + std::to_string(getCmper()) + " specifies " + std::to_string(numFrets)
773 + " frets but has " + std::to_string(fretSteps.size()) + " diatonic fret steps specified.");
774 }
775 }
776
777 constexpr static std::string_view XmlNodeName = "fretInst";
779};
780
787class KeyFormat : public OthersBase {
788public:
790 explicit KeyFormat(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
791 : OthersBase(document, partId, shareMode, cmper) {}
792
793 unsigned semitones{};
794 unsigned scaleTones{};
795
796 constexpr static std::string_view XmlNodeName = "keyFormat";
798};
799
806class KeyMapArray : public OthersBase {
807public:
809 explicit KeyMapArray(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
810 : OthersBase(document, partId, shareMode, cmper) {}
811
816 public:
817 bool diatonic{};
818 unsigned hlevel{};
819
821 };
822
823 std::vector<std::shared_ptr<StepElement>> steps;
824
826 unsigned countDiatonicSteps() const
827 {
828 return static_cast<unsigned>(std::count_if(steps.begin(), steps.end(), [](const auto& step) {
829 return step->diatonic;
830 }));
831 }
832
833 constexpr static std::string_view XmlNodeName = "keyMap";
835};
836
844class KeyAttributes : public OthersBase {
845public:
847 explicit KeyAttributes(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
848 : OthersBase(document, partId, shareMode, cmper) {}
849
850 // Public properties corresponding to the XML structure
851 int harmRefer{};
857 int gotoKey{};
861 bool hasClefOctv{};
862
863 constexpr static std::string_view XmlNodeName = "keysAttrib";
865};
866
877public:
879 explicit LayerAttributes(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
880 : OthersBase(document, partId, shareMode, cmper) {}
881
882 // Public properties corresponding to the XML structure
888 bool freezeLayer{};
889 bool playback{};
893 bool hideLayer{};
894
895 constexpr static std::string_view XmlNodeName = "layerAtts";
897};
898
913
938
960
978
984{
985 Left,
986 Center,
987 Right
988};
989
990class ShapeExpressionDef;
991class TextExpressionDef;
992
1000public:
1005 enum class CategoryType : Cmper
1006 {
1007 Invalid,
1008 Dynamics,
1009 TempoMarks,
1014 Misc
1015 };
1016
1018 explicit MarkingCategory(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1019 : OthersBase(document, partId, shareMode, cmper) {}
1020
1022
1023 // Font information for the marking category
1024 std::shared_ptr<FontInfo> textFont;
1025 std::shared_ptr<FontInfo> musicFont;
1026 std::shared_ptr<FontInfo> numberFont;
1027
1031
1032 // Vertical and horizontal offsets for positioning adjustments
1036
1037 // Usage flags representing certain behaviors and visual elements
1046
1047 // Staff list represented as an integer
1049
1054 std::map<Cmper, MusxInstanceWeak<ShapeExpressionDef>> shapeExpressions;
1055
1060 std::map<Cmper, MusxInstanceWeak<TextExpressionDef>> textExpressions;
1061
1063 std::string getName() const;
1064
1065 constexpr static std::string_view XmlNodeName = "markingsCategory";
1067};
1068
1078public:
1080
1081 constexpr static std::string_view XmlNodeName = "markingsCategoryName";
1082};
1083
1090class Measure : public OthersBase {
1091public:
1093 explicit Measure(const DocumentWeakPtr& document, Cmper measureId, ShareMode shareMode, Cmper cmper)
1094 : OthersBase(document, measureId, shareMode, cmper) {}
1095
1106
1109 enum class BarlineType
1110 {
1111 None,
1113 Normal,
1114 Double,
1115 Final,
1116 Solid,
1117 Dashed,
1118 Tick,
1119 Custom
1120 };
1121
1125 {
1126 IfNeeded,
1127 Always,
1128 Never
1129 };
1130
1134 {
1135 IfNeeded,
1136 Always,
1137 Never
1138 };
1139
1141 std::shared_ptr<KeySignature> globalKeySig;
1166 bool noMeasNum{};
1167 bool hasOssia{};
1172 bool hasEnding{};
1174 bool abbrvTime{};
1177 bool hasChord{};
1181 bool pageBreak{};
1182
1185 { return getCmper() == 1 || showFullNames; }
1186
1191 int calcDisplayNumber() const;
1192
1196 MusxInstance<KeySignature> createKeySignature(const std::optional<StaffCmper>& forStaff = std::nullopt) const;
1197
1200 MusxInstance<TimeSignature> createTimeSignature(const std::optional<StaffCmper>& forStaff = std::nullopt) const;
1201
1205 MusxInstance<TimeSignature> createDisplayTimeSignature(const std::optional<StaffCmper>& forStaff = std::nullopt) const;
1206
1211 util::Fraction calcDuration(const std::optional<StaffCmper>& forStaff = std::nullopt) const;
1212
1216 {
1217 return calcDuration() / calcDuration(forStaff);
1218 }
1219
1220 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
1221 {
1222 this->OthersBase::integrityCheck(ptrToThis);
1223 if (!globalKeySig) {
1224 globalKeySig = std::make_shared<KeySignature>(getDocument());
1225 }
1226 }
1227
1228 constexpr static std::string_view XmlNodeName = "measSpec";
1230};
1231
1241{
1242public:
1244 explicit MeasureExprAssign(const DocumentWeakPtr& document, Cmper ID, ShareMode shareMode, Cmper cmper, Inci inci)
1245 : OthersBase(document, ID, shareMode, cmper, inci) {}
1246
1250 {
1251 Current,
1252 ToLayer1,
1253 ToLayer2,
1254 ToLayer3,
1255 ToLayer4,
1256 ToChord,
1257 ToExpression,
1258 };
1259
1262 enum class PlaybackStart
1263 {
1268 };
1269
1272 enum class ShowStaffList
1273 {
1274 ScoreAndPart,
1275 ScoreOnly,
1276 PartOnly,
1277 };
1278
1279 // Public properties corresponding to the XML structure
1286 int layer{};
1292 bool hidden{};
1298
1302
1306
1307 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
1308 {
1309 this->OthersBase::integrityCheck(ptrToThis);
1310 if (!textExprId && !shapeExprId) {
1311 MUSX_INTEGRITY_ERROR("Expression assignment at measure " + std::to_string(getCmper()) + " inci " + std::to_string(getInci().value_or(-1))
1312 + " has no expression definition ID.");
1313 } else if (textExprId && shapeExprId) {
1314 MUSX_INTEGRITY_ERROR("Expression assignment at measure " + std::to_string(getCmper()) + " inci " + std::to_string(getInci().value_or(-1))
1315 + " has both text expr ID " + std::to_string(textExprId) + " and shape expr ID " + std::to_string(shapeExprId));
1316 }
1317 }
1318
1319 constexpr static std::string_view XmlNodeName = "measExprAssign";
1321};
1322
1330public:
1332 explicit MeasureNumberRegion(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1333 : OthersBase(document, partId, shareMode, cmper) {}
1334
1337 enum class AlignJustify
1338 {
1339 Left,
1340 Right,
1341 Center
1342 };
1343
1346 enum class TimePrecision
1347 {
1348 WholeSeconds,
1349 Tenths,
1350 Hundredths,
1351 Thousandths,
1352 };
1353
1397
1398 // Public properties
1399 std::shared_ptr<ScorePartData> scoreData;
1400 std::shared_ptr<ScorePartData> partData;
1401
1404 char32_t startChar{};
1405 int base{};
1407 std::string prefix;
1408 std::string suffix;
1409
1411 bool noZero;
1412 bool doubleUp{};
1413 bool time{};
1417 int region{};
1419 bool hideScroll{};
1420 bool hidePage{};
1421
1424 bool calcIncludesMeasure(MeasCmper measureId) const
1425 {
1426 return measureId >= startMeas && measureId < endMeas; // endMeas is non-inclusive!
1427 }
1428
1430 int getStartNumber() const { return int(numberOffset + 1); }
1431
1434 int calcDisplayNumberFor(MeasCmper measureId) const;
1435
1440 static MusxInstance<MeasureNumberRegion> findMeasure(const DocumentPtr& document, MeasCmper measureId);
1441
1442 constexpr static std::string_view XmlNodeName = "measNumbRegion";
1444};
1445
1455public:
1457 explicit MultimeasureRest(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper startMeasure)
1458 : OthersBase(document, partId, shareMode, startMeasure) {}
1459
1464 int numStart{};
1471 bool useSymbols{};
1472
1474 MeasCmper getStartMeasure() const { return getCmper(); }
1475
1477 int calcNumberOfMeasures() const { return (std::max)(nextMeas - getStartMeasure(), 0); }
1478
1481
1482 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
1483 {
1484 this->OthersBase::integrityCheck(ptrToThis);
1485 if (nextMeas <= getStartMeasure()) {
1486 MUSX_INTEGRITY_ERROR("Multimeasure rest at " + std::to_string(getCmper()) + " in part " + std::to_string(getSourcePartId()) + " spans 0 or fewer measures.");
1487 }
1488 }
1489
1490 constexpr static std::string_view XmlNodeName = "mmRest";
1492};
1493
1501public:
1503 explicit MultiStaffGroupId(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1504 : OthersBase(document, partId, shareMode, cmper) {}
1505
1507
1508 constexpr static std::string_view XmlNodeName = "multiStaffGroupID";
1510};
1511
1519public:
1521 explicit MultiStaffInstrumentGroup(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1522 : OthersBase(document, partId, shareMode, cmper) {}
1523
1524 std::vector<StaffCmper> staffNums;
1525
1529
1532
1534 std::optional<size_t> getIndexOf(StaffCmper staffId) const
1535 {
1536 for (size_t x = 0; x < staffNums.size(); x++) {
1537 if (staffNums[x] == staffId) return x;
1538 }
1539 return std::nullopt;
1540 }
1541
1545
1548 static void calcAllMultiStaffGroupIds(const DocumentPtr& document);
1549
1550 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
1551 {
1552 OthersBase::integrityCheck(ptrToThis);
1553 if (staffNums.empty()) {
1554 MUSX_INTEGRITY_ERROR("MultiStaffInstrumentGroup " + std::to_string(getCmper()) + " contains no staves.");
1555 } else if (staffNums.size() > 3) {
1556 MUSX_INTEGRITY_ERROR("MultiStaffInstrumentGroup " + std::to_string(getCmper()) + " contains more than 3 staves.");
1557 }
1558 }
1559
1560 constexpr static std::string_view XmlNodeName = "multiStaffInstGroup";
1562};
1563
1571{
1572public:
1574
1575 constexpr static std::string_view XmlNodeName = "namePosAbbrv";
1576};
1577
1585{
1586public:
1588
1589 constexpr static std::string_view XmlNodeName = "namePosAbbrvStyle";
1590};
1591
1599{
1600public:
1602
1603 constexpr static std::string_view XmlNodeName = "namePosFull";
1604};
1605
1613{
1614public:
1616
1617 constexpr static std::string_view XmlNodeName = "namePosFullStyle";
1618};
1619
1626class Page : public OthersBase {
1627public:
1629 explicit Page(const DocumentWeakPtr& document, PageCmper pageId, ShareMode shareMode, Cmper cmper)
1630 : OthersBase(document, pageId, shareMode, cmper) {}
1631
1634 int percent{};
1641
1642 std::optional<SystemCmper> lastSystemId;
1643 std::optional<MeasCmper> firstMeasureId;
1644 std::optional<MeasCmper> lastMeasureId;
1645
1647 bool isBlank() const { return firstSystemId < 0; }
1648
1652
1654 static void calcSystemInfo(const DocumentPtr& document);
1655
1656 constexpr static std::string_view XmlNodeName = "pageSpec";
1658};
1659
1660class TextBlock;
1683{
1684public:
1690 {
1691 AllPages,
1692 Even,
1693 Odd
1694 };
1695
1698
1700 explicit PageTextAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
1701 : OthersBase(document, partId, shareMode, cmper, inci)
1702 {
1703 }
1704
1716 bool hidden{};
1722 bool indRpPos{};
1725
1728
1733 std::optional<PageCmper> calcStartPageNumber(Cmper forPartId) const;
1734
1739 std::optional<PageCmper> calcEndPageNumber(Cmper forPartId) const;
1740
1748 util::EnigmaParsingContext getRawTextCtx(Cmper forPartId, std::optional<Cmper> forPageId = std::nullopt) const;
1749
1751 bool isMultiPage() const
1752 { return getCmper() == 0 && startPage != endPage; }
1753
1756 { return isMultiPage() && endPage == 0; }
1757
1758 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
1759 {
1760 this->OthersBase::integrityCheck(ptrToThis);
1761 if (getCmper() != 0) {
1762 if (startPage != getCmper() || endPage != getCmper()) {
1763 MUSX_INTEGRITY_ERROR("PageTextAssign " + std::to_string(getCmper()) + " inci " + std::to_string(getInci().value_or(0)) +
1764 " has startPage or endPage value that does not match.");
1765 }
1766 }
1767 }
1768
1775 static MusxInstance<others::PageTextAssign> getForPageId(const DocumentPtr& document, Cmper partId, PageCmper pageId, Inci inci);
1776
1783
1784 constexpr static std::string_view XmlNodeName = "pageTextAssign";
1786};
1787
1796{
1797public:
1799 explicit PartDefinition(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1800 : OthersBase(document, partId, shareMode, cmper) {}
1801
1802 // Public properties corresponding to the XML structure
1805 int copies{};
1806 bool printPart{};
1814
1817
1820
1823
1825 bool isScore() const { return getCmper() == SCORE_PARTID; }
1826
1833 Cmper calcSystemIuList(Cmper systemId) const;
1834
1839 std::optional<PageCmper> calcPageNumberFromAssignmentId(PageCmper pageAssignmentId) const;
1840
1845
1847 static MusxInstance<PartDefinition> getScore(const DocumentPtr& document);
1848
1851
1852 constexpr static std::string_view XmlNodeName = "partDef";
1854};
1855
1864class PartGlobals : public OthersBase {
1865public:
1867 explicit PartGlobals(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
1868 : OthersBase(document, partId, shareMode, cmper) {}
1869
1870 // Public properties corresponding to the XML structure
1881
1882 constexpr static std::string_view XmlNodeName = "partGlobals";
1884};
1885
1897class PartVoicing : public OthersBase {
1898public:
1904 explicit PartVoicing(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper staff)
1905 : OthersBase(document, partId, shareMode, staff) {}
1906
1908 enum class VoicingType
1909 {
1912 };
1913
1916 {
1917 AllNotes,
1918 TopNote,
1919 BottomNote,
1921 };
1922
1923 bool enabled{};
1926 bool select1st{};
1927 bool select2nd{};
1928 bool select3rd{};
1929 bool select4th{};
1930 bool select5th{};
1936
1937 constexpr static std::string_view XmlNodeName = "voicingDef";
1939};
1940
1951public:
1953 explicit PercussionNoteInfo(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
1954 : OthersBase(document, partId, shareMode, cmper, inci) {}
1955
1962 char32_t closedNotehead{};
1963 char32_t halfNotehead{};
1964 char32_t wholeNotehead{};
1965 char32_t dwholeNotehead{};
1966
1968 int calcStaffReferencePosition() const { return staffPosition - 10; }
1969
1973 { return percNoteType & 0xfff; }
1974
1977 unsigned getNoteTypeOrderId() const
1978 { return(percNoteType & 0xf000) >> 12; }
1979
1983
1984 constexpr static std::string_view XmlNodeName = "percussionNoteInfo";
1986};
1987
1993{
1994 JumpAuto,
1995 JumpAbsolute,
1996 JumpRelative,
1998 JumpToMark,
1999 Stop,
2000 NoJump
2001};
2002
2008{
2009 Always,
2010 OnPass,
2011 UntilPass
2012};
2013
2022class RepeatBack : public OthersBase {
2023public:
2025 explicit RepeatBack(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2026 : OthersBase(document, partId, shareMode, cmper) {}
2027
2028 // Public properties corresponding to the XML structure
2043
2044 constexpr static std::string_view XmlNodeName = "repeatBack";
2046};
2047
2057{
2058public:
2060 explicit RepeatEndingStart(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2061 : OthersBase(document, partId, shareMode, cmper)
2062 {
2063 }
2064
2081
2083 int calcEndingLength() const;
2084
2088 bool calcIsOpen() const;
2089
2090
2091 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
2092 {
2093 OthersBase::integrityCheck(ptrToThis);
2095 MUSX_INTEGRITY_ERROR("RepeatEndingStart at measure " + std::to_string(getCmper()) + " has an unexpected trigger value " +
2096 std::to_string(int(trigger)));
2097 }
2098 }
2099
2100 constexpr static std::string_view XmlNodeName = "repeatEndingStart";
2102};
2103
2115public:
2117 explicit RepeatEndingText(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2118 : OthersBase(document, partId, shareMode, cmper) {}
2119
2120 std::string text;
2121
2122 constexpr static std::string_view XmlNodeName = "repeatEndingText";
2124};
2125
2134class RepeatPassList : public OthersArray<int>
2135{
2136 std::string_view xmlTag() const override { return XmlNodeName; }
2137
2138public:
2140
2141 constexpr static std::string_view XmlNodeName = "repeatPassList";
2143};
2144
2186
2211class SplitMeasure : public OthersArray<Evpu>
2212{
2213 std::string_view xmlTag() const override { return XmlNodeName; }
2214
2215public:
2217
2218 constexpr static std::string_view XmlNodeName = "splitMeas";
2220};
2221
2228class StaffList : public OthersArray<StaffCmper>
2229{
2230public:
2232
2236 {
2237 TopStaff = -1,
2238 BottomStaff = -2
2239 };
2240
2242};
2243
2251{
2252public:
2254
2255 constexpr static std::string_view XmlNodeName = "categoryStaffListName";
2256};
2257
2265{
2266 std::string_view xmlTag() const override { return XmlNodeName; }
2267
2268public:
2269 using StaffList::StaffList;
2270
2271 constexpr static std::string_view XmlNodeName = "categoryStaffListParts";
2272};
2273
2281{
2282 std::string_view xmlTag() const override { return XmlNodeName; }
2283
2284public:
2285 using StaffList::StaffList;
2286
2287 constexpr static std::string_view XmlNodeName = "categoryStaffListScore";
2288};
2289
2297{
2298public:
2300
2301 constexpr static std::string_view XmlNodeName = "repeatStaffListName";
2302};
2303
2311{
2312 std::string_view xmlTag() const override { return XmlNodeName; }
2313
2314public:
2315 using StaffList::StaffList;
2316
2317 constexpr static std::string_view XmlNodeName = "repeatStaffListParts";
2318};
2319
2328{
2329 std::string_view xmlTag() const override { return XmlNodeName; }
2330
2331public:
2332 using StaffList::StaffList;
2333
2334 constexpr static std::string_view XmlNodeName = "repeatStaffListPartsOverride";
2335};
2336
2344{
2345 std::string_view xmlTag() const override { return XmlNodeName; }
2346
2347public:
2348 using StaffList::StaffList;
2349
2350 constexpr static std::string_view XmlNodeName = "repeatStaffListScore";
2351};
2352
2361{
2362 std::string_view xmlTag() const override { return XmlNodeName; }
2363
2364public:
2365 using StaffList::StaffList;
2366
2367 constexpr static std::string_view XmlNodeName = "repeatStaffListScoreOverride";
2368};
2369
2377{
2378public:
2380 explicit StaffSystem(const DocumentWeakPtr& document, Cmper staffSystemId, ShareMode shareMode, Cmper cmper)
2381 : OthersBase(document, staffSystemId, shareMode, cmper)
2382 {
2383 }
2384
2392 double horzPercent{};
2401 bool noNames{};
2405 bool scaleVert{};
2410
2412
2415 MeasCmper getLastMeasure() const { return endMeas - 1; }
2416
2419 int calcNumMeasures() const { return endMeas - startMeas; }
2420
2423
2427
2433 std::pair<util::Fraction, util::Fraction> calcMinMaxStaffSizes() const;
2434
2435 void integrityCheck(const std::shared_ptr<Base>& ptrToThis) override
2436 {
2437 this->OthersBase::integrityCheck(ptrToThis);
2438 if (startMeas == 0 || endMeas == 0) {
2439 MUSX_INTEGRITY_ERROR("Layout for system " + std::to_string(getCmper())
2440 + " of part " + std::to_string(getSourcePartId()) + " is in an unknown state.");
2441 }
2442 }
2443
2444 constexpr static std::string_view XmlNodeName = "staffSystemSpec";
2446};
2447
2454class StaffUsed : public OthersBase {
2455public:
2457 explicit StaffUsed(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
2458 : OthersBase(document, partId, shareMode, cmper, inci) {}
2459
2462 std::shared_ptr<MusicRange> range;
2463
2466
2469
2471 MusxInstance<Staff> getStaffInstance(MeasCmper measureId, Edu eduPosition) const;
2472
2473 constexpr static std::string_view XmlNodeName = "instUsed";
2475};
2476
2487{
2488public:
2490 explicit SystemLock(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2491 : OthersBase(document, partId, shareMode, cmper) {}
2492
2497
2498 constexpr static std::string_view XmlNodeName = "lockMeas";
2500};
2501
2518{
2519public:
2521 explicit TempoChange(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
2522 : OthersBase(document, partId, shareMode, cmper, inci)
2523 {
2524 }
2525
2526 int ratio{};
2531 int unit{};
2535
2540 int getAbsoluteTempo(NoteType noteType = NoteType::Quarter) const;
2541
2542 constexpr static std::string_view XmlNodeName = "tempoDef";
2544};
2545
2553class TextBlock : public OthersBase
2554{
2555public:
2557
2562 enum class TextType
2563 {
2564 Block,
2565 Expression
2566 };
2567
2569 explicit TextBlock(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2570 : OthersBase(document, partId, shareMode, cmper) {}
2571
2572 // Public properties corresponding to the XML structure
2581 bool newPos36{};
2584 bool showShape{};
2586 bool wordWrap{};
2592
2598 util::EnigmaParsingContext getRawTextCtx(Cmper forPartId, std::optional<Cmper> forPageId = std::nullopt,
2600
2602 static std::string getText(const DocumentPtr& document, const Cmper textId, Cmper forPartId, bool trimTags = false,
2604
2605 constexpr static std::string_view XmlNodeName = "textBlock";
2607};
2608
2664
2674public:
2676
2677 constexpr static std::string_view XmlNodeName = "textExpressionEnclosure";
2679};
2680
2690{
2691public:
2693 explicit TextRepeatAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
2694 : OthersBase(document, partId, shareMode, cmper, inci)
2695 {
2696 }
2697
2698 // Public properties corresponding to the XML structure
2709 bool autoUpdate{};
2713
2714 constexpr static std::string_view XmlNodeName = "textRepeatAssign";
2716};
2717
2730{
2731public:
2737 {
2738 Passes,
2739 RepeatID,
2741 };
2742
2744 explicit TextRepeatDef(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2745 : OthersBase(document, partId, shareMode, cmper), font(new FontInfo(document))
2746 {
2747 }
2748
2749 // Public properties corresponding to the XML structure
2750 std::shared_ptr<FontInfo> font;
2757 std::vector<int> passList;
2758
2759 constexpr static std::string_view XmlNodeName = "textRepeatDef";
2761};
2762
2772{
2773public:
2775
2776 constexpr static std::string_view XmlNodeName = "textRepeatEnclosure";
2778};
2779
2789{
2790public:
2792 explicit TextRepeatText(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2793 : OthersBase(document, partId, shareMode, cmper)
2794 {
2795 }
2796
2797 std::string text;
2798
2799 constexpr static std::string_view XmlNodeName = "textRepeatText";
2801};
2802
2812{
2813public:
2815 explicit TimeCompositeLower(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2816 : OthersBase(document, partId, shareMode, cmper)
2817 {
2818 }
2819
2824 {
2825 public:
2827 bool startGroup{};
2828
2830 };
2831
2832 std::vector<std::shared_ptr<CompositeItem>> items;
2833
2834 constexpr static std::string_view XmlNodeName = "timeLower";
2836};
2837
2847{
2848public:
2850 explicit TimeCompositeUpper(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper)
2851 : OthersBase(document, partId, shareMode, cmper)
2852 {
2853 }
2854
2870
2872 std::vector<std::shared_ptr<CompositeItem>> items;
2873
2874 constexpr static std::string_view XmlNodeName = "timeUpper";
2876};
2877
2890class TonalCenterFlats : public OthersArray<unsigned, 8>
2891{
2892 std::string_view xmlTag() const override { return XmlNodeName; }
2893
2894public:
2896
2897 constexpr static std::string_view XmlNodeName = "fstKeyFlats";
2899};
2900
2912class TonalCenterSharps : public OthersArray<unsigned, 8>
2913{
2914 std::string_view xmlTag() const override { return XmlNodeName; }
2915
2916public:
2918
2919 constexpr static std::string_view XmlNodeName = "fstKeySharps";
2921};
2922
2923} // namespace others
2924} // namespace dom
2925} // namespace musx
DocumentPtr getDocument() const
Gets a reference to the Document.
Definition BaseClasses.h:108
Cmper getSourcePartId() const
Gets the source partId for this instance. If an instance is fully shared with the score,...
Definition BaseClasses.h:124
virtual void integrityCheck(const std::shared_ptr< Base > &ptrToThis)
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition BaseClasses.h:154
ShareMode
Describes how this instance is shared between part and score.
Definition BaseClasses.h:91
Base class for classes that are contained by other classes.
Definition BaseClasses.h:224
Represents the default font settings for a particular element type.
Definition CommonClasses.h:123
Provides optional per-type extension methods for MusxInstanceList.
Definition MusxInstance.h:96
Template pattern for OthersBase items consisting of an array of a single item.
Definition BaseClasses.h:353
OthersArray(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition BaseClasses.h:359
Base class for all "others" types.
Definition BaseClasses.h:283
std::optional< Inci > getInci() const
Gets the optional array index (inci).
Definition BaseClasses.h:335
Cmper getCmper() const
Gets the cmper key value.
Definition BaseClasses.h:328
Many element names are embedded directly in top-level xml tags. This encapsulates that pattern.
Definition BaseClasses.h:387
OthersName(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition BaseClasses.h:390
HorizontalAlignment
Horizontal alignment options for page text positioning.
Definition Options.h:1495
VerticalAlignment
Vertical alignment options for page text positioning.
Definition Options.h:1506
TextJustify
Text justification options.
Definition Options.h:1514
Lists the aleration values of each nth flat in a custom key signature. Normally these values are all ...
Definition Others.h:80
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:86
Lists the aleration values of each nth sharp in a custom key signature. Normally these values are all...
Definition Others.h:113
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:119
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:139
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:145
Lists the order of sharps by pitch class index (0..6 = C..B) in a custom key signature....
Definition Others.h:170
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:176
static const xml::XmlElementArray< AcciOrderSharps > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Stores the properties and behaviors of articulation definitions.
Definition Others.h:190
bool autoVert
Whether vertical auto-positioning is enabled.
Definition Others.h:242
bool useTopNote
"Attach to top note"
Definition Others.h:240
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:280
Evpu distanceFromStemEnd
"On-stem distance from stem end/flag/beam"
Definition Others.h:278
Evpu xOffsetAlt
Horizontal offset for the alternate symbol.
Definition Others.h:260
Evpu yOffsetMain
Vertical offset for the main symbol.
Definition Others.h:255
char32_t charAlt
Alternate symbol character (utf32).
Definition Others.h:252
int startTopNoteDelta
Attack change for the top note.
Definition Others.h:266
int durBotNoteDelta
Duration change for the bottom note.
Definition Others.h:271
char32_t charMain
Main symbol character (utf32).
Definition Others.h:237
Cmper mainShape
Main shape ID (if applicable).
Definition Others.h:264
bool autoStack
Whether automatic stacking is enabled.
Definition Others.h:249
int ampTopNotePercent
Key velocity percentage for the top note.
Definition Others.h:276
int durTopNotePercent
Duration percent change for the top note.
Definition Others.h:272
bool aboveSymbolAlt
Whether the alternate symbol is used above. (Otherwise main symbol is used.)
Definition Others.h:245
int ampBotNotePercent
Key velocity percentage for the bottom note.
Definition Others.h:277
bool centerOnStem
Whether centering on the stem is enabled.
Definition Others.h:250
SlurInteractionMode
Defines the interaction mode with slurs.
Definition Others.h:223
@ Ignore
default value (may not appear in xml)
Evpu defVertPos
Default vertical position.
Definition Others.h:256
Evpu xOffsetMain
Horizontal offset for the main symbol.
Definition Others.h:254
Evpu yOffsetAlt
Vertical offset for the alternate symbol.
Definition Others.h:261
Cmper altShape
Alternate shape ID (if applicable).
Definition Others.h:265
bool altIsShape
Whether the alternate symbol is a shape.
Definition Others.h:263
std::shared_ptr< FontInfo > fontAlt
The font info for the alternate symbol. (xml nodes <fontAlt>, <sizeAlt>, and <efxAlt>)
Definition Others.h:253
int startTopNotePercent
Attack change percent for the top note.
Definition Others.h:268
bool playArtic
Whether playback articulation is enabled.
Definition Others.h:259
bool insideSlur
Whether the articulation is inside a slur. (Used in addition to SlurInteractionMode::InsideSlur)
Definition Others.h:247
AutoVerticalMode autoVertMode
Auto vertical positioning mode.
Definition Others.h:243
int durTopNoteDelta
Duration change for the top note.
Definition Others.h:270
std::shared_ptr< FontInfo > fontMain
The font info for the main symbol. (xml nodes <fontMain>, <sizeMain>, and <efxMain>)
Definition Others.h:238
bool belowSymbolAlt
Whether the alternate symbol is used below. (Otherwise main symbol is used.)
Definition Others.h:246
int ampBotNoteDelta
Key velocity change for the bottom note.
Definition Others.h:275
SlurInteractionMode slurInteractionMode
Slur interaction mode.
Definition Others.h:251
int startBotNotePercent
Attack change percent for the bottom note.
Definition Others.h:269
bool mainIsShape
Whether the main symbol is a shape.
Definition Others.h:262
int durBotNotePercent
Duration percent change for the bottom note.
Definition Others.h:273
CopyMode
Defines the character copy mode (vertical or horizontal)
Definition Others.h:212
@ 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:274
AutoVerticalMode
Defines the automatic vertical positioning mode. These values are only meaningful if autoVert is true...
Definition Others.h:198
@ AlwaysNoteheadSide
default value (may not appear in xml)
int startBotNoteDelta
Attack change for the bottom note.
Definition Others.h:267
bool outsideStaff
Whether the articulation is outside the staff.
Definition Others.h:244
bool autoHorz
Whether horizontal auto-positioning is enabled.
Definition Others.h:241
ArticulationDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:234
bool isStemSideWhenMultipleLayers
"Place stem side when multiple layers are present"
Definition Others.h:258
bool noPrint
"Display on screen only (do not print)"
Definition Others.h:248
CopyMode copyMode
"Copy Main Symbol" option.
Definition Others.h:239
bool avoidStaffLines
Whether to avoid staff lines.
Definition Others.h:257
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:340
Edu totalDur
Total logical duration of the measure (XML: <totalDur>)
Definition Others.h:342
Evpu minWidth
Minimum required width (XML: <minWidth>)
Definition Others.h:344
static const xml::XmlElementArray< Control > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu totalWidth
Total width allocated to the measure (XML: <totalWidth>)
Definition Others.h:343
Evpu allotWidth
Allotted width before justification (XML: <allotWidth>)
Definition Others.h:345
A single beat chart element from Finale's music spacing system.
Definition Others.h:326
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:371
Edu dur
Duration of this beat span.
Definition Others.h:354
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:359
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:351
BeatChartElement(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:329
Evpu minPos
Minimum position (see remarks in the class-level description of BeatChartElement)
Definition Others.h:357
Evpu endPos
End position of the beat span.
Definition Others.h:356
Evpu pos
Horizontal position within the measure.
Definition Others.h:355
Represents a single element in a chord suffix (e.g., a symbol like "1" or "+").
Definition Others.h:388
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:409
Evpu xdisp
Horizontal displacement in EVPU.
Definition Others.h:411
Prefix prefix
Optional prefix for the symbol, e.g., "plus".
Definition Others.h:414
bool isNumber
Indicates the symbol value is numeric rather than a codepoint.
Definition Others.h:413
char32_t symbol
Codepoint of glyph in font. (xml node is <suffix>)
Definition Others.h:410
Evpu ydisp
Vertical displacement in EVPU.
Definition Others.h:412
ChordSuffixElement(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:404
Prefix
Enum for chord symbol prefix options.
Definition Others.h:395
@ 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:416
Represents a list of repeat ending numbers for a RepeatEndingStart instance.
Definition Others.h:435
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:441
Represents an element in multimeasure clef list with its positioning and percentage values.
Definition Others.h:455
bool afterBarline
"Place Clef After Barline"
Definition Others.h:473
ShowClefMode clefMode
The clef mode from the <clefMode> element.
Definition Others.h:471
static const xml::XmlElementArray< ClefList > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int xEvpuOffset
The xEvpuOffset value from the <xEvpuOffset> element.
Definition Others.h:470
Edu xEduPos
Definition Others.h:465
ClefIndex clefIndex
The 0-based clef index from the <clef> element.
Definition Others.h:464
bool unlockVert
"Allow Vertical Drag"
Definition Others.h:472
ClefList(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:458
Evpu yEvpuPos
The yEvpuPos value from the <yEvpuPos> element.
Definition Others.h:468
int percent
The percentage value from the <percent> element.
Definition Others.h:469
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:475
Identifies the percussion map ("drum library") for a staff style with percussion notation.
Definition Others.h:506
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:510
Identifies the percussion map ("drum library") for a staff with percussion notation.
Definition Others.h:486
DrumStaff(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:489
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:495
static const xml::XmlElementArray< DrumStaff > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Cmper whichDrumLib
Definition Others.h:492
Represents the enclosure settings for text expressions.
Definition CommonClasses.h:536
Enclosure(const DocumentWeakPtr &document, Cmper partId=SCORE_PARTID, ShareMode shareMode=ShareMode::All, Cmper cmper=0)
Constructs an Enclosure object.
Definition CommonClasses.h:562
The name and font characteristics of fonts contained.
Definition Others.h:522
int charsetVal
Definition Others.h:541
bool calcIsSymbolFont() const
Calculates if this font is a symbol font.
Definition Others.h:563
FontDefinition(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:528
CharacterSetBank charsetBank
The character set bank.
Definition Others.h:540
CharacterSetBank
The character set for the bank.
Definition Others.h:534
std::string name
The font name e.g., "Broadway Copyist Text".
Definition Others.h:548
int family
Represents the <family> element, e.g., 0. (use unknown)
Definition Others.h:547
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:574
int pitch
Represents the <pitch> element, e.g., 0. (use unknown)
Definition Others.h:546
Represents the attributes of a TGF entry frame.
Definition Others.h:592
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:612
Frame(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci=0)
Constructor function.
Definition Others.h:595
MusxInstanceList< Entry > getEntries() const
Returns a vector of entries contained in the frame.
Definition Others.cpp:50
void 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:37
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:626
Edu startTime
The starting position within the measure. (Appears to be zero when startEntry and endEntry are suppli...
Definition Others.h:600
EntryNumber endEntry
End entry number for this frame. (Appears to be zero when startTime is supplied.)
Definition Others.h:599
EntryNumber startEntry
Start entry number for this frame. (Appears to be zero when startTime is supplied....
Definition Others.h:598
static const xml::XmlElementArray< Frame > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Information for a single string of the fretted instrument.
Definition Others.h:745
int pitch
Open-string MIDI pitch (60 is middle-C.)
Definition Others.h:747
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:732
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:777
ClefIndex speedyClef
The clef to use when entering notes for this instrument in Speedy Entry.
Definition Others.h:762
std::string name
Display name.
Definition Others.h:756
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:764
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:757
int numStrings
Number of strings (max is 24)
Definition Others.h:755
std::vector< int > fretSteps
Definition Others.h:758
FretInstrument(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:735
int numFrets
Number of frets.
Definition Others.h:754
A named group of fretboard diagrams associated with a specific fretboard instrument.
Definition Others.h:644
Cmper fretInstId
Fret instrument ID. (xml node <fretInstID>)
Definition Others.h:652
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:661
MusxInstance< FretInstrument > getFretInstrument() const
Get the FretInstrument associated with this fretboard group.
Definition Others.cpp:64
MusxInstanceList< details::FretboardDiagram > getFretboardDiagrams() const
Gets the array of details::FretboardDiagram instances associated with this fretboard group.
Definition Others.cpp:69
FretboardGroup(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor.
Definition Others.h:647
std::string name
Group name.
Definition Others.h:653
static const xml::XmlElementArray< FretboardGroup > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Fretboard diagram style: shapes, spacing, fonts, and offsets.
Definition Others.h:674
Efix stringGap
Gap between strings.
Definition Others.h:691
Efix fretWidth
Line width of frets.
Definition Others.h:694
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:719
Efix vertHandleOff
Vertical handle offset.
Definition Others.h:699
std::shared_ptr< FontInfo > fingNumFont
Font for fingering numbers.
Definition Others.h:702
bool showLastFret
Show the last fret marker.
Definition Others.h:682
static const xml::XmlElementArray< FretboardStyle > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Efix horzHandleOff
Horizontal handle offset.
Definition Others.h:698
Cmper fingStrShapeId
Fingering string shape ID. (xml node <fingStrShapeID>)
Definition Others.h:685
bool rotate
Rotate the diagram so the nut is on the left.
Definition Others.h:683
bool fingNumWhite
Render fingering numbers in white.
Definition Others.h:684
Cmper barreShapeId
Barre shape ID. (xml node <barreShapeID>)
Definition Others.h:688
Cmper openStrShapeId
Open string shape ID. (xml node <openStrShapeID>)
Definition Others.h:686
FretboardStyle(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:677
Efix whiteout
Whiteout thickness/extent. (xml node <whiteout>)
Definition Others.h:700
std::string fretNumText
Label preceding fret number (e.g., "fr."). (xml node <fretNumText>)
Definition Others.h:706
Efix horzFingNumOff
Horizontal fingering number offset.
Definition Others.h:703
Efix vertTextOff
Vertical text offset.
Definition Others.h:696
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:708
Efix stringWidth
Line width of strings.
Definition Others.h:693
std::string name
Style name. (xml node <name>)
Definition Others.h:705
std::shared_ptr< FontInfo > fretNumFont
Font for fret numbers.
Definition Others.h:701
Cmper customShapeId
Custom shape ID. (xml node <customShapeID>)
Definition Others.h:689
Efix fretGap
Gap between frets.
Definition Others.h:692
Cmper muteStrShapeId
Muted string shape ID. (xml node <muteStrShapeID>)
Definition Others.h:687
Efix nutWidth
Width of the nut.
Definition Others.h:695
Efix horzTextOff
Horizontal text offset.
Definition Others.h:697
int defNumFrets
Default number of frets.
Definition Others.h:690
Efix vertFingNumOff
Vertical fingering number offset.
Definition Others.h:704
Represents the attributes associated with a Finale key signature.
Definition Others.h:844
bool hasClefOctv
If true, the key signature has clef octave override tables. See details::ClefOctaveFlats and details:...
Definition Others.h:861
int gotoKey
Definition Others.h:857
KeyAttributes(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:847
int harmRefer
Definition Others.h:851
Cmper symbolList
Cmper of the symbol list that specifies the accidentals for the key. These are stored in incidents of...
Definition Others.h:860
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:854
Cmper fontSym
Definition Others.h:855
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:863
The key format for a custom key signature.
Definition Others.h:787
KeyFormat(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:790
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:793
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:796
unsigned scaleTones
Number of diatonic steps in the scale (almost always 7).
Definition Others.h:794
Represents a single <keych> element inside the <keyMap>.
Definition Others.h:815
bool diatonic
Whether the step is diatonic (true if <diatonic> is present).
Definition Others.h:817
unsigned hlevel
Harmonic level (scale degree) of this step. (xml node is <hlevel>)
Definition Others.h:818
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:806
std::vector< std::shared_ptr< StepElement > > steps
Collection of keych step elements.
Definition Others.h:823
unsigned countDiatonicSteps() const
Counts the number of diatonic steps in the steps array.
Definition Others.h:826
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:833
KeyMapArray(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:809
static const xml::XmlElementArray< KeyMapArray > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents the attributes of a Finale "layer".
Definition Others.h:876
bool freezeLayer
"Freeze Stems and Ties"
Definition Others.h:888
bool playback
If true, playback this layer. If false, the layer is muted.
Definition Others.h:889
int restOffset
"Adjust Floating Rests by " number of staff steps.
Definition Others.h:883
bool ignoreHiddenLayers
"Ignore Hidden Layers"
Definition Others.h:892
bool freezeStemsUp
If true, freeze stems up, otherwise freeze stems down. Only used if freezeLayer is true....
Definition Others.h:887
bool ignoreHiddenNotesOnly
"Ignore Layers Containing Only Hidden Notes" (xml node is <ignoreHidden>)
Definition Others.h:891
bool hideLayer
"Hide Layer when Inactive"
Definition Others.h:893
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:895
bool affectSpacing
"Affect Music Spacing" (xml node is <spacing>)
Definition Others.h:890
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:886
bool onlyIfOtherLayersHaveNotes
"Apply Settings Only if Notes are in Other Layers" (xml node is <floatLayer>)
Definition Others.h:885
LayerAttributes(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:879
bool freezTiesToStems
"Freeze Ties in the Same Direction as Stems" (xml node is <flipTies>)
Definition Others.h:884
Represents the name associated with a MarkingCategory.
Definition Others.h:1077
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1081
Represents a category of markings used.
Definition Others.h:999
bool usesTextFont
whether this category uses the text font
Definition Others.h:1038
Evpu horzOffset
Additional horizontal offset.
Definition Others.h:1033
bool usesMusicFont
whether this category uses the music font
Definition Others.h:1039
std::string getName() const
gets the name of the marking category
Definition Others.cpp:95
bool usesBreakMmRests
whether this category uses the breakMmRest setting
Definition Others.h:1043
bool usesNumberFont
whether this category uses the number font
Definition Others.h:1040
Evpu vertOffsetBaseline
Additional vertical offset.
Definition Others.h:1034
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1065
bool userCreated
whether the user created this category
Definition Others.h:1045
CategoryType
Enumeration for the type of marking category.
Definition Others.h:1006
@ 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:1060
std::shared_ptr< FontInfo > musicFont
Music font.
Definition Others.h:1025
static const xml::XmlElementArray< MarkingCategory > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu vertOffsetEntry
Additional vertical entry offset.
Definition Others.h:1035
std::shared_ptr< FontInfo > textFont
Text font.
Definition Others.h:1024
HorizontalTextJustification justification
Justification for the text within the marking.
Definition Others.h:1030
VerticalMeasExprAlign vertAlign
Vertical alignment for the marking.
Definition Others.h:1029
std::map< Cmper, MusxInstanceWeak< ShapeExpressionDef > > shapeExpressions
A list of shape expressions in this category.
Definition Others.h:1054
Cmper staffList
The staff list if useStaffList is true.
Definition Others.h:1048
bool breakMmRest
whether expressions in this category break multimeasure rests
Definition Others.h:1044
bool usesPositioning
whether this category uses the positioning elements (Finale UI only allows true)
Definition Others.h:1041
bool usesStaffList
whether this category uses a staff list
Definition Others.h:1042
MarkingCategory(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1018
HorizontalMeasExprAlign horzAlign
Horizontal alignment for the marking.
Definition Others.h:1028
CategoryType categoryType
Category type of the marking.
Definition Others.h:1021
std::shared_ptr< FontInfo > numberFont
Number font (not implemented in the Finale U.I.)
Definition Others.h:1026
Assigns a TextExpressionDef or ShapeExpressionDef to a measure.
Definition Others.h:1241
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:1285
ShowStaffList
Where to show the assignment (when there is no staff list.)
Definition Others.h:1273
@ 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:1290
bool hidden
True if the expression is hidden.
Definition Others.h:1292
int rehearsalMarkOffset
Restarts the rehearsal mark sequence at this 1-based sequence value. If this is zero,...
Definition Others.h:1297
ChannelSwitchTarget
The values for "On Playback Affect". The target channels are specified in the Score Manager dropdown ...
Definition Others.h:1250
@ 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 dontScaleWithEntry
Inverse of "Scale Expression with Attached Note".
Definition Others.h:1288
Cmper staffList
Definition Others.h:1294
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1319
int staffGroup
Assignment is part of a group of assignments associated with a staff list and should be modified as a...
Definition Others.h:1293
Cmper shapeExprId
The Cmper of a shape expression (xml node is <shapeExprID>)
Definition Others.h:1281
int graceNoteIndex
1-based index from leftmost grace note. 0 = main note.
Definition Others.h:1296
MusxInstance< TextExpressionDef > getTextExpression() const
Gets the assigned text expression.
Definition Others.cpp:187
ChannelSwitchTarget channelSwitch
"On Playback Affect" value.
Definition Others.h:1287
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:1307
PlaybackStart playbackStart
Where to start playback.
Definition Others.h:1289
MeasureExprAssign(const DocumentWeakPtr &document, Cmper ID, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:1244
Cmper textExprId
The Cmper of a text expression (xml node is <textExprID>)
Definition Others.h:1280
int layer
The 1-based layer number (1..4) to which this expression is assigned. (0 = all layers....
Definition Others.h:1286
Evpu horzEvpuOff
Horizontal Evpu offset from the default position.
Definition Others.h:1282
PlaybackStart
The choice where to start playback.
Definition Others.h:1263
@ 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:1291
Evpu vertEvpuOff
Vertical Evpu offset from the default position (xml node is <vertOff>)
Definition Others.h:1284
MusxInstance< ShapeExpressionDef > getShapeExpression() const
Gets the assigned shape expression.
Definition Others.cpp:195
Edu eduPosition
Horizontal Edu position (xml node is <horzEduOff>)
Definition Others.h:1283
Measure number data that can differ in score or part.
Definition Others.h:1356
bool showOnStart
"Show On Start of Staff System" (xml node is <startOfLine>)
Definition Others.h:1380
Evpu multipleXdisp
Horizontal offset for mid-system numbers.
Definition Others.h:1369
bool showOnEvery
"Show on Every" activates mid-system numbers. (xml node is <multipleOf>)
Definition Others.h:1381
bool useMultipleEncl
Use enclosure for mid-system settings.
Definition Others.h:1386
bool showOnBottom
Show measure numbers on the bottom staff.
Definition Others.h:1388
bool useStartEncl
Use enclosure for start-of-system settings.
Definition Others.h:1385
std::shared_ptr< Enclosure > startEnclosure
Enclosure settings for numbers at start of system.
Definition Others.h:1364
std::shared_ptr< FontInfo > startFont
The font used for numbers at start of system.
Definition Others.h:1361
AlignJustify multipleJustify
Justification for mid-system numbers.
Definition Others.h:1392
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:1363
AlignJustify startAlign
Alignment of numbers at the start of system.
Definition Others.h:1377
ScorePartData(const MusxInstance< MeasureNumberRegion > &parent)
Constructor.
Definition Others.h:1359
bool showOnTop
Show measure numbers on the top staff.
Definition Others.h:1387
int incidence
"Show on Every" value.
Definition Others.h:1376
Evpu startYdisp
Vertical offset for numbers at start of system.
Definition Others.h:1368
bool showMmRange
"Show Measure Ranges on Multimeasure Rests" (xml node is <mmRestRange>)
Definition Others.h:1383
bool excludeOthers
Exclude other staves.
Definition Others.h:1389
int startWith
"Beginning with" value. (This value is 0-based. The Finale UI adds 1 for user display....
Definition Others.h:1375
AlignJustify mmRestJustify
Justification for multi-measure rest ranges.
Definition Others.h:1393
AlignJustify startJustify
Justification for numbers at the start of system.
Definition Others.h:1391
char32_t rightMmBracketChar
UTF-32 code for the right bracket of multi-measure rest ranges.
Definition Others.h:1374
bool hideFirstMeasure
"Hide First Measure Number in Region." (xml node is <exceptFirstMeas>)
Definition Others.h:1382
std::shared_ptr< FontInfo > multipleFont
The font used for mid-system numbers.
Definition Others.h:1362
AlignJustify mmRestAlign
Alignment for multi-measure ranges.
Definition Others.h:1379
Evpu multipleYdisp
Vertical offset for mid-system numbers.
Definition Others.h:1370
bool showOnMmRest
"Show on Multimeasure Rests" (xml node is <mmRestRangeForce>)
Definition Others.h:1384
AlignJustify multipleAlign
Alignment for mid-system numbers.
Definition Others.h:1378
Evpu mmRestXdisp
Horizontal offset for multi-measure rest ranges.
Definition Others.h:1371
char32_t leftMmBracketChar
UTF-32 code for the left bracket of multi-measure rest ranges.
Definition Others.h:1373
std::shared_ptr< Enclosure > multipleEnclosure
Enclosure settings for mid-system numbers.
Definition Others.h:1365
Evpu startXdisp
Horizontal offset for numbers at start of system.
Definition Others.h:1367
Evpu mmRestYdisp
Vertical offset for multi-measure rest ranges.
Definition Others.h:1372
bool breakMmRest
Mid-system numbers break multimeasure rests.
Definition Others.h:1390
Represents the Measure Number Region with detailed font and enclosure settings for score and part dat...
Definition Others.h:1329
int calcDisplayNumberFor(MeasCmper measureId) const
Returns the visible number for a measure id with respect to the region.
Definition Others.cpp:218
bool smpteFrames
SMPTE frames (when showing real time measure numbers). This option supercedes timePrecision.
Definition Others.h:1415
std::shared_ptr< ScorePartData > scoreData
Score-wide measure number data.
Definition Others.h:1399
static MusxInstance< MeasureNumberRegion > findMeasure(const DocumentPtr &document, MeasCmper measureId)
Finds the measure number region containing a measure.
Definition Others.cpp:207
bool hidePage
Indicates if numbers are hidden in Page View.
Definition Others.h:1420
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:1419
AlignJustify
Alignment and justification options for measure numbers.
Definition Others.h:1338
@ Left
Left alignment or justification (the default value.)
std::string prefix
Text prefix for measure numbers (encoded UTF-8).
Definition Others.h:1407
MeasureNumberRegion(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1332
int base
The base used for measure number calculations. (Frequently 10 for numeric or 26 for alpha)
Definition Others.h:1405
bool doubleUp
Indicates "a, b, c...aa, bb, cc" number style: the symbols are repeated when they exceed the base.
Definition Others.h:1412
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:1417
TimePrecision timePrecision
Precision for real-time sequences.
Definition Others.h:1418
bool calcIncludesMeasure(MeasCmper measureId) const
Calculates whether the input measure is covered by this measure number region.
Definition Others.h:1424
TimePrecision
Precision for time display.
Definition Others.h:1347
bool noZero
Indicates the base has no zero value: true for alpha sequences and false for numeric sequences.
Definition Others.h:1411
char32_t startChar
UTF-32 code for the first character in the sequence. (Frequently '0', 'a', or 'A')
Definition Others.h:1404
MeasCmper startMeas
Starting measure number for the region.
Definition Others.h:1402
bool time
Display real time sequences rather than numbers or letters.
Definition Others.h:1413
std::string suffix
Text suffix for measure numbers (encoded UTF-8).
Definition Others.h:1408
MeasCmper endMeas
Ending measure number for the region (non-inclusive).
Definition Others.h:1403
int numberOffset
This value is 1 less than the "Starting Number" field in the Finale UI. (xml node is <offset>)
Definition Others.h:1406
int getStartNumber() const
Returns the starting measure number for this region.
Definition Others.h:1430
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:1410
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1442
std::shared_ptr< ScorePartData > partData
Part-specific measure number data.
Definition Others.h:1400
bool includeHours
Display hours (when showing real time measure numbers)
Definition Others.h:1414
bool useScoreInfoForPart
Use score-wide settings for parts.
Definition Others.h:1416
Represents the attributes of a measure.
Definition Others.h:1090
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:119
bool hasTextBlock
Indicates if the measure has a measure-assigned text block. See details::MeasureTextAssign.
Definition Others.h:1168
std::shared_ptr< KeySignature > globalKeySig
the global key signature on this measure. Guaranteed to be non-null. (xml node is <keySig>)
Definition Others.h:1141
Evpu width
"Ideal" measure width in Evpu. Page layout determines actual width.
Definition Others.h:1140
PositioningType
Positioning (music spacing) type for the measure.
Definition Others.h:1099
@ 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:1142
bool useDisplayTimesig
Indicates whether to use the display time signature.
Definition Others.h:1176
Evpu backSpaceExtra
Extra space at end of bar.
Definition Others.h:1149
bool breakMmRest
"Break a Multimeasure Rests" (xml node is <breakRest>)
Definition Others.h:1165
bool abbrvTime
Definition Others.h:1174
bool hasSmartShape
Indicates if the measure has a smart shape.
Definition Others.h:1152
bool groupBarlineOverride
Override the barline specified by a details::StaffGroup (if any)
Definition Others.h:1153
bool pageBreak
If true, begin new page here. (Behavior is weird if the measure is not the first of its system....
Definition Others.h:1181
bool hasEnding
Indicates the presence of a repeat ending. (xml node is <barEnding>)
Definition Others.h:1172
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:142
bool compositeNumerator
Indicates a composite numerator for the time signature. (xml node is <altNumTsig>)
Definition Others.h:1157
Cmper divBeat
Divisions per beat (Edu) or the Cmper to a timesigLower composite denominator list.
Definition Others.h:1143
bool showFullNames
"Show Full Staff & Group Names"
Definition Others.h:1154
bool compositeDispNumerator
Indicates a composite numerator for the display time signature. (xml node is <displayAltNumTsig>)
Definition Others.h:1179
bool evenlyAcrossMeasure
"Position Evenly Across Measure" (xml node is <indivPosDef>)
Definition Others.h:1161
BarlineType barlineType
Barline type. (xml node is <barline>)
Definition Others.h:1169
Cmper customBarShape
Cmper of Shape Designer ShapeDef for custom right barline.
Definition Others.h:1146
ShowKeySigMode
How and whether to show a Key Signature in this measure.
Definition Others.h:1125
@ 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:1110
@ 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:1145
int calcDisplayNumber() const
Calculates the visible number of the measure, based on the first MeasureNumberRegion that contains it...
Definition Others.cpp:108
Evpu frontSpaceExtra
Extra space at front of bar.
Definition Others.h:1148
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1228
bool compositeDenominator
Indicates a composite denominator for the time signature. (xml node is <altDenTsig>)
Definition Others.h:1158
ShowKeySigMode showKey
Show mode for key signatures.
Definition Others.h:1159
Cmper customLeftBarShape
Cmper of Shape Designer ShapeDef for custom left barline.
Definition Others.h:1147
ShowTimeSigMode
How and whether to show a Time Signature in this measure.
Definition Others.h:1134
bool calcShouldShowFullNames() const
Calculates if a measure should show full names vs. abbreviated names.
Definition Others.h:1184
bool hasOssia
Indicates if the measure has an ossia assigned. (xml node is <arbitMusic>)
Definition Others.h:1167
bool hasExpression
Indicates if the measure has an expression assigned. See MeasureExprAssign. (xml node is <hasExpr>)
Definition Others.h:1164
Cmper dispBeats
Displayed beats in the measure or the Cmper to a timesigUpper composite numerator list.
Definition Others.h:1144
bool hasMeasNumbIndivPos
Has individual measure numbering positioning. (xml node is <mnSepPlace>)
Definition Others.h:1155
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:1220
PositioningType positioningMode
Positioning type for the measure. (xml node is <posMode>)
Definition Others.h:1162
bool forwardRepeatBar
Indicates a forward repeat bar on this measure. (xml node is <forRepBar>)
Definition Others.h:1170
bool hasTextRepeat
Indicates the presence of one or more text repeat assigments. (xml node is <txtRepeats>)
Definition Others.h:1173
bool compositeDispDenominator
Indicates a composite denominator for the display time signature. (xml node is <displayAltDenTsig>)
Definition Others.h:1180
static const xml::XmlElementArray< Measure > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool noMeasNum
Inverse of "Include in Measure Numbering".
Definition Others.h:1166
BarlineType leftBarlineType
Left barline type. (xml node is <leftBarline>)
Definition Others.h:1178
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:177
ShowTimeSigMode showTime
Show mode for time signatures.
Definition Others.h:1160
bool allowSplitPoints
"Allow Horizontal Split Points" See SplitMeasure. (xml node is <posSplit>)
Definition Others.h:1156
Measure(const DocumentWeakPtr &document, Cmper measureId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1093
bool hasChord
Indicates the presence of one or more chords.
Definition Others.h:1177
bool hideCaution
"Hide Cautionary Clefs, Key, and Time Signature"
Definition Others.h:1151
bool breakWordExt
Barline ends word extensions on lyrics.
Definition Others.h:1150
bool backwardsRepeatBar
Indicates a backwards repeat bar on this measure. (xml node is <bacRepBar>)
Definition Others.h:1171
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:158
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:1215
bool beginNewSystem
"Begin a New Staff System" (xml node is <lineBreak>)
Definition Others.h:1163
Represents a group ID for a multi-staff setup.
Definition Others.h:1500
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1508
MultiStaffGroupId(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1503
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:1506
Represents a group of instruments spanning multiple staves.
Definition Others.h:1518
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:241
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1560
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:1550
std::vector< StaffCmper > staffNums
Vector of Cmper values representing up to 3 staff numbers.
Definition Others.h:1524
MusxInstance< details::StaffGroup > getStaffGroup(Cmper forPartId) const
Gets the group associated with this multistaff instrument, or nullptr if not found.
Definition Others.cpp:261
std::optional< size_t > getIndexOf(StaffCmper staffId) const
Returns the index of the input staffId or std::nullopt if not found.
Definition Others.h:1534
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:1521
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:277
MusxInstance< Staff > getFirstStaffInstance() const
Returns the first staff instance without any staff styles applied (with integrity check)
Definition Others.cpp:252
Represents the attributes of a multimeasure rest in the page layout.
Definition Others.h:1454
int symbolThreshold
If the number of rests is less than this value, symbols are used when useSymbols is true....
Definition Others.h:1466
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:1462
Cmper shapeDef
Cmper of Shape Designer ShapeDef that specifies the H-bar.
Definition Others.h:1463
bool useSymbols
Use symbols instead of an H-bar, based on symbolThreshold. (xml node is <useCharRestStyle>)
Definition Others.h:1471
int calcNumberOfMeasures() const
Calculates the number of measures spanned by this multimeasure rest.
Definition Others.h:1477
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:1482
MeasCmper nextMeas
Next measure after the multimeasure west.
Definition Others.h:1461
MultimeasureRest(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper startMeasure)
Constructor function.
Definition Others.h:1457
MeasCmper getStartMeasure() const
Get the start measure of this multimeasure rest.
Definition Others.h:1474
Evpu measWidth
Width of the multemeasure rest "measure" in Evpu. (xml node is <meaSpace>)
Definition Others.h:1460
Evpu shapeStartAdjust
Start adjustment for the H-bar shape in Evpu. (xml node is <startAdjust>)
Definition Others.h:1469
Evpu shapeEndAdjust
End adjustment for the shape in Evpu. (xml node is <endAdjust>)
Definition Others.h:1470
Evpu symbolSpacing
Spacing between symbols in Evpu. (xml node is <spacing>)
Definition Others.h:1467
int numStart
Definition Others.h:1464
Evpu numHorzAdj
Horizontal number adjustment in Evpu. (xml node is <numAdjX>)
Definition Others.h:1468
bool calcIsNumberVisible() const
Calculates if the number on this multimeasure rest is visible.
Definition Others.h:1480
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1490
Overrides abbreviated name positioning for Staff.
Definition Others.h:1571
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1575
Overrides full name positioning for Staff.
Definition Others.h:1599
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1603
Overrides abbreviated name positioning for StaffStyle.
Definition Others.h:1585
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1589
Overrides full name positioning for StaffStyle.
Definition Others.h:1613
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1617
Contains horizontal and vertical offsets, alignment, and expansion settings for name positioning.
Definition CommonClasses.h:638
NamePositioning(const DocumentWeakPtr &document, Cmper partId=SCORE_PARTID, ShareMode shareMode=ShareMode::All, Cmper cmper=0)
Constructs an NamePositioning object.
Definition CommonClasses.h:648
Represents a page text assignment with positioning and page range properties.
Definition Others.h:1683
PageCmper startPage
Definition Others.h:1708
Evpu yDisp
The vertical displacement from the default position. (xml tag is <ydisp>)
Definition Others.h:1707
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:1758
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1784
PageTextAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:1700
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:420
bool indRpPos
Individual right page positioning indicator. (xml tag is <indRpPos>)
Definition Others.h:1722
bool hPosPageEdge
Definition Others.h:1718
bool hidden
Indicates if the page text appears only on screen. (xml tag is <postIt>)
Definition Others.h:1716
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:447
static const xml::XmlElementArray< PageTextAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
PageCmper endPage
Definition Others.h:1710
Evpu rightPgXDisp
Horizontal displacement for right pages (if indRpPos is true). (xml tag is <rightPgXdisp>)
Definition Others.h:1723
PageAssignType oddEven
Determines if a multipage assignment appears on all, even (left), or odd (right) pages.
Definition Others.h:1713
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:400
MusxInstance< TextBlock > getTextBlock() const
Gets the TextBlock for this assignment, or nullptr if none.
Definition Others.cpp:395
PageAssignType
Which pages a multipage assignment appears on.
Definition Others.h:1690
@ 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:1724
bool isMultiAssignedThruLastPage() const
Returns true if this is a multi-page assignment that is assigned to through last page,...
Definition Others.h:1755
HorizontalAlignment hPosLp
Horizontal alignment on left or all pages (depending on indRpPos). (xml tag is <hposLp>)
Definition Others.h:1714
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:411
Evpu xDisp
The horizontal displacement from the default position. (xml tag is <xdisp>)
Definition Others.h:1706
std::optional< PageCmper > calcStartPageNumber(Cmper forPartId) const
Return the starting page number, taking into account leading blank pages in all parts....
Definition Others.cpp:429
VerticalAlignment vPos
Vertical alignment. (xml tag is <vpos>)
Definition Others.h:1717
HorizontalAlignment hPosRp
Horizontal alignment on right pages (if indRpPos is true). (xml tag is <hposRp>)
Definition Others.h:1715
bool isMultiPage() const
Returns true if this is a multi-page assignment.
Definition Others.h:1751
bool vPosPageEdge
Definition Others.h:1720
Cmper block
The Cmper for the assigned TextBlock. (xml tag is <block>)
Definition Others.h:1705
Represents the attributes of a page in the page layout.
Definition Others.h:1626
std::optional< SystemCmper > lastSystemId
Computed by the Resolver function calcSystemInfo. This value is not in the xml.
Definition Others.h:1642
util::Fraction calcPageScaling() const
Calculate the effect page scaling.
Definition Others.h:1650
Evpu margTop
Top margin in Evpu. (Sign reversed in Finale UI.)
Definition Others.h:1637
bool isBlank() const
is this a blank page
Definition Others.h:1647
Evpu width
Page width in Evpu.
Definition Others.h:1633
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1656
std::optional< MeasCmper > firstMeasureId
Computed by the Resolver function calcSystemInfo. This value is not in the xml.
Definition Others.h:1643
static const xml::XmlElementArray< Page > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int percent
Percent value (scaling factor).
Definition Others.h:1634
std::optional< MeasCmper > lastMeasureId
Computed by the Resolver function calcSystemInfo. This value is not in the xml.
Definition Others.h:1644
Evpu height
Page height in Evpu.
Definition Others.h:1632
static void calcSystemInfo(const DocumentPtr &document)
Resolver function used by factory to compute system and measure information for all pages.
Definition Others.cpp:331
Evpu margLeft
Left margin in Evpu.
Definition Others.h:1638
Evpu margBottom
Bottom margin in Evpu.
Definition Others.h:1639
Evpu margRight
Right margin in Evpu. (Sign reversed in Finale UI.)
Definition Others.h:1640
SystemCmper firstSystemId
First system on the page (-1 if page is blank). See StaffSystem. (xml node is <firstSystem>)
Definition Others.h:1635
bool holdMargins
"Hold Margins" (xml node is <scaleContentOnly>)
Definition Others.h:1636
Page(const DocumentWeakPtr &document, PageCmper pageId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1629
Represents the attributes of a Finale "partDef".
Definition Others.h:1796
Cmper nameId
Cmper of the part name TextBlock. (xml tag is <nameID>)
Definition Others.h:1803
Cmper calcSystemIuList(Cmper systemId) const
Return the StaffUsed cmper by this part for the specified system.
Definition Others.cpp:502
int smartMusicInst
SmartMusic instrument ID (-1 if not used).
Definition Others.h:1811
std::optional< PageCmper > calcPageNumberFromAssignmentId(PageCmper pageAssignmentId) const
Calculates a page number in this part from a page assignment ID. (See PageTextAssign....
Definition Others.cpp:530
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1852
int copies
Number of copies to print.
Definition Others.h:1805
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:1815
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:1808
Cmper defaultNameStaff
If non-zero, this points to the Staff that has the default name (if unspecified by nameId....
Definition Others.h:1812
int partOrder
Value that determines the order of listed parts in Finale's UI.
Definition Others.h:1804
static MusxInstanceList< PartDefinition > getInUserOrder(const DocumentPtr &document)
Return the linked parts sorted in UI order by partOrder.
Definition Others.cpp:521
PageCmper calcAssignmentIdFromPageNumber(PageCmper pageId) const
Calculates a page assignment ID from a page number in the part.
Definition Others.cpp:547
bool extractPart
Indicates if the part should be extracted.
Definition Others.h:1807
PartDefinition(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:1799
Cmper defaultNameGroup
If non-zero, this points to the details::StaffGroup that has the default name (if unspecified by name...
Definition Others.h:1813
int numberOfPages
The total number of pages in the part. This is not in the xml but calculated in factory::DocumentFact...
Definition Others.h:1816
util::EnigmaParsingContext getNameRawTextCtx() const
Get the raw text context for the part name if any.
Definition Others.cpp:467
static MusxInstance< PartDefinition > getScore(const DocumentPtr &document)
Return the instance for the score.
Definition Others.cpp:512
std::string getName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Get the part name if any.
Definition Others.cpp:478
bool useAsSmpInst
Indicates if the part is used as a SmartMusic instrument.
Definition Others.h:1810
bool isScore() const
Return true if this part corresponds to the score.
Definition Others.h:1825
bool needsRecalc
Indicates if the part needs update layout.
Definition Others.h:1809
bool printPart
Indicates the part should be printed.
Definition Others.h:1806
Represents global values that can vary by part.
Definition Others.h:1864
Cmper scrollViewIUlist
If this value is non-zero, it is the iuList Cmper of the current Staff List in Scroll View.
Definition Others.h:1872
bool showTransposed
If true, "Display Concert Pitch" is unchecked for the part.
Definition Others.h:1871
Cmper specialPartExtractionIUList
If non-zero, Special Part Extraction is in effect and this is the Cmper for its StaffUsed array.
Definition Others.h:1880
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:1867
Cmper studioViewIUlist
The iuList Cmper for Studio View.
Definition Others.h:1873
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1882
Defines voicing options for linked parts, either by selection rules or by assigning a layer.
Definition Others.h:1897
SingleLayerVoiceType
Choices for how notes are selected when the staff contains only one layer.
Definition Others.h:1916
@ 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:1904
bool select1st
Select the first note from top or bottom. (See selectFromBottom.)
Definition Others.h:1926
static const xml::XmlElementArray< PartVoicing > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool enabled
Indicates that this voicing is enabled.
Definition Others.h:1923
VoicingType voicingType
Determines how notes are selected from the staff.
Definition Others.h:1924
LayerIndex multiLayer
The 0-based LayerIndex of the layer to include when the staff contains multiple layers and voicingTyp...
Definition Others.h:1935
bool selectFromBottom
Definition Others.h:1931
VoicingType
Choices for how notes are selected from the staff.
Definition Others.h:1909
@ 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:1937
bool select5th
Select the fifth note from top or bottom. (See selectFromBottom.)
Definition Others.h:1930
SingleLayerVoiceType singleLayerVoiceType
Determines how notes are selected when the staff contains only one layer. (xml node is <singleVoiceTy...
Definition Others.h:1925
bool selectSingleNote
If true, always include any passages containing only a single note.
Definition Others.h:1933
bool select3rd
Select the third note from top or bottom. (See selectFromBottom.)
Definition Others.h:1928
bool select2nd
Select the second note from top or bottom. (See selectFromBottom.)
Definition Others.h:1927
LayerIndex singleLayer
The 0-based LayerIndex of the layer to uses when voicingType is UseSingleLayer.
Definition Others.h:1934
bool select4th
Select the fourth note from top or bottom. (See selectFromBottom.)
Definition Others.h:1929
Represents percussion notehead and staff position info for a given percussion note type.
Definition Others.h:1950
char32_t wholeNotehead
Codepoint for whole notehead (from percussion notehead font. See options::FontOptions::FontType::Perc...
Definition Others.h:1964
char32_t closedNotehead
Codepoint for closed notehead (from percussion notehead font. See options::FontOptions::FontType::Per...
Definition Others.h:1962
const percussion::PercussionNoteType & getNoteType() const
Gets a reference to the PercussionNoteType record for this note id.
Definition Others.cpp:562
PercussionNoteInfo(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:1953
int staffPosition
Definition Others.h:1957
PercussionNoteTypeId percNoteType
The percussion note type ID. Compare this with the value in details::PercussionNoteCode.
Definition Others.h:1956
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:1984
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:1965
char32_t halfNotehead
Codepoint for half notehead (from percussion notehead font. See options::FontOptions::FontType::Percu...
Definition Others.h:1963
PercussionNoteTypeId getBaseNoteTypeId() const
Gets the base PercussionNoteTypeId.
Definition Others.h:1972
int calcStaffReferencePosition() const
Calculates the fixed staff position for this percussion note relative to a staff's reference line.
Definition Others.h:1968
unsigned getNoteTypeOrderId() const
Gets the orderId.
Definition Others.h:1977
Represents a repeat-backward marker with positioning and behavior properties.
Definition Others.h:2022
bool resetOnAction
"Reset on Repeat Action" (xml tag is <clrOnChange>)
Definition Others.h:2037
Evpu rightVPos
The vertical position of the upper right bracket, relative to the default. (xml tag is <line2>)
Definition Others.h:2042
RepeatTriggerType trigger
The condition that triggers the jumpAction.
Definition Others.h:2039
static const xml::XmlElementArray< RepeatBack > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int passNumber
Definition Others.h:2029
Evpu leftVPos
The vertical position of the lower left bracket, relative to the default. (xml tag is <line1>)
Definition Others.h:2034
Evpu leftHPos
The horizontal position of the left bracket, relative to the default. (xml tag is <pos1>)
Definition Others.h:2033
Evpu rightHPos
The horizontal position of the upper right bracket, relative to the default. (xml tag is <pos2>)
Definition Others.h:2041
RepeatActionType jumpAction
The jump action for this repeat ending. The automatic jump is to the next ending. (xml tag is <action...
Definition Others.h:2038
Cmper staffList
If non-zero, specifies a staff list for which staves to show the ending.
Definition Others.h:2040
bool topStaffOnly
"Show On: Top Staff Only"
Definition Others.h:2036
int targetValue
Absolute or relative measure number, depending on jumpAction. (xml tag is <target>)
Definition Others.h:2032
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2044
RepeatBack(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2025
bool individualPlacement
"Allow Individual Edits Per Staff" (xml tag is <indivPlac>)
Definition Others.h:2035
Represents a repeat ending start marker in the document.
Definition Others.h:2057
Evpu leftVPos
The vertical position of the lower left bracket, relative to the default. (xml tag is <line1>)
Definition Others.h:2069
Evpu rightVPos
The vertical position of the upper right bracket, relative to the default. (xml tag is <line2>)
Definition Others.h:2080
RepeatTriggerType trigger
Definition Others.h:2073
Evpu leftHPos
The horizontal position of the lower left bracket, relative to the default. (xml tag is <pos1>)
Definition Others.h:2068
Evpu textVPos
The vertical position of the text relative to leftVPos. (xml tag is <textLine>)
Definition Others.h:2078
Evpu endLineVPos
The vertical offset of the final bracket, relative to rightVPos or 0 if the ending is open....
Definition Others.h:2077
Evpu rightHPos
The horizontal position of the upper right bracket, relative to the default. (xml tag is <pos2>)
Definition Others.h:2079
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:607
Evpu textHPos
The horizontal position of the text relative to leftHPos. (xml tag is <textPos>)
Definition Others.h:2067
int targetValue
Absolute or relative measure number, depending on jumpAction. (xml tag is <nextEnd>)
Definition Others.h:2066
bool jumpIfIgnoring
"Skip Ending if Ignoring Repeats" (xml tag is <jmpIgnore>)
Definition Others.h:2076
bool topStaffOnly
"Show On: Top Staff Only"
Definition Others.h:2071
Cmper staffList
If non-zero, specifies a staff list for which staves to show the ending.
Definition Others.h:2065
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:2091
RepeatActionType jumpAction
The jump action for this repeat ending. The automatic jump is to the next ending. (xml tag is <action...
Definition Others.h:2072
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2100
int calcEndingLength() const
Calculates the number of measures in the ending based on jumpAction.
Definition Others.cpp:571
bool individualPlacement
"Allow Individual Edits Per Staff" (xml tag is <indivPlac>)
Definition Others.h:2070
RepeatEndingStart(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2060
Represents the text associated with a RepeatEndingStart.
Definition Others.h:2114
static const xml::XmlElementArray< RepeatEndingText > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::string text
The text.
Definition Others.h:2120
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2122
RepeatEndingText(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2117
Represents a list of repeat ending numbers for a RepeatEndingStart instance.
Definition Others.h:2135
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:2141
Stores the properties and behaviors of shape expressions.
Definition Others.h:2151
int auxData1
Auxiliary data for the expression. (xml node is "auxdata1")
Definition Others.h:2166
bool masterShape
Whether this expression references the master copy of the shape.
Definition Others.h:2170
PlaybackType playbackType
Playback behavior of the text expression.
Definition Others.h:2173
int playPass
"Play Only on Pass" value.
Definition Others.h:2167
Cmper categoryId
Identifier for the category of the text expression. (xml node is "categoryID")
Definition Others.h:2162
bool breakMmRest
Whether the text breaks multimeasure rests.
Definition Others.h:2168
bool noPrint
Inverse of "Hidden" checkbox.
Definition Others.h:2171
int value
Value associated with the expression (e.g., velocity).
Definition Others.h:2164
std::string description
Description of the text expression. (xml node is "descStr")
Definition Others.h:2181
Cmper shapeDef
Identifier for the Shape Designer ShapeDef associated with this expression.
Definition Others.h:2161
bool useAuxData
Whether auxiliary data is used.
Definition Others.h:2169
static const xml::XmlElementArray< ShapeExpressionDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
HorizontalTextJustification horzExprJustification
Horizontal justification of the text expression.
Definition Others.h:2176
HorizontalMeasExprAlign horzMeasExprAlign
Horizontal alignment of the expression.
Definition Others.h:2174
Evpu yAdjustEntry
Vertical adjustment for entry alignment.
Definition Others.h:2178
RehearsalMarkStyle rehearsalMarkStyle
Auto-sequencing style for rehearsal marks.
Definition Others.h:2163
bool useCategoryPos
Whether to use category position.
Definition Others.h:2180
VerticalMeasExprAlign vertMeasExprAlign
Vertical alignment of the expression.
Definition Others.h:2175
ShapeExpressionDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:2158
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2183
Evpu measXAdjust
Horizontal adjustment for measurement alignment.
Definition Others.h:2177
Cmper execShape
Executable shape Cmper for playback (ShapeDef)
Definition Others.h:2165
bool noHorzStretch
Inverse of "Allow Horizontal Stretching" checkbox.
Definition Others.h:2172
Evpu yAdjustBaseline
Vertical adjustment for baseline alignment.
Definition Others.h:2179
Defines the split point(s) where a measure may be divided between two systems. A measure can only spl...
Definition Others.h:2212
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2218
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:2251
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2255
This class is used by MarkingCategory to define the staves for parts in a staff list.
Definition Others.h:2265
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2271
This class is used by MarkingCategory to define the staves for parts in a staff list.
Definition Others.h:2281
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2287
This class specified the name of a staff list used by RepeatEndingStart, RepeatBack,...
Definition Others.h:2297
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2301
This class is used by repeat classes to define the forced staves for parts in a staff list....
Definition Others.h:2328
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2334
This class is used by repeat classes to define the staves for parts in a staff list.
Definition Others.h:2311
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2317
This class is used by repeat classes to define the forced staves for the score in a staff list....
Definition Others.h:2361
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2367
This class is used by repeat classes to define the staves for the score in a staff list.
Definition Others.h:2344
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2350
Defines a staff list. See subclasses for how it is used.
Definition Others.h:2229
static const xml::XmlElementArray< StaffList > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
FloatingValues
Defines special assignment values used for floating staff assignments.
Definition Others.h:2236
@ 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:2377
bool hasStaffScaling
Indicates if any individual staff in the system has scaling applied.
Definition Others.h:2403
Evpu right
Right margin in Evpu. (Sign reversed in Finale UI.)
Definition Others.h:2398
util::Fraction calcSystemScaling() const
Calculate the effect system scaling.
Definition Others.h:2425
MeasCmper startMeas
Starting measure of the staff system. See Measure.
Definition Others.h:2385
bool scaleVert
"Resize Vertical Space"
Definition Others.h:2405
StaffSystem(const DocumentWeakPtr &document, Cmper staffSystemId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2380
Evpu left
Left margin in Evpu.
Definition Others.h:2397
Efix staffHeight
Staff height in Efix units. Note that this is different units than options::PageFormatOptions::PageFo...
Definition Others.h:2395
int calcNumMeasures() const
Calculates the number of measures on the system, encapsulating how endMeas works.
Definition Others.h:2419
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2444
bool holdMargins
"Hold Margins" (xml node is <scaleContentOnly>)
Definition Others.h:2406
double horzPercent
Definition Others.h:2392
bool placeEndSpaceBeforeBarline
Indicates that extra space is placed before the barline.
Definition Others.h:2404
Evpu distanceToPrev
Distance to the previous staff system in Evpu.
Definition Others.h:2407
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:641
Evpu bottom
Definition Others.h:2399
Evpu extraEndSystemSpace
Extra space at the end of the staff system in Evpu.
Definition Others.h:2409
Evpu top
Top margin in Evpu. (Sign reversed in Finale UI.)
Definition Others.h:2396
PageCmper pageId
The page this system is on. This values is not in the xml but is computed by the factory.
Definition Others.h:2411
bool noNames
Definition Others.h:2401
MeasCmper endMeas
Definition Others.h:2386
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:2415
void integrityCheck(const std::shared_ptr< Base > &ptrToThis) override
Allows a class to determine if it has been properly contructed by the factory and fix issues that it ...
Definition Others.h:2435
MusxInstance< others::Page > getPage() const
Gets the page this system is on.
Definition Others.cpp:636
Evpu extraStartSystemSpace
Extra space at the start of the staff system in Evpu.
Definition Others.h:2408
int ssysPercent
Staff system scaling percentage (100 means no scaling).
Definition Others.h:2394
An array of StaffUsed defines a set of staves in a staff system or in Scroll View.
Definition Others.h:2454
MusxInstance< Staff > getStaffInstance() const
Returns the Staff instance for this element, without any staff styles applied.
Definition Others.cpp:763
StaffUsed(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:2457
Evpu distFromTop
Distance from the top of the system (negative is down)
Definition Others.h:2461
StaffCmper staffId
Staff cmper (xml node is <inst>)
Definition Others.h:2460
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2473
std::shared_ptr< MusicRange > range
The music range. (Late versions of Finale may always include the entire piece here....
Definition Others.h:2462
static const xml::XmlElementArray< StaffUsed > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
util::Fraction calcEffectiveScaling() const
Calculates the effective scaling on this instance.
Definition Others.cpp:744
Locks a span of one or more measures so that they always appear in a StaffSystem together.
Definition Others.h:2487
MeasCmper endMeas
Definition Others.h:2493
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:2490
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2498
A single tempo change value entered with Finale's Tempo tool.
Definition Others.h:2518
int unit
Hardware ticks/sec. For Macs this is 1000.
Definition Others.h:2531
TempoChange(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:2521
int ratio
Definition Others.h:2526
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2542
static const xml::XmlElementArray< TempoChange > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int getAbsoluteTempo(NoteType noteType=NoteType::Quarter) const
Computes the absolute tempo represented by the TempoChange Instance.
Definition Others.cpp:663
Edu eduPosition
The position within the measure. (xml node is <eldur>)
Definition Others.h:2530
bool isRelative
Definition Others.h:2532
Represents the attributes of a Finale "textBlock".
Definition Others.h:2554
TextType textType
Text tag indicating the type of text block. (xml tag is <textTag>)
Definition Others.h:2591
bool noExpandSingleWord
Do not expand single word.
Definition Others.h:2585
bool roundCorners
Use rounded corners on frame.
Definition Others.h:2589
bool wordWrap
Wrap words (in frames)
Definition Others.h:2586
bool newPos36
Definition Others.h:2581
TextType
Enum for textTag values.
Definition Others.h:2563
@ 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:699
Efix cornerRadius
Corner radius for rounded corners.
Definition Others.h:2590
TextJustify justify
Justification (left, center, right, full, force full)
Definition Others.h:2580
Cmper shapeId
If non-zero, the Cmper of the custom frame shape. (xml tag is <shapeID>)
Definition Others.h:2574
bool showShape
Show shape.
Definition Others.h:2584
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:680
Evpu width
Width of standard frame. If zero, the width expands to fit the text.
Definition Others.h:2575
Evpu height
Height of standard frame. If zero, the height expands to fit the text.
Definition Others.h:2576
Evpu xAdd
Horizontal offset from handle.
Definition Others.h:2578
int lineSpacingPercentage
Line spacing percentage.
Definition Others.h:2577
Cmper textId
Cmper of the text block. (xml tag is <textID>)
Definition Others.h:2573
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:2569
Efix inset
Text inset from frame (all sides)
Definition Others.h:2587
Efix stdLineThickness
Thickness of standard frame line. (xml tag is <stdLine>)
Definition Others.h:2588
Evpu yAdd
Vertical offset from handle.
Definition Others.h:2579
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2605
Stores the properties and behaviors of text expressions.
Definition Others.h:2615
Evpu yAdjustBaseline
Vertical adjustment for baseline alignment.
Definition Others.h:2644
RehearsalMarkStyle rehearsalMarkStyle
Auto-sequencing style for rehearsal marks.
Definition Others.h:2627
bool matchPlayback
purpose needs investigation.
Definition Others.h:2633
bool hideMeasureNum
"Hide Measure Numbers" (used on Rehearsal Marks)
Definition Others.h:2632
util::EnigmaParsingContext getRawTextCtx(Cmper forPartId) const
Gets the raw text context for parsing this expression, or nullptr if none.
Definition Others.cpp:717
MusxInstance< Enclosure > getEnclosure() const
Gets the enclosure for this expression, or nullptr if none.
Definition Others.cpp:734
Cmper categoryId
Identifier for the category of the text expression.
Definition Others.h:2626
PlaybackType playbackType
Playback behavior of the text expression.
Definition Others.h:2638
Evpu measXAdjust
Horizontal adjustment for measurement alignment.
Definition Others.h:2642
int playPass
"Play Only on Pass" value.
Definition Others.h:2631
int auxData1
Auxiliary data for the expression. (xml node is "auxdata1")
Definition Others.h:2630
MusxInstance< TextBlock > getTextBlock() const
Gets the TextBlock for this expression, or nullptr if none.
Definition Others.cpp:712
bool useCategoryFonts
Whether to use category fonts.
Definition Others.h:2645
static const xml::XmlElementArray< TextExpressionDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Cmper execShape
Executable shape Cmper for playback (ShapeDef)
Definition Others.h:2629
std::string description
Description of the text expression. (xml node is "descStr")
Definition Others.h:2647
TextExpressionDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor.
Definition Others.h:2622
bool hasEnclosure
Whether the text expression has an enclosure. (xml node is "newEnclosure")
Definition Others.h:2635
int value
Value associated with the expression (e.g., velocity).
Definition Others.h:2628
bool createdByHp
Whether the text block was created by Finale's smart playback system.
Definition Others.h:2637
bool useAuxData
Whether auxiliary data is used.
Definition Others.h:2634
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2661
bool breakMmRest
Whether the text breaks multimeasure rests.
Definition Others.h:2636
VerticalMeasExprAlign vertMeasExprAlign
Vertical alignment of the expression.
Definition Others.h:2640
Evpu yAdjustEntry
Vertical adjustment for entry alignment.
Definition Others.h:2643
HorizontalMeasExprAlign horzMeasExprAlign
Horizontal alignment of the expression.
Definition Others.h:2639
bool useCategoryPos
Whether to use category position.
Definition Others.h:2646
HorizontalTextJustification horzExprJustification
Horizontal justification of the text expression.
Definition Others.h:2641
Cmper textIdKey
Identifier for the TextBlock associated with this.
Definition Others.h:2625
The enclosure for a text expression (if it exists)
Definition Others.h:2673
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2677
static const xml::XmlElementArray< TextExpressionEnclosure > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents a text repeat assignment with positioning and behavior properties.
Definition Others.h:2690
bool jumpOnMultiplePasses
If true, use TextRepeatDef::passList to get the passes and ignore passNumber. (xml tag is <multiActua...
Definition Others.h:2707
bool individualPlacement
"Allow Individual Edits Per Staff" (xml tag is <indivPlac>)
Definition Others.h:2704
Cmper textRepeatId
The Cmper of the assigned TextRepeatDef. (xml tag is <repnum>)
Definition Others.h:2702
Cmper staffList
If non-zero, specifies a staff list for which staves to show the ending.
Definition Others.h:2712
int targetValue
Measure number, TextRepeatDef ID, or offset, depending on jumpAction. (xml tag is <target>)
Definition Others.h:2701
TextRepeatAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper, Inci inci)
Constructor function.
Definition Others.h:2693
bool autoUpdate
"Auto-Update Target"
Definition Others.h:2709
int passNumber
Play Section N Times, Jump on Pass, Stop on Pass value, depending on jumpAction and trigger....
Definition Others.h:2700
bool topStaffOnly
"Show On: Top Staff Only"
Definition Others.h:2705
Evpu vertPos
The vertical offset from default of the text repeat marker.
Definition Others.h:2703
bool jumpIfIgnoring
"Jump if Ignoring Repeats" (xml tag is <jmpIgnore>)
Definition Others.h:2711
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2714
static const xml::XmlElementArray< TextRepeatAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
RepeatTriggerType trigger
The condition that triggers the jumpAction.
Definition Others.h:2710
RepeatActionType jumpAction
The jump action for this repeat assignment. (xml tag is <action>)
Definition Others.h:2708
bool resetOnAction
"Reset on Repeat Action" (xml tag is <clrOnChange>)
Definition Others.h:2706
Evpu horzPos
The horizontal offset from default of the text repeat marker.
Definition Others.h:2699
Defines text repeat elements with font styling and justification.
Definition Others.h:2730
PoundReplaceOption poundReplace
"Replace # With" choice.
Definition Others.h:2753
TextRepeatDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2744
PoundReplaceOption
Enum for poundReplace options.
Definition Others.h:2737
@ 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:2750
bool useThisFont
"Use This Font" (for the # substitution)
Definition Others.h:2752
std::vector< int > passList
If this vector contains elements, they define the repeat passes that apply to this instance.
Definition Others.h:2757
bool hasEnclosure
Whether the text repeat has an enclosure. (xml node is <newEnclosure>)
Definition Others.h:2751
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2759
static const xml::XmlElementArray< TextRepeatDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
HorizontalTextJustification justification
Definition Others.h:2754
The enclosure for a text expression (if it exists)
Definition Others.h:2772
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2776
static const xml::XmlElementArray< TextRepeatEnclosure > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents the text associated with a TextRepeatDef.
Definition Others.h:2789
TextRepeatText(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2792
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2799
static const xml::XmlElementArray< TextRepeatText > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::string text
The text.
Definition Others.h:2797
Represents an individual lower composite item in the time signature.
Definition Others.h:2824
static const xml::XmlElementArray< CompositeItem > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool startGroup
Indicates the start of a group.
Definition Others.h:2827
Edu unit
The size of the unit for this item. (xml node is <integer>)
Definition Others.h:2826
Represents the lower composite time signature array.
Definition Others.h:2812
static constexpr std::string_view XmlNodeName
XML node name.
Definition Others.h:2834
static const xml::XmlElementArray< TimeCompositeLower > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::vector< std::shared_ptr< CompositeItem > > items
composite items collection
Definition Others.h:2832
TimeCompositeLower(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2815
Represents an individual composite item in the time signature.
Definition Others.h:2859
util::Fraction fullFraction() const
Return the beats as a complete fraction.
Definition Others.h:2866
bool startGroup
Indicates the start of a group.
Definition Others.h:2863
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:2861
util::Fraction fraction
Fraction of beats (between 0 <= fraction < 1)
Definition Others.h:2862
Represents the upper composite time signature structure.
Definition Others.h:2847
static constexpr std::string_view XmlNodeName
XML node name.
Definition Others.h:2874
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:2872
TimeCompositeUpper(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper)
Constructor function.
Definition Others.h:2850
Maps the number of flats to a tonal center for a linear custom key. If there are zero flats or sharps...
Definition Others.h:2891
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Others.h:2897
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:2913
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:2919
Wrapper class for interpreting and rendering Enigma-style strings with insert handling.
Definition EnigmaString.h:415
AccidentalStyle
Enumeration to specify the type of accidental substitution representation.
Definition EnigmaString.h:191
@ Ascii
Use ASCII substitutions for accidentals.
static TextInsertCallback defaultInsertsCallback
Inserts callback to take all default insert subsitutions determined by parseEnigmaText.
Definition EnigmaString.h:339
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:336
A class to represent fractions with integer m_numerator and m_denominator, automatically reduced to s...
Definition Fraction.h:38
static Fraction fromPercent(int percent)
Constructs a Fraction from a percent (where 100 is 100%)
Definition Fraction.h:89
@ Info
Informational messages for general program operation.
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:904
@ 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:966
@ 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).
HorizontalTextJustification
Specifies the horizontal alignment for text expressions and marking categories.
Definition Others.h:984
HorizontalMeasExprAlign
Specifies the horizontal alignment relative to musical elements for an expression or marking category...
Definition Others.h:944
@ 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:1993
@ 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:919
@ 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....
RepeatTriggerType
Enum for the possible values of the <trigger> element.
Definition Others.h:2008
@ 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 CommonClasses.h:109
uint16_t PercussionNoteTypeId
multiple times in one layout. The rest are the "pure" note type. See percussion::PercussionNoteType.
Definition Fundamentals.h:74
constexpr double EFIX_PER_SPACE
Number of Efix units per space (spatium)
Definition Fundamentals.h:87
NoteType
Enum class representing note types based on EDU values.
Definition CommonClasses.h:58
int16_t MeasCmper
Enigma meas Cmper (may be negative when not applicable)
Definition Fundamentals.h:64
int32_t Efix
EFIX value (64 per EVPU, 64*288=18432 per inch)
Definition Fundamentals.h:60
std::shared_ptr< const T > MusxInstance
Defines the type of a musx instance stored in a pool.
Definition MusxInstance.h:35
unsigned int LayerIndex
Layer index (valid values are 0..3)
Definition Fundamentals.h:71
constexpr Cmper SCORE_PARTID
The part id of the score.
Definition Fundamentals.h:79
int16_t Inci
Enigma "incident" key type.
Definition Fundamentals.h:56
int32_t Evpu
EVPU value (288 per inch)
Definition Fundamentals.h:57
uint16_t Cmper
Enigma "comperator" key type.
Definition Fundamentals.h:55
uint16_t ClefIndex
Index into options::ClefOptions::clefDefs.
Definition Fundamentals.h:68
int32_t Edu
"Enigma Durational Units" value (1024 per quarter note)
Definition Fundamentals.h:61
std::weak_ptr< Document > DocumentWeakPtr
Shared weak Document pointer.
Definition BaseClasses.h:57
int32_t EntryNumber
Entry identifier.
Definition Fundamentals.h:69
std::shared_ptr< Document > DocumentPtr
Shared Document pointer.
Definition BaseClasses.h:55
int16_t StaffCmper
Enigma staff (staffId) Cmper (may be negative when not applicable)
Definition Fundamentals.h:65
int16_t SystemCmper
Enigma systems Cmper (may be negative when not applicable)
Definition Fundamentals.h:66
int16_t PageCmper
Enigma page Cmper (may be negative when not applicable)
Definition Fundamentals.h:67
std::vector< XmlElementDescriptor< T > > XmlElementArray
an array type for XmlElementDescriptor instances.
Definition XmlInterface.h:127
object model for musx file (enigmaxml)
Definition BaseClasses.h:36
Represents a percussion note type mapping entry.
Definition PercussionNoteType.h:40