MUSX Document Model
Loading...
Searching...
No Matches
Details.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#include <functional>
24#include <vector>
25#include <unordered_set>
26#include <cmath>
27#include <map>
28
29#include "music_theory/music_theory.hpp"
30
31#include "musx/util/EnigmaString.h"
32#include "musx/util/PseudoTieUtils.h"
33#include "MusxInstance.h"
34#include "BaseClasses.h"
35#include "CommonClasses.h"
36#include "Options.h"
37#include "Others.h"
38#include "Staff.h"
39 // do not add other dom class dependencies. Use Implementations.h for implementations that need total class access.
40
41namespace musx {
42namespace dom {
43
44class EntryInfoPtr;
45class EntryFrame;
46class EntryInfo;
47
48namespace others {
49class ChordSuffixElement;
50class FretboardGroup;
51class FretInstrument;
52class FretboardStyle;
53class StaffUsed;
54class Measure;
55class MultiStaffInstrumentGroup;
56class TextBlock;
57} // namespace others
58
59namespace texts {
60class ExpressionText;
61class LyricsChorus;
62class LyricsSection;
63class LyricsVerse;
64} // namespace others
65
70namespace details {
71
81{
82public:
84 explicit AccidentalAlterations(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
85 : NoteDetailsBase(document, partId, shareMode, entnum, inci), customFont(std::make_shared<FontInfo>(document))
86 {
87 }
88
90 int percent{};
93 char32_t altChar{};
94 std::shared_ptr<FontInfo> customFont;
95 bool useOwnFont{};
96 bool allowVertPos{};
97
98 NoteNumber getNoteId() const override { return noteId; }
99
100 constexpr static std::string_view XmlNodeName = "acciAlter";
102};
103
111{
112public:
124
125private:
126 struct PseudoTieShapeContext
127 {
131 };
132
133public:
142 explicit ArticulationAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
143 : EntryDetailsBase(document, partId, shareMode, entnum, inci) {}
144
151 bool aboveEntry{};
152 bool hide{};
153 bool neverStack{};
154 bool avoidSlur{};
156
159 [[nodiscard]] std::optional<utils::PseudoTieShapeInfo> calcIsPseudoTie(utils::PseudoTieMode mode,
160 const EntryInfoPtr& forStartEntry) const;
161
168 [[nodiscard]] std::optional<SelectedSymbolContext> calcSelectedSymbolContext(const EntryInfoPtr& entryInfo) const;
169
171 constexpr static std::string_view XmlNodeName = "articAssign";
172
173private:
179 [[nodiscard]] bool calcPlacementAbove(const MusxInstance<others::ArticulationDef>& definition,
180 const EntryInfoPtr& entryInfo) const;
184 [[nodiscard]] VerticalPlacement calcVerticalPlacement(const MusxInstance<others::ArticulationDef>& definition,
185 const EntryInfoPtr& entryInfo) const;
186 [[nodiscard]] std::optional<PseudoTieShapeContext> calcPseudoTieShapeContext(const EntryInfoPtr& forStartEntry) const;
187};
188
202class Baseline : public DetailsBase
203{
204public:
214 explicit Baseline(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper system, Cmper staff, std::optional<Inci> inci)
215 : DetailsBase(document, partId, shareMode, system, staff, inci) {}
216
220 std::optional<Cmper> lyricNumber{};
221
223};
224
230{
231public:
240 explicit BaselineNoInci(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper system, Cmper staff)
241 : Baseline(document, partId, shareMode, system, staff, std::nullopt) {}
242};
243
249{
250public:
252
253 constexpr static std::string_view XmlNodeName = "baselinesSysChords";
254};
255
261{
262public:
264
265 constexpr static std::string_view XmlNodeName = "baselinesSysExprAboveStaff";
266};
267
273{
274public:
276
277 constexpr static std::string_view XmlNodeName = "baselinesSysExprBelowStaff";
278};
279
285{
286public:
288
289 constexpr static std::string_view XmlNodeName = "baselinesSysFingerboards";
290};
291
297{
298public:
299 using Baseline::Baseline;
300
301 constexpr static std::string_view XmlNodeName = "baselinesSysLyricsChorus";
302};
303
309{
310public:
311 using Baseline::Baseline;
312
313 constexpr static std::string_view XmlNodeName = "baselinesSysLyricsSection";
314};
315
321{
322public:
323 using Baseline::Baseline;
324
325 constexpr static std::string_view XmlNodeName = "baselinesSysLyricsVerse";
326};
327
335{
336public:
338
340 constexpr static std::string_view XmlNodeName = "baselinesChords";
341};
342
350{
351public:
353
355 constexpr static std::string_view XmlNodeName = "baselinesExprAboveStaff";
356};
357
365{
366public:
368
370 constexpr static std::string_view XmlNodeName = "baselinesExprBelowStaff";
371};
372
380{
381public:
383
385 constexpr static std::string_view XmlNodeName = "baselinesFingerboards";
386};
387
395{
396public:
397 using Baseline::Baseline;
398
401 constexpr static std::string_view XmlNodeName = "baselinesLyricsChorus";
402};
403
411{
412public:
413 using Baseline::Baseline;
414
417 constexpr static std::string_view XmlNodeName = "baselinesLyricsSection";
418};
419
427{
428public:
429 using Baseline::Baseline;
430
433 constexpr static std::string_view XmlNodeName = "baselinesLyricsVerse";
434};
435
443{
444private:
445 bool m_active = true; // this value is set by the factory.
446
447protected:
449 template <typename SecondaryBeamType>
450 static bool calcIsFeatheredBeamImpl(const EntryInfoPtr& entryInfo, Evpu& outLeftY, Evpu& outRightY);
451
453 template <typename SecondaryBeamType>
455
456public:
465 explicit BeamAlterations(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, std::optional<Inci> inci = std::nullopt)
466 : EntryDetailsBase(document, partId, shareMode, entnum, inci) {}
467
470
479
484
487 bool isActive() const { return m_active; }
488
490 template <typename T,
491 std::enable_if_t<std::is_base_of_v<BeamAlterations, T>, int> = 0>
492 static void calcAllActiveFlags(const DocumentPtr& document);
493
497 static MusxInstance<BeamAlterations> getPrimaryForStem(const EntryInfoPtr& entryInfo, StemSelection stemSelection = StemSelection::MatchEntry); // must be defined in Details.cpp
498
503 static MusxInstance<BeamAlterations> getSecondaryForStem(const EntryInfoPtr& entryInfo, Edu dura, StemSelection stemSelection = StemSelection::MatchEntry); // must be defined in Details.cpp
504
506};
507
515{
516public:
524 explicit BeamAlterationsDownStem(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
525 : BeamAlterations(document, partId, shareMode, entnum) {}
526
527 constexpr static std::string_view XmlNodeName = "beamAltPrimDownStem";
528};
529
537{
538public:
546 explicit BeamAlterationsUpStem(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
547 : BeamAlterations(document, partId, shareMode, entnum) {}
548
549 constexpr static std::string_view XmlNodeName = "beamAltPrimUpStem";
550};
551
560{
561public:
569 explicit BeamExtension(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
570 : EntryDetailsBase(document, partId, shareMode, entnum) {}
571
574 unsigned mask{};
581
584 unsigned calcMaxExtension() const;
585
589 static MusxInstance<BeamExtension> getForStem(const EntryInfoPtr& entryInfo, StemSelection stemSelection = StemSelection::MatchEntry); // must be defined in Details.cpp
590
592};
593
599{
600public:
602
603 constexpr static std::string_view XmlNodeName = "beamExtendDownStem";
604};
605
611{
612public:
614
615 constexpr static std::string_view XmlNodeName = "beamExtendUpStem";
616};
617
627{
628public:
630 explicit BeamStubDirection(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
631 : EntryDetailsBase(document, partId, shareMode, entnum)
632 {
633 }
634
635 unsigned mask{};
638
640 bool isLeft() const { return mask != 0; }
641
642 constexpr static std::string_view XmlNodeName = "beamStub";
644};
645
658class Bracket : public DetailsBase
659{
660public:
662 explicit Bracket(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2, Inci inci)
663 : DetailsBase(document, partId, shareMode, cmper1, cmper2, inci)
664 {
665 }
666
668 explicit Bracket(const DocumentWeakPtr& document)
670 {
671 }
672
677 enum class BracketStyle : int
678 {
679 None = 0,
680 ThickLine = 1,
682 PianoBrace = 3,
683 Unknown4,
684 Unknown5,
686 Unknown7,
687 DeskBracket = 8
688 };
689
695
696 constexpr static std::string_view XmlNodeName = "brackSpec";
698};
699
708{
709 Cmper calcFretboardGroupCmper() const;
710
711public:
721 explicit ChordAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas, Inci inci)
722 : DetailsBase(document, partId, shareMode, staffId, meas, inci)
723 {
724 }
725
730 enum class BassPosition
731 {
732 AfterRoot, // default value may not appear in xml (but text appears in Finale binary)
733 UnderRoot,
734 Subtext
735 };
736
743 int rootAlter{};
745 bool playSuffix{};
746 bool showRoot{};
747 bool playRoot{};
749 bool showSuffix{};
752 int bassAlter{};
755 bool showAltBass{};
756 bool playAltBass{};
757 int capoValue{};
769 int chPercent{};
770 int fbPercent{};
771
774
778
782
783 constexpr static std::string_view XmlNodeName = "chordAssign";
785};
786
801class ClefOctaveFlats : public DetailsArray<int, 7>
802{
803 std::string_view xmlTag() const override { return XmlNodeName; }
804
805public:
807
808 constexpr static std::string_view XmlNodeName = "clefOctvFlats";
810};
811
830class ClefOctaveSharps : public DetailsArray<int, 7>
831{
832 std::string_view xmlTag() const override { return XmlNodeName; }
833
834public:
836
837 constexpr static std::string_view XmlNodeName = "clefOctvSharps";
839};
840
850{
851public:
853 explicit CrossStaff(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
854 : NoteDetailsBase(document, partId, shareMode, entnum, inci)
855 {
856 }
857
860
861 NoteNumber getNoteId() const override { return noteId; }
862
863 constexpr static std::string_view XmlNodeName = "crossStaff";
865};
866
876{
877public:
885 explicit CustomStem(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
886 : EntryDetailsBase(document, partId, shareMode, entnum) {}
887
891
898 bool calcIsHiddenStem() const;
899
903 static MusxInstance<CustomStem> getForStem(const EntryInfoPtr& entryInfo, StemSelection stemSelection = StemSelection::MatchEntry); // must be defined in Details.cpp
904
906};
907
915{
916public:
918
919 constexpr static std::string_view XmlNodeName = "stemDefDown";
920};
921
929{
930public:
932
933 constexpr static std::string_view XmlNodeName = "stemDefUp";
934};
935
945{
946public:
948 explicit DotAlterations(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
949 : NoteDetailsBase(document, partId, shareMode, entnum, inci)
950 {
951 }
952
957
958 NoteNumber getNoteId() const override { return noteId; }
959
960 constexpr static std::string_view XmlNodeName = "dotOffset";
962};
963
975{
976public:
984 explicit EntryPartFieldDetail(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
985 : EntryDetailsBase(document, partId, shareMode, entnum) {}
986
988 bool freezeStem{};
989 bool upStem{};
990
992 constexpr static std::string_view XmlNodeName = "entryPartFieldDetail";
993};
994
1004{
1005public:
1013 explicit EntrySize(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
1014 : EntryDetailsBase(document, partId, shareMode, entnum) {}
1015
1016 int percent{};
1017
1019 constexpr static std::string_view XmlNodeName = "entrySize";
1020};
1021
1035{
1036public:
1040 explicit FretboardDiagram(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2)
1041 : DetailsBase(document, partId, shareMode, cmper1, cmper2)
1042 {}
1043
1051 enum class Shape
1052 {
1053 None,
1054 Closed,
1055 Open,
1056 Muted,
1057 Custom
1058 };
1059
1064 class Cell
1065 {
1066 public:
1067 int string{};
1068 int fret{};
1071
1073 };
1074
1079 class Barre
1080 {
1081 public:
1082 int fret{};
1085
1087 };
1088
1089 int numFrets{};
1091 bool lock{};
1092 bool showNum{};
1095
1096 std::vector<std::shared_ptr<Cell>> cells;
1097 std::vector<std::shared_ptr<Barre>> barres;
1098
1099 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1100 {
1101 this->DetailsBase::integrityCheck(ptrToThis);
1102 if (numFretCells != int(cells.size())) {
1103 const int oldVal = numFretCells;
1104 numFretCells = int(cells.size());
1105 MUSX_INTEGRITY_ERROR("FretboardDiagram " + std::to_string(getCmper1()) + ", " + std::to_string(getCmper2())
1106 + " specifies the wrong number of cells (" + std::to_string(oldVal) + ").");
1107 }
1108 if (numFretBarres != int(barres.size())) {
1109 const int oldVal = numFretBarres;
1110 numFretBarres = int(barres.size());
1111 MUSX_INTEGRITY_ERROR("FretboardDiagram " + std::to_string(getCmper1()) + ", " + std::to_string(getCmper2())
1112 + " specifies the wrong number of barres (" + std::to_string(oldVal) + ").");
1113 }
1114 }
1115
1116 constexpr static std::string_view XmlNodeName = "fretboard";
1118};
1119
1128{
1129public:
1138 explicit GFrameHold(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas)
1139 : DetailsBase(document, partId, shareMode, staffId, meas), frames(MAX_LAYERS) {}
1140
1141 // Public properties corresponding to the XML structure
1142 std::optional<ClefIndex> clefId;
1148 std::vector<Cmper> frames;
1149
1152
1155
1157 bool calcIsMultiLayer() const
1158 {
1159 return std::count_if(frames.begin(), frames.end(), [](Cmper frameId) { return frameId != 0; }) > 1;
1160 }
1161
1164 {
1165 return std::find_if(frames.begin(), frames.end(), [](Cmper frameId) { return frameId != 0; }) != frames.end();
1166 }
1167
1171 std::pair<MusxInstance<others::Frame>, Edu> findLayerFrame(LayerIndex layerIndex) const;
1172
1176 bool iterateRawEntries(std::function<bool(const MusxInstance<Entry>&, LayerIndex)> iterator) const;
1177
1178 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1179 {
1180 this->DetailsBase::integrityCheck(ptrToThis);
1181 if (clefListId && clefId.has_value()) {
1182 MUSX_INTEGRITY_ERROR("GFrameHold for staff " + std::to_string(getCmper1()) + " and measure " + std::to_string(getCmper2()) + " has both clef and clef list.");
1183 }
1184 if (!clefListId && !clefId.has_value()) {
1185 MUSX_INTEGRITY_ERROR("GFrameHold for staff " + std::to_string(getCmper1()) + " and measure " + std::to_string(getCmper2()) + " has neither clef nor clef list.");
1186 }
1187 }
1188
1189 constexpr static std::string_view XmlNodeName = "gfhold";
1191};
1192
1201{
1202public:
1211 explicit IndependentStaffDetails(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas)
1212 : DetailsBase(document, partId, shareMode, staffId, meas)
1213 {
1214 }
1215
1216 // Key signature info
1217 std::shared_ptr<KeySignature> keySig;
1218 bool hasKey{};
1219
1220 // Time signature info
1225
1228 bool altNumTsig{};
1229 bool altDenTsig{};
1232 bool hasTime{};
1233
1236
1240
1241 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1242 {
1243 DetailsBase::integrityCheck(ptrToThis);
1244 if (hasKey && !keySig) {
1245 keySig = std::make_shared<KeySignature>(getDocument());
1246 }
1247 }
1248
1249 constexpr static std::string_view XmlNodeName = "floats";
1251};
1252
1261public:
1263 explicit KeySymbolListElement(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2)
1264 : DetailsBase(document, partId, shareMode, cmper1, cmper2) {}
1265
1266 std::string accidentalString;
1268
1271 return static_cast<int16_t>(getCmper2());
1272 }
1273
1274 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1275 {
1276 DetailsBase::integrityCheck(ptrToThis);
1277 if (std::abs(getAlterationValue()) > MAX_ALTERATIONS) {
1279 "KeySymbolListElement for list " + std::to_string(getCmper1()) + " has invalid value " + std::to_string(getAlterationValue()));
1280 }
1281 }
1282
1283 constexpr static std::string_view XmlNodeName = "keySymList";
1285};
1286
1292{
1293public:
1302 explicit LyricAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
1303 : EntryDetailsBase(document, partId, shareMode, entnum, inci) {}
1304
1306 unsigned syllable{};
1314
1317
1319 virtual LyricTextType getLyricTextType() const = 0;
1320
1325
1330
1332};
1333
1341{
1342public:
1344
1346 LyricTextType getLyricTextType() const override;
1347
1350 constexpr static std::string_view XmlNodeName = "lyrDataChorus";
1351};
1352
1360{
1361public:
1363
1365 LyricTextType getLyricTextType() const override;
1366
1369 constexpr static std::string_view XmlNodeName = "lyrDataSection";
1370};
1371
1379{
1380public:
1382
1384 LyricTextType getLyricTextType() const override;
1385
1388 constexpr static std::string_view XmlNodeName = "lyrDataVerse";
1389};
1390
1399{
1400public:
1409 explicit LyricEntryInfo(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, std::optional<Inci> inci = std::nullopt)
1410 : EntryDetailsBase(document, partId, shareMode, entnum, inci) {}
1411
1412 std::optional<AlignJustify> justify{};
1413 std::optional<AlignJustify> align{};
1414
1416 constexpr static std::string_view XmlNodeName = "lyricEntryInfo";
1417};
1418
1427{
1428public:
1438 explicit MeasureNumberIndividualPositioning(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas, Inci inci)
1439 : DetailsBase(document, partId, shareMode, staffId, meas, inci)
1440 {
1441 }
1442
1448 {
1449 None,
1450 Show,
1451 Hide
1452 };
1453
1460 std::shared_ptr<others::Enclosure> enclosure;
1461
1462 constexpr static std::string_view XmlNodeName = "measNumbIndivPos";
1464};
1465
1482{
1483public:
1493 explicit MeasureTextAssign(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas, Inci inci)
1494 : DetailsBase(document, partId, shareMode, staffId, meas, inci)
1495 {
1496 }
1497
1503 bool hidden{};
1504
1507
1510
1511 constexpr static std::string_view XmlNodeName = "measTextAssign";
1513};
1514
1524{
1525public:
1527 explicit NoteAlterations(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
1528 : NoteDetailsBase(document, partId, shareMode, entnum, inci), customFont(new FontInfo(document))
1529 {
1530 }
1531
1533 int percent{};
1535 char32_t altNhead{};
1536 bool useOwnFont{};
1537 std::shared_ptr<FontInfo> customFont{};
1540 bool enharmonic{};
1542
1543 NoteNumber getNoteId() const override { return noteId; }
1544
1545 constexpr static std::string_view XmlNodeName = "noteAlter";
1547};
1548
1558{
1559public:
1561 explicit PercussionNoteCode(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
1562 : NoteDetailsBase(document, partId, shareMode, entnum, inci)
1563 {
1564 }
1565
1568
1569 NoteNumber getNoteId() const override { return noteId; }
1570
1571 constexpr static std::string_view XmlNodeName = "percussionNoteCode";
1573};
1574
1582{
1583public:
1593 explicit SecondaryBeamAlterationsDownStem(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
1594 : BeamAlterations(document, partId, shareMode, entnum, inci) {}
1595
1602 static bool calcIsFeatheredBeam(const EntryInfoPtr& entryInfo, Evpu& outLeftY, Evpu& outRightY)
1603 { return calcIsFeatheredBeamImpl<SecondaryBeamAlterationsDownStem>(entryInfo, outLeftY, outRightY); }
1604
1605 constexpr static std::string_view XmlNodeName = "beamAltSecDownStem";
1606};
1607
1615{
1616public:
1626 explicit SecondaryBeamAlterationsUpStem(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
1627 : BeamAlterations(document, partId, shareMode, entnum, inci) {}
1628
1635 static bool calcIsFeatheredBeam(const EntryInfoPtr& entryInfo, Evpu& outLeftY, Evpu& outRightY)
1636 { return calcIsFeatheredBeamImpl<SecondaryBeamAlterationsUpStem>(entryInfo, outLeftY, outRightY); }
1637
1638 constexpr static std::string_view XmlNodeName = "beamAltSecUpStem";
1639};
1640
1650{
1651public:
1653 explicit SecondaryBeamBreak(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
1654 : EntryDetailsBase(document, partId, shareMode, entnum)
1655 {
1656 }
1657
1658 unsigned mask{};
1660
1668 {
1669 MUSX_ASSERT_IF(!mask || mask >= unsigned(NoteType::Eighth)) {
1670 return 0; // invalid mask values have already been flagged and supposedly corrected by #integrityCheck.
1671 }
1672 for (unsigned shift = 0; true; shift++) {
1673 if (mask & (unsigned(NoteType::Note16th) >> shift)) {
1674 return shift + 2; // the 2nd beam is the 16th beam and the first one we checked.
1675 }
1676 }
1677 assert(false); // should not be able to get here
1678 return 0;
1679 }
1680
1681 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1682 {
1684 if (!mask) {
1685 mask = unsigned(NoteType::Note4096th);
1686 MUSX_INTEGRITY_ERROR("Secondary beam break for entry" + std::to_string(getEntryNumber()) + " has no breaks.");
1687 }
1688 if (mask >= unsigned(NoteType::Eighth)) {
1689 mask = unsigned(NoteType::Eighth) - 1;
1690 MUSX_INTEGRITY_ERROR("Secondary beam break for entry" + std::to_string(getEntryNumber()) + " specifies a value that cannot be a secondary beam.");
1691 }
1692 }
1693
1694 constexpr static std::string_view XmlNodeName = "secBeamBreak";
1696};
1697
1708{
1709public:
1712 explicit ShapeNoteBase(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2)
1713 : DetailsBase(document, partId, shareMode, cmper1, cmper2)
1714 {}
1715
1720 {
1721 public:
1722 char32_t doubleWhole{};
1723 char32_t whole{};
1724 char32_t half{};
1725 char32_t quarter{};
1726
1728 };
1729
1730 std::vector<std::shared_ptr<NoteShapes>> noteShapes;
1733
1734 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1735 {
1736 this->DetailsBase::integrityCheck(ptrToThis);
1737 const size_t currentSize = noteShapes.size();
1738 if (currentSize < music_theory::STANDARD_DIATONIC_STEPS) {
1739 for (size_t x = currentSize; x < music_theory::STANDARD_DIATONIC_STEPS; x++) {
1740 noteShapes.emplace_back(std::make_shared<NoteShapes>());
1741 }
1742 MUSX_INTEGRITY_ERROR("For ShapeNoteBase cmper " + std::to_string(getCmper1()) + ", only " + std::to_string(currentSize)
1743 + " note shapes were provided but at least " + std::to_string(music_theory::STANDARD_DIATONIC_STEPS) + " were expected.");
1744 }
1745 }
1746
1748};
1749
1758{
1759public:
1761
1762 constexpr static std::string_view XmlNodeName = "shapeNote";
1763};
1764
1773{
1774public:
1776
1777 constexpr static std::string_view XmlNodeName = "shapeNoteStyle";
1778};
1779
1786class StaffGroup : public DetailsBase {
1787public:
1796 StaffGroup(const DocumentWeakPtr& document, Cmper partId, EnigmaBase::ShareMode shareMode, Cmper cmper1, Cmper cmper2)
1797 : DetailsBase(document, partId, shareMode, cmper1, cmper2) {}
1798
1801
1807 {
1808 OnlyOnStaves,
1811 };
1812
1817 enum class HideStaves
1818 {
1819 Normally,
1820 AsGroup,
1821 None
1822 };
1823
1824 // Public properties corresponding to the XML structure, ordered as they appear in the XML
1832 std::shared_ptr<Bracket> bracket{};
1837 bool ownBarline{};
1840 bool hideName{};
1849
1855 std::unordered_set<StaffCmper> staves;
1856
1859
1863
1866
1870
1873
1877
1883
1887
1893
1895 bool isAllMeasures() const
1896 { return (startMeas == 1 && endMeas == (std::numeric_limits<MeasCmper>::max)()); }
1897
1898 void integrityCheck(const std::shared_ptr<EnigmaBase>& ptrToThis) override
1899 {
1900 this->DetailsBase::integrityCheck(ptrToThis);
1901 if (endMeas <= startMeas || startMeas <= 0) {
1902 MUSX_INTEGRITY_ERROR("Staff group " + std::to_string(getCmper2()) + " for part " + std::to_string(getSourcePartId())
1903 + " starts at measure " + std::to_string(startMeas) + " and ends at measure " + std::to_string(endMeas));
1904 }
1905 if (!bracket) {
1906 // this is not an error. Finale omits the bracket node for groups with entirely default bracket info.
1907 bracket = std::make_shared<Bracket>(getDocument());
1908 }
1909 }
1910
1911 constexpr static std::string_view XmlNodeName = "staffGroup";
1913};
1914
1920{
1921public:
1922 std::optional<size_t> startSlot;
1923 std::optional<size_t> endSlot;
1926
1930 StaffGroupInfo(const MusxInstance<StaffGroup>& staffGroup,
1931 const MusxInstanceList<others::StaffUsed>& inpSysStaves);
1932
1934 std::optional<size_t> numStaves() const
1935 {
1936 if (startSlot && endSlot) {
1937 return endSlot.value() - startSlot.value() + 1;
1938 }
1939 return std::nullopt;
1940 }
1941
1946 void iterateStaves(MeasCmper measId, Edu eduPosition, std::function<bool(const MusxInstance<others::StaffComposite>&)> iterator) const;
1947
1951 bool calcIsSingleInstrumentSection(MeasCmper measureId) const;
1952
1957 static std::vector<StaffGroupInfo> getGroupsAtMeasure(MeasCmper measureId, Cmper linkedPartId,
1959};
1960
1970{
1971public:
1980 explicit StaffSize(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, Cmper system, Cmper staffId)
1981 : DetailsBase(document, partId, shareMode, system, staffId)
1982 {
1983 }
1984
1986
1990
1991 constexpr static std::string_view XmlNodeName = "staffSize";
1993};
1994
2004{
2005public:
2007 explicit StemAlterations(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
2008 : EntryDetailsBase(document, partId, shareMode, entnum)
2009 {
2010 }
2011
2016
2017 constexpr static std::string_view XmlNodeName = "stemAdjust";
2019};
2020
2030{
2031public:
2033
2034 constexpr static std::string_view XmlNodeName = "beamStemAdjust";
2035};
2036
2047{
2048public:
2050 explicit TablatureNoteMods(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
2051 : NoteDetailsBase(document, partId, shareMode, entnum, inci)
2052 {
2053 }
2054
2058
2059 NoteNumber getNoteId() const override { return noteId; }
2060
2061 constexpr static std::string_view XmlNodeName = "tabAlter";
2063};
2064
2070{
2071public:
2073 explicit TieAlterBase(const DocumentWeakPtr& document, Cmper partId, EnigmaBase::ShareMode shareMode, EntryNumber entnum, Inci inci)
2074 : NoteDetailsBase(document, partId, shareMode, entnum, inci)
2075 {
2076 }
2077
2081 static MusxInstance<TieAlterBase> fromNoteInfo(const NoteInfoPtr& noteInfoPtr, bool forTieEnd = false);
2082
2110
2116 {
2117 None,
2118 Under,
2119 Over
2120 };
2121
2127 bool outerLocal{};
2128 bool outerOn{};
2137 bool down{};
2141 bool breakKeyOn{};
2144 bool stPtAdjOn{};
2147 bool enPtAdjOn{};
2154 bool ctlPtAdjOn{};
2155 bool ctlPtFixed{};
2157
2158 NoteNumber getNoteId() const override { return noteId; }
2159
2161};
2162
2172{
2173public:
2175
2176 constexpr static std::string_view XmlNodeName = "tieAlterEnd";
2178};
2179
2189{
2190public:
2192
2193 constexpr static std::string_view XmlNodeName = "tieAlterStart";
2195};
2196
2206{
2207public:
2209 explicit TupletDef(const DocumentWeakPtr& document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
2210 : EntryDetailsBase(document, partId, shareMode, entnum, inci)
2211 {
2212 }
2213
2222
2227 bool alwaysFlat{};
2228 bool fullDura{};
2230 bool avoidStaff{};
2232 bool hidden{};
2239 bool allowHorz{};
2242 bool matchHooks{};
2251
2254
2257
2260
2261 constexpr static std::string_view XmlNodeName = "tupletDef";
2263};
2264
2265} // namespace details
2266} // namespace dom
2267} // namespace entries
Template pattern for DetailsBase items consisting of an array of a single item.
Definition BaseClasses.h:499
DetailsArray(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2)
Constructor function.
Definition BaseClasses.h:505
EnigmaBase class for all "details" types.
Definition BaseClasses.h:376
Cmper getCmper1() const
Gets the cmper1 key value.
Definition BaseClasses.h:420
Cmper getCmper2() const
Gets the cmper2 key value.
Definition BaseClasses.h:425
DocumentPtr getDocument() const
Gets a reference to the Document.
Definition DocumentElement.h:58
Base for DOM classes that are represented in EnigmaData.
Definition BaseClasses.h:81
ShareMode
Describes how this instance is shared between part and score.
Definition BaseClasses.h:91
Cmper getSourcePartId() const
Gets the source partId for this instance. If an instance is fully shared with the score,...
Definition BaseClasses.h:104
virtual void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis)
Performs a final consistency check after population.
Definition BaseClasses.h:125
EnigmaBase class for all "details" types that use entnum rather than cmper and cmper.
Definition BaseClasses.h:448
EntryNumber getEntryNumber() const
Gets the entnum key value.
Definition BaseClasses.h:487
StemSelection
The options for choosing which version to retrieve for stem-specific details.
Definition BaseClasses.h:453
@ MatchEntry
match entry's stem direction
Wraps a frame of shared_ptr<const EntryInfo> and an index for per entry access. This class manages ow...
Definition Entries.h:553
Represents the default font settings for a particular element type.
Definition CommonClasses.h:67
Provides optional per-type extension methods for MusxInstanceList.
Definition MusxInstance.h:118
EnigmaBase class note details. Note details are entry details associated with a note ID.
Definition BaseClasses.h:530
Wraps an EntryInfo instance and a note index.
Definition Entries.h:1616
Represents display alterations to an accidental for a specific note.
Definition Details.h:81
Evpu hOffset
Horizontal offset: positive is right. (XML node: <axDisp>)
Definition Details.h:92
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:98
bool useOwnFont
Whether to use customFont.
Definition Details.h:95
std::shared_ptr< FontInfo > customFont
Font settings for the accidental (populated from <fontID>, <fontSize>, and <efx>)
Definition Details.h:94
NoteNumber noteId
The ID of the note being altered.
Definition Details.h:89
AccidentalAlterations(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor.
Definition Details.h:84
Evpu vOffset
Vertical offset: positive is up. (XML node: <ayDisp>)
Definition Details.h:91
char32_t altChar
If non-zero, the character to use for the accidental. (Utf-32 if the font is a Unicode font....
Definition Details.h:93
bool allowVertPos
Whether to use vOffset.
Definition Details.h:96
int percent
The percentage size for the accidental, where 100 is 100%.
Definition Details.h:90
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:100
static const xml::XmlElementArray< AccidentalAlterations > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Assigns an articulation to an entry.
Definition Details.h:111
ArticulationAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:142
Cmper articDef
The articulation definition ID.
Definition Details.h:145
bool hide
Inverse of "Show" option.
Definition Details.h:152
bool neverStack
Whether the articulation should never stack relative to others.
Definition Details.h:153
int numSlursAvoided
Number of slurs avoided. Used internally by Finale's stacking algorithm.
Definition Details.h:155
bool avoidSlur
Whether the articulation should avoid slurs.
Definition Details.h:154
std::optional< SelectedSymbolContext > calcSelectedSymbolContext(const EntryInfoPtr &entryInfo) const
Resolves the symbol information used by this articulation assignment on the specified entry.
Definition Details.cpp:147
bool aboveEntry
When overridePlacement is true: whether the articulation is forced above or below the entry.
Definition Details.h:151
Evpu horzOffset
Horizontal offset from the default position.
Definition Details.h:146
bool overridePlacement
Whether the default placement is overridden.
Definition Details.h:150
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:171
static const xml::XmlElementArray< ArticulationAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
std::optional< utils::PseudoTieShapeInfo > calcIsPseudoTie(utils::PseudoTieMode mode, const EntryInfoPtr &forStartEntry) const
Calculates the pseudo-tie shape info if this articulation is acting as a pseudo tie for the specified...
Definition Details.cpp:205
Evpu vertOffset
Vertical offset from the default position.
Definition Details.h:148
Evpu vertAdd
Vertical displacement for character copying. (E.g., arpeggiated chord lines)
Definition Details.h:149
Evpu horzAdd
Horizontal displacement for character copying. (E.g., trill lines)
Definition Details.h:147
Contains the baseline offsets for chords.
Definition Details.h:335
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:340
Contains the baseline offsets for expressions above the staff.
Definition Details.h:350
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:355
Contains the baseline offsets for expressions below the staff.
Definition Details.h:365
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:370
Contains the baseline offsets for fretboards.
Definition Details.h:380
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:385
Contains the baseline offsets for lyrics chorus records.
Definition Details.h:395
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:401
Contains the baseline offsets for lyrics section records.
Definition Details.h:411
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:417
Contains the baseline offsets for lyrics verse records.
Definition Details.h:427
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:433
Encapsulates inci handling for non-inci baselines.
Definition Details.h:230
BaselineNoInci(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper system, Cmper staff)
Constructor function.
Definition Details.h:240
Contains the baseline offsets for chords.
Definition Details.h:249
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:253
Contains the baseline offsets for expressions above the staff.
Definition Details.h:261
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:265
Contains the baseline offsets for expressions below the staff.
Definition Details.h:273
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:277
Contains the baseline offsets for fretboards.
Definition Details.h:285
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:289
Contains the baseline offsets for lyrics chorus records.
Definition Details.h:297
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:301
Contains the baseline offsets for lyrics section records.
Definition Details.h:309
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:313
Contains the baseline offsets for lyrics verse records.
Definition Details.h:321
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:325
Contains the baseline information for all baseline types.
Definition Details.h:203
std::optional< Cmper > lyricNumber
The 1-based text number of the lyric, if this is a lyrics baseline. Otherwise unused and should be st...
Definition Details.h:220
static const xml::XmlElementArray< Baseline > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Baseline(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper system, Cmper staff, std::optional< Inci > inci)
Constructor function.
Definition Details.h:214
Evpu baselineDisplacement
Definition Details.h:217
Beam alteration for downstem primary beams.
Definition Details.h:515
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:527
BeamAlterationsDownStem(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor.
Definition Details.h:524
Beam alteration for upstem primary beams.
Definition Details.h:537
BeamAlterationsUpStem(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor.
Definition Details.h:546
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:549
Represents beam alterations applied to a specific entry. This is used to apply additional shaping or ...
Definition Details.h:443
static const xml::XmlElementArray< BeamAlterations > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool isActive() const
Returns whether this beam alteration record is active. Its flattenStyle must match the value in optio...
Definition Details.h:487
Edu dura
For secondary beams, specifies the duration corresponding to the secondary beam (16th beam is 256,...
Definition Details.h:475
Evpu rightOffsetY
Vertical adjustment of the beam end. (xml node is <syAdd>)
Definition Details.h:474
FlattenStyle flattenStyle
Beam shaping style (xml node is <context>).
Definition Details.h:476
static MusxInstance< BeamAlterations > getSecondaryForStem(const EntryInfoPtr &entryInfo, Edu dura, StemSelection stemSelection=StemSelection::MatchEntry)
Gets the beam extension record for the specified stemSelection.
Definition Details.cpp:376
static MusxInstance< BeamAlterations > getPrimaryForStem(const EntryInfoPtr &entryInfo, StemSelection stemSelection=StemSelection::MatchEntry)
Gets the beam extension record for the specified stemSelection.
Definition Details.cpp:368
BeamAlterations(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, std::optional< Inci > inci=std::nullopt)
Constructor.
Definition Details.h:465
static bool calcIsFeatheredBeamImpl(const EntryInfoPtr &entryInfo, Evpu &outLeftY, Evpu &outRightY)
Implementation of SecondaryBeamAlterationsDownStem::calcIsFeatheredBeam and SecondaryBeamAlterationsU...
Definition Details.cpp:291
Evpu rightOffsetH
Horizontal adjustment of the beam end. (xml node is <sxAdd>)
Definition Details.h:473
static MusxInstanceList< SecondaryBeamType > getSecondaryBeamArray(const EntryInfoPtr &entryInfo)
Generalized getter for secondary beam type arrays for either stem direction.
Definition Details.cpp:353
Evpu leftOffsetY
Vertical adjustment of the beam start. (xml node is <yAdd>)
Definition Details.h:472
Evpu leftOffsetH
Horizontal adjustment of the beam start. (xml node is <xAdd>)
Definition Details.h:471
Efix calcEffectiveBeamWidth() const
Calculates the effective beam width by returning either the default width or the width override value...
Definition Details.cpp:264
static void calcAllActiveFlags(const DocumentPtr &document)
Used by the factory to set active indicators.
Definition Details.cpp:244
Efix beamWidth
The calcEffectiveBeamWidth method handles this for you.
Definition Details.h:477
Beam extension for downstem beams.
Definition Details.h:599
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:603
Beam extension for upstem beams.
Definition Details.h:611
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:615
Represents both sides of a beam extension. It is attached to the first entry in the beam....
Definition Details.h:560
unsigned calcMaxExtension() const
Calculates the maximum beam extension.
Definition Details.cpp:414
static MusxInstance< BeamExtension > getForStem(const EntryInfoPtr &entryInfo, StemSelection stemSelection=StemSelection::MatchEntry)
Gets the beam extension record for the specified stemSelection.
Definition Details.cpp:436
bool extBeyond8th
Definition Details.h:577
Evpu rightOffset
Right extension offset. (xml node is <x4Disp>)
Definition Details.h:573
unsigned mask
Definition Details.h:574
static const xml::XmlElementArray< BeamExtension > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
BeamExtension(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor.
Definition Details.h:569
Evpu leftOffset
Left extension offset. (xml node is <x3Disp>)
Definition Details.h:572
Specifies the direction for beam stubs (if they are manually overridden.)
Definition Details.h:627
unsigned mask
Definition Details.h:635
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:642
static const xml::XmlElementArray< BeamStubDirection > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool isLeft() const
True if the beam stub(s) point left.
Definition Details.h:640
BeamStubDirection(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor function.
Definition Details.h:630
Represents a bracket, used in two different contexts:
Definition Details.h:659
static const xml::XmlElementArray< Bracket > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:696
Evpu horzAdjLeft
"Distance from Left Edge of Staff" (xml node is <bracPos>)
Definition Details.h:691
Evpu vertAdjTop
"Vertical Adjust (Top of Bracket)" (xml node is <bracTop>)
Definition Details.h:692
Bracket(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2, Inci inci)
Constructor for top-level instances.
Definition Details.h:662
Evpu vertAdjBot
"Vertical Adjust (Bottom of Bracket)" (xml node is <bracBot>)
Definition Details.h:693
Bracket(const DocumentWeakPtr &document)
Constructor for embedded instances.
Definition Details.h:668
BracketStyle style
Bracket style (xml node is <id>)
Definition Details.h:690
BracketStyle
Bracket types.
Definition Details.h:678
@ BracketCurvedHooks
Thick bracket with curved hooks.
@ DeskBracket
Thin bracket with horizontal hook lines.
@ BracketStraightHooks
Thick bracket with straight hooks.
bool showOnSingleStaff
"Show Bracket If Group Contains Only One Staff" (only applies to staff groups: xml node is <onSingle>...
Definition Details.h:694
Represents chord symbol assignment for a staff and measure.
Definition Details.h:708
Edu horzEdu
Edu position in measure.
Definition Details.h:768
Evpu fbHorzOff
Horizontal offset of fretboard (in EVPU)
Definition Details.h:766
bool showFretboard
Show fretboard.
Definition Details.h:748
bool rootLowerCase
Display root in lowercase (minor triad)
Definition Details.h:744
bool playRoot
Playback root.
Definition Details.h:747
bool showRoot
Show root.
Definition Details.h:746
int bassAlter
Bass alteration.
Definition Details.h:752
BassPosition
Bass position options.
Definition Details.h:731
ChordAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas, Inci inci)
Constructor.
Definition Details.h:721
int rootScaleNum
Root scale degree: 0–6, where zero is the tonic.
Definition Details.h:742
Evpu fbVertOff
Vertical offset of fretboard (in EVPU)
Definition Details.h:767
bool showAltBass
Show alternate bass.
Definition Details.h:755
MusxInstanceList< others::ChordSuffixElement > getChordSuffix() const
Returns the chord suffix as an array of others::ChordSuffixElement.
Definition Details.cpp:457
Evpu horzOff
Horizontal offset of chord (in EVPU)
Definition Details.h:764
bool showSuffix
Show suffix.
Definition Details.h:749
MusxInstance< others::FretboardGroup > getFretboardGroup() const
Get the others::FretboardGroup instance for this chord assignment. You can use this to get the fret i...
Definition Details.cpp:462
Cmper suffixId
Definition Details.h:737
bool useFretboardFont
Definition Details.h:762
Inci fretboardGroupInci
Definition Details.h:759
bool playFretboard
Playback fretboard.
Definition Details.h:750
Cmper fbStyleId
The others::FretboardStyle ID. (Ignored when useFretboardFont is true.)
Definition Details.h:741
int fbPercent
FretboardDiagram scaling (100 means 100%)
Definition Details.h:770
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:783
int bassScaleNum
Bass scale degree: 0–6, where zero is the tonic.
Definition Details.h:751
Evpu vertOff
Vertical offset of chord (in EVPU)
Definition Details.h:765
int capoValue
Capo value (if useLocalCapo is true)
Definition Details.h:757
bool playAltBass
Playback alternate bass.
Definition Details.h:756
MusxInstance< others::FretboardStyle > getFretboardStyle() const
Returns the others::FretboardStyle instance for this chord assignment.
Definition Details.cpp:471
int chPercent
Chord scaling (100 means 100%)
Definition Details.h:769
int rootAlter
Root alteration.
Definition Details.h:743
bool playSuffix
Playback suffix.
Definition Details.h:745
bool useLocalCapo
Use local capo.
Definition Details.h:758
static const xml::XmlElementArray< ChordAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool bassLowerCase
Display bass in lowercase.
Definition Details.h:753
BassPosition bassPosition
Visual position of bass relative to root.
Definition Details.h:754
Defines the octaves in which each clef should display flats in key signatures. Only linear key signat...
Definition Details.h:802
static const xml::XmlElementArray< ClefOctaveFlats > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:808
Defines the octaves in which each clef should display sharps in key signatures.
Definition Details.h:831
static const xml::XmlElementArray< ClefOctaveSharps > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:837
Represents a cross-staff assignment for the note, if any.
Definition Details.h:850
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:861
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:863
static const xml::XmlElementArray< CrossStaff > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
CrossStaff(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:853
NoteNumber noteId
The ID of the note being assigned to a different staff (XML node: <noteID>)
Definition Details.h:858
StaffCmper staff
The target staff (XML node: <instrument>)
Definition Details.h:859
Custom stem for downstem context.
Definition Details.h:915
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:919
Represents a custom stem definition (up or down) for an entry. Which stem direction this instance con...
Definition Details.h:876
Evpu yOffset
Optional vertical displacement. (xml node is <ydisp>)
Definition Details.h:890
bool calcIsHiddenStem() const
Calculates if this custom stem record hides the stem. The stem is determined to be hidden if one of t...
Definition Details.cpp:483
static MusxInstance< CustomStem > getForStem(const EntryInfoPtr &entryInfo, StemSelection stemSelection=StemSelection::MatchEntry)
Gets the beam extension record for the specified stemSelection.
Definition Details.cpp:493
static const xml::XmlElementArray< CustomStem > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Cmper shapeDef
The Cmper of the associated others::ShapeDef. Setting this value to zero hides the stem.
Definition Details.h:888
Evpu xOffset
Optional horizontal displacement. (xml node is <xdisp>)
Definition Details.h:889
CustomStem(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor.
Definition Details.h:885
Custom stem for upstem context.
Definition Details.h:929
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:933
Represents display offsets and spacing adjustments for augmentation dots on a specific note.
Definition Details.h:945
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:960
NoteNumber noteId
The ID of the note whose dots are adjusted.
Definition Details.h:953
Evpu hOffset
Horizontal offset for the dot (XML: <xadd>)
Definition Details.h:954
Evpu vOffset
Vertical offset for the dot (XML: <yadd>)
Definition Details.h:955
static const xml::XmlElementArray< DotAlterations > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu interdotSpacing
Additional spacing between dots (XML: <posIncr>)
Definition Details.h:956
DotAlterations(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor.
Definition Details.h:948
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:958
Per-part overrides for entry properties such as manual position and stem direction.
Definition Details.h:975
bool upStem
When freezeStem is true: whether the stem is forced up (otherwise down).
Definition Details.h:989
bool freezeStem
Whether the stem direction is frozen for this entry in this part.
Definition Details.h:988
Evpu hOffset
Manual offset created with the Note Position Tool. (xml node is <posi>.)
Definition Details.h:987
static const xml::XmlElementArray< EntryPartFieldDetail > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
EntryPartFieldDetail(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor function.
Definition Details.h:984
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:992
Specifies a custom size for an entry. It scales the entire entry, including the stem and all notehead...
Definition Details.h:1004
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1019
int percent
The note/chord size as a percent (e.g., 65 for 65%).
Definition Details.h:1016
static const xml::XmlElementArray< EntrySize > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
EntrySize(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor.
Definition Details.h:1013
Represents a barre (spanning multiple strings).
Definition Details.h:1080
int endString
Ending 1-based string number.
Definition Details.h:1084
int startString
Starting 1-based string number.
Definition Details.h:1083
static const xml::XmlElementArray< Barre > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int fret
0-based fret number, where 0 signifies the open string. (Finale allows nut barres....
Definition Details.h:1082
Represents a single fretboard cell (string/fret position).
Definition Details.h:1065
Shape shape
Cell shape.
Definition Details.h:1069
int fingerNum
Finger number 0..5, where 0 means there is no finger number and 5 means T (thumb).
Definition Details.h:1070
int fret
0-based fret number, where 0 signifies the open string.
Definition Details.h:1068
static const xml::XmlElementArray< Cell > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
FretboardDiagram diagram for chord symbols.
Definition Details.h:1035
int fretboardNum
FretboardDiagram number: the starting fret of the fretboard diagram (xml node <fretNum>).
Definition Details.h:1090
bool showNum
Show fretboard number.
Definition Details.h:1092
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Details.h:1099
std::vector< std::shared_ptr< Barre > > barres
Array of fretboard barres.
Definition Details.h:1097
static const xml::XmlElementArray< FretboardDiagram > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
int numFretCells
Number of fret cells (xml node <numFretCells>).
Definition Details.h:1093
Shape
Shape type for a fretboard cell.
Definition Details.h:1052
@ None
No explicit shape. This is the default value and may not occur in the xml.
@ Custom
Custom symbol. By default this is an open diamond signifying a harmonic.
bool lock
Lock flag (xml node <lock>).
Definition Details.h:1091
int numFretBarres
Number of fret barres (xml node <numFretBarres>).
Definition Details.h:1094
FretboardDiagram(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2)
Constructor function.
Definition Details.h:1040
int numFrets
Number of frets.
Definition Details.h:1089
static constexpr std::string_view XmlNodeName
XML node name for this type.
Definition Details.h:1116
std::vector< std::shared_ptr< Cell > > cells
Array of fretboard cells.
Definition Details.h:1096
Represents the attributes of a Finale frame holder.
Definition Details.h:1128
StaffCmper getStaff() const
returns the staffId (staff) number for this GFrameHold
Definition Details.h:1151
GFrameHold(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas)
Constructor function.
Definition Details.h:1138
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Details.h:1178
std::optional< ClefIndex > clefId
clef index when there are no mid-measure clef changes. (xml tag is <clefID>).
Definition Details.h:1142
int clefPercent
Clef percent where 100 means 100%.
Definition Details.h:1147
bool iterateRawEntries(std::function< bool(const MusxInstance< Entry > &, LayerIndex)> iterator) const
Iterates all the raw entries in a the GFrameHold, passing them to the iterator function....
Definition Details.cpp:526
ShowClefMode showClefMode
"Show Clef" mode. (xml tag is <clefMode>)
Definition Details.h:1144
bool mirrorFrame
Indicates this is a mirror frame. (Not used after Finale 14.5.)
Definition Details.h:1145
static const xml::XmlElementArray< GFrameHold > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
MeasCmper getMeasure() const
returns the measure number for this GFrameHold
Definition Details.h:1154
bool calcContainsMusic() const
Returns true if the GFrameHold contains any layer frames.
Definition Details.h:1163
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1189
bool calcIsMultiLayer() const
Returns true if the GFrameHold instance has more than one layer.
Definition Details.h:1157
bool clefAfterBarline
"Place Clef After Barline"
Definition Details.h:1146
Cmper clefListId
The clef list ID when there are mid-measure clef changes, if non-zero. (xml tag is <clefListID>).
Definition Details.h:1143
std::pair< MusxInstance< others::Frame >, Edu > findLayerFrame(LayerIndex layerIndex) const
Find the layer frame and Edu start position for the given layer. A non-zero start position indicates ...
Definition Details.cpp:505
std::vector< Cmper > frames
others::Frame values for layers 1..4 (layer indices 0..3) if non-zero
Definition Details.h:1148
Represents independent time and key signature overrides for a staff.
Definition Details.h:1201
bool hasTime
If true, this item contains an independent time signature.
Definition Details.h:1232
MusxInstance< TimeSignature > createTimeSignature() const
Create a shared pointer to an instance of the TimeSignature for this instance.
Definition Details.cpp:545
Cmper divBeat
Time signature denominator in Edu or a Cmper to a composite record.
Definition Details.h:1222
bool displayAltDenTsig
If true, dispDivBeat is the Cmper of a others::TimeCompositeLower record.
Definition Details.h:1227
Cmper dispDivBeat
Display time signature denominator in Edu or a Cmper to a composite record.
Definition Details.h:1224
bool altNumTsig
If true, beats is the Cmper of a others::TimeCompositeUpper record.
Definition Details.h:1228
bool hasKey
If true, this item contains an independent key signature.
Definition Details.h:1218
std::shared_ptr< KeySignature > keySig
The key signature value if present. (xml tag is <keySig>/<key>)
Definition Details.h:1217
IndependentStaffDetails(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas)
Constructor function.
Definition Details.h:1211
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Details.h:1241
bool altDenTsig
If true, divBeat is the Cmper of a others::TimeCompositeLower record.
Definition Details.h:1229
static const xml::XmlElementArray< IndependentStaffDetails > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool hasDispTime
If true, the display time signature is present.
Definition Details.h:1231
bool displayAbbrvTime
If true, the display time signature is abbreviated.
Definition Details.h:1230
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1249
Cmper dispBeats
Display time signature numerator or a Cmper to a composite record.
Definition Details.h:1223
bool displayAltNumTsig
If true, dispBeats is the Cmper of a others::TimeCompositeUpper record.
Definition Details.h:1226
MusxInstance< TimeSignature > createDisplayTimeSignature() const
Create a shared pointer to an instance of the display TimeSignature for this measure and staff.
Definition Details.cpp:550
Cmper beats
Time signature numerator or a Cmper to a composite record.
Definition Details.h:1221
Represents a single element in a Finale accidental symbol list.
Definition Details.h:1260
int getAlterationValue() const
Returns the alteration value that this symbol corresponds with.
Definition Details.h:1270
KeySymbolListElement(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2)
Constructor function.
Definition Details.h:1263
static const xml::XmlElementArray< KeySymbolListElement > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1283
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Details.h:1274
std::string accidentalString
Definition Details.h:1266
Contains the syllable assignments for lyrics chorus blocks.
Definition Details.h:1341
MusxInstance< texts::LyricsTextBase > getLyricText() const override
Get the raw lyric text for this assignment.
Definition Details.cpp:568
LyricTextType getLyricTextType() const override
Get the lyric text type for this assignment.
Definition Details.cpp:583
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1350
Contains the syllable assignments for lyrics section blocks.
Definition Details.h:1360
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1369
LyricTextType getLyricTextType() const override
Get the lyric text type for this assignment.
Definition Details.cpp:588
MusxInstance< texts::LyricsTextBase > getLyricText() const override
Get the raw lyric text for this assignment.
Definition Details.cpp:573
Contains the syllable assignments for lyrics verse blocks.
Definition Details.h:1379
LyricTextType getLyricTextType() const override
Get the lyric text type for this assignment.
Definition Details.cpp:578
MusxInstance< texts::LyricsTextBase > getLyricText() const override
Get the raw lyric text for this assignment.
Definition Details.cpp:563
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1388
Contains assignment data for a lyric assignment (a single syllable)
Definition Details.h:1292
util::EnigmaParsingContext getRawTextCtx() const
Return an Enigma parsing context for the associated lyrics text block.
Definition Details.cpp:593
virtual LyricTextType getLyricTextType() const =0
Get the lyric text type for this assignment.
Evpu wext
Definition Details.h:1310
LyricAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:1302
static const xml::XmlElementArray< LyricAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Cmper lyricNumber
the text number of the lyric.
Definition Details.h:1305
unsigned syllable
the 1-based syllable number. Subtract 1 for an index into texts::LyricsTextBase::syllables....
Definition Details.h:1306
Evpu floatingHorzOff
This appears to have something to do with note spacing. It may simply be a cache that Finale changes ...
Definition Details.h:1309
Evpu horzOffset
horizontal offset from default position. (xml node is <horzOff>)
Definition Details.h:1307
virtual MusxInstance< texts::LyricsTextBase > getLyricText() const =0
Get the raw lyric text for this assignment.
Evpu vertOffset
horizontal offset from default position. (xml node is <vertOff>)
Definition Details.h:1308
bool displayVerseNum
If set, the text block number displays to the left of the syllable. (E.g., when numbering verses in a...
Definition Details.h:1313
EntryInfoPtr calcWordExtensionEndpoint() const
Calculate the entry to which an automatic word extension extends.
Definition Details.cpp:602
Specifies lyric alignment and justification for a single entry. This affects all lyric assignments on...
Definition Details.h:1399
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1416
std::optional< AlignJustify > align
Override default alignment if present. (xml node is <align>)
Definition Details.h:1413
static const xml::XmlElementArray< LyricEntryInfo > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
LyricEntryInfo(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, std::optional< Inci > inci=std::nullopt)
Constructor.
Definition Details.h:1409
std::optional< AlignJustify > justify
Override default justification if present. (xml node is <justify>)
Definition Details.h:1412
Per-staff/per-measure overrides for the position and appearance of a measure number.
Definition Details.h:1427
ForceVisibility
Force-visibility options for the measure number at this location.
Definition Details.h:1448
@ Show
Force the number to display (xml text value: "force")
@ Hide
Force the number to be hidden (xml text value: "hide")
@ None
No override (default; node may be omitted in XML)
bool useEnclosure
Whether to use an enclosure for this number. (xml node is <useEncl>)
Definition Details.h:1459
Evpu xOffset
Horizontal offset for the measure number. (xml node is <x1add>)
Definition Details.h:1455
Evpu xOffset2
Horizontal offset for the measure number range under a multimeasure rest (Page View only)....
Definition Details.h:1457
MeasureNumberIndividualPositioning(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas, Inci inci)
Constructor.
Definition Details.h:1438
static const xml::XmlElementArray< MeasureNumberIndividualPositioning > & xmlMappingArray()
Required for musx::
ForceVisibility forceVisibility
Force-visibility behavior. (xml node is <forceHide>)
Definition Details.h:1458
Cmper measNumRegion
The Cmper of the others::MeasureNumberRegion that this override applies to. (xml node is <region>)
Definition Details.h:1454
std::shared_ptr< others::Enclosure > enclosure
Optional enclosure settings. (xml node is <encl>)
Definition Details.h:1460
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1462
Evpu yOffset
Vertical offset for the measure number. (xml node is <y1add>)
Definition Details.h:1456
Represents a text block assignment for a staff and measure.
Definition Details.h:1482
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1511
util::EnigmaParsingContext getRawTextCtx(Cmper forPartId) const
Gets the raw text for this assignment, or nullptr if none.
Definition Details.cpp:633
Evpu yDisp
Vertical displacement in Evpu (xml node is <ydisp>)
Definition Details.h:1502
Evpu xDispEvpu
Negative horizontal displacement in Evpu, when xDispEdu is zero. (xml node is <xdispEvpu>)
Definition Details.h:1501
MusxInstance< others::TextBlock > getTextBlock() const
Gets the TextBlock for this assignment, or nullptr if none.
Definition Details.cpp:628
MeasureTextAssign(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper staffId, Cmper meas, Inci inci)
Constructor.
Definition Details.h:1493
Cmper block
Text block ID.
Definition Details.h:1498
bool hidden
Indicates the text appears only on screen (xml node is <postIt/>)
Definition Details.h:1503
static const xml::XmlElementArray< MeasureTextAssign > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Edu xDispEdu
Definition Details.h:1499
Represents graphical and notational alterations applied to a note.
Definition Details.h:1524
bool allowVertPos
Whether vertical positioning is allowed .
Definition Details.h:1538
int percent
Size percentage for the notehead. (A value of 100 means 100%.)
Definition Details.h:1533
char32_t altNhead
Alternate notehead character.
Definition Details.h:1535
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1545
NoteAlterations(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:1527
Evpu nydisp
Vertical notehead offset.
Definition Details.h:1539
std::shared_ptr< FontInfo > customFont
Custom font info (consolidates: <fontID>, <fontSize>, <efx>)
Definition Details.h:1537
bool useOwnFont
Whether to use the custom font.
Definition Details.h:1536
Evpu nxdisp
Horizontal notehead offset.
Definition Details.h:1534
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:1543
bool enharmonic
Definition Details.h:1540
NoteNumber noteId
The ID of the note being altered. (xml node is <noteID>)
Definition Details.h:1532
static const xml::XmlElementArray< NoteAlterations > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Represents a percussion note code override for a single note.
Definition Details.h:1558
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:1569
NoteNumber noteId
The ID of the note being assigned a code.
Definition Details.h:1566
PercussionNoteTypeId noteCode
The percussion note code. Use this to search the incis of the percussion map for the specific note.
Definition Details.h:1567
static const xml::XmlElementArray< PercussionNoteCode > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
PercussionNoteCode(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:1561
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1571
Beam alteration for downstem secondary beams.
Definition Details.h:1582
static bool calcIsFeatheredBeam(const EntryInfoPtr &entryInfo, Evpu &outLeftY, Evpu &outRightY)
Calculates if the input entry starts a feathered beam and returns information about it.
Definition Details.h:1602
SecondaryBeamAlterationsDownStem(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor.
Definition Details.h:1593
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1605
Beam alteration for downstem secondary beams.
Definition Details.h:1615
static bool calcIsFeatheredBeam(const EntryInfoPtr &entryInfo, Evpu &outLeftY, Evpu &outRightY)
Calculates if the input entry starts a feathered beam and returns information about it.
Definition Details.h:1635
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1638
SecondaryBeamAlterationsUpStem(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor.
Definition Details.h:1626
Specifies which secondary beams break and restart on the associated entry.
Definition Details.h:1650
SecondaryBeamBreak(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor function.
Definition Details.h:1653
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1694
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Details.h:1681
BeamNumber calcLowestBreak() const
Calculates the lowest (largest note-value) beam specified for a secondary beam break.
Definition Details.h:1667
bool breakThrough
True if the beam should be broken through to the largest specified beam value.
Definition Details.h:1659
unsigned mask
Composite mask of beam breaks, derived from <do16th> through <do4096th> tags.
Definition Details.h:1658
static const xml::XmlElementArray< SecondaryBeamBreak > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Embedded shape record for a single index in noteShapes.
Definition Details.h:1720
char32_t quarter
Filled (quarter) notehead symbol (xml nodename is <q>).
Definition Details.h:1725
char32_t whole
Whole notehead symbol (xml nodename is <w>).
Definition Details.h:1723
static const xml::XmlElementArray< NoteShapes > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
char32_t doubleWhole
Double-whole notehead symbol (xml nodename is <d>).
Definition Details.h:1722
char32_t half
Half notehead symbol (xml nodename is <h>).
Definition Details.h:1724
Shape Note settings for staves and staffs style.
Definition Details.h:1708
ShapeNoteBase(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper cmper1, Cmper cmper2)
Constructor function.
Definition Details.h:1712
std::vector< std::shared_ptr< NoteShapes > > noteShapes
Notehead shapes (only the first seven elements are used).
Definition Details.h:1730
bool arrangedByPitch
Definition Details.h:1731
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Details.h:1734
static const xml::XmlElementArray< ShapeNoteBase > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Shape Note settings for staff styles.
Definition Details.h:1773
static constexpr std::string_view XmlNodeName
XML node name for this type.
Definition Details.h:1777
Shape Note settings for staves.
Definition Details.h:1758
static constexpr std::string_view XmlNodeName
XML node name for this type.
Definition Details.h:1762
Provides run-time information about Staff Groups within a system or list of others::StaffUsed.
Definition Details.h:1920
std::optional< size_t > startSlot
the 0-based start slot (index) of the group in the system staves.
Definition Details.h:1922
std::optional< size_t > endSlot
the 0-based end slot (index) of the group in the system staves.
Definition Details.h:1923
std::optional< size_t > numStaves() const
The number of staves in the group for the systemStaves.
Definition Details.h:1934
MusxInstanceList< others::StaffUsed > systemStaves
the system staves referred to by startSlot and endSlot
Definition Details.h:1925
MusxInstance< StaffGroup > group
the StaffGroup record for the group.
Definition Details.h:1924
bool calcIsSingleInstrumentSection(MeasCmper measureId) const
Returns true if this staff group spans multiple staves with the same exact instrument UUID,...
Definition Details.cpp:770
void iterateStaves(MeasCmper measId, Edu eduPosition, std::function< bool(const MusxInstance< others::StaffComposite > &)> iterator) const
Iterates the staves in the group in order according to systemStaves.
Definition Details.cpp:750
static std::vector< StaffGroupInfo > getGroupsAtMeasure(MeasCmper measureId, Cmper linkedPartId, const MusxInstanceList< others::StaffUsed > &systemStaves)
Creates a vector of StaffGroupInfo instances for the measure, part, and system staves.
Definition Details.cpp:833
Represents the attributes of a Finale staff group that brackets staves.
Definition Details.h:1786
AlignJustify abbrvNameJustify
Abbreviated name justification (xml node is <abbrvJustify>)
Definition Details.h:1835
bool abbrvNameExpand
"Expand Single Word" for abbreviated name (xml node is <abbrvExpand>)
Definition Details.h:1847
Cmper multiStaffGroupId
Definition Details.h:1850
static const xml::XmlElementArray< StaffGroup > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool fullNameExpand
"Expand Single Word" for full name (xml node is <fullExpand>)
Definition Details.h:1846
bool ownBarline
"Use Alternate Group Barline"
Definition Details.h:1837
int abbrvNameYadj
Vertical adjustment for abbreviated name (xml node is <abbrvYadj>)
Definition Details.h:1843
DrawBarlineStyle
Enum for how to draw group barlines.
Definition Details.h:1807
@ Mensurstriche
Draw barlines between staves (xml value is "Mensurstriche" with capitalization)
@ ThroughStaves
Draw barlines through staves (xml value is "group")
@ OnlyOnStaves
Default value (may not appear in xml)
std::string getAbbreviatedInstrumentName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Returns the abbreviated instrument name for this group without Enigma tags and with autonumbering (if...
Definition Details.cpp:718
bool isAllMeasures() const
Returns true if this group spans all measures.
Definition Details.h:1895
Cmper abbrvNameId
Abbreviated name TextBlock cmper (xml node is <abbrvID>)
Definition Details.h:1841
StaffCmper startInst
Starting staff ID.
Definition Details.h:1825
int fullNameXadj
Horizontal adjustment for full name (xml node is <fullXadj>)
Definition Details.h:1830
std::shared_ptr< Bracket > bracket
Bracket Options. The factory guarantees this value to exist.
Definition Details.h:1832
util::EnigmaParsingContext getAbbreviatedNameCtx() const
Get the raw text context for the abbreviated staff group name.
Definition Details.cpp:663
std::string getAbbreviatedName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Get the abbreviated staff group name without Enigma tags.
Definition Details.cpp:671
AlignJustify fullNameJustify
Full name justification (xml node is <fullJustify>)
Definition Details.h:1834
DrawBarlineStyle drawBarlines
"Draw Barlines" option (xml node is <groupBarlineStyle>)
Definition Details.h:1836
void integrityCheck(const std::shared_ptr< EnigmaBase > &ptrToThis) override
Performs a final consistency check after population.
Definition Details.h:1898
AlignJustify abbrvNameAlign
Abbreviated name horizontal alignment (xml node is <abbrvHAlign>)
Definition Details.h:1845
util::EnigmaParsingContext getAbbreviatedInstrumentNameCtx() const
Returns the raw text context for the abbreviated instrument name for this group, with autonumbering c...
Definition Details.cpp:708
util::EnigmaParsingContext getFullNameCtx() const
Get the raw text context for the full staff group name.
Definition Details.cpp:647
std::unordered_set< StaffCmper > staves
Calculated list of staves in the group.
Definition Details.h:1855
int fullNameYadj
Vertical adjustment for full name (xml node is <fullYadj>)
Definition Details.h:1831
HideStaves hideStaves
"When Hiding Empty Staves" option (xml node is <optimize>)
Definition Details.h:1848
BarlineType barlineType
Group barline type (xml node is <barline>)
Definition Details.h:1833
AlignJustify fullNameAlign
Full name horizontal alignment (xml node is <fullHAlign>)
Definition Details.h:1844
Cmper fullNameId
Full name TextBlock cmper (xml node is <fullID>)
Definition Details.h:1829
std::string getFullInstrumentName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Returns the full instrument name for this group without Enigma tags and with autonumbering (if any).
Definition Details.cpp:700
StaffCmper endInst
Ending staff ID.
Definition Details.h:1826
static constexpr std::string_view XmlNodeName
XML node name for this type.
Definition Details.h:1911
MeasCmper startMeas
Starting measure number.
Definition Details.h:1827
std::string getFullName(util::EnigmaString::AccidentalStyle accidentalStyle=util::EnigmaString::AccidentalStyle::Ascii) const
Get the full staff group name without Enigma tags.
Definition Details.cpp:655
MusxInstance< others::MultiStaffInstrumentGroup > getMultiStaffInstGroup() const
Returns the others::MultiStaffInstrumentGroup for this group if it is part of one....
Definition Details.cpp:679
MeasCmper endMeas
Ending measure number.
Definition Details.h:1828
StaffGroup(const DocumentWeakPtr &document, Cmper partId, EnigmaBase::ShareMode shareMode, Cmper cmper1, Cmper cmper2)
Constructor.
Definition Details.h:1796
bool hideName
Inverse of "Show Group Name".
Definition Details.h:1840
bool fullNameIndivPos
Indicates if full name has individual position (xml node is <fullIndivPos>)
Definition Details.h:1838
util::EnigmaParsingContext getFullInstrumentNameCtx() const
Returns the raw text context for the full instrument name for this group, with autonumbering context ...
Definition Details.cpp:690
bool abbrvNameIndivPos
Indicates if abbreviated name has individual position (xml node is <abbrvIndivPos>)
Definition Details.h:1839
int abbrvNameXadj
Horizontal adjustment for abbreviated name (xml node is <abbrvXadj>)
Definition Details.h:1842
HideStaves
Enum for optimization options.
Definition Details.h:1818
@ AsGroup
Hide staves only if all staves are empty.
@ Normally
Hide staves as if there were no StaffGroup (this is the default and may not appear in the xml)
@ None
Never hide the staves in this StaffGroup.
Represents a per-staff-size override for a specific staff in a system.
Definition Details.h:1970
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:1991
static const xml::XmlElementArray< StaffSize > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
util::Fraction calcStaffScaling() const
Calculate the staff scaling.
Definition Details.h:1988
StaffSize(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, Cmper system, Cmper staffId)
Constructor.
Definition Details.h:1980
int staffPercent
The staff size percentage override. (A value of 100 means 100%, i.e, no staff scaling....
Definition Details.h:1985
Specifies horizontal and vertical adjustments for stems under beam.
Definition Details.h:2030
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:2034
Specifies horizontal and vertical stem adjustments for upstem and downstem contexts.
Definition Details.h:2004
Evpu upVertAdjust
Vertical adjustment for upstem context (positive is up).
Definition Details.h:2012
Evpu downHorzAdjust
Horizontal adjustment for downstem context (positive is right).
Definition Details.h:2015
Evpu downVertAdjust
Vertical adjustment for downstem context (positive is up).
Definition Details.h:2013
static const xml::XmlElementArray< StemAlterations > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu upHorzAdjust
Horizontal adjustment for upstem context (positive is right).
Definition Details.h:2014
StemAlterations(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum)
Constructor function.
Definition Details.h:2007
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:2017
Specifies the TAB string a note appears on. Finale automatically figures out the fret number from the...
Definition Details.h:2047
TablatureNoteMods(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:2050
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:2059
static const xml::XmlElementArray< TablatureNoteMods > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:2061
NoteNumber noteId
The ID of the tablature note being modified. (xml node is <noteID>)
Definition Details.h:2055
int stringNumber
Definition Details.h:2056
Base class for tie alteration properties. (Used for both ties and tie ends.)
Definition Details.h:2070
DirectionContext
Indicates the placement context of end- and control-point adjustments.
Definition Details.h:2116
@ Under
The tie is positioned below (e.g., tie under)
@ Over
The tie is positioned above (e.g., tie over)
Evpu yEnd
Vertical end position of the tie.
Definition Details.h:2126
NoteNumber noteId
Note ID associated with the tie alteration. (xml node is <noteID>)
Definition Details.h:2122
bool outerOn
Enable "Outer" placement.
Definition Details.h:2128
bool outerLocal
Local setting for "Outer Tie".
Definition Details.h:2127
Evpu xStart
Horizontal start position of the tie.
Definition Details.h:2123
DirectionContext enPtContext
End point must match this direction context for xEnd & yEnd to apply.
Definition Details.h:2149
Evpu height1
Height of the first control point.
Definition Details.h:2151
NoteNumber getNoteId() const override
Required virtual function that returns the note id.
Definition Details.h:2158
bool afterMultiDotsLocal
Local setting for "After Multiple Dots".
Definition Details.h:2131
bool shiftForSecondsOn
Enable "Shift for Seconds".
Definition Details.h:2134
Evpu height2
Height of the second control point.
Definition Details.h:2153
ConnectionType stPtEntCnct
Start point must match this connection type for xStart & yStart to apply.
Definition Details.h:2145
ConnectionType
Defines tie connection points for start and end attachment locations.
Definition Details.h:2091
@ EntryLeftNoteCenter
Left of entry, center of note.
@ DotRightNoteCenter
Right of dot(s), center of note.
@ NoteRightNoteTop
Right of note, top of note.
@ NoteCenterNoteBottom
Horizontal center of note, bottom of note.
@ EntryCenterNoteBottom
Horizontal center of entry, bottom of note.
@ NoteCenterNoteTop
Horizontal center of note, top of note.
@ SystemEnd
System end (for the right side across systems)
@ NoteLeftNoteCenter
Left of note, center of note.
@ EntryCenterNoteTop
Horizontal center of entry, top of note.
@ NoteRightNoteBottom
Right of note, bottom of note.
@ SystemStart
System start (for the left side across systems)
@ EntryRightNoteCenter
Right of entry, center of note.
@ NoteRightNoteCenter
Right of note, center of note.
@ AccidentalLeftNoteCenter
Left of accidental, center of note.
@ NoteLeftNoteBottom
Left of note, bottom of note.
static MusxInstance< TieAlterBase > fromNoteInfo(const NoteInfoPtr &noteInfoPtr, bool forTieEnd=false)
Gets the the TieAlterStart or TieAlterEnd for this note, based on the input boolean.
Definition Details.cpp:859
Evpu insetRatio1
Inset ratio for the first control point.
Definition Details.h:2150
bool enPtAdjOn
Enable end point adjustment.
Definition Details.h:2147
ConnectionType enPtEntCnct
End point must match this connection type for xEnd & yEnd to apply.
Definition Details.h:2148
bool shiftForSecondsLocal
Local setting for "Shift for Seconds".
Definition Details.h:2133
bool afterSingleDotOn
Enable "After Single Dot".
Definition Details.h:2130
bool afterMultiDotsOn
Enable "After Multiple Dots".
Definition Details.h:2132
Evpu insetRatio2
Inset ratio for the second control point.
Definition Details.h:2152
bool breakKeyLocal
Local setting for "Break at Key Signature".
Definition Details.h:2140
bool ctlPtFixed
Definition Details.h:2155
TieAlterBase(const DocumentWeakPtr &document, Cmper partId, EnigmaBase::ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:2073
bool breakKeyOn
Enable "Break at Key Signature".
Definition Details.h:2141
bool down
Downward tie. Only applicable if freezeDirection is true. (False freezes the tie up....
Definition Details.h:2137
DirectionContext stPtContext
Start point must match this direction context for xStart & yStart to apply.
Definition Details.h:2146
bool beforeSingleAcciOn
Enable "Before Single Accidental".
Definition Details.h:2136
bool noSpecialArc
Inverse of "Avoid Staff Lines". (See options::TieOptions for more information about the naming....
Definition Details.h:2143
bool stPtAdjOn
Enable start point adjustment.
Definition Details.h:2144
static const xml::XmlElementArray< TieAlterBase > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
bool beforeSingleAcciLocal
Local setting for "Before Single Accidental".
Definition Details.h:2135
Evpu xEnd
Horizontal end position of the tie.
Definition Details.h:2124
bool ctlPtAdjOn
Enable control point adjustment.
Definition Details.h:2154
bool breakTimeLocal
Local setting for "Break at Time Signature".
Definition Details.h:2138
bool freezeDirection
Freeze tie direction. (xml node is <freeze>)
Definition Details.h:2142
Evpu yStart
Vertical start position of the tie.
Definition Details.h:2125
bool afterSingleDotLocal
Local setting for "After Single Dot".
Definition Details.h:2129
bool breakTimeOn
Enable "Break at Time Signature".
Definition Details.h:2139
Alterations for tie ends.
Definition Details.h:2172
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:2176
static const xml::XmlElementArray< TieAlterEnd > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Alterations for tie starts. (Tie starts are normal ties.)
Definition Details.h:2189
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:2193
static const xml::XmlElementArray< TieAlterStart > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Options controlling the appearance of tuplets.
Definition Details.h:2206
bool hidden
Inverse of "Show".
Definition Details.h:2232
util::Fraction calcRatio() const
return the tuplet ratio (reference / display)
Definition Details.h:2259
util::Fraction calcDisplayDuration() const
return the display duration as a util::Fraction of a whole note
Definition Details.h:2256
Evpu tupOffX
Horizontal offset.
Definition Details.h:2233
Evpu rightHookLen
Length of the right hook in the tuplet bracket. (This value is sign-reversed in the Finale UI....
Definition Details.h:2248
Evpu brackOffY
Vertical offset for brackets.
Definition Details.h:2236
BracketStyle brackStyle
Bracket style.
Definition Details.h:2244
bool avoidStaff
"Avoid Staff"
Definition Details.h:2230
AutoBracketStyle autoBracketStyle
Autobracket style.
Definition Details.h:2231
bool alwaysFlat
"Always Flat" (xml node is <flat>)
Definition Details.h:2227
bool fullDura
"Bracket Full Duration"
Definition Details.h:2228
bool allowHorz
"Allow Horizontal Drag"
Definition Details.h:2239
int referenceNumber
The number of notes "in the time of" (xml node is <refNum>)
Definition Details.h:2225
Evpu rightHookExt
Extension of the right hook beyond the tuplet bracket.
Definition Details.h:2249
Evpu leftHookExt
Extension of the left hook beyond the tuplet bracket.
Definition Details.h:2247
bool ignoreHorzNumOffset
"Ignore Horizontal Number Offset" (xml node is <ignoreGlOffs>)
Definition Details.h:2240
TupletDef(const DocumentWeakPtr &document, Cmper partId, ShareMode shareMode, EntryNumber entnum, Inci inci)
Constructor function.
Definition Details.h:2209
util::Fraction calcReferenceDuration() const
return the reference duration as a util::Fraction of a whole note
Definition Details.h:2253
bool smartTuplet
"Engraver Tuplets"
Definition Details.h:2245
Edu displayDuration
The duration of each note to display (xml node is <symbolicDur>)
Definition Details.h:2224
Evpu tupOffY
Vertical.
Definition Details.h:2234
NumberStyle numStyle
Number style.
Definition Details.h:2237
static const xml::XmlElementArray< TupletDef > & xmlMappingArray()
Required for musx::factory::FieldPopulator.
Evpu brackOffX
Horizontal offset for brackets.
Definition Details.h:2235
Evpu manualSlopeAdj
"Manual Slope Adjustment" in Evpu. (xml node is <slope>)
Definition Details.h:2250
static constexpr std::string_view XmlNodeName
The XML node name for this type.
Definition Details.h:2261
bool breakBracket
"Break Slur or Bracket"
Definition Details.h:2241
int displayNumber
The number of notes to display (xml node is <symbolicNum>)
Definition Details.h:2223
bool metricCenter
"Center Number Using Duration"
Definition Details.h:2229
bool useBottomNote
"Use Bottom Note" (xml node is <noteBelow>)
Definition Details.h:2243
bool matchHooks
"Match Length of Hooks"
Definition Details.h:2242
PositioningStyle posStyle
Positioning style.
Definition Details.h:2238
Edu referenceDuration
The duration of each note "in the time of" (xml node is <refDur>)
Definition Details.h:2226
Evpu leftHookLen
Length of the left hook in the tuplet bracket. (This value is sign-reversed in the Finale UI....
Definition Details.h:2246
FlattenStyle
Beaming style choices for when to flatten beams.
Definition Options.h:177
BracketStyle
Bracket style options.
Definition Options.h:1797
PositioningStyle
Positioning style options.
Definition Options.h:1784
AutoBracketStyle
Auto-bracket style options.
Definition Options.h:1756
NumberStyle
Number style options.
Definition Options.h:1771
BarlineType
Barline type for left and right barlines.
Definition Others.h:1166
Contains chorus text for lyrics.
Definition Texts.h:162
Contains section text for lyrics.
Definition Texts.h:175
Contains verse text for lyrics.
Definition Texts.h:149
Wrapper class for interpreting and rendering Enigma-style strings with insert handling.
Definition EnigmaString.h:416
AccidentalStyle
Enumeration to specify the type of accidental substitution representation.
Definition EnigmaString.h:192
@ Ascii
Use ASCII substitutions for accidentals.
A class to represent fractions with integer m_numerator and m_denominator, automatically reduced to s...
Definition Fraction.h:38
static constexpr Fraction fromPercent(int percent)
Constructs a Fraction from a percent (where 100 is 100%)
Definition Fraction.h:97
@ Verbose
Informational messages that should only displayed when verbose logging is requested.
static void log(LogLevel level, const std::string &message)
Logs a message with a specific severity level.
Definition Logger.h:87
constexpr int STANDARD_DIATONIC_STEPS
currently this is the only supported number of diatonic steps.
Definition music_theory.hpp:45
constexpr int MAX_ALTERATIONS
Maximum absolute value for chromatic alterations supported in Finale.
Definition Fundamentals.h:78
ShowClefMode
Enum representing the clef display mode for a frame.
Definition EnumClasses.h:164
LyricTextType
The lyric text type if this is a lyrics smart shape.
Definition EnumClasses.h:119
uint16_t PercussionNoteTypeId
multiple times in one layout. The rest are the "pure" note type. See percussion::PercussionNoteType.
Definition Fundamentals.h:74
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:40
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
VerticalPlacement
Specifies a vertical placement relationship for notation objects.
Definition EnumClasses.h:202
@ NotApplicable
Above/below placement does not meaningfully apply.
int16_t Inci
Enigma "incident" key type.
Definition Fundamentals.h:56
int32_t Evpu
EVPU value (288 per inch)
Definition Fundamentals.h:57
constexpr int MAX_LAYERS
The maximum number of music layers in a Finale document.
Definition Fundamentals.h:77
uint16_t Cmper
Enigma "comperator" key type.
Definition Fundamentals.h:55
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 DocumentElement.h:37
int32_t EntryNumber
Entry identifier.
Definition Fundamentals.h:69
uint16_t NoteNumber
Note identifier.
Definition Fundamentals.h:70
std::shared_ptr< Document > DocumentPtr
Shared Document pointer.
Definition DocumentElement.h:35
int16_t StaffCmper
Enigma staff (staffId) Cmper (may be negative when not applicable)
Definition Fundamentals.h:65
AlignJustify
Alignment and justification options for staff and group names.
Definition EnumClasses.h:30
unsigned int BeamNumber
A number where 1 corresponds to the primary (8th note) beam, 2 the 16th beam, 3 the 32nd beam,...
Definition Fundamentals.h:72
std::vector< XmlElementDescriptor< T > > XmlElementArray
an array type for XmlElementDescriptor instances.
Definition XmlInterface.h:127
object model for musx file (enigmaxml)
Definition BaseClasses.h:38
Provides information about the best analysis as to which articulation symbol in being used on this as...
Definition Details.h:118
MusxInstance< others::ArticulationDef > definition
The associated articulation definition.
Definition Details.h:119
others::ArticulationDef::SelectedSymbol symbol
Definition Details.h:120
VerticalPlacement placement
The resolved placement for the selected symbol.
Definition Details.h:122
The resolved main or alternate symbol selection for an articulation definition.
Definition Others.h:257
Information about a shape that could be used as a surrogate for a tie.
Definition PseudoTieUtils.h:55