Finale PDK Framework 0.77
Power Up Your Finale Music Software
Loading...
Searching...
No Matches
ff_entrydetails.h
1/*
2 * File: ff_entrydetails.h
3 * Author: Jari Williamsson
4 *
5 * Created on den 27 november 2010, 11:54
6 */
7
8#ifndef FF_ENTRYDETAILS_H
9#define FF_ENTRYDETAILS_H
10
11#include "ff_noteframe.h"
12
13
14/* This whole header file requires PDK_FRAMEWORK_ENTRIES!!! */
15#ifdef PDK_FRAMEWORK_ENTRIES
16
17
27{
28#ifndef DOXYGEN_SHOULD_SKIP_THIS
29 bool _RawRelink() override
30 {
31 DeleteData();
32 return SaveNew();
33 }
34
35protected:
40 FCNoteEntry* _pMappedEntry;
41
47 bool _HasAnyMod(FCNote* pNote);
48#endif /* DOXYGEN_SHOULD_SKIP_THIS */
49
50public:
51
52#ifndef DOXYGEN_SHOULD_IGNORE_THIS
54 void _DecreaseInci() { _dataid.entryDetail.inci--; }
55#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
56
57
60 {
61 _pMappedEntry = NULL;
62 _dataid.entryDetail.entryNumber = 0;
63 _dataid.entryDetail.inci = 0;
64 }
65 const char* ClassName() const override { return "__FCEntryDetail"; }
66
68 void SetEntnumAndInci(ENTNUM entnum, twobyte inci)
69 {
70 _dataid.entryDetail.entryNumber = entnum;
71 _dataid.entryDetail.inci = inci;
72 }
73
78 virtual bool Load(ENTNUM entnum, twobyte inci);
79
84 bool Reload() override;
85
90 bool SaveAs(ENTNUM entnum, twobyte inci);
91
99 bool LoadFirst() override
100 {
101 if (!_pMappedEntry) return false;
102 return Load(_pMappedEntry->GetEntryNumber(), 0);
103 }
104
106 bool LoadNext() override;
107
114 virtual void SetNoteEntry(FCNoteEntry* pEntry)
115 {
116 if (pEntry)
117 _dataid.entryDetail.entryNumber = pEntry->GetEntryNumber();
118 _pMappedEntry = pEntry;
119 }
120
128 FCNoteEntry* GetNoteEntry() { return _pMappedEntry; }
129
134 twobyte GetItemInci() const { return _dataid.entryDetail.inci; }
135
140 ENTNUM GetItemEntryNumber() const { return _dataid.entryDetail.entryNumber; }
141
164 virtual bool SaveNew();
165
166#ifndef DOXYGEN_SHOULD_SKIP_THIS
170 twobyte CalcLastInci() override;
171#endif
172
173#ifndef DOXYGEN_SHOULD_SKIP_THIS
179 virtual void _SetEntryFlag(FCNoteEntry* pNoteEntry, bool state)
180 {
181 pNoteEntry->SetNoteDetailFlag(state);
182 }
183#endif /* DOXYGEN_SHOULD_SKIP_THIS */
184
185#ifdef PDK_FRAMEWORK_DEBUG
186 void DebugDump() override
187 {
189 DebugOutInt("_dataid.entryDetail.entryNumber: ", _dataid.entryDetail.entryNumber);
190 DebugOutInt("_dataid.entryDetail.inci: ", _dataid.entryDetail.inci);
191 }
192#endif
193
194};
195
206{
207protected:
208#ifndef DOXYGEN_SHOULD_SKIP_THIS
217 EINCI _ScanForNoteID(FCNoteEntry* pEntry, twobyte noteid);
218#endif
219
220public:
221
225
226 const char* ClassName() const override { return "__FCEntryDetailNoteID"; }
227
234 bool SaveNew() override;
235
248 bool SaveAt(FCNote* pNote);
249
258 bool LoadAt(FCNote* pNote);
259
274 bool EraseAt(FCNote* pNote);
275
276#ifndef DOXYGEN_SHOULD_SKIP_THIS
278 twobyte CalcLastInci() override;
279
287 virtual void SetNoteID(twobyte id) = 0;
288
300 virtual bool _IsNoteIDMatch(void *pBuffer, twobyte id) = 0;
301
309 virtual void _SetEntryFlagN(FCNote* pNote, bool state)
310 {
311 pNote->_SetNoteDetailEntryFlag(state);
312 }
313
321 virtual bool _GetEntryFlagN(FCNote* pNote)
322 {
323 return pNote->_GetNoteDetailEntryFlag();
324 }
325#endif
326};
327
328
337{
338
339#ifndef DOXYGEN_SHOULD_IGNORE_THIS
340 EDTNoteheadMods2002 _noteheadmod;
341
342#if FXT_VERSION >= FINALEVERSION_2012
343 EDTNoteheadMods2012 _noteheadmod2012;
344#endif
345
346 bool _Use2012Version() const;
347
348 const twobyte* _GetHorizontalPosPtr() const
349 {
350#if FXT_VERSION >= FINALEVERSION_2012
351 if (_Use2012Version()) return &_noteheadmod2012.horizpos;
352#endif
353 return &_noteheadmod.horizpos;
354 }
355
356 const twobyte* _GetVerticalPosPtr() const
357 {
358#if FXT_VERSION >= FINALEVERSION_2012
359 if (_Use2012Version()) return &_noteheadmod2012.vertpos;
360#endif
361 return &_noteheadmod.vertpos;
362 }
363
364 const FLAG_16* _GetFlagPtr() const
365 {
366#if FXT_VERSION >= FINALEVERSION_2012
367 if (_Use2012Version()) return &_noteheadmod2012.flag;
368#endif
369 return &_noteheadmod.flag;
370 }
371
372 const FLAG_16* _GetEfxPtr() const
373 {
374#if FXT_VERSION >= FINALEVERSION_2012
375 if (_Use2012Version()) return &_noteheadmod2012.efx;
376#endif
377 return &_noteheadmod.efx;
378 }
379
380 const twobyte* _GetFontSizePtr() const
381 {
382#if FXT_VERSION >= FINALEVERSION_2012
383 if (_Use2012Version()) return &_noteheadmod2012.fontsize;
384#endif
385 return &_noteheadmod.fontsize;
386 }
387
388 const twobyte* _GetResizePercentPtr() const
389 {
390#if FXT_VERSION >= FINALEVERSION_2012
391 if (_Use2012Version()) return &_noteheadmod2012.resizepercent;
392#endif
393 return &_noteheadmod.resizepercent;
394 }
395
396 const twobyte* _GetFontIDPtr() const
397 {
398#if FXT_VERSION >= FINALEVERSION_2012
399 if (_Use2012Version()) return &_noteheadmod2012.fontID;
400#endif
401 return &_noteheadmod.fontID;
402 }
403
404 const twobyte* _GetNoteIDPtr() const
405 {
406#if FXT_VERSION >= FINALEVERSION_2012
407 if (_Use2012Version()) return &_noteheadmod2012.noteID;
408#endif
409 return &_noteheadmod.noteID;
410 }
411
412 mutable EFONTNAME _fontname; /* Use for return value. */
413#if FXT_VERSION >= FINALEVERSION_25
414 mutable EnigmaFontName _fontnameUTF16; /* Use for return value. */
415#endif
416protected:
417 EXTAG Tag() const override { return ed_NoteheadMods2002; } /* Same tag for 2002 and 2012 versions */
418 int DataSizeLoad() const override;
419 int DataSizeSave() const override;
420 void* Allocate() override;
421 EVERSION EnigmaVersion() const override
422 {
423 if (_Use2012Version()) return FINALEVERSION_2012;
424 return FXT_VERSION_2K2_BASE;
425 }
426
431 void CloneMemoryFrom(__FCBaseData* pSource) override
432 {
433 memcpy(_GetNoteheadMod(), ((FCNoteheadMod*)pSource)->_GetNoteheadMod(), DataSizeLoad());
434 _datablock = _GetNoteheadMod();
436 }
437
438 __FCBaseData* CreateObject() override { return new FCNoteheadMod(); }
439
440#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
441public:
442 const char* ClassName() const override { return "FCNoteheadMod"; }
443 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_NOTEHEADMOD; }
444
445#ifndef DOXYGEN_SHOULD_IGNORE_THIS
450 void* _GetNoteheadMod()
451 {
452#if FXT_VERSION >= FINALEVERSION_2012
453 if (_Use2012Version())
454 {
455
456 return &_noteheadmod2012;
457 }
458#endif
459 return &_noteheadmod;
460 }
461#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
462
469 {
470 _datablock = _GetNoteheadMod();
471 memset(_GetNoteheadMod(), 0, DataSizeLoad());
472 SetFontSize(24);
473 SetResize(100);
474 SetUseCustomFont(false);
477 }
478
484 twobyte GetHorizontalPos() const { return *_GetHorizontalPosPtr(); }
485
495 {
496 if (!GetUseCustomVerticalPos()) return 0;
497 return *_GetVerticalPosPtr();
498 }
499
508 twobyte GetVerticalPos() const
509 {
510 return *_GetVerticalPosPtr();
511 }
512
519 {
520 return GetBitFlag(*_GetFlagPtr(), NOTEHEAD_ALLOW_VERTPOS);
521 }
522
531 eUniChar32 GetCustomChar() const
532 {
533#if FXT_VERSION >= FINALEVERSION_2012
534 if (_Use2012Version()) return _noteheadmod2012.fontchar;
535#endif
536 return _noteheadmod.fontchar;
537 }
538
543 bool GetUseCustomChar() const
544 {
545#if FXT_VERSION >= FINALEVERSION_2012
546 if (_Use2012Version()) return (_noteheadmod2012.fontchar != 0);
547#endif
548 return (_noteheadmod.fontchar != 0);
549 }
550
557 twobyte GetResize() const
558 {
559 return *_GetResizePercentPtr();
560 }
561
567 bool GetUseCustomFont() const
568 {
569 return GetBitFlag(*_GetFlagPtr(), NOTEHEAD_CUSTOMFONT);
570 }
571
580 const char* GetFontName() const
581 {
582 if (!GetUseCustomFont()) return "";
583 FX_FontNumToName(*_GetFontIDPtr(), &_fontname);
584 return (const char*) &_fontname;
585 }
586
587#if FXT_VERSION >= FINALEVERSION_25
594 const eUniChar16* GetFontNameUTF16() const
595 {
596 if (!GetUseCustomFont()) { return FCString::emptyUniCharStr; }
597
598 FX_FontNumToName_UTF16(*_GetFontIDPtr(), _fontnameUTF16, DIM(_fontnameUTF16));
599 return _fontnameUTF16;
600 }
601#endif
602
609 twobyte GetFontSize() const
610 {
611 if (!GetUseCustomFont()) return 0;
612 return *_GetFontSizePtr();
613 }
614
623 {
624 if (!GetUseCustomFont()) return false;
625 pInfo->SetEnigmaStyles(*_GetEfxPtr());
626 return true;
627 }
628
637 {
638 if (!GetUseCustomFont()) return false;
639 pInfo->SetEnigmaStyles(*_GetEfxPtr());
640 pInfo->SetSize(*_GetFontSizePtr());
641 pInfo->SetNameByID(*_GetFontIDPtr());
642 return true;
643 }
644
651 bool GetEnharmonicFlip() const
652 {
653 return GetBitFlag(*_GetFlagPtr(), NOTEHEAD_ENHARMONIC_FLIP);
654 }
655
661 void SetHorizontalPos(twobyte value)
662 {
663 twobyte* pValue = (twobyte*) _GetHorizontalPosPtr();
664 *pValue = value;
665 }
666
677 void SetVerticalPos(twobyte value)
678 {
679 twobyte* pValue = (twobyte*) _GetVerticalPosPtr();
680 *pValue = value;
681 }
682
692 void SetUseCustomVerticalPos(bool status)
693 {
694 Set16BitFlag((FLAG_16*) _GetFlagPtr(), NOTEHEAD_ALLOW_VERTPOS, status);
695 }
696
705 void SetUseDefaultVerticalPos(bool status)
706 {
708 }
709
716 void SetResize(twobyte value)
717 {
718 twobyte* pValue = (twobyte*) _GetResizePercentPtr();
719 *pValue = value;
720 }
721
729 void SetUseCustomFont(bool status)
730 {
731 Set16BitFlag((FLAG_16*) _GetFlagPtr(), NOTEHEAD_CUSTOMFONT, status);
732 }
733
740 void SetUseDefaultFont(bool status)
741 {
742 SetUseCustomFont(!status);
743 }
744
754 void SetFontName(const char* pszFont)
755 {
756 twobyte fontnum = FX_FontNameToNum((EFONTNAME*) pszFont);
757 twobyte* pValue = (twobyte*) _GetFontIDPtr();
758 *pValue = fontnum;
759 }
760
761#if FXT_VERSION >= FINALEVERSION_25
769 void SetFontNameUTF16(const eUniChar16* pszFont)
770 {
771 // This actually sets the font number based on the input font name.
772 twobyte fontnum = FX_FontNameToNum_UTF16(pszFont);
773 twobyte* pValue = (twobyte*) _GetFontIDPtr();
774 *pValue = fontnum;
775 }
776#endif
777
788 void SetFontSize(twobyte fontsize)
789 {
790 twobyte* pValue = (twobyte*) _GetFontSizePtr();
791 *pValue = fontsize;
792 }
793
800 {
801 twobyte* pValue = (twobyte*) _GetEfxPtr();
802 *pValue = pInfo->GetEnigmaStyles();
803 }
804
812 {
813 twobyte* pEfx = (twobyte*) _GetEfxPtr();
814 *pEfx = pInfo->GetEnigmaStyles();
815 twobyte* pFontSize = (twobyte*) _GetFontSizePtr();
816 *pFontSize = pInfo->GetSize();
817 twobyte* pFontID = (twobyte*) _GetFontIDPtr();
818 *pFontID = pInfo->GetIDByName();
819 }
820
830 void SetCustomChar(eUniChar32 ch)
831 {
832#if FXT_VERSION >= FINALEVERSION_2012
833 if (_Use2012Version())
834 {
835 _noteheadmod2012.fontchar = ch;
836 return;
837 }
838#endif
839 _noteheadmod.fontchar = 0xff00 | (ch & 0x00ff);
840 }
841
883 void SetEnharmonicFlip(bool status)
884 {
885 Set16BitFlag((FLAG_16*) _GetFlagPtr(), NOTEHEAD_ENHARMONIC_FLIP, status);
886 }
887
895 {
896#if FXT_VERSION >= FINALEVERSION_2012
897 if (_Use2012Version())
898 {
899 _noteheadmod2012.fontchar = 0;
900 return;
901 }
902#endif
903 _noteheadmod.fontchar = 0;
904 }
905
911 void SetNoteID(twobyte id) override
912 {
913 twobyte* pValue = (twobyte*) _GetNoteIDPtr();
914 *pValue = id;
915 }
916
917#ifndef DOXYGEN_SHOULD_IGNORE_THIS
918 bool _IsNoteIDMatch(void *pBuffer, twobyte id) override
919 {
920#if FXT_VERSION >= FINALEVERSION_2012
921 if (_Use2012Version())
922 {
923 return (((EDTNoteheadMods2012*) pBuffer)->noteID == id);
924 }
925#endif
926 return (((EDTNoteheadMods2002*) pBuffer)->noteID == id);
927 }
928#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
929};
930
931
940{
941#ifndef DOXYGEN_SHOULD_IGNORE_THIS
942 EDTDotMods _dotmod;
943
944protected:
945 EXTAG Tag() const override { return ed_DotMods; }
946 int DataSizeLoad() const override { return sizeof(EDTDotMods); }
947 int DataSizeSave() const override { return sizeof(EDTDotMods); }
948 void* Allocate() override { return (void*) &_dotmod; }
949
954 void CloneMemoryFrom(__FCBaseData* pSource) override
955 {
956 memcpy(&_dotmod, ((FCDotMod*)pSource)->_GetDotMod(), sizeof(_dotmod));
957 _datablock = &_dotmod;
958 _loadedsize = sizeof(_dotmod);
959 }
960
961 __FCBaseData* CreateObject() override { return new FCDotMod(); }
962
963#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
964public:
965 const char* ClassName() const override { return "FCDotMod"; }
966 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_DOTMOD; }
967
968#ifndef DOXYGEN_SHOULD_IGNORE_THIS
973 EDTDotMods* _GetDotMod() { return &_dotmod; }
974#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
975
981 {
982 memset(&_dotmod, 0, sizeof(_dotmod));
983 _datablock = &_dotmod;
984 _loadedsize = sizeof(_dotmod);
985 }
986
993 twobyte GetHorizontalPos() const { return _dotmod.horizpos; }
994
1001 twobyte GetVerticalPos() const { return _dotmod.vertpos; }
1002
1009 void SetHorizontalPos(twobyte pos) { _dotmod.horizpos = pos; }
1010
1017 void SetVerticalPos(twobyte pos) { _dotmod.vertpos = pos; }
1018
1024 twobyte GetInterDotSpacing() const { return _dotmod.interspacing; }
1025
1030 void SetInterDotSpacing(twobyte space) { _dotmod.interspacing = space; }
1031
1037 void SetNoteID(twobyte id) override { _dotmod.noteID = id; }
1038
1043 bool LoadRestDotAt(FCNoteEntry* pEntry);
1044
1049 bool SaveRestDotAt(FCNoteEntry* pEntry);
1050
1051#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1052 bool _IsNoteIDMatch(void *pBuffer, twobyte id) override
1053 {
1054 return (((EDTDotMods*) pBuffer)->noteID == id);
1055 }
1056
1061 void _SetEntryFlagN(FCNote* pNote, bool state) override
1062 {
1063 pNote->_SetSpecialAltsEntryFlag(state);
1064 }
1065
1070 bool _GetEntryFlagN(FCNote* pNote) override
1071 {
1072 return pNote->_GetSpecialAltsEntryFlag();
1073 }
1074#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1075};
1076
1077
1078
1087{
1088#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1089 EDTCrossStaff _crossstaff;
1090
1091protected:
1092 EXTAG Tag() const override { return ed_CrossStaff; }
1093 int DataSizeLoad() const override { return sizeof(EDTCrossStaff); }
1094 int DataSizeSave() const override { return sizeof(EDTCrossStaff); }
1095 void* Allocate() override { return (void*) &_crossstaff; }
1096
1101 void CloneMemoryFrom(__FCBaseData* pSource) override
1102 {
1103 memcpy(&_crossstaff, ((FCCrossStaffMod*)pSource)->_GetCrossStaff(), sizeof(_crossstaff));
1104 _datablock = &_crossstaff;
1105 _loadedsize = sizeof(_crossstaff);
1106 }
1107
1108 __FCBaseData* CreateObject() override { return new FCCrossStaffMod(); }
1109
1110#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1111public:
1112 const char* ClassName() const override { return "FCCrossStaffMod"; }
1113 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_CROSSSTAFFMOD; }
1114
1115#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1120 EDTCrossStaff* _GetCrossStaff() { return &_crossstaff; }
1121#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1122
1128 {
1129 memset(&_crossstaff, 0, sizeof(_crossstaff));
1130 _datablock = &_crossstaff;
1131 _loadedsize = sizeof(_crossstaff);
1132 }
1133
1140 twobyte GetStaff() const { return _crossstaff.instrument; }
1141
1148 void SetStaff(eStaff staff) { _crossstaff.instrument = staff; }
1149
1155 void SetNoteID(twobyte id) override { _crossstaff.noteID = id; }
1156
1157#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1158 bool _IsNoteIDMatch(void *pBuffer, twobyte id) override
1159 {
1160 return (((EDTCrossStaff*) pBuffer)->noteID == id);
1161 }
1162
1167 void _SetEntryFlagN(FCNote* pNote, bool state) override
1168 {
1169 pNote->_SetCrossStaffEntryFlag(state); /* Set flag for entry */
1170 pNote->SetCrossStaff(state); /* Set flag for note */
1171 }
1172
1177 bool _GetEntryFlagN(FCNote* pNote) override
1178 {
1179 return pNote->_GetCrossStaffEntryFlag(); /* Return flag for entry */
1180 }
1181#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1182};
1183
1184
1185
1186
1197{
1198#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1199 EDTSecondaryBeamBreakMods _secondarybeambreakmod;
1200 protected:
1201 EXTAG Tag() const override { return GetCustomTag() ? GetCustomTag() : ed_SecondaryBeamBreakMods; }
1202 int DataSizeLoad() const override { return sizeof(EDTSecondaryBeamBreakMods); }
1203 int DataSizeSave() const override { return sizeof(EDTSecondaryBeamBreakMods); }
1204 void* Allocate() override { return (void*) &_secondarybeambreakmod; }
1205
1210 void CloneMemoryFrom(__FCBaseData* pSource) override
1211 {
1212 memcpy(&_secondarybeambreakmod, ((FCSecondaryBeamBreakMod*)pSource)->_GetSecondaryBeamBreakMod(), sizeof(_secondarybeambreakmod));
1213 _datablock = &_secondarybeambreakmod;
1214 _loadedsize = sizeof(_secondarybeambreakmod);
1215 }
1216
1217 __FCBaseData* CreateObject() override { return new FCSecondaryBeamBreakMod(); }
1218
1219#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1220public:
1221 const char* ClassName() const override { return "FCSecondaryBeamBreakMod"; }
1222 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_SECONDARYBEAMBREAKMOD; }
1223
1224#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1229 EDTSecondaryBeamBreakMods* _GetSecondaryBeamBreakMod() { return &_secondarybeambreakmod; }
1230#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1231
1237 {
1238 _datablock = &_secondarybeambreakmod;
1239 memset(&_secondarybeambreakmod, 0, sizeof(_secondarybeambreakmod));
1240 }
1241
1249 void SetBreak(int beamindex, bool value)
1250 {
1251 if (beamindex < 0) return;
1252 if (beamindex > 8) return;
1253 _secondarybeambreakmod.breaks[beamindex] = value ? 1 : 0;
1254 }
1255
1262 void SetBreakAll(bool value)
1263 {
1264 for (int i = 0; i < 9; i++) SetBreak(i, value);
1265 }
1266
1273 twobyte CalcLowestBreak() const
1274 {
1275 for (int beamindex = 0; beamindex < 9; beamindex++)
1276 if (_secondarybeambreakmod.breaks[beamindex]) return beamindex;
1277 return -1;
1278 }
1279
1286 bool GetBreak(int beamindex) const
1287 {
1288 if (beamindex < 0) return false;
1289 if (beamindex > 8) return false;
1290 return (_secondarybeambreakmod.breaks[beamindex] != 0);
1291 }
1292
1297 bool GetBreak16th() const
1298 {
1299 return GetBreak(0);
1300 }
1301
1306 void SetBreak16th(bool state)
1307 {
1308 return SetBreak(0, state);
1309 }
1310
1315 bool GetBreak32nd() const
1316 {
1317 return GetBreak(1);
1318 }
1319
1324 void SetBreak32nd(bool state)
1325 {
1326 return SetBreak(1, state);
1327 }
1328
1333 bool GetBreak64th() const
1334 {
1335 return GetBreak(2);
1336 }
1337
1342 void SetBreak64th(bool state)
1343 {
1344 return SetBreak(2, state);
1345 }
1346
1351 bool GetBreak128th() const
1352 {
1353 return GetBreak(3);
1354 }
1355
1360 void SetBreak128th(bool state)
1361 {
1362 return SetBreak(3, state);
1363 }
1364
1369 bool GetBreak256th() const
1370 {
1371 return GetBreak(4);
1372 }
1373
1378 void SetBreak256th(bool state)
1379 {
1380 return SetBreak(4, state);
1381 }
1382
1383#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1388 void _SetEntryFlag(FCNoteEntry* pNoteEntry, bool state) override
1389 {
1390 pNoteEntry->SetSecondaryBeamFlag(state);
1391 }
1392#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1393};
1394
1395
1396
1397
1410{
1411#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1412 EDTBeamExtMods _beamextensionmod;
1413 bool _upstemuse;
1414
1415protected:
1416 EXTAG Tag() const override { return GetCustomTag() ? GetCustomTag() : ed_BeamExtBelowMods; }
1417 int DataSizeLoad() const override { return sizeof(_beamextensionmod); }
1418 int DataSizeSave() const override { return DataSizeLoad(); }
1419 void* Allocate() override { return (void*) &_beamextensionmod; }
1420
1425 void CloneMemoryFrom(__FCBaseData* pSource) override
1426 {
1427 FCBeamExtensionMod * pSourceMod = dynamic_cast<FCBeamExtensionMod*>(pSource);
1428 if (!pSourceMod) return;
1429 memcpy(&_beamextensionmod, pSourceMod->_GetBeamExtensionMod(), DataSizeLoad());
1430 _upstemuse = pSourceMod->_upstemuse;
1431 _datablock = _GetBeamExtensionMod();
1433 }
1434
1435 __FCBaseData* CreateObject() override { return new FCSecondaryBeamBreakMod(); }
1436
1437#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1438public:
1439 const char* ClassName() const override { return "FCBeamExtensionMod"; }
1440 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_BEAMEXTENSIONMOD; }
1441
1442#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1447 EDTBeamExtMods* _GetBeamExtensionMod() { return &_beamextensionmod; }
1448#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1449
1455 {
1456 _upstemuse = false;
1457 _datablock = _GetBeamExtensionMod();
1458 memset(&_beamextensionmod, 0, sizeof(_beamextensionmod));
1459 }
1460
1483 void UseUpStemData(bool useupstem)
1484 {
1485 SetCustomTag(useupstem ? ed_BeamExtAboveMods : ed_BeamExtBelowMods);
1486 _upstemuse = useupstem;
1487 }
1488
1490 void SetNoteEntry(FCNoteEntry* pEntry) override
1491 {
1492 if (pEntry)
1493 {
1494 bool stemup = pEntry->CalcStemUp();
1495 UseUpStemData(stemup);
1496 }
1498 }
1499
1504 void SetLeftAdjustment(Evpu16 adjust) { _beamextensionmod.leftadjust = adjust; }
1505
1510 Evpu16 GetLeftAdjustment() const { return _beamextensionmod.leftadjust; }
1511
1516 void SetRightAdjustment(Evpu16 adjust) { _beamextensionmod.rightadjust = adjust; }
1517
1522 Evpu16 GetRightAdjustment() const { return _beamextensionmod.rightadjust; }
1523
1531 void SetExtend(int beamindex, bool value)
1532 {
1533 if (beamindex < 0) return;
1534 if (beamindex > 9) return;
1535 if (value)
1536 {
1537 _beamextensionmod.beams |= (FCNoteEntry::NOTE_8TH >> beamindex);
1538 _beamextensionmod.beams |= BMEXT_HAS_BMEXT;
1539 }
1540 else
1541 {
1542 _beamextensionmod.beams &= ~(FCNoteEntry::NOTE_8TH >> beamindex);
1543 if (! (_beamextensionmod.beams & BMEXT_BEAM_MASK))
1544 _beamextensionmod.beams &= ~BMEXT_HAS_BMEXT;
1545 }
1546 }
1547
1554 void SetExtendAll(bool value)
1555 {
1556 for (int i = 0; i <= 9; i++) SetExtend(i, value);
1557 }
1558
1565 bool GetExtend(int beamindex) const
1566 {
1567 if (beamindex < 0) return false;
1568 if (beamindex > 9) return false;
1569 if (! GetBitFlag(_beamextensionmod.beams, BMEXT_HAS_BMEXT)) return false;
1570 return ((_beamextensionmod.beams & (FCNoteEntry::NOTE_8TH >> beamindex)) != 0);
1571 }
1572
1577 bool GetExtend8th() const
1578 {
1579 return GetExtend(0);
1580 }
1581
1586 void SetExtend8th(bool state)
1587 {
1588 return SetExtend(0, state);
1589 }
1590
1595 bool GetExtend16th() const
1596 {
1597 return GetExtend(1);
1598 }
1599
1604 void SetExtend16th(bool state)
1605 {
1606 return SetExtend(1, state);
1607 }
1608
1613 bool GetExtend32nd() const
1614 {
1615 return GetExtend(2);
1616 }
1617
1622 void SetExtend32nd(bool state)
1623 {
1624 return SetExtend(2, state);
1625 }
1626
1631 bool GetExtend64th() const
1632 {
1633 return GetExtend(3);
1634 }
1635
1640 void SetExtend64th(bool state)
1641 {
1642 return SetExtend(3, state);
1643 }
1644
1649 bool GetExtend128th() const
1650 {
1651 return GetExtend(4);
1652 }
1653
1658 void SetExtend128th(bool state)
1659 {
1660 return SetExtend(4, state);
1661 }
1662
1667 bool GetExtend256th() const
1668 {
1669 return GetExtend(5);
1670 }
1671
1676 void SetExtend256th(bool state)
1677 {
1678 return SetExtend(5, state);
1679 }
1680
1681#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1686 void _SetEntryFlag(FCNoteEntry* pNoteEntry, bool state) override
1687 {
1688 pNoteEntry->SetBeamExtensionFlag(state);
1689 }
1690#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1691};
1692
1693
1702{
1703#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1704 EDTStemMods _stemmod;
1705
1706protected:
1707 EXTAG Tag() const override { return GetCustomTag() ? GetCustomTag() : ed_StemMods; }
1708 int DataSizeLoad() const override { return sizeof(EDTStemMods); }
1709 int DataSizeSave() const override { return sizeof(EDTStemMods); }
1710 void* Allocate() override { return (void*) &_stemmod; }
1711
1716 void CloneMemoryFrom(__FCBaseData* pSource) override
1717 {
1718 memcpy(&_stemmod, ((FCStemMod*)pSource)->_GetStemMod(), sizeof(_stemmod));
1719 _datablock = &_stemmod;
1720 _loadedsize = sizeof(_stemmod);
1721 }
1722
1723 __FCBaseData* CreateObject() override { return new FCStemMod(); }
1724
1725#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1726public:
1727 const char* ClassName() const override { return "FCStemMod"; }
1728 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_STEMMOD; }
1729
1730#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1735 EDTStemMods* _GetStemMod() { return &_stemmod; }
1736#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1737
1740 {
1741 _datablock = &_stemmod;
1742 memset(&_stemmod, 0, sizeof(_stemmod));
1743 _loadedsize = sizeof(_stemmod);
1744 }
1745
1746 #ifndef DOXYGEN_SHOULD_IGNORE_THIS
1751 void _SetEntryFlag(FCNoteEntry* pNoteEntry, bool state) override
1752 {
1753 pNoteEntry->SetStemDetailFlag(state);
1754 }
1755#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1756
1761 twobyte GetVerticalUpOffset() const { return _stemmod.topVertAdjust; }
1762
1767 twobyte GetVerticalDownOffset() const { return _stemmod.downVertAdjust; }
1768
1773 twobyte GetHorizontalUpOffset() const { return HI_ONEBYTE(_stemmod.horizAdjust); }
1774
1779 twobyte GetHorizontalDownOffset() const { return LO_ONEBYTE(_stemmod.horizAdjust); }
1780
1785 void SetVerticalUpOffset(twobyte adjust) { _stemmod.topVertAdjust = adjust; }
1786
1791 void SetVerticalDownOffset(twobyte adjust) { _stemmod.downVertAdjust = adjust; }
1792
1793
1800 void SetHorizontalUpOffset(twobyte adjust)
1801 {
1802 _stemmod.horizAdjust = MAKE_TWOBYTE(_stemmod.horizAdjust & 0x00ff, adjust);
1803 }
1804
1811 void SetHorizontalDownOffset(twobyte adjust)
1812 {
1813 _stemmod.horizAdjust = MAKE_TWOBYTE(adjust, _stemmod.horizAdjust & 0x00ff);
1814 }
1815
1816
1823 void UseBeamedData(bool usebeam) { SetCustomTag(usebeam ? ed_BeamStemMods : ed_StemMods); }
1824
1825};
1826
1827
1828
1839{
1840#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1841#if FXT_VERSION >= FINALEVERSION_26
1842 typedef EDTArticulation25_6 CurrEDTArticulation;
1843#elif FXT_VERSION >= FINALEVERSION_2014B
1844 typedef EDTArticulation2014b CurrEDTArticulation;
1845#else
1846 typedef EDTArticulation CurrEDTArticulation;
1847#endif
1848 CurrEDTArticulation _articulationCurr; // each later version of EDTArticulation is an extension of the previous, which is why this works
1849
1850protected:
1851 int DataSizeLoad() const override;
1852 int DataSizeSave() const override
1853 { return DataSizeLoad(); }
1854 void* Allocate() override
1855 { return (void*) &_articulationCurr; }
1856
1861 void CloneMemoryFrom(__FCBaseData* pSource) override;
1862
1863 __FCBaseData* CreateObject() override { return new FCArticulation(); }
1864
1865#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1866
1867public:
1868 EXTAG Tag() const override { return ed_Articulation; }
1869 const char* ClassName() const override { return "FCArticulation"; }
1870 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_ARTICULATION; }
1871
1877 ARTICPLACEMENT_AUTOMATIC = 0,
1878 ARTICPLACEMENT_ABOVE,
1879 ARTICPLACEMENT_BELOW
1880 };
1881
1887 ARTICSTACKING_USEDEFINITION = 0,
1888 ARTICSTACKING_NEVER
1889 };
1890
1891#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1892#if FXT_VERSION >= FINALEVERSION_26
1894 bool SaveNew() override
1895 {
1896 _articulationCurr.numSlursAvoided = -1;
1897 return __FCEntryDetail::SaveNew();
1898 }
1899#endif
1900#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1901
1907
1908#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1913 void _SetEntryFlag(FCNoteEntry* pNoteEntry, bool state) override
1914 {
1915 pNoteEntry->SetArticulationFlag(state);
1916 }
1917#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1918
1926
1936 void SetID(CMPER cmper) { _articulationCurr.imrkdef = cmper; }
1937
1943 void SetHorizontalPos(Evpu16 pos)
1944 {
1945 _articulationCurr.posadd = pos;
1946 }
1947
1953 void SetHorizontalCopyToPos(Evpu16 pos)
1954 {
1955 _articulationCurr.posadder = pos;
1956 }
1957
1962 void SetVerticalPos(Evpu16 pos)
1963 {
1964 _articulationCurr.noteadd = pos;
1965 }
1966
1971 void SetVerticalCopyToPos(Evpu16 pos)
1972 {
1973 _articulationCurr.lonoadd = pos;
1974 }
1975
1982 bool GetVisible() const;
1983
1990 void SetVisible(bool state);
1991
2000#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2002#else
2003 int
2004#endif
2005 GetStackingMode() const;
2006
2015 void SetStackingMode(
2016#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2018#else
2019 int
2020#endif
2021 value);
2022
2032#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2034#else
2035 int
2036#endif
2037 GetPlacementMode() const;
2038
2048 void SetPlacementMode(
2049#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2051#else
2052 int
2053#endif
2054 value);
2055
2060 Evpu16 GetHorizontalPos() const { return _articulationCurr.posadd; }
2061
2066 Evpu16 GetHorizontalCopyToPos() const { return _articulationCurr.posadder; }
2067
2073 Evpu16 GetVerticalPos() const { return _articulationCurr.noteadd; }
2074
2080 Evpu16 GetVerticalCopyToPos() const { return _articulationCurr.lonoadd; }
2081
2090 twobyte GetID() const { return _articulationCurr.imrkdef; }
2091
2101
2102#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
2104 luabridge::RefCountedPtr<FCArticulationDef> CreateArticulationDef_GC()
2105 { return makeLuaSharedPtr(CreateArticulationDef()); }
2106#endif
2107
2114 bool CalcMetricPos(FCPoint* pPoint);
2115
2123 bool CalcFlippedSymbolUsed();
2124
2131 void ResetPos(FCArticulationDef* pDef);
2132
2133#ifdef PDK_FRAMEWORK_DEBUG
2134 void DebugDump() override
2135 {
2137 DebugOutInt("Articulation ID: ", GetID());
2138 DebugOutInt("Horizontal position: ", GetHorizontalPos());
2139 DebugOutInt("Vertical position: ", GetVerticalPos());
2140 }
2141#endif
2142};
2143
2144
2153{
2154#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2155 EDTTuplet2005 _tuplet;
2156
2157protected:
2158 int DataSizeLoad() const override { return sizeof(EDTTuplet2005); }
2159 int DataSizeSave() const override { return sizeof(EDTTuplet2005); }
2160 void* Allocate() override { return (void*) &_tuplet; }
2161
2166 void CloneMemoryFrom(__FCBaseData* pSource) override
2167 {
2168 memcpy(&_tuplet, ((FCTuplet*)pSource)->_GetTuplet(), sizeof(_tuplet));
2169 _datablock = &_tuplet;
2170 _loadedsize = sizeof(_tuplet);
2171 }
2172
2173 __FCBaseData* CreateObject() override
2174 { return new FCTuplet(); }
2175
2176#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2177public:
2178
2179 EXTAG Tag() const override { return ed_Tuplet; }
2180
2187 TUPLETPLACEMENT_MANUAL = 0,
2188 TUPLETPLACEMENT_STEMSIDE,
2189 TUPLETPLACEMENT_NOTESIDE,
2190 TUPLETPLACEMENT_ABOVE,
2191 TUPLETPLACEMENT_BELOW
2192 };
2193
2200 {
2201 TUPLETNUMBER_NONE = 0,
2202 TUPLETNUMBER_REGULAR,
2203 TUPLETNUMBER_RATIO,
2204 TUPLETNUMBER_RATIOANDNOTE,
2205 TUPLETNUMBER_RATIOANDNOTE_BOTH
2206 };
2207
2213 {
2214 TUPLETSHAPE_NONE = 0,
2215 TUPLETSHAPE_BRACKET,
2216 TUPLETSHAPE_SLUR
2217 };
2218
2224 {
2225 TUPLETBRACKET_ALWAYS = 0,
2226 TUPLETBRACKET_UNBEAMEDONLY,
2227 TUPLETBRACKET_NEVERBEAMEDONBEAMSIDE
2228 };
2229
2230 const char* ClassName() const override { return "FCTuplet"; }
2231 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_TUPLET; }
2232
2233#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2238 EDTTuplet2005* _GetTuplet() { return &_tuplet; }
2239#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2240
2246 {
2247 memset(&_tuplet, 0, sizeof(_tuplet));
2248 _datablock = &_tuplet;
2249 _loadedsize = sizeof(_tuplet);
2250 }
2251
2260
2269
2270#ifdef PDK_FRAMEWORK_PREFS
2279 void PrefsReset(bool resetposition);
2280#endif
2281
2286 twobyte GetSymbolicDuration() const { return _tuplet.tupsymdur; }
2287
2294 twobyte GetSymbolicNumber() const { return _tuplet.tupnum; }
2295
2300 twobyte GetReferenceDuration() const { return _tuplet.refdur; }
2301
2306 twobyte GetReferenceNumber() const { return _tuplet.refnum; }
2307
2317#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2319#else
2320 int
2321#endif
2322 GetPlacementMode() const;
2323
2328 bool GetEngraverTuplet() const { return GetBitFlag(_tuplet.flag, TUPLET_ENGRAVERTUPLET); }
2329
2334 bool GetAvoidStaff() const { return GetBitFlag(_tuplet.tuplflag, TUPLET_AVOID_STAFF); }
2335
2340 bool GetAllowHorizontalDrag() const { return GetBitFlag(_tuplet.flag, TUPLET_ALLOW_HORZ); }
2341
2346 bool GetUseBottomNote() const { return GetBitFlag(_tuplet.flag, TUPLET_USEBOTTOM); }
2347
2357#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2359#else
2360 int
2361#endif
2362 GetNumberStyle() const;
2363
2371#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2373#else
2374 int
2375#endif
2376 GetShapeStyle() const;
2377
2383 bool GetBreakSlurBracket() const { return GetBitFlag(_tuplet.flag, TUPLET_BREAKBRACK); }
2384
2391#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2393#else
2394 int
2395#endif
2396 GetBracketMode() const;
2397
2402 bool GetAlwaysFlat() const { return GetBitFlag(_tuplet.tuplflag, TUPLET_FLAT); }
2403
2408 bool GetBracketFullDuration() const { return GetBitFlag(_tuplet.tuplflag, TUPLET_FULLDURA); }
2409
2414 twobyte GetHorizontalOffset() const { return _tuplet.tupOffX; }
2415
2420 twobyte GetVerticalOffset() const { return _tuplet.tupOffY; }
2421
2426 bool GetCenterUsingDuration() const { return GetBitFlag(_tuplet.tuplflag, TUPLET_METRIC_CENTER); }
2427
2432 bool GetIgnoreNumberOffset() const { return GetBitFlag(_tuplet.flag, TUPLET_IGNOREGLOFFS); }
2433
2438 twobyte GetHorizontalShapeOffset() const { return _tuplet.brackOffX; }
2439
2444 twobyte GetVerticalShapeOffset() const { return _tuplet.brackOffY; }
2445
2450 bool GetMatchHookLengths() const { return GetBitFlag(_tuplet.flag, TUPLET_MATCH_HOOKS); }
2451
2456 twobyte GetLeftHookLength() const { return -_tuplet.leftHookLen; }
2457
2465 twobyte GetLeftExtension() const { return _tuplet.leftHookExt; }
2466
2473 twobyte GetRightHookLength() const { return -_tuplet.rightHookLen; }
2474
2483 twobyte GetRightExtension() const { return _tuplet.rightHookExt; }
2484
2489 twobyte GetSlopeAdjust() const { return _tuplet.slope; }
2490
2495 bool GetVisible() const { return !GetBitFlag(_tuplet.tuplflag, 0x20); }
2496
2503 void SetSymbolicNumber(twobyte value) { _tuplet.tupnum = value; }
2504
2509 void SetSymbolicDuration(twobyte value) { _tuplet.tupsymdur = value; }
2510
2515 void SetReferenceNumber(twobyte value) { _tuplet.refnum = value; }
2516
2521 void SetReferenceDuration(twobyte value) { _tuplet.refdur = value; }
2522
2531 void SetPlacementMode(
2532#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2534#else
2535 int
2536#endif
2537 value);
2538
2543 void SetEngraverTuplet(bool value) { Set16BitFlag(&_tuplet.flag, TUPLET_ENGRAVERTUPLET, value); }
2544
2549 void SetAvoidStaff(bool value) { Set16BitFlag(&_tuplet.tuplflag, TUPLET_AVOID_STAFF, value); }
2550
2555 void SetAllowHorizontalDrag(bool value) { Set16BitFlag(&_tuplet.flag, TUPLET_ALLOW_HORZ, value); }
2556
2561 void SetUseBottomNote(bool value) { Set16BitFlag(&_tuplet.flag, TUPLET_USEBOTTOM, value); }
2562
2572 void SetNumberStyle(
2573#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2575#else
2576 int
2577#endif
2578 value);
2579
2587 void SetShapeStyle(
2588#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2590#else
2591 int
2592#endif
2593 value);
2594
2599 void SetBreakSlurBracket(bool value) { Set16BitFlag(&_tuplet.flag, TUPLET_BREAKBRACK, value); }
2600
2607 void SetBracketMode(
2608#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2610#else
2611 int
2612#endif
2613 value);
2614
2619 void SetAlwaysFlat(bool value) { Set16BitFlag(&_tuplet.tuplflag, TUPLET_FLAT, value); }
2620
2625 void SetBracketFullDuration(bool value) { Set16BitFlag(&_tuplet.tuplflag, TUPLET_FULLDURA, value); }
2626
2631 void SetHorizontalOffset(twobyte value) { _tuplet.tupOffX = value; }
2632
2637 void SetVerticalOffset(twobyte value) { _tuplet.tupOffY = value; }
2638
2643 void SetCenterUsingDuration(bool value) { Set16BitFlag(&_tuplet.tuplflag, TUPLET_METRIC_CENTER, value); }
2644
2649 void SetIgnoreNumberOffset(bool value) { Set16BitFlag(&_tuplet.flag, TUPLET_IGNOREGLOFFS, value); }
2650
2655 void SetHorizontalShapeOffset(twobyte value) { _tuplet.brackOffX = value; }
2656
2661 void SetVerticalShapeOffset(twobyte value) { _tuplet.brackOffY = value; }
2662
2667 void SetMatchHookLengths(bool value) { Set16BitFlag(&_tuplet.flag, TUPLET_MATCH_HOOKS, value); }
2668
2674 void SetLeftHookLength(twobyte value) { _tuplet.leftHookLen = -value; }
2675
2683 void SetLeftExtension(twobyte value) { _tuplet.leftHookExt = value; }
2684
2691 void SetRightHookLength(twobyte value) { _tuplet.rightHookLen = -value; }
2692
2700 void SetRightExtension(twobyte value) { _tuplet.rightHookExt = value; }
2701
2706 void SetSlopeAdjust(twobyte value) { _tuplet.slope = value; }
2707
2712 void SetVisible(bool value) { Set16BitFlag(&_tuplet.tuplflag, 0x20, !value); }
2713
2714
2715#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2720 void _SetEntryFlag(FCNoteEntry* pNoteEntry, bool state) override
2721 {
2722 pNoteEntry->SetTupletStartFlag(state);
2723 }
2724#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2725
2726
2727
2728#ifdef PDK_FRAMEWORK_DEBUG
2729 void DebugDump() override
2730 {
2732
2733 switch (GetPlacementMode())
2734 {
2735 case TUPLETPLACEMENT_MANUAL:
2736 DebugOut("Placement mode: Manual");
2737 break;
2738 case TUPLETPLACEMENT_STEMSIDE:
2739 DebugOut("Placement mode: Stem/Beam Side");
2740 break;
2741 case TUPLETPLACEMENT_NOTESIDE:
2742 DebugOut("Placement mode: Note Side");
2743 break;
2744 case TUPLETPLACEMENT_ABOVE:
2745 DebugOut("Placement mode: Above");
2746 break;
2747 case TUPLETPLACEMENT_BELOW:
2748 DebugOut("Placement mode: Below");
2749 break;
2750 }
2751 DebugOutBool("Engraver tuplet: ", GetEngraverTuplet());
2752 DebugOutBool("Avoid staff: ", GetAvoidStaff());
2753 DebugOutBool("Allow horizontal drag: ", GetAllowHorizontalDrag());
2754 DebugOutBool("Use bottom note: ", GetUseBottomNote());
2755 switch (GetNumberStyle())
2756 {
2757 case TUPLETNUMBER_NONE:
2758 DebugOut("Number appearance: None");
2759 break;
2760 case TUPLETNUMBER_REGULAR:
2761 DebugOut("Number appearance: Number");
2762 break;
2763 case TUPLETNUMBER_RATIO:
2764 DebugOut("Number appearance: Ratio");
2765 break;
2766 case TUPLETNUMBER_RATIOANDNOTE:
2767 DebugOut("Number appearance: 7:8q");
2768 break;
2769 case TUPLETNUMBER_RATIOANDNOTE_BOTH:
2770 DebugOut("Number appearance: 7q:8q");
2771 break;
2772 }
2773 switch (GetShapeStyle())
2774 {
2775 case TUPLETSHAPE_NONE:
2776 DebugOut("Shape appearance: None");
2777 break;
2778 case TUPLETSHAPE_BRACKET:
2779 DebugOut("Shape appearance: Bracket");
2780 break;
2781 case TUPLETSHAPE_SLUR:
2782 DebugOut("Shape appearance: Slur");
2783 break;
2784 }
2785
2786 DebugOutBool("Break slur of bracket: ", GetBreakSlurBracket());
2787 switch (GetBracketMode())
2788 {
2789 case TUPLETBRACKET_ALWAYS:
2790 DebugOut("Always use specified shape");
2791 break;
2792 case TUPLETBRACKET_UNBEAMEDONLY:
2793 DebugOut("Bracket unbeamed notes only");
2794 break;
2795 case TUPLETBRACKET_NEVERBEAMEDONBEAMSIDE:
2796 DebugOut("Never bracket beamed notes on beam side");
2797 break;
2798 }
2799 DebugOutInt("Horizontal offset: ", GetHorizontalOffset());
2800 DebugOutInt("Vertical offset: ", GetVerticalOffset());
2801 DebugOutBool("Center number using duration: ", GetCenterUsingDuration());
2802 DebugOutBool("Ignore Horizontal Number Offset: ", GetIgnoreNumberOffset());
2803 DebugOutInt("Horizontal shape offset: ", GetHorizontalShapeOffset());
2804 DebugOutInt("Vertical shape offset: ", GetVerticalShapeOffset());
2805 DebugOutBool("Always flat: ", GetAlwaysFlat());
2806 DebugOutBool("Bracket full duration: ", GetBracketFullDuration());
2807 DebugOutBool("Match length of hooks: ", GetMatchHookLengths());
2808 DebugOutInt("Left hook length: ", GetLeftHookLength());
2809 DebugOutInt("Left hook extension: ", GetLeftExtension());
2810 DebugOutInt("Right hook length: ", GetRightHookLength());
2811 DebugOutInt("Right hook extension: ", GetRightExtension());
2812 DebugOutInt("Manual slope adjustment: ", GetSlopeAdjust());
2813 }
2814#endif
2815};
2816
2817
2818
2819/* Should FCSyllableBase be parsed by the preprocessor? This approach
2820got a little convoluted, since Doxygen seems to have some problem with
2821generating XML files correctly if the #if statements are too complicated. */
2822#undef __SHOULD_INCLUDE_SYLLABLE_CODE
2823
2824#if (FXT_VERSION > FINALEVERSION_2012)
2825#define __SHOULD_INCLUDE_SYLLABLE_CODE 1
2826#endif
2827
2828#ifdef DOXYGEN_SHOULD_SKIP_THIS
2829#define __SHOULD_INCLUDE_SYLLABLE_CODE 1
2830#endif
2831
2832#ifdef __SHOULD_INCLUDE_SYLLABLE_CODE
2833/* Not defined until the 2014 PDK. Check for DOXYGEN_SHOULD_SKIP_THIS as well,
2834* so Doxygen parse these classes. */
2835
2836
2846{
2847#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2848 EDTLyric2011 _syllable;
2849
2851 int _CalcStringPos(twobyte syllablepos) const;
2852
2854 FCFontInfo* _CreateFontInfo(twobyte syllablenumber) const;
2855protected:
2856 int DataSizeLoad() const override { return sizeof(EDTLyric2011); }
2857 int DataSizeSave() const override { return sizeof(EDTLyric2011); }
2858 void* Allocate() override { return (void*) &_syllable; }
2859
2864 void CloneMemoryFrom(__FCBaseData* pSource) override
2865 {
2866 memcpy(&_syllable, ((FCSyllableBase*)pSource)->_GetSyllable(), sizeof(_syllable));
2867 _datablock = &_syllable;
2868 _loadedsize = sizeof(_syllable);
2869 }
2870
2871 __FCBaseData* CreateObject() override { return NULL; } /* Defined by inherited class!!! */
2872
2873#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2874public:
2875
2876 EXTAG Tag() const override = 0; /* Defined by inherited class */
2877
2878 const char* ClassName() const override { return ""; }; /* Defined by inherited class */
2879
2880#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2885 EDTLyric2011* _GetSyllable() { return &_syllable; }
2886#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2887
2891 {
2892 _datablock = &_syllable;
2893 memset(&_syllable, 0, sizeof(_syllable));
2894 }
2895
2901 void SetHorizontalOffset(Evpu16 offset)
2902 {
2903 _syllable.horzOff = offset;
2904 }
2905
2910 void SetVerticalOffset(Evpu16 offset)
2911 {
2912 _syllable.vertOff = offset;
2913 }
2914
2921 void SetSyllableNumber(twobyte number)
2922 {
2923 _syllable.syll = number;
2924 }
2925
2930 void SetRawTextNumber(twobyte rawtextid)
2931 {
2932 _syllable.rawTextNum = rawtextid;
2933 }
2934
2941 void SetWordExtensionID(twobyte smartshapeID)
2942 {
2943 _syllable.wext = smartshapeID;
2944 }
2945
2950 void SetIncludeLyricNumber(bool state)
2951 {
2952 Set16BitFlag((FLAG_16*) &_syllable.lyrFlags, EDTLYRDATA_DISPLAY_VERSENUM, state);
2953 }
2954
2962 {
2963 _syllable.floatingHorzOff = offset;
2964 }
2965
2971 Evpu16 GetHorizontalOffset() const
2972 {
2973 return _syllable.horzOff;
2974 }
2975
2980 Evpu16 GetVerticalOffset() const
2981 {
2982 return _syllable.vertOff;
2983 }
2984
2989 twobyte GetSyllableNumber() const
2990 {
2991 return _syllable.syll;
2992 }
2993
3000 twobyte GetRawTextNumber() const
3001 {
3002 return _syllable.rawTextNum;
3003 }
3004
3011 twobyte GetWordExtensionID() const
3012 {
3013 return _syllable.wext;
3014 }
3015
3021 {
3022 return GetBitFlag(_syllable.lyrFlags, EDTLYRDATA_DISPLAY_VERSENUM);
3023 }
3024
3030 {
3031 return _syllable.floatingHorzOff;
3032 }
3033
3040 {
3041 return FX_SyllableInfo_UTF16(Tag(), GetRawTextNumber(), GetSyllableNumber(),
3042 NULL, 0, NULL, NULL, NULL, NULL) != 0;
3043 }
3044
3049 virtual bool IsVerse() const { return false; }
3050
3055 virtual bool IsChorus() const { return false; }
3056
3061 virtual bool IsSection() const { return false; }
3062
3068 {
3069 tbool hyphen = false;
3070 if (FX_SyllableInfo_UTF16(Tag(), GetRawTextNumber(), GetSyllableNumber(),
3071 NULL, 0, NULL, NULL, &hyphen, NULL) == 0) return false;
3072 return hyphen != 0;
3073 }
3074
3084 int CalcStringPos() const;
3085
3096
3104
3105#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
3107 luabridge::RefCountedPtr<__FCLyricsBase> CreateLyricText_GC() const
3108 { return makeLuaSharedPtr(CreateLyricText()); }
3109#endif
3110
3120
3121#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
3123 luabridge::RefCountedPtr<FCFontInfo> CreateFontInfo_GC() const
3124 { return makeLuaSharedPtr(CreateFontInfo()); }
3125#endif
3126
3136
3137#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
3139 luabridge::RefCountedPtr<FCFontInfo> CreateNextFontInfo_GC() const
3140 { return makeLuaSharedPtr(CreateNextFontInfo()); }
3141#endif
3142
3149 bool GetText(FCString* pString) const;
3150
3157 bool GetRawText(FCString* pString) const;
3158
3168 bool SaveRawText(FCString* pString);
3169
3170
3171#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3176 void _SetEntryFlag(FCNoteEntry* pNoteEntry, bool state) override
3177 {
3178 pNoteEntry->SetLyricFlag(state);
3179 }
3180#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3181
3182
3183#ifdef PDK_FRAMEWORK_DEBUG
3184 void DebugDump() override
3185 {
3187 DebugOutHex("lyrFlags: ", _syllable.lyrFlags);
3188 }
3189#endif
3190};
3191
3202{
3203 __FCBaseData* CreateObject() override { return new FCVerseSyllable(); }
3204public:
3205 EXTAG Tag() const override;
3206 const char* ClassName() const override { return "FCVerseSyllable"; }
3207 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_VERSESYLLABLE; }
3208
3209 bool IsVerse() const override { return true; }
3210};
3211
3222{
3223 __FCBaseData* CreateObject() override { return new FCChorusSyllable(); }
3224public:
3225 EXTAG Tag() const override;
3226 const char* ClassName() const override { return "FCChorusSyllable"; }
3227 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_CHORUSSYLLABLE; }
3228 bool IsChorus() const override { return true; }
3229};
3230
3241{
3242 __FCBaseData* CreateObject() override { return new FCSectionSyllable(); }
3243public:
3244 EXTAG Tag() const override;
3245 const char* ClassName() const override { return "FCSectionSyllable"; }
3246 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_SECTIONSYLLABLE; }
3247 bool IsSection() const override { return true; }
3248};
3249
3250#endif /* #ifdef __SHOULD_INCLUDE_SYLLABLE_CODE */
3251
3252
3253
3265{
3266#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3267 EDTLyricEntryInfo _lyricinfo;
3268protected:
3269 EXTAG Tag() const override { return ed_LyricEntryInfo; }
3270 int DataSizeLoad() const override { return sizeof(EDTLyricEntryInfo); }
3271 int DataSizeSave() const override { return sizeof(EDTLyricEntryInfo); }
3272 void* Allocate() override { return (void*) &_lyricinfo; }
3273
3278 void CloneMemoryFrom(__FCBaseData* pSource) override
3279 {
3280 memcpy(&_lyricinfo, ((FCSyllableEntryMod*)pSource)->_GetSyllableEntryMod(), sizeof(_lyricinfo));
3281 _datablock = &_lyricinfo;
3282 _loadedsize = sizeof(_lyricinfo);
3283 }
3284
3285 __FCBaseData* CreateObject() override { return new FCSyllableEntryMod(); }
3286
3287#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3288public:
3289
3308
3327
3328 const char* ClassName() const override { return "FCSyllableEntryMod"; }
3329 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_SYLLABLEENTRYMOD; }
3330
3331#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3336 EDTLyricEntryInfo* _GetSyllableEntryMod() { return &_lyricinfo; }
3337#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3338
3345 {
3346 memset(&_lyricinfo, 0, sizeof(_lyricinfo));
3347 _datablock = &_lyricinfo;
3348 _loadedsize = sizeof(_lyricinfo);
3349 }
3350
3351#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3356 void _SetEntryFlag(FCNoteEntry* pNoteEntry, bool state) override
3357 {
3358 pNoteEntry->SetLyricFlag(state);
3359 }
3360#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3361
3368#ifndef PDK_FRAMEWORK_LUAFRIENDLY
3370#else
3371 int
3372#endif
3374 {
3375 return (SYLLABLEALIGNS) ((_lyricinfo.flag & LyricEntryInfo_AlignBits) / 0x100);
3376 }
3377
3384#ifndef PDK_FRAMEWORK_LUAFRIENDLY
3386#else
3387 int
3388#endif
3390 {
3391 return (SYLLABLEJUSTIFICATIONS) (_lyricinfo.flag & LyricEntryInfo_JustifyBits);
3392 }
3393
3394
3402#ifndef PDK_FRAMEWORK_LUAFRIENDLY
3404#else
3405 int
3406#endif
3407 value)
3408 {
3409 FLAG_16 bitflag = (FLAG_16) value;
3410 bitflag = bitflag & 3;
3411 bitflag *= 0x100;
3412 _lyricinfo.flag &= ~LyricEntryInfo_AlignBits;
3413 _lyricinfo.flag |= bitflag;
3414 }
3415
3423#ifndef PDK_FRAMEWORK_LUAFRIENDLY
3425#else
3426 int
3427#endif
3428 value
3429 )
3430 {
3431 FLAG_16 bitflag = (FLAG_16) value;
3432 bitflag = bitflag & 3;
3433 _lyricinfo.flag &= ~LyricEntryInfo_JustifyBits;
3434 _lyricinfo.flag |= bitflag;
3435 }
3436
3437
3438#if PDK_FRAMEWORK_DEBUG
3439 void DebugDump() override
3440 {
3442 }
3443#endif
3444
3445};
3446
3459{
3460#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3461 EDTAlter _alter;
3462
3463protected:
3464 EXTAG Tag() const override { return ed_Alter; }
3465 int DataSizeLoad() const override { return sizeof(EDTAlter); }
3466 int DataSizeSave() const override { return sizeof(EDTAlter); }
3467 void* Allocate() override { return (void*) &_alter; }
3468
3473 void CloneMemoryFrom(__FCBaseData* pSource) override
3474 {
3475 memcpy(&_alter, ((FCEntryAlterMod*)pSource)->_GetAlterMod(), sizeof(_alter));
3476 _datablock = &_alter;
3477 _loadedsize = sizeof(_alter);
3478 }
3479
3480 __FCBaseData* CreateObject() override { return new FCEntryAlterMod(); }
3481
3482#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3483public:
3484 const char* ClassName() const override { return "FCEntryAlterMod"; }
3485 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_ENTRYALTERMOD; }
3486
3487#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3492 EDTAlter* _GetAlterMod() { return &_alter; }
3493#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3494
3501 {
3502 memset(&_alter, 0, sizeof(_alter));
3503 _alter.percent = 100;
3504 _datablock = &_alter;
3505 _loadedsize = sizeof(_alter);
3506 }
3507
3508#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3513 void _SetEntryFlag(FCNoteEntry* pNoteEntry, bool state) override
3514 {
3515 pNoteEntry->SetNoteDetailFlag(state);
3516 }
3517#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3518
3524 void SetResize(twobyte value)
3525 {
3526 if (value == 0) value = 100;
3527 _alter.percent = value;
3528 }
3529
3535 twobyte GetResize() const
3536 {
3537 if (_alter.percent == 0) return 100;
3538 return _alter.percent;
3539 }
3540
3541#if PDK_FRAMEWORK_DEBUG
3542 void DebugDump() override
3543 {
3545 DebugOutInt("Resize: ", GetResize());
3546 }
3547#endif
3548
3549};
3550
3559{
3560
3561#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3562 EDTAccidentalMods2001 _accidentalmod;
3563
3564#if FXT_VERSION >= FINALEVERSION_2012
3565 EDTAccidentalMods2012 _accidentalmod2012;
3566#endif
3567
3568 bool _Use2012Version() const;
3569
3570 const twobyte* _GetHorizontalPosPtr() const
3571 {
3572#if FXT_VERSION >= FINALEVERSION_2012
3573 if (_Use2012Version()) return &_accidentalmod2012.horizpos;
3574#endif
3575 return &_accidentalmod.horizpos;
3576 }
3577
3578 const twobyte* _GetVerticalPosPtr() const
3579 {
3580#if FXT_VERSION >= FINALEVERSION_2012
3581 if (_Use2012Version()) return &_accidentalmod2012.vertpos;
3582#endif
3583 return &_accidentalmod.vertpos;
3584 }
3585
3586 const FLAG_16* _GetFlagPtr() const
3587 {
3588#if FXT_VERSION >= FINALEVERSION_2012
3589 if (_Use2012Version()) return &_accidentalmod2012.flag;
3590#endif
3591 return &_accidentalmod.flag;
3592 }
3593
3594 const FLAG_16* _GetEfxPtr() const
3595 {
3596#if FXT_VERSION >= FINALEVERSION_2012
3597 if (_Use2012Version()) return &_accidentalmod2012.efx;
3598#endif
3599 return (FLAG_16*) &_accidentalmod.efx;
3600 }
3601
3602 const twobyte* _GetFontSizePtr() const
3603 {
3604#if FXT_VERSION >= FINALEVERSION_2012
3605 if (_Use2012Version()) return &_accidentalmod2012.fontsize;
3606#endif
3607 return &_accidentalmod.fontsize;
3608 }
3609
3610 const twobyte* _GetResizePercentPtr() const
3611 {
3612#if FXT_VERSION >= FINALEVERSION_2012
3613 if (_Use2012Version()) return &_accidentalmod2012.resizepercent;
3614#endif
3615 return &_accidentalmod.resizepercent;
3616 }
3617
3618 const twobyte* _GetFontIDPtr() const
3619 {
3620#if FXT_VERSION >= FINALEVERSION_2012
3621 if (_Use2012Version()) return &_accidentalmod2012.fontID;
3622#endif
3623 return &_accidentalmod.fontID;
3624 }
3625
3626 const twobyte* _GetNoteIDPtr() const
3627 {
3628#if FXT_VERSION >= FINALEVERSION_2012
3629 if (_Use2012Version()) return &_accidentalmod2012.noteID;
3630#endif
3631 return &_accidentalmod.noteID;
3632 }
3633
3634 mutable EFONTNAME _fontname; /* Use for return value. */
3635#if FXT_VERSION >= FINALEVERSION_25
3636 mutable EnigmaFontName _fontnameUTF16; /* Use for return value. */
3637#endif
3638protected:
3639 EXTAG Tag() const override { return ed_AccidentalMods2001; }
3640 int DataSizeLoad() const override;
3641 int DataSizeSave() const override;
3642 void* Allocate() override;
3643 EVERSION EnigmaVersion() const override
3644 {
3645 if (_Use2012Version()) return FINALEVERSION_2012;
3646 return FXT_VERSION_2K2_BASE;
3647 }
3648
3653 void CloneMemoryFrom(__FCBaseData* pSource) override
3654 {
3655 memcpy(_GetAccidentalMod(), ((FCAccidentalMod*)pSource)->_GetAccidentalMod(), DataSizeLoad());
3656 _datablock = _GetAccidentalMod();
3658 }
3659
3660 __FCBaseData* CreateObject() override { return new FCAccidentalMod(); }
3661
3662#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3663public:
3664 const char* ClassName() const override { return "FCAccidentalMod"; }
3665 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_ACCIDENTALMOD; }
3666
3667#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3672 void* _GetAccidentalMod()
3673 {
3674#if FXT_VERSION >= FINALEVERSION_2012
3675 if (_Use2012Version()) return &_accidentalmod2012;
3676#endif
3677 return &_accidentalmod;
3678 }
3679#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3680
3683 {
3684 _datablock = _GetAccidentalMod();
3685 memset(_GetAccidentalMod(), 0, DataSizeLoad());
3686 SetFontSize(24);
3687 SetResize(100);
3688 SetUseCustomFont(false);
3691 }
3692
3697 twobyte GetHorizontalPos() const { return *_GetHorizontalPosPtr(); }
3698
3699
3709 {
3710 if (!GetUseCustomVerticalPos()) return 0;
3711 return *_GetVerticalPosPtr();
3712 }
3713
3718 twobyte GetVerticalPos() const
3719 {
3720 return *_GetVerticalPosPtr();
3721 }
3722
3728 {
3729 return GetBitFlag(*_GetFlagPtr(), ACCIMODS_VERTICAL_POS);
3730 }
3731
3740 eUniChar32 GetCustomChar() const
3741 {
3742#if FXT_VERSION >= FINALEVERSION_2012
3743 if (_Use2012Version()) return _accidentalmod2012.fontchar;
3744#endif
3745 return _accidentalmod.fontchar;
3746 }
3747
3752 bool GetUseCustomChar() const
3753 {
3754#if FXT_VERSION >= FINALEVERSION_2012
3755 if (_Use2012Version()) return (_accidentalmod2012.fontchar != 0);
3756#endif
3757 return (_accidentalmod.fontchar != 0);
3758 }
3759
3766 twobyte GetResize() const
3767 {
3768 return *_GetResizePercentPtr();
3769 }
3770
3775 bool GetUseCustomFont() const
3776 {
3777 return GetBitFlag(*_GetFlagPtr(), ACCIMODS_CUSTOM_FONT);
3778 }
3779
3788 const char* GetFontName() const
3789 {
3790 if (!GetUseCustomFont()) return "";
3791 FX_FontNumToName(*_GetFontIDPtr(), &_fontname);
3792 return (const char*) &_fontname;
3793 }
3794
3795#if FXT_VERSION >= FINALEVERSION_25
3804 const eUniChar16* GetFontNameUTF16() const
3805 {
3806 if (!GetUseCustomFont()) { return FCString::emptyUniCharStr; }
3807
3808 FX_FontNumToName_UTF16(*_GetFontIDPtr(), _fontnameUTF16, DIM(_fontnameUTF16));
3809
3810 return _fontnameUTF16;
3811 }
3812#endif
3813
3820 twobyte GetFontSize() const
3821 {
3822 if (!GetUseCustomFont()) return 0;
3823 return *_GetFontSizePtr();
3824 }
3825
3833 {
3834 if (!GetUseCustomFont()) return false;
3835 pInfo->SetEnigmaStyles(*_GetEfxPtr());
3836 return true;
3837 }
3838
3846 {
3847 if (!GetUseCustomFont()) return false;
3848 pInfo->SetEnigmaStyles(*_GetEfxPtr());
3849 pInfo->SetSize(*_GetFontSizePtr());
3850 pInfo->SetNameByID(*_GetFontIDPtr());
3851 return true;
3852 }
3853
3854
3859 void SetHorizontalPos(twobyte value)
3860 {
3861 twobyte* pValue = (twobyte*) _GetHorizontalPosPtr();
3862 *pValue = value;
3863 }
3864
3875 void SetVerticalPos(twobyte value)
3876 {
3877 twobyte* pValue = (twobyte*) _GetVerticalPosPtr();
3878 *pValue = value;
3879 }
3880
3890 void SetUseCustomVerticalPos(bool status)
3891 {
3892 Set16BitFlag((FLAG_16*) _GetFlagPtr(), ACCIMODS_VERTICAL_POS, status);
3893 }
3894
3903 {
3904 SetUseCustomVerticalPos(!status);
3905 }
3906
3913 void SetResize(twobyte value)
3914 {
3915 twobyte* pValue = (twobyte*) _GetResizePercentPtr();
3916 *pValue = value;
3917 }
3918
3926 void SetUseCustomFont(bool status)
3927 {
3928 Set16BitFlag((FLAG_16*) _GetFlagPtr(), ACCIMODS_CUSTOM_FONT, status);
3929 }
3930
3937 void SetUseDefaultFont(bool status)
3938 {
3939 SetUseCustomFont(!status);
3940 }
3941
3951 void SetFontName(const char* pszFont)
3952 {
3953 twobyte fontnum = FX_FontNameToNum((EFONTNAME*) pszFont);
3954 twobyte* pValue = (twobyte*) _GetFontIDPtr();
3955 *pValue = fontnum;
3956 }
3957
3958#if FXT_VERSION >= FINALEVERSION_25
3968 void SetFontNameUTF16(const eUniChar16* pszFont)
3969 {
3970 // This actually sets the font number based on the input font name.
3971 twobyte fontnum = FX_FontNameToNum_UTF16(pszFont);
3972 twobyte* pValue = (twobyte*) _GetFontIDPtr();
3973 *pValue = fontnum;
3974 }
3975#endif /* FXT_VERSION >= FINALEVERSION_25 */
3976
3987 void SetFontSize(twobyte fontsize)
3988 {
3989 twobyte* pValue = (twobyte*) _GetFontSizePtr();
3990 *pValue = fontsize;
3991 }
3992
3999 {
4000 twobyte* pValue = (twobyte*) _GetEfxPtr();
4001 *pValue = pInfo->GetEnigmaStyles();
4002 }
4003
4011 {
4012 twobyte* pEfx = (twobyte*) _GetEfxPtr();
4013 *pEfx = pInfo->GetEnigmaStyles();
4014 twobyte* pFontSize = (twobyte*) _GetFontSizePtr();
4015 *pFontSize = pInfo->GetSize();
4016 twobyte* pFontID = (twobyte*) _GetFontIDPtr();
4017 *pFontID = pInfo->GetIDByName();
4018 }
4019
4029 void SetCustomChar(eUniChar32 ch)
4030 {
4031#if FXT_VERSION >= FINALEVERSION_2012
4032 if (_Use2012Version())
4033 {
4034 _accidentalmod2012.fontchar = ch;
4035 return;
4036 }
4037#endif
4038 _accidentalmod.fontchar = 0xff00 | (ch & 0x00ff);
4039 }
4040
4048 {
4049#if FXT_VERSION >= FINALEVERSION_2012
4050 if (_Use2012Version())
4051 {
4052 _accidentalmod2012.fontchar = 0;
4053 return;
4054 }
4055#endif
4056 _accidentalmod.fontchar = 0;
4057 }
4058
4064 void SetNoteID(twobyte id) override
4065 {
4066 twobyte* pValue = (twobyte*) _GetNoteIDPtr();
4067 *pValue = id;
4068 }
4069
4070#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4071 bool _IsNoteIDMatch(void *pBuffer, twobyte id) override
4072 {
4073#if FXT_VERSION >= FINALEVERSION_2012
4074 if (_Use2012Version())
4075 {
4076 return (((EDTAccidentalMods2012*) pBuffer)->noteID == id);
4077 }
4078#endif
4079 return (((EDTAccidentalMods2001*) pBuffer)->noteID == id);
4080 }
4081#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4082};
4083
4084
4085
4094{
4095
4096#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4097 EDTPercNoteCode _percnotemod;
4098
4099protected:
4100 EXTAG Tag() const override { return ed_PercNoteCode ; }
4101 int DataSizeLoad() const override { return sizeof(EDTPercNoteCode); }
4102 int DataSizeSave() const override { return sizeof(EDTPercNoteCode); }
4103 void* Allocate() override { return (void*) &_percnotemod; }
4104
4109 void CloneMemoryFrom(__FCBaseData* pSource) override
4110 {
4111 memcpy(&_percnotemod, ((FCPercussionNoteMod*)pSource)->_GetPercussionNoteMod(), sizeof(_percnotemod));
4112 _datablock = &_percnotemod;
4113 _loadedsize = sizeof(_percnotemod);
4114 }
4115
4116 __FCBaseData* CreateObject() override { return new FCPercussionNoteMod(); }
4117
4118#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4119public:
4120 const char* ClassName() const override { return "FCPercussionNoteMod"; }
4121 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_PERCUSSIONNOTEMOD; }
4122
4123#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4128 EDTPercNoteCode* _GetPercussionNoteMod() { return &_percnotemod; }
4129#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4130
4136 {
4137 _datablock = &_percnotemod;
4138 memset(&_percnotemod, 0, sizeof(_percnotemod));
4139 _loadedsize = sizeof(_percnotemod);
4140 }
4141
4146 FLAG_16 GetNoteType() const { return _percnotemod.noteType; }
4147
4152 void SetNoteType(FLAG_16 value) { _percnotemod.noteType = value; }
4153
4159 void SetNoteID(twobyte id) override { _percnotemod.noteID = id; }
4160
4161#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4162 bool _IsNoteIDMatch(void *pBuffer, twobyte id) override
4163 {
4164 return (((EDTPercNoteCode*) pBuffer)->noteID == id);
4165 }
4166#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4167};
4168
4169
4177{
4178#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4179 EDTCustomStemMods _customstemmod;
4180
4181protected:
4182 EXTAG Tag() const override { return GetCustomTag() ? GetCustomTag() : ed_StemMods; }
4183 int DataSizeLoad() const override { return sizeof(EDTCustomStemMods); }
4184 int DataSizeSave() const override { return sizeof(EDTCustomStemMods); }
4185 void* Allocate() override { return (void*) &_customstemmod; }
4186
4187 EVERSION EnigmaVersion() const override { return FXT_VERSION_2K5_BASE; }
4188
4193 void CloneMemoryFrom(__FCBaseData* pSource) override
4194 {
4195 memcpy(&_customstemmod, ((FCStemMod*)pSource)->_GetStemMod(), sizeof(_customstemmod));
4196 _datablock = &_customstemmod;
4197 _loadedsize = sizeof(_customstemmod);
4198 }
4199
4200 __FCBaseData* CreateObject() override { return new FCCustomStemMod(); }
4201
4202#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4203public:
4204 const char* ClassName() const override { return "FCCustomStemMod"; }
4205 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_CUSTOMSTEMMOD; }
4206
4207#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4212 EDTCustomStemMods* _GetStemMod() { return &_customstemmod; }
4213#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4214
4220 {
4221 _datablock = &_customstemmod;
4222 memset(&_customstemmod, 0, sizeof(_customstemmod));
4223 }
4224
4225#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4230 void _SetEntryFlag(FCNoteEntry* pNoteEntry, bool state) override
4231 {
4232 pNoteEntry->SetStemDetailFlag(state);
4233 }
4234#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4235
4242 void UseUpStemData(bool useupstem) { SetCustomTag(useupstem ? ed_CustomStemModsUp : ed_CustomStemModsDown); }
4243
4248 twobyte GetShapeID() const { return _customstemmod.shapeID; }
4249
4254 void SetShapeID(CMPER theid) { _customstemmod.shapeID = theid; }
4255};
4256
4257
4279{
4280#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4281 EDTBeamMods _beammod;
4282
4283 twobyte _secondarybeamnumber; // 1-based beam number for secondary beams
4284 bool _secondarybeamuse;
4285 bool _upstemuse;
4286
4287 void _PreSaveSetup()
4288 {
4289 if (_secondarybeamuse)
4290 {
4291 _beammod.beamWidth = -1;
4292 if (_beammod.secondaryBeamEdu == 0)
4293 {
4294 SetBeamNumber(_secondarybeamnumber);
4295 }
4296 }
4297 else
4298 {
4299 _beammod.secondaryBeamEdu = 0;
4300 }
4301 }
4302
4303protected:
4304 EXTAG Tag() const override { return GetCustomTag() ? GetCustomTag() : ed_BeamBelowMods; }
4305 int DataSizeLoad() const override { return sizeof(EDTBeamMods); }
4306 int DataSizeSave() const override { return sizeof(EDTBeamMods); }
4307 void* Allocate() override { return (void*) &_beammod; }
4308
4309 EVERSION EnigmaVersion() const override { return FXT_VERSION_2K5_BASE; }
4310
4315 void CloneMemoryFrom(__FCBaseData* pSource) override
4316 {
4317 FCBeamMod* pSourceMod = (FCBeamMod*) pSource;
4318 memcpy(&_beammod, pSourceMod->_GetBeamMod(), sizeof(_beammod));
4319 _datablock = &_beammod;
4320 _loadedsize = sizeof(_beammod);
4321 _secondarybeamuse = pSourceMod->IsSecondaryBeam();
4322 _upstemuse = pSourceMod->IsUpStem();
4323 _secondarybeamnumber = pSourceMod->GetBeamNumber();
4324 }
4325
4327 void InitializeData()
4328 {
4329 memset(&_beammod, 0, sizeof(_beammod));
4330 _beammod.mode = 2; /* Defaults to "Flatten Beams Based On Standard Note */
4332 #ifdef PDK_FRAMEWORK_PREFS
4334 #endif
4335 }
4336
4337 __FCBaseData* CreateObject() override { return new FCBeamMod(_secondarybeamuse); }
4338
4339#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4340public:
4341 const char* ClassName() const override { return "FCBeamMod"; }
4342 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_BEAMMOD; }
4343
4344#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4349 EDTBeamMods* _GetBeamMod() { return &_beammod; }
4350#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4351
4361 FCBeamMod(bool secondarybeam) : __FCEntryDetail()
4362 {
4363 _datablock = &_beammod;
4364 _loadedsize = sizeof(_beammod);
4365
4366 _secondarybeamuse = secondarybeam;
4367 _upstemuse = false;
4368 _secondarybeamnumber = 2;
4369 SetCustomTag(_secondarybeamuse ? ed_BeamBelowModsSecondary : ed_BeamBelowMods);
4370
4371 InitializeData();
4372 }
4373
4374#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4379 void _SetEntryFlag(FCNoteEntry* pNoteEntry, bool state) override
4380 {
4381 pNoteEntry->SetStemDetailFlag(state);
4382 }
4383#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4384
4385 bool Load(ENTNUM entnum, twobyte inci) override
4386 {
4387 /* Work-around a Finale issue (at least in Fin2012): When
4388 * a load has failed of this type, the data is still
4389 * cleared. For this class, it will be disastrous. */
4390 EDTBeamMods tempbeammod;
4391 memcpy(&tempbeammod, &_beammod, sizeof(_beammod));
4392 bool returnval = __FCEntryDetail::Load(entnum, inci);
4393 if (!returnval) memcpy(&_beammod, &tempbeammod, sizeof(_beammod));
4394 return returnval;
4395 }
4396
4398 bool Save() override
4399 {
4400 _PreSaveSetup();
4401 return __FCEntryDetail::Save();
4402 }
4403
4405 bool SaveNew() override
4406 {
4407 _PreSaveSetup();
4408 return __FCEntryDetail::SaveNew();
4409 }
4410
4433 void UseUpStemData(bool useupstem)
4434 {
4435 if (_secondarybeamuse)
4436 {
4437 // Secondary beams:
4438 SetCustomTag(useupstem ? ed_BeamAboveModsSecondary : ed_BeamBelowModsSecondary);
4439 }
4440 else
4441 {
4442 // Primary beams:
4443 SetCustomTag(useupstem ? ed_BeamAboveMods : ed_BeamBelowMods);
4444 }
4445 _upstemuse = useupstem;
4446 }
4447
4449 void SetNoteEntry(FCNoteEntry* pEntry) override
4450 {
4451 if (pEntry)
4452 {
4453 bool stemup = pEntry->CalcStemUp();
4454 UseUpStemData(stemup);
4455 }
4457 }
4458
4479 void SetMode(twobyte mode)
4480 {
4481 _beammod.mode = mode;
4482 }
4483
4495 void SetLeftHorizontalOffset(twobyte offset)
4496 {
4497 _beammod.startHorizAdjust = offset;
4498 }
4499
4506 void SetRightHorizontalOffset(twobyte offset)
4507 {
4508 _beammod.endHorizAdjust = offset;
4509 }
4510
4515 void SetLeftVerticalOffset(twobyte offset)
4516 {
4517 _beammod.startVertAdjust = offset;
4518 }
4519
4526 void SetRightVerticalOffset(twobyte offset)
4527 {
4528 _beammod.endVertAdjust = offset;
4529 }
4530
4538 void SetThickness(twobyte thickness)
4539 {
4540 if (_secondarybeamuse) return;
4541 _beammod.beamWidth = thickness;
4542 }
4543
4550 {
4551 if (_secondarybeamuse) return;
4552 _beammod.beamWidth = -1;
4553 }
4554
4555#ifdef PDK_FRAMEWORK_PREFS
4560 void SetDefaultMode();
4561#endif
4562
4573 void SetBeamNumber(twobyte beamnumber)
4574 {
4575 if (!_secondarybeamuse) return;
4576 if (beamnumber <= 1) return;
4577 _secondarybeamnumber = beamnumber;
4578 twobyte duration = FCNoteEntry::NOTE_8TH;
4579 for (int i = 1; i < beamnumber; i++) duration /= 2;
4580 _beammod.secondaryBeamEdu = duration;
4581 }
4582
4588 {
4589 return _beammod.startHorizAdjust;
4590 }
4591
4597 {
4598 return _beammod.endHorizAdjust;
4599 }
4600
4606 {
4607 return _beammod.startVertAdjust;
4608 }
4609
4615 {
4616 return _beammod.endVertAdjust;
4617 }
4618
4630 twobyte GetMode() const { return _beammod.mode; }
4631
4638 twobyte GetBeamDuration() const
4639 {
4640 if (!_secondarybeamuse) return FCNoteEntry::EIGHTH_NOTE;
4641 return _beammod.secondaryBeamEdu;
4642 }
4643
4651 {
4652 twobyte duration = GetBeamDuration();
4653 if (duration == 0) return 0;
4654 if (duration > FCNoteEntry::EIGHTH_NOTE) return 0;
4655 twobyte retvalue = 1;
4656 TimeEdu32 tryvalue = FCNoteEntry::EIGHTH_NOTE;
4657 while (tryvalue)
4658 {
4659 if (tryvalue == duration) return retvalue;
4660 retvalue ++;
4661 tryvalue /= 2;
4662 }
4663 return 0;
4664 }
4665
4674 twobyte GetThickness() const
4675 {
4676 if (_secondarybeamuse) return -1;
4677 return _beammod.beamWidth;
4678 }
4679
4692 twobyte CalcLeftVerticalPos(twobyte default_separation)
4693 {
4694 if (!_secondarybeamuse) return 0;
4695 twobyte result = default_separation * (GetBeamNumber() - 1);
4696 if (_upstemuse) result = -result;
4697 result += GetLeftVerticalOffset();
4698 return result;
4699 }
4700
4713 twobyte CalcRightVerticalPos(twobyte default_separation)
4714 {
4715 if (!_secondarybeamuse) return 0;
4716 return CalcLeftVerticalPos(default_separation) + GetRightVerticalOffset();
4717 }
4718
4724 bool IsSecondaryBeam() { return _secondarybeamuse; }
4725
4731 bool IsUpStem() { return _upstemuse; }
4732
4744 bool LoadForBeamNumber(int beamnumber)
4745 {
4746 if (LoadFirst())
4747 {
4748 do {
4749 if (GetBeamNumber() == beamnumber)
4750 {
4751 SetBeamNumber(beamnumber);
4752 return true;
4753 }
4754 } while (LoadNext());
4755 InitializeData();
4756 }
4757 return false;
4758 }
4759
4760#ifdef PDK_FRAMEWORK_DEBUG
4761 void DebugDump() override
4762 {
4764 DebugOutInt("Beam Duration: ", GetBeamDuration());
4765 DebugOutInt("Beam Number: ", GetBeamNumber());
4766 DebugOutInt("mode: ", _beammod.mode);
4767 DebugOutInt("Left Vertical offset: ", GetLeftVerticalOffset());
4768 DebugOutInt("Right Vertical offset: ", GetRightVerticalOffset());
4769 DebugOutBlock(&_beammod, 0, sizeof(_beammod));
4770 }
4771#endif
4772};
4773
4774
4785{
4786#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4787 EDTPerformanceData _performancedata;
4788
4789protected:
4790 EXTAG Tag() const override { return ed_PerformanceData; }
4791 int DataSizeLoad() const override { return sizeof(EDTPerformanceData); }
4792 int DataSizeSave() const override { return sizeof(EDTPerformanceData); }
4793 void* Allocate() override { return (void*) &_performancedata; }
4794 EVERSION EnigmaVersion() const override { return FXT_VERSION_2K2_BASE; }
4795
4800 void CloneMemoryFrom(__FCBaseData* pSource) override
4801 {
4802 memcpy(&_performancedata, ((FCPerformanceMod*)pSource)->_GetPerformanceMod(), sizeof(_performancedata));
4803 _datablock = &_performancedata;
4804 _loadedsize = sizeof(_performancedata);
4805 }
4806
4807 __FCBaseData* CreateObject() override { return new FCPerformanceMod(); }
4808
4809#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4810public:
4811 const char* ClassName() const override { return "FCPerformanceMod"; }
4812 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_PERFORMANCEMOD; }
4813
4814#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4819 EDTPerformanceData* _GetPerformanceMod() { return &_performancedata; }
4820#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4821
4827 {
4828 _datablock = &_performancedata;
4829 memset(&_performancedata, 0, sizeof(_performancedata));
4830 _datablock = &_performancedata;
4831 _loadedsize = sizeof(_performancedata);
4832 }
4833
4838 void SetEndOffset(twobyte value)
4839 {
4840 _performancedata.enadd = value;
4841 }
4842
4847 void SetStartOffset(twobyte value)
4848 {
4849 _performancedata.stadd = value;
4850 }
4851
4858 void SetVelocityDelta(twobyte value)
4859 {
4860 _performancedata.velocity = value;
4861 }
4862
4868 void SetMidiAlter(twobyte value)
4869 {
4870 _performancedata.keyadd = value;
4871 }
4872
4877 twobyte GetEndOffset() const
4878 {
4879 return _performancedata.enadd;
4880 }
4881
4886 twobyte GetStartOffset() const
4887 {
4888 return _performancedata.stadd;
4889 }
4890
4896 twobyte GetMidiAlter() const
4897 {
4898 return _performancedata.keyadd;
4899 }
4900
4907 twobyte GetVelocityDelta() const
4908 {
4909 return _performancedata.velocity;
4910 }
4911
4917 void SetNoteID(twobyte id) override { _performancedata.noteID = id; }
4918
4919#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4920 bool _IsNoteIDMatch(void *pBuffer, twobyte id) override
4921 {
4922 return (((EDTPerformanceData*) pBuffer)->noteID == id);
4923 }
4924
4932 void _SetEntryFlagN(FCNote* pNote, bool state) override
4933 {
4934 pNote->_SetPerformanceDataEntryFlag(state);
4935 }
4936
4944 bool _GetEntryFlagN(FCNote* pNote) override
4945 {
4946 return pNote->_GetPerformanceDataEntryFlag();
4947 }
4948#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4949};
4950
4951
4987{
4988#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4989 bool _starttie;
4990 EDTTieMods _tiemod;
4991
4992protected:
4993 EXTAG Tag() const override { return GetCustomTag() ? GetCustomTag() : ed_TieModsStart; }
4994 int DataSizeLoad() const override { return sizeof(_tiemod); }
4995 int DataSizeSave() const override { return DataSizeLoad(); }
4996 void* Allocate() override { return (void*) &_tiemod; }
4997
5002 void CloneMemoryFrom(__FCBaseData* pSource) override
5003 {
5004 FCTieMod* pTieSource = (FCTieMod*) pSource;
5005 memcpy(&_tiemod, pTieSource->_GetTieMod(), sizeof(_tiemod));
5006 _datablock = &_tiemod;
5008 _starttie = pTieSource->IsStartTie();
5009 }
5010
5011 __FCBaseData* CreateObject() override
5012 {
5013 return new FCTieMod(_starttie ? TIEMODTYPE_TIESTART : TIEMODTYPE_TIEEND);
5014 }
5015
5016#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
5017public:
5018 const char* ClassName() const override { return "FCTieMod"; }
5019 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_TIEMOD; }
5020
5021#ifndef DOXYGEN_SHOULD_IGNORE_THIS
5026 EDTTieMods* _GetTieMod() { return &_tiemod; }
5027#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
5028
5041
5057
5073
5080{
5082 TIEMODCNCT_NONE = TIE_ENTCNCT_NONE,
5083
5085 TIEMODCNCT_ENTRYLEFT_NOTECENTER = TIE_ENTRYLEFT_NOTECENTER,
5086
5088 TIEMODCNCT_ENTRYRIGHT_NOTECENTER = TIE_ENTRYRIGHT_NOTECENTER,
5089
5091 TIEMODCNCT_NOTELEFT_NOTECENTER = TIE_NOTELEFT_NOTECENTER,
5092
5094 TIEMODCNCT_NOTERIGHT_NOTECENTER = TIE_NOTERIGHT_NOTECENTER,
5095
5097 TIEMODCNCT_NOTECENTER_NOTEBOTTOM = TIE_NOTECENTER_NOTEBOTTOM,
5098
5100 TIEMODCNCT_NOTECENTER_NOTETOP = TIE_NOTECENTER_NOTETOP,
5101
5103 TIEMODCNCT_DOTRIGHT_NOTECENTER = TIE_DOTRIGHT_NOTECENTER,
5104
5106 TIEMODCNCT_ACCILEFT_NOTECENTER = TIE_ACCILEFT_NOTECENTER,
5107
5109 TIEMODCNCT_ENTRYCENTER_NOTEBOTTOM = TIE_ENTRYCENTER_NOTEBOTTOM,
5110
5112 TIEMODCNCT_ENTRYCENTER_NOTETOP = TIE_ENTRYCENTER_NOTETOP,
5113
5115 TIEMODCNCT_NOTELEFT_NOTEBOTTOM = TIE_NOTELEFT_NOTEBOTTOM,
5116
5118 TIEMODCNCT_NOTERIGHT_NOTEBOTTOM = TIE_NOTERIGHT_NOTEBOTTOM,
5119
5121 TIEMODCNCT_NOTELEFT_NOTETOP = TIE_NOTELEFT_NOTETOP,
5122
5124 TIEMODCNCT_NOTERIGHT_NOTETOP = TIE_NOTERIGHT_NOTETOP,
5125
5127 TIEMODCNCT_SYSTEMEND = TIE_SYSTEMEND,
5128
5130 TIEMODCNCT_SYSTEMSTART = TIE_SYSTEMSTART
5132
5133 static_assert(TIEMODCNCT_SYSTEMSTART == (::TIE_NUM_CONNECTIONS-1), "TIEMOD_CONNECTION_CODES does not contain all connection codes in the PDK.");
5134
5135#ifndef DOXYGEN_SHOULD_IGNORE_THIS
5136
5137private:
5138 twobyte _Get3WayValue(const FLAG_16 field, const FLAG_16 localbit, const FLAG_16 onbit) const
5139 {
5140 if (! GetBitFlag(field, localbit))
5141 return TIEMODSEL_DEFAULT;
5142 if (GetBitFlag(field, onbit))
5143 return TIEMODSEL_ON;
5144 return TIEMODSEL_OFF;
5145 }
5146
5147 void _Set3WayValue(const twobyte value, FLAG_16 &field, const FLAG_16 localbit, const FLAG_16 onbit)
5148 {
5149 switch (value)
5150 {
5151 default:
5152 case TIEMODSEL_DEFAULT:
5153 Set16BitFlag(&field, localbit, false);
5154 Set16BitFlag(&field, TIEFLG_DOWN, false);
5155 break;
5156 case TIEMODSEL_ON:
5157 Set16BitFlag(&field, localbit, true);
5158 Set16BitFlag(&field, onbit, true);
5159 break;
5160 case TIEMODSEL_OFF:
5161 Set16BitFlag(&field, localbit, true);
5162 Set16BitFlag(&field, onbit, false);
5163 break;
5164 }
5165
5166 }
5167
5168 void _ActivatePlacementBits(FLAG_16 &epAdj, bool forTieOver, FLAG_16 connectionCode)
5169 {
5170 Set16BitFlag(&epAdj, TIEPT_ENDPTADJ_ON, true);
5171 epAdj &= ~TIEPT_CONTEXT_DIR_MASK;
5172 if (forTieOver)
5173 Set16BitFlag(&epAdj, TIEPT_CONTEXT_OVER, true);
5174 else
5175 Set16BitFlag(&epAdj, TIEPT_CONTEXT_UNDER, true);
5176 epAdj &= ~TIEPT_ENTCNCT_MASK;
5177 epAdj |= (connectionCode & TIEPT_ENTCNCT_MASK);
5178 }
5179public:
5180
5181#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
5182
5190#ifndef PDK_FRAMEWORK_LUAFRIENDLY
5192#else
5193 int
5194#endif
5195 tietype
5197 {
5198 memset(&_tiemod, 0, sizeof(_tiemod));
5199 _datablock = &_tiemod;
5201 _starttie = (tietype != TIEMODTYPE_TIEEND);
5202 SetCustomTag(_starttie ? ed_TieModsStart : ed_TieModsEnd);
5203 }
5204
5210 bool IsStartTie() const { return _starttie; }
5211
5216 bool IsStartPointActive() const { return GetBitFlag(_tiemod.stPtAdj, TIEPT_ENDPTADJ_ON); }
5217
5230 void ActivateStartPoint(bool fortieover,
5231#ifndef PDK_FRAMEWORK_LUAFRIENDLY
5233#else
5234 int
5235#endif
5236 connectioncode, Evpu16 hoffset, Evpu16 voffset)
5237 {
5238 _ActivatePlacementBits(_tiemod.stPtAdj, fortieover, connectioncode);
5239 _tiemod.xStart = hoffset;
5240 _tiemod.yStart = voffset;
5241 }
5242
5248 {
5249 ActivateStartPoint(false, TIEMODCNCT_NONE, 0, 0);
5250 _tiemod.stPtAdj = 0;
5251 }
5252
5257 bool IsEndPointActive() const { return GetBitFlag(_tiemod.enPtAdj, TIEPT_ENDPTADJ_ON); }
5258
5271 void ActivateEndPoint(bool fortieover,
5272#ifndef PDK_FRAMEWORK_LUAFRIENDLY
5274#else
5275 int
5276#endif
5277 connectioncode, Evpu16 hoffset, Evpu16 voffset)
5278 {
5279 _ActivatePlacementBits(_tiemod.enPtAdj, fortieover, connectioncode);
5280 _tiemod.xEnd = hoffset;
5281 _tiemod.yEnd = voffset;
5282 }
5283
5289 {
5290 ActivateEndPoint(false, TIEMODCNCT_NONE, 0, 0);
5291 _tiemod.enPtAdj = 0;
5292 }
5293
5294#ifdef PDK_FRAMEWORK_PREFS
5312#endif
5313
5318 bool IsContourActive() const { return GetBitFlag(_tiemod.cpFlag, TIECTLPT_ADJ_ON); }
5319
5330 void ActivateContour(twobyte insetleft, twobyte heightleft, twobyte insetright, twobyte heightright, bool fixedinset = false)
5331 {
5332 Set16BitFlag(&_tiemod.cpFlag, TIECTLPT_ADJ_ON, true);
5333 _tiemod.insetRatio1 = insetleft;
5334 _tiemod.height1 = heightleft;
5335 _tiemod.insetRatio2 = insetright;
5336 _tiemod.height2 = heightright;
5337 Set16BitFlag(&_tiemod.cpFlag, TIECTLPT_FIXED, fixedinset);
5338 }
5339
5345 {
5346 ActivateContour(0, 0, 0, 0);
5347 _tiemod.cpFlag = 0;
5348 }
5349
5357 {
5358 return IsStartPointActive() ? _tiemod.stPtAdj & TIEPT_ENTCNCT_MASK : TIEMODCNCT_NONE;
5359 }
5360
5369 twobyte GetStartVerticalPos() const { return IsStartPointActive() ? _tiemod.yStart : 0; }
5370
5379 twobyte GetStartHorizontalPos() const { return IsStartPointActive() ? _tiemod.xStart : 0; }
5380
5388 {
5389 return IsEndPointActive() ? _tiemod.enPtAdj & TIEPT_ENTCNCT_MASK : TIEMODCNCT_NONE;
5390 }
5391
5400 twobyte GetEndVerticalPos() const { return IsEndPointActive() ? _tiemod.yEnd : 0; }
5401
5410 twobyte GetEndHorizontalPos() const { return IsEndPointActive() ? _tiemod.xEnd : 0; }
5411
5418 bool GetFixedInsetStyle() const { return IsContourActive() ? GetBitFlag(_tiemod.cpFlag, TIECTLPT_FIXED) : false; }
5419
5428 twobyte GetLeftHeight() const { return IsContourActive() ? _tiemod.height1 : 0; }
5429
5438 twobyte GetRightHeight() const { return IsContourActive() ? _tiemod.height2 : 0; }
5439
5451 twobyte GetLeftInset() const { return IsContourActive() ? _tiemod.insetRatio1 : 0; }
5452
5463 twobyte GetRightInset() const { return IsContourActive() ? _tiemod.insetRatio2 : 0; }
5464
5471 twobyte GetTieDirection() const
5472 {
5473 if (! GetBitFlag(_tiemod.flag, TIEFLG_FREEZE))
5474 return TIEMODDIR_AUTOMATIC;
5475 if (! GetBitFlag(_tiemod.flag, TIEFLG_DOWN))
5476 return TIEMODDIR_OVER;
5477 return TIEMODDIR_UNDER;
5478 }
5479
5486 twobyte GetBreakForTimeSignature() const { return _Get3WayValue(_tiemod.flag, TIEFLG_BREAK_TIME_LOCAL, TIEFLG_BREAK_TIME_ON); }
5487
5494 twobyte GetBreakForKeySignature() const { return _Get3WayValue(_tiemod.flag, TIEFLG_KEY_LOCAL, TIEFLG_BREAK_KEY_ON); }
5495
5505 twobyte GetOuterPlacement() const { return _Get3WayValue(_tiemod.tiePlacementOpts, TIE_PLC_OUTER_LOCAL, TIE_PLC_OUTER_ON); }
5506
5513 bool GetAvoidStaffLines() const { return ! GetBitFlag(_tiemod.flag, TIEFLG_NO_SPECIAL_ARC); }
5514
5523 void SetStartVerticalPos(twobyte pos) { if (IsStartPointActive()) _tiemod.yStart = pos; }
5524
5533 void SetStartHorizontalPos(twobyte pos) { if (IsStartPointActive()) _tiemod.xStart = pos; }
5534
5543 void SetEndVerticalPos(twobyte pos) { if (IsEndPointActive()) _tiemod.yEnd = pos; }
5544
5553 void SetEndHorizontalPos(twobyte pos) { if (IsEndPointActive()) _tiemod.xEnd = pos; }
5554
5561 void SetFixedInsetStyle(bool value) { if (IsContourActive()) Set16BitFlag(&_tiemod.cpFlag, TIECTLPT_FIXED, value); }
5562
5569 void SetLeftHeight(twobyte value) { if (IsContourActive()) _tiemod.height1 = value; }
5570
5577 void SetRightHeight(twobyte value) { if (IsContourActive()) _tiemod.height2 = value; }
5578
5587 void SetLeftInset(twobyte value) { if (IsContourActive()) _tiemod.insetRatio1 = value; }
5588
5597 void SetRightInset(twobyte value) { if (IsContourActive()) _tiemod.insetRatio2 = value; }
5598
5605 void SetTieDirection(twobyte value)
5606 {
5607 switch (value)
5608 {
5609 default:
5611 Set16BitFlag(&_tiemod.flag, TIEFLG_FREEZE, false);
5612 Set16BitFlag(&_tiemod.flag, TIEFLG_DOWN, false);
5613 break;
5614 case TIEMODDIR_OVER:
5615 Set16BitFlag(&_tiemod.flag, TIEFLG_FREEZE, true);
5616 Set16BitFlag(&_tiemod.flag, TIEFLG_DOWN, false);
5617 break;
5618 case TIEMODDIR_UNDER:
5619 Set16BitFlag(&_tiemod.flag, TIEFLG_FREEZE, true);
5620 Set16BitFlag(&_tiemod.flag, TIEFLG_DOWN, true);
5621 break;
5622 }
5623 }
5624
5631 void SetBreakForTimeSignature(twobyte value) { _Set3WayValue(value, _tiemod.flag, TIEFLG_BREAK_TIME_LOCAL, TIEFLG_BREAK_TIME_ON); }
5632
5639 void SetBreakForKeySignature(twobyte value) { _Set3WayValue(value, _tiemod.flag, TIEFLG_KEY_LOCAL, TIEFLG_BREAK_KEY_ON); }
5640
5649 void SetOuterPlacement(twobyte value) { _Set3WayValue(value, _tiemod.tiePlacementOpts, TIE_PLC_OUTER_LOCAL, TIE_PLC_OUTER_ON); }
5650
5655 void SetAvoidStaffLines(bool value) { Set16BitFlag(&_tiemod.flag, TIEFLG_NO_SPECIAL_ARC, !value); }
5656
5662 void SetNoteID(twobyte id) override { _tiemod.noteID = id; }
5663
5664#ifndef DOXYGEN_SHOULD_IGNORE_THIS
5665 bool _IsNoteIDMatch(void *pBuffer, twobyte id) override
5666 {
5667 return (((EDTTieMods*) pBuffer)->noteID == id);
5668 }
5669
5674 void _SetEntryFlagN(FCNote* pNote, bool state) override
5675 {
5676 pNote->_SetSpecialAltsEntryFlag(state);
5677 }
5678
5683 bool _GetEntryFlagN(FCNote* pNote) override
5684 {
5685 return pNote->_GetSpecialAltsEntryFlag();
5686 }
5687#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
5688};
5689
5696{
5697#ifndef DOXYGEN_SHOULD_IGNORE_THIS
5698 EDTBrokenBeamMods _brokenbeammod;
5699
5700protected:
5701 EXTAG Tag() const override { return ed_BrokenBeamMods; }
5702 int DataSizeLoad() const override { return sizeof(EDTBrokenBeamMods); }
5703 int DataSizeSave() const override { return sizeof(EDTBrokenBeamMods); }
5704 void* Allocate() override { return (void*) &_brokenbeammod; }
5705
5710 void CloneMemoryFrom(__FCBaseData* pSource) override
5711 {
5712 memcpy(&_brokenbeammod, ((FCBrokenBeamMod*)pSource)->_GetBrokenBeamMod(), sizeof(_brokenbeammod));
5713 _datablock = &_brokenbeammod;
5714 _loadedsize = sizeof(_brokenbeammod);
5715 }
5716
5717 __FCBaseData* CreateObject() override { return new FCBrokenBeamMod(); }
5718
5719#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
5720public:
5721 const char* ClassName() const override { return "FCBrokenBeamMod"; }
5722 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_BROKENBEAMMOD; }
5723
5724#ifndef DOXYGEN_SHOULD_IGNORE_THIS
5729 EDTBrokenBeamMods* _GetBrokenBeamMod() { return &_brokenbeammod; }
5730#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
5731
5737 {
5738 _datablock = &_brokenbeammod;
5739 memset(&_brokenbeammod, 0, sizeof(_brokenbeammod));
5740 }
5741
5742#ifndef DOXYGEN_SHOULD_IGNORE_THIS
5747 void _SetEntryFlag(FCNoteEntry* pNoteEntry, bool state) override
5748 {
5749 pNoteEntry->SetStemDetailFlag(state);
5750 }
5751#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
5752
5753
5761 void SetLeftDirection(bool leftdirection)
5762 {
5763 // The PDK treats beamdir as a bitwise value that allows each broken beam to be changed separately,
5764 // however, the Finale UI does not support this. Hence, for now this is a boolean function.
5765 _brokenbeammod.beamdir = leftdirection ? -1 : 0;
5766 }
5767
5772 bool GetLeftDirection() const
5773 {
5774 // The PDK treats beamdir as a bitwise value that allows each broken beam to be changed separately,
5775 // however, the Finale UI does not support this. Hence, for now this is a boolean function.
5776 return _brokenbeammod.beamdir != 0;
5777 }
5778};
5779
5780
5781
5782
5783
5792{
5793#ifndef DOXYGEN_SHOULD_IGNORE_THIS
5794 EDTTablatureMods _tablaturemod;
5795
5796protected:
5797 EXTAG Tag() const override { return ed_TablatureMods; }
5798 int DataSizeLoad() const override { return sizeof(EDTTablatureMods); }
5799 int DataSizeSave() const override { return sizeof(EDTTablatureMods); }
5800 void* Allocate() override { return (void*) &_tablaturemod; }
5801
5806 void CloneMemoryFrom(__FCBaseData* pSource) override
5807 {
5808 memcpy(&_tablaturemod, ((FCTablatureNoteMod*)pSource)->_GetTablatureMod(), sizeof(_tablaturemod));
5809 _datablock = &_tablaturemod;
5810 _loadedsize = sizeof(_tablaturemod);
5811 }
5812
5813 __FCBaseData* CreateObject() override { return new FCTablatureNoteMod(); }
5814
5815#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
5816public:
5817 const char* ClassName() const override { return "FCTablatureNoteMod"; }
5818 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_TABLATURENOTEMOD; }
5819
5820#ifndef DOXYGEN_SHOULD_IGNORE_THIS
5825 EDTTablatureMods* _GetTablatureMod() { return &_tablaturemod; }
5826#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
5827
5830 {
5831 memset(&_tablaturemod, 0, sizeof(_tablaturemod));
5832 _datablock = &_tablaturemod;
5833 _loadedsize = sizeof(_tablaturemod);
5834 _tablaturemod.stringNumber = 1;
5835 }
5836
5843 twobyte GetStringNumber() const
5844 {
5845 return _tablaturemod.stringNumber;
5846 }
5847
5855 void SetStringNumber(twobyte value)
5856 {
5857 if (value < 1) return;
5858 if (value > 24) return;
5859 _tablaturemod.stringNumber = value;
5860 }
5861
5867 void SetNoteID(twobyte id) override { _tablaturemod.noteID = id; }
5868
5869
5870#ifndef DOXYGEN_SHOULD_IGNORE_THIS
5871 bool _IsNoteIDMatch(void *pBuffer, twobyte id) override
5872 {
5873 return (((EDTTablatureMods*) pBuffer)->noteID == id);
5874 }
5875
5880 void _SetEntryFlagN(FCNote* pNote, bool state) override
5881 {
5882 pNote->_SetNoteDetailEntryFlag(state);
5883 }
5884
5889 bool _GetEntryFlagN(FCNote* pNote) override
5890 {
5891 return pNote->_GetNoteDetailEntryFlag();
5892 }
5893#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
5894};
5895
5896
5897#endif // #ifdef PDK_FRAMEWORK_ENTRIES
5898
5899
5900#endif /* FF_ENTRYDETAILS_H */
5901
Base class for all data-related classes (that handles Finale data).
Definition ff_base.h:676
virtual twobyte CalcLastInci()
For internal use only!
Definition ff_base.h:755
EXTAG GetCustomTag() const
Returns the custom Enigma tag, if any.
Definition ff_base.h:870
virtual __FCBaseData * CreateObject()=0
Creates a new instance of the object.
EDataID _dataid
The EdataID for the last loaded/saved object.
Definition ff_base.h:712
void SetCustomTag(EXTAG tag)
Sets the custom Enigma tag, for classes that support multiple Enigma tags.
Definition ff_base.h:882
void * _datablock
Pointer to the object's data block, the meaning is implementation-specific for each derived subclass.
Definition ff_base.h:695
virtual EVERSION EnigmaVersion() const
The Enigma version for save/load/create/delete operations.
Definition ff_base.h:812
virtual int DataSizeLoad() const =0
Returns the data size for the data structure that should be loaded.
virtual int DataSizeSave() const
Returns the data size for the data structure that should be saved or created.
Definition finaleframework.cpp:916
virtual EXTAG Tag() const =0
The Enigma tag for the derived class.
virtual bool DeleteData()
Deletes the associated data from Finale's database. Be careful when deleting multiple objects.
Definition finaleframework.cpp:911
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_base.h:1006
virtual void CloneMemoryFrom(__FCBaseData *pSource)
Definition finaleframework.cpp:838
virtual bool Save()
Saves the currently loaded to its current location.
Definition finaleframework.cpp:951
virtual void * Allocate()=0
int _loadedsize
Loaded size of the data block for a loaded object, in bytes. Since the datablock is implementation-sp...
Definition ff_base.h:708
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
PDKFRAMEWORK_CLASSID
Constants for the GetClassID method.
Definition ff_base.h:84
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
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
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
static void DebugOutBlock(const void *pBuffer, int startoffset, int size)
Static method that outputs a memory block for debugging purposes. Eight bytes per line will appear (a...
Definition finaleframework.cpp:458
Base class that provides the basic functionality for entry detail data (such as Special Tools modific...
Definition ff_entrydetails.h:27
virtual bool SaveNew()
Saves a new inci and sets the correct flag in the associated note entry.
Definition finaleframework.cpp:20636
virtual bool Load(ENTNUM entnum, twobyte inci)
Loads the data at the given entry number and inci.
Definition finaleframework.cpp:20594
virtual void SetNoteEntry(FCNoteEntry *pEntry)
Maps the data to an entry.
Definition ff_entrydetails.h:114
bool LoadFirst() override
Overloaded version of LoadFirst that will load the first inci for the entry. SetNoteEntry must be cal...
Definition ff_entrydetails.h:99
bool SaveAs(ENTNUM entnum, twobyte inci)
Saves the data at the given entry number and inci.
Definition finaleframework.cpp:20612
twobyte GetItemInci() const
Returns the inci number for the stored object.
Definition ff_entrydetails.h:134
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:65
__FCEntryDetail()
The constructor.
Definition ff_entrydetails.h:59
FCNoteEntry * GetNoteEntry()
Returns a pointer to the mapped note entry.
Definition ff_entrydetails.h:128
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_entrydetails.h:186
bool Reload() override
Overridden Reload() method, that supports complex (mixed) data.
Definition finaleframework.cpp:20600
ENTNUM GetItemEntryNumber() const
Returns the note entry number for the stored object.
Definition ff_entrydetails.h:140
void SetEntnumAndInci(ENTNUM entnum, twobyte inci)
Sets the entry number reference and inci for the object.
Definition ff_entrydetails.h:68
bool LoadNext() override
Overloaded version of LoadNext.
Definition finaleframework.cpp:20621
Base class that provide entry details that are based on noteIDs, such as notehead modifications,...
Definition ff_entrydetails.h:206
__FCEntryDetailNoteID()
The constructor.
Definition ff_entrydetails.h:224
bool LoadAt(FCNote *pNote)
Tries to find and load the note entry modifications based on the note ID.
Definition finaleframework.cpp:20816
bool EraseAt(FCNote *pNote)
Deletes the note entry modifications for a slot and adjusts the flag in the associated note entry.
Definition finaleframework.cpp:20825
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:226
bool SaveNew() override
Overridden method for SaveNew()
Definition finaleframework.cpp:20841
bool SaveAt(FCNote *pNote)
Saves the note entry modifications in a slot and sets the correct flag in the associated note entry.
Definition finaleframework.cpp:20788
The base class for all lyrics text classes.
Definition ff_text.h:384
Class for acciental modifications (as in Finale's Special Tools).
Definition ff_entrydetails.h:3559
eUniChar32 GetCustomChar() const
Returns the custom accidental symbol, it any.
Definition ff_entrydetails.h:3740
twobyte GetVerticalPos() const
Returns the vertical position for the accidental.
Definition ff_entrydetails.h:3718
void SetUseCustomVerticalPos(bool status)
Marks if a custom vertical position should be used for the accidental or not.
Definition ff_entrydetails.h:3890
void ClearChar()
Clears the font character for the accidental to use the default accidental character.
Definition ff_entrydetails.h:4047
bool GetUseCustomChar() const
Returns true if there's a custom accidental symbol.
Definition ff_entrydetails.h:3752
void SetNoteID(twobyte id) override
Sets the note ID for the notehead, so it maps to the note.
Definition ff_entrydetails.h:4064
FCAccidentalMod()
The constructor.
Definition ff_entrydetails.h:3682
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:3665
twobyte GetFontSize() const
Returns the custom font size.
Definition ff_entrydetails.h:3820
bool GetUseCustomFont() const
Returns if a custom font is used for the accidental or not.
Definition ff_entrydetails.h:3775
void SetFontInfo(FCFontInfo *pInfo)
Sets all the font info (name, style, size) to the info available in the FCFontInfo object.
Definition ff_entrydetails.h:4010
const eUniChar16 * GetFontNameUTF16() const
Gets the font name for the accidental.
Definition ff_entrydetails.h:3804
void SetFontNameUTF16(const eUniChar16 *pszFont)
Sets the font name for the accidental.
Definition ff_entrydetails.h:3968
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:3664
bool GetFontInfo(FCFontInfo *pInfo)
Gets all the font info (name, style, size) into the FCFontInfo object.
Definition ff_entrydetails.h:3845
void SetUseDefaultFont(bool status)
The reverse functionality of FCAccidentalMod::SetUseCustomFont.
Definition ff_entrydetails.h:3937
void SetHorizontalPos(twobyte value)
Sets the horizontal position for the accidental.
Definition ff_entrydetails.h:3859
void SetVerticalPos(twobyte value)
Sets the vertical position for the accidental.
Definition ff_entrydetails.h:3875
void SetResize(twobyte value)
Sets the accidental resize in percent.
Definition ff_entrydetails.h:3913
void SetFontName(const char *pszFont)
Sets the font name for the accidental.
Definition ff_entrydetails.h:3951
twobyte GetVerticalPosIfPossible()
Returns the vertical position for the accidental, but only if the value has been enabled for Finale.
Definition ff_entrydetails.h:3708
void SetFontSize(twobyte fontsize)
Sets the font size for the accidental.
Definition ff_entrydetails.h:3987
void SetFontStyle(FCFontInfo *pInfo)
Sets the font style only (such as italics, bold, etc), based on the style info in the FCFontInfo obje...
Definition ff_entrydetails.h:3998
twobyte GetResize() const
Returns the accidental resize in percent.
Definition ff_entrydetails.h:3766
bool GetUseCustomVerticalPos() const
Returns true if vertical position can be set for the accidental.
Definition ff_entrydetails.h:3727
const char * GetFontName() const
Gets the font name for the accidental.
Definition ff_entrydetails.h:3788
void SetUseCustomFont(bool status)
Marks if a custom font should be used for the accidental or not.
Definition ff_entrydetails.h:3926
void SetCustomChar(eUniChar32 ch)
Sets the font character for the accidental.
Definition ff_entrydetails.h:4029
void SetUseDefaultVerticalPos(bool status)
Clears and uses the default vertical positioning.
Definition ff_entrydetails.h:3902
bool GetFontStyle(FCFontInfo *pInfo)
Gets the font style into the FCFontInfo object.
Definition ff_entrydetails.h:3832
twobyte GetHorizontalPos() const
Returns the horizontal position for the accidental.
Definition ff_entrydetails.h:3697
The class for an articulation definition. On Finale 2012 and above, this class supports the Unicode c...
Definition ff_other.h:12287
Class for attaching an articulation definition to an entry.
Definition ff_entrydetails.h:1839
EXTAG Tag() const override
The Enigma tag for the derived class.
Definition ff_entrydetails.h:1868
PLACEMENTMODE
The settings for flipped, above, below.
Definition ff_entrydetails.h:1876
FCArticulationDef * CreateArticulationDef()
Creates a articulation definition object for the articulation.
Definition finaleframework.cpp:21163
Evpu16 GetVerticalCopyToPos() const
Returns the point to which a cloned mark extends vertically, measured from the lowest note.
Definition ff_entrydetails.h:2080
bool CalcMetricPos(FCPoint *pPoint)
Calculate the metric position for an articulation.
Definition finaleframework.cpp:21174
bool GetVisible() const
Returns the visibility state of the articulation.
Definition finaleframework.cpp:21069
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:1870
PLACEMENTMODE GetPlacementMode() const
Gets the setting for where the articulation should be placed compared to the note entry.
Definition finaleframework.cpp:21121
void SetArticulationDef(FCArticulationDef *pDef)
Assigns an articulation definition to the articulation instance.
Definition finaleframework.cpp:21056
STACKINGMODE
The settings for stacking for this assignment.
Definition ff_entrydetails.h:1886
void SetStackingMode(STACKINGMODE value)
Sets the stackable state of the articulation.
Definition finaleframework.cpp:21101
void ResetPos(FCArticulationDef *pDef)
Resets the articulation positioning based on the articulation definition. This method does not suppor...
Definition finaleframework.cpp:21247
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_entrydetails.h:2134
STACKINGMODE GetStackingMode() const
Returns the stacking mode of the articulation.
Definition finaleframework.cpp:21091
Evpu16 GetVerticalPos() const
Returns the vertical position.
Definition ff_entrydetails.h:2073
void SetHorizontalPos(Evpu16 pos)
Sets the horizontal position.
Definition ff_entrydetails.h:1943
twobyte GetID() const
Returns the (1-based) articulation definition ID.
Definition ff_entrydetails.h:2090
void SetPlacementMode(PLACEMENTMODE value)
Sets where the articulation should be placed compared to the note entry.
Definition finaleframework.cpp:21133
Evpu16 GetHorizontalPos() const
Returns the horizontal position.
Definition ff_entrydetails.h:2060
Evpu16 GetHorizontalCopyToPos() const
Returns the point to which a cloned mark extends horizontal, measured from GetHorizontalPos.
Definition ff_entrydetails.h:2066
bool CalcFlippedSymbolUsed()
Returns true if the flipped version of the articulation is used (based on the entry metrics).
Definition finaleframework.cpp:21207
void SetVerticalCopyToPos(Evpu16 pos)
Sets the point to which a cloned mark extends vertically, measured from the lowest note.
Definition ff_entrydetails.h:1971
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:1869
void SetID(CMPER cmper)
Sets the (1-based) articulation definition ID.
Definition ff_entrydetails.h:1936
void SetVerticalPos(Evpu16 pos)
Sets the vertical position.
Definition ff_entrydetails.h:1962
void SetHorizontalCopyToPos(Evpu16 pos)
Sets the point to which a cloned mark extends horizontally, measured from GetHorizontalPos.
Definition ff_entrydetails.h:1953
void SetVisible(bool state)
Sets the visibility state of the articulation.
Definition finaleframework.cpp:21078
FCArticulation()
The constructor.
Definition finaleframework.cpp:21028
Class for beam extensions (in Finale's Special Tools).
Definition ff_entrydetails.h:1410
FCBeamExtensionMod()
The constructor.
Definition ff_entrydetails.h:1454
void SetExtendAll(bool value)
Sets if all beams should extend or not.
Definition ff_entrydetails.h:1554
void SetExtend64th(bool state)
Sets if the 64th note beam should extend or not.
Definition ff_entrydetails.h:1640
void SetExtend(int beamindex, bool value)
Sets if a beam should be extended.
Definition ff_entrydetails.h:1531
bool GetExtend256th() const
Returns if the 256th note beam should extend or not.
Definition ff_entrydetails.h:1667
void SetExtend8th(bool state)
Sets if the 16th note beam should extend or not.
Definition ff_entrydetails.h:1586
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:1440
void SetRightAdjustment(Evpu16 adjust)
Sets the right-side adjustment,.
Definition ff_entrydetails.h:1516
void SetLeftAdjustment(Evpu16 adjust)
Sets the left-side adjustment,.
Definition ff_entrydetails.h:1504
Evpu16 GetRightAdjustment() const
Gets the right-side adjustment,.
Definition ff_entrydetails.h:1522
void SetExtend256th(bool state)
Sets if the 256th note beam should extend or not.
Definition ff_entrydetails.h:1676
bool GetExtend32nd() const
Returns if the 32nd note beam should extend or not.
Definition ff_entrydetails.h:1613
void SetExtend16th(bool state)
Sets if the 16th note beam should extend or not.
Definition ff_entrydetails.h:1604
bool GetExtend16th() const
Returns if the 16th note beam should extend or not.
Definition ff_entrydetails.h:1595
void SetExtend128th(bool state)
Sets if the 128th note beam should extend or not.
Definition ff_entrydetails.h:1658
bool GetExtend128th() const
Returns if the 128th note beam should extend or not.
Definition ff_entrydetails.h:1649
bool GetExtend64th() const
Returns if the 64th note beam should extend or not.
Definition ff_entrydetails.h:1631
Evpu16 GetLeftAdjustment() const
Gets the left-side adjustment,.
Definition ff_entrydetails.h:1510
void SetNoteEntry(FCNoteEntry *pEntry) override
Overridden method to assign a note entry with the data.
Definition ff_entrydetails.h:1490
void SetExtend32nd(bool state)
Sets if the 32nd note beam should extend or not.
Definition ff_entrydetails.h:1622
bool GetExtend(int beamindex) const
Returns true if the beam should extend.
Definition ff_entrydetails.h:1565
bool GetExtend8th() const
Returns if the 16th note beam should extend or not.
Definition ff_entrydetails.h:1577
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:1439
void UseUpStemData(bool useupstem)
Sets if upstem or downstem data should be loaded/saved. Finale stores upstem and downstem data in sep...
Definition ff_entrydetails.h:1483
Class for custom beam adjustments (in Finale's Special Tools).
Definition ff_entrydetails.h:4279
void SetRightVerticalOffset(twobyte offset)
Sets the vertical right-side offset.
Definition ff_entrydetails.h:4526
twobyte GetThickness() const
Returns the beam thickness. This can ONLY be set for primary beam data.
Definition ff_entrydetails.h:4674
void SetNoteEntry(FCNoteEntry *pEntry) override
Overridden method to assign a note entry with the data.
Definition ff_entrydetails.h:4449
twobyte GetRightHorizontalOffset() const
Returns the horizontal right-side offset.
Definition ff_entrydetails.h:4596
twobyte GetMode() const
Returns the Beaming Style mode where the beam data will be "active". This mode is controlled by Docum...
Definition ff_entrydetails.h:4630
twobyte GetRightVerticalOffset() const
Gets the vertical right-side offset.
Definition ff_entrydetails.h:4614
void SetThickness(twobyte thickness)
Sets the beam thickness. This can ONLY be set for primary beam data.
Definition ff_entrydetails.h:4538
void SetLeftVerticalOffset(twobyte offset)
Sets the vertical left-side offset.
Definition ff_entrydetails.h:4515
void SetDefaultMode()
Sets the beaming mode of the beam to document's default.
Definition finaleframework.cpp:20978
twobyte GetLeftHorizontalOffset() const
Returns the horizontal left-side offset.
Definition ff_entrydetails.h:4587
void SetLeftHorizontalOffset(twobyte offset)
Sets the horizontal left-side offset.
Definition ff_entrydetails.h:4495
void SetMode(twobyte mode)
Sets the Beaming Style mode where the beam data will be "active". This mode is controlled by Document...
Definition ff_entrydetails.h:4479
bool Load(ENTNUM entnum, twobyte inci) override
Loads the data at the given entry number and inci.
Definition ff_entrydetails.h:4385
twobyte CalcRightVerticalPos(twobyte default_separation)
Calculates the secondary beam's vertical right position compared to the primary beam's vertical right...
Definition ff_entrydetails.h:4713
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:4342
bool IsUpStem()
Returns true if the data is connected to up-stem data, otherwise it's connected to down-stem data.
Definition ff_entrydetails.h:4731
twobyte GetLeftVerticalOffset() const
Returns the vertical left-side offset.
Definition ff_entrydetails.h:4605
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:4341
bool Save() override
Overridden Save() method for FCBeamMod.
Definition ff_entrydetails.h:4398
void SetDefaultBeamThickness()
Sets the default (100%) beam thickness. This can ONLY be set for primary beam data.
Definition ff_entrydetails.h:4549
void SetBeamNumber(twobyte beamnumber)
Sets the 1-based beam that the data is connected to. Don't change this for loaded data.
Definition ff_entrydetails.h:4573
twobyte CalcLeftVerticalPos(twobyte default_separation)
Calculates the secondary beam's vertical left position compared to the primary beam's vertical left p...
Definition ff_entrydetails.h:4692
FCBeamMod(bool secondarybeam)
The constructor.
Definition ff_entrydetails.h:4361
bool LoadForBeamNumber(int beamnumber)
Loads the data for the specified 1-based beam number.
Definition ff_entrydetails.h:4744
twobyte GetBeamDuration() const
Gets the duration (in EDUs) of the beam.
Definition ff_entrydetails.h:4638
void SetRightHorizontalOffset(twobyte offset)
Sets the horizontal right-side offset.
Definition ff_entrydetails.h:4506
void UseUpStemData(bool useupstem)
Sets if upstem or downstem data should be loaded/saved. Finale stores upstem and downstem data in sep...
Definition ff_entrydetails.h:4433
twobyte GetBeamNumber()
Returns the 1-based number of the beam. 1 is the 8th-note beam.
Definition ff_entrydetails.h:4650
bool IsSecondaryBeam()
Returns true if the data is connected to a secondary beam, otherwise it's primary beam data.
Definition ff_entrydetails.h:4724
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_entrydetails.h:4761
bool SaveNew() override
Overridden SaveNew() method for FCBeamMod.
Definition ff_entrydetails.h:4405
Class for manually broken beam adjustments (in Finale's Special Tools).
Definition ff_entrydetails.h:5696
FCBrokenBeamMod()
The constructor.
Definition ff_entrydetails.h:5736
bool GetLeftDirection() const
Gets the direction of the broken beam.
Definition ff_entrydetails.h:5772
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:5721
void SetLeftDirection(bool leftdirection)
Sets the direction of the broken beam.
Definition ff_entrydetails.h:5761
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:5722
The class for a chorus syllable.
Definition ff_entrydetails.h:3222
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:3226
EXTAG Tag() const override
The Enigma tag for the derived class.
bool IsChorus() const override
Returns true if the syllable object is a chorus syllable.
Definition ff_entrydetails.h:3228
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:3227
Class that specifies the cross-staff connection for a note.
Definition ff_entrydetails.h:1087
twobyte GetStaff() const
Returns the cross staff connected with the note.
Definition ff_entrydetails.h:1140
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:1113
FCCrossStaffMod()
The constructor.
Definition ff_entrydetails.h:1127
void SetStaff(eStaff staff)
Sets the cross staff connected with the note.
Definition ff_entrydetails.h:1148
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:1112
void SetNoteID(twobyte id) override
Sets the note ID for the cross staff note, so it maps to the note object.
Definition ff_entrydetails.h:1155
Class for custom stem shapes (in Finale's Special Tools). The data is connected to either an upstem o...
Definition ff_entrydetails.h:4177
twobyte GetShapeID() const
Returns the shape ID for the stem. If this value is zero, the stem is hidden.
Definition ff_entrydetails.h:4248
void UseUpStemData(bool useupstem)
Sets if beamed or non-beamed data should be loaded/saved.
Definition ff_entrydetails.h:4242
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:4204
void SetShapeID(CMPER theid)
Sets the shape ID for the stem. If this value is zero, the stem is hidden.
Definition ff_entrydetails.h:4254
FCCustomStemMod()
The constructor.
Definition ff_entrydetails.h:4219
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:4205
Class with adjustments to the augmentation dots (in Finale's Special Tools).
Definition ff_entrydetails.h:940
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:966
void SetInterDotSpacing(twobyte space)
Sets the inter-dot spacing.
Definition ff_entrydetails.h:1030
bool LoadRestDotAt(FCNoteEntry *pEntry)
Tries to load a rest dot with the rest ID.
Definition finaleframework.cpp:20940
void SetVerticalPos(twobyte pos)
Sets the vertical position of the dot.
Definition ff_entrydetails.h:1017
twobyte GetHorizontalPos() const
Gets the vertical position of the dot.
Definition ff_entrydetails.h:993
twobyte GetInterDotSpacing() const
Returns the inter-dot spacing.
Definition ff_entrydetails.h:1024
twobyte GetVerticalPos() const
Gets the vertical position of the dot.
Definition ff_entrydetails.h:1001
void SetNoteID(twobyte id) override
Sets the note ID for the dot, so it maps to the note.
Definition ff_entrydetails.h:1037
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:965
void SetHorizontalPos(twobyte pos)
Sets the vertical position of the dot.
Definition ff_entrydetails.h:1009
bool SaveRestDotAt(FCNoteEntry *pEntry)
Saves a rest dot with the rest ID.
Definition finaleframework.cpp:20948
FCDotMod()
The constructor.
Definition ff_entrydetails.h:980
Class for (what it seems) the sole purpose of note entry resize.
Definition ff_entrydetails.h:3459
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_entrydetails.h:3542
void SetResize(twobyte value)
Sets the note entry resize value in percent.
Definition ff_entrydetails.h:3524
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:3485
FCEntryAlterMod()
The constructor.
Definition ff_entrydetails.h:3500
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:3484
twobyte GetResize() const
Returns the note entry resize value in percent.
Definition ff_entrydetails.h:3535
Class for document-independent font information.
Definition ff_base.h:1138
void SetNameByID(EFONTID id)
Sets the font name by using the document's internal Enigma font ID.
Definition finaleframework.cpp:3650
void SetSize(int fontsize)
Sets the font size as an integer value.
Definition ff_base.h:1546
FLAG_16 GetEnigmaStyles() const
Gets the font style as standard Enigma bit storage.
Definition ff_base.h:1358
int GetSize() const
Returns the font size as an integer number.
Definition ff_base.h:1289
void SetEnigmaStyles(FLAG_16 fontstyles)
Sets the font style as standard Enigma bit storage.
Definition ff_base.h:1469
EFONTID GetIDByName() const
Gets the internal Enigma font ID for the current document by searching for the font name....
Definition finaleframework.cpp:3558
Encapsulates a note entry from an owner class (for example FCNoteEntryCell, FCNoteEntryLayer) class.
Definition ff_noteframe.h:940
void SetStemDetailFlag(bool state)
Sets the flag state for stem detail records.
Definition ff_noteframe.h:1670
ENTNUM GetEntryNumber() const
Returns the internal entry number (ID) for the note entry.
Definition ff_noteframe.h:1319
void SetTupletStartFlag(bool state)
Sets the flag that marks that a tuplet starts on the entry.
Definition ff_noteframe.h:1656
void SetBeamExtensionFlag(bool state)
Sets the flag state for beam extension detail records.
Definition ff_noteframe.h:1686
void SetSecondaryBeamFlag(bool state)
Sets the flag state for secondary beam detail records.
Definition ff_noteframe.h:1678
bool CalcStemUp()
Returns the direction of the beam.
Definition finaleframework.cpp:17999
void SetArticulationFlag(bool state)
Sets the flag that marks that an articulation is attached to the entry.
Definition ff_noteframe.h:1644
void SetLyricFlag(bool state)
Sets the flag that marks that an entry has syllable attached to it.
Definition ff_noteframe.h:1662
void SetNoteDetailFlag(bool state)
Sets the flag state for note detail records.
Definition ff_noteframe.h:1620
Encapsulates one note in a note entry (from the FCNoteEntry class).
Definition ff_noteframe.h:29
void SetCrossStaff(bool state)
Sets the cross staff state for the note.
Definition ff_noteframe.h:471
Class for notehead modifications (as in Finale's Special Tools).
Definition ff_entrydetails.h:337
eUniChar32 GetCustomChar() const
Returns the custom notehead, it any.
Definition ff_entrydetails.h:531
twobyte GetFontSize() const
Returns the custom font size.
Definition ff_entrydetails.h:609
FCNoteheadMod()
The constructor.
Definition ff_entrydetails.h:468
void SetEnharmonicFlip(bool status)
Marks if the notehead should be enharmonically flipped.
Definition ff_entrydetails.h:883
bool GetFontInfo(FCFontInfo *pInfo)
Gets all the font info (name, style, size) into the FCFontInfo object, for custom fonts records.
Definition ff_entrydetails.h:636
const eUniChar16 * GetFontNameUTF16() const
Gets the font name for the notehead.
Definition ff_entrydetails.h:594
bool GetFontStyle(FCFontInfo *pInfo)
Gets only the font style (such as italics, bold etc) into the FCFontInfo object, for custom fonts rec...
Definition ff_entrydetails.h:622
twobyte GetVerticalPosIfPossible()
Returns the vertical position for the notehead, but only if the value has been enabled for Finale.
Definition ff_entrydetails.h:494
void SetFontSize(twobyte fontsize)
Sets the font size for the notehead.
Definition ff_entrydetails.h:788
void ClearChar()
Clears the font character for the notehead to use the default notehead character.
Definition ff_entrydetails.h:894
void SetFontStyle(FCFontInfo *pInfo)
Sets the font style only (such as italics, bold, etc), based on the style info in the FCFontInfo obje...
Definition ff_entrydetails.h:799
void SetUseCustomVerticalPos(bool status)
Marks if a custom vertical position should be used for the notehead or not.
Definition ff_entrydetails.h:692
bool GetUseCustomFont() const
Returns if a custom font is used for the notehead or not.
Definition ff_entrydetails.h:567
bool GetEnharmonicFlip() const
Returns if the notehead has been enharmonically flipped.
Definition ff_entrydetails.h:651
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:442
bool GetUseCustomChar() const
Returns true if there's a custom notehead.
Definition ff_entrydetails.h:543
twobyte GetResize() const
Returns the notehead resize in percent.
Definition ff_entrydetails.h:557
void SetUseCustomFont(bool status)
Marks if a custom font should be used for the notehead or not.
Definition ff_entrydetails.h:729
void SetNoteID(twobyte id) override
Sets the note ID for the notehead, so it maps to the note.
Definition ff_entrydetails.h:911
void SetHorizontalPos(twobyte value)
Sets the horizontal position for the notehead.
Definition ff_entrydetails.h:661
bool GetUseCustomVerticalPos() const
Returns true if vertical position can be set.
Definition ff_entrydetails.h:518
const char * GetFontName() const
Gets the font name for the notehead.
Definition ff_entrydetails.h:580
void SetUseDefaultVerticalPos(bool status)
Clears and uses the default vertical positioning.
Definition ff_entrydetails.h:705
void SetCustomChar(eUniChar32 ch)
Sets the font character for the notehead.
Definition ff_entrydetails.h:830
void SetUseDefaultFont(bool status)
The reverse functionality of SetUseCustomFont.
Definition ff_entrydetails.h:740
void SetFontName(const char *pszFont)
Sets the font name for the notehead.
Definition ff_entrydetails.h:754
twobyte GetVerticalPos() const
Returns the vertical position for the notehead.
Definition ff_entrydetails.h:508
twobyte GetHorizontalPos() const
Returns the horizontal position for the notehead.
Definition ff_entrydetails.h:484
void SetFontNameUTF16(const eUniChar16 *pszFont)
Sets the font name for the notehead.
Definition ff_entrydetails.h:769
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:443
void SetVerticalPos(twobyte value)
Sets the vertical position for the notehead.
Definition ff_entrydetails.h:677
void SetFontInfo(FCFontInfo *pInfo)
Sets all the font info (name, style, size) to the info available in the FCFontInfo object.
Definition ff_entrydetails.h:811
void SetResize(twobyte value)
Sets the notehead resize in percent.
Definition ff_entrydetails.h:716
Class for percussion note modification.
Definition ff_entrydetails.h:4094
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:4121
void SetNoteID(twobyte id) override
Sets the note ID for the notehead, so it maps to the note.
Definition ff_entrydetails.h:4159
void SetNoteType(FLAG_16 value)
Sets the percussion note type.
Definition ff_entrydetails.h:4152
FLAG_16 GetNoteType() const
Returns the raw percussion note type.
Definition ff_entrydetails.h:4146
FCPercussionNoteMod()
The constructor.
Definition ff_entrydetails.h:4135
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:4120
Class for performance/playback modifications attached to note entires (as in Finale's MIDI Tool)....
Definition ff_entrydetails.h:4785
twobyte GetVelocityDelta() const
Gets the velocity offset compared to the base key velocity.
Definition ff_entrydetails.h:4907
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:4811
void SetEndOffset(twobyte value)
Sets the end timing offset for the note.
Definition ff_entrydetails.h:4838
FCPerformanceMod()
The constructor.
Definition ff_entrydetails.h:4826
twobyte GetStartOffset() const
Gets the start timing offset for the note.
Definition ff_entrydetails.h:4886
void SetNoteID(twobyte id) override
Sets the note ID for the notehead, so it maps to the note.
Definition ff_entrydetails.h:4917
twobyte GetEndOffset() const
Gets the end timing offset for the note.
Definition ff_entrydetails.h:4877
void SetMidiAlter(twobyte value)
Sets the MIDI transposition/alteration value (the alteration compared to the printed pitch).
Definition ff_entrydetails.h:4868
void SetVelocityDelta(twobyte value)
Sets the velocity offset value.
Definition ff_entrydetails.h:4858
void SetStartOffset(twobyte value)
Sets the start timing offset for the note.
Definition ff_entrydetails.h:4847
twobyte GetMidiAlter() const
Gets the MIDI transposition/alteration value (the number of MIDI keys that should be added compared t...
Definition ff_entrydetails.h:4896
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:4812
Simple class for the representation of x, y coordinates.
Definition ff_base.h:4892
Class for secondary beam breaks (in Finale's Special Tools).
Definition ff_entrydetails.h:1197
void SetBreak64th(bool state)
Sets if the 64th note beam should break or not.
Definition ff_entrydetails.h:1342
void SetBreak32nd(bool state)
Sets if the 32nd note beam should break or not.
Definition ff_entrydetails.h:1324
void SetBreakAll(bool value)
Sets if all secondary beams should break or not.
Definition ff_entrydetails.h:1262
bool GetBreak128th() const
Returns if the 128th note beam should break or not.
Definition ff_entrydetails.h:1351
bool GetBreak(int beamindex) const
Returns true if the secondary beam should break.
Definition ff_entrydetails.h:1286
FCSecondaryBeamBreakMod()
The constructor.
Definition ff_entrydetails.h:1236
void SetBreak256th(bool state)
Sets if the 256th note beam should break or not.
Definition ff_entrydetails.h:1378
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:1221
void SetBreak128th(bool state)
Sets if the 128th note beam should break or not.
Definition ff_entrydetails.h:1360
void SetBreak16th(bool state)
Sets if the 16th note beam should break or not.
Definition ff_entrydetails.h:1306
bool GetBreak256th() const
Returns if the 256th note beam should break or not.
Definition ff_entrydetails.h:1369
void SetBreak(int beamindex, bool value)
Sets if a secondary beam should break or not.
Definition ff_entrydetails.h:1249
bool GetBreak32nd() const
Returns if the 32nd note beam should break or not.
Definition ff_entrydetails.h:1315
bool GetBreak64th() const
Returns if the 64th note beam should break or not.
Definition ff_entrydetails.h:1333
twobyte CalcLowestBreak() const
Returns the beam number (0-8 where 0 is the 16th note beam, 1 is the 32nd note beam,...
Definition ff_entrydetails.h:1273
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:1222
bool GetBreak16th() const
Returns if the 16th note beam should break or not.
Definition ff_entrydetails.h:1297
The class for a section syllable.
Definition ff_entrydetails.h:3241
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:3246
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:3245
EXTAG Tag() const override
The Enigma tag for the derived class.
bool IsSection() const override
Returns true if the syllable object is a section syllable.
Definition ff_entrydetails.h:3247
Class for manual stem adjustments (in Finale's Special Tools).
Definition ff_entrydetails.h:1702
twobyte GetVerticalUpOffset() const
Returns the vertical adjustment for stems pointing up.
Definition ff_entrydetails.h:1761
twobyte GetHorizontalDownOffset() const
Returns the horizontal adjustment for stems pointing up.
Definition ff_entrydetails.h:1779
twobyte GetVerticalDownOffset() const
Returns the vertical adjustment for stems pointing down.
Definition ff_entrydetails.h:1767
void SetVerticalUpOffset(twobyte adjust)
Sets the vertical adjustment for stems pointing up.
Definition ff_entrydetails.h:1785
void SetVerticalDownOffset(twobyte adjust)
Sets the vertical adjustment for stems pointing down.
Definition ff_entrydetails.h:1791
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:1728
void SetHorizontalDownOffset(twobyte adjust)
Sets the horizontal adjustment for stems pointing down.
Definition ff_entrydetails.h:1811
void UseBeamedData(bool usebeam)
Sets if beamed or non-beamed data should be loaded/saved.
Definition ff_entrydetails.h:1823
twobyte GetHorizontalUpOffset() const
Returns the horizontal adjustment for stems pointing up.
Definition ff_entrydetails.h:1773
FCStemMod()
The constructor.
Definition ff_entrydetails.h:1739
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:1727
void SetHorizontalUpOffset(twobyte adjust)
Sets the horizontal adjustment for stems pointing up.
Definition ff_entrydetails.h:1800
Class that provides storage for text. This is to achieve platform-transparent text handling,...
Definition ff_base.h:1877
Base class for attaching an syllable to an entry.
Definition ff_entrydetails.h:2846
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:2878
FCFontInfo * CreateNextFontInfo() const
Creates a font info object for the start of the next syllable.
void SetVerticalOffset(Evpu16 offset)
Sets the vertical offset relative to the default position.
Definition ff_entrydetails.h:2910
void SetIncludeLyricNumber(bool state)
Sets if the lyric number should be included/displayed with the syllable, or not.
Definition ff_entrydetails.h:2950
FCFontInfo * CreateFontInfo() const
Creates a font info object for the start of the syllable.
twobyte GetFloatingHorizontalOffset() const
Returns the additional horizontal offset, used for the floating lyrics spacing.
Definition ff_entrydetails.h:3029
void SetRawTextNumber(twobyte rawtextid)
Sets the raw text number that is mapped to the syllable.
Definition ff_entrydetails.h:2930
bool GetText(FCString *pString) const
Fills a string object with the syllable text (without formatting).
bool GetIncludeLyricNumber() const
Returns if the lyric number should be included/displayed with the syllable, or not.
Definition ff_entrydetails.h:3020
Evpu16 GetHorizontalOffset() const
Returns the horizontal offset relative to the EDU position. Positive values are to the right,...
Definition ff_entrydetails.h:2971
__FCLyricsBase * CreateLyricText() const
Creates and loads the lyric raw text block for the syllable.
bool GetRawText(FCString *pString) const
Fills a string object with the raw text (with Enigma formatting commands).
twobyte GetSyllableNumber() const
Returns the 1-based syllable number from the start of the text.
Definition ff_entrydetails.h:2989
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_entrydetails.h:3184
twobyte GetWordExtensionID() const
Returns the smart shape ID for the word extension.
Definition ff_entrydetails.h:3011
void SetWordExtensionID(twobyte smartshapeID)
Sets the smart shape ID for the word extension.
Definition ff_entrydetails.h:2941
int CalcNextStringPos() const
Returns the 0-based string position in the raw string where the next syllable starts.
int CalcStringPos() const
Returns the 0-based string position in the raw string where the syllable starts.
EXTAG Tag() const override=0
The Enigma tag for the derived class.
bool CalcHyphen()
Returns true if the syllable ends with a hyphen.
Definition ff_entrydetails.h:3067
virtual bool IsVerse() const
Returns true if the syllable object is a verse syllable.
Definition ff_entrydetails.h:3049
void SetSyllableNumber(twobyte number)
Sets the 1-based syllable number from the start of the text.
Definition ff_entrydetails.h:2921
twobyte GetRawTextNumber() const
Returns the raw text number that is mapped to the syllable.
Definition ff_entrydetails.h:3000
virtual bool IsChorus() const
Returns true if the syllable object is a chorus syllable.
Definition ff_entrydetails.h:3055
Evpu16 GetVerticalOffset() const
Returns the vertical offset relative to the default position.
Definition ff_entrydetails.h:2980
virtual bool IsSection() const
Returns true if the syllable object is a section syllable.
Definition ff_entrydetails.h:3061
void SetHorizontalOffset(Evpu16 offset)
Sets the horizontal offset relative to the EDU position. Positive values are to the right,...
Definition ff_entrydetails.h:2901
bool IsValidSyllableNumber()
Returns true if the current syllable number for the object is valid. This also requires that the raw ...
Definition ff_entrydetails.h:3039
bool SaveRawText(FCString *pString)
Saves the raw syllable text to the full string.
void SetFloatingHorizontalOffset(Evpu16 offset)
Returns the additional horizontal offset, used for the floating lyrics spacing.
Definition ff_entrydetails.h:2961
FCSyllableBase()
The constructor.
Definition ff_entrydetails.h:2890
Class for controlling justification/alignment for all syllables that are connected to an entry.
Definition ff_entrydetails.h:3265
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:3329
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:3328
SYLLABLEJUSTIFICATIONS GetJustification() const
Returns the syllable justification value for the entry.
Definition ff_entrydetails.h:3389
SYLLABLEALIGNS GetAlignment() const
Returns the syllable alignment value for the entry.
Definition ff_entrydetails.h:3373
void SetJustification(SYLLABLEJUSTIFICATIONS value)
Sets the syllable justification value for the entry.
Definition ff_entrydetails.h:3422
SYLLABLEALIGNS
The 4 different entry syllable alignment values.
Definition ff_entrydetails.h:3314
@ SYLLALIGN_RIGHT
Definition ff_entrydetails.h:3325
@ SYLLALIGN_CENTER
Definition ff_entrydetails.h:3319
@ SYLLALIGN_LEFT
Definition ff_entrydetails.h:3322
@ SYLLALIGN_DEFAULT
Definition ff_entrydetails.h:3316
SYLLABLEJUSTIFICATIONS
The 4 different entry syllable justifications values.
Definition ff_entrydetails.h:3295
@ SYLLJUST_CENTER
Definition ff_entrydetails.h:3300
@ SYLLJUST_RIGHT
Definition ff_entrydetails.h:3306
@ SYLLJUST_DEFAULT
Definition ff_entrydetails.h:3297
@ SYLLJUST_LEFT
Definition ff_entrydetails.h:3303
void SetAlignment(SYLLABLEALIGNS value)
Sets the syllable alignment value for the entry.
Definition ff_entrydetails.h:3401
FCSyllableEntryMod()
The constructor.
Definition ff_entrydetails.h:3344
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_entrydetails.h:3439
Class with info about one tablature note.
Definition ff_entrydetails.h:5792
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:5817
FCTablatureNoteMod()
The constructor.
Definition ff_entrydetails.h:5829
twobyte GetStringNumber() const
Returns the 1-based string number for the note.
Definition ff_entrydetails.h:5843
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:5818
void SetStringNumber(twobyte value)
Sets the 1-based string number for the note.
Definition ff_entrydetails.h:5855
void SetNoteID(twobyte id) override
Sets the note ID for the notehead, so it maps to the note.
Definition ff_entrydetails.h:5867
Class with adjustments to the ties (in Finale's Special Tools).
Definition ff_entrydetails.h:4987
void LocalizeFromPreferences()
Localizes all settings for this FCTieMod from FCTiePrefs.
Definition finaleframework.cpp:20993
bool GetAvoidStaffLines() const
Returns the Avoid Staff Lines selection.
Definition ff_entrydetails.h:5513
twobyte GetEndVerticalPos() const
Gets the vertical offset of the end point.
Definition ff_entrydetails.h:5400
TIEMOD_CONNECTION_CODES
Tie Connection Codes. These are used to activate Start Point and End Point fields....
Definition ff_entrydetails.h:5080
@ TIEMODCNCT_ENTRYLEFT_NOTECENTER
Definition ff_entrydetails.h:5085
@ TIEMODCNCT_ENTRYRIGHT_NOTECENTER
Definition ff_entrydetails.h:5088
@ TIEMODCNCT_ACCILEFT_NOTECENTER
Definition ff_entrydetails.h:5106
@ TIEMODCNCT_NONE
Definition ff_entrydetails.h:5082
@ TIEMODCNCT_SYSTEMEND
Definition ff_entrydetails.h:5127
@ TIEMODCNCT_NOTERIGHT_NOTEBOTTOM
Definition ff_entrydetails.h:5118
@ TIEMODCNCT_NOTECENTER_NOTEBOTTOM
Definition ff_entrydetails.h:5097
@ TIEMODCNCT_NOTELEFT_NOTEBOTTOM
Definition ff_entrydetails.h:5115
@ TIEMODCNCT_NOTELEFT_NOTECENTER
Definition ff_entrydetails.h:5091
@ TIEMODCNCT_ENTRYCENTER_NOTETOP
Definition ff_entrydetails.h:5112
@ TIEMODCNCT_NOTELEFT_NOTETOP
Definition ff_entrydetails.h:5121
@ TIEMODCNCT_NOTECENTER_NOTETOP
Definition ff_entrydetails.h:5100
@ TIEMODCNCT_DOTRIGHT_NOTECENTER
Definition ff_entrydetails.h:5103
@ TIEMODCNCT_SYSTEMSTART
Definition ff_entrydetails.h:5130
@ TIEMODCNCT_NOTERIGHT_NOTECENTER
Definition ff_entrydetails.h:5094
@ TIEMODCNCT_NOTERIGHT_NOTETOP
Definition ff_entrydetails.h:5124
@ TIEMODCNCT_ENTRYCENTER_NOTEBOTTOM
Definition ff_entrydetails.h:5109
bool IsStartTie() const
Returns true if the FCTieMod instance is for regular start tie settings (defined as a parameter to th...
Definition ff_entrydetails.h:5210
twobyte GetStartHorizontalPos() const
Gets the horizonal offset of the start point.
Definition ff_entrydetails.h:5379
void DeactivateContour()
Deactivates the contour adjustment fields and initializes them with zero.
Definition ff_entrydetails.h:5344
void SetEndHorizontalPos(twobyte pos)
Sets the horizontal offset of the end point.
Definition ff_entrydetails.h:5553
TIEMOD_TIETYPES
TieMod types.
Definition ff_entrydetails.h:5034
@ TIEMODTYPE_TIEEND
Definition ff_entrydetails.h:5036
@ TIEMODTYPE_TIESTART
Definition ff_entrydetails.h:5039
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:5018
void SetBreakForTimeSignature(twobyte value)
Sets the Break for Time Signature selection.
Definition ff_entrydetails.h:5631
void DeactivateEndPoint()
Deactivates the end placement fields and initializes them with zero.
Definition ff_entrydetails.h:5288
void ActivateContour(twobyte insetleft, twobyte heightleft, twobyte insetright, twobyte heightright, bool fixedinset=false)
Activates the contour adjustment fields and initializes them with the input values.
Definition ff_entrydetails.h:5330
twobyte GetTieDirection() const
Returns the tie direction selection.
Definition ff_entrydetails.h:5471
twobyte GetRightHeight() const
Gets the right height contour value for the tie.
Definition ff_entrydetails.h:5438
twobyte GetBreakForTimeSignature() const
Returns the Break for Time Signature selection.
Definition ff_entrydetails.h:5486
void SetLeftInset(twobyte value)
Sets the left inset contour value for the tie.
Definition ff_entrydetails.h:5587
void SetFixedInsetStyle(bool value)
Sets the local fixed inset style for the tie. This value overrides the style value in FCTiePrefs::Get...
Definition ff_entrydetails.h:5561
void ActivateStartPoint(bool fortieover, TIEMOD_CONNECTION_CODES connectioncode, Evpu16 hoffset, Evpu16 voffset)
Activates the start placement fields and initializes them with the input values.
Definition ff_entrydetails.h:5230
twobyte GetRightInset() const
Gets the right inset contour value for the tie.
Definition ff_entrydetails.h:5463
void SetStartHorizontalPos(twobyte pos)
Sets the horizontal offset of the start point.
Definition ff_entrydetails.h:5533
twobyte GetLeftInset() const
Gets the left inset contour value for the tie.
Definition ff_entrydetails.h:5451
twobyte GetOuterPlacement() const
Returns the Outer Placement selection.
Definition ff_entrydetails.h:5505
bool IsStartPointActive() const
Returns true if the start point is active.
Definition ff_entrydetails.h:5216
twobyte GetStartVerticalPos() const
Gets the vertical offset of the tie start.
Definition ff_entrydetails.h:5369
void SetEndVerticalPos(twobyte pos)
Sets the vertical offset of the end point.
Definition ff_entrydetails.h:5543
bool IsEndPointActive() const
Returns true if the end point is active.
Definition ff_entrydetails.h:5257
twobyte GetLeftHeight() const
Gets the left height contour value for the tie.
Definition ff_entrydetails.h:5428
TIEMOD_DIRECTION
Tie Direction: Automatic, Over, Under.
Definition ff_entrydetails.h:5063
@ TIEMODDIR_UNDER
Definition ff_entrydetails.h:5071
@ TIEMODDIR_OVER
Definition ff_entrydetails.h:5068
@ TIEMODDIR_AUTOMATIC
Definition ff_entrydetails.h:5065
bool GetFixedInsetStyle() const
Gets the local fixed inset style for the tie.
Definition ff_entrydetails.h:5418
void SetNoteID(twobyte id) override
Sets the note ID for the tie, so it maps to the note.
Definition ff_entrydetails.h:5662
void ActivateEndPoint(bool fortieover, TIEMOD_CONNECTION_CODES connectioncode, Evpu16 hoffset, Evpu16 voffset)
Activates the end placement fields and initializes them with the input values.
Definition ff_entrydetails.h:5271
void SetRightInset(twobyte value)
Sets the right inset contour value for the tie.
Definition ff_entrydetails.h:5597
bool IsContourActive() const
Returns true if the tie contour adjustment fields are active.
Definition ff_entrydetails.h:5318
void DeactivateStartPoint()
Deactivates the start placement fields and initializes them with zero.
Definition ff_entrydetails.h:5247
twobyte GetEndHorizontalPos() const
Gets the horizontal offset of the end point.
Definition ff_entrydetails.h:5410
void SetBreakForKeySignature(twobyte value)
Sets the Break for Key Signature selection.
Definition ff_entrydetails.h:5639
FCTieMod(TIEMOD_TIETYPES tietype)
The constructor.
Definition ff_entrydetails.h:5189
void SetStartVerticalPos(twobyte pos)
Sets the vertical offset of the start point.
Definition ff_entrydetails.h:5523
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:5019
TIEMOD_SELECTOR
Selector values: Default, On, Off.
Definition ff_entrydetails.h:5047
@ TIEMODSEL_DEFAULT
Definition ff_entrydetails.h:5049
@ TIEMODSEL_ON
Definition ff_entrydetails.h:5052
@ TIEMODSEL_OFF
Definition ff_entrydetails.h:5055
void SetOuterPlacement(twobyte value)
Sets the Outer Placement selection.
Definition ff_entrydetails.h:5649
void SetLeftHeight(twobyte value)
Sets the left height contour value for the tie.
Definition ff_entrydetails.h:5569
void SetRightHeight(twobyte value)
Sets the right height contour value for the tie.
Definition ff_entrydetails.h:5577
void SetAvoidStaffLines(bool value)
Sets the Avoid Staff Lines selection.
Definition ff_entrydetails.h:5655
int GetEndConnectionCode() const
Gets the connection code for the end point.
Definition ff_entrydetails.h:5387
void SetTieDirection(twobyte value)
Sets the tie direction selection.
Definition ff_entrydetails.h:5605
twobyte GetBreakForKeySignature() const
Returns the Break for Key Signature selection.
Definition ff_entrydetails.h:5494
int GetStartConnectionCode() const
Gets the connection code for the start point.
Definition ff_entrydetails.h:5356
Class for attaching an tuplet to an entry.
Definition ff_entrydetails.h:2153
FCTuplet()
The constructor.
Definition ff_entrydetails.h:2245
twobyte GetSlopeAdjust() const
Returns the "Manual Slope Adjustment" value.
Definition ff_entrydetails.h:2489
twobyte GetRightHookLength() const
Returns the right-side hook length of the bracket/slur shape in EVPUs.
Definition ff_entrydetails.h:2473
void SetVerticalShapeOffset(twobyte value)
Sets the vertical shape offset value (in EVPUs).
Definition ff_entrydetails.h:2661
void SetUseBottomNote(bool value)
Sets the "Use Bottom Note" setting for the tuplet.
Definition ff_entrydetails.h:2561
void SetShapeStyle(SHAPESTYLE value)
Sets the setting for which bracket shape the tuplet should use.
Definition finaleframework.cpp:21412
void SetBracketFullDuration(bool value)
Sets the "Bracket Full Duration" setting.
Definition ff_entrydetails.h:2625
twobyte GetRightExtension() const
Returns the right-side extension adjusment of the bracket/slur shape in EVPUs.
Definition ff_entrydetails.h:2483
twobyte GetReferenceNumber() const
Returns the reference number value.
Definition ff_entrydetails.h:2306
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_entrydetails.h:2729
void SetLeftExtension(twobyte value)
Sets the left extension of the bracket/slur shape in EVPUs, compared to the left default position.
Definition ff_entrydetails.h:2683
twobyte GetVerticalShapeOffset() const
Returns the vertical bracket offset in EVPUs.
Definition ff_entrydetails.h:2444
TimeEdu32 CalcFullReferenceDuration()
Calculates the full reference duration of a tuplet, in EDUs.
Definition ff_entrydetails.h:2259
bool GetAllowHorizontalDrag() const
Returns the "Allow Horizontal Drag" setting for the tuplet.
Definition ff_entrydetails.h:2340
bool GetUseBottomNote() const
Returns the "Use Bottom Note" setting for the tuplet.
Definition ff_entrydetails.h:2346
bool GetBracketFullDuration() const
Returns the "Bracket Full Duration" setting.
Definition ff_entrydetails.h:2408
void SetBracketMode(BRACKETMODE value)
Sets when the slur/bracket shape should show.
Definition finaleframework.cpp:21438
twobyte GetLeftHookLength() const
Returns the left-side hook length of the bracket/slur shape in EVPUs.
Definition ff_entrydetails.h:2456
bool GetIgnoreNumberOffset() const
Returns the "Ignore Number Offset" setting.
Definition ff_entrydetails.h:2432
bool GetAlwaysFlat() const
Returns the "Always Flat" setting.
Definition ff_entrydetails.h:2402
void SetEngraverTuplet(bool value)
Sets the "engraver tuplet" setting for the tuplet.
Definition ff_entrydetails.h:2543
twobyte GetHorizontalShapeOffset() const
Returns the horizontal bracket offset in EVPUs.
Definition ff_entrydetails.h:2438
void SetSymbolicDuration(twobyte value)
Sets the symbolic duration value (in EDUs).
Definition ff_entrydetails.h:2509
twobyte GetVerticalOffset() const
Returns the vertical tuplet offset in EVPUs.
Definition ff_entrydetails.h:2420
void SetVerticalOffset(twobyte value)
Sets the vertical tuplet offset in EVPUs.
Definition ff_entrydetails.h:2637
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:2231
void SetMatchHookLengths(bool value)
Sets the "Match Hook Lengths" setting.
Definition ff_entrydetails.h:2667
SHAPESTYLE GetShapeStyle() const
Returns the setting for which bracket shape the tuplet should use.
Definition finaleframework.cpp:21320
bool GetVisible() const
Returns the visibility setting for the tuplet.
Definition ff_entrydetails.h:2495
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:2230
void SetBreakSlurBracket(bool value)
Definition ff_entrydetails.h:2599
void SetAllowHorizontalDrag(bool value)
Sets the "Allow Horizontal Drag" setting for the tuplet.
Definition ff_entrydetails.h:2555
void SetHorizontalOffset(twobyte value)
Sets the horizontal tuplet offset in EVPUs.
Definition ff_entrydetails.h:2631
BRACKETMODE
The settings for when the bracket shape should show.
Definition ff_entrydetails.h:2224
bool GetAvoidStaff() const
Returns the "Avoid Staff" setting for the tuplet.
Definition ff_entrydetails.h:2334
void SetReferenceNumber(twobyte value)
Sets the reference number value.
Definition ff_entrydetails.h:2515
void SetAvoidStaff(bool value)
Sets the "Avoid Staff" setting for the tuplet.
Definition ff_entrydetails.h:2549
void SetHorizontalShapeOffset(twobyte value)
Sets the horizontal shape offset value (in EVPUs).
Definition ff_entrydetails.h:2655
void SetIgnoreNumberOffset(bool value)
Sets the "Ignore Number Offset" setting.
Definition ff_entrydetails.h:2649
PLACEMENTMODE
The settings for where the tuplet should be placed compared to the note entry.
Definition ff_entrydetails.h:2186
bool GetEngraverTuplet() const
Returns the "engraver tuplet" setting for the tuplet.
Definition ff_entrydetails.h:2328
twobyte GetLeftExtension() const
Returns the left-side extension adjusment of the bracket/slur shape in EVPUs.
Definition ff_entrydetails.h:2465
PLACEMENTMODE GetPlacementMode() const
Gets the settings for where the tuplet should be placed compared to the note entry.
Definition finaleframework.cpp:21275
void SetAlwaysFlat(bool value)
Sets the "Always Flat" setting.
Definition ff_entrydetails.h:2619
NUMBERSTYLE GetNumberStyle() const
Returns the settings for the number style that should be used by the tuplet.
Definition finaleframework.cpp:21297
void SetPlacementMode(PLACEMENTMODE value)
Sets where the tuplet should be placed compared to the note entry.
Definition finaleframework.cpp:21349
twobyte GetHorizontalOffset() const
Returns the horizontal tuplet offset in EVPUs.
Definition ff_entrydetails.h:2414
SHAPESTYLE
The setting for which bracket shape the tuplet should use.
Definition ff_entrydetails.h:2213
void SetCenterUsingDuration(bool value)
Sets the "Center Using Duration" setting.
Definition ff_entrydetails.h:2643
void PrefsReset(bool resetposition)
Resets the tuplet settings to the current preference defaults.
Definition finaleframework.cpp:21470
twobyte GetReferenceDuration() const
Returns the reference duration value (in EDUs).
Definition ff_entrydetails.h:2300
void SetNumberStyle(NUMBERSTYLE value)
Sets the setting for the number style that should be used by the tuplet.
Definition finaleframework.cpp:21380
void SetLeftHookLength(twobyte value)
Sets the left hook length of the bracket/slur shape in EVPUs.
Definition ff_entrydetails.h:2674
bool GetCenterUsingDuration() const
Returns the "Center Using Duration" setting.
Definition ff_entrydetails.h:2426
void SetRightExtension(twobyte value)
Sets the right extension of the bracket/slur shape in EVPUs, compared to the right-side default posit...
Definition ff_entrydetails.h:2700
twobyte GetSymbolicNumber() const
Returns the symbolic number of the tuplet.
Definition ff_entrydetails.h:2294
BRACKETMODE GetBracketMode() const
Returns the settings for when the bracket/slur shape should show.
Definition finaleframework.cpp:21339
void SetSlopeAdjust(twobyte value)
Sets the "Manual Slope Adjustment" value.
Definition ff_entrydetails.h:2706
NUMBERSTYLE
The settings for the number style that should be used by the tuplet.
Definition ff_entrydetails.h:2200
twobyte GetSymbolicDuration() const
Returns the symbolic duration value (in EDUs).
Definition ff_entrydetails.h:2286
void SetReferenceDuration(twobyte value)
Sets the reference duration value (in EDUs).
Definition ff_entrydetails.h:2521
void SetVisible(bool value)
Sets the visibility state of the tuplet.
Definition ff_entrydetails.h:2712
bool GetMatchHookLengths() const
Returns the "Match Hook Lengths" setting.
Definition ff_entrydetails.h:2450
void SetRightHookLength(twobyte value)
Sets the right hook length of the bracket/slur shape in EVPUs.
Definition ff_entrydetails.h:2691
TimeEdu32 CalcFullSymbolicDuration()
Calculates the symbolic duration of a tuplet, in edus.
Definition ff_entrydetails.h:2268
bool GetBreakSlurBracket() const
Returns the setting for if the slur/bracket should be broken around the number.
Definition ff_entrydetails.h:2383
void SetSymbolicNumber(twobyte value)
Sets the symbolic number of the tuplet.
Definition ff_entrydetails.h:2503
EXTAG Tag() const override
The Enigma tag for the derived class.
Definition ff_entrydetails.h:2179
The class for a verse syllable.
Definition ff_entrydetails.h:3202
bool IsVerse() const override
Returns true if the syllable object is a verse syllable.
Definition ff_entrydetails.h:3209
EXTAG Tag() const override
The Enigma tag for the derived class.
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_entrydetails.h:3206
const PDKFRAMEWORK_CLASSID GetClassID() const override
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
Definition ff_entrydetails.h:3207