Finale PDK Framework 0.77
Power Up Your Finale Music Software
Loading...
Searching...
No Matches
ff_noteframe.h
1/*
2 * File: ff_noteframe.h
3 * Author: Jari Williamsson
4 *
5 * Created on den 18 november 2010, 01:20
6 */
7
8#ifndef FF_NOTEFRAME_H
9#define FF_NOTEFRAME_H
10
11#include "ff_basecollection.h"
12
13
14#ifdef PDK_FRAMEWORK_ENTRIES
15class FCNoteEntry;
16class FCTransposer;
17
28class FCNote : public __FCBase
29{
30#ifndef DOXYGEN_SHOULD_IGNORE_THIS
31 bool _shouldbeerased;
32
33 int _index;
34 EXNOTE* _pNote;
35 FCNoteEntry* _pEntry;
36 std::unique_ptr<FCTransposer> _pTransposer;
37
42 void _SetNoteFlag(FLAG_32 flag, bool state)
43 { Set32BitFlag(&_pNote->flag, flag, state); }
44
49 bool _GetNoteFlag(FLAG_32 flag) const { return GetBitFlag(_pNote->flag, flag); }
50
51#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
52
53 public:
54 const char* ClassName() const override { return "FCNote"; }
55
57 FCNote(int index, EXNOTE* pexnote, FCNoteEntry* pParent) : __FCBase()
58 {
59 _index = index;
60 _pNote = pexnote;
61 _pEntry = pParent;
62 _shouldbeerased = false;
63 }
64
65#ifndef DOXYGEN_SHOULD_IGNORE_THIS
71 ENTNUM _GetEntryNumber();
72
74 EXNOTE* _GetEXNOTE() { return _pNote; }
75
77 void _UpdateEXNOTE(EXNOTE* pNote) { _pNote = pNote; }
78#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
79
80
85 FCNoteEntry* GetEntry() const { return _pEntry; }
86
98 bool GetAccidental() const { return _GetNoteFlag(NF_ACCIBIT); }
99
104 bool GetAccidentalFreeze() const { return _GetNoteFlag(NF_FREEZEACCI); }
105
110 bool GetAccidentalParentheses() const { return _GetNoteFlag(NF_PARENACCI); }
111
119 twobyte GetDisplacement() const
120 {
121#ifdef PDK_FRAMEWORK_DIAGNOSE
122 if ((_pNote->noteID < 0) || (_pNote->noteID > 32))
123 {
124 DebugOutInt("Illegal Note ID value in FCNote::GetDisplacement(): ", _pNote->noteID);
125 }
126#endif
127 return _pNote->tcd;
128 }
129
138 bool GetLegality() const { return _GetNoteFlag(NF_VALID); }
139
149 twobyte GetRaiseLower() const { return _pNote->alteration; }
150
157 bool GetSpacing() const { return !_GetNoteFlag(NF_NOSPACING); }
158
167 bool GetPlayback() const { return !_GetNoteFlag(NF_NOPLAYBACK); }
168
175 bool GetTie() const { return _GetNoteFlag(NF_TIESTART); }
176
183 bool GetTieBackwards() const { return _GetNoteFlag(NF_TIEEND); }
184
193 bool GetCrossStaff() const { return _GetNoteFlag(NF_CROSSBIT); }
194
204 bool GetDownstem2nd() const { return _GetNoteFlag(NF_DWSECBIT); }
205
215 bool GetUpstem2nd() const { return _GetNoteFlag(NF_UPSECBIT); }
216
225 bool GetUpstemSplit() const { return _GetNoteFlag(NF_UPSPBIT); }
226
233 eNoteID GetNoteID() const { return _pNote->noteID; }
234
239 int GetNoteIndex() const { return _index; }
240
241#ifdef PDK_FRAMEWORK_PREFS
267 void GetString(FCString* pString, FCKeySignature* pKey, bool simplifydoublesharp = false,
268 bool writtenpitch = false);
269
282 bool CalcAccidental() const;
283
305 twobyte CalcOctave(FCKeySignature* pKey, int transposeinterval = 0);
306
324 twobyte CalcWrittenOctave(FCKeySignature* pKey, int transposevalue, bool simplifytranspose, bool chromatictranspose);
325
347 bool SetString(FCString* pString, FCKeySignature* pKey, bool writtenpitch);
348
349#endif // #ifdef PDK_FRAMEWORK_PREFS
350
359
370 void SetAccidental(bool state) { _SetNoteFlag(NF_ACCIBIT, state); }
371
376 void SetAccidentalFreeze(bool state) { _SetNoteFlag(NF_FREEZEACCI, state); }
377
382 void SetAccidentalParentheses(bool state) { _SetNoteFlag(NF_PARENACCI, state); }
383
390 void SetSpacing(bool state) { _SetNoteFlag(NF_NOSPACING, !state); }
391
400 void SetPlayback(bool state) { _SetNoteFlag(NF_NOPLAYBACK, !state); }
401
410 void SetLegality(bool state) { _SetNoteFlag(NF_VALID, state); }
411
419 void SetDisplacement(twobyte disp) { _pNote->tcd = disp; }
420
428 void SetRaiseLower(twobyte amount) { _pNote->alteration = amount; }
429
440 void SetNoteID(eNoteID noteid)
441 {
442 _pNote->noteID = noteid;
443 }
444
450 void SetTie(bool value) { _SetNoteFlag(NF_TIESTART, value); }
451
459 void SetTieBackwards(bool value) { _SetNoteFlag(NF_TIEEND, value); }
460
471 void SetCrossStaff(bool state) { _SetNoteFlag(NF_CROSSBIT, state); }
472
481 void SetUpstemSplit(bool state) { _SetNoteFlag(NF_UPSPBIT, state); }
482
490
500 bool CalcOnLedgerLine();
501
513
526
533 twobyte CalcNoteheadWidth();
534
553 twobyte CalcStaffPosition();
554
562 char CalcPitchChar();
563
574
587 twobyte CalcPitchRaiseLower(bool writtenpitch);
588
593 twobyte CalcMIDIKey();
594
600 bool CalcVisibleInPart() const;
601
607 bool CalcIsTopNote() const;
608
614 bool CalcIsBottomNote() const;
615
616#ifdef PDK_FRAMEWORK_PREFS
628 void SetMIDIKey(twobyte midikey);
629#endif
630
636 bool IsIdenticalPitch(FCNote* pPitchNote);
637
643 bool IsHigherPitchThan(FCNote* pPitchCompareNote);
644
650 bool IsLowerPitchThan(FCNote* pPitchCompareNote);
651
656 bool IsUpper2nd() const;
657
662 bool IsLower2nd() const;
663
668 bool IsNonAligned2nd() const;
669
683
684#ifndef DOXYGEN_SHOULD_IGNORE_THIS
689 void _SetNoteDetailEntryFlag(bool state);
690
695 bool _GetNoteDetailEntryFlag();
696
701 void _SetPerformanceDataEntryFlag(bool state);
702
707 bool _GetPerformanceDataEntryFlag();
708
713 void _SetSpecialAltsEntryFlag(bool state);
714
719 bool _GetSpecialAltsEntryFlag();
720
721
726 void _SetCrossStaffEntryFlag(bool state);
727
732 bool _GetCrossStaffEntryFlag();
733
738 void _SetArticulationEntryFlag(bool state);
739#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
740
753 void MarkForErase() { _shouldbeerased = true; }
754
755#ifndef DOXYGEN_SHOULD_IGNORE_THIS
761 bool _GetShouldEraseState() { return _shouldbeerased; }
762#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
763
764
765#ifdef PDK_FRAMEWORK_DEBUG
766 void DebugDump() override
767 {
769 DebugOutInt("Note ID: ", GetNoteID());
770 DebugOutInt("Displacement: ", GetDisplacement());
771 DebugOutInt("Alteration: ", GetRaiseLower());
772 }
773#endif
774};
775#endif // #ifdef PDK_FRAMEWORK_ENTRIES
776
777#ifdef PDK_FRAMEWORK_ENTRIES
788class FCNotePitch : public FCNote
789{
790 EXNOTE _exnote;
791public:
792 const char* ClassName() const override { return "FCNotePitch"; }
793
795 FCNotePitch() : FCNote(0, &_exnote, NULL) {
796 memset(&_exnote, 0, sizeof(_exnote));
797 }
798
800 void CopyFrom(FCNote* pNote)
801 {
802 memcpy(&_exnote , pNote->_GetEXNOTE(), sizeof(EXNOTE));
803 }
804};
805
809{
810 int _measureno;
811 int _staffno;
812 int _layerno;
813 bool _gracenote;
814 int _gracenoteindex;
815 int _frameindex;
816 TimeEdu32 _edupos;
817 ENTNUM _entnum;
818 TimeEdu32 _duration;
819 TimeEdu32 _actualduration;
820public:
822 {
823 _measureno = 0;
824 _staffno = 0;
825 _layerno = 0;
826 _gracenote = false;
827 _gracenoteindex = 0;
828 _frameindex = 0;
829 _edupos = 0;
830 _entnum = 0;
831 _duration = 0;
832 _actualduration = 0;
833 }
834
836 FCNotePitch* GetItemAt(int index) const { return (FCNotePitch*) __FCCollection::GetItemAt(index); }
837
838 const char* ClassName() const override { return "FCNotePitches"; }
839
840#ifdef PDK_FRAMEWORK_PREFS
844 void AddFromEntry(FCNoteEntry* pEntry);
845
849 void AddFromCellEntry(FCNoteEntry* pEntry, FCNoteEntryCell* pNoteEntryCell);
850#endif
851
867
870 int GetMeasure() { return _measureno; }
871
874 int GetStaff() { return _staffno; }
875
878 int GetLayerNumber() { return _layerno; }
879
882 bool GetGraceNote() { return _gracenote; }
883
886 int GetGraceNoteIndex() { return _gracenoteindex; }
887
890 TimeEdu32 GetMeasurePos() { return _edupos; }
891
893 ENTNUM GetENTNUM() { return _entnum; }
894
896 TimeEdu32 GetDuration() { return _duration; }
897
899 TimeEdu32 GetActualDuration() { return _actualduration; }
900
902 int GetFrameIndex() { return _frameindex; }
903
904#ifdef PDK_FRAMEWORK_DEBUG
905 void DebugDump() override
906 {
908 DebugOutInt("Measure: ", _measureno);
909 DebugOutInt("Edu position: ", _edupos);
910 }
911#endif
912
913};
914#endif // #ifdef PDK_FRAMEWORK_ENTRIES
915
916
917#ifdef PDK_FRAMEWORK_ENTRIES
918class FCArticulations;
919class FCNoteEntries;
920class FCTuplet;
921class FCTuplets;
922class FCNoteheadMods;
924
940{
941#ifndef DOXYGEN_SHOULD_SKIP_THIS
942 EXENTRY* _pEntryRef;
943 EXTGF2005a* _pFrameRef;
944 twobyte _framemeasure;
945 twobyte _framestaff;
946 FCNoteEntry* _pPreviousEntry;
947 FCNoteEntry* _pNextEntry;
948 FCArticulations* _pArticulationCache;
949
950 void _SetXefFlag(FLAG_16 mask, bool state)
951 {
952 if (_pEntryRef)
953 Set16BitFlag(&_pEntryRef->xef, mask, state);
954 }
955
956 void _SetEfFlag(FLAG_32 mask, bool state)
957 {
958 if (_pEntryRef)
959 Set32BitFlag(&_pEntryRef->ef, mask, state);
960 }
961
962 bool _GetXefFlag(FLAG_32 mask) const
963 {
964 return (_pEntryRef) ? GetBitFlag(_pEntryRef->xef, mask) : false;
965 }
966
967 bool _GetEfFlag(FLAG_32 mask) const
968 {
969 return (_pEntryRef) ? GetBitFlag(_pEntryRef->ef, mask) : false;
970 }
971
972 void _UpdateNoteCollection();
973
978 twobyte _FindUniqueNoteID();
979
981 bool _CanBeBeamed() const;
982
988 template<FCNoteEntry* (FCNoteEntry::*ITERATOR)()>
989 FCNoteEntry* _IteratePotentialEntryInBeam();
990
991#ifndef DOXYGEN_SHOULD_SKIP_THIS
992#ifdef PDK_FRAMEWORK_PREFS
999 template<FCNoteEntry* (FCNoteEntry::*ITERATOR)()>
1000 std::optional<int> _IterateFindRestsInSecondaryBeam(FCNoteEntry* pNextOrPrevInBeam);
1001#endif // PDK_FRAMEWORK_PREFS
1002#endif // DOXYGEN_SHOULD_SKIP_THIS
1003
1008 FCNoteEntry* _NextPotentialInBeam()
1009 {
1010 FCNoteEntry* pNext = _IteratePotentialEntryInBeam<&FCNoteEntry::NextSameVInFrame>();
1011 if (pNext && pNext->GetBeamBeat()) return nullptr;
1012 return pNext;
1013 }
1014
1019 FCNoteEntry* _PreviousPotentialInBeam()
1020 {
1021 if (GetBeamBeat()) return nullptr;
1022 return _IteratePotentialEntryInBeam<&FCNoteEntry::PreviousSameVInFrame>();
1023 }
1024
1025#ifdef PDK_FRAMEWORK_PREFS
1032 template<FCNoteEntry* (FCNoteEntry::*ITERATOR)(), FCNoteEntry* (FCNoteEntry::*REVERSE_ITERATOR)()>
1033 FCNoteEntry* _IterateBeamGroup();
1034#endif
1035
1036
1037#if PDK_FRAMEWORK_PREFS
1042 twobyte _CalcVisibleBeams();
1043#endif
1044
1045#endif /*DOXYGEN_SHOULD_SKIP_THIS*/
1046
1047public:
1053 FCNote* GetItemAt(int index) const { return (FCNote*) __FCCollection::GetItemAt(index); }
1054
1055
1062 BREVE = 8192,
1063 WHOLE_NOTE = 4096,
1064 NOTE_WHOLE = 4096,
1065 HALF_NOTE = 2048,
1066 NOTE_HALF = 2048,
1067 QUARTER_NOTE = 1024,
1068 NOTE_QUARTER = 1024,
1069 EIGHTH_NOTE = 512,
1070 NOTE_8TH = 512,
1071 SIXTEENTH_NOTE = 256,
1072 NOTE_16TH = 256,
1073 THIRTYSECOND_NOTE = 128,
1074 NOTE_32ND = 128,
1075 SIXTYFOURTH_NOTE = 64,
1076 NOTE_64TH = 64,
1077 NOTE_128TH = 32
1078 };
1079
1080
1081 const char* ClassName() const override { return "FCNoteEntry"; }
1082
1084 FCNoteEntry(EXENTRY* pEntry, EXTGF2005a* pFrame, FCNoteEntry* pPrevious) : __FCCollection()
1085 {
1086 _pArticulationCache = NULL;
1087 _pEntryRef = pEntry;
1088 _framemeasure = pFrame->meas;
1089 _framestaff = FX_SlotToInst(pFrame->staffSlot, pFrame->iuList);
1090 _pFrameRef = pFrame;
1091 _pPreviousEntry = pPrevious;
1092 _pNextEntry = NULL;
1093 _UpdateNoteCollection();
1094 }
1095
1097 virtual ~FCNoteEntry();
1098
1099#ifndef DOXYGEN_SHOULD_SKIP_THIS
1105 void _AttachNextEntry(FCNoteEntry* pNext) { _pNextEntry = pNext; }
1106
1110 void _AttachPreviousEntry(FCNoteEntry* pNext) { _pPreviousEntry = pNext; }
1111
1114 EXENTRY* _GetEXENTRY() { return _pEntryRef; }
1115
1118 EXTGF2005a* _GetTGFRef() { return _pFrameRef; }
1119
1120 /* \brief For internal use only.
1121 *
1122 * Calculates the index within the TGF frame. Returns -1 if index
1123 * wasn't found (SHOULD NEVER HAPPEN).
1124 * */
1125 int _CalcTGFIndex();
1126
1128 void _TGFUpdate(EXTGF2005a* pTGF, EXENTRY* pEntry)
1129 {
1130 _pFrameRef = pTGF;
1131 _pEntryRef = pEntry;
1132 /* The TGF info for the entry is now updated.
1133 * Update the EXNOTE references for all the note objects as well. */
1134 for (int i = 0; i < GetCount(); i++)
1135 {
1136 FCNote* pNote = GetItemAt(i);
1137 pNote->_UpdateEXNOTE(&pEntry->note[i]);
1138 }
1139 }
1140
1142 FCArticulations* _GetArticulationCache() { return _pArticulationCache; }
1143#endif /*DOXYGEN_SHOULD_SKIP_THIS*/
1144
1145
1153 FCNote* FindNoteID(twobyte noteID);
1154
1155
1163 void SetRestDisplacement(twobyte value);
1164
1172 twobyte GetRestDisplacement();
1173
1174
1183 FCNoteEntry* Previous() { return _pPreviousEntry; }
1184
1194 {
1195 if (!_pPreviousEntry) return NULL;
1196 if (_pPreviousEntry->_GetTGFRef() != _GetTGFRef()) return NULL;
1197 return _pPreviousEntry;
1198 }
1199
1208
1209#ifdef PDK_FRAMEWORK_PREFS
1224 { return _IterateBeamGroup<&FCNoteEntry::_NextPotentialInBeam, &FCNoteEntry::_PreviousPotentialInBeam>(); }
1225#endif
1226
1227#ifdef PDK_FRAMEWORK_PREFS
1242 { return _IterateBeamGroup<&FCNoteEntry::_PreviousPotentialInBeam, &FCNoteEntry::_NextPotentialInBeam>(); }
1243#endif
1244
1255
1256#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
1258 luabridge::RefCountedPtr<FCArticulations> CreateArticulations_GC()
1259 { return makeLuaSharedPtr(CreateArticulations()); }
1260#endif
1261
1272
1273#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
1275 luabridge::RefCountedPtr<FCNoteheadMods> CreateNoteheadMods_GC()
1276 { return makeLuaSharedPtr(CreateNoteheadMods()); }
1277#endif
1278
1289
1290#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
1292 luabridge::RefCountedPtr<FCPerformanceMods> CreatePerformanceMods_GC()
1293 { return makeLuaSharedPtr(CreatePerformanceMods()); }
1294#endif
1295
1306
1307#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
1309 luabridge::RefCountedPtr<FCTuplets> CreateTuplets_GC()
1310 { return makeLuaSharedPtr(CreateTuplets()); }
1311#endif
1312
1313
1319 ENTNUM GetEntryNumber() const { return _pEntryRef ? _pEntryRef->entnum : 0; }
1320
1321#ifndef DOXYGEN_SHOULD_SKIP_THIS
1327 void _PackEXENTRYNotes();
1328
1333 bool _GetTupletDef(twobyte inci, EDTTuplet2005* pTuplet);
1334#endif /*DOXYGEN_SHOULD_SKIP_THIS*/
1335
1371 bool RelinkToCurrentView();
1372
1381 bool RelinkToScore();
1382
1387 void SetNoteFlag(bool state) { _SetEfFlag(EF_NOTEBIT, state); }
1388
1395 void SetPlayback(bool state) { _SetXefFlag(XEF_NOPLAYBACK, !state); }
1396
1403 void SetCombineRests(bool state);
1404
1409 void SetFlipTie(bool state) { _SetEfFlag(EF_FLIPTIE, state); }
1410
1417 void SetSpacing(bool state) { _SetXefFlag(XEF_NOSPACING, !state); }
1418
1425 void SetVisible(bool state) { _SetEfFlag(EF_IGNOREBIT, !state); }
1426
1433 void SetGraceNote(bool state) { _SetEfFlag(EF_GRACENOTE, state); }
1434
1441 void SetSplitRest(bool state) { _SetEfFlag(EF_SPLITREST, state); }
1442
1448 void SetVoice2(bool state) { _SetEfFlag(EF_V2BIT, state); }
1449
1454 void SetVoice2Launch(bool state) { _SetEfFlag(EF_V1CNTLRBIT, state); }
1455
1462 void SetGraceNoteSlash(bool state) { _SetXefFlag(XEF_SLASHGRACE, state); }
1463
1473 void SetCrossStaff(bool state) { _SetEfFlag(EF_CROSSSTAFF, state); }
1474
1481 void SetBeamBeat(bool state) { _SetEfFlag(EF_BEAMBIT, state); }
1482
1489 void SetFreezeBeam(bool state) { _SetXefFlag(XEF_FREEZEBEAM, state); }
1490
1499 void SetFlatBeam(bool state) { _SetXefFlag(XEF_FLATBEAM, state); }
1500
1507 void SetLedgerLines(bool state) { _SetXefFlag(XEF_NOLEGER, !state); }
1508
1518 void SetFreezeStem(bool state) { _SetEfFlag(EF_FREEZSTEM, state); }
1519
1524 void SetReverseUpStem(bool state) { _SetEfFlag(EF_REVUPSTEMBIT, state); }
1525
1530 void SetReverseDownStem(bool state) { _SetEfFlag(EF_REVDWSTEMBIT, state); }
1531
1536 void SetSplitStem(bool state) { _SetEfFlag(EF_SPLITSTEM, state); }
1537
1548 void SetCheckAccidentals(bool state);
1549
1558 void SetLegality(bool state) { _SetEfFlag(EF_VALID, state); }
1559
1564 void SetManualPosition(Evpu16 pos) { _pEntryRef->orgposi = pos; }
1565
1575 void SetClefIndex(eClef clef) { _pEntryRef->clef = clef; }
1576
1589 void SetStemUp(bool state) { _SetEfFlag(EF_UPSTEMBIT, state); }
1590
1598 void SetDuration(TimeEdu32 duration) { _pEntryRef->dura = duration; }
1599
1606 void SetFloatingRest(bool state)
1607 {
1608 // When the TGF is saved, Finale apparently does some cleanup that removes
1609 // any orphanded EXNOTE values, so setting this to `true` is sufficient,
1610 // provided the entry is already a rest.
1611 _SetEfFlag(EF_FLOATREST, state);
1612 }
1613
1620 void SetNoteDetailFlag(bool state) { _SetEfFlag(EF_NOTEDTAIL, state); }
1621
1628 void SetPerformanceDataFlag(bool state) { _SetEfFlag(EF_PRFMDATA, state); }
1629
1636 void SetSpecialAltsFlag(bool state) { _SetEfFlag(EF_DOTTIEALTS, state); }
1637
1644 void SetArticulationFlag(bool state) { _SetEfFlag(EF_ARTICDTAIL, state); }
1645
1650 void SetSmartShapeFlag(bool state) { _SetXefFlag(XEF_SMARTSHAPEDETAIL, state); }
1651
1656 void SetTupletStartFlag(bool state) { _SetEfFlag(EF_TUPLSTART, state); }
1657
1662 void SetLyricFlag(bool state) { _SetEfFlag(EF_LYRICDETAIL, state); }
1663
1670 void SetStemDetailFlag(bool state) { _SetEfFlag(EF_STEMDTAIL, state); }
1671
1678 void SetSecondaryBeamFlag(bool state) { _SetEfFlag(EF_SECBEAMBIT, state); }
1679
1686 void SetBeamExtensionFlag(bool state) { _SetEfFlag(EF_BMEXTDTAIL, state); }
1687
1695 void SetActualDuration(TimeEdu32 value) { _pEntryRef->actdur = value; }
1696
1709 void SetMeasurePos(TimeEdu32 value) { _pEntryRef->elldur = value; }
1710
1717 bool GetBeamBeat() const { return _GetEfFlag(EF_BEAMBIT); }
1718
1724 bool GetCheckAccidentals() const;
1725
1732 bool GetLedgerLines() const { return !_GetXefFlag(XEF_NOLEGER); }
1733
1738 bool GetFreezeStem() const { return _GetEfFlag(EF_FREEZSTEM); }
1739
1744 bool GetReverseUpStem() const { return _GetEfFlag(EF_REVUPSTEMBIT); }
1745
1750 bool GetReverseDownStem() const { return _GetEfFlag(EF_REVDWSTEMBIT); }
1751
1756 bool GetSplitStem() const { return _GetEfFlag(EF_SPLITSTEM); }
1757
1764 bool GetLegality() const { return _GetEfFlag(EF_VALID); }
1765
1771 bool GetFreezeBeam() const { return _GetXefFlag(XEF_FREEZEBEAM); }
1772
1781 bool GetFlatBeam() const { return _GetXefFlag(XEF_FLATBEAM); }
1782
1789 bool GetPlayback() const { return !_GetXefFlag(XEF_NOPLAYBACK); }
1790
1797 bool GetCombineRests() const;
1798
1804 bool GetFlipTie() const { return _GetEfFlag(EF_FLIPTIE); }
1805
1812 bool GetSpacing() const { return !_GetXefFlag(XEF_NOSPACING); }
1813
1820 bool GetVisible() const { return !_GetEfFlag(EF_IGNOREBIT); }
1821
1828 bool GetGraceNote() const { return _GetEfFlag(EF_GRACENOTE); }
1829
1836 bool GetSplitRest() const { return _GetEfFlag(EF_SPLITREST); }
1837
1845 bool GetGraceNoteSlash() const { return _GetXefFlag(XEF_SLASHGRACE); }
1846
1852 bool GetVoice2() const { return _GetEfFlag(EF_V2BIT); }
1853
1859 bool GetVoice2Launch() const { return _GetEfFlag(EF_V1CNTLRBIT); }
1860
1871 bool GetStemUp() const { return _GetEfFlag(EF_UPSTEMBIT); }
1872
1879 bool GetCrossStaff() const { return _GetEfFlag(EF_CROSSSTAFF); }
1880
1889 TimeEdu32 GetDuration() const { return _pEntryRef->dura; }
1890
1897 bool GetFloatingRest() const { return _GetEfFlag(EF_FLOATREST); }
1898
1907 TimeEdu32 GetActualDuration() const { return _pEntryRef->actdur; }
1908
1920 {
1921 TimeEdu32 duration = GetDuration();
1922 TimeEdu32 timeedu_try = 8192;
1923 while (timeedu_try)
1924 {
1925 if (timeedu_try & duration) return timeedu_try;
1926 timeedu_try /= 2;
1927 }
1928 return 0;
1929 }
1930
1936 twobyte CalcDots()
1937 {
1939 }
1940
1941#ifdef PDK_FRAMEWORK_PREFS
1951 bool CalcUniquePitchString(FCString* pString);
1952#endif
1953
1959 twobyte GetLayerNumber() const { return _pFrameRef->layer + 1; }
1960
1966 Evpu16 GetManualPosition() const { return _pEntryRef->orgposi; }
1967
1976 eClef GetClefIndex() const { return _pEntryRef->clef; }
1977
1987 int CalcGraceNoteIndex();
1988
1994 int CalcNumberOfVisibleNotes() const;
1995
2005 {
2006 return (IsRest() || CalcNumberOfVisibleNotes() == 0);
2007 }
2008
2021 twobyte CalcHighestStaffPosition();
2022
2035 twobyte CalcLowestStaffPosition();
2036
2049 twobyte CalcHighestDisplacement();
2050
2063 twobyte CalcLowestDisplacement();
2064
2076 twobyte CalcDisplacementRange();
2077
2090 {
2091 TimeEdu32 duration = CalcNondottedDuration();
2092 if (duration == 0) return 0;
2093 if (duration > EIGHTH_NOTE) return 0;
2094 twobyte retvalue = 1;
2095 TimeEdu32 tryvalue = EIGHTH_NOTE;
2096 while (tryvalue)
2097 {
2098 if (tryvalue == duration) return retvalue;
2099 retvalue ++;
2100 tryvalue /= 2;
2101 }
2102 return 0;
2103 }
2104
2110 bool CalcMultiLayeredCell();
2111
2123 int CalcDisplacementMatchCount(FCNoteEntry* pCompareEntry);
2124
2143 FCNote* CalcHighestNote(FCNote* pCeiling = NULL);
2144
2163 FCNote* CalcLowestNote(FCNote* pFloor = NULL);
2164
2177
2187
2197
2204 bool HasSameNotes(FCNoteEntry* pEntry);
2205
2215 FCNote* FindDisplacement(twobyte displacement);
2216
2227 FCNote* FindPitch(FCNote* pPitchNote);
2228
2238 TimeEdu32 GetMeasurePos() const { return _pEntryRef->elldur; }
2239
2246 bool GetNoteDetailFlag() const { return _GetEfFlag(EF_NOTEDTAIL); }
2247
2256 bool GetPerformanceDataFlag() const { return _GetEfFlag(EF_PRFMDATA); }
2257
2264 bool GetSpecialAltsFlag() const { return _GetEfFlag(EF_DOTTIEALTS); }
2265
2271 bool GetTupletStartFlag() const { return _GetEfFlag(EF_TUPLSTART); }
2272
2277 bool GetLyricFlag() const { return _GetEfFlag(EF_LYRICDETAIL); }
2278
2285 bool GetStemDetailFlag() const { return _GetEfFlag(EF_STEMDTAIL); }
2286
2293 bool GetSecondaryBeamFlag() const { return _GetEfFlag(EF_SECBEAMBIT); }
2294
2301 bool GetBeamExtensionFlag() const { return _GetEfFlag(EF_BMEXTDTAIL); }
2302
2308 bool GetArticulationFlag() const { return _GetEfFlag(EF_ARTICDTAIL); }
2309
2315 bool GetSmartShapeFlag() const { return _GetXefFlag(XEF_SMARTSHAPEDETAIL); }
2316
2323 twobyte GetMeasure() const { return _framemeasure; }
2324
2331 twobyte GetStaff() const { return _framestaff; }
2332
2343 FCNoteEntry* Next() { return _pNextEntry; }
2344
2354 {
2355 if (!_pNextEntry) return NULL;
2356 if (_pNextEntry->_GetTGFRef() != _GetTGFRef()) return NULL;
2357 return _pNextEntry;
2358 }
2359
2368
2375 bool IsNote() { return _GetEfFlag(EF_NOTEBIT); }
2376
2383 bool IsRest() const { return !_GetEfFlag(EF_NOTEBIT); }
2384
2390 bool IsDotted();
2391
2401 bool IsStartOfTuplet();
2402
2404 bool IsSameMeasurePosAs(FCNoteEntry* pCompareEntry);
2405
2415 bool IsStartOfTupletParam(TupletInfo* pInfoStorage = NULL);
2416
2424 bool IsPartOfTuplet();
2425
2436 bool IsOverlappedEntry(FCNoteEntry* pTestEntry);
2437
2446 bool IsPartOfTupletParam(TupletInfo* pInfoStorage = NULL);
2447
2453 {
2454 if (!Next()) return true;
2455 return (Next()->GetMeasure() != GetMeasure());
2456 }
2457
2467
2468#ifdef PDK_FRAMEWORK_PREFS
2488 bool CalcFlippable();
2489
2504 bool CalcBeamedGroupEnd();
2505
2514 bool CalcUnbeamedNote();
2515#endif
2516
2517#ifdef PDK_FRAMEWORK_PREFS
2530#endif
2531
2532#ifdef PDK_FRAMEWORK_PREFS
2544 int CalcLowestBeamStart();
2545#endif
2546
2547#ifdef PDK_FRAMEWORK_PREFS
2559 int CalcLowestBeamEnd();
2560#endif
2561
2562#ifdef PDK_FRAMEWORK_PREFS
2574 int CalcLowestBeamStub();
2575#endif
2576
2577#ifdef PDK_FRAMEWORK_PREFS
2591 bool CalcLargestNoteheadResize(FCNumber* pLargestFontSize, FCNumber* pLargestResize);
2592
2606 bool CalcSmallestNoteheadResize(FCNumber* pSmallestFontSize, FCNumber* pSmallestResize);
2607#endif
2608
2618 twobyte CalcWidestNoteheadWidth();
2619
2629 bool CalcStemUp();
2630
2640 twobyte CalcResize();
2641
2651 twobyte CalcStemLength();
2652
2667
2677 static TimeEdu32 CalcNondottedDurationForDuration(TimeEdu32 duration);
2678
2688 static int CalcDotsForDuration(TimeEdu32 duration);
2689
2699 static bool IsValidDuration(TimeEdu32 duration);
2700
2712 static TimeEdu32 CalcValidDuration(TimeEdu32 duration);
2713
2722 bool IsTied();
2723
2731 bool IsTiedBackwards();
2732
2742 bool IsTiedToPrevious();
2743
2751 bool IsAllTied();
2752
2761 bool IsAllTiedBackwards();
2762
2771 void ClearPitches();
2772
2780 FCNote* AddNewNote();
2781
2798 int AddPitches(FCNoteEntry* pSourceEntry, bool unique, bool settie = false);
2799
2800#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2811 int AddPitches(FCNotePitches* pPitches, bool unique);
2812#endif
2813
2824 int AddPitch(FCNote* pNote);
2825
2848 int AddArticulations(FCNoteEntry* pSourceEntry, bool bNoDuplicates = true);
2849
2859 void TieAll(bool bTie);
2860
2870 void SetAccidentals(bool bAccidental);
2871
2881 void CopyNotes(FCNoteEntry* pFrom);
2882
2891 void CopyNote(FCNote* pFrom);
2892
2901 void CopyEntry(FCNoteEntry* pFromEntry);
2902
2921 void CopyEntryDetails(FCNoteEntry* pFromEntry, bool copytuplets);
2922
2929 void CopyEntryPercussionDetails(FCNoteEntry* pFromEntry);
2930
2943 bool DeleteNote(FCNote* pNote);
2944
2959 void CacheArticulations();
2960
2965 bool IsRestMovable();
2966
2981 void MakeRest();
2982
2988 void MakeMovableRest();
2989
2995 void MakeNote();
2996
3001
3008
3009#ifdef PDK_FRAMEWORK_DEBUG
3010#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3011 void DebugOutLocation()
3012 {
3013 FCString location("Location - Staff: ");
3014 location.AppendInteger(GetStaff());
3015 location.AppendCString(" Measure: ");
3016 location.AppendInteger(GetMeasure());
3017 location.AppendCString(" Duration Pos: ");
3018 location.AppendInteger(GetMeasurePos());
3019 DebugOut(location.GetCString());
3020 }
3021
3022 void DebugDump() override
3023 {
3025 DebugOutInt("Entry Number: ", GetEntryNumber());
3026 DebugOutInt("Duration position: ", GetMeasurePos());
3027 DebugOutInt("Duration: ", GetDuration());
3028 DebugOutBool("Is note: ", IsNote());
3029 DebugOutBool("Beam/Beat: ", GetBeamBeat());
3030 DebugOutBool("Stem goes up: ", CalcStemUp());
3031 DebugOutBool("Articulation Flag: ", GetArticulationFlag());
3032 }
3033
3034 void DebugDataDump() override
3035 {
3037 DebugOutHex("xef: ", _pEntryRef->xef);
3038 DebugOutHex("ef: ", _pEntryRef->ef);
3039 }
3040#endif /* #ifndef DOXYGEN_SHOULD_IGNORE_THIS */
3041#endif
3042
3043};
3044
3045#endif // #ifdef PDK_FRAMEWORK_ENTRIES
3046
3047
3048
3049#ifdef PDK_FRAMEWORK_ENTRIES
3058{
3059protected:
3060#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3066 void _ClearTGF(EXTGF2005a* pTgf)
3067 {
3068 FX_DeleteEXENTRY( pTgf, 0, pTgf->numEntries );
3069 }
3070
3072 void _CopyEntries(EXTGF2005a* pSourceTgf, EXTGF2005a* pDestinationTgf);
3073
3074#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3075
3076public:
3077 const char* ClassName() const override { return "__FCNoteEntryCollection"; }
3078
3087 {
3088 for (int i = 0; i < GetCount(); i++)
3089 {
3090 FCNoteEntry* pNoteEntry = (FCNoteEntry*) GetItemAt(i);
3091 if (pNoteEntry->GetEntryNumber() == entnum) return pNoteEntry;
3092 }
3093 return NULL;
3094 }
3095
3097 FCNoteEntry* GetItemAt(int index) const { return (FCNoteEntry*) __FCCollection::GetItemAt(index); }
3098
3099};
3100#endif // #ifdef PDK_FRAMEWORK_ENTRIES
3101
3102
3103#ifdef PDK_FRAMEWORK_ENTRIES
3112{
3113public:
3114 const char* ClassName() const override { return "FCNoteEntries"; }
3115};
3116#endif // #ifdef PDK_FRAMEWORK_ENTRIES
3117
3118#ifdef PDK_FRAMEWORK_ENTRIES
3133{
3134 /* Settings that controls the flow of the 'Find' methods. All defaults to ON. */
3135 bool _findvisible;
3136 bool _findhidden;
3137 bool _findnotes;
3138 bool _findrests;
3139 bool _findalternatenotation;
3140 bool _findcutaway;
3141 bool _findvoice1;
3142 bool _findvoice2;
3143 bool _findvoice2launch;
3144
3145 /* For internal use only. Helper method for all the 'Find' methods. */
3146 bool _ShouldScanEntry(FCNoteEntry* pNoteEntry);
3147
3148 /* The note entry (and cell metrics) metrics for the full cell. */
3149 bool _loadedmetrics;
3150 FCNoteEntryCellMetrics _noteentrycellmetrics;
3151
3152 /* For internal use only. Makes sure that the metrics for the whole TGF is loaded. */
3153 void _AssureLoadedEntryCellMetrics();
3154
3155public:
3174private:
3175#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3177 std::vector<EXTGF2005a*> _frames;
3178
3179 int _measure;
3180 int _staff;
3181
3182 int _loadlayermode;
3183 bool _loadmirrors;
3184
3189 void _SetupEntries();
3190#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3191
3192public:
3193 const char* ClassName() const override { return "FCNoteEntryCell"; }
3194
3199 FCNoteEntryCell(int measure, int staff) : __FCNoteEntryCollection(), _frames(FX_GetMaxLayers())
3200 {
3201 /* Force metrics to load */
3202 _loadedmetrics = false;
3203
3204 /* Set all settings related to the 'Find methods to ON */
3205 _findvisible = true;
3206 _findhidden = true;
3207 _findnotes = true;
3208 _findrests = true;
3209 _findalternatenotation = true;
3210 _findcutaway = true;
3211 _findvoice1 = true;
3212 _findvoice2 = true;
3213 _findvoice2launch = true;
3214
3215 _loadlayermode = (int) LLM_ALLVISIBILELAYERS; // Load all visible layers
3216 _loadmirrors = true;
3217 _measure = measure;
3218 _staff = staff;
3219 }
3220
3226 {
3227 ClearFrame();
3228 }
3229
3244 FCNoteEntry* AppendEntriesInLayer(int layerno, int noofentries);
3245
3262 bool MoveEntry(FCNoteEntry* pEntry, FCNoteEntryCell* pSourceEntryCell);
3263
3270 bool CalcAccidental(FCNoteEntry* pEntry, FCNote* pNote);
3271
3278 {
3279 if (GetCount() == 0) return false;
3280 FCNoteEntry* pFirstEntry = GetItemAt(0);
3281 for (int i = 1; i < GetCount(); i++)
3282 {
3283 FCNoteEntry* pCheckEntry = GetItemAt(i);
3284 if (pFirstEntry->GetLayerNumber() != pCheckEntry->GetLayerNumber()) return true;
3285 }
3286 return false;
3287 }
3288
3300 {
3301 for (int i = 0; i < GetCount(); i++)
3302 {
3303 FCNoteEntry* pCheckEntry = GetItemAt(i);
3304 if (pCheckEntry->GetLayerNumber() == layerno) return true;
3305 }
3306 return false;
3307 }
3308
3317 TimeEdu32 CalcLayerDuration(int layerno)
3318 {
3319 if (!_frames[layerno - 1]) return -1;
3320 return FX_GetTGFDuration(_frames[layerno - 1]);
3321 }
3322
3330 {
3331 ClearAll();
3332 for (int i = 0; i < FX_GetMaxLayers(); i++)
3333 {
3334 if (_frames[i]) FX_FreeTGF(_frames[i]);
3335 _frames[i] = NULL;
3336 }
3337 }
3338
3357 FCNoteEntry* FindEntryStartPosition(TimeEdu32 pos, int layerno);
3358
3373 FCNoteEntry* FindCoveredEntry(TimeEdu32 pos, int layerno);
3374
3389 FCNoteEntry* FindClosestPos(TimeEdu32 pos);
3390
3408 FCNoteEntry* FindNextEntryPos(TimeEdu32 pos);
3409
3427 FCNoteEntry* FindPreviousEntryPos(TimeEdu32 pos);
3428
3429#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3430 /* Only for internal use! */
3431 EXTGF2005a* _GetEXTGF(int index) { return _frames[index]; }
3432
3433 /* Old (unoptimized) code */
3434 bool _DeleteAllNullEntriesOld();
3435#endif // DOXYGEN_SHOULD_IGNORE_THIS
3436
3452 bool DeleteAllNullEntries();
3453
3462 bool DeleteEntry(FCNoteEntry* pEntry);
3463
3472 bool Load();
3473
3480 bool Save();
3481
3491 FCNoteEntry* GetRegionItemAt(int index, FCMusicRegion* pRegion);
3492
3508 {
3509 for (auto frame : _frames)
3510 {
3511 if (frame && !frame->isMirror)
3512 FX_ReduceEntries(frame);
3513 }
3514 _SetupEntries();
3515 return Save();
3516 }
3517
3518 /***********/
3519 /* GETTERS */
3520 /***********/
3521
3529 int GetLoadLayerMode() const { return _loadlayermode; }
3530
3538 bool GetLoadMirrors() const { return _loadmirrors; }
3539
3549 bool GetFindVisible() const { return _findvisible; }
3550
3560 bool GetFindHidden() const { return _findhidden; }
3561
3571 bool GetFindNotes() const { return _findnotes; }
3572
3582 bool GetFindRests() const { return _findrests; }
3583
3596 bool GetFindAlternateNotation() const { return _findalternatenotation; }
3597
3608 bool GetFindCutaway() const { return _findcutaway; }
3609
3620 bool GetFindVoice1() const { return _findvoice1; }
3621
3632 bool GetFindVoice2() const { return _findvoice2; }
3633
3644 bool GetFindVoice2Launch() const { return _findvoice2launch; }
3645
3652 twobyte GetMeasure() const { return _measure; }
3653
3660 twobyte GetStaff() const { return _staff; }
3661
3662 /***********/
3663 /* SETTERS */
3664 /***********/
3665
3679 void SetLoadLayerMode(int mode) { _loadlayermode = mode; }
3680
3686 void SetLoadMirrors(bool state) { _loadmirrors = state; }
3687
3699 void SetFindVisible(bool state) { _findvisible = state; }
3700
3712 void SetFindHidden(bool state) { _findhidden = state; }
3713
3725 void SetFindNotes(bool state) { _findnotes = state; }
3726
3738 void SetFindRests(bool state) { _findrests = state; }
3739
3754 void SetFindAlternateNotation(bool state) { _findalternatenotation = state; }
3755
3768 void SetFindCutaway(bool state) { _findcutaway = state; }
3769
3780 void SetFindVoice1(bool state) { _findvoice1 = state; }
3781
3792 void SetFindVoice2(bool state) { _findvoice2 = state; }
3793
3804 void SetFindVoice2Launch(bool state) { _findvoice2launch = state; }
3805
3806
3812};
3813#endif // #ifdef PDK_FRAMEWORK_ENTRIES
3814
3815#ifdef PDK_FRAMEWORK_ENTRIES
3833#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3834 twobyte _layerindex;
3835 twobyte _staff;
3836 twobyte _startmeasure;
3837 twobyte _endmeasure;
3838
3839 bool _loadmirrors;
3840 bool _usevisiblelayeronly;
3841
3842 int _tgfcounter;
3843 EXTGF2005a** _tgfarray;
3844
3849 void _SetupEntries();
3850
3857 bool _LoadRedir(twobyte layer_redir,
3858 twobyte staff_redir,
3859 twobyte startmeasure_redir);
3860
3861
3871 EXTGF2005a* _SilentTGFUpdate(EXTGF2005a* pOldTGF);
3872
3873
3880 EXTGF2005a* _GetNextTGFRef(EXTGF2005a* pTGF)
3881 {
3882 for (int i = 0; i < _tgfcounter - 1; i++)
3883 {
3884 if (_tgfarray[i] == pTGF) return _tgfarray[i + 1];
3885 }
3886 return NULL;
3887 }
3888
3889 /* Utility method for _DeleteAllRestFramesMethod() */
3890 bool _RestsHasAttachedData(FCNoteEntry* pEntry);
3891
3892 /* Utility method for #DeleteAllRestFrames and #DeleteAllNonconnectedRestFrames */
3893 bool _DeleteAllRestFramesMethod(bool keepentryattachedrestframes);
3894
3895#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3896
3897public:
3898 const char* ClassName() const override { return "FCNoteEntryLayer"; }
3899
3900
3913 FCNoteEntryLayer(twobyte layerindex, twobyte staff, twobyte startmeas = 1, twobyte endmeas = -1);
3914
3917 ClearFrames();
3918 }
3919
3927 ClearAll();
3928 for (int i = 0; i < _tgfcounter; i++) {
3929 if (_tgfarray[i]) FX_FreeTGF(_tgfarray[i]);
3930 _tgfarray[i] = NULL;
3931 }
3932 delete [] _tgfarray;
3933 _tgfarray = NULL;
3934 _tgfcounter = 0;
3935 }
3936
3954 bool DeleteAllNullEntries();
3955
3974 bool DeleteAllRestFrames();
3975
3979
3986 {
3987 for (int i = 0; i < _tgfcounter; i++) {
3988 if (_tgfarray[i]) _ClearTGF(_tgfarray[i]);
3989 }
3990 ClearAll();
3991 }
3992
3998 twobyte GetLayerIndex() const { return _layerindex; }
3999
4004 twobyte GetStaff() const { return _staff; }
4005
4010 twobyte GetStartMeasure() const { return _startmeasure; }
4011
4017 twobyte GetEndMeasure() const { return _endmeasure; }
4018
4024 bool GetLoadMirrors() const { return _loadmirrors; }
4025
4033 bool GetUseVisibleLayer() const { return _usevisiblelayeronly; }
4034
4042 void SetUseVisibleLayer(bool value) { _usevisiblelayeronly = value; }
4043
4053 void SetLayerIndex(twobyte layerno);
4054
4060 void SetLoadMirrors(bool state) { _loadmirrors = state; }
4061
4069 bool Load();
4070
4077 bool Save();
4078
4094 FCNoteEntryLayer* CreateCloneEntries(twobyte layerindex_redir,
4095 twobyte staff_redir,
4096 twobyte startmeasure_redir);
4097
4098#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
4100 luabridge::RefCountedPtr<FCNoteEntryLayer> CreateCloneEntries_GC(twobyte layer_redir,
4101 twobyte staff_redir,
4102 twobyte startmeasure_redir)
4103 { return makeLuaSharedPtr(CreateCloneEntries(layer_redir, staff_redir, startmeasure_redir)); }
4104#endif
4105
4106
4118
4119
4133 FCNoteEntry* InsertEntriesBefore(FCNoteEntry* pPositionEntry, int count);
4134
4152 FCNoteEntry* InsertEntriesAfter(FCNoteEntry* pPositionEntry, int count, bool nextmeasure = false);
4153
4154
4168 bool CloneTuplets(FCNoteEntryLayer* pSource);
4169
4170
4186 bool IsInSuccession(FCNoteEntry* pEntry1, FCNoteEntry* pEntry2)
4187 {
4188 if (pEntry1->Next() != pEntry2) return false;
4189 if ((pEntry2->GetMeasure() - pEntry1->GetMeasure()) > 1) return false;
4190 return true;
4191 }
4192
4204 TimeEdu32 CalcFrameDuration(int measurenumber);
4205
4215
4226 int CalcRegionCount(FCMusicRegion* pRegion);
4227
4240 FCNoteEntry* GetRegionItemAt(int index, FCMusicRegion* pRegion);
4241
4249 int ForEachInRegion(FCIteratorHandler* pIterator, FCMusicRegion* pRegion);
4250
4253#ifdef PDK_FRAMEWORK_DEBUG
4254 void DebugDump() override
4255 {
4258 DebugOutInt("Layer: ", GetLayerIndex());
4259 DebugOutInt("Staff: ", GetStaff());
4260 DebugOutInt("Start measure: ", GetStartMeasure());
4261 DebugOutInt("End measure: ", GetEndMeasure());
4262 DebugOutInt("TGF Frame counter: ", _tgfcounter);
4263 for (int i = 0; i < _tgfcounter; i++) {
4264 if (_tgfarray[i])
4265 {
4266 DebugOutInt("=> TGF No", i);
4267 DebugOutInt("===> .frame ", _tgfarray[i]->frame);
4268 DebugOutInt("===> .inst ", _tgfarray[i]->inst);
4269 DebugOutInt("===> .staffSlot ", _tgfarray[i]->staffSlot);
4270 DebugOutInt("===> .meas ", _tgfarray[i]->meas);
4271 }
4272 }
4273 }
4274#endif
4275};
4276
4277
4286{
4287 int _staffno;
4288 int _startmeasure;
4289 int _endmeasure;
4290
4291 bool _usevisiblelayersonly;
4292public:
4293
4301 FCNoteEntryLayers(twobyte staff, twobyte startmeas = 1, twobyte endmeas = -1)
4302 {
4303 _staffno = staff;
4304 _startmeasure = startmeas;
4305 _endmeasure = endmeas;
4306 _usevisiblelayersonly = true;
4307 }
4308
4312 bool LoadAll()
4313 {
4314 bool result = false;
4315 for (int layer = 0; layer < FX_GetMaxLayers(); layer++)
4316 {
4317 FCNoteEntryLayer* pNoteEntryLayer = new FCNoteEntryLayer(layer, _staffno, _startmeasure, _endmeasure);
4318 pNoteEntryLayer->SetUseVisibleLayer(_usevisiblelayersonly);
4319 if (pNoteEntryLayer->Load()) result = true;
4320 Add(pNoteEntryLayer);
4321 }
4322 return result;
4323 }
4324
4326 bool SaveAll()
4327 {
4328 for (int layeridx = 0; layeridx < GetCount(); layeridx++)
4329 {
4330 FCNoteEntryLayer* pLayer = (FCNoteEntryLayer*) GetItemAt(layeridx);
4331 if (!pLayer->Save()) return false;
4332 }
4333 return true;
4334 }
4335
4336
4339 {
4340 _usevisiblelayersonly = value;
4341 }
4342
4344 FCNoteEntryLayer* GetItemAt(int index) const
4345 {
4347 }
4348};
4349
4350
4351
4352#endif // #ifdef PDK_FRAMEWORK_ENTRIES
4353
4354
4355#endif /* FF_NOTEFRAME_H */
4356
Base class for the Finale Framework classes.
Definition ff_base.h:71
static void DebugOutHex(const char *pszPrefixText, int i)
Static method that outputs a line for debugging purposes. The text appears with the extra digit (in h...
Definition finaleframework.cpp:404
void Set16BitFlag(FLAG_16 *flag, FLAG_16 flagbits, bool state)
Sets a 16 bit flag.
Definition finaleframework.cpp:635
static void DebugOutInt(const char *pszPrefixText, int i)
Static method that outputs a line for debugging purposes. The text appears with the extra digit (in d...
Definition finaleframework.cpp:335
void Set32BitFlag(FLAG_32 *flag, FLAG_32 flagbits, bool state)
Sets/resets a 32 bit flag, by using a bit mask.
Definition finaleframework.cpp:643
static void DebugOut(const char *pszLine)
Static method to output a line of text for debugging purposes.
Definition finaleframework.cpp:526
bool GetBitFlag(FLAG_32 flag, FLAG_32 flagbits) const
Gets a state from flag bits. Returns true if any bit in the mask is set.
Definition ff_base.h:485
virtual void DebugDump()
Outputs the class data/information for debugging purposes.
Definition finaleframework.cpp:609
static void DebugOutBool(const char *pszPrefixText, bool state)
Static method that outputs a line for debugging purposes. The boolean state appears afterwards as eit...
Definition finaleframework.cpp:451
virtual void DebugDataDump()
Outputs a memory dump of the data block in the object for debugging purposes.
Definition finaleframework.cpp:617
Base class for all collection classes. A collection is a storage that can store multiple objects of s...
Definition ff_basecollection.h:26
void Add(__FCBase *pNewItem)
Adds an element to the end of the collection.
Definition finaleframework.cpp:13726
void ClearAll()
Destroys all the objects in the collection and empties the collection.
Definition ff_basecollection.h:151
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_basecollection.h:334
int GetCount() const
Returns the number of elements of the collection.
Definition ff_basecollection.h:102
__FCBase * GetItemAt(int index) const
Returns the object at the index position. Index is 0-based.
Definition finaleframework.cpp:13767
__FCCollection()
The constructor.
Definition ff_basecollection.h:74
Abstract class that encapsulate collections of note entries (of the FCNoteEntry class)....
Definition ff_noteframe.h:3058
FCNoteEntry * FindEntryNumber(ENTNUM entnum)
Finds the entry item in the collection with the given note entry number.
Definition ff_noteframe.h:3086
FCNoteEntry * GetItemAt(int index) const
Overridden version of GetItemAt().
Definition ff_noteframe.h:3097
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_noteframe.h:3077
Collection class for FCArticulation class objects.
Definition ff_entrydetailscollection.h:25
static void MarkMetricsForRebuild()
Static method that sets the flag that the metrics should be rebuilt on the next load.
Definition ff_base.h:3850
static void MarkMetricsForRebuild()
Static method that sets the refresh flag, so the next Load call will rebuild the metrics data.
Definition ff_base.h:4175
Class for iterator handlers.
Definition ff_iterator.h:26
Class for key signatures. Instances of this class are auto-created by FCMeasure:GetKeySignature and F...
Definition ff_keysig.h:25
Class that encapsulates EREGION and provides additional functionality to region handling.
Definition ff_region.h:25
Collection class for FCNoteEntry class objects. This class is intended for the collection of random e...
Definition ff_noteframe.h:3112
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_noteframe.h:3114
Class that encapsulate a cell of note entries.
Definition ff_noteframe.h:3133
bool GetFindCutaway() const
Returns if entries that are hidden by cutaway notation should be searched in the 'Find' methods,...
Definition ff_noteframe.h:3608
bool Save()
Saves the note entries for the cell. Mirror frames are never saved.
Definition finaleframework.cpp:19162
LOADLAYERMODES
Special layer constants to be used with SetLoadLayerMode().
Definition ff_noteframe.h:3161
@ LLM_EVERYLAYER
Definition ff_noteframe.h:3169
@ LLM_HIDDENLAYERS
Definition ff_noteframe.h:3166
@ LLM_NONE
Definition ff_noteframe.h:3163
@ LLM_ALLVISIBILELAYERS
Definition ff_noteframe.h:3172
bool GetFindVoice2() const
Returns if entries that marked as voice 2 should be searched in the 'Find' methods,...
Definition ff_noteframe.h:3632
FCNoteEntry * AppendEntriesInLayer(int layerno, int noofentries)
Adds empty entries to the the end of a specific layer in the cell. The note entry cell must be loaded...
Definition finaleframework.cpp:18948
FCNoteEntry * FindClosestPos(TimeEdu32 pos)
Finds the entry that is closest to the indicated duration position. All loaded layers will be scanned...
Definition finaleframework.cpp:19288
void SetFindVoice1(bool state)
Sets if entries that marked as voice 1 should be searched in the 'Find' methods, or not.
Definition ff_noteframe.h:3780
bool GetFindRests() const
Returns if rest entries should be searched in the 'Find' methods, or not.
Definition ff_noteframe.h:3582
bool GetFindVisible() const
Sets if visible entries should be searched in the 'Find' methods, or not.
Definition ff_noteframe.h:3549
bool GetLoadMirrors() const
Returns the state of mirror frame loading that will be used for the object at a Load() call.
Definition ff_noteframe.h:3538
bool GetFindAlternateNotation() const
Returns if entries that are hidden by a staff definition or staff style should be searched in the 'Fi...
Definition ff_noteframe.h:3596
twobyte GetMeasure() const
Returns the measure that the cell belongs to.
Definition ff_noteframe.h:3652
virtual ~FCNoteEntryCell()
The destructor.
Definition ff_noteframe.h:3225
FCNoteEntryCell(int measure, int staff)
The constructor.
Definition ff_noteframe.h:3199
bool CalcEntriesInMultiLayers()
Returns true if the note entry cell contain entries from more than one layer.
Definition ff_noteframe.h:3277
bool DeleteEntry(FCNoteEntry *pEntry)
Deletes an entry from the cell (and TGF).
Definition finaleframework.cpp:18980
bool CalcAccidental(FCNoteEntry *pEntry, FCNote *pNote)
Calculates the accidental state in the note entry cell. Only works on Finale 2014 and above.
Definition finaleframework.cpp:19032
void SetFindVoice2(bool state)
Sets if entries that marked as voice 2 should be searched in the 'Find' methods, or not.
Definition ff_noteframe.h:3792
void SetFindHidden(bool state)
Sets if hidden entries should be searched in the 'Find' methods, or not.
Definition ff_noteframe.h:3712
void SetLoadMirrors(bool state)
Sets if mirrors should be loaded as well. (The default is that mirrors are loaded....
Definition ff_noteframe.h:3686
FCNoteEntry * GetItemAt(int index) const
Overridden version of the GetItemAt() method.
Definition ff_noteframe.h:3811
bool GetFindNotes() const
Returns if note entries (=non-rests) should be searched in the 'Find' methods, or not.
Definition ff_noteframe.h:3571
FCNoteEntry * GetRegionItemAt(int index, FCMusicRegion *pRegion)
Returns the entry item at the index position - but only if it's within the region.
Definition finaleframework.cpp:19208
void SetFindVoice2Launch(bool state)
Sets if entries that marked as voice 2 start should be searched in the 'Find' methods,...
Definition ff_noteframe.h:3804
TimeEdu32 CalcLayerDuration(int layerno)
Returns the duration of the indicated layer.
Definition ff_noteframe.h:3317
void SetFindNotes(bool state)
Sets if note entries (=non-rests) should be searched in the 'Find' methods, or not.
Definition ff_noteframe.h:3725
FCNoteEntry * FindEntryStartPosition(TimeEdu32 pos, int layerno)
Finds the entry that starts exacly at the indicated measure position in the indicated layer (or in an...
Definition finaleframework.cpp:19255
bool DeleteAllNullEntries()
Deletes all entries from the cell (and TGF) that are 0 in duration.
Definition finaleframework.cpp:19097
bool GetFindVoice2Launch() const
Returns if entries that marked as voice 2 start should be searched in the 'Find' methods,...
Definition ff_noteframe.h:3644
bool ReduceEntries()
Breaks or combines the entries for the current time signature for the measure based on the rules of s...
Definition ff_noteframe.h:3507
bool IsLayerContainingEntries(int layerno)
Returns true if the indicated layer contains currently loaded note entries.
Definition ff_noteframe.h:3299
bool Load()
Loads the note entries for the cell. Which layers that will be loaded are controlled by the SetLoadLa...
Definition finaleframework.cpp:18898
bool MoveEntry(FCNoteEntry *pEntry, FCNoteEntryCell *pSourceEntryCell)
Moves the entry from one cell to another. The entry number is preserved (so all note-attached will fo...
Definition finaleframework.cpp:19008
int GetLoadLayerMode() const
Returns the "layer mode" that will be used for the object at a Load() call.
Definition ff_noteframe.h:3529
void ClearFrame()
Clears the collection and frees the associated TGF frame data.
Definition ff_noteframe.h:3329
FCNoteEntry * FindNextEntryPos(TimeEdu32 pos)
Finds the first entry that appears after the indicated position. All loaded layers will be scanned.
Definition finaleframework.cpp:19309
void SetFindVisible(bool state)
Sets if visible entries should be searched in the 'Find' methods, or not.
Definition ff_noteframe.h:3699
void SetFindRests(bool state)
Sets if rest entries should be searched in the 'Find' methods, or not.
Definition ff_noteframe.h:3738
FCNoteEntry * FindPreviousEntryPos(TimeEdu32 pos)
Finds the first entry that appears earlier than the indicated position. All loaded layers will be sca...
Definition finaleframework.cpp:19331
FCNoteEntry * FindCoveredEntry(TimeEdu32 pos, int layerno)
Finds the entry that is at the indicated measure position in the indicated layer.
Definition finaleframework.cpp:19274
void SetLoadLayerMode(int mode)
Sets the "layer mode" for the Load method. This must be called/st before any Load() call.
Definition ff_noteframe.h:3679
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_noteframe.h:3193
void SetFindAlternateNotation(bool state)
Sets if entries that are hidden by a staff definition or staff style should be searched in the 'Find'...
Definition ff_noteframe.h:3754
twobyte GetStaff() const
Returns the staff that the cell belongs to.
Definition ff_noteframe.h:3660
bool GetFindHidden() const
Returns if hidden entries should be searched in the 'Find' methods, or not.
Definition ff_noteframe.h:3560
void SetFindCutaway(bool state)
Sets if entries that are hidden by cutaway notation should be searched in the 'Find' methods,...
Definition ff_noteframe.h:3768
bool GetFindVoice1() const
Returns if entries that marked as voice 1 should be searched in the 'Find' methods,...
Definition ff_noteframe.h:3620
Class that encapsulate ALL the entry metrics data in a note entry cell, as well as the cell metrics....
Definition ff_basecollection.h:1463
Encapsulates a note entry from an owner class (for example FCNoteEntryCell, FCNoteEntryLayer) class.
Definition ff_noteframe.h:940
FCNote * FindNoteID(twobyte noteID)
Definition finaleframework.cpp:17783
TimeEdu32 GetDuration() const
Gets the symbolic duration of the entry. For tuplet entries, the symbolic duration would be different...
Definition ff_noteframe.h:1889
bool GetGraceNoteSlash() const
Gets the grace note slash state of the note entry.
Definition ff_noteframe.h:1845
void SetNoteFlag(bool state)
Sets if the entry is a note or a rest.
Definition ff_noteframe.h:1387
Evpu16 GetManualPosition() const
Gets the manual positioning of the entry.
Definition ff_noteframe.h:1966
bool HasSameNotes(FCNoteEntry *pEntry)
Compares the notes with the notes in another note entry.
Definition finaleframework.cpp:17736
FCNoteEntry * NextInBeamedGroup()
Returns the next note entry in a beamed group or NULL if there is none.
Definition ff_noteframe.h:1223
bool GetSplitStem() const
Gets the "Split Stem" state for the note entry.
Definition ff_noteframe.h:1756
FCNoteEntry * PreviousInBeamedGroup()
Returns the previous note entry in a beamed group or NULL if there is none.
Definition ff_noteframe.h:1241
void MakeNote()
Turns the entry into a note.
Definition finaleframework.cpp:18754
bool GetStemUp() const
Returns the state of the "up" bit for the entry. This is NOT the same as the true direction for the s...
Definition ff_noteframe.h:1871
bool RelinkToCurrentView()
Relinks the unlinkable items in the current view so that the score and part(s) match.
Definition finaleframework.cpp:18136
bool GetNoteDetailFlag() const
Returns true for existing note detail records.
Definition ff_noteframe.h:2246
FCNote * AddNewNote()
Adds a new note to the chord.
Definition finaleframework.cpp:17794
bool GetSecondaryBeamFlag() const
Returns true for secondary beam detail records.
Definition ff_noteframe.h:2293
void SetSmartShapeFlag(bool state)
Sets the flag that marks that a smart shape is attached to the entry.
Definition ff_noteframe.h:1650
void SetStemDetailFlag(bool state)
Sets the flag state for stem detail records.
Definition ff_noteframe.h:1670
bool GetBeamExtensionFlag() const
Returns true for beam extension detail records.
Definition ff_noteframe.h:2301
twobyte CalcResize()
Calculates the resize percent for the note entry.
Definition finaleframework.cpp:18101
bool CalcDisplaysAsRest() const
Calculates if this entry displays as a rest in the current score or part view, taking into account th...
Definition ff_noteframe.h:2004
bool IsNote()
Returns true if entry is a note.
Definition ff_noteframe.h:2375
bool GetLedgerLines() const
Gets the ledger line state for the note entry.
Definition ff_noteframe.h:1732
void SetCrossStaff(bool state)
Sets the cross staff state for the entry.
Definition ff_noteframe.h:1473
twobyte CalcHighestStaffPosition()
Calculates the highest staff position for a note in the entry's chord.
Definition finaleframework.cpp:17420
void SetPerformanceDataFlag(bool state)
Sets the flag state for performance data records.
Definition ff_noteframe.h:1628
void SetSpecialAltsFlag(bool state)
Sets the flag state for special alteration records.
Definition ff_noteframe.h:1636
ENTNUM GetEntryNumber() const
Returns the internal entry number (ID) for the note entry.
Definition ff_noteframe.h:1319
bool CalcBeamedGroupEnd()
Returns true if it's the end entry in a beamed group.
Definition finaleframework.cpp:18295
int AddPitch(FCNote *pNote)
Adds a note to a chord.
Definition finaleframework.cpp:18653
int CalcGraceNoteIndex()
Returns the grace note index for the entry.
Definition finaleframework.cpp:17394
twobyte CalcStemLength()
Calculates the stem length, based on the entry metrics.
Definition finaleframework.cpp:18110
void SetGraceNoteSlash(bool state)
Sets the slashed state for a grace note entry.
Definition ff_noteframe.h:1462
FCNoteheadMods * CreateNoteheadMods()
Creates a collection for all the notehead modifications attached to the note entry.
Definition finaleframework.cpp:17346
bool IsDotted()
Returns true if it's a dotted entry.
Definition finaleframework.cpp:18472
void SetLegality(bool state)
Sets the legality bit, marking that the entry is valid.
Definition ff_noteframe.h:1558
void SetTupletStartFlag(bool state)
Sets the flag that marks that a tuplet starts on the entry.
Definition ff_noteframe.h:1656
bool IsAllTied()
Returns true if all of the notes in the chord is tied to the next entry.
Definition finaleframework.cpp:18450
bool CalcMultiLayeredCell()
Returns true if the entry is in a cell with multiple layers of music.
Definition finaleframework.cpp:17489
void SetMeasurePos(TimeEdu32 value)
Sets the elapsed position in the measure for the entry.
Definition ff_noteframe.h:1709
bool CalcHiddenThroughAltNotation()
Calculates if entry is hidden through alternate notation.
Definition finaleframework.cpp:17656
void CopyEntry(FCNoteEntry *pFromEntry)
Copies the duration and notes (or rest) from the source entry.
Definition finaleframework.cpp:17847
twobyte CalcBeamCount()
Returns the number of beams/flags for the entry, based on the duration.
Definition ff_noteframe.h:2089
bool CalcUniquePitchString(FCString *pString)
Creates a "pitch ID" string for the entry.
Definition finaleframework.cpp:17369
int CalcLowestBeamStart()
Returns the lowest beam number starting at this entry, where 1 = 8th note beam, 2 = 16th note beam,...
Definition finaleframework.cpp:18344
bool IsTied()
Returns true if any of the notes in the chord is tied to the next entry.
Definition finaleframework.cpp:18428
bool GetVoice2Launch() const
Returns true if the entry launches voice 2.
Definition ff_noteframe.h:1859
void SetVoice2Launch(bool state)
Sets the entry that controls the launch of voice 2.
Definition ff_noteframe.h:1454
void SetFloatingRest(bool state)
Sets the floating rest status of the entry.
Definition ff_noteframe.h:1606
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_noteframe.h:1081
bool GetVoice2() const
Returns true if it's a voice 2 entry.
Definition ff_noteframe.h:1852
void SetDuration(TimeEdu32 duration)
Sets the symbolic duration of the note. For tuplet entries, the symbolic duration would be different ...
Definition ff_noteframe.h:1598
FCNoteEntry * Next()
Returns the next entry in the loaded entry chain (within the same layer).
Definition ff_noteframe.h:2343
twobyte CalcLowestDisplacement()
Calculates the lowest displacement value found in the entry's chord.
Definition finaleframework.cpp:17461
void SetFlatBeam(bool state)
Sets the "flat beam" state of the entry.
Definition ff_noteframe.h:1499
bool IsPartOfTuplet()
Returns true if the entry is part of a tuplet.
Definition finaleframework.cpp:18536
bool GetArticulationFlag() const
Returns true if the entry is marked to contain articulations.
Definition ff_noteframe.h:2308
int CalcNumberOfVisibleNotes() const
Calculates the number of notes visible in the current score or part view, taking into account any tha...
Definition finaleframework.cpp:17408
void SetCombineRests(bool state)
Sets the flag for if the rest should combine.
Definition finaleframework.cpp:17321
bool GetPlayback() const
Gets the playback state of the note entry.
Definition ff_noteframe.h:1789
bool GetReverseDownStem() const
Gets the reverse stem setting for down stem.
Definition ff_noteframe.h:1750
bool GetLegality() const
Gets the legality bit, that marks that the entry is valid.
Definition ff_noteframe.h:1764
bool IsPartOfTupletParam(TupletInfo *pInfoStorage=NULL)
Returns true if the entry is part of a tuplet (parameter version).
Definition finaleframework.cpp:18559
bool GetReverseUpStem() const
Gets the reverse stem setting for up stem.
Definition ff_noteframe.h:1744
bool GetCrossStaff() const
Returns the cross staff state for the entry.
Definition ff_noteframe.h:1879
FCNoteEntry * CreateShallowClone()
Creates a shallow copy of the note entry, meaning that the reference to the entry,...
Definition finaleframework.cpp:18829
FCNote * CalcLowestNote(FCNote *pFloor=NULL)
Finds the note with the lowest pitch in the chord.
Definition finaleframework.cpp:17562
virtual ~FCNoteEntry()
Definition finaleframework.cpp:17305
static int CalcDotsForDuration(TimeEdu32 duration)
Static method that calculates the number of dots a specific duration would get.
Definition finaleframework.cpp:17248
FCTuplets * CreateTuplets()
Creates a collection for all the tuplets connected to the note entry.
Definition finaleframework.cpp:17360
void SetBeamExtensionFlag(bool state)
Sets the flag state for beam extension detail records.
Definition ff_noteframe.h:1686
twobyte CalcHighestDisplacement()
Calculates the highest displacement value found in the entry's chord.
Definition finaleframework.cpp:17448
void SetFreezeBeam(bool state)
Sets the freeze state for the "beam/beat".
Definition ff_noteframe.h:1489
void SetClefIndex(eClef clef)
Sets the clef index for the entry.
Definition ff_noteframe.h:1575
void SetSplitRest(bool state)
Sets the split rest state of the note entry. (Applies if note entry is a rest.)
Definition ff_noteframe.h:1441
bool GetFlatBeam() const
Gets the "flat beam" state of the entry.
Definition ff_noteframe.h:1781
FCNote * CalcHighestPercussionNote()
For percussion notation, calculates the topmost percussion note.
Definition finaleframework.cpp:17607
int AddArticulations(FCNoteEntry *pSourceEntry, bool bNoDuplicates=true)
Adds (appends to the existing ones) all articulations from another entry.
Definition finaleframework.cpp:18665
bool IsTiedBackwards()
Returns true if any of the notes in the chord is flagged to be tied from the previous entry.
Definition finaleframework.cpp:18439
FCArticulations * CreateArticulations()
Creates a collection for all the articulations attached to the note entry.
Definition finaleframework.cpp:17339
bool GetGraceNote() const
Gets the grace note state of the note entry.
Definition ff_noteframe.h:1828
void CopyNotes(FCNoteEntry *pFrom)
Copies all pitches and other note information from another entry. The old notes for the entry will be...
Definition finaleframework.cpp:17827
bool GetTupletStartFlag() const
Returns true if the entry is marked to start a tuplet.
Definition ff_noteframe.h:2271
static TimeEdu32 CalcNondottedDurationForDuration(TimeEdu32 duration)
Static method that truncates duration to give only return the non-dotted duration value.
Definition finaleframework.cpp:17236
twobyte CalcLowestStaffPosition()
Calculates the lowest staff position for a note in the entry's chord.
Definition finaleframework.cpp:17434
bool CalcUnbeamedNote()
Returns true if the entry is a non-beamed note (=not part of a beamed group.)
Definition finaleframework.cpp:18411
bool IsAllTiedBackwards()
Returns true if all of the notes in the chord has a flagged to be tied from the previous entry.
Definition finaleframework.cpp:18461
FCNote * CalcLowestPercussionNote()
For percussion notation, calculates the bottommost percussion note.
Definition finaleframework.cpp:17686
bool GetVisible() const
Gets the visibility state of the note entry.
Definition ff_noteframe.h:1820
bool CalcSmallestNoteheadResize(FCNumber *pSmallestFontSize, FCNumber *pSmallestResize)
Calculates the smallest point size and the smallest notehead % resize for the entry.
Definition finaleframework.cpp:18043
void SetVoice2(bool state)
Sets the voice 2 status for the entry.
Definition ff_noteframe.h:1448
bool CalcLargestNoteheadResize(FCNumber *pLargestFontSize, FCNumber *pLargestResize)
Calculates the largest point size and the largest notehead % resize for the entry.
Definition finaleframework.cpp:18010
TimeEdu32 GetActualDuration() const
Gets the actual duration of the entry. For tuplet entries, the symbolic duration would be different f...
Definition ff_noteframe.h:1907
void SetGraceNote(bool state)
Sets the grace note state of the note entry.
Definition ff_noteframe.h:1433
void SetActualDuration(TimeEdu32 value)
Sets the actual duration for the entry.
Definition ff_noteframe.h:1695
bool IsRestMovable()
Returns true if it's a movable rest.
Definition finaleframework.cpp:18711
static bool IsValidDuration(TimeEdu32 duration)
Static method that evaluates the validity of a duration value.
Definition finaleframework.cpp:17264
FCNoteEntry * CalcBeamStartEntry()
Returns the start entry of the beamed group where the entry belongs. If the "Extend beams over rests"...
Definition finaleframework.cpp:18303
void SetReverseUpStem(bool state)
Sets the reverse stem setting for up stem.
Definition ff_noteframe.h:1524
void SetRestDisplacement(twobyte value)
Sets the displacement for a rest entry.
Definition finaleframework.cpp:17314
void SetManualPosition(Evpu16 pos)
Sets the manual positioning of the entry.
Definition ff_noteframe.h:1564
bool RelinkToScore()
Relinks the unlinkable items in all parts to the contents of the score.
Definition finaleframework.cpp:18175
twobyte CalcDots()
Returns the number of dots for a dotted entry.
Definition ff_noteframe.h:1936
int CalcLowestBeamEnd()
Returns the lowest beam number ending at this entry, where 1 = 8th note beam, 2 = 16th note beam,...
Definition finaleframework.cpp:18376
FCNote * FindDisplacement(twobyte displacement)
Tries to finds a note in the chord with a specific displacement value.
Definition finaleframework.cpp:18776
bool GetLyricFlag() const
Returns the flag that marks that an entry has syllable attached to it.
Definition ff_noteframe.h:2277
void SetBeamBeat(bool state)
Sets the "beam/beat" state of the entry.
Definition ff_noteframe.h:1481
FCNoteEntry * NextSameVInFrame()
Returns the next note entry in the same V1 or V2 within the current frame. If the current instance of...
Definition finaleframework.cpp:18812
bool GetFreezeStem() const
Gets the "Freeze Stem" state for the note entry.
Definition ff_noteframe.h:1738
void SetFlipTie(bool state)
Sets the "flip tie" of the note entry.
Definition ff_noteframe.h:1409
bool IsRest() const
Returns true if entry is a rest.
Definition ff_noteframe.h:2383
bool GetSpacing() const
Gets the music spacing state of the note entry.
Definition ff_noteframe.h:1812
void SetSecondaryBeamFlag(bool state)
Sets the flag state for secondary beam detail records.
Definition ff_noteframe.h:1678
bool IsLastInMeasure()
Returns true if it's the last entry in the measure frame.
Definition ff_noteframe.h:2452
void SetCheckAccidentals(bool state)
Marks the entry that the accidentals should be verified when the frame is saved.
Definition finaleframework.cpp:18850
bool GetSmartShapeFlag() const
Returns true if the entry is marked to contain smart shapes.
Definition ff_noteframe.h:2315
static TimeEdu32 CalcValidDuration(TimeEdu32 duration)
Static method that calculates a valid note duration value by truncating the value if necessary.
Definition finaleframework.cpp:17284
FCNoteEntry * NextInFrame()
Returns the next note entry in the linked collection (layer or cell), but only within the frame.
Definition ff_noteframe.h:2353
TimeEdu32 CalcNondottedDuration()
Returns the non-dotted symbolic duration of the entry.
Definition ff_noteframe.h:1919
FCNoteEntry * PreviousSameVInFrame()
Returns the previous note entry in the same V1 or V2 within the current frame. If the current instanc...
Definition finaleframework.cpp:18798
void CopyEntryPercussionDetails(FCNoteEntry *pFromEntry)
Copies note-related data between percussion entries.
Definition finaleframework.cpp:17920
ENTRY_DURATIONS
Defintions of common note durations, for use with any operation where the TimeEdu32 type is used.
Definition ff_noteframe.h:1061
bool GetCombineRests() const
Returns the flag for if the rest should combine.
Definition finaleframework.cpp:17327
twobyte CalcWidestNoteheadWidth()
Returns the widest width of a notehead in the entry, as the non-printing width.
Definition finaleframework.cpp:18078
int CalcDisplacementMatchCount(FCNoteEntry *pCompareEntry)
Calculates the number of matching note displacements between the entries.
Definition finaleframework.cpp:17499
FCNoteEntry(EXENTRY *pEntry, EXTGF2005a *pFrame, FCNoteEntry *pPrevious)
The constructor.
Definition ff_noteframe.h:1084
bool IsTiedToPrevious()
Return true if the previous entry has a tie to this entry.
Definition finaleframework.cpp:18418
void SetSplitStem(bool state)
Sets the "Split Stem" state for the note entry.
Definition ff_noteframe.h:1536
bool GetFreezeBeam() const
Gets the freeze state for the "beam/beat".
Definition ff_noteframe.h:1771
bool IsStartOfTupletParam(TupletInfo *pInfoStorage=NULL)
Returns true if the entry is the start of a tuplet (parameter version).
Definition finaleframework.cpp:18521
bool CalcStemUp()
Returns the direction of the beam.
Definition finaleframework.cpp:17999
bool GetCheckAccidentals() const
Returns the accidental "refresh" flag.
Definition finaleframework.cpp:18856
FCNote * CalcHighestNote(FCNote *pCeiling=NULL)
Finds the note with the highest pitch in the chord.
Definition finaleframework.cpp:17517
void SetArticulationFlag(bool state)
Sets the flag that marks that an articulation is attached to the entry.
Definition ff_noteframe.h:1644
void SetLedgerLines(bool state)
Sets the ledger line state for the note entry.
Definition ff_noteframe.h:1507
bool GetStemDetailFlag() const
Gets the flag state for stem detail records.
Definition ff_noteframe.h:2285
void SetAccidentals(bool bAccidental)
Sets/removes accidental display for all chord notes in the entry.
Definition finaleframework.cpp:17817
void SetSpacing(bool state)
Sets the music spacing state of the note entry.
Definition ff_noteframe.h:1417
FCNotePitches * CreateNotePitches()
Create local copies of the note pitches in a collection.
Definition finaleframework.cpp:18835
bool GetFloatingRest() const
Gets the floating rest status of the entry.
Definition ff_noteframe.h:1897
bool CalcFlippable()
Signals if the entry would flip when the up/down state is changed.
Definition finaleframework.cpp:18198
bool GetBeamBeat() const
Gets the "beam/beat" flag state of the entry.
Definition ff_noteframe.h:1717
void SetLyricFlag(bool state)
Sets the flag that marks that an entry has syllable attached to it.
Definition ff_noteframe.h:1662
FCNoteEntry * CalcLastTupletEntry(FCTuplet *pTuplet)
Scans forward and returns the end entry of a tuplet that's connected to this entry object.
Definition finaleframework.cpp:18483
bool GetFlipTie() const
Gets the "flip tie" state of the note entry.
Definition ff_noteframe.h:1804
FCNoteEntry * PreviousInFrame()
Returns the previous note entry in the linked collection (layer or cell), but only within the frame.
Definition ff_noteframe.h:1193
bool IsSameMeasurePosAs(FCNoteEntry *pCompareEntry)
Returns true if the compared entry is at the same measure/measure position as the object.
Definition finaleframework.cpp:18513
twobyte GetLayerNumber() const
Returns the 1-based layer number that the entry belongs to.
Definition ff_noteframe.h:1959
bool DeleteNote(FCNote *pNote)
Deletes a note from a chord. The note collection is rebuilt after the deletion.
Definition finaleframework.cpp:17941
void SetFreezeStem(bool state)
Sets the "Freeze Stem" state for the note entry.
Definition ff_noteframe.h:1518
bool GetPerformanceDataFlag() const
Returns true for existing performance data records.
Definition ff_noteframe.h:2256
twobyte GetRestDisplacement()
Returns the rest displacement.
Definition finaleframework.cpp:17333
FCNote * GetItemAt(int index) const
Overload version of GetItemAt(), which returns a note object (if available) for the note entry.
Definition ff_noteframe.h:1053
bool GetSplitRest() const
Gets the split rest state of the note entry. (Applies if note entry is a rest.)
Definition ff_noteframe.h:1836
int CalcLowestBeamStub()
Returns the lowest beam number that is a stand-alone beam stub. 1 = 8th note beam,...
Definition finaleframework.cpp:18400
FCNote * FindPitch(FCNote *pPitchNote)
Tries to finds a note in the chord with the identical pitch as the suppied note.
Definition finaleframework.cpp:18787
bool GetSpecialAltsFlag() const
Returns true for existing special alteration records.
Definition ff_noteframe.h:2264
void SetNoteDetailFlag(bool state)
Sets the flag state for note detail records.
Definition ff_noteframe.h:1620
twobyte GetMeasure() const
Returns the entry's measure.
Definition ff_noteframe.h:2323
twobyte CalcDisplacementRange()
Calculates the range of the highest and lowest note in a chord.
Definition finaleframework.cpp:17474
FCNoteEntry * Previous()
Returns the previous note entry in the linked collection (layer or cell).
Definition ff_noteframe.h:1183
void CopyNote(FCNote *pFrom)
Copies all pitches and other note information from one single note. The old notes for the entry will ...
Definition finaleframework.cpp:17839
void ClearPitches()
Clears all pitches from the entry, to prepare to add new notes.
Definition finaleframework.cpp:18607
void MakeMovableRest()
Turns the entry into a movable rest.
Definition finaleframework.cpp:18731
void SetPlayback(bool state)
Sets the playback state of the note entry.
Definition ff_noteframe.h:1395
bool IsStartOfTuplet()
Returns true if the entry is the start of a tuplet.
Definition finaleframework.cpp:18508
bool IsOverlappedEntry(FCNoteEntry *pTestEntry)
Returns true if the test entry is at least partly overlapping the current entry.
Definition finaleframework.cpp:18541
eClef GetClefIndex() const
Gets the clef that's used for the entry.
Definition ff_noteframe.h:1976
void MakeRest()
Turns the entry into a rest (without any displacement).
Definition finaleframework.cpp:18720
void SetVisible(bool state)
Sets the visibility state of the note entry.
Definition ff_noteframe.h:1425
void TieAll(bool bTie)
Ties or unties all chord notes for the entry.
Definition finaleframework.cpp:17807
TimeEdu32 GetMeasurePos() const
Returns the elapsed duration position in the measure for the entry.
Definition ff_noteframe.h:2238
int AddPitches(FCNoteEntry *pSourceEntry, bool unique, bool settie=false)
Adds (appends to the existing notes) all notes from another entry.
Definition finaleframework.cpp:18613
static void MarkEntryMetricsForUpdate()
Static method that mark that the entry-related layout info needs to be rebuilt (for CalcStemUp(),...
Definition ff_noteframe.h:2662
twobyte GetStaff() const
Returns the entry's staff.
Definition ff_noteframe.h:2331
void CopyEntryDetails(FCNoteEntry *pFromEntry, bool copytuplets)
Copies note-related data from another entry.
Definition finaleframework.cpp:17858
void CacheArticulations()
Stores the available articulations in a cache memory.
Definition finaleframework.cpp:18697
void SetReverseDownStem(bool state)
Sets the reverse stem setting for down stem.
Definition ff_noteframe.h:1530
FCPerformanceMods * CreatePerformanceMods()
Creates a collection for all the MIDI performance modifications attached to the note entry.
Definition finaleframework.cpp:17353
void SetStemUp(bool state)
Sets the "stem up" flag for the entry.
Definition ff_noteframe.h:1589
Class to load a layer on the same staff. This class is for example suitable when working with music l...
Definition ff_noteframe.h:3832
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_noteframe.h:3898
twobyte GetStaff() const
Returns the 1-based staff number where the layer is loaded/saved.
Definition ff_noteframe.h:4004
FCNoteEntry * GetRegionItemAt(int index, FCMusicRegion *pRegion)
Returns the indexed item that appear in the region.
Definition finaleframework.cpp:19816
FCNoteEntryLayer(twobyte layerindex, twobyte staff, twobyte startmeas=1, twobyte endmeas=-1)
The constructor.
Definition finaleframework.cpp:19364
int CalcRegionCount(FCMusicRegion *pRegion)
Calculates the number of entries that are within the region.
Definition finaleframework.cpp:19806
FCNoteEntries * CreateRegionEntries(FCMusicRegion *pRegion)
Extracts just the entries that are within the region into a collection.
Definition finaleframework.cpp:19849
bool GetUseVisibleLayer() const
Gets the value that controls to only load visible layers.
Definition ff_noteframe.h:4033
twobyte GetStartMeasure() const
Returns the 1-based start measure number.
Definition ff_noteframe.h:4010
bool DeleteAllNullEntries()
Deletes all entries from the layer (and TGFs) that are 0 in length.
Definition finaleframework.cpp:19556
bool Save()
Saves the note entries for the layer. Mirrors frames are never saved.
Definition finaleframework.cpp:19720
FCNoteEntry * InsertEntriesAfter(FCNoteEntry *pPositionEntry, int count, bool nextmeasure=false)
Inserts empty entries to the TGF frame at the indicated point.
Definition finaleframework.cpp:19946
bool DeleteAllNonconnectedRestFrames()
Similar to DeleteAllRestFrames, but this doesn't delete rest frames that have smartshapes or articula...
Definition finaleframework.cpp:19682
twobyte GetEndMeasure() const
Returns the 1-based end measure number.
Definition ff_noteframe.h:4017
void SetLoadMirrors(bool state)
Sets if mirror frames should be loaded. The default is that they are loaded.
Definition ff_noteframe.h:4060
bool Load()
Loads the note entries for the layer. Mirror frames are loaded based on the GetLoadMirrors setting.
Definition finaleframework.cpp:19385
void ClearFrames()
Clears the collection and frees all associated TGF frame data.
Definition ff_noteframe.h:3926
twobyte GetLayerIndex() const
Returns the 0-based layer number where the layer data is loaded/saved.
Definition ff_noteframe.h:3998
void SetUseVisibleLayer(bool value)
Sets the value to only load visible layers.
Definition ff_noteframe.h:4042
bool CloneTuplets(FCNoteEntryLayer *pSource)
Copies the tuplets from one layer to another identical layer after a layer has been cloned....
Definition finaleframework.cpp:19771
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_noteframe.h:4254
virtual ~FCNoteEntryLayer()
The destructor.
Definition ff_noteframe.h:3916
void SetLayerIndex(twobyte layerno)
Sets the layer number. USE WITH EXTREME CARE!
Definition finaleframework.cpp:19491
bool DeleteAllRestFrames()
Deletes all full frames (measures) that only contains of rests in the note entry layer.
Definition finaleframework.cpp:19687
TimeEdu32 CalcFrameDuration(int measurenumber)
Calculates the duration of a frame (in one measure) based on the entries in the frame.
Definition finaleframework.cpp:19799
void ClearAllEntries()
Removes all the entries from the layer, but keeps all the TGFs. So it's possible to (for example) sav...
Definition ff_noteframe.h:3985
int ForEachInRegion(FCIteratorHandler *pIterator, FCMusicRegion *pRegion)
Iterates through the layer's entries that fit in a region.
Definition finaleframework.cpp:19831
bool IsInSuccession(FCNoteEntry *pEntry1, FCNoteEntry *pEntry2)
Verifies that 2 entries really appears directly after one another in the layer.
Definition ff_noteframe.h:4186
int CalcMeasureSpan()
Returns the total number of measures the layer spans.
Definition ff_noteframe.h:4214
FCNoteEntryLayer * CreateCloneEntries(twobyte layerindex_redir, twobyte staff_redir, twobyte startmeasure_redir)
Creates a cloned copy that can be saved as a copy. The cloned copy is recreated from reloaded Finale ...
Definition finaleframework.cpp:19760
bool GetLoadMirrors() const
Returns if mirror frames should be loaded. The default is that they are loaded.
Definition ff_noteframe.h:4024
FCNoteEntry * InsertEntriesBefore(FCNoteEntry *pPositionEntry, int count)
Inserts empty entries to the TGF frame before the indicated point.
Definition finaleframework.cpp:19871
FCNoteEntry * GetItemAt(int index) const
Overridden GetItemAt() method.
Definition ff_noteframe.h:4252
Collection class to load all layers for a staff, to be used when the entries in the layers need to in...
Definition ff_noteframe.h:4286
FCNoteEntryLayers(twobyte staff, twobyte startmeas=1, twobyte endmeas=-1)
The constructor.
Definition ff_noteframe.h:4301
FCNoteEntryLayer * GetItemAt(int index) const
Overloaded version of GetItemAt().
Definition ff_noteframe.h:4344
bool SaveAll()
Saves all the layers for the full measure span.
Definition ff_noteframe.h:4326
bool LoadAll()
Load all the layers for the full measure span and assemble them into a collection....
Definition ff_noteframe.h:4312
void SetUseVisibleLayersOnly(bool value)
Sets the value to if only visible layers should be loaded or not.
Definition ff_noteframe.h:4338
Encapsulates one note in a note entry (from the FCNoteEntry class).
Definition ff_noteframe.h:29
int CalcCrossStaffNumber()
Returns the staff ID that belongs to the cross staff note.
Definition finaleframework.cpp:16377
void SetPlayback(bool state)
Sets if the note should play back or be muted.
Definition ff_noteframe.h:400
twobyte CalcMIDIKey()
Returns the MIDI key number for the note.
Definition finaleframework.cpp:16674
void SetCrossStaff(bool state)
Sets the cross staff state for the note.
Definition ff_noteframe.h:471
bool IsUpper2nd() const
Returns true if this note is an upper 2nd in a chord.
Definition finaleframework.cpp:16787
bool GetUpstem2nd() const
Gets the Upstem 2nd state for the note.
Definition ff_noteframe.h:215
bool IsHigherPitchThan(FCNote *pPitchCompareNote)
Returns true if the pitch is higher than the pitch in the parameter's note.
Definition finaleframework.cpp:16765
void SetSpacing(bool state)
Sets if the note should be used in the spacing algorithm or not.
Definition ff_noteframe.h:390
twobyte GetRaiseLower() const
Returns the raised/lowered state of the note.
Definition ff_noteframe.h:149
eNoteID GetNoteID() const
Returns the unique note ID.
Definition ff_noteframe.h:233
bool CalcVisibleInPart() const
Returns true if the note is visible in the current part or score. The only time it might be false is ...
Definition finaleframework.cpp:16692
void SetNoteID(eNoteID noteid)
Sets the unique note ID. Use with extreme care!
Definition ff_noteframe.h:440
void SetTieBackwards(bool value)
Sets the "tie end" state for the note.
Definition ff_noteframe.h:459
bool GetAccidentalParentheses() const
Returns the parentheses accidental state.
Definition ff_noteframe.h:110
bool IsIdenticalPitch(FCNote *pPitchNote)
Returns true if the pitch is identical to the supplied note.
Definition finaleframework.cpp:16743
int GetNoteIndex() const
Returns the index of the note within its FCNoteEntry.
Definition ff_noteframe.h:239
bool GetLegality() const
Gets the legality bit, that marks that the note is valid.
Definition ff_noteframe.h:138
char CalcWrittenPitchChar()
Returns the written note name character for the note.
Definition finaleframework.cpp:16484
bool GetTie() const
Gets the tie start state for the note.
Definition ff_noteframe.h:175
void SetRaiseLower(twobyte amount)
Raises or lowers the pitch of the note.
Definition ff_noteframe.h:428
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_noteframe.h:766
bool MatchSpellingToScore()
Reverts a part's note spelling to that of the score. It is useful for reversing an unlinked enharmoni...
Definition finaleframework.cpp:16811
FCNote(int index, EXNOTE *pexnote, FCNoteEntry *pParent)
The constructor.
Definition ff_noteframe.h:57
twobyte GetDisplacement() const
Returns the vertical note position on the staff.
Definition ff_noteframe.h:119
int CalcNumberOfLedgerLines()
Returns the number of ledger lines the note appears on.
Definition finaleframework.cpp:16345
void SetLegality(bool state)
Sets the legality bit, marking that the note is valid.
Definition ff_noteframe.h:410
bool GetSpacing() const
Returns if the note should be used in the spacing algorithm or not.
Definition ff_noteframe.h:157
void GetString(FCString *pString, FCKeySignature *pKey, bool simplifydoublesharp=false, bool writtenpitch=false)
Creates a string representation of the note.
Definition finaleframework.cpp:16845
void SetAccidentalFreeze(bool state)
Sets the freezed accidental state.
Definition ff_noteframe.h:376
bool CalcIsBottomNote() const
Returns true if the note is the bottom visible note note in the entry. If some notes in the entry are...
Definition finaleframework.cpp:16717
twobyte CalcPitchRaiseLower(bool writtenpitch)
Returns the number of sharps or flats the note actually has in the key signature.
Definition finaleframework.cpp:16517
void MarkForErase()
Marks the note for erase when the entry is saved.
Definition ff_noteframe.h:753
twobyte CalcStaffPosition()
Calculates the displacement from the top staffline. It takes the current score position into account ...
Definition finaleframework.cpp:16429
void SetUpstemSplit(bool state)
Sets the upstem split state for the note.
Definition ff_noteframe.h:481
twobyte CalcOctave(FCKeySignature *pKey, int transposeinterval=0)
Returns the sounding octave for the note.
Definition finaleframework.cpp:17089
bool IsLowerPitchThan(FCNote *pPitchCompareNote)
Returns true if the pitch is lower than the pitch in the parameter's note.
Definition finaleframework.cpp:16776
bool GetDownstem2nd() const
Gets the Downstem 2nd state for the note.
Definition ff_noteframe.h:204
twobyte CalcNoteheadWidth()
Returns the width of the notehead.
Definition finaleframework.cpp:16409
bool GetUpstemSplit() const
Gets the upstem split state for the note.
Definition ff_noteframe.h:225
bool CalcIsTopNote() const
Returns true if the note is the top note in the entry. If some notes in the entry are suppressed in t...
Definition finaleframework.cpp:16704
FCNoteEntry * GetEntry() const
Returns the note entry object for the note.
Definition ff_noteframe.h:85
void SetAccidentalParentheses(bool state)
Sets the parentheses accidental state.
Definition ff_noteframe.h:382
bool GetCrossStaff() const
Gets the cross staff state for the note.
Definition ff_noteframe.h:193
bool GetAccidental() const
Gets the accidental state bit for the note. This method should normally NOT be used (use CalcAccident...
Definition ff_noteframe.h:98
FCTransposer * GetTransposer()
Returns a transposer that can be used to transpose this note.
Definition finaleframework.cpp:17067
bool GetAccidentalFreeze() const
Returns the freezed accidental state.
Definition ff_noteframe.h:104
bool IsNonAligned2nd() const
Returns true if this note is not aligned with its entry.
Definition finaleframework.cpp:16803
bool CalcOnLedgerLine()
Returns true if the note appears specifically on a ledger line. The ledger line must coincide with th...
Definition finaleframework.cpp:16361
void SetAccidental(bool state)
Sets the accidental state for the note.
Definition ff_noteframe.h:370
bool GetTieBackwards() const
Gets the backwards tie state for the note.
Definition ff_noteframe.h:183
void SetTie(bool value)
Sets the tie state for the note.
Definition ff_noteframe.h:450
bool CalcAccidental() const
Returns the displayed state of an accidental. This is the method that should be used to find out if a...
Definition finaleframework.cpp:17074
void SetMIDIKey(twobyte midikey)
Sets the MIDI key number for the note.
Definition finaleframework.cpp:16732
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_noteframe.h:54
bool CalcRightsidePlacement()
Returns true if the notehead is on the right side of the stem.
Definition finaleframework.cpp:16387
void SetDisplacement(twobyte disp)
Sets the note's vertical position on the staff. The displacement is relative to the key.
Definition ff_noteframe.h:419
bool SetString(FCString *pString, FCKeySignature *pKey, bool writtenpitch)
Changes the note based on the string representation. See FCNote::GetString for syntax.
Definition finaleframework.cpp:16929
twobyte CalcWrittenOctave(FCKeySignature *pKey, int transposevalue, bool simplifytranspose, bool chromatictranspose)
Returns the written octave for the note, taking a specific transposition into account.
Definition finaleframework.cpp:17116
bool IsLower2nd() const
Returns true if this note is a lower 2nd in a chord.
Definition finaleframework.cpp:16795
bool GetPlayback() const
Gets the playback status for the note.
Definition ff_noteframe.h:167
char CalcPitchChar()
Returns the sounding note name character for the note.
Definition finaleframework.cpp:16474
Encapsulates a note as a locally stored data, instead of a reference in a TGF.
Definition ff_noteframe.h:789
FCNotePitch()
The constructor.
Definition ff_noteframe.h:795
void CopyFrom(FCNote *pNote)
Copies the note pitch info from a FCNote object.
Definition ff_noteframe.h:800
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_noteframe.h:792
Class that contains information about the note, without being dependent on a note entry frame.
Definition ff_noteframe.h:809
ENTNUM GetENTNUM()
Returns the entry number.
Definition ff_noteframe.h:893
TimeEdu32 GetActualDuration()
Returns the actual duration.
Definition ff_noteframe.h:899
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_noteframe.h:905
int GetStaff()
Returns the staff number, if CloneEntryPositionData has been used.
Definition ff_noteframe.h:874
int GetLayerNumber()
Returns the 1-based layer number, if CloneEntryPositionData has been used.
Definition ff_noteframe.h:878
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_noteframe.h:838
TimeEdu32 GetDuration()
Returns the duration.
Definition ff_noteframe.h:896
TimeEdu32 GetMeasurePos()
Returns the duration position within the measure, if CloneEntryPositionData has been used.
Definition ff_noteframe.h:890
FCNotePitch * GetItemAt(int index) const
Overloaded version of GetItemAt().
Definition ff_noteframe.h:836
void CloneEntryPositionData(FCNoteEntry *pEntry)
Copies the "important" entry data, so it can be used for analytical purpose, without the need of a TG...
Definition finaleframework.cpp:17216
bool GetGraceNote()
Returns the grace note state, if CloneEntryPositionData has been used.
Definition ff_noteframe.h:882
void AddFromEntry(FCNoteEntry *pEntry)
Adds all the note pitches from a note entry.
Definition finaleframework.cpp:17179
int GetMeasure()
Returns the measure number, if CloneEntryPositionData has been used.
Definition ff_noteframe.h:870
int GetGraceNoteIndex()
Returns the grace note index for grace notes, if CloneEntryPositionData has been used.
Definition ff_noteframe.h:886
void AddFromCellEntry(FCNoteEntry *pEntry, FCNoteEntryCell *pNoteEntryCell)
Adds all the note pitches from a note entry that is located in a FCNoteEntryCell.
Definition finaleframework.cpp:17197
int GetFrameIndex()
Returns the 0-based frame index within the TGF frame.
Definition ff_noteframe.h:902
Collection class for FCNoteheadMod class objects. The collection would typically collect all notehead...
Definition ff_entrydetailscollection.h:455
Simple class to put numbers into collections.
Definition ff_base.h:4821
Collection class for FCPerformanceMod class objects (which contains the playback modification data fo...
Definition ff_entrydetailscollection.h:744
Class that provides storage for text. This is to achieve platform-transparent text handling,...
Definition ff_base.h:1877
This is a utility class to facilitate transposition. It supports:
Definition ff_celldetails.h:2766
Class for attaching an tuplet to an entry.
Definition ff_entrydetails.h:2153
Collection class for FCTuplet class objects.
Definition ff_entrydetailscollection.h:308