Finale PDK Framework 0.77
Power Up Your Finale Music Software
Loading...
Searching...
No Matches
ff_celldetails.h
1/*
2 * File: ff_celldetails.h
3 * Author: Jari Williamsson
4 *
5 * Created on den 3 december 2010, 23:10
6 */
7
8#ifndef FF_CELLDETAILS_H
9#define FF_CELLDETAILS_H
10
11#include "ff_cell.h"
12#include "ff_region.h"
13#include "ff_noteframe.h"
14
15#ifdef PDK_FRAMEWORK_ENTRIES
16#include <variant>
17#endif
18
19
27{
28 protected:
29#ifndef DOXYGEN_SHOULD_IGNORE_THIS
30 FCCell* _pConnectedCell;
31
37 virtual void _SaveMeasureFlag() = 0;
38
39 private:
40 bool _RawRelink() override
41 {
42 DeleteData();
43 return SaveNew();
44 }
45#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
46 public:
47 const char* ClassName() const override { return "__FCCellDetail"; }
48
50 {
51 _pConnectedCell = NULL;
52 }
53
54
62 void ConnectCell(FCCell* pCell) { _pConnectedCell = pCell; }
63
64
66 FCCell* GetConnectedCell() const { return _pConnectedCell; }
67
75 bool LoadFirst() override;
76
86 bool LoadLast() override;
87
90 bool LoadNext() override;
91
94 bool LoadPrevious() override;
95
100 virtual TimeEdu32 GetMeasurePos() const { return 0; }
101
109 virtual bool SaveNew();
110
115 virtual eMeas GetMeasure() const
116 {
117 if (GetConnectedCell())
118 return GetConnectedCell()->GetMeasure();
119 else
120 return _dataid.detail.cmper2;
121 }
122
127 virtual twobyte GetStaff() const
128 {
129 if (GetConnectedCell())
130 return GetConnectedCell()->GetStaff();
131 else
132 return _dataid.detail.cmper1;
133 }
134
135#ifdef PDK_FRAMEWORK_DEBUG
136 void DebugDump() override
137 {
139 DebugOutInt("_dataid.detail.cmper1", _dataid.detail.cmper1);
140 DebugOutInt("_dataid.detail.cmper2", _dataid.detail.cmper2);
141 DebugOutInt("_dataid.detail.inci", _dataid.detail.inci);
142 if (_pConnectedCell)
143 {
144 DebugOutInt("Cell measure: ", _pConnectedCell->GetMeasure());
145 DebugOutInt("Cell staff: ", _pConnectedCell->GetStaff());
146 }
147 }
148
149#endif
150};
151
158{
159 bool LoadFirst() override { return __FCCellDetail::LoadFirst(); }
160 bool LoadNext() override { return false; }
161 bool SaveNew() override { return false; }
162public:
163 const char* ClassName() const override { return "__FCNoInciCellDetail"; }
164
166 {
167 }
168
173 bool Load() { return LoadFirst(); }
174};
175
176
184{
185public:
186 const char* ClassName() const override { return "__FCCollectionCellDetail"; }
187
193
202 virtual int LoadAllInCell(FCCell* pCell);
203
212 int LoadAllForRegion(FCMusicRegion* pMusicRegion);
213
224 int LoadAll() override;
225};
226
233{
234public:
235 const char* ClassName() const override { return "__FCCollectionNoInciCellDetail"; }
236
242
249 int LoadAllInRegion(FCMusicRegion* pMusicRegion);
250};
251
252
265{
266#ifndef DOXYGEN_SHOULD_SKIP_THIS
267 EDTMidiExpression _midiexpression;
268
269protected:
270 /* No measure flag to set? */
271 void _SaveMeasureFlag() override {}
272
273 EXTAG Tag() const override { return dt_MidiExpression; }
274 int DataSizeLoad() const override { return sizeof(EDTMidiExpression); }
275 int DataSizeSave() const override { return sizeof(EDTMidiExpression); }
276 void* Allocate() override { return (void*) &_midiexpression; }
277
282 void CloneMemoryFrom(__FCBaseData* pSource) override
283 {
284 memcpy(&_midiexpression, ((FCMidiExpression*)pSource)->_GetMidiExpr(), sizeof(_midiexpression));
285 _datablock = &_midiexpression;
286 _loadedsize = sizeof(_midiexpression);
287 }
288
289 __FCBaseData* CreateObject() override { return new FCMidiExpression(); }
290#endif
291public:
296 {
297 PEDAL_CONTROLLER = 64
298 };
299
300 const char* ClassName() const override { return "FCMidiExpression"; }
301 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_MIDIEXPRESSION; }
302
303#ifndef DOXYGEN_SHOULD_SKIP_THIS
304 EDTMidiExpression* _GetMidiExpr() { return &_midiexpression; }
305#endif
306
309 {
310 memset(&_midiexpression, 0, sizeof(_midiexpression));
311 _loadedsize = sizeof(_midiexpression);
312 _datablock = &_midiexpression;
313 }
314
321 TimeEdu32 GetMeasurePos() const override { return _midiexpression.eldur; }
322
329 bool IsController() const { return (LOBYTE(_midiexpression.status) == MIDIEXP_CONTROLLER); }
330
337 twobyte GetControllerNumber() const { return IsController() ? _midiexpression.data1 : 0; }
338
345 twobyte GetControllerValue() const { return IsController() ? _midiexpression.data2 : 0; }
346
353 {
354 _midiexpression.status &= 0xff00;
355 _midiexpression.status |= MIDIEXP_CONTROLLER;
356 }
357
364 void SetControllerNumber(twobyte number)
365 {
366 if (!IsController()) return;
367 _midiexpression.data1 = number;
368 }
369
376 void SetControllerValue(twobyte number)
377 {
378 if (!IsController()) return;
379 _midiexpression.data2 = number;
380 }
381
382
389 bool IsPressure() const { return (LOBYTE(_midiexpression.status) == MIDIEXP_PRESSURE); }
390
398 void SetPressureValue(twobyte value)
399 {
400 if (!IsPressure()) return;
401 if (value < 0) value = 0;
402 if (value > 127) value = 127;
403 _midiexpression.data1 = value;
404 }
405
410 twobyte GetPressureValue() const
411 {
412 if (!IsPressure()) return 0;
413 return _midiexpression.data1;
414 }
415
422 {
423 _midiexpression.status &= 0xff00;
424 _midiexpression.status |= MIDIEXP_PRESSURE;
425 }
426
427
434 bool IsPitchWheel() const { return (LOBYTE(_midiexpression.status) == MIDIEXP_PITCHWHEEL); }
435
443 void SetPitchWheelValue(twobyte value)
444 {
445 if (!IsPitchWheel()) return;
446 if (value > 8192) value = 8192;
447 if (value < -8192) value = -8192;
448 /* For some unknown reason, data2 & 64 is always true for 0
449 * and positive values. */
450 bool isnegative = (value < 0);
451 _midiexpression.data1 = value & 0x7f;
452 value &= ~0x7f;
453 value /= 0x80;
454 value &= 0x3f;
455 _midiexpression.data2 = value;
456 if (!isnegative) _midiexpression.data2 |= 0x40;
457 }
458
463 twobyte GetPitchWheelValue() const
464 {
465 if (!IsPitchWheel()) return 0;
466 /* For some unknown reason, data2 & 64 is always true for 0
467 * and positive values. */
468 bool isnegative = (_midiexpression.data2 & 0x20) != 0;
469 twobyte result = (_midiexpression.data1 & 0x7f);
470 result = result | ((_midiexpression.data2 & 0x3f) * 0x80);
471 if (isnegative)
472 {
473 result = 0x2000 - result;
474 result = -result;
475 }
476 return result;
477 }
478
485 {
486 _midiexpression.status &= 0xff00;
487 _midiexpression.status |= MIDIEXP_PITCHWHEEL;
488 }
489
496 bool IsPatchChange() const { return (LOBYTE(_midiexpression.status) == MIDIEXP_PATCH_CHANGE); }
497
504 {
505 _midiexpression.status &= 0xff00;
506 _midiexpression.status |= MIDIEXP_PATCH_CHANGE;
507 }
508
517 void SetPatchChangeMode(twobyte mode)
518 {
519 if (!IsPatchChange()) return;
520 if (mode < 0) return;
521 if (mode > 4) return;
522 twobyte patchnumber = LOBYTE(_midiexpression.data1);
523 _midiexpression.data1 = MAKEWORD(patchnumber, mode);
524 }
525
533 twobyte GetPatchChangeMode() const
534 {
535 if (!IsPatchChange()) return 0;
536 return HIBYTE(_midiexpression.data1);
537 }
538
544 void SetPatchChangeNumber(twobyte number)
545 {
546 if (!IsPatchChange()) return;
547 if (number < 0) return;
548 if (number > 255) return;
549 twobyte patchmode = HIBYTE(_midiexpression.data1);
550 _midiexpression.data1 = MAKEWORD(number, patchmode);
551 }
552
557 twobyte GetPatchChangeNumber() const
558 {
559 if (!IsPatchChange()) return 0;
560 return LOBYTE(_midiexpression.data1);
561 }
562
563
571 void SetPatchChangeBankData1(twobyte mode)
572 {
573 if (!IsPatchChange()) return;
574 if (mode < 0) return;
575 if (mode > 255) return;
576 twobyte patchnumber = LOBYTE(_midiexpression.data2);
577 _midiexpression.data2 = MAKEWORD(patchnumber, mode);
578 }
579
587 {
588 if (!IsPatchChange()) return 0;
589 return HIBYTE(_midiexpression.data2);
590 }
591
600 void SetPatchChangeBankData2(twobyte number)
601 {
602 if (!IsPatchChange()) return;
603 if (number < 0) return;
604 if (number > 255) return;
605 twobyte patchmode = HIBYTE(_midiexpression.data2);
606 _midiexpression.data2 = MAKEWORD(number, patchmode);
607 }
608
617 {
618 if (!IsPatchChange()) return 0;
619 return LOBYTE(_midiexpression.data2);
620 }
621
622
629 void SetMeasurePos(TimeEdu32 value) { _midiexpression.eldur = value; }
630
631#ifdef PDK_FRAMEWORK_DEBUG
632 void DebugDump() override
633 {
635 DebugOutInt("Position: ", GetMeasurePos());
636 if (IsController())
637 {
638 DebugOutBool("Is Controller: ", IsController());
639 DebugOutInt("Controller number: ", GetControllerNumber());
640 DebugOutInt("Controller value: ", GetControllerValue());
641 }
642 if (IsPitchWheel())
643 {
644 DebugOutBool("Is Pitch Wheel: ", IsPitchWheel());
645 DebugOutInt("data1: ", _midiexpression.data1);
646 DebugOutInt("data2: ", _midiexpression.data2);
647 }
648 }
649#endif
650};
651
652
653
663{
664#ifndef DOXYGEN_SHOULD_SKIP_THIS
665 FCEnclosure _enclosure;
666
667 EDTMeasNumberSeparate _separatemeasurenumberold;
668
669 FIN25_4_CODE( EDTMeasNumberSeparate25_4 _separatemeasurenumber25_4; )
670
671 /* Decides which version of the struct that should be used */
672 const bool _Use25_4_Version() const;
673
674 /* Returns the pointer to the 'flag' struct member */
675 const FLAG_16* _GetFlagPtr() const
676 {
677 FIN25_4_CODE( if (_Use25_4_Version()) return &_separatemeasurenumber25_4.flag; )
678 return &_separatemeasurenumberold.flag;
679 }
680
681 /* Returns the pointer to the 'region' struct member */
682 const twobyte* _GetRegionPtr() const
683 {
684 FIN25_4_CODE( if (_Use25_4_Version()) return &_separatemeasurenumber25_4.region; )
685 return &_separatemeasurenumberold.region;
686 }
687
688 /* Returns the pointer to the 'x1add' struct member */
689 const twobyte* _GetX1addPtr() const
690 {
691 FIN25_4_CODE( if (_Use25_4_Version()) return &_separatemeasurenumber25_4.x1add; )
692 return &_separatemeasurenumberold.x1add;
693 }
694
695 /* Returns the pointer to the 'y1add' struct member */
696 const twobyte* _GetY1addPtr() const
697 {
698 FIN25_4_CODE( if (_Use25_4_Version()) return &_separatemeasurenumber25_4.y1add; )
699 return &_separatemeasurenumberold.y1add;
700 }
701
702 /* Returns the pointer to the 'encl' struct member (different data type,
703 depending on version) */
704 const void* _GetEnclPtr() const
705 {
706 FIN25_4_CODE( if (_Use25_4_Version()) return &_separatemeasurenumber25_4.encl; )
707 return &_separatemeasurenumberold.encl;
708 }
709
710 /* No measure flag? */
711 void _SaveMeasureFlag() override {}
712protected:
713 EXTAG Tag() const override;
714 int DataSizeLoad() const override;
715 int DataSizeSave() const override;
716 void* Allocate() override;
717
722 void CloneMemoryFrom(__FCBaseData* pSource) override
723 {
724 int size = DataSizeLoad();
725 memcpy(_GetSeparateMeasNum(), ((FCSeparateMeasureNumber*)pSource)->_GetSeparateMeasNum(), size);
726 _datablock = _GetSeparateMeasNum();
727 _loadedsize = size;
728 }
729
730 __FCBaseData* CreateObject() override { return new FCSeparateMeasureNumber(); }
731#endif
732public:
733
734 const char* ClassName() const override { return "FCSeparateMeasureNumber"; }
735 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_SEPARATEMEASURENUMBER; }
736
737#ifndef DOXYGEN_SHOULD_SKIP_THIS
738 void* _GetSeparateMeasNum() { return Allocate(); }
739#endif
740
746 {
747 /* Don't use virtual methods in the constructor */
748 if (_Use25_4_Version())
749 {
750#if FXT_VERSION >= FINALEVERSION_25_4
751 memset(&_separatemeasurenumber25_4, 0, sizeof(_separatemeasurenumber25_4));
752 _loadedsize = sizeof(_separatemeasurenumber25_4);
753 _datablock = &_separatemeasurenumber25_4;
754#endif
755 }
756 else
757 {
758 memset(&_separatemeasurenumberold, 0, sizeof(_separatemeasurenumberold));
759 _loadedsize = sizeof(_separatemeasurenumberold);
760 _datablock = &_separatemeasurenumberold;
761 }
762 }
763
771 twobyte GetRegionNumberID() const { return *_GetRegionPtr(); }
772
777 bool GetShowOverride() const { return GetBitFlag(*_GetFlagPtr(), MEASNUM_FORCE_MNUM); }
778
783 bool GetHideOverride() const { return GetBitFlag(*_GetFlagPtr(), MEASNUM_HIDE_MNUM); }
784
789 bool GetUseEnclosure() const { return GetBitFlag(*_GetFlagPtr(), MEASNUM_USE_ENCL); }
790
800 bool GetIsAlternateNumber() const { return GetBitFlag(*_GetFlagPtr(), MEASNUM_IS_ALTNUM); }
801
806 twobyte GetHorizontalPosition() const { return *_GetX1addPtr(); }
807
812 twobyte GetVerticalPosition() const { return *_GetY1addPtr(); }
813
824 {
825 if (!pRegion) return false;
826 if (pRegion->GetID() < 1) return false;
827 SetRegionNumberID(pRegion->GetID());
828 return true;
829 }
830
842 {
843 if (!GetUseEnclosure()) return NULL;
844 _enclosure._AssignEDTEnclosure((void*) _GetEnclPtr());
845 return &_enclosure;
846 }
847
855 void SetRegionNumberID(twobyte regionid)
856 {
857 if (regionid < 1) return;
858 *(twobyte*)_GetRegionPtr() = regionid;
859 }
860
865 void SetShowOverride(bool state) { Set16BitFlag((FLAG_16*)_GetFlagPtr(), MEASNUM_FORCE_MNUM, state); }
866
871 void SetHideOverride(bool state) { Set16BitFlag((FLAG_16*)_GetFlagPtr(), MEASNUM_HIDE_MNUM, state); }
872
877 void SetUseEnclosure(bool state) { Set16BitFlag((FLAG_16*) _GetFlagPtr(), MEASNUM_USE_ENCL, state); }
878
885 void SetIsAlternateNumber(bool state) { Set16BitFlag((FLAG_16*) _GetFlagPtr(), MEASNUM_IS_ALTNUM, state); }
886
891 void SetHorizontalPosition(twobyte value) { *(twobyte*)_GetX1addPtr() = value; }
892
897 void SetVerticalPosition(twobyte value) { *(twobyte*)_GetY1addPtr() = value; }
898
899
900#ifdef PDK_FRAMEWORK_DEBUG
901 void DebugDump() override
902 {
904 }
905#endif
906};
907
919{
920protected:
921#ifndef DOXYGEN_SHOULD_IGNORE_THIS
922 __FCBaseData* CreateElement() override { return new FCSeparateMeasureNumber(); }
923#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
924public:
925
931
932 const char* ClassName() const override { return "FCSeparateMeasureNumbers"; }
933
939};
940
941
956{
957#ifndef DOXYGEN_SHOULD_SKIP_THIS
958 EDTGfhold2004 _tgfhold;
959
960protected:
961 /* No measure flag storage */
962 void _SaveMeasureFlag() override {}
963
964
965 EXTAG Tag() const override { return dt_Gfhold; }
966 int DataSizeLoad() const override { return sizeof(EDTGfhold2004); }
967 int DataSizeSave() const override { return sizeof(EDTGfhold2004); }
968 void* Allocate() override { return (void*) &_tgfhold; }
969
974 void CloneMemoryFrom(__FCBaseData* pSource) override
975 {
976 // Don't use memcpy, since EDTGfhold2004 contains dynamic memory.
977 _tgfhold = ((FCCellFrameHold*) pSource)->_GetTGFHold();
978 _datablock = &_tgfhold;
979 _loadedsize = sizeof(_tgfhold);
980 }
981
982 __FCBaseData* CreateObject() override { return new FCCellFrameHold(); }
983
984#endif
985public:
986
987 const char* ClassName() const override { return "FCCellFrameHold"; }
988 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_CELLFRAMEHOLD; }
989
990#ifndef DOXYGEN_SHOULD_SKIP_THIS
991 EDTGfhold2004& _GetTGFHold() { return _tgfhold; }
992#endif
993
1001 {
1002 SHOWCLEF_NORMAL = 0,
1003 SHOWCLEF_HIDE,
1004 SHOWCLEF_ALWAYS
1005 };
1006
1007
1013
1018 twobyte GetClefIndex() const { return _tgfhold.clef; }
1019
1025 twobyte GetClefPercent() const { return _tgfhold.clefPercent; }
1026
1033#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1034 CLEF_SHOW
1035#else
1036 int
1037#endif
1039 {
1040 if (GetBitFlag(_tgfhold.flag, GF_HIDECLEF))
1041 return SHOWCLEF_HIDE;
1042 if (GetBitFlag(_tgfhold.flag, 0x0020))
1043 return SHOWCLEF_ALWAYS;
1044 else
1045 return SHOWCLEF_NORMAL;
1046 }
1047
1052 bool GetIsClefList() const
1053 {
1054 return GetBitFlag(_tgfhold.flag, GF_CLEFISLIST);
1055 }
1056
1061 bool GetClefAfterBarline() const { return GetBitFlag(_tgfhold.flag, 0x0001); }
1062
1069 void SetClefIndex(twobyte newclef)
1070 {
1071 if (GetIsClefList()) return;
1072 _tgfhold.clef = newclef;
1073 }
1074
1082 void SetClefPercent(twobyte resize)
1083 {
1084 if (GetIsClefList()) return;
1085 _tgfhold.clefPercent = resize;
1086 }
1087
1097#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1098 CLEF_SHOW
1099#else
1100 twobyte
1101#endif
1102 value
1103 )
1104 {
1105 if (GetIsClefList()) return;
1106 switch (value)
1107 {
1108 case SHOWCLEF_HIDE:
1109 Set16BitFlag(&_tgfhold.flag, GF_HIDECLEF, true);
1110 Set16BitFlag(&_tgfhold.flag, 0x0020, false);
1111 break;
1112 case SHOWCLEF_ALWAYS:
1113 Set16BitFlag(&_tgfhold.flag, GF_HIDECLEF, false);
1114 Set16BitFlag(&_tgfhold.flag, 0x0020, true);
1115 break;
1116 case SHOWCLEF_NORMAL:
1117 Set16BitFlag(&_tgfhold.flag, GF_HIDECLEF, false);
1118 Set16BitFlag(&_tgfhold.flag, 0x0020, false);
1119 break;
1120 }
1121 }
1122
1123
1130 void SetClefAfterBarline(bool state)
1131 {
1132 if (GetIsClefList()) return;
1133 Set16BitFlag(&_tgfhold.flag, 0x0001, state);
1134 }
1135
1144 bool CalcClefChange();
1145
1150 bool CalcHasFrame() const
1151 {
1152 for (int i = 0; i < FX_GetMaxLayers(); i++)
1153 if (_tgfhold.frame[i])
1154 return true;
1155 return false;
1156 }
1157
1164 bool CalcHasFrameAtLayer(int layernum) const
1165 {
1166 if (layernum > 0 && layernum <= FX_GetMaxLayers())
1167 return MAKEBOOL(_tgfhold.frame[layernum-1]);
1168 return false;
1169 }
1170
1176 {
1177 int layercount = 0;
1178 for (int i = 0; i < FX_GetMaxLayers(); i++)
1179 if (_tgfhold.frame[i])
1180 layercount++;
1181 return layercount > 1;
1182 }
1183
1188 bool SaveNew() override;
1189
1205
1206#ifdef PDK_FRAMEWORK_PREFS
1220 bool MakeCellSingleClef(const FCCellClefChange *pClefInfo = nullptr);
1221#endif //PDK_FRAMEWORK_PREFS
1222
1223#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
1225 luabridge::RefCountedPtr<FCCellClefChange> CreateFirstCellClefChange_GC()
1226 { return makeLuaSharedPtr(CreateFirstCellClefChange()); }
1227#endif
1228
1240
1241#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
1243 luabridge::RefCountedPtr<FCCellClefChanges> CreateCellClefChanges_GC()
1244 { return makeLuaSharedPtr(CreateCellClefChanges()); }
1245#endif
1246
1247#ifdef PDK_FRAMEWORK_PREFS
1263 bool SetCellClefChanges(FCCellClefChanges *pClefChanges);
1264#endif //PDK_FRAMEWORK_PREFS
1265
1266#ifdef PDK_FRAMEWORK_DEBUG
1267 void DebugDump() override
1268 {
1270 DebugOutInt("Clef: ", GetClefIndex());
1271 DebugOutInt("Clef Resize: ", GetClefPercent());
1272 DebugOutInt("Clef show: ", GetClefShow());
1273 DebugOutHex("Flag Bits: ", _tgfhold.flag);
1274 }
1275#endif
1276};
1277
1278class FCTransposer;
1279
1289{
1290private:
1291#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1292 EDTChord2010 _chord;
1293#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1294protected:
1295#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1296
1297#ifdef PDK_FRAMEWORK_ENTRIES
1298 std::unique_ptr<FCTransposer> _pTransposer;
1299#endif // PDK_FRAMEWORK_ENTRIES
1300
1301 void _SaveMeasureFlag() override;
1302
1303 int DataSizeLoad() const override { return sizeof(EDTChord2010); }
1304 void* Allocate() override { return (void*) &_chord; }
1305
1306 EVERSION EnigmaVersion() const override { return FINALEVERSION_2010; }
1307
1312 void CloneMemoryFrom(__FCBaseData* pSource) override
1313 {
1314 memcpy(&_chord, ((FCChord*)pSource)->_GetChord(), sizeof(_chord));
1315 _datablock = &_chord;
1316 _loadedsize = sizeof(_chord);
1317 }
1318
1319 __FCBaseData* CreateObject() override { return new FCChord(); }
1320
1321 int _GetFretboardGroupInci() const { return _chord.fbData & CHORD_FRET_INCI; }
1322 void _SetFretboardGroupInci(int value)
1323 {
1324 _chord.fbData &= ~CHORD_FRET_INCI;
1325 _chord.fbData |= (value & CHORD_FRET_INCI);
1326 }
1327
1328
1329#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1330public:
1331 EXTAG Tag() const override { return dt_Chord2010; } /* Some plug-ins need this - needs to be public. */
1332
1333 const char* ClassName() const override { return "FCChord"; }
1334 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_CHORD; }
1335
1336#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1343 void* _GetChord() { return Allocate(); }
1344#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
1345
1351 {
1352 ALTBASSPLACE_AFTERROOT = 0,
1353 ALTBASSPLACE_UNDERROOT,
1354 ALTBASSPLACE_SUBTEXT
1355 };
1356
1362 {
1363 memset(&_chord, 0, sizeof(_chord));
1364 _datablock = &_chord;
1365 _loadedsize = sizeof(_chord);
1366 }
1367
1369 bool IsEarlierThan(FCChord* pTestChord)
1370 {
1371 if (!pTestChord) return false;
1372 if (pTestChord->GetMeasure() > GetMeasure()) return true;
1373 if (pTestChord->GetMeasure() < GetMeasure()) return false;
1374 return (pTestChord->GetMeasurePos() > GetMeasurePos());
1375 }
1376
1383 TimeEdu32 GetMeasurePos() const override { return _chord.horzEDU; }
1384
1391 void SetMeasurePos(TimeEdu32 position) { _chord.horzEDU = position; }
1392
1393#ifdef PDK_FRAMEWORK_ENTRIES
1403 {
1404 tbool suffixfound;
1405 FCMusicRegion musicregion;
1406 musicregion.SetInstrumentList(0);
1407 musicregion.SetStartStaff(pEntry->GetStaff());
1408 musicregion.SetEndStaff(pEntry->GetStaff());
1409 musicregion.SetStartMeasure(pEntry->GetMeasure());
1410 musicregion.SetEndMeasure(pEntry->GetMeasure());
1411 musicregion.SetStartMeasurePos(pEntry->GetMeasurePos());
1412 musicregion.SetEndMeasurePosRight();
1413 EREGION eregion;
1414 musicregion.GetEnigmaRegion(&eregion);
1415#if FXT_VERSION >= FINALEVERSION_2014_5
1416 if (!FX_AnalyzeChord(&eregion, (EDTChord2010*) &_chord, &suffixfound)) return false;
1417#else
1418 if (!FX_AnalyzeChord(&eregion, (EDTChord*) &_chord, &suffixfound)) return false;
1419#endif
1420 SetMeasurePos(pEntry->GetMeasurePos());
1422 return true;
1423 }
1424#endif // PDK_FRAMEWORK_ENTRIES
1425
1436
1437#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
1439 luabridge::RefCountedPtr<FCChordSuffixElements> CreateChordSuffixElements_GC() const
1440 { return makeLuaSharedPtr(CreateChordSuffixElements()); }
1441#endif
1442
1455 {
1456 if (GetChordSuffixID()) return GetChordSuffixID();
1457 if (GetChordRootLowercase()) return 65533;
1458 return 65534;
1459 }
1460
1461
1472
1473#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
1475 luabridge::RefCountedPtr<FCFretboardGroupDef> CreateFretboardGroupDef_GC() const
1476 { return makeLuaSharedPtr(CreateFretboardGroupDef()); }
1477#endif
1478
1479#ifdef PDK_FRAMEWORK_ENTRIES
1488#endif // PDK_FRAMEWORK_ENTRIES
1489
1490 /* ******* CHORD GETTERS ********** */
1491
1501 twobyte GetChordSuffixID() const { return _chord.suffix; }
1502
1507 twobyte GetChordHorizontalPos() const { return _chord.posadd; }
1508
1513 twobyte GetChordVerticalPos() const { return _chord.lineadd; }
1514
1519 bool GetChordVisible() const { return !GetBitFlag(_chord.capoData, 0x0080); }
1520
1525 twobyte GetChordResize() const { return _chord.chPercent; }
1526
1532 {
1533 return GetBitFlag(_chord.showPlay, CHORD_SHOWROOT);
1534 }
1535
1541 {
1542 return GetBitFlag(_chord.showPlay, CHORD_PLAYROOT);
1543 }
1544
1550 {
1551 return GetBitFlag(_chord.showPlay, CHORD_LOWERCASE);
1552 }
1553
1559 {
1560 return GetBitFlag(_chord.showPlay, CHORD_SHOW_SUFFIX);
1561 }
1562
1568 {
1569 return GetBitFlag(_chord.showPlay, CHORD_PLAYCHORD);
1570 }
1571
1576 bool GetUseCapo() const
1577 {
1578 return GetBitFlag(_chord.capoData, CHORD_USE_LOCAL_CAPO);
1579 }
1580
1586 twobyte GetCapo() const
1587 {
1588 return (_chord.capoData & CHORD_CAPO_VALUE);
1589 }
1590
1595 twobyte GetScaleNumber() const
1596 {
1597 return _chord.showPlay & CHORD_SCALENUM;
1598 }
1599
1604 twobyte GetAlteration() const
1605 {
1606 twobyte alteration = _chord.showPlay & CHORD_RLBITS;
1607 alteration >>= 8;
1608 if (alteration & 0x08)
1609 {
1610 /* Signed */
1611 alteration |= 0xfff0;
1612 }
1613 return alteration;
1614 }
1615
1621 {
1622 return GetBitFlag(_chord.altbass, CHORD_SHOWALTBASS);
1623 }
1624
1630 {
1631 return GetBitFlag(_chord.altbass, CHORD_PLAYALTBASS);
1632 }
1633
1639 {
1640 return GetBitFlag(_chord.altbass, CHORD_LOWERCASE);
1641 }
1642
1648 {
1649 return _chord.altbass & CHORD_SCALENUM;
1650 }
1651
1659 {
1660 twobyte alteration = _chord.altbass & CHORD_RLBITS;
1661 alteration >>= 8;
1662 if (alteration & 0x08)
1663 {
1664 /* Signed */
1665 alteration |= 0xfff0;
1666 }
1667 return alteration;
1668 }
1669
1676#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1678#else
1679 int
1680#endif
1682 {
1683 if (GetBitFlag(_chord.altbass, CHORD_DOWNSIDEBIT) == false)
1684 {
1685 if (GetBitFlag(_chord.altbass, CHORD_SUBTEXTBIT))
1686 return ALTBASSPLACE_SUBTEXT;
1687 else
1688 return ALTBASSPLACE_AFTERROOT;
1689 }
1690 else return ALTBASSPLACE_UNDERROOT;
1691 }
1692
1693 /* ******* FRETBOARD GETTERS ********** */
1694
1701 twobyte GetFretboardStyleID() const { return _chord.fbStyleID; }
1702
1707 twobyte GetFretboardHorizontalPos() const { return _chord.fbposadd; }
1708
1713 twobyte GetFretboardVerticalPos() const { return _chord.fblineadd; }
1714
1719 // Use absolute bit mask, since the CHORD_HIDE_FRETBOARD is reversed
1720 bool GetFretboardVisible() const { return GetBitFlag(_chord.showPlay, 0x4000); }
1721
1726 twobyte GetFretboardResize() const { return _chord.fbPercent; }
1727
1733 {
1734 return GetBitFlag(_chord.showPlay, CHORD_PLAYFRETBOARD);
1735 }
1736
1742 {
1743 return GetBitFlag(_chord.fbData, CHORD_USE_FRET_FONT);
1744 }
1745
1755 int GetFretboardID() const { return _GetFretboardGroupInci() + 1; }
1756
1757 /* ******* CHORD SETTERS ********** */
1758
1766 void SetChordSuffixID(twobyte value) { _chord.suffix = value; }
1767
1772 void SetChordHorizontalPos(twobyte value) { _chord.posadd = value; }
1773
1778 void SetChordVerticalPos(twobyte value) { _chord.lineadd = value; }
1779
1784 void SetChordVisible(bool state) { Set16BitFlag(&_chord.capoData, 0x0080, !state); }
1785
1790 void SetChordResize(twobyte value) { _chord.chPercent = value; }
1791
1796 void SetChordRootVisible(bool state)
1797 {
1798 Set16BitFlag((FLAG_16*)&_chord.showPlay, CHORD_SHOWROOT, state);
1799 }
1800
1805 void SetChordRootPlayback(bool playback)
1806 {
1807 Set16BitFlag((FLAG_16*)&_chord.showPlay, CHORD_PLAYROOT, playback);
1808 }
1809
1814 void SetChordRootLowercase(bool state)
1815 {
1816 Set16BitFlag((FLAG_16*)&_chord.showPlay, CHORD_LOWERCASE, state);
1817 }
1818
1823 void SetChordSuffixVisible(bool state)
1824 {
1825 Set16BitFlag((FLAG_16*)&_chord.showPlay, CHORD_SHOW_SUFFIX, state);
1826 }
1827
1832 void SetChordSuffixPlayback(bool playback)
1833 {
1834 Set16BitFlag((FLAG_16*)&_chord.showPlay, CHORD_PLAYCHORD, playback);
1835 }
1836
1842 {
1843 Set16BitFlag((FLAG_16*)&_chord.altbass, CHORD_SHOWALTBASS, state);
1844 }
1845
1851 {
1852 Set16BitFlag((FLAG_16*)&_chord.altbass, CHORD_PLAYALTBASS, playback);
1853 }
1854
1860 {
1861 Set16BitFlag((FLAG_16*)&_chord.altbass, CHORD_LOWERCASE, lowercase);
1862 }
1863
1871#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1873#else
1874 int
1875#endif
1876 placement
1877 )
1878 {
1879 switch (placement)
1880 {
1881 case ALTBASSPLACE_AFTERROOT:
1882 Set16BitFlag((FLAG_16*)&_chord.altbass, CHORD_DOWNSIDEBIT, false);
1883 Set16BitFlag((FLAG_16*)&_chord.altbass, CHORD_SUBTEXTBIT, false);
1884 break;
1885 case ALTBASSPLACE_UNDERROOT:
1886 Set16BitFlag((FLAG_16*)&_chord.altbass, CHORD_DOWNSIDEBIT, true);
1887 Set16BitFlag((FLAG_16*)&_chord.altbass, CHORD_SUBTEXTBIT, false);
1888 break;
1889 case ALTBASSPLACE_SUBTEXT:
1890 Set16BitFlag((FLAG_16*)&_chord.altbass, CHORD_DOWNSIDEBIT, false);
1891 Set16BitFlag((FLAG_16*)&_chord.altbass, CHORD_SUBTEXTBIT, true);
1892 break;
1893 }
1894 }
1895
1900 void SetUseCapo(bool state)
1901 {
1902 Set16BitFlag((FLAG_16*)&_chord.capoData, CHORD_USE_LOCAL_CAPO, state);
1903 }
1904
1910 void SetCapo(twobyte value)
1911 {
1912 _chord.capoData &= ~CHORD_CAPO_VALUE;
1913 _chord.capoData |= (value & CHORD_CAPO_VALUE);
1914 }
1915
1920 void SetScaleNumber(twobyte scalenumber)
1921 {
1922 _chord.showPlay &= ~CHORD_SCALENUM;
1923 _chord.showPlay |= (scalenumber & CHORD_SCALENUM);
1924 }
1925
1930 void SetAlteration(twobyte alteration)
1931 {
1932 alteration <<= 8;
1933 alteration &= CHORD_RLBITS;
1934 _chord.showPlay &= ~CHORD_RLBITS;
1935 _chord.showPlay |= alteration;
1936 }
1937
1942 void SetAlternateBassScaleNumber(twobyte scalenumber)
1943 {
1944 _chord.altbass &= ~CHORD_SCALENUM;
1945 _chord.altbass |= (scalenumber & CHORD_SCALENUM);
1946 }
1947
1954 void SetAlternateBassAlteration(twobyte alteration)
1955 {
1956 alteration <<= 8;
1957 alteration &= CHORD_RLBITS;
1958 _chord.altbass &= ~CHORD_RLBITS;
1959 _chord.altbass |= alteration;
1960 }
1961
1962
1963 /* ******* FRETBOARD SETTERS ********** */
1964
1971 void SetFretboardStyleID(twobyte value) { _chord.fbStyleID = value; }
1972
1977 void SetFretboardHorizontalPos(twobyte value) { _chord.fbposadd = value; }
1978
1983 void SetFretboardVerticalPos(twobyte value) { _chord.fblineadd = value; }
1984
1989 // Use absolute bit mask, since the CHORD_HIDE_FRETBOARD is reversed
1990 void SetFretboardVisible(bool state) { Set16BitFlag((FLAG_16*)&_chord.showPlay, 0x4000, state); }
1991
1996 void SetFretboardResize(twobyte value) { _chord.fbPercent = value; }
1997
2002 void SetFretboardPlayback(bool playback)
2003 {
2004 Set16BitFlag((FLAG_16*)&_chord.showPlay, CHORD_PLAYFRETBOARD, playback);
2005 }
2006
2011 void SetFretboardUseFont(bool state)
2012 {
2013 Set16BitFlag(&_chord.fbData, CHORD_USE_FRET_FONT, state);
2014 }
2015
2022 void SetFretboardID(int value) { _SetFretboardGroupInci((std::max)(0, value - 1)); }
2023
2024#ifdef PDK_FRAMEWORK_DEBUG
2025 void DebugDump() override
2026 {
2028 DebugOutBlock(&_chord, 0, sizeof(_chord));
2029 DebugOutBool("Chord Visible: ", GetChordVisible());
2030 DebugOutBool("Fretboard Visible: ", GetFretboardVisible());
2031 }
2032#endif
2033};
2034
2035
2036
2045{
2046#ifndef DOXYGEN_SHOULD_SKIP_THIS
2047 EDTTGraphic _graphic;
2048
2049 /* No measure flag? */
2050 void _SaveMeasureFlag() override {}
2051
2053 bool SaveNew() override
2054 { return false; }
2055
2057 bool _RawRelink() override;
2058
2059protected:
2060 EXTAG Tag() const override { return dt_MeasGraphic; }
2061 int DataSizeLoad() const override { return sizeof(EDTTGraphic); }
2062 int DataSizeSave() const override { return sizeof(EDTTGraphic); }
2063 void* Allocate() override { return (void*) &_graphic; }
2064
2069 void CloneMemoryFrom(__FCBaseData* pSource) override
2070 {
2071 memcpy(&_graphic, ((FCCellGraphic*)pSource)->_GetGraphic(), sizeof(_graphic));
2072 _datablock = &_graphic;
2073 _loadedsize = sizeof(_graphic);
2074 }
2075
2076 __FCBaseData* CreateObject() override { return new FCCellGraphic(); }
2077#endif
2078public:
2079
2080 const char* ClassName() const override { return "FCCellGraphic"; }
2081 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_CELLGRAPHIC; }
2082
2083#ifndef DOXYGEN_SHOULD_SKIP_THIS
2084 EDTTGraphic* _GetGraphic() { return &_graphic; }
2085#endif
2086
2089 {
2090 memset(&_graphic, 0, sizeof(_graphic));
2091 _loadedsize = sizeof(_graphic);
2092 _datablock = &_graphic;
2093 }
2094
2100 {
2101 return MAKEBOOL(_graphic.graphicCmper);
2102 }
2103
2108 Evpu16 GetHorizontalPos() const
2109 {
2110 return _graphic.left;
2111 }
2112
2117 Evpu16 GetVerticalPos() const
2118 {
2119 return _graphic.bottom;
2120 }
2121
2126 Evpu16 GetWidth() const
2127 {
2128 return _graphic.width;
2129 }
2130
2135 Evpu16 GetHeight() const
2136 {
2137 return _graphic.height;
2138 }
2139
2144 Evpu16 GetOriginalWidth() const
2145 {
2146 return _graphic.origWidth;
2147 }
2148
2153 Evpu16 GetOriginalHeight() const
2154 {
2155 return _graphic.origHeight;
2156 }
2157
2164 bool GetVisible() const { return !GetBitFlag(_graphic.displayFlags, GRAPHIC_DISPLAY_HIDDEN); }
2165
2166 /* SETTERS */
2167
2172 void SetHorizontalPos(Evpu16 pos)
2173 {
2174 _graphic.left = pos;
2175 _graphic.rightPgLeft = pos;
2176 }
2177
2185 void SetVerticalPos(Evpu16 pos)
2186 {
2187 _graphic.bottom = pos;
2188 _graphic.rightPgBottom = pos;
2189 }
2190
2195 void SetWidth(Evpu16 width)
2196 {
2197 _graphic.width = width;
2198 }
2199
2204 void SetHeight(Evpu16 height)
2205 {
2206 _graphic.height = height;
2207 }
2208
2213 void SetVisible(bool state)
2214 {
2215 Set16BitFlag(&_graphic.displayFlags, GRAPHIC_DISPLAY_HIDDEN, !state);
2216 }
2217
2218#ifdef PDK_FRAMEWORK_DEBUG
2219 void DebugDump() override
2220 {
2222 }
2223#endif
2224};
2225
2226
2227
2228
2236{
2237#ifndef DOXYGEN_SHOULD_SKIP_THIS
2238 EDTMeasureText _measuretext;
2239
2241 void _SaveMeasureFlag() override;
2242
2243protected:
2244 EXTAG Tag() const override { return dt_MeasureTextBlock; }
2245 int DataSizeLoad() const override { return sizeof(EDTMeasureText); }
2246 int DataSizeSave() const override { return sizeof(EDTMeasureText); }
2247 void* Allocate() override { return (void*) &_measuretext; }
2248
2253 void CloneMemoryFrom(__FCBaseData* pSource) override
2254 {
2255 memcpy(&_measuretext, ((FCCellText*)pSource)->_GetCellText(), sizeof(_measuretext));
2256 _datablock = &_measuretext;
2257 _loadedsize = sizeof(_measuretext);
2258 }
2259
2260 __FCBaseData* CreateObject() override { return new FCCellText(); }
2261#endif // DOXYGEN_SHOULD_SKIP_THIS
2262public:
2263
2264 const char* ClassName() const override { return "FCCellText"; }
2265 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_CELLTEXT; }
2266
2267#ifndef DOXYGEN_SHOULD_SKIP_THIS
2268 EDTMeasureText* _GetCellText() { return &_measuretext; }
2269#endif
2270
2276 {
2277 memset(&_measuretext, 0, sizeof(_measuretext));
2278 _loadedsize = sizeof(_measuretext);
2279 _datablock = &_measuretext;
2280 }
2281
2292 {
2293 FCTextBlock textblock;
2294 textblock.Load(GetTextBlockID());
2295 return textblock.CreateRawTextString();
2296 }
2297
2298#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
2300 luabridge::RefCountedPtr<FCString> CreateTextString_GC()
2301 { return makeLuaSharedPtr(CreateTextString()); }
2302#endif
2303
2313
2314#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
2316 luabridge::RefCountedPtr<FCTextBlock> CreateTextBlock_GC()
2317 { return makeLuaSharedPtr(CreateTextBlock()); }
2318#endif
2319
2327 bool SaveNewTextBlock(FCString* pString);
2328
2335 bool SaveTextString(FCString* pString);
2336
2341 twobyte GetTextBlockID() const
2342 {
2343 return _measuretext.block;
2344 }
2345
2353 CMPER GetStringID() const;
2354
2361 TimeEdu32 GetMeasurePos() const override
2362 {
2363 return _measuretext.xdisp;
2364 }
2365
2370 twobyte GetVerticalPos() const
2371 {
2372 return _measuretext.ydisp;
2373 }
2374
2380 bool GetVisible() const
2381 {
2382 return !GetBitFlag(_measuretext.flag, (MEASURETEXT_ANNOTATION));
2383 }
2384
2391 void SetMeasurePos(TimeEdu32 value)
2392 {
2393 _measuretext.xdisp = (Evpu16) value;
2394 }
2395
2400 void SetVerticalPos(twobyte value)
2401 {
2402 _measuretext.ydisp = value;
2403 }
2404
2410 void SetVisible(bool visible)
2411 {
2412 Set16BitFlag(&_measuretext.flag, MEASURETEXT_ANNOTATION, !visible);
2413 }
2414
2415#ifdef PDK_FRAMEWORK_DEBUG
2416 void DebugDump() override
2417 {
2419 }
2420#endif
2421};
2422
2423
2424
2425
2426
2427
2438{
2439protected:
2440#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2441 __FCBaseData* CreateElement() override { return new FCCellGraphic(); }
2442#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2443public:
2444 const char* ClassName() const override { return "FCCellGraphics"; }
2445
2450 FCCellGraphic* GetItemAt(int index) const { return (FCCellGraphic*) __FCCollection::GetItemAt(index); }
2451};
2452
2453
2454
2463{
2464protected:
2465#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2466 __FCBaseData* CreateElement() override { return new FCCellText(); }
2467#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2468public:
2474
2475 const char* ClassName() const override { return "FCCellTexts"; }
2476
2482};
2483
2484
2485
2486
2492{
2493 protected:
2494#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2495 __FCBaseData* CreateElement() override { return new FCCellFrameHold(); }
2496#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2497public:
2498 const char* ClassName() const override { return "FCCellFrameHolds"; }
2499
2500};
2501
2502
2503
2512{
2513protected:
2514#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2515 __FCBaseData* CreateElement() override { return new FCMidiExpression(); }
2516#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2517public:
2518 const char* ClassName() const override { return "FCMidiExpressions"; }
2519
2525};
2526
2527
2536{
2537protected:
2538#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2539 __FCBaseData* CreateElement() override { return new FCChord(); }
2540#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2541public:
2542 const char* ClassName() const override { return "FCChords"; }
2543
2548 FCChord* FindMeasurePos(TimeEdu32 durationpos)
2549 {
2550 for (int i = 0; i < GetCount(); i++ )
2551 {
2552 FCChord* pChord = (FCChord*) GetItemAt(i);
2553 if (pChord->GetMeasurePos() == durationpos) return pChord;
2554 }
2555 return NULL;
2556 }
2557
2559 FCChord* GetItemAt(int index) const { return (FCChord*) __FCCollectionCellDetail::GetItemAt(index); }
2560};
2561
2562
2563
2568{
2569#ifndef DOXYGEN_SHOULD_SKIP_THIS
2570#if FXT_VERSION < FINALEVERSION_2014
2571 EDTMeasureFloat _measurefloat2014; /* Dummy struct */
2572 EDTMeasureFloat _measurefloat2001;
2573#else
2574 EDTMeasureFloat2014 _measurefloat2014;
2575 EDTMeasureFloat2001 _measurefloat2001;
2576#endif
2577
2579 EVERSION _VersionToUse() const;
2580protected:
2581 /* Set measure flag? */
2582 void _SaveMeasureFlag() override {}
2583
2584 EXTAG Tag() const override;
2585 int DataSizeLoad() const override;
2586 int DataSizeSave() const override;
2587 void* Allocate() override;
2588 EVERSION EnigmaVersion() const override { return _VersionToUse(); }
2589
2594 void CloneMemoryFrom(__FCBaseData* pSource) override
2595 {
2596 memcpy(_GetDataPtr(), ((FCIndependentCellDetail*) pSource)->_GetDataPtr(), DataSizeLoad());
2597 _datablock = _GetDataPtr();
2599 }
2600
2601 __FCBaseData* CreateObject() override { return new FCIndependentCellDetail(); }
2602#endif
2603public:
2604
2605 const char* ClassName() const override { return "FCIndependentCellDetail"; }
2606 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_INDEPENDENTCELLDETAIL; }
2607
2608#ifndef DOXYGEN_SHOULD_SKIP_THIS
2609 void* _GetDataPtr();
2610#endif
2611
2614 {
2615 int size = FCIndependentCellDetail::DataSizeLoad(); /* Assure non-virtual call in constructor */
2616 memset(_GetDataPtr(), 0, size);
2617 _datablock = _GetDataPtr();
2618 _loadedsize = size;
2619 }
2620
2623 bool GetHasKeySignature();
2624
2627 bool GetHasTimeSignature();
2628
2632
2634 eKey GetKeySignatureID();
2635
2637 twobyte GetTimeSignatureBeats();
2638
2641
2644
2647
2651
2655
2659
2663
2666
2668 void GetFullTimeSignature(FCTimeSignature* pTimeSig);
2669
2672
2675 void SetHasKeySignature(bool state);
2676
2679 void SetHasTimeSignature(bool state);
2680
2683 void SetHasTimeSignatureForDisplay(bool state);
2684
2686 void SetKeySignatureID(eKey value);
2687
2689 void SetTimeSignatureBeats(twobyte beats);
2690
2692 void SetTimeSignatureBeatsForDisplay(twobyte beats);
2693
2695 void SetTimeSignatureBeatDuration(twobyte beatduration);
2696
2698 void SetTimeSignatureBeatDurationForDisplay(twobyte beatduration);
2699
2702 void SetTimeSignatureCompositeTop(bool state);
2703
2707
2710 void SetTimeSignatureCompositeBottom(bool state);
2711
2715
2717 void SetTimeSignatureAbbreviateForDisplay(bool state);
2718
2720 void SetFullTimeSignature(FCTimeSignature* pTimeSig);
2721
2724
2726 void SetFullKeySignature(FCKeySignature* pKeySig);
2727
2728#ifdef PDK_FRAMEWORK_DEBUG
2729 void DebugDump() override
2730 {
2732 }
2733#endif
2734};
2735
2736#ifdef PDK_FRAMEWORK_ENTRIES
2737
2766{
2767 constexpr static int kMaxAbsFinaleAleration = 7; // Finale has a hard-coded limit on the magnitude of chromatic alteration values
2768 using _transposeInputs = std::tuple<eHarmLev, eHarmAlt, const FCKeySignature*>;
2769
2770 template<typename... Args>
2771 using _transposeFunPtr = bool(FCTransposer::*)(_transposeInputs& inputs, Args... args);
2772
2773 // to support more target entities, add them to the std::variant
2774 std::variant<_transposeInputs, FCNote*, FCChord*> _target;
2775
2776 template<typename... Args>
2777 bool _executeForInputs(_transposeInputs& inputs, _transposeFunPtr<Args...> funPtr, Args... args)
2778 { return (this->*funPtr)(inputs, args...); }
2779
2780 template<typename... Args>
2781 bool _executeForNote(FCNote* pNote, _transposeFunPtr<Args...> funPtr, Args... args)
2782 {
2783 FCCell cell(pNote->GetEntry()->GetMeasure(), pNote->GetEntry()->GetStaff());
2784 _transposeInputs inputs = std::make_tuple(pNote->GetDisplacement(), pNote->GetRaiseLower(), cell.GetKeySignature());
2785 const bool success = _executeForInputs(inputs, funPtr, args...);
2786 if (success)
2787 {
2788 pNote->SetDisplacement(std::get<0>(inputs));
2789 pNote->SetRaiseLower(std::get<1>(inputs));
2790 }
2791 return success;
2792 }
2793
2794 template<typename... Args>
2795 bool _executeForChord(FCChord* pChord, _transposeFunPtr<Args...> funPtr, Args... args)
2796 {
2797 FCCell cell(pChord->GetMeasure(), pChord->GetStaff());
2798 const FCKeySignature* key = cell.GetKeySignature();
2799 _transposeInputs inputs1 = std::make_tuple(pChord->GetScaleNumber(), pChord->GetAlteration(), key);
2800 _transposeInputs inputs2 = std::make_tuple(pChord->GetAlternateBassScaleNumber(), pChord->GetAlternateBassAlteration(), key);
2801 const bool success = _executeForInputs(inputs1, funPtr, args...) && _executeForInputs(inputs2, funPtr, args...);
2802 if (success)
2803 {
2804 pChord->SetScaleNumber(key->CalcScaleNumber(std::get<0>(inputs1)));
2805 pChord->SetAlteration(std::get<1>(inputs1));
2806 pChord->SetAlternateBassScaleNumber(key->CalcScaleNumber(std::get<0>(inputs2)));
2807 pChord->SetAlternateBassAlteration(std::get<1>(inputs2));
2808 }
2809 return success;
2810 }
2811
2812 template<typename... Args>
2813 bool _execute(_transposeFunPtr<Args...> funPtr, Args... args)
2814 {
2815 if (std::holds_alternative<_transposeInputs>(_target))
2816 return _executeForInputs(std::get<0>(_target), funPtr, args...);
2817 else if (std::holds_alternative<FCNote*>(_target))
2818 return _executeForNote(std::get<1>(_target), funPtr, args...);
2819 else if (std::holds_alternative<FCChord*>(_target))
2820 return _executeForChord(std::get<2>(_target), funPtr, args...);
2821 else
2822 assert(false); // std variant not initialized, which should be impossible
2823 return false;
2824 }
2825
2826 bool _DiatonicTranspose(_transposeInputs& inputs, eHarmLev interval)
2827 {
2828 std::get<0>(inputs) += interval;
2829 return true;
2830 }
2831
2832 bool _OctaveTranspose(_transposeInputs& inputs, twobyte numberofoctaves)
2833 { return _DiatonicTranspose(inputs, 7*numberofoctaves); }
2834
2835 bool _EDOStepTranspose(_transposeInputs& inputs, twobyte numberofsteps)
2836 {
2837 std::get<1>(inputs) += numberofsteps;
2838 return _SimplifySpelling(inputs, 0);
2839 }
2840
2841 bool _SimplifySpelling(_transposeInputs& inputs, twobyte minAbsAlteration);
2842 bool _EnharmonicTranspose(_transposeInputs& inputs, twobyte direction, bool ignoreerrors);
2843 bool _DefaultEnharmonicTranspose(_transposeInputs& inputs);
2844 bool _ChromaticTranspose(_transposeInputs& inputs, eHarmLev interval, eHarmAlt alteration, bool simplify);
2845
2846public:
2847#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2848 const char* ClassName() const override { return "FCTransposer"; }
2849#endif // DOXYGEN_SHOULD_IGNORE_THIS
2850
2859 FCTransposer(eHarmLev displacement, eHarmAlt raiselower, const FCKeySignature* key)
2860 : _target(std::make_tuple(displacement, raiselower, key))
2861 {}
2862
2863#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2865 template<class FC>
2866 FCTransposer(FC* pEntity) : _target(pEntity)
2867 {}
2868#endif // DOXYGEN_SHOULD_IGNORE_THIS
2869
2878 eHarmLev GetDisplacement() const
2879 {
2880 if (std::holds_alternative<_transposeInputs>(_target))
2881 return std::get<0>(std::get<_transposeInputs>(_target));
2882#ifdef PDK_FRAMEWORK_LUAFRIENDLY
2883 throw std::runtime_error("invalid target for FCTransposer::GetDisplacement");
2884#endif
2885 return 0;
2886 }
2887
2896 eHarmLev GetRaiseLower() const
2897 {
2898 if (std::holds_alternative<_transposeInputs>(_target))
2899 return std::get<1>(std::get<_transposeInputs>(_target));
2900#ifdef PDK_FRAMEWORK_LUAFRIENDLY
2901 throw std::runtime_error("invalid target for FCTransposer::GetRaiseLower");
2902#endif
2903 return 0;
2904 }
2905
2912 void DiatonicTranspose(eHarmLev interval)
2913 { _execute(&FCTransposer::_DiatonicTranspose, interval); }
2914
2921 void OctaveTranspose(twobyte numberofoctaves)
2922 { _execute(&FCTransposer::_OctaveTranspose, numberofoctaves); }
2923
2934 bool EnharmonicTranspose(twobyte direction)
2935 { return _execute(&FCTransposer::_EnharmonicTranspose, direction, false); }
2936
2948 { return _execute(&FCTransposer::_DefaultEnharmonicTranspose); }
2949
2961 { return _execute(&FCTransposer::_SimplifySpelling, (twobyte)0); }
2962
2976 bool ChromaticTranspose(eHarmLev interval, eHarmAlt alteration, bool simplify = false)
2977 { return _execute(&FCTransposer::_ChromaticTranspose, interval, alteration, simplify); }
2978
2991 bool EDOStepTranspose(twobyte numberofsteps)
2992 { return _execute(&FCTransposer::_EDOStepTranspose, numberofsteps); }
2993};
2994
2995#endif // PDK_FRAMEWORK_ENTRIES
2996
2997
2998#endif /* FF_CELLDETAILS_H */
Base class for all data-related classes (that handles Finale data).
Definition ff_base.h:676
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 * _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 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
Base class for the Finale Framework classes.
Definition ff_base.h:71
static void DebugOutHex(const char *pszPrefixText, int i)
Static method that outputs a line for debugging purposes. The text appears with the extra digit (in h...
Definition finaleframework.cpp:404
void Set16BitFlag(FLAG_16 *flag, FLAG_16 flagbits, bool state)
Sets a 16 bit flag.
Definition finaleframework.cpp:635
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
bool GetBitFlag(FLAG_32 flag, FLAG_32 flagbits) const
Gets a state from flag bits. Returns true if any bit in the mask is set.
Definition ff_base.h:485
virtual void DebugDump()
Outputs the class data/information for debugging purposes.
Definition finaleframework.cpp:609
static void DebugOutBool(const char *pszPrefixText, bool state)
Static method that outputs a line for debugging purposes. The boolean state appears afterwards as eit...
Definition finaleframework.cpp:451
virtual const char * ClassName() const =0
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
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 for data that attach to cells. A call to the ConnectCell method is required prior to loadi...
Definition ff_celldetails.h:27
virtual eMeas GetMeasure() const
Returns the connected measure (based on the connected cell or actual storage).
Definition ff_celldetails.h:115
bool LoadPrevious() override
Definition finaleframework.cpp:21990
bool LoadLast() override
Overloads the LoadLast method with a one that loads the cell data into cmper1 (staff),...
Definition finaleframework.cpp:21958
void ConnectCell(FCCell *pCell)
Connects the object to a cell. This must be done prior to any load/save operations.
Definition ff_celldetails.h:62
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_celldetails.h:136
virtual bool SaveNew()
Creates new data. Make sure to call __FCCellDetail::ConnectCell() first.
Definition finaleframework.cpp:22000
FCCell * GetConnectedCell() const
Returns the connected cell.
Definition ff_celldetails.h:66
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:47
bool LoadFirst() override
Overloads the LoadFirst method with a one that loads the cell data into cmper1 (staff),...
Definition finaleframework.cpp:21943
virtual TimeEdu32 GetMeasurePos() const
Virtual method for cell-attached data that has a position in the measure.
Definition ff_celldetails.h:100
virtual twobyte GetStaff() const
Returns the connected staff (based on the connected cell).
Definition ff_celldetails.h:127
bool LoadNext() override
Overloaded method of LoadNext that will only load incis within the same cmper1/cmper2.
Definition finaleframework.cpp:21980
Base class specially designed for collections of detail classes connected to cell data.
Definition ff_celldetails.h:184
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:186
virtual int LoadAllInCell(FCCell *pCell)
Loads all incis for a specific cell.
Definition finaleframework.cpp:22032
__FCCollectionCellDetail()
The constructor.
Definition ff_celldetails.h:190
int LoadAll() override
Loads the object for all the cells in the document.
Definition finaleframework.cpp:22078
int LoadAllForRegion(FCMusicRegion *pMusicRegion)
Loads the objects for all the cells in the region.
Definition finaleframework.cpp:22056
Base class specially designed for collections of detail classes.
Definition ff_basecollection.h:880
int GetCount() const
Returns the number of elements of the collection.
Definition ff_basecollection.h:102
__FCBase * GetItemAt(int index) const
Returns the object at the index position. Index is 0-based.
Definition finaleframework.cpp:13767
Base class specially designed for collections of detail classes (where inci always is 0) connected to...
Definition ff_celldetails.h:233
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:235
int LoadAllInRegion(FCMusicRegion *pMusicRegion)
Loads the objects for all the cells in the region.
Definition finaleframework.cpp:22267
__FCCollectionNoInciCellDetail()
The constructor.
Definition ff_celldetails.h:239
Base class for details data where inci always is 0.
Definition ff_celldetails.h:158
bool Load()
Loads the data for the connected cell. Make sure to call ConnectCell first.
Definition ff_celldetails.h:173
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:163
virtual bool Load(CMPER itemno)
Loads the indicated item.
Definition finaleframework.cpp:4719
Contains a clef change inside a cell. This is an item member in a FCCellClefChanges collection (creat...
Definition ff_other.h:25850
Collection class for FCCellClefChange class objects, containing all mid-clef changes in a cell.
Definition ff_othercollection.h:2247
Class that holds the TGF frames and the clef changes of a TGF frame.
Definition ff_celldetails.h:956
bool MakeCellSingleClef(const FCCellClefChange *pClefInfo=nullptr)
Converts the current FCCellFrameHold instance to single-clef, using the input FCCellClefChange....
Definition finaleframework.cpp:22451
CLEF_SHOW GetClefShow() const
Returns the show state for the first clef in the frame.
Definition ff_celldetails.h:1038
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:987
bool GetClefAfterBarline() const
Returns true if the clef should be placed after the barline.
Definition ff_celldetails.h:1061
FCCellClefChanges * CreateCellClefChanges()
Creates a FCCellClefChanges collection for the cell, containing all clef changes.
Definition finaleframework.cpp:22489
bool SetCellClefChanges(FCCellClefChanges *pClefChanges)
Sets the clefs in the cell to match those in the input FCCellClefChanges.
Definition finaleframework.cpp:22500
CLEF_SHOW
The clef display states. Used for FCCellFrameHold::GetClefShow and FCCellFrameHold::SetClefShow....
Definition ff_celldetails.h:1001
bool GetIsClefList() const
Returns if the frame contains a clef list or not.
Definition ff_celldetails.h:1052
bool CalcHasFrameAtLayer(int layernum) const
Calculates if this cell has a frame for the specified layer.
Definition ff_celldetails.h:1164
bool CalcClefChange()
Calculates if there really is a clef change at the beginning of the cell.
Definition finaleframework.cpp:22339
twobyte GetClefIndex() const
Gets the 0-based clef number for the first clef in the frame.
Definition ff_celldetails.h:1018
twobyte GetClefPercent() const
Gets the clef resize percent for the first clef in the frame. Only used if GetClefShow returns SHOWCL...
Definition ff_celldetails.h:1025
void SetClefPercent(twobyte resize)
Sets the clef resize percent. Only used if GetClefShow returns SHOWCLEF_ALWAYS.
Definition ff_celldetails.h:1082
bool CalcMultiLayeredCell()
Calculates if this cell has multiple layers.
Definition ff_celldetails.h:1175
bool CalcHasFrame() const
Calculates if this cell has a frame.
Definition ff_celldetails.h:1150
void SetClefShow(CLEF_SHOW value)
Sets the show state for the first clef in the frame.
Definition ff_celldetails.h:1096
void SetClefIndex(twobyte newclef)
Sets the 0-based clef number for the first clef in the frame.
Definition ff_celldetails.h:1069
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_celldetails.h:988
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_celldetails.h:1267
bool SaveNew() override
Overwritten method for SaveNew.
Definition finaleframework.cpp:22397
FCCellClefChange * CreateFirstCellClefChange() const
Creates a FCCellClefChange record from the either the FCCellFrameHold or the first mid-measure clef a...
Definition finaleframework.cpp:22428
void SetClefAfterBarline(bool state)
Sets if the clef should be placed after the barline.
Definition ff_celldetails.h:1130
FCCellFrameHold()
The constructor.
Definition finaleframework.cpp:22322
Collection class for FCCellFrameHold class objects.
Definition ff_celldetails.h:2492
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:2498
Class for measure/cell-attached graphic objects. Currently, this class can only be used to edit exist...
Definition ff_celldetails.h:2045
void SetVerticalPos(Evpu16 pos)
Sets the graphic rectangle's bottom position, in EVPUs.
Definition ff_celldetails.h:2185
void SetVisible(bool state)
Sets the visibility state of the graphic.
Definition ff_celldetails.h:2213
Evpu16 GetOriginalWidth() const
Returns the original graphic rectangle's width (before stretching), in EVPUs.
Definition ff_celldetails.h:2144
void SetWidth(Evpu16 width)
Sets the graphic rectangle's width, in EVPUs.
Definition ff_celldetails.h:2195
bool IsEmbedded()
Returns true if the graphic is embedded in the document.
Definition ff_celldetails.h:2099
Evpu16 GetHorizontalPos() const
Returns the graphic rectangle's left-side position, in EVPUs.
Definition ff_celldetails.h:2108
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_celldetails.h:2081
void SetHorizontalPos(Evpu16 pos)
Sets the graphic rectangle's left-side position, in EVPUs.
Definition ff_celldetails.h:2172
Evpu16 GetHeight() const
Returns the graphic rectangle's height, in EVPUs.
Definition ff_celldetails.h:2135
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:2080
bool GetVisible() const
Returns the visibility status of the page graphic.
Definition ff_celldetails.h:2164
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_celldetails.h:2219
Evpu16 GetOriginalHeight() const
Returns the original graphic rectangle's height (before stretching), in EVPUs.
Definition ff_celldetails.h:2153
FCCellGraphic()
The constructor.
Definition ff_celldetails.h:2088
Evpu16 GetWidth() const
Returns the graphic rectangle's width, in EVPUs.
Definition ff_celldetails.h:2126
Evpu16 GetVerticalPos() const
Returns the graphic rectangle's bottom position, in EVPUs.
Definition ff_celldetails.h:2117
void SetHeight(Evpu16 height)
Sets the graphic rectangle's height, in EVPUs.
Definition ff_celldetails.h:2204
Collection class for FCCellGraphic class objects.
Definition ff_celldetails.h:2438
FCCellGraphic * GetItemAt(int index) const
Overridden GetItemAt() method.
Definition ff_celldetails.h:2450
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:2444
The class that reference a cell (one measure on one staff) in the musical "grid".
Definition ff_cell.h:18
FCKeySignature * GetKeySignature()
Returns a pointer to the key signature object.
Definition finaleframework.cpp:20178
int GetMeasure() const
Returns the measure for the cell.
Definition ff_cell.h:120
int GetStaff() const
Returns the staff for the cell.
Definition ff_cell.h:128
Class for measure-attached (cell-attached) text blocks. The ConnectCell method must be called prior t...
Definition ff_celldetails.h:2236
FCString * CreateTextString()
Gets a pointer to the text string, as a string object.
Definition ff_celldetails.h:2291
bool GetVisible() const
Returns true if the text block is visible (in the score/part that's currently in focus).
Definition ff_celldetails.h:2380
twobyte GetVerticalPos() const
Returns the vertical position from the baseline in EVPUs.
Definition ff_celldetails.h:2370
void SetMeasurePos(TimeEdu32 value)
Sets the measure position in EDUs.
Definition ff_celldetails.h:2391
FCTextBlock * CreateTextBlock()
Creates and loads a FCTextBlock object that belongs to the measure text. (It might return NULL....
Definition finaleframework.cpp:22213
bool SaveTextString(FCString *pString)
Resaves a raw text string. This method requires that the text block already exists.
Definition finaleframework.cpp:22240
twobyte GetTextBlockID() const
Returns the text block ID, for use with the FCTextBlock class.
Definition ff_celldetails.h:2341
CMPER GetStringID() const
Returns the raw text ID for the measure text (as an Engima string). This ID is "owned" by the connect...
Definition finaleframework.cpp:22254
TimeEdu32 GetMeasurePos() const override
Returns the measure position in EDUs.
Definition ff_celldetails.h:2361
bool SaveNewTextBlock(FCString *pString)
Saves a new raw text block (both a raw text and the connected text block) and assigns it to the measu...
Definition finaleframework.cpp:22225
void SetVerticalPos(twobyte value)
Sets the vertical position from the baseline in EVPUs.
Definition ff_celldetails.h:2400
void SetVisible(bool visible)
Sets if the text block should be visible or not (in the score/part that's currently in focus - works ...
Definition ff_celldetails.h:2410
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_celldetails.h:2416
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_celldetails.h:2265
FCCellText()
The constructor.
Definition ff_celldetails.h:2275
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:2264
Collection class for FCCellText class objects.
Definition ff_celldetails.h:2463
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:2475
FCCellTexts()
The constructor.
Definition ff_celldetails.h:2473
FCCellText * GetItemAt(int index) const
Overridden GetItemAt() method.
Definition ff_celldetails.h:2481
Class for chord assignments to a measure/staff.
Definition ff_celldetails.h:1289
void SetAlteration(twobyte alteration)
Sets the chord alteration, compared to the scale degree.
Definition ff_celldetails.h:1930
twobyte GetAlternateBassAlteration() const
Returns the alternate bass alteration, compared to the scale degree.
Definition ff_celldetails.h:1658
void SetAlternateBassAlteration(twobyte alteration)
Sets the alternate bass alteration, compared to the scale degree.
Definition ff_celldetails.h:1954
void SetChordAlternateBassVisible(bool state)
Sets the display state of the alternate bass for the chord symbol.
Definition ff_celldetails.h:1841
bool GetChordAlternateBassLowercase() const
If set, draw alternate bass using lowercase.
Definition ff_celldetails.h:1638
twobyte GetFretboardVerticalPos() const
Returns the vertical fretboard pos (relative to the chord)
Definition ff_celldetails.h:1713
bool GetFretboardUseFont() const
Returns the fretboard to use a fretboard font.
Definition ff_celldetails.h:1741
void SetFretboardHorizontalPos(twobyte value)
Sets the horizontal fretboard pos (relative to the chord).
Definition ff_celldetails.h:1977
void SetChordVerticalPos(twobyte value)
Sets the vertical position of the chord (from the baseline).
Definition ff_celldetails.h:1778
EXTAG Tag() const override
The Enigma tag for the derived class.
Definition ff_celldetails.h:1331
void SetFretboardStyleID(twobyte value)
Sets the fretboard style ID.
Definition ff_celldetails.h:1971
void SetChordRootVisible(bool state)
Sets the display state of the chord root.
Definition ff_celldetails.h:1796
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_celldetails.h:1334
bool GetFretboardVisible() const
Returns the display state of the fretboard.
Definition ff_celldetails.h:1720
twobyte GetCapo() const
Returns the capo value. For this value to be actively used, SetUseCapo must be called.
Definition ff_celldetails.h:1586
void SetFretboardVisible(bool state)
Sets the display state of the fretboard.
Definition ff_celldetails.h:1990
void SetChordRootLowercase(bool state)
If set, draw root using lowercase.
Definition ff_celldetails.h:1814
void SetChordSuffixVisible(bool state)
Sets the display state of the chord suffix.
Definition ff_celldetails.h:1823
twobyte GetFretboardHorizontalPos() const
Returns the horizontal fretboard pos (relative to the chord)
Definition ff_celldetails.h:1707
bool GetChordRootVisible() const
Returns the display state of the chord root.
Definition ff_celldetails.h:1531
bool GetChordVisible() const
Returns the display state of the chord.
Definition ff_celldetails.h:1519
FCTransposer * GetTransposer()
Returns a transposer that can be used to transpose this chord.
Definition finaleframework.cpp:22153
void SetFretboardUseFont(bool state)
Sets the fretboard to use a fretboard font.
Definition ff_celldetails.h:2011
void SetUseCapo(bool state)
Sets the chord to use the local capo setting.
Definition ff_celldetails.h:1900
twobyte GetChordResize() const
Returns the resize value of the chord, in percent.
Definition ff_celldetails.h:1525
bool GetChordSuffixPlayback() const
Returns the playback state of the chord suffix.
Definition ff_celldetails.h:1567
void SetCapo(twobyte value)
Sets the capo value. For this value to be actively used, SetUseCapo must be called.
Definition ff_celldetails.h:1910
ALTERNATEBASS_PLACEMENT
For use with FCChord::SetChordAlternateBassPlacement()
Definition ff_celldetails.h:1351
void SetChordAlternateBassPlayback(bool playback)
Sets the playback state of the alternate bass for the chord symbol.
Definition ff_celldetails.h:1850
FCChord()
The constructor.
Definition ff_celldetails.h:1361
bool GetChordSuffixVisible() const
Returns the display state of the chord suffix.
Definition ff_celldetails.h:1558
int GetFretboardID() const
Returns the 1-based "Fretboard ID" from the Chord Definition dialog.
Definition ff_celldetails.h:1755
FCFretboardGroupDef * CreateFretboardGroupDef() const
Creates an object with the associated FCFretboardGroupDef.
Definition finaleframework.cpp:22137
void SetFretboardPlayback(bool playback)
Sets the fretboard to playback/mute.
Definition ff_celldetails.h:2002
void SetChordSuffixID(twobyte value)
Sets the chord suffix ID. Each chord can contain many different versions of the same suffix within th...
Definition ff_celldetails.h:1766
bool GetUseCapo() const
Returns the setting if the chord should use the local capo setting.
Definition ff_celldetails.h:1576
void SetAlternateBassScaleNumber(twobyte scalenumber)
Sets the scale degree number for the alternate bass.
Definition ff_celldetails.h:1942
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:1333
bool GetChordRootPlayback() const
Returns the playback state of the chord root.
Definition ff_celldetails.h:1540
twobyte GetChordVerticalPos() const
Returns the vertical position (from the baseline) of the chord.
Definition ff_celldetails.h:1513
ALTERNATEBASS_PLACEMENT GetChordAlternateBassPlacement() const
Returns the placement for alternate bass.
Definition ff_celldetails.h:1681
twobyte GetFretboardResize() const
Returns the resize value of the fretboard, in percent.
Definition ff_celldetails.h:1726
FCChordSuffixElements * CreateChordSuffixElements() const
Creates an object with the chord suffix elements.
Definition finaleframework.cpp:22128
bool GetFretboardPlayback() const
Returns the fretboard to playback/mute.
Definition ff_celldetails.h:1732
bool GetChordAlternateBassVisible() const
Returns true if the alternate bass is displayed.
Definition ff_celldetails.h:1620
void SetChordAlternateBassPlacement(ALTERNATEBASS_PLACEMENT placement)
Sets the placement type for the chord's alternate bass.
Definition ff_celldetails.h:1870
void SetScaleNumber(twobyte scalenumber)
Sets the scale degree number for the root.
Definition ff_celldetails.h:1920
twobyte GetAlteration() const
Returns the chord alteration, compared to the scale degree.
Definition ff_celldetails.h:1604
void SetChordHorizontalPos(twobyte value)
Sets the horizontal position offset (from the measure pos) of the chord in EVPUs.
Definition ff_celldetails.h:1772
TimeEdu32 GetMeasurePos() const override
Gets the horizontal position within the measure.
Definition ff_celldetails.h:1383
void SetMeasurePos(TimeEdu32 position)
Sets the horizontal position within the measure.
Definition ff_celldetails.h:1391
void SetFretboardID(int value)
Sets the 1-based "Fretboard ID" from the Chord Definition dialog.
Definition ff_celldetails.h:2022
twobyte GetAlternateBassScaleNumber() const
Returns the scale degree of the alternate bass.
Definition ff_celldetails.h:1647
void SetChordResize(twobyte value)
Sets the resize value of the chord, in percent.
Definition ff_celldetails.h:1790
void SetFretboardVerticalPos(twobyte value)
Sets the vertical fretboard pos (relative to the chord)
Definition ff_celldetails.h:1983
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_celldetails.h:2025
bool GetChordAlternateBassPlayback() const
Returns the playback state of the alternate bass for the chord symbol.
Definition ff_celldetails.h:1629
void SetFretboardResize(twobyte value)
Sets the resize value of the fretboard, in percent.
Definition ff_celldetails.h:1996
bool AnalyzeEntryChord(FCNoteEntry *pEntry)
Analyzes the chord notes in the entry and map it to the chord object.
Definition ff_celldetails.h:1402
void SetChordRootPlayback(bool playback)
Sets the playback state of the chord root.
Definition ff_celldetails.h:1805
void SetChordAlternateBassLowercase(bool lowercase)
If set, draw alternate bass using lowercase.
Definition ff_celldetails.h:1859
CMPER CalcFretboardGroupID() const
Calculates the ID for the associated FCFretboardGroupDef as follows:
Definition ff_celldetails.h:1454
void SetChordVisible(bool state)
Sets the display state of the chord.
Definition ff_celldetails.h:1784
twobyte GetScaleNumber() const
Returns the scale degree of the root.
Definition ff_celldetails.h:1595
bool GetChordRootLowercase() const
Returns if the root should be drawn using lowercase.
Definition ff_celldetails.h:1549
twobyte GetChordSuffixID() const
Returns the chord suffix ID. Each chord can contain many different records for the same suffix,...
Definition ff_celldetails.h:1501
twobyte GetFretboardStyleID() const
Gets the fretboard style ID.
Definition ff_celldetails.h:1701
bool IsEarlierThan(FCChord *pTestChord)
Returns true if the position is earlier than the tested chord.
Definition ff_celldetails.h:1369
twobyte GetChordHorizontalPos() const
Returns the horizontal position (from the measure position) of the chord in EVPUs.
Definition ff_celldetails.h:1507
void SetChordSuffixPlayback(bool playback)
Sets the playback state of the chord suffix.
Definition ff_celldetails.h:1832
Collection class for FCChordSuffixElement class objects, usually created with FCChord:CreateChordSuff...
Definition ff_othercollection.h:1465
Collection class for FCChord class objects.
Definition ff_celldetails.h:2536
FCChord * FindMeasurePos(TimeEdu32 durationpos)
Finds a chord in the measure at a specific measure position.
Definition ff_celldetails.h:2548
FCChord * GetItemAt(int index) const
Overridden GetItemAt method.
Definition ff_celldetails.h:2559
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:2542
Class to encapsulate enclosures (available for example in expressions and measure numbers....
Definition ff_other.h:2872
void _AssignEDTEnclosure(void *pPointer)
For internal use ONLY! Assigns enclosure data to the class (for structures that doesn't load their ow...
Definition ff_other.h:3070
Class that stores one record of a fretboard chord definition.
Definition ff_other.h:22540
Class that contains independent key/time signatures for a cell.
Definition ff_celldetails.h:2568
FCIndependentCellDetail()
The constructor.
Definition ff_celldetails.h:2613
void SetTimeSignatureBeatDuration(twobyte beatduration)
Sets the beat duration for the time signature.
Definition finaleframework.cpp:22771
void GetFullTimeSignature(FCTimeSignature *pTimeSig)
Gets the full independent time signature.
Definition finaleframework.cpp:22855
void SetKeySignatureID(eKey value)
Sets the key signature ID.
Definition finaleframework.cpp:22735
void SetTimeSignatureBeatsForDisplay(twobyte beats)
Sets the beats for the time signature (or the composite top ID).
Definition finaleframework.cpp:22759
void SetFullTimeSignature(FCTimeSignature *pTimeSig)
Sets the full independent time signature.
Definition finaleframework.cpp:22865
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_celldetails.h:2606
void SetTimeSignatureCompositeTop(bool state)
Sets if the time signature uses a composite time signature Top or not.
Definition finaleframework.cpp:22795
bool GetFullTimeSignatureForDisplay(FCTimeSignature *pTimeSig)
Gets the full independent time signature for display. Returns false if none.
Definition finaleframework.cpp:22874
void SetHasTimeSignature(bool state)
Sets if the object contains time signature information. Use with care!
Definition finaleframework.cpp:22711
twobyte GetTimeSignatureBeatsForDisplay()
Returns the beats for the time signature.
Definition finaleframework.cpp:22635
twobyte GetTimeSignatureBeatDurationForDisplay()
Returns the beat duration for the time signature.
Definition finaleframework.cpp:22651
void SetTimeSignatureBeats(twobyte beats)
Sets the beats for the time signature (or the composite top ID).
Definition finaleframework.cpp:22747
twobyte GetTimeSignatureBeatDuration()
Returns the beat duration for the time signature.
Definition finaleframework.cpp:22643
void SetFullTimeSignatureForDisplay(FCTimeSignature *pTimeSig)
Sets the full independent time signature for display and sets the bit for it.
Definition finaleframework.cpp:22885
void SetTimeSignatureCompositeBottom(bool state)
Sets if the time signature uses a composite time signature bottom or not.
Definition finaleframework.cpp:22819
void SetTimeSignatureBeatDurationForDisplay(twobyte beatduration)
Sets the beat duration for the time signature.
Definition finaleframework.cpp:22783
eKey GetKeySignatureID()
Returns the key signature ID.
Definition finaleframework.cpp:22619
void SetHasTimeSignatureForDisplay(bool state)
Sets if the object contains time signature information for display. Use with care!
Definition finaleframework.cpp:22723
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:2605
void SetTimeSignatureCompositeBottomForDisplay(bool state)
Sets if the time signature uses a composite time signature bottom or not.
Definition finaleframework.cpp:22831
twobyte GetTimeSignatureBeats()
Returns the beats for the time signature.
Definition finaleframework.cpp:22627
bool GetTimeSignatureCompositeBottom()
Returns true if the time signature uses a composite time signature bottom.
Definition finaleframework.cpp:22675
void SetTimeSignatureCompositeTopForDisplay(bool state)
Sets if the time signature uses a composite time signature Top or not.
Definition finaleframework.cpp:22807
bool GetHasKeySignature()
Returns true if the object contains key signature information.
Definition finaleframework.cpp:22595
bool GetTimeSignatureCompositeTop()
Returns true if the time signature uses a composite time signature Top.
Definition finaleframework.cpp:22659
void SetTimeSignatureAbbreviateForDisplay(bool state)
Sets if the time signature abbreviates for display.
Definition finaleframework.cpp:22843
bool GetTimeSignatureCompositeBottomForDisplay()
Returns true if the time signature uses a composite time signature for display bottom.
Definition finaleframework.cpp:22683
void SetFullKeySignature(FCKeySignature *pKeySig)
Sets the full independent key signature.
Definition finaleframework.cpp:22896
bool GetTimeSignatureAbbreviateForDisplay()
Returns true if the time signature abbreviates.
Definition finaleframework.cpp:22691
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_celldetails.h:2729
void SetHasKeySignature(bool state)
Sets if the object contains key signature information. Use with care!
Definition finaleframework.cpp:22699
bool GetTimeSignatureCompositeTopForDisplay()
Returns true if the time signature uses a composite time signature for display Top.
Definition finaleframework.cpp:22667
bool GetHasTimeSignature()
Returns true if the object contains time signature information.
Definition finaleframework.cpp:22603
bool GetHasTimeSignatureForDisplay()
Returns true if the object contains time signature information.
Definition finaleframework.cpp:22611
Class for key signatures. Instances of this class are auto-created by FCMeasure:GetKeySignature and F...
Definition ff_keysig.h:25
eHarmLev CalcScaleNumber(eHarmLev displacement) const
Calculate the scale number of the input displacement value.
Definition finaleframework.cpp:16146
The class for a measure number region.
Definition ff_other.h:5494
twobyte GetID()
Returns the unique measure number region ID.
Definition finaleframework.cpp:7072
Encapsulates the continous MIDI data in a cell.
Definition ff_celldetails.h:265
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:300
void SetPatchChangeBankData2(twobyte number)
Sets the patch change value 2 for a patch change event. SetUsePatchChange must be called before using...
Definition ff_celldetails.h:600
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_celldetails.h:301
void SetControllerValue(twobyte number)
Sets the controller value for MIDI controller events. SetUseController must be called BEFORE setting ...
Definition ff_celldetails.h:376
void SetPatchChangeMode(twobyte mode)
Sets the patch change mode for a patch change event, wich defines how the patch change is sent....
Definition ff_celldetails.h:517
twobyte GetControllerValue() const
Returns the controller value for MIDI controller events.
Definition ff_celldetails.h:345
twobyte GetPitchWheelValue() const
Returns the value for pitch wheel events.
Definition ff_celldetails.h:463
void SetPatchChangeNumber(twobyte number)
Sets the patch change number for a patch change event. SetUsePatchChange must be called before using ...
Definition ff_celldetails.h:544
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_celldetails.h:632
twobyte GetPressureValue() const
Returns the value for MIDI channel pressure events.
Definition ff_celldetails.h:410
bool IsController() const
Returns true if it's a MIDI controller event. Call SetUseController to set to a controller event.
Definition ff_celldetails.h:329
twobyte GetPatchChangeMode() const
Returns the patch change mode for a patch change event, wich defines how the patch change is sent.
Definition ff_celldetails.h:533
FCMidiExpression()
The constructor.
Definition ff_celldetails.h:308
twobyte GetPatchChangeBankData1() const
Returns the patch change value 1 for a patch change event.
Definition ff_celldetails.h:586
void SetUsePitchWheel()
Sets the event to a Pitch Wheel event. This should be made before calling SetPitchWheelValue.
Definition ff_celldetails.h:484
void SetPressureValue(twobyte value)
Sets the value for MIDI channel pressure events. SetUsePressure must be called BEFORE setting the val...
Definition ff_celldetails.h:398
bool IsPitchWheel() const
Returns true if it's a Pitch Wheel event. Call SetUsePitchWheel to set to a pitch wheel event.
Definition ff_celldetails.h:434
void SetPatchChangeBankData1(twobyte mode)
Sets the patch change value 1 for a patch change event. SetUsePatchChange must be called before using...
Definition ff_celldetails.h:571
void SetUsePatchChange()
Sets the event to a Patch Change event. This should be made before calling any setters.
Definition ff_celldetails.h:503
bool IsPressure() const
Returns true if it's a MIDI channel pressure/aftertouch event. Call SetUsePressure to set to a channe...
Definition ff_celldetails.h:389
twobyte GetControllerNumber() const
Returns the controller number for MIDI controller events.
Definition ff_celldetails.h:337
bool IsPatchChange() const
Returns true if it's a Patch Change event. Call SetUsePatchChange to set to a patch change event.
Definition ff_celldetails.h:496
TimeEdu32 GetMeasurePos() const override
Gets the horizontal position within the measure.
Definition ff_celldetails.h:321
twobyte GetPatchChangeNumber() const
Returns the patch change number for a patch change event.
Definition ff_celldetails.h:557
void SetControllerNumber(twobyte number)
Sets the controller number for MIDI controller events. SetUseController must be called BEFORE setting...
Definition ff_celldetails.h:364
MIDI_CONTROLLER_NUMBERS
The standard MIDI controller numbers. Used by FCMidiExpression::GetControllerNumber() and FCMidiExpre...
Definition ff_celldetails.h:296
void SetUseController()
Sets the event to a MIDI controller event. This should be made before calling SetControllerNumber and...
Definition ff_celldetails.h:352
void SetPitchWheelValue(twobyte value)
Sets the value for pitch wheel events. The SetUsePitchWheel method must be called BEFORE setting the ...
Definition ff_celldetails.h:443
void SetMeasurePos(TimeEdu32 value)
Sets the horizontal position within the measure.
Definition ff_celldetails.h:629
twobyte GetPatchChangeBankData2() const
Returns the patch change number for a patch change event.
Definition ff_celldetails.h:616
void SetUsePressure()
Sets the event to a MIDI channel pressure/aftertouch. This should be made before calling SetPressureV...
Definition ff_celldetails.h:421
Collection class for FCMidiExpression class objects.
Definition ff_celldetails.h:2512
FCMidiExpression * GetItemAt(int index) const
Overridden version of GetItemAt.
Definition ff_celldetails.h:2524
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:2518
Class that encapsulates EREGION and provides additional functionality to region handling.
Definition ff_region.h:25
void SetEndMeasurePosRight()
Sets the the end measure pos to the right-most edge of the region's end measure.
Definition ff_region.h:348
void SetEndMeasure(twobyte measure)
Sets the end measure for the region.
Definition ff_region.h:332
void SetInstrumentList(twobyte list)
Sets the instrument list for the selection. If this method is called,' the start/end staff must be mo...
Definition ff_region.h:371
void SetStartStaff(twobyte staff)
Sets the start staff for the region. The staff must be available in the region's current instrument l...
Definition ff_region.h:380
void GetEnigmaRegion(EREGION *pRegion)
Assigns the document region to an Enigma region structure.
Definition finaleframework.cpp:15631
void SetEndStaff(twobyte staff)
Sets the end staff for the region. The staff must be available in the region's current instrument lis...
Definition ff_region.h:396
void SetStartMeasurePos(TimeEdu32 pos)
Sets the start measure pos in the start measure.
Definition ff_region.h:317
void SetStartMeasure(twobyte measure)
Sets the start measure.
Definition ff_region.h:309
Encapsulates a note entry from an owner class (for example FCNoteEntryCell, FCNoteEntryLayer) class.
Definition ff_noteframe.h:940
twobyte GetMeasure() const
Returns the entry's measure.
Definition ff_noteframe.h:2323
TimeEdu32 GetMeasurePos() const
Returns the elapsed duration position in the measure for the entry.
Definition ff_noteframe.h:2238
twobyte GetStaff() const
Returns the entry's staff.
Definition ff_noteframe.h:2331
Encapsulates one note in a note entry (from the FCNoteEntry class).
Definition ff_noteframe.h:29
twobyte GetRaiseLower() const
Returns the raised/lowered state of the note.
Definition ff_noteframe.h:149
void SetRaiseLower(twobyte amount)
Raises or lowers the pitch of the note.
Definition ff_noteframe.h:428
twobyte GetDisplacement() const
Returns the vertical note position on the staff.
Definition ff_noteframe.h:119
FCNoteEntry * GetEntry() const
Returns the note entry object for the note.
Definition ff_noteframe.h:85
void SetDisplacement(twobyte disp)
Sets the note's vertical position on the staff. The displacement is relative to the key.
Definition ff_noteframe.h:419
Class for a manually added or edited measure number in a cell.
Definition ff_celldetails.h:663
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_celldetails.h:735
void SetHideOverride(bool state)
Sets if the measure number should be forced to hide.
Definition ff_celldetails.h:871
FCSeparateMeasureNumber()
The constructor.
Definition ff_celldetails.h:745
twobyte GetVerticalPosition() const
Returns the vertical position offset.
Definition ff_celldetails.h:812
twobyte GetRegionNumberID() const
Returns the 1-based measure region number ID that the measure number data belongs to.
Definition ff_celldetails.h:771
twobyte GetHorizontalPosition() const
Returns the horizontal position offset.
Definition ff_celldetails.h:806
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:734
bool GetShowOverride() const
Returns true if the measure number should be forced to show.
Definition ff_celldetails.h:777
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_celldetails.h:901
void SetIsAlternateNumber(bool state)
Sets if this is the instance of FCSeparateMeasureNumber for the alternate measure number.
Definition ff_celldetails.h:885
bool GetIsAlternateNumber() const
Return true if this is the instance of FCSeparateMeasureNumber for the alternate measure number.
Definition ff_celldetails.h:800
void SetVerticalPosition(twobyte value)
Sets the vertical position offset.
Definition ff_celldetails.h:897
bool GetUseEnclosure() const
Return true if the separate enclosure data should be used.
Definition ff_celldetails.h:789
bool AssignMeasureNumberRegion(FCMeasureNumberRegion *pRegion)
Links a specific FCMeasureNumberRegion type to the separate number adjustment.
Definition ff_celldetails.h:823
void SetRegionNumberID(twobyte regionid)
Sets the 1-based measure region ID that the measure number data belongs to.
Definition ff_celldetails.h:855
FCEnclosure * GetEnclosure()
Returns the pointer to the enclosure object. The return value might be NULL.
Definition ff_celldetails.h:841
void SetUseEnclosure(bool state)
Sets if the separate enclosure data should be used.
Definition ff_celldetails.h:877
bool GetHideOverride() const
Returns true if the measure number should be forced to hide.
Definition ff_celldetails.h:783
void SetHorizontalPosition(twobyte value)
Sets the horizontal position offset.
Definition ff_celldetails.h:891
void SetShowOverride(bool state)
Sets if the measure number should be forced to show.
Definition ff_celldetails.h:865
Collection class for FCSeparateMeasureNumber class objects, that contains the separate added or adjus...
Definition ff_celldetails.h:919
FCSeparateMeasureNumber * GetItemAt(int index) const
Definition ff_celldetails.h:938
FCSeparateMeasureNumbers()
The constructor.
Definition ff_celldetails.h:930
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_celldetails.h:932
Class that provides storage for text. This is to achieve platform-transparent text handling,...
Definition ff_base.h:1877
Class for a text block.
Definition ff_other.h:16048
FCString * CreateRawTextString()
Creates a string object for the connected raw text.
Definition finaleframework.cpp:9353
Class for time signatures. Instances of this class are auto-created when needed by FCMeasure:GetTimeS...
Definition ff_timesig.h:27
This is a utility class to facilitate transposition. It supports:
Definition ff_celldetails.h:2766
bool EDOStepTranspose(twobyte numberofsteps)
Transposes the target by the input number of EDO steps and simplifies the spelling.
Definition ff_celldetails.h:2991
void OctaveTranspose(twobyte numberofoctaves)
Transpose the target by the given number of octaves.
Definition ff_celldetails.h:2921
bool SimplifySpelling()
Simplifies the note spelling the most it can using enharmonic transposition.
Definition ff_celldetails.h:2960
bool DefaultEnharmonicTranspose()
Transpose the target enharmonically in Finale's default direction.
Definition ff_celldetails.h:2947
bool ChromaticTranspose(eHarmLev interval, eHarmAlt alteration, bool simplify=false)
Transposes the target chromatically by the input chromatic interval.
Definition ff_celldetails.h:2976
void DiatonicTranspose(eHarmLev interval)
Transpose the target diatonically by the given interval displacement.
Definition ff_celldetails.h:2912
bool EnharmonicTranspose(twobyte direction)
Transpose the target enharmonically in the given direction.
Definition ff_celldetails.h:2934
FCTransposer(eHarmLev displacement, eHarmAlt raiselower, const FCKeySignature *key)
The constructor.
Definition ff_celldetails.h:2859
eHarmLev GetRaiseLower() const
Gets the current chromatic alteration value. Before transposition, it is the value passed in on the c...
Definition ff_celldetails.h:2896
eHarmLev GetDisplacement() const
Gets the current displacement value. Before transposition, it is the value passed in on the construct...
Definition ff_celldetails.h:2878