Finale PDK Framework 0.77
Power Up Your Finale Music Software
Loading...
Searching...
No Matches
ff_other.h
1/*
2 * File: ff_other.h
3 * Author: Jari Williamsson
4 *
5 * Created on den 26 december 2009, 14:09
6 */
7
8#ifndef _FF_OTHER_H
9#define _FF_OTHER_H
10
11#include <cassert>
12#include <cmath>
13
14#include "ff_timesig.h"
15#include "ff_base.h"
16#include "ff_region.h"
17
18
19
26class __FCOther : public __FCBaseData {
27public:
30 void SetCmperAndInci(CMPER cmper, twobyte inci)
31 {
32 _dataid.other.cmper = cmper;
33 _dataid.other.inci = inci;
34 }
35
36
37public:
38 const char* ClassName() const override { return "__FCOther"; }
39
42
43
51 {
52 if (!DataIsLoaded()) return false;
53 if (_dataid.other.cmper != pCompare->_GetDataID()->other.cmper) return false;
54 if (_dataid.other.inci != pCompare->_GetDataID()->other.inci) return false;
55 return true;
56 }
57};
58
59
63{
64#ifndef DOXYGEN_SHOULD_IGNORE_THIS
66 bool LoadFirst() override { return false; }
67
68 bool _RawRelink() override
69 {
70 DeleteData();
71 return SaveNew(GetItemCmper());
72 }
73
74#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
75public:
80 const char* ClassName() const override { return "__FCInciOther"; }
81
89 virtual bool Load(CMPER itemno, twobyte inci);
90
92 twobyte CalcLastInci() override;
93
95 bool Reload() override;
96
103 virtual bool SaveNew(CMPER itemno);
104
109 void _SetCmper(CMPER cmper) { _dataid.other.cmper = cmper; }
110
111
116 int GetItemCmper() const
117 {
118 if (!DataIsLoaded()) return kNewCmper;
119 return _dataid.other.cmper;
120 }
121
128 int GetItemInci() const
129 {
130 if (!DataIsLoaded()) return kNewInci;
131 return _dataid.other.inci;
132 }
133
134
140 virtual eMeas GetMeasure() const { return 0; }
141
149 virtual eStaff GetStaff() const { return 0; }
150
152 virtual bool HasStaffValue() const { return false; }
153
159 virtual TimeEdu32 GetMeasurePos() const { return 0; }
160};
161
167{
168 twobyte _inciblock[6];
169
170 int DataSizeLoad() const override { return sizeof(_inciblock); } /* A standard inci */
171 void* Allocate() override { return _GetDataPtr(); }
172 EXTAG Tag() const override { return GetCustomTag(); }
173
178 void CloneMemoryFrom(__FCBaseData* pSource) override
179 {
180 memcpy(&_inciblock, ((FCOtherInci*)pSource)->_GetDataPtr(), sizeof(_inciblock));
181 _datablock = &_inciblock;
182 _loadedsize = sizeof(_inciblock);
183 }
184
185 __FCBaseData* CreateObject() override
186 {
187 return new FCOtherInci();
188 }
189public:
190
195 FCOtherInci(EXTAG customTag = 0) : __FCInciOther()
196 {
197 if (customTag) SetCustomTag(customTag);
198 memset(&_inciblock, 0, sizeof(_inciblock));
199 _datablock = &_inciblock;
200 _loadedsize = sizeof(_inciblock);
202 }
203
204#ifndef DOXYGEN_SHOULD_IGNORE_THIS
211 void* _GetDataPtr() { return &_inciblock; }
212#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
213
214 const char* ClassName() const override { return "FCOtherInci"; }
215 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_OTHERINCI; }
216};
217
218
219
231{
232protected:
233#ifndef DOXYGEN_SHOULD_IGNORE_THIS
241 int _DataSizeLoadFullCmper(CMPER cmper, ETAG othertag) const;
242
250 bool _SaveOtherFullCmper(CMPER cmper, void* buffer, int size, ETAG othertag);
251
259 bool _LoadOtherFullCmper(CMPER cmper, void* buffer, int size, ETAG othertag);
260#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
261public:
262 const char* ClassName() const override { return "__FCNoInciOther"; }
263
266
271 virtual bool Load(CMPER itemno);
272
274 bool Reload() override;
275
281 virtual bool SaveAs(CMPER itemno);
282
292 virtual bool DeepSaveAs(CMPER itemno)
293 {
294 return SaveAs(itemno);
295 }
296
303 bool DeepDeleteData() override
304 {
305 return DeleteData();
306 }
307
314 virtual bool SaveNew();
315
323 virtual CMPER GetItemNo() const { return _dataid.other.cmper; }
324
332 void SetItemNo(CMPER cmper)
333 {
334 _dataid.other.cmper = cmper;
335 _dataid.other.inci = 0;
336 }
337
346 bool LoadFirst() override { return Load(1); }
347
348#ifdef PDK_FRAMEWORK_DEBUG
349 void DebugDump() override
350 {
352 DebugOutInt("dataid.other.cmper: ", _dataid.other.cmper);
353 }
354#endif
355
356};
357
358
364{
365#ifndef DOXYGEN_SHOULD_IGNORE_THIS
366 private:
368 EDTCompositeTimeUpper _compositetimeupperdata;
369
370protected:
371 EXTAG Tag() const override { return ot_CompositeTimeUpper; }
372 int DataSizeLoad() const override { return sizeof(EDTCompositeTimeUpper); }
373 void* Allocate() override { return (void*) &_compositetimeupperdata; }
374
379 void CloneMemoryFrom(__FCBaseData* pSource) override
380 {
381 memcpy(&_compositetimeupperdata, ((__FCCompositeTimeSigTopElement*)pSource)->_GetDataPtr(), sizeof(_compositetimeupperdata));
382 _datablock = &_compositetimeupperdata;
383 _loadedsize = sizeof(_compositetimeupperdata);
384 }
385
386 __FCBaseData* CreateObject() override
387 {
389 }
390#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
391public:
392 const char* ClassName() const override { return "__FCCompositeTimeSigTopElement"; }
393 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_COMPOSITETIMESIGTOPELEMENT; }
394
395#ifndef DOXYGEN_SHOULD_IGNORE_THIS
402 void* _GetDataPtr() { return &_compositetimeupperdata; }
403#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
404
407 {
408 memset(&_compositetimeupperdata, 0, sizeof(_compositetimeupperdata));
409 _datablock = &_compositetimeupperdata;
410 _loadedsize = sizeof(_compositetimeupperdata);
411 }
412
414 ECompositeTimeUpper* _GetFirstRecordPtr() { return &_compositetimeupperdata.elements[0]; }
415
417 ECompositeTimeUpper* _GetSecondRecordPtr() { return &_compositetimeupperdata.elements[1]; }
418
419
420#ifdef PDK_FRAMEWORK_DEBUG
421 void DebugDump() override
422 {
424 }
425#endif
426};
427
428
429
435{
436#ifndef DOXYGEN_SHOULD_IGNORE_THIS
437 private:
439 EDTCompositeTimeLower _compositetimelowerdata;
440
441protected:
442 EXTAG Tag() const override { return ot_CompositeTimeLower; }
443 int DataSizeLoad() const override { return sizeof(EDTCompositeTimeLower); }
444 void* Allocate() override { return (void*) &_compositetimelowerdata; }
445
450 void CloneMemoryFrom(__FCBaseData* pSource) override
451 {
452 memcpy(&_compositetimelowerdata, ((__FCCompositeTimeSigBottomElement*)pSource)->_GetDataPtr(), sizeof(_compositetimelowerdata));
453 _datablock = &_compositetimelowerdata;
454 _loadedsize = sizeof(_compositetimelowerdata);
455 }
456
457 __FCBaseData* CreateObject() override
458 {
460 }
461#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
462public:
463 const char* ClassName() const override { return "__FCCompositeTimeSigBottomElement"; }
464 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_COMPOSITETIMESIGBOTTOMELEMENT; }
465
466#ifndef DOXYGEN_SHOULD_IGNORE_THIS
473 void* _GetDataPtr() { return &_compositetimelowerdata; }
474#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
475
478 {
479 memset(&_compositetimelowerdata, 0, sizeof(_compositetimelowerdata));
480 _datablock = &_compositetimelowerdata;
481 _loadedsize = sizeof(_compositetimelowerdata);
482 }
483
485 ECompositeTimeLower* _GetFirstRecordPtr() { return &_compositetimelowerdata.elements[0]; }
486
488 ECompositeTimeLower* _GetSecondRecordPtr() { return &_compositetimelowerdata.elements[1]; }
489
491 ECompositeTimeLower* _GetThirdRecordPtr() { return &_compositetimelowerdata.elements[2]; }
492
493
494#ifdef PDK_FRAMEWORK_DEBUG
495 void DebugDump() override
496 {
498 }
499#endif
500};
501
502
503
504#ifdef PDK_FRAMEWORK_COMPOSITETIMESIGS
516{
518 ECompositeTimeUpper* _pArray;
519
522 int _arraycounter;
523
524#ifndef DOXYGEN_SHOULD_IGNORE_THIS
529 ECompositeTimeUpper* _GetGroupElementPtr(int groupindex, int subindex) const
530 {
531 groupindex++; /* Make the index 1-based internally for this method */
532 int currentindex = 0;
533 int subindexcount = 0;
534 for (int i = 0; i < _arraycounter; i++)
535 {
536 if (_pArray[i].chainstart) currentindex++;
537 if (currentindex == groupindex)
538 {
539 if (subindexcount == subindex) return &_pArray[i];
540 subindexcount++;
541 }
542 if (currentindex > groupindex) return NULL;
543 }
544 return NULL;
545 }
546
554 void _RedistributeArray(CMPER cmper = 0)
555 {
556 if (cmper == 0)
557 {
558 if (GetCount() == 0) return; /* To prevent crash */
560 cmper = pFirstInci->_GetDataID()->other.cmper;
561 }
562 ClearAll();
563 twobyte inci = 0;
564 __FCCompositeTimeSigTopElement* pCurrentObject = NULL;
565 for (int i = 0; i < _arraycounter; i++)
566 {
567 if (i % 2 == 0)
568 {
569 pCurrentObject = new __FCCompositeTimeSigTopElement();
570 EDataID* pDataID = (EDataID*) pCurrentObject->_GetDataID(); /* "Turn off" const */
571 pDataID->other.cmper = cmper;
572 pDataID->other.inci = inci;
573 inci++;
574 memcpy(pCurrentObject->_GetFirstRecordPtr(), &_pArray[i], sizeof(ECompositeTimeUpper));
575 }
576 else
577 {
578 memcpy(pCurrentObject->_GetSecondRecordPtr(), &_pArray[i], sizeof(ECompositeTimeUpper));
579 Add(pCurrentObject);
580 pCurrentObject = NULL;
581 }
582 }
583 if (pCurrentObject) Add(pCurrentObject);
584 }
585#endif
586
587#ifndef DOXYGEN_SHOULD_IGNORE_THIS
588 __FCBaseData* CreateElement() override { return new __FCCompositeTimeSigTopElement(); }
589#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
590 public:
591
592#ifndef DOXYGEN_SHOULD_IGNORE_THIS
594 void _BuildArray()
595 {
596 delete [] _pArray;
597 _pArray = NULL;
598 _arraycounter = 0;
599 if (GetCount() == 0) return;
600 /* Count the number of active records in the array */
601 int activerecords = 0;
602 for (int i = 0; i < GetCount(); i++)
603 {
605 ECompositeTimeUpper* pCompositeTimeUpper = pData->_GetFirstRecordPtr();
606 if ((pCompositeTimeUpper->main == 0) &&
607 (pCompositeTimeUpper->fraction == 0)) continue;
608 activerecords ++;
609 pCompositeTimeUpper = pData->_GetSecondRecordPtr();
610 if ((pCompositeTimeUpper->main == 0) &&
611 (pCompositeTimeUpper->fraction == 0)) continue;
612 activerecords ++;
613 }
614 if (activerecords == 0) return;
615 // Allocate memory and copy:
616 _pArray = new ECompositeTimeUpper[activerecords];
617 int currentindex = 0;
618 for (int i = 0; i < GetCount(); i++)
619 {
621 ECompositeTimeUpper* pCompositeTimeUpper = pData->_GetFirstRecordPtr();
622 if ((pCompositeTimeUpper->main == 0) &&
623 (pCompositeTimeUpper->fraction == 0)) continue;
624 memcpy(&_pArray[currentindex], pCompositeTimeUpper, sizeof(ECompositeTimeUpper));
625 currentindex ++;
626 pCompositeTimeUpper = pData->_GetSecondRecordPtr();
627 if ((pCompositeTimeUpper->main == 0) &&
628 (pCompositeTimeUpper->fraction == 0)) continue;
629 memcpy(&_pArray[currentindex], pCompositeTimeUpper, sizeof(ECompositeTimeUpper));
630 currentindex ++;
631 }
632 _arraycounter = activerecords;
633 }
634#endif
635
636 const char* ClassName() const override { return "FCCompositeTimeSigTop"; }
637
643 {
644 _pArray = NULL;
645 _arraycounter = 0;
646 }
647
650 {
651 delete [] _pArray;
652 _pArray = NULL;
653 _arraycounter = 0;
654 }
655
663 int GetGroupCount() const
664 {
665 int groupcount = 0;
666 for (int i = 0; i < _arraycounter; i++)
667 {
668 if (_pArray[i].chainstart) groupcount++;
669 }
670 return groupcount;
671 }
672
681 int AddGroup(int elementcount)
682 {
683 if (elementcount < 1) return -1;
684 if (elementcount > 10) return -1;
685
686 ECompositeTimeUpper* pNewArray = new ECompositeTimeUpper[_arraycounter + elementcount];
687
688 if (_pArray)
689 {
690 /* Copy the old data and remove it */
691 int bytesize = sizeof(ECompositeTimeUpper) * _arraycounter;
692 memcpy(pNewArray, _pArray, bytesize);
693 delete [] _pArray;
694 }
695
696 /* Initialize the new data */
697 ECompositeTimeUpper* pNewAddedData = &pNewArray[_arraycounter];
698 for (int i = 0; i < elementcount; i++)
699 {
700 pNewAddedData->chainstart = (i == 0);
701 pNewAddedData->fraction = 0;
702 pNewAddedData->main = 1;
703 pNewAddedData ++;
704 }
705
706 /* Set new info: */
707 _arraycounter += elementcount;
708 _pArray = pNewArray;
709
710 return GetGroupCount() - 1;
711 }
712
719 void MergeWithPreviousGroup(int groupindex)
720 {
721 if (groupindex < 1) return;
722 ECompositeTimeUpper* pData = _GetGroupElementPtr(groupindex, 0);
723 if (!pData) return;
724 pData->chainstart = false;
725 }
726
727
736 int GetGroupElementCount(int index) const
737 {
738 index++; /* Make the index 1-based internally for this method */
739 int currentindex = 0;
740 int count = 0;
741 for (int i = 0; i < _arraycounter; i++)
742 {
743 if (_pArray[i].chainstart) currentindex++;
744 if (currentindex == index) count++;
745 if (currentindex > index) return count;
746 }
747 return count;
748 }
749
760 int CalcTotalGroupBeats(int groupindex) const
761 {
762 int beatcount = 0;
763 int elementcount = GetGroupElementCount(groupindex);
764 for (int elementidx = 0; elementidx < elementcount; elementidx++)
765 {
766 beatcount += GetGroupElementBeats(groupindex, elementidx);
767 }
768 return beatcount;
769 }
770
780 int GetGroupElementBeats(int groupindex, int subindex) const
781 {
782 ECompositeTimeUpper* pCompositeTimeUpper = _GetGroupElementPtr(groupindex, subindex);
783 if (!pCompositeTimeUpper) return 0;
784 return pCompositeTimeUpper->main;
785 }
786
796 double GetGroupElementBeatsWithFraction(int groupindex, int subindex) const
797 {
798 ECompositeTimeUpper* pCompositeTimeUpper = _GetGroupElementPtr(groupindex, subindex);
799 if (!pCompositeTimeUpper) return 0;
800 if (! pCompositeTimeUpper->fraction) return pCompositeTimeUpper->main;
801 assert(LO_UONEBYTE(pCompositeTimeUpper->fraction) != 0);
802 return static_cast<double>(pCompositeTimeUpper->main) +
803 (static_cast<double>(HI_UONEBYTE(pCompositeTimeUpper->fraction)) / static_cast<double>(LO_UONEBYTE(pCompositeTimeUpper->fraction)));
804 }
805
811 int GetElementCount() const
812 {
813 return _arraycounter;
814 }
815
824 void SetGroupElementBeats(int groupindex, int subindex, twobyte value)
825 {
826 ECompositeTimeUpper* pCompositeTimeUpper = _GetGroupElementPtr(groupindex, subindex);
827 if (!pCompositeTimeUpper) return;
828 pCompositeTimeUpper->main = value;
829 }
830
839 void SetGroupElementBeatsWithFraction(int groupindex, int subindex, double value)
840 {
841 ECompositeTimeUpper* pCompositeTimeUpper = _GetGroupElementPtr(groupindex, subindex);
842 if (!pCompositeTimeUpper) return;
843 if (value == std::floor(value))
844 {
845 pCompositeTimeUpper->main = std::floor(value);
846 pCompositeTimeUpper->fraction = 0;
847 }
848 else
849 {
850 double integer;
851 double fraction = std::modf(value, &integer);
852 pCompositeTimeUpper->main = integer;
853 pCompositeTimeUpper->fraction = MAKE_TWOBYTE(120, std::lround(fraction * 120.0));
854 }
855 }
856
865 bool SaveAll() override
866 {
867 if (_arraycounter == 0) return false;
868 if (GetCount() == 0)
869 {
870#ifdef PDK_FRAMEWORK_DIAGNOSE
871 DebugOut("FCCompositeTimeSigTop()::SaveAll(): No existing collection items to read CMPER.");
872#endif
873 return false; /* There must be an existing CMPER to save to */
874 }
875 _RedistributeArray();
877 CMPER cmper = pFirstInci->_GetDataID()->other.cmper;
878 DeleteDataForItem(cmper);
880 }
881
884 bool SaveAllForItem(CMPER cmper) override
885 {
886 if (_arraycounter == 0) return false;
887
888 _RedistributeArray(cmper);
889
890 if (GetCount() == 0)
891 {
892#ifdef PDK_FRAMEWORK_DIAGNOSE
893 DebugOut("FCCompositeTimeSigTop()::SaveAllForItem(): No existing collection items to read CMPER.");
894#endif
895 return false; /* There must be an existing CMPER to save to */
896 }
897
898 DeleteDataForItem(cmper);
900
901 return true;
902 }
903};
904
905#endif /*PDK_FRAMEWORK_COMPOSITETIMESIGS*/
906
907
908#ifdef PDK_FRAMEWORK_COMPOSITETIMESIGS
920{
922 ECompositeTimeLower* _pArray;
923
926 int _arraycounter;
927
928#ifndef DOXYGEN_SHOULD_IGNORE_THIS
933 ECompositeTimeLower* _GetGroupElementPtr(int groupindex, int subindex) const
934 {
935 groupindex++; /* Make the index 1-based internally for this method */
936 int currentindex = 0;
937 int subindexcount = 0;
938 for (int i = 0; i < _arraycounter; i++)
939 {
940 if (_pArray[i].chainstart) currentindex++;
941 if (currentindex == groupindex)
942 {
943 if (subindexcount == subindex) return &_pArray[i];
944 subindexcount++;
945 }
946 if (currentindex > groupindex) return NULL;
947 }
948 return NULL;
949 }
950
957 void _RedistributeArray(CMPER cmper = 0)
958 {
959 if (cmper == 0)
960 {
961 if (GetCount() == 0) return; /* To avoid crashes */
963 cmper = pFirstInci->_GetDataID()->other.cmper;
964 }
965 ClearAll();
966 twobyte inci = 0;
967 __FCCompositeTimeSigBottomElement* pCurrentObject = NULL;
968 EDataID* pDataID = NULL;
969 for (int i = 0; i < _arraycounter; i++)
970 {
971 switch (i % 3) {
972 case 0:
973 pCurrentObject = new __FCCompositeTimeSigBottomElement();
974 pDataID = (EDataID*) pCurrentObject->_GetDataID(); /* "Turn off" const */
975 pDataID->other.cmper = cmper;
976 pDataID->other.inci = inci;
977 inci++;
978 memcpy(pCurrentObject->_GetFirstRecordPtr(), &_pArray[i], sizeof (ECompositeTimeLower));
979 break;
980 case 1:
981 memcpy(pCurrentObject->_GetSecondRecordPtr(), &_pArray[i], sizeof (ECompositeTimeLower));
982 break;
983 default:
984 memcpy(pCurrentObject->_GetThirdRecordPtr(), &_pArray[i], sizeof (ECompositeTimeLower));
985 Add(pCurrentObject);
986 pCurrentObject = NULL;
987 break;
988 }
989 }
990 if (pCurrentObject) Add(pCurrentObject);
991 }
992#endif
993
994#ifndef DOXYGEN_SHOULD_IGNORE_THIS
995 __FCBaseData* CreateElement() override { return new __FCCompositeTimeSigBottomElement(); }
996#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
997 public:
998
999#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1001 void _BuildArray()
1002 {
1003 delete [] _pArray;
1004 _pArray = NULL;
1005 _arraycounter = 0;
1006 if (GetCount() == 0) return;
1007 /* Count the number of active records in the array */
1008 int activerecords = 0;
1009 for (int i = 0; i < GetCount(); i++)
1010 {
1012 ECompositeTimeLower* pCompositeTimeLower = pData->_GetFirstRecordPtr();
1013 if (pCompositeTimeLower->main == 0) continue;
1014 activerecords ++;
1015 pCompositeTimeLower = pData->_GetSecondRecordPtr();
1016 if (pCompositeTimeLower->main == 0) continue;
1017 activerecords ++;
1018 pCompositeTimeLower = pData->_GetThirdRecordPtr();
1019 if (pCompositeTimeLower->main == 0) continue;
1020 activerecords ++;
1021 }
1022 if (activerecords == 0) return;
1023 // Allocate memory and copy:
1024 _pArray = new ECompositeTimeLower[activerecords];
1025 int currentindex = 0;
1026 for (int i = 0; i < GetCount(); i++)
1027 {
1029 ECompositeTimeLower* pCompositeTimeLower = pData->_GetFirstRecordPtr();
1030 if (pCompositeTimeLower->main == 0) continue;
1031 memcpy(&_pArray[currentindex], pCompositeTimeLower, sizeof(ECompositeTimeLower));
1032 currentindex ++;
1033 pCompositeTimeLower = pData->_GetSecondRecordPtr();
1034 if (pCompositeTimeLower->main == 0) continue;
1035 memcpy(&_pArray[currentindex], pCompositeTimeLower, sizeof(ECompositeTimeLower));
1036 currentindex ++;
1037 pCompositeTimeLower = pData->_GetThirdRecordPtr();
1038 if (pCompositeTimeLower->main == 0) continue;
1039 memcpy(&_pArray[currentindex], pCompositeTimeLower, sizeof(ECompositeTimeLower));
1040 currentindex ++;
1041 }
1042 _arraycounter = activerecords;
1043 }
1044#endif
1045
1046 const char* ClassName() const override { return "FCCompositeTimeSigBottom"; }
1047
1053 {
1054 _pArray = NULL;
1055 _arraycounter = 0;
1056 }
1057
1060 {
1061 delete [] _pArray;
1062 _pArray = NULL;
1063 _arraycounter = 0;
1064 }
1065
1073 int GetGroupCount() const
1074 {
1075 int groupcount = 0;
1076 for (int i = 0; i < _arraycounter; i++)
1077 {
1078 if (_pArray[i].chainstart) groupcount++;
1079 }
1080 return groupcount;
1081 }
1082
1091 int GetGroupElementCount(int groupindex) const
1092 {
1093 groupindex++; /* Make the index 1-based internally for this method */
1094 int currentindex = 0;
1095 int count = 0;
1096 for (int i = 0; i < _arraycounter; i++)
1097 {
1098 if (_pArray[i].chainstart) currentindex++;
1099 if (currentindex == groupindex) count++;
1100 if (currentindex > groupindex) return count;
1101 }
1102 return count;
1103 }
1104
1114 int GetGroupElementBeatDuration(int groupindex, int subindex) const
1115 {
1116 ECompositeTimeLower* pCompositeTimeLower = _GetGroupElementPtr(groupindex, subindex);
1117 if (!pCompositeTimeLower) return 0;
1118 return pCompositeTimeLower->main;
1119 }
1120
1126 {
1127 return _arraycounter;
1128 }
1129
1138 int AddGroup(int elementcount = 1)
1139 {
1140 if (elementcount < 1) return -1;
1141 if (elementcount > 10) return -1;
1142
1143 ECompositeTimeLower* pNewArray = new ECompositeTimeLower[_arraycounter + elementcount];
1144
1145 if (_pArray)
1146 {
1147 /* Copy the old data and remove it */
1148 int bytesize = sizeof(ECompositeTimeLower) * _arraycounter;
1149 memcpy(pNewArray, _pArray, bytesize);
1150 delete [] _pArray;
1151 }
1152
1153 /* Initialize the new data */
1154 ECompositeTimeLower* pNewAddedData = &pNewArray[_arraycounter];
1155 for (int i = 0; i < elementcount; i++)
1156 {
1157 pNewAddedData->chainstart = (i == 0);
1158 pNewAddedData->main = 1024;
1159 pNewAddedData ++;
1160 }
1161
1162 /* Set new info: */
1163 _arraycounter += elementcount;
1164 _pArray = pNewArray;
1165
1166 return GetGroupCount() - 1;
1167 }
1168
1175 bool DeleteGroup(int groupindex)
1176 {
1177 // JW seems to have believed that each group could only contain one element.
1178 // (This is certainly the most typical scenario.)
1179 // However, groups can definitely contain multiple elements, so this function
1180 // DOES NOT WORK as written! Hence, it is not Lua-connected. RGP 12/27/2021
1181 if (groupindex < 0) return false;
1182 if (groupindex >= GetElementCount()) return false;
1183
1184 /* Assumes that all groups are one element long!!! */
1185 for (int idx = groupindex; idx < _arraycounter - 1; idx ++)
1186 {
1187 TimeEdu32 value = GetGroupElementBeatDuration(idx + 1, 0);
1188 SetGroupElementBeatDuration(idx, 0, value);
1189 }
1190
1191 _arraycounter --;
1192 return true;
1193 }
1194
1203 void SetGroupElementBeatDuration(int groupindex, int subindex, twobyte value)
1204 {
1205 ECompositeTimeLower* pCompositeTimeLower = _GetGroupElementPtr(groupindex, subindex);
1206 if (!pCompositeTimeLower) return;
1207 pCompositeTimeLower->main = value;
1208 }
1209
1218 bool SaveAll() override
1219 {
1220 if (_arraycounter == 0) return false;
1221 if (GetCount() == 0)
1222 {
1223#ifdef PDK_FRAMEWORK_DIAGNOSE
1224 DebugOut("FCCompositeTimeSigBottom()::SaveAll(): No existing collection items to read CMPER.");
1225#endif
1226 return false; /* There must be an existing CMPER to save to */
1227 }
1228 _RedistributeArray();
1230 CMPER cmper = pFirstInci->_GetDataID()->other.cmper;
1231 DeleteDataForItem(cmper);
1233 }
1234
1237 bool SaveAllForItem(CMPER cmper) override
1238 {
1239 if (_arraycounter == 0) return false;
1240 _RedistributeArray(cmper);
1241 if (GetCount() == 0)
1242 {
1243#ifdef PDK_FRAMEWORK_DIAGNOSE
1244 DebugOut("FCCompositeTimeSigBottom()::SaveAllForItem(): No existing collection items to read CMPER.");
1245#endif
1246 return false; /* There must be an existing CMPER to save to */
1247 }
1248
1249 DeleteDataForItem(cmper);
1251
1252 return true;
1253 }
1254};
1255#endif
1256
1257
1258#ifdef PDK_FRAMEWORK_SHAPES
1259
1260#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1261
1262#include "pragma_align_begin.h"
1263#if OPERATING_SYSTEM == WINDOWS
1264struct __EDTPathData2014 /* 13 bytes */
1265{
1266 double f;
1267 fourbyte l;
1268 onebyte isFloat;
1269};
1270#elif OPERATING_SYSTEM == MAC_OS
1271struct __EDTPathData2014 /* 16 bytes */
1272{
1273 double f;
1274 fourbyte l;
1275 fourbyte isFloat;
1276};
1277#endif
1278#include "pragma_align_end.h"
1279
1280#endif /* #ifndef DOXYGEN_SHOULD_IGNORE_THIS */
1281
1290{
1291 ETAG _tag; /* Instruction tag */
1292 int _size; /* number of parameters */
1293 EDTPathData2002* _pPathDataOld; /* Pointer to data (pre-2014) */
1294 __EDTPathData2014* _pPathData2014; /* Pointer to data for Finale 2014 */
1295#if FXT_VERSION >= FINALEVERSION_2014B
1296 EDTPathData2014b* _pPathData2014b; /* Pointer to data for Finale 2014b and later */
1297#endif
1298 mutable FCString _tagstring; /* For GetTagAsString() */
1299
1300 bool _Is2014Format() const;
1301 bool _Is2014bFormat() const;
1302
1303 void _SetTag(ETAG tag)
1304 {
1305 _tag = tag;
1306 }
1307
1309 void _AllocateParameters(int parametercount);
1310
1312 void _SetFourbyteParameter(int parameterindex, fourbyte intvalue);
1313
1314public:
1315
1321 {
1323 SHAPETAG_SETFONT = st_setfont,
1324
1326 SHAPETAG_STARTOBJECT = st_startobject,
1327
1329 SHAPETAG_STARTGROUP = st_startgroup,
1330
1332 SHAPETAG_ENDGROUP = st_endgroup,
1333
1335 SHAPETAG_DRAWCHAR = st_drawchar,
1336
1338 SHAPETAG_STROKE = st_stroke,
1339
1341 SHAPETAG_RMOVETO = st_rmoveto,
1342
1344 SHAPETAG_LINEWIDTH = st_linewidth,
1345
1347 SHAPETAG_SETDASH = st_setdash,
1348
1350 SHAPETAG_LINETO = st_rlineto,
1351
1353 SHAPETAG_SETGRAY = st_setgray,
1354
1356 SHAPETAG_ELLIPSE = st_ellipse,
1357
1359 SHAPETAG_FILLSOLID = st_fillsolid,
1360
1362 SHAPETAG_CURVETO = st_curveto,
1363
1365 SHAPETAG_SLUR = st_slur,
1366
1368 SHAPETAG_RECTANGLE = st_rectangle,
1369
1371 SHAPETAG_CLOSEPATH = st_closepath,
1372
1374 SHAPETAG_BRACKET = st_bracket,
1375
1377 SHAPETAG_NULL = st_null
1379
1381 FCShapeDefInstruction(ETAG tag, int instructionsize,
1382 void* pPathData);
1383
1384 /* Constructor for using new, created data */
1386 const char* ClassName() const override { return "FCShapeDefInstruction"; }
1387
1401 void _SetMemory(EDTPathInst* pPathInstruction, void* pPathData, int offset);
1402
1404 virtual ~FCShapeDefInstruction();
1405
1411 int GetCount() const { return _size; }
1412
1419 ETAG GetTag() const
1420 {
1421 return _tag;
1422 }
1423
1425 bool IsIdentical(const __FCBase* pTestObject) const override
1426 {
1427 const FCShapeDefInstruction* pTestInstruction = dynamic_cast<const FCShapeDefInstruction*>(pTestObject);
1428 if(!pTestInstruction) return false;
1429 if (GetCount() != pTestInstruction->GetCount()) return false;
1430 if (GetTag() != pTestInstruction->GetTag()) return false;
1431 int count = GetCount();
1432 for (int i = 0; i < count; i++)
1433 {
1434 if (GetFourbyteData(i) != pTestInstruction->GetFourbyteData(i)) return false;
1435 }
1436 return true;
1437 }
1438
1444 const char* GetTagAsString() const
1445 {
1446 _tagstring.Clear();
1447 switch (GetTag()) {
1448 case st_setfont:
1449 _tagstring.SetCString("setfont");
1450 break;
1451 case st_startobject:
1452 _tagstring.SetCString("startobject");
1453 break;
1454 case st_startgroup:
1455 _tagstring.SetCString("startgroup");
1456 break;
1457 case st_endgroup:
1458 _tagstring.SetCString("endgroup");
1459 break;
1460 case st_drawchar:
1461 _tagstring.SetCString("drawchar");
1462 break;
1463 case st_stroke:
1464 _tagstring.SetCString("stroke");
1465 break;
1466 case st_rmoveto:
1467 _tagstring.SetCString("rmoveto");
1468 break;
1469 case st_linewidth:
1470 _tagstring.SetCString("linewidth");
1471 break;
1472 case st_setdash:
1473 _tagstring.SetCString("setdash");
1474 break;
1475 case st_rlineto:
1476 _tagstring.SetCString("rlineto");
1477 break;
1478 case st_setgray:
1479 _tagstring.SetCString("setgrey");
1480 break;
1481 case st_ellipse:
1482 _tagstring.SetCString("ellipse");
1483 break;
1484 case st_fillsolid:
1485 _tagstring.SetCString("fillsolid");
1486 break;
1487 case st_curveto:
1488 _tagstring.SetCString("curveto");
1489 break;
1490 case st_slur:
1491 _tagstring.SetCString("slur");
1492 break;
1493 case st_rectangle:
1494 _tagstring.SetCString("rectangle");
1495 break;
1496 case st_closepath:
1497 _tagstring.SetCString("closepath");
1498 break;
1499 case st_bracket:
1500 _tagstring.SetCString("bracket");
1501 break;
1502 case 0:
1503 _tagstring.SetCString("Null");
1504 break;
1505 default:
1506 _tagstring.AppendCharacter((GetTag() & 0xff00) / 256);
1507 _tagstring.AppendCharacter(GetTag() & 0xff);
1508 break;
1509 }
1510
1511 return _tagstring.GetCString();
1512 }
1513
1521 fourbyte GetFourbyteData(int index) const;
1522
1534 bool SetFourbyteData(int index, fourbyte fbvalue)
1535 {
1536 if (index < 0) return false;
1537 if (index >= _size) return false;
1538 _SetFourbyteParameter(index, fbvalue);
1539 return true;
1540 }
1541
1549 double GetFloatData(int index);
1550
1563 void Init_StartObject(int xorigin, int yorigin, int left, int top, int right, int bottom, int xtransform = 1000, int ytransform = 1000, int rotation = 0)
1564 {
1565 _SetTag(st_startobject);
1566 _AllocateParameters(11);
1567 _SetFourbyteParameter(0, xorigin);
1568 _SetFourbyteParameter(1, yorigin);
1569 _SetFourbyteParameter(2, left);
1570 _SetFourbyteParameter(3, top);
1571 _SetFourbyteParameter(4, right);
1572 _SetFourbyteParameter(5, bottom);
1573 _SetFourbyteParameter(6, xtransform);
1574 _SetFourbyteParameter(7, ytransform);
1575 _SetFourbyteParameter(8, rotation);
1576 /* The rest of the parameters is 0 */
1577 }
1578
1583 void Init_StartGroup(int xorigin, int yorigin, int left, int top, int right, int bottom, int xtransform = 1000, int ytransform = 1000, int rotation = 0)
1584 {
1585 _SetTag(st_startgroup);
1586 _AllocateParameters(11);
1587 _SetFourbyteParameter(0, xorigin);
1588 _SetFourbyteParameter(1, yorigin);
1589 _SetFourbyteParameter(2, left);
1590 _SetFourbyteParameter(3, top);
1591 _SetFourbyteParameter(4, right);
1592 _SetFourbyteParameter(5, bottom);
1593 _SetFourbyteParameter(6, xtransform);
1594 _SetFourbyteParameter(7, ytransform);
1595 _SetFourbyteParameter(8, rotation);
1596 /* The rest of the parameters is 0 */
1597 }
1598
1603 {
1604 _SetTag(st_endgroup);
1605 _AllocateParameters(0);
1606 }
1607
1609 void Init_RMoveTo(int x, int y)
1610 {
1611 _SetTag(st_rmoveto);
1612 _AllocateParameters(2);
1613 _SetFourbyteParameter(0, x);
1614 _SetFourbyteParameter(1, y);
1615 }
1616
1618 void Init_CurveTo(int x1, int y1, int x2, int y2, int endpt_x, int endpt_y)
1619 {
1620 _SetTag(st_curveto);
1621 _AllocateParameters(6);
1622 _SetFourbyteParameter(0, x1);
1623 _SetFourbyteParameter(1, y1);
1624 _SetFourbyteParameter(2, x2);
1625 _SetFourbyteParameter(3, y2);
1626 _SetFourbyteParameter(4, endpt_x);
1627 _SetFourbyteParameter(5, endpt_y);
1628 }
1629
1631 void Init_Slur(int x1, int y1, int x2, int y2, int endpt_x, int endpt_y)
1632 {
1633 _SetTag(st_slur);
1634 _AllocateParameters(6);
1635 _SetFourbyteParameter(0, x1);
1636 _SetFourbyteParameter(1, y1);
1637 _SetFourbyteParameter(2, x2);
1638 _SetFourbyteParameter(3, y2);
1639 _SetFourbyteParameter(4, endpt_x);
1640 _SetFourbyteParameter(5, endpt_y);
1641 }
1642
1643
1647 void Init_LineWidth(int linewidth)
1648 {
1649 _SetTag(st_linewidth);
1650 _AllocateParameters(1);
1651 _SetFourbyteParameter(0, linewidth);
1652 }
1653
1657 void Init_SetGrey(int greyvalue)
1658 {
1659 _SetTag(st_setgray);
1660 _AllocateParameters(1);
1661 _SetFourbyteParameter(0, greyvalue);
1662 }
1663
1666 {
1667 _SetTag(st_fillsolid);
1668 _AllocateParameters(0);
1669 }
1670
1673 {
1674 _SetTag(st_closepath);
1675 _AllocateParameters(0);
1676 }
1677
1683 void Init_Ellipse(int width, int height)
1684 {
1685 _SetTag(st_ellipse);
1686 _AllocateParameters(2);
1687 _SetFourbyteParameter(0, width);
1688 _SetFourbyteParameter(1, height);
1689 }
1690
1695 void Init_Rectangle(int width, int height)
1696 {
1697 _SetTag(st_rectangle);
1698 _AllocateParameters(2);
1699 _SetFourbyteParameter(0, width);
1700 _SetFourbyteParameter(1, height);
1701 }
1702
1706 void Init_DrawChar(eUniChar16 character)
1707 {
1708 _SetTag(st_drawchar);
1709 _AllocateParameters(1);
1710 _SetFourbyteParameter(0, character);
1711 }
1712
1716 void Init_SetFont(FCFontInfo* pFontInfo)
1717 {
1718 _SetTag(st_setfont);
1719 _AllocateParameters(3);
1720 _SetFourbyteParameter(0, pFontInfo->GetIDByName()); /* Enigma font ID */
1721 _SetFourbyteParameter(1, pFontInfo->GetSize()); /* font size */
1722 _SetFourbyteParameter(2, pFontInfo->GetEnigmaStyles()); /* efx */
1723 }
1724
1727 void Init_SetDash(int dashlength, int spacebetween)
1728 {
1729 _SetTag(st_setdash);
1730 _AllocateParameters(2);
1731 _SetFourbyteParameter(0, dashlength);
1732 _SetFourbyteParameter(1, spacebetween);
1733 }
1734
1736 void Init_RLineTo(int x, int y)
1737 {
1738 _SetTag(st_rlineto);
1739 _AllocateParameters(2);
1740 _SetFourbyteParameter(0, x);
1741 _SetFourbyteParameter(1, y);
1742 }
1743
1745 void Init_Bracket(int brackettype)
1746 {
1747 _SetTag(st_bracket);
1748 _AllocateParameters(1);
1749 _SetFourbyteParameter(0, brackettype);
1750 }
1751
1754 {
1755 _SetTag(st_stroke);
1756 _AllocateParameters(0);
1757 }
1758
1761 {
1762 _SetTag(0);
1763 _AllocateParameters(0);
1764 }
1765
1766
1767#if PDK_FRAMEWORK_DEBUG
1768 void DebugDump() override
1769 {
1771
1772 DebugOutInt("sizeof double: ", sizeof(double));
1773 DebugOutString("Tag: ", GetTagAsString());
1774
1775 DebugOutInt("No of parameters: ", _size);
1776 for (int i = 0; i < _size; i++)
1777 {
1778 FCString parameterstring("Parameter ");
1779 parameterstring.AppendInteger(i + 1);
1780 parameterstring.AppendCString(": ");
1781 parameterstring.AppendInteger(GetFourbyteData(i));
1782 parameterstring.AppendCString(" (");
1783 parameterstring.AppendFloat(GetFloatData(i));
1784 parameterstring.AppendCString(")");
1785 DebugOutString("", &parameterstring);
1786 }
1787 }
1788#endif
1789};
1790#endif /* PDK_FRAMEWORK_SHAPES */
1791
1792
1793#ifdef PDK_FRAMEWORK_SHAPES
1794
1804{
1805public:
1806 const char* ClassName() const override { return "FCShapeDefInstructions"; }
1807
1813
1822 {
1823 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
1824 pInstruction->Init_Null();
1825 Add(pInstruction);
1826 return pInstruction;
1827 }
1828
1846 FCPoint* pBoundRightBottom,
1847 int xtransform = 1000, int ytransform = 1000,
1848 int rotation = 0)
1849 {
1850 if (!pOrigin) return NULL;
1851 if (!pBoundLeftTop) return NULL;
1852 if (!pBoundRightBottom) return NULL;
1853 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
1854
1855 pInstruction->Init_StartObject((int) pOrigin->GetX(),
1856 (int) pOrigin->GetY(),
1857 (int) pBoundLeftTop->GetX(),
1858 (int) pBoundLeftTop->GetY(),
1859 (int) pBoundRightBottom->GetX(),
1860 (int) pBoundRightBottom->GetY(),
1861 xtransform, ytransform, rotation);
1862 Add(pInstruction);
1863 return pInstruction;
1864 }
1865
1873 FCPoint* pBoundRightBottom,
1874 int xtransform = 1000, int ytransform = 1000,
1875 int rotation = 0)
1876 {
1877 if (!pOrigin) return NULL;
1878 if (!pBoundLeftTop) return NULL;
1879 if (!pBoundRightBottom) return NULL;
1880 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
1881
1882 pInstruction->Init_StartGroup((int) pOrigin->GetX(),
1883 (int) pOrigin->GetY(),
1884 (int) pBoundLeftTop->GetX(),
1885 (int) pBoundLeftTop->GetY(),
1886 (int) pBoundRightBottom->GetX(),
1887 (int) pBoundRightBottom->GetY(),
1888 xtransform, ytransform, rotation);
1889 Add(pInstruction);
1890 return pInstruction;
1891 }
1892
1896 {
1897 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
1898 pInstruction->Init_EndGroup();
1899 Add(pInstruction);
1900 return pInstruction;
1901 }
1902
1912 {
1913 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
1914 pInstruction->Init_LineWidth(linewidth);
1915 Add(pInstruction);
1916 return pInstruction;
1917 }
1918
1926 {
1927 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
1928 pInstruction->Init_SetGrey(percent);
1929 Add(pInstruction);
1930 return pInstruction;
1931 }
1932
1938 {
1939 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
1940 pInstruction->Init_FillSolid();
1941 Add(pInstruction);
1942 return pInstruction;
1943 }
1944
1951 {
1952 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
1953 pInstruction->Init_ClosePath();
1954 Add(pInstruction);
1955 return pInstruction;
1956 }
1957
1965 FCShapeDefInstruction* AddEllipse(int width, int height)
1966 {
1967 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
1968 pInstruction->Init_Ellipse(width, height);
1969 Add(pInstruction);
1970 return pInstruction;
1971 }
1972
1980 FCShapeDefInstruction* AddRectangle(int width, int height)
1981 {
1982 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
1983 pInstruction->Init_Rectangle(width, height);
1984 Add(pInstruction);
1985 return pInstruction;
1986 }
1987
2001 FCShapeDefInstruction* AddCurveTo(int ctrlpt_height = 72)
2002 {
2003 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
2004 pInstruction->Init_CurveTo(72, ctrlpt_height, 144, 0, 72, -ctrlpt_height);
2005 Add(pInstruction);
2006 return pInstruction;
2007 }
2008
2033 FCShapeDefInstruction* AddCurveToDetails(int x1, int y1, int x2, int y2, int endpt_x, int endpt_y)
2034 {
2035 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
2036 pInstruction->Init_CurveTo(x1, y1, x2, y2, endpt_x, endpt_y);
2037 Add(pInstruction);
2038 return pInstruction;
2039 }
2040
2048 FCShapeDefInstruction* AddSlur(int ctrlpt_height = 72)
2049 {
2050 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
2051 pInstruction->Init_Slur(72, ctrlpt_height, 144, 0, 72, -ctrlpt_height);
2052 Add(pInstruction);
2053 return pInstruction;
2054 }
2055
2062 {
2063 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
2064 pInstruction->Init_Stroke();
2065 Add(pInstruction);
2066 return pInstruction;
2067 }
2068
2076 FCShapeDefInstruction* AddSetDash(int dashlength, int spacebetween)
2077 {
2078 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
2079 pInstruction->Init_SetDash(dashlength, spacebetween);
2080 Add(pInstruction);
2081 return pInstruction;
2082 }
2083
2092 {
2093 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
2094 pInstruction->Init_RLineTo(x, y);
2095 Add(pInstruction);
2096 return pInstruction;
2097 }
2098
2106 {
2107 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
2108 pInstruction->Init_Bracket(brackettype);
2109 Add(pInstruction);
2110 return pInstruction;
2111 }
2112
2118 {
2119 return AddSetDash(18, 0);
2120 }
2121
2130 {
2131 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
2132 pInstruction->Init_RMoveTo(x, y);
2133 Add(pInstruction);
2134 return pInstruction;
2135 }
2136
2147 {
2148 if (!pFontInfo) return NULL;
2149 FCShapeDefInstruction* pInstruction = new FCShapeDefInstruction();
2150 pInstruction->Init_SetFont(pFontInfo);
2151 Add(pInstruction);
2152 return pInstruction;
2153 }
2154
2166 FCShapeDefInstruction* AddDrawChar(eUniChar16 character);
2167
2177 FCShapeDefInstruction* AddDrawChars(const char* pszString)
2178 {
2179 if (!pszString) return NULL;
2180 int length = (int) strlen(pszString);
2181 FCShapeDefInstruction* pReturn = NULL;
2182 for (int i = 0; i < length; i++)
2183 {
2184 pReturn = AddDrawChar(pszString[i]);
2185 }
2186 return pReturn;
2187 }
2188
2201 {
2202 if (!pString) return NULL;
2203 int length = pString->GetLength();
2204 FCShapeDefInstruction* pReturn = NULL;
2205 for (int i = 0; i < length; i++)
2206 {
2207 pReturn = AddDrawChar(pString->GetCharacterAt(i));
2208 }
2209 return pReturn;
2210 }
2211};
2212#endif /* PDK_FRAMEWORK_SHAPES */
2213
2214#ifdef PDK_FRAMEWORK_SHAPES
2215#define __ot_Shape_WORKAROUNDTAG MAKEEXTAG(edOther,'S','D')
2216
2233{
2234public:
2238 {
2239 SHAPEDEFTYPE_UNKNOWN = -1,
2240 SHAPEDEFTYPE_OTHER = 0,
2241 SHAPEDEFTYPE_ARTICULATION = 1,
2242 SHAPEDEFTYPE_BARLINE = 2,
2243 SHAPEDEFTYPE_EXECUTABLESHAPE = 3,
2244 SHAPEDEFTYPE_EXPRESSION = 4,
2245 SHAPEDEFTYPE_NOTE = 5,
2246 SHAPEDEFTYPE_FRAME = 6,
2247 SHAPEDEFTYPE_ARROWHEAD = 7,
2248 SHAPEDEFTYPE_FRETBOARD = 8,
2249 SHAPEDEFTYPE_CLEF = 9
2250 };
2251
2252private:
2253#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2254 EDTShape* _TypeCast() const { return (EDTShape*)_datablock; }
2255#if FXT_VERSION >= FINALEVERSION_2014B
2256 EDTShape2014b* _TypeCast2014b() const { return (EDTShape2014b*)_datablock; }
2257#endif
2258 /* _isemptyshape & _shapedeftype are used for pre2014b, to
2259 try to work around load crashes for empty shapes on Windows */
2260 bool _isemptyshape;
2261 SHAPEDEF_TYPES _shapedeftype;
2262
2263 void _AllocateMemory(int size)
2264 {
2265 if (size == 0)
2266 {
2267 _datablock = NULL;
2268 _loadedsize = 0;
2269 return;
2270 }
2271 _datablock = new char [size];
2272 memset(_datablock, 0, size);
2273 _loadedsize = size;
2274 }
2275
2276 bool _Is2014Format() const;
2277
2278 bool _Is2014bFormat() const;
2279
2284 bool _SaveType(SHAPEDEF_TYPES shapedeftype)
2285 {
2286 /* On Fin2014b, the shape type is available in the struct. */
2287 if (_Is2014bFormat()) return true;
2288
2289 twobyte oneinci[6];
2290 EDataID dataID;
2291 dataID.other.cmper = _dataid.other.cmper;
2292 dataID.other.inci = 0;
2293 fourbyte size = sizeof(oneinci);
2294 /* Load the raw data (no special extag!) */
2295 if (!FX_LoadEData(__ot_Shape_WORKAROUNDTAG, &dataID, &oneinci, &size)) return false;
2296 oneinci[2] = (twobyte) shapedeftype;
2297 _shapedeftype = shapedeftype;
2298 return FX_SaveEData(__ot_Shape_WORKAROUNDTAG, &dataID, &oneinci, size) != 0;
2299 }
2300
2305 bool _LoadType()
2306 {
2307 /* On Fin2014b, the shape type is available in the struct */
2308 if (_Is2014bFormat()) return true;
2309
2310 twobyte oneinci[6];
2311 EDataID dataID;
2312 dataID.other.cmper = _dataid.other.cmper;
2313 dataID.other.inci = 0;
2314 fourbyte size = sizeof(oneinci);
2315 /* Load the raw data (no special extag!) */
2316 if (!FX_LoadEData(__ot_Shape_WORKAROUNDTAG, &dataID, &oneinci, &size)) return false;
2317 _shapedeftype = (SHAPEDEF_TYPES) oneinci[2];
2318 return true;
2319 }
2320
2321protected:
2324 EXTAG Tag() const override { return GetCustomTag() ? GetCustomTag() : ot_Shape; }
2325
2326 EVERSION EnigmaVersion() const override;
2327
2328 void CloneMemoryFrom(__FCBaseData* pSource) override
2329 {
2330 /* Copy the heap: */
2332 /* Copy the empty shape state */
2333 _isemptyshape = ((FCShapeDef*) pSource)->_GetIsEmptyShape();
2334 }
2335
2336 int DataSizeLoad() const override
2337 {
2338 fourbyte size;
2339 if (!FX_LoadEData(Tag(), &_dataid, NULL, &size, EnigmaVersion())) return 0;
2340
2341#if !defined(__LP64__) && !defined(_WIN64)
2342 if (!_Is2014bFormat())
2343 {
2344 /* Attempt to workaround for empty shape crashes on earlier Finale versions. */
2345 SetCustomTag((size == sizeof(EDTShape)) ? __ot_Shape_WORKAROUNDTAG : ot_Shape);
2346 }
2347#endif // 32-bit only
2348
2349 return size;
2350 }
2351
2352 void* Allocate() override
2353 {
2354 _AllocateMemory(DataSizeLoad());
2355 return _datablock;
2356 }
2357
2358 void Deallocate() override
2359 {
2360 if (_datablock) delete [] (char*) _datablock;
2361 _datablock = NULL;
2362 _loadedsize = 0;
2363 }
2364
2365 bool IsDynamicSize() override { return true; }
2366
2367 __FCBaseData* CreateObject() override { return new FCShapeDef(); }
2368
2373 EDTPathInst* _GetPathInstructionArray()
2374 {
2375 if (_isemptyshape) return NULL;
2376 if (_Is2014bFormat())
2377 {
2378#if FXT_VERSION >= FINALEVERSION_2014B
2379 return (EDTPathInst*) ((char *)_datablock + _TypeCast2014b()->instrucOff);
2380#endif
2381 }
2382 else
2383 {
2384 return (EDTPathInst*) ((char *)_datablock + _TypeCast()->instrucOff);
2385 }
2386 return NULL;
2387 }
2388
2394 void* _GetPathDataArray()
2395 {
2396 if (_isemptyshape) return NULL;
2397 if (_Is2014bFormat())
2398 {
2399#if FXT_VERSION >= FINALEVERSION_2014B
2400 return (void*) ((char *)_datablock + _TypeCast2014b()->dataOff);
2401#endif
2402 }
2403 else
2404 {
2405 return (void*) ((char *)_datablock + _TypeCast()->dataOff);
2406 }
2407 return NULL;
2408 }
2409
2419 bool _EmptyShapeCheck(CMPER cmper, bool* pIsEmpty)
2420 {
2421#ifdef PDK_FRAMEWORK_DIAGNOSE
2422 if (_Is2014bFormat())
2423 {
2424 DebugOut("FCShapeDef::_EmptyShapeCheck was called on 2014b struct.");
2425 return false;
2426 }
2427#endif
2428
2429 *pIsEmpty = true;
2430 //twobyte shapetestinci[6];
2431 EDTShape shapetest;
2432 memset(&shapetest, 0, sizeof(shapetest));
2433 EDataID dataID;
2434 dataID.other.cmper = cmper;
2435 dataID.other.inci = 0;
2436 fourbyte size = sizeof(shapetest);
2437 /* Load the raw data (no special extag) */
2438 bool result = FX_LoadEData(__ot_Shape_WORKAROUNDTAG,
2439 &dataID, &shapetest, &size, EnigmaVersion()) != 0;
2440 if (!result) return false;
2441 int loopcount = size / sizeof(twobyte);
2442 twobyte* pNonZeroCheck = (twobyte*) &shapetest;
2443 for (int i = 0; i < loopcount; i++)
2444 {
2445 if (pNonZeroCheck[i])
2446 {
2447 if (i == 1) continue; /* On the 1st twobyte (0-based), there might
2448 be data even for empty shapes!!! */
2449 if (i == 2) continue; /* On the 2nd twobyte (0-based), there might
2450 be data even for empty shapes!!! */
2451 *pIsEmpty = false;
2452 return true;
2453 }
2454 }
2455 return true;
2456 }
2457
2458
2465 void* _GetInstructionDataPointer(int index);
2466
2467#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2468public:
2469 const char* ClassName() const override { return "FCShapeDef"; }
2470 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_SHAPEDEF; }
2471
2474 {
2475 _isemptyshape = true;
2476 _shapedeftype = SHAPEDEFTYPE_UNKNOWN;
2477 }
2478
2479 /* Virtual destructor */
2480 virtual ~FCShapeDef()
2481 {
2482 Deallocate();
2483 }
2484
2488 bool _GetIsEmptyShape() { return _isemptyshape; }
2489
2493 {
2494 if (_Is2014bFormat()) return false;
2495
2496 EDataID dataID;
2497 twobyte buffer[6];
2498 dataID.other.cmper = GetItemNo();
2499 dataID.other.inci = 0;
2500 fourbyte size = sizeof(buffer);
2501 memset(buffer, 0, sizeof(buffer));
2502 if (!FX_LoadEData(__ot_Shape_WORKAROUNDTAG, &dataID, buffer, &size, FINALEVERSION_2010)) return false;
2503 return ((buffer[2] & 0x0008) != 0);
2504 }
2505
2507 bool LoadFirst() override
2508 {
2509 return Load(1);
2510 }
2511
2512 bool DeleteData() override
2513 {
2514 if (CalcProtected()) return false;
2516 }
2517
2519 bool LoadNext() override
2520 {
2521 return Load(GetItemNo() + 1);
2522 }
2523
2527 bool Load(CMPER itemno) override
2528 {
2529 bool isemptyshape;
2530
2531 bool result = false;
2532 if (_Is2014bFormat())
2533 {
2534 /* Normal load */
2535 result = __FCNoInciOther::Load(itemno);
2536 if (result)
2537 {
2538#if FXT_VERSION >= FINALEVERSION_2014B
2539 _shapedeftype = (SHAPEDEF_TYPES) _TypeCast2014b()->shapeType;
2540 /* _isemptyshape shouldn't actively be used on 2014b+ */
2541 _isemptyshape = (_TypeCast2014b()->instrucLen == 0);
2542#endif
2543 }
2544 else
2545 {
2546 _shapedeftype = SHAPEDEFTYPE_UNKNOWN;
2547 _isemptyshape = true;
2548 }
2549 }
2550 else
2551 {
2552 /* On pre2014b, try to work around the empty shape crash bug */
2553 if (!_EmptyShapeCheck(itemno, &isemptyshape)) return false;
2554 SetCustomTag(isemptyshape ? __ot_Shape_WORKAROUNDTAG : ot_Shape);
2555 _isemptyshape = isemptyshape;
2556 result = __FCNoInciOther::Load(itemno);
2557 if (result)
2558 _LoadType();
2559 else
2560 _shapedeftype = SHAPEDEFTYPE_UNKNOWN;
2561 }
2562 return result;
2563 }
2564
2578#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2580#else
2581 int
2582#endif
2583 GetType() const {
2584 if (!DataIsLoaded()) return SHAPEDEFTYPE_UNKNOWN;
2585 if (_Is2014bFormat())
2586 {
2587#if FXT_VERSION >= FINALEVERSION_2014B
2588 return (FCShapeDef::SHAPEDEF_TYPES) _TypeCast2014b()->shapeType;
2589#endif
2590 }
2591 return _shapedeftype;
2592 }
2593
2604#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2606#else
2607 int
2608#endif
2609 shapedeftype
2610 )
2611 {
2612 if (_Is2014bFormat())
2613 {
2614 /* On Finale 2014b, the shape type is in the struct */
2615#if FXT_VERSION >= FINALEVERSION_2014B
2616 _TypeCast2014b()->shapeType = shapedeftype;
2617#endif
2618 }
2619 if (!SaveNew()) return false;
2620 if (!_Is2014bFormat())
2621 {
2622 if (!_SaveType((SHAPEDEF_TYPES) shapedeftype)) return false;
2623 }
2624 return true;
2625 }
2626
2639#ifndef PDK_FRAMEWORK_LUAFRIENDLY
2641#else
2642 twobyte
2643#endif
2644 shapedeftype)
2645 {
2646 if (_Is2014bFormat())
2647 {
2648 /* In Finale 2014b, the shape type is in the struct */
2649#if FXT_VERSION >= FINALEVERSION_2014B
2650 _TypeCast2014b()->shapeType = shapedeftype;
2651#endif
2652 }
2653 if (!Save()) return false; /* Aug 05, 2017: This was SaveNew(), seems very wrong? */
2654 if (!_Is2014bFormat())
2655 {
2656 if (!_SaveType((SHAPEDEF_TYPES) shapedeftype)) return false;
2657 }
2658 return true;
2659 }
2660
2661
2666 fourbyte GetDataCount() const
2667 {
2668 if (_Is2014bFormat())
2669 {
2670#if FXT_VERSION >= FINALEVERSION_2014B
2671 return _isemptyshape ? 0 : _TypeCast2014b()->dataLen;
2672#endif
2673 }
2674 else
2675 {
2676 return _isemptyshape ? 0 : _TypeCast()->dataLen;
2677 }
2678 return 0;
2679 }
2680
2688 fourbyte GetInstructionsCount() const
2689 {
2690 int returnval = 0;
2691 if (_Is2014bFormat())
2692 {
2693#if FXT_VERSION >= FINALEVERSION_2014B
2694 /* On 2014b+, _isemptyshape shouldn't be used. */
2695 returnval = _TypeCast2014b()->instrucLen;
2696#endif
2697 }
2698 else
2699 {
2700 returnval = _isemptyshape ? 0 : _TypeCast()->instrucLen;
2701 /* Have some range check, since empty shapes can have
2702 very strange values on earlier Finale versions. */
2703 if ((returnval > 300) || (returnval < 0)) return -1;
2704 }
2705 return returnval;
2706 }
2707
2716 ETAG GetInstructionTag(int index)
2717 {
2718 if (index < 0) return 0;
2719 if (index >= GetInstructionsCount()) return 0;
2720 EDTPathInst* pPathArray = _GetPathInstructionArray();
2721 return pPathArray[index].tag;
2722 }
2723
2726 int GetInstructionSize(int index)
2727 {
2728 if (index < 0) return -1;
2729 if (index >= GetInstructionsCount()) return -1;
2730 EDTPathInst* pPathArray = _GetPathInstructionArray();
2731 return pPathArray[index].numdata;
2732 }
2733
2745
2746#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
2748 luabridge::RefCountedPtr<FCShapeDefInstructions> CreateInstructions_GC()
2749 { return makeLuaSharedPtr(CreateInstructions()); }
2750#endif
2751
2766
2767#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
2769 luabridge::RefCountedPtr<FCStrings> CreateTextStrings_GC()
2770 { return makeLuaSharedPtr(CreateTextStrings()); }
2771#endif
2772
2773
2783
2791 bool GetFontInfo(int index, FCFontInfo* pFontInfo);
2792
2800 bool SetFontInfo(int index, FCFontInfo* pFontInfo);
2801
2817 bool ExportAsSVGFile(FCString* pFileName, float scaling, const char* pszUnit);
2818
2819#ifdef PDK_FRAMEWORK_DEBUG
2820 void DebugDump() override
2821 {
2823 DebugOutInt("Data size: ", (int) _loadedsize);
2824 DebugOutInt("Instruction count: ", GetInstructionsCount());
2825 DebugOutInt("Data count: ", GetDataCount());
2826 DebugOutInt("sizeof EDTShape: ", sizeof(EDTShape));
2827 DebugOutInt("sizeof EDTPathInst: ", sizeof(EDTPathInst));
2828 DebugOutInt("sizeof EDTPathData2002: ", sizeof(EDTPathData2002));
2829
2830
2831 //FCShapeDefInstructions* pInstructions = CreateInstructions();
2832 //pInstructions->DebugDump();
2833 //delete pInstructions;
2834
2835/* DebugOutInt("Instruction count: ", GetInstructionsCount());
2836 for (int i = 0; i < GetInstructionsCount(); i++)
2837 {
2838 DebugOutInt("Instruction: ", i);
2839 if (GetInstructionTag(i) == 0)
2840 {
2841 DebugOut("Tag: st_null");
2842 }
2843 else
2844 {
2845 FCString firstchar, secondchar;
2846 firstchar.Append((GetInstructionTag(i) & 0xff00) / 0x100);
2847 secondchar.Append((GetInstructionTag(i) & 0x00ff));
2848 FCString resultstring;
2849 resultstring.Append(&firstchar);
2850 resultstring.Append(", ");
2851 resultstring.Append(&secondchar);
2852 DebugOutString("Tag: ", &resultstring);
2853 }
2854 } */
2855 }
2856
2858 void InstructionDebugDump(int instructionindex);
2859
2860#endif /* PDK_FRAMEWORK_DEBUG */
2861};
2862#endif /* PDK_FRAMEWORK_SHAPES */
2863
2864
2865
2872{
2873#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2875 EDTEnclosure _enclosuredataold; /* For loaded enclosures - DO
2876 * NOT REFERENCE this directly in the code!!!! */
2877
2878 FIN25_4_CODE(EDTEnclosure25_4 _enclosuredata25_4;) /* For loaded enclosures - DO
2879 * NOT REFERENCE this directly in the code!!!!
2880 * Note that this data use a different EXTAG
2881 * than the old data */
2882
2883 EDTEnclosure* _pEnclosureOld; /* Assigned pointer, pre 25.4 */
2884 FIN25_4_CODE(EDTEnclosure25_4* _pEnclosure25_4;) /* Assigned pointer, Finale 25.4 */
2885
2886
2887 /* Returns true if the 25.4 version of the struct should be used. */
2888 bool Use25_4Version() const;
2889
2890 /* Returns a pointer to the flag member of the struct */
2891 const FLAG_16* _GetFlagPtr() const
2892 {
2893 FIN25_4_CODE( if (Use25_4Version()) return &_pEnclosure25_4->flag; )
2894 return &_pEnclosureOld->flag;
2895 }
2896
2897 /* Returns a pointer to the lineWidth member of the struct */
2898 const EVPUFixedShort* _GetLineWidthPtr() const
2899 {
2900 FIN25_4_CODE( if (Use25_4Version()) return &_pEnclosure25_4->lineWidth; )
2901 return &_pEnclosureOld->lineWidth;
2902 }
2903
2904 /* Returns a pointer to the xAdd member of the struct */
2905 const Evpu16* _GetXAddPtr() const
2906 {
2907 FIN25_4_CODE( if (Use25_4Version()) return &_pEnclosure25_4->xAdd; )
2908 return &_pEnclosureOld->xAdd;
2909 }
2910
2911 /* Returns a pointer to the yAdd member of the struct */
2912 const Evpu16* _GetYAddPtr() const
2913 {
2914 FIN25_4_CODE( if (Use25_4Version()) return &_pEnclosure25_4->yAdd; )
2915 return &_pEnclosureOld->yAdd;
2916 }
2917
2918 /* Returns a pointer to the xMargin member of the struct */
2919 const Evpu16* _GetXMarginPtr() const
2920 {
2921 FIN25_4_CODE( if (Use25_4Version()) return &_pEnclosure25_4->xMargin; )
2922 return &_pEnclosureOld->xMargin;
2923 }
2924
2925 /* Returns a pointer to the yMargin member of the struct */
2926 const Evpu16* _GetYMarginPtr() const
2927 {
2928 FIN25_4_CODE( if (Use25_4Version()) return &_pEnclosure25_4->yMargin; )
2929 return &_pEnclosureOld->yMargin;
2930 }
2931
2932protected:
2933 EXTAG Tag() const override
2934 {
2935 if (GetCustomTag()) return GetCustomTag();
2936 FIN25_4_CODE( if (Use25_4Version()) return ot_TextExpEnclosure25_4; )
2937 return ot_TextExpEnclosure;
2938 }
2939 int DataSizeLoad() const override
2940 {
2941 FIN25_4_CODE( if (Use25_4Version()) return sizeof(EDTEnclosure25_4); )
2942 return sizeof(EDTEnclosure);
2943 }
2944
2945 /* Returns a pointer either to the 25.4 or the old enclosure struct */
2946 void* Allocate() override
2947 {
2948 FIN25_4_CODE( if (Use25_4Version()) return (void*) _pEnclosure25_4; )
2949 return (void*) _pEnclosureOld;
2950 }
2951
2956 void CloneMemoryFrom(__FCBaseData* pSource) override
2957 {
2958 void* pData = _GetEnclosure();
2959 int size = DataSizeLoad();
2960 memcpy(pData, ((FCEnclosure*)pSource)->_GetEnclosure(), size);
2961 _datablock = pData;
2962 _loadedsize = size;
2963 }
2964
2965 __FCBaseData* CreateObject() override { return new FCEnclosure(); }
2966
2967#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2968public:
2969 const char* ClassName() const override { return "FCEnclosure"; }
2970 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_ENCLOSURE; }
2971
2972#ifndef DOXYGEN_SHOULD_IGNORE_THIS
2981 void* _GetEnclosure() const {
2982 FIN25_4_CODE( if (Use25_4Version()) return (void*) _pEnclosure25_4; )
2983 return (void*) _pEnclosureOld;
2984 }
2985
2986#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
2987
3018
3031
3051 {
3052 // Defaults to pointing to self-contained storage. (See comment above.)
3053 //
3054 if (Use25_4Version())
3055 {
3056 FIN25_4_CODE( _pEnclosure25_4 = &_enclosuredata25_4; )
3057 }
3058 else
3059 {
3060 _pEnclosureOld = &_enclosuredataold;
3061 }
3062 void* pData = _GetEnclosure();
3063 memset(pData, 0, DataSizeLoad());
3064 _datablock = pData;
3065 }
3066
3070 void _AssignEDTEnclosure(void* pPointer)
3071 {
3072 if (Use25_4Version())
3073 {
3074 FIN25_4_CODE( _pEnclosure25_4 = (EDTEnclosure25_4*) pPointer; )
3075 }
3076 else
3077 {
3078 _pEnclosureOld = (EDTEnclosure*) pPointer;
3079 }
3080 }
3081
3089#ifndef PDK_FRAMEWORK_LUAFRIENDLY
3091#else
3092 int
3093#endif
3094 shape)
3095 {
3096 if (!_GetEnclosure()) return;
3097 if (shape < 0) return;
3098 if (shape > 15) return;
3099 *(FLAG_16*)_GetFlagPtr() &= ~NEWSIDES;
3100 *(FLAG_16*)_GetFlagPtr() |= shape;
3101 }
3102
3103
3109 void SetLineWidth(int width)
3110 {
3111 if (!_GetEnclosure()) return;
3112 *(Evpu16*)_GetLineWidthPtr() = width;
3113 }
3114
3119 void SetHorizontalOffset(int offset)
3120 {
3121 if (!_GetEnclosure()) return;
3122 *(Evpu16*)_GetXAddPtr() = offset;
3123 }
3124
3129 void SetVerticalOffset(int offset)
3130 {
3131 if (!_GetEnclosure()) return;
3132 *(Evpu16*)_GetYAddPtr() = offset;
3133 }
3134
3140 void SetHorizontalMargin(int margin)
3141 {
3142 if (!_GetEnclosure()) return;
3143 *(Evpu16*)_GetXMarginPtr() = margin;
3144 }
3145
3151 void SetVerticalMargin(int margin)
3152 {
3153 if (!_GetEnclosure()) return;
3154 *(Evpu16*)_GetYMarginPtr() = margin;
3155 }
3156
3161 void SetFixedSize(bool state)
3162 {
3163 if (!_GetEnclosure()) return;
3164 Set16BitFlag((FLAG_16*)_GetFlagPtr(), FIXED_SIZE, state);
3165 }
3166
3171 void SetOpaque(bool state)
3172 {
3173 if (!_GetEnclosure()) return;
3174 Set16BitFlag((FLAG_16*)_GetFlagPtr(), ENCL_OPAQUE, state);
3175 }
3176
3184 void SetRoundedCorners(bool state)
3185 {
3186 FIN25_4_CODE( if (Use25_4Version()) Set16BitFlag((FLAG_16*)_GetFlagPtr(), 0x0400 /* ROUND_CORNERS */, state); )
3187 }
3188
3196 void SetRoundedCornerRadius(Efix32 radius)
3197 {
3198 FIN25_4_CODE( if (Use25_4Version()) _pEnclosure25_4->m_cornerRadius = radius; )
3199 }
3200
3206#ifndef PDK_FRAMEWORK_LUAFRIENDLY
3208#else
3209 int
3210#endif
3211 enclosuremode)
3212 {
3213 switch (enclosuremode)
3214 {
3215 case ENCLOSUREMODE_NONE:
3216 Set16BitFlag((FLAG_16*)_GetFlagPtr(), NOT_TALL, false);
3217 Set16BitFlag((FLAG_16*)_GetFlagPtr(), EQUAL_ASPECT, false);
3218 break;
3220 Set16BitFlag((FLAG_16*)_GetFlagPtr(), NOT_TALL, true);
3221 Set16BitFlag((FLAG_16*)_GetFlagPtr(), EQUAL_ASPECT, false);
3222 break;
3224 Set16BitFlag((FLAG_16*)_GetFlagPtr(), NOT_TALL, false);
3225 Set16BitFlag((FLAG_16*)_GetFlagPtr(), EQUAL_ASPECT, true);
3226 break;
3227 }
3228 }
3229
3230
3237#ifndef PDK_FRAMEWORK_LUAFRIENDLY
3239#else
3240 int
3241#endif
3242 GetShape() const
3243 {
3244 if (!_GetEnclosure()) return ENCLOSURE_NONE;
3245 return (ENCLOSURESHAPE ) (*_GetFlagPtr() & NEWSIDES);
3246 }
3247
3253 int GetLineWidth() const
3254 {
3255 if (!_GetEnclosure()) return 0;
3256 return *_GetLineWidthPtr();
3257 }
3258
3264 {
3265 if (!_GetEnclosure()) return 0;
3266 return *_GetXAddPtr();
3267 }
3268
3274 {
3275 if (!_GetEnclosure()) return 0;
3276 return *_GetYAddPtr();
3277 }
3278
3285 {
3286 if (!_GetEnclosure()) return 0;
3287 return *_GetXMarginPtr();
3288 }
3289
3296 {
3297 if (!_GetEnclosure()) return 0;
3298 return *_GetYMarginPtr();
3299 }
3300
3305 bool GetFixedSize() const
3306 {
3307 if (!_GetEnclosure()) return false;
3308 return GetBitFlag(*_GetFlagPtr(), FIXED_SIZE);
3309 }
3310
3315 bool GetOpaque() const
3316 {
3317 if (!_GetEnclosure()) return false;
3318 return GetBitFlag(*_GetFlagPtr(), ENCL_OPAQUE);
3319 }
3320
3330 {
3331 FIN25_4_CODE( if (Use25_4Version()) return GetBitFlag(*_GetFlagPtr(), 0x0400 /* ROUND_CORNERS */); )
3332 return false;
3333 }
3334
3343 {
3344 FIN25_4_CODE( if (Use25_4Version()) return _pEnclosure25_4->m_cornerRadius; )
3345 return 0;
3346 }
3347
3352#ifndef PDK_FRAMEWORK_LUAFRIENDLY
3354#else
3355 int
3356#endif
3357 GetMode() const
3358 {
3359 if (!_GetEnclosure()) return ENCLOSUREMODE_NONE;
3360 if (GetBitFlag(*_GetFlagPtr(), NOT_TALL)) return ENCLOSUREMODE_MINWIDTH;
3361 if (GetBitFlag(*_GetFlagPtr(), EQUAL_ASPECT)) return ENCLOSUREMODE_MATCHDIMENSIONS;
3362 return ENCLOSUREMODE_NONE;
3363 }
3364
3369 bool SaveAs(CMPER itemno) override
3370 {
3371 if (! DataIsLoaded())
3373 return __FCNoInciOther::SaveAs(itemno);
3374 }
3375
3376#ifdef PDK_FRAMEWORK_DEBUG
3377 void DebugDump() override
3378 {
3380 }
3381#endif
3382
3383};
3384
3385
3386#ifdef PDK_FRAMEWORK_LAYOUT
3387
3398{
3399#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3400 private:
3402 EDTPageSpec pagespec;
3403protected:
3404 EXTAG Tag() const override { return ot_EDTPageSpec; }
3405 int DataSizeLoad() const override { return sizeof(EDTPageSpec); }
3406 void* Allocate() override { return (void*) &pagespec; }
3407
3412 void CloneMemoryFrom(__FCBaseData* pSource) override
3413 {
3414 memcpy(&pagespec, ((FCPage*)pSource)->_GetPageSpec(), sizeof(pagespec));
3415 _datablock = &pagespec;
3416 _loadedsize = sizeof(pagespec);
3417 }
3418
3419 __FCBaseData* CreateObject() override { return new FCPage(); }
3420#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3421public:
3422 const char* ClassName() const override { return "FCPage"; }
3423 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_PAGE; }
3424
3425#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3432 void* _GetPageSpec() { return &pagespec; }
3433#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3434
3441
3449 eSsys GetFirstSystem();
3450
3455 void SetFirstSystem(eSsys firstsysno);
3456
3465 void UpdateLayout(bool bUnfreezeMeasures = false);
3466
3473 bool IsPortrait() const
3474 {
3475 return (GetHeight() > GetWidth());
3476 }
3477
3482 bool IsBlank() const
3483 {
3484 return pagespec.stavestr == -1;
3485 }
3486
3493 Evpu32 GetWidth() const { return pagespec.width; }
3494
3501 Evpu32 GetHeight() const { return pagespec.height; }
3502
3509 Evpu16 GetLeftMargin() const { return pagespec.margLeft; }
3510
3517 Evpu16 GetRightMargin() const { return -pagespec.margRight; }
3518
3525 Evpu16 GetTopMargin() const { return -pagespec.margTop; }
3526
3533 Evpu16 GetBottomMargin() const { return pagespec.margBottom; }
3534
3544 twobyte GetPercent() const { return pagespec.percent; }
3545
3558 bool GetHoldMargins() const { return GetBitFlag(pagespec.pageflag, PAGESPEC_MARGSCOPING); }
3559
3560 /***********/
3561 /* SETTERS */
3562 /***********/
3563
3570 void SetWidth(Evpu32 width) { pagespec.width = width; }
3571
3578 void SetHeight(Evpu32 height) { pagespec.height = height; }
3579
3586 void SetLeftMargin(Evpu16 margin) { pagespec.margLeft = margin; }
3587
3594 void SetRightMargin(Evpu16 margin) { pagespec.margRight = -margin; }
3595
3602 void SetTopMargin(Evpu16 margin) { pagespec.margTop = -margin; }
3603
3610 void SetBottomMargin(Evpu16 margin) { pagespec.margBottom = margin; }
3611
3621 void SetPercent(twobyte percent) { pagespec.percent = percent; }
3622
3635 void SetHoldMargins(bool state) { Set16BitFlag(&pagespec.pageflag, PAGESPEC_MARGSCOPING, state); }
3636
3647 eSsys CalcLastSystem();
3648
3658 eMeas CalcFirstMeasure();
3659
3669 eMeas CalcLastMeasure();
3670
3684 int CalcInteriorHeight(bool resize);
3685
3686#ifdef PDK_FRAMEWORK_DEBUG
3687 void DebugDump() override
3688 {
3690 DebugOutInt("First system: ", GetFirstSystem());
3691 DebugOutInt("Last system: ", CalcLastSystem());
3692 }
3693#endif
3694};
3695#endif // PDK_FRAMEWORK_LAYOUT
3696
3697
3698#ifdef PDK_FRAMEWORK_LAYOUT
3699
3700#ifdef PDK_FRAMEWORK_DEBUG
3701#include <stddef.h> /* Needed for the FCStaffSystem constructor in debug mode. */
3702#endif
3703
3704class FCSystemStaves;
3705class FCFreezeSystem;
3706class FCMusicRegion;
3715{
3716#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3717 private:
3719 EDTStaffSystemSpec2005 _staffsystem;
3720protected:
3721 EXTAG Tag() const override { return ot_EDTStaffSystemSpec; }
3722 int DataSizeLoad() const override { return sizeof(EDTStaffSystemSpec2005); }
3723 void* Allocate() override { return (void*) &_staffsystem; }
3724
3729 void CloneMemoryFrom(__FCBaseData* pSource) override
3730 {
3731 memcpy(&_staffsystem, ((FCStaffSystem*)pSource)->_GetStaffSystemSpec(), sizeof(_staffsystem));
3732 _datablock = &_staffsystem;
3733 _loadedsize = sizeof(_staffsystem);
3734 }
3735
3736
3737 __FCBaseData* CreateObject() override { return new FCStaffSystem(); }
3738#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3739public:
3740 const char* ClassName() const override { return "FCStaffSystem"; }
3741 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_STAFFSYSTEM; }
3742
3743#ifndef DOXYGEN_SHOULD_IGNORE_THIS
3750 void* _GetStaffSystemSpec() { return &_staffsystem; }
3751#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
3752
3758 {
3759#ifdef PDK_FRAMEWORK_DEBUG
3760 /* This should normally be used with PDK_FRAMEWORK_DIAGNOSE, but since
3761 * it's so important that this is correct, place it on the
3762 * PDK_FRAMEWORK_DEBUG level!
3763 * */
3764 if ((offsetof(EDTStaffSystemSpec2005, horzPercent) - offsetof(EDTStaffSystemSpec2005, mend)) != 2)
3765 {
3766 DebugOut("ERROR: Packed struct alignment isn't set up correctly in the compiler options! Use "
3767 "-fpack-struct=1 for GCC.");
3768 }
3769#endif
3770 }
3771
3772
3781 void SetFirstMeasure(eMeas measure)
3782 { ((EDTStaffSystemSpec2005*) _datablock)->mestart = measure; }
3783
3792 void SetNextSysMeasure(eMeas measure)
3793 { ((EDTStaffSystemSpec2005*) _datablock)->mend = measure; }
3794
3795
3800 void SetSpaceBeforeMusic(twobyte space)
3801 { ((EDTStaffSystemSpec2005*) _datablock)->extraStartSystemSpace = space; }
3802
3808 void SetSpaceAfterMusic(twobyte space)
3809 { ((EDTStaffSystemSpec2005*) _datablock)->extraEndSystemSpace = space; }
3810
3816 void SetSpaceAbove(twobyte space)
3817 { ((EDTStaffSystemSpec2005*) _datablock)->betweensystems = -space; }
3818
3827 void SetTopMargin(Evpu16 margin)
3828 { ((EDTStaffSystemSpec2005*) _datablock)->top = -margin; }
3829
3840 void SetBottomMargin(Evpu16 margin)
3841 { ((EDTStaffSystemSpec2005*) _datablock)->bottom = -margin; }
3842
3850 void SetLeftMargin(Evpu16 margin)
3851 { ((EDTStaffSystemSpec2005*) _datablock)->left = margin; }
3852
3859 void SetRightMargin(Evpu16 margin)
3860 { ((EDTStaffSystemSpec2005*) _datablock)->right = margin; }
3861
3866 void SetResize(twobyte value)
3867 {
3868 _staffsystem.ssysPercent = value;
3869 }
3870
3883 void SetStaffHeight(twobyte value)
3884 { _staffsystem.staffHeight = value; }
3885
3891 void SetResizeVerticalSpace(bool value)
3892 {
3893 Set16BitFlag(&_staffsystem.staveflag, SSPEC_RESIZE_VERT, value);
3894 }
3895
3903 void SetUseStaffResize(bool state)
3904 {
3905 Set16BitFlag(&_staffsystem.staveflag, SSPEC_LINEPERC, state);
3906 }
3907
3912 void SetHoldMargins(bool state)
3913 {
3914 Set16BitFlag(&_staffsystem.staveflag, SSPEC_HOLD_MARGINS, state);
3915 }
3916
3923 eMeas GetFirstMeasure() const
3924 { return ((EDTStaffSystemSpec2005*) _datablock)->mestart; }
3925
3930 eMeas GetNextSysMeasure() const
3931 { return ((EDTStaffSystemSpec2005*) _datablock)->mend; }
3932
3937 twobyte GetSpaceBeforeMusic() const
3938 { return ((EDTStaffSystemSpec2005*) _datablock)->extraStartSystemSpace; }
3939
3945 twobyte GetSpaceAfterMusic() const
3946 { return ((EDTStaffSystemSpec2005*) _datablock)->extraEndSystemSpace; }
3947
3954 twobyte GetSpaceAbove() const
3955 { return -((EDTStaffSystemSpec2005*) _datablock)->betweensystems; }
3956
3962 Evpu16 GetTopMargin() const
3963 { return -((EDTStaffSystemSpec2005*) _datablock)->top; }
3964
3969 Evpu16 GetBottomMargin() const
3970 { return -((EDTStaffSystemSpec2005*) _datablock)->bottom; }
3971
3979 Evpu16 GetLeftMargin() const
3980 { return ((EDTStaffSystemSpec2005*) _datablock)->left; }
3981
3987 Evpu16 GetRightMargin() const
3988 { return ((EDTStaffSystemSpec2005*) _datablock)->right; }
3989
3998 twobyte GetStaffHeight() const
3999 { return ((EDTStaffSystemSpec2005*) _datablock)->staffHeight; }
4000
4005 twobyte GetResize() const
4006 { return ((EDTStaffSystemSpec2005*) _datablock)->ssysPercent; }
4007
4014 { return GetBitFlag(((EDTStaffSystemSpec2005*) _datablock)->staveflag, SSPEC_RESIZE_VERT); }
4015
4024 {
4025 return GetBitFlag(_staffsystem.staveflag, SSPEC_LINEPERC);
4026 }
4027
4032 bool GetHoldMargins() const
4033 {
4034 return GetBitFlag(_staffsystem.staveflag, SSPEC_HOLD_MARGINS);
4035 }
4036
4043 twobyte GetTopStaff() const;
4044
4053 {
4054 return _staffsystem.horzPercent;
4055 }
4056
4062 bool HasPageBreak();
4063
4068 eStaff CalcTopStaff();
4069
4074 eStaff CalcBottomStaff();
4075
4082 int CalcStavesSpan();
4083
4094 int CalcHeight(bool verticalresize);
4095
4107 int CalcWhiteSpaceBottom(bool verticalresize);
4108
4117 bool IsOptimized() const;
4118
4127 bool ContainsMeasure(eMeas measurenumber)
4128 {
4129 if (measurenumber < GetFirstMeasure()) return false;
4130 if (measurenumber >= GetNextSysMeasure()) return false;
4131 return true;
4132 }
4133
4147
4148#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
4150 luabridge::RefCountedPtr<FCSystemStaves> CreateSystemStaves_GC()
4151 { return makeLuaSharedPtr(CreateSystemStaves()); }
4152#endif
4153
4169 FCFreezeSystem* CreateFreezeSystem(bool force_create = true);
4170
4171#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
4173 luabridge::RefCountedPtr<FCFreezeSystem> CreateFreezeSystem_GC(bool force_create)
4174 { return makeLuaSharedPtr(CreateFreezeSystem(force_create)); }
4175#endif
4176
4188 bool CalcRegion(FCMusicRegion* pRegion);
4189
4190#ifdef PDK_FRAMEWORK_DEBUG
4191 void DebugDump() override
4192 {
4194 DebugOutInt("First measure: ", GetFirstMeasure());
4195 DebugOutInt("Next System Measure: ", GetNextSysMeasure());
4196 DebugOutInt("Space Above: ", GetSpaceAbove());
4197 DebugOutInt("Top Margin: ", GetTopMargin());
4198 DebugOutInt("Bottom Margin: ", GetBottomMargin());
4199 DebugOutInt("Staff Height: ", GetStaffHeight());
4200 DebugOutInt("Resize (percent): ", GetResize());
4201 }
4202#endif
4203};
4204#endif // PDK_FRAMEWORK_LAYOUT
4205
4206
4208class FCExpressions;
4209class FCTempoElements;
4210
4211class FCTimeSignature;
4212
4221{
4222private:
4223#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4228 mutable FCKeySignature* _pKeySig;
4229
4234 mutable FCTimeSignature* _pTimeSig;
4235
4240 mutable FCTimeSignature* _pTimeSigDisplay;
4241
4243 EVERSION _VersionToUse() const;
4244
4248 EDTMeasureSpec2005 _measurespec2005;
4249
4250#if FXT_VERSION >= FINALEVERSION_2014
4251 EDTMeasureSpec2014 _measurespec2014;
4252#endif
4253
4257 FLAG_16* _GetMeFlagPtr() const;
4258
4262 FLAG_16* _GetNewFlagPtr() const;
4263
4267 FLAG_16* _GetAuxFlagPtr() const;
4268
4272 void _SetMeFlag(FLAG_16 mask, bool state);
4273
4277 bool _GetMeFlag(FLAG_16 mask) const
4278 {
4279 return GetBitFlag(*_GetMeFlagPtr(), mask);
4280 }
4281
4285 void _SetNewFlag(FLAG_16 mask, bool state);
4286
4290 bool _GetNewFlag(FLAG_16 mask) const { return GetBitFlag(*_GetNewFlagPtr(), mask); }
4291
4295 void _SetAuxFlag(FLAG_16 mask, bool state);
4296
4300 bool _GetAuxFlag(FLAG_16 mask) const { return GetBitFlag(*_GetAuxFlagPtr(), mask); }
4301
4306 FCString* _CreateNumberString(bool qualified, bool showAllRepeatPasses)
4307 {
4308 FCString* retval = new FCString;
4309 eUniChar16 buffer[512];
4310 if (! FX_GetMeasureNumberString(GetItemNo(), buffer, DIM(buffer), qualified, showAllRepeatPasses))
4311 if (qualified)
4312 retval->FormatCString("#%d", GetItemNo());
4313 else
4314 retval->FormatCString("%d", GetItemNo());
4315 else
4316 retval->SetUnicodeString(buffer);
4317 return retval;
4318 }
4319
4320protected:
4321 EVERSION EnigmaVersion() const override
4322 {
4323 return _VersionToUse();
4324 }
4325 EXTAG Tag() const override { return ot_MeasureSpec; }
4326 int DataSizeLoad() const override {
4327#if FXT_VERSION >= FINALEVERSION_2014
4328 if (_VersionToUse() == FINALEVERSION_2014) return sizeof(EDTMeasureSpec2014);
4329#endif
4330 return sizeof(EDTMeasureSpec2005);
4331 }
4332
4333 void* Allocate() override
4334 {
4335#if FXT_VERSION >= FINALEVERSION_2014
4336 if (_VersionToUse() == FINALEVERSION_2014) return (void*) &_measurespec2014;
4337#endif
4338 return (void*) &_measurespec2005;
4339 }
4340
4345 void CloneMemoryFrom(__FCBaseData* pSource) override
4346 {
4347#if FXT_VERSION >= FINALEVERSION_2014
4348 if (_VersionToUse() == FINALEVERSION_2014)
4349 {
4350 memcpy(&_measurespec2014, ((FCMeasure*)pSource)->_GetMeasureSpec(), sizeof(_measurespec2014));
4351 _datablock = &_measurespec2014;
4352 _loadedsize = sizeof(_measurespec2014);
4353 return;
4354 }
4355#endif
4356 memcpy(&_measurespec2005, ((FCMeasure*)pSource)->_GetMeasureSpec(), sizeof(_measurespec2005));
4357 _datablock = &_measurespec2005;
4358 _loadedsize = sizeof(_measurespec2005);
4359 }
4360
4361 __FCBaseData* CreateObject() override { return new FCMeasure(); }
4362#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4363public:
4364
4401
4402private:
4407 bool _GetBarlineMask(
4408#ifdef PDK_FRAMEWORK_LUAFRIENDLY
4409int
4410#else
4412#endif
4413 style, FLAG_16* pFlag);
4414
4415public:
4416
4434
4452
4453 const char* ClassName() const override { return "FCMeasure"; }
4454 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_MEASURE; }
4455
4456#ifndef DOXYGEN_SHOULD_IGNORE_THIS
4463 void* _GetMeasureSpec()
4464 {
4465#if FXT_VERSION >= FINALEVERSION_2014
4466 if (_VersionToUse() == FINALEVERSION_2014) return &_measurespec2014;
4467#endif
4468 return &_measurespec2005;
4469 }
4470#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
4471
4478 {
4479 _pKeySig = NULL;
4480 _pTimeSig = NULL;
4481 _pTimeSigDisplay = NULL;
4482 }
4483
4488 virtual ~FCMeasure() {
4489 if (_pKeySig) delete _pKeySig;
4490 if (_pTimeSig) delete _pTimeSig;
4491 if (_pTimeSigDisplay) delete _pTimeSigDisplay;
4492 }
4493
4495 bool Save() override;
4496
4498 bool Load(CMPER itemno) override;
4499
4508
4509#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
4510 /* GC version of #CreateBeatChartElements for Lua. */
4511 luabridge::RefCountedPtr<FCBeatChartElements> CreateBeatChartElements_GC()
4512 { return makeLuaSharedPtr(CreateBeatChartElements()); }
4513#endif
4514
4523
4524#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
4525 /* GC version of #CreateExpressions for Lua. */
4526 luabridge::RefCountedPtr<FCExpressions> CreateExpressions_GC()
4527 { return makeLuaSharedPtr(CreateExpressions()); }
4528#endif
4529
4538
4539#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
4540 /* GC version of #CreateTempoElements for Lua. */
4541 luabridge::RefCountedPtr<FCTempoElements> CreateTempoElements_GC()
4542 { return makeLuaSharedPtr(CreateTempoElements()); }
4543#endif
4544
4545
4548 void SetKeyless(bool state)
4549 {
4550 if (_VersionToUse() != FINALEVERSION_2014) return;
4551#if FXT_VERSION >= FINALEVERSION_2014
4552 _measurespec2014.isKeyless = state;
4553#endif
4554 }
4555
4558 void SetHideKeySigShowAccis(bool state)
4559 {
4560 if (_VersionToUse() != FINALEVERSION_2014) return;
4561#if FXT_VERSION >= FINALEVERSION_2014
4562 _measurespec2014.hideKeySigShowAccis = state;
4563#endif
4564 }
4565
4566
4575 void SetPageBreak(bool state)
4576 { _SetNewFlag(MEAS_PAGEBREAK, state); }
4577
4585 void SetBreakMMRest(bool state)
4586 { _SetMeFlag(MEAS_BREAKREST, state); }
4587
4594 void SetForwardRepeat(bool state)
4595 { _SetMeFlag(MEAS_FORREPBAR, state); }
4596
4605 void SetExpressionFlag(bool state)
4606 { _SetMeFlag(MEAS_DYNAMBIT, state); }
4607
4616 void SetTextFlag(bool state)
4617 { _SetMeFlag(MEAS_MEASURETEXT, state); }
4618
4631 void SetBackwardRepeat(bool state)
4632 { _SetMeFlag(MEAS_BACREPBAR, state); }
4633
4645 void SetRepeatBracketFlag(bool state) { _SetMeFlag(MEAS_BARENDING, state); }
4646
4656 void SetTextRepeatFlag(bool state) { _SetMeFlag(MEAS_REPEATS, state); }
4657
4664 void SetSystemBreak(bool state) { _SetMeFlag(MEAS_MS_LINEBREAK, state); }
4665
4673 void SetHideCautionary(bool state) { _SetAuxFlag(MEAS_HIDECAUTION, state); }
4674
4684 void SetWidth(Evpu16 width) {
4685#if FXT_VERSION >= FINALEVERSION_2014
4686 if (_VersionToUse() == FINALEVERSION_2014)
4687 {
4688 _measurespec2014.measpace = width;
4689 return;
4690 }
4691#endif
4692 _measurespec2005.measpace = width;
4693 }
4694
4701 void SetSpaceBefore(Evpu16 space)
4702 {
4703#if FXT_VERSION >= FINALEVERSION_2014
4704 if (_VersionToUse() == FINALEVERSION_2014)
4705 {
4706 _measurespec2014.frontSpaceExtra = space;
4707 return;
4708 }
4709#endif
4710 _measurespec2005.frontSpaceExtra = space;
4711 }
4712
4719 void SetSpaceAfter(Evpu16 space)
4720 {
4721#if FXT_VERSION >= FINALEVERSION_2014
4722 if (_VersionToUse() == FINALEVERSION_2014)
4723 {
4724 _measurespec2014.backSpaceExtra = space;
4725 return;
4726 }
4727#endif
4728 _measurespec2005.backSpaceExtra = space;
4729 }
4730
4741 void SetAllowHorizontalSplit(bool state) { _SetAuxFlag(MEAS_POSSPLIT, state); }
4742
4753#ifndef PDK_FRAMEWORK_LUAFRIENDLY
4754 SHOW_STATES state
4755#else
4756 int state
4757#endif
4758 );
4759
4770#ifndef PDK_FRAMEWORK_LUAFRIENDLY
4771 SHOW_STATES state
4772#else
4773 int state
4774#endif
4775 );
4776
4786 void SetShowFullNames(bool state);
4787
4793 void SetContainsManualMeasureNumbers(bool state) { _SetAuxFlag(MEAS_MNSEPPLACE, state); }
4794
4801 void SetBreakWordExtension(bool state) { _SetAuxFlag(0x8000, state); }
4802
4809 void SetIncludeInNumbering(bool state) { _SetMeFlag(MEAS_NO_MEAS_NUM, !state); }
4810
4817 void SetOverrideGroupBarlines(bool state) { _SetAuxFlag(MEAS_GRP_BARLINE_OVERRIDE, state); }
4818
4829#ifndef PDK_FRAMEWORK_LUAFRIENDLY
4831#else
4832int mode
4833#endif
4834 );
4835
4842 void SetPositionEvenly(bool state) { _SetAuxFlag(MEAS_INDIVPOSDEF, state); }
4843
4851 void SetBarline(
4852#ifdef PDK_FRAMEWORK_LUAFRIENDLY
4853int
4854#else
4856#endif
4857 style);
4858
4865 void SetBarlineShapeID(twobyte shapeID) {
4866#if FXT_VERSION >= FINALEVERSION_2014
4867 if (_VersionToUse() == FINALEVERSION_2014)
4868 {
4869 _measurespec2014.custombarshape = shapeID;
4870 return;
4871 }
4872#endif
4873 _measurespec2005.custombarshape = shapeID;
4874 }
4875
4882 void SetLeftBarlineShapeID(twobyte shapeID)
4883 {
4884#if FXT_VERSION >= FINALEVERSION_2014
4885 if (_VersionToUse() == FINALEVERSION_2014)
4886 {
4887 _measurespec2014.customleftbarshape = shapeID;
4888 return;
4889 }
4890#endif
4891 _measurespec2005.customleftbarshape = shapeID;
4892 }
4893
4904 void SetLeftBarline(
4905#ifndef PDK_FRAMEWORK_LUAFRIENDLY
4906 BARLINE_STYLES style
4907#else
4908 int style
4909#endif
4910 );
4911
4918 void SetSmartShapeFlag(bool state) { _SetAuxFlag(MEAS_SMARTSHAPEBIT, state); }
4919
4928 void SetChordFlag(bool state) { _SetNewFlag(0x0008, state); }
4929
4935 TimeEdu32 GetDuration()
4936 {
4937 return FX_GetMeasureDuration(0, GetItemNo());
4938 }
4939
4940
4946 bool GetKeyless() const
4947 {
4948 if (_VersionToUse() != FINALEVERSION_2014) return false;
4949#if FXT_VERSION >= FINALEVERSION_2014
4950 return _measurespec2014.isKeyless != 0;
4951#endif
4952 return false;
4953 }
4954
4961 {
4962 if (_VersionToUse() != FINALEVERSION_2014) return false;
4963#if FXT_VERSION >= FINALEVERSION_2014
4964 return _measurespec2014.hideKeySigShowAccis != 0;
4965#endif
4966 return false;
4967 }
4968
4969
4979 bool GetPageBreak() const { return _GetNewFlag(MEAS_PAGEBREAK); }
4980
4988 bool GetBreakMMRest() const { return _GetMeFlag(MEAS_BREAKREST); }
4989
4996 bool GetSystemBreak() const { return _GetMeFlag(MEAS_MS_LINEBREAK); }
4997
5004 bool GetForwardRepeat() const { return _GetMeFlag(MEAS_FORREPBAR); }
5005
5014 bool GetExpressionFlag() const { return _GetMeFlag(MEAS_DYNAMBIT); }
5015
5025 bool GetTextFlag() const { return _GetMeFlag(MEAS_MEASURETEXT); }
5026
5036 bool GetBackwardRepeat() const { return _GetMeFlag(MEAS_BACREPBAR); }
5037
5049 bool GetRepeatBracketFlag() const { return _GetMeFlag(MEAS_BARENDING); }
5050
5060 bool GetTextRepeatFlag() const { return _GetMeFlag(MEAS_REPEATS); }
5061
5069 bool GetHideCautionary() const { return _GetAuxFlag(MEAS_HIDECAUTION); }
5070
5077 Evpu16 GetWidth() const {
5078#if FXT_VERSION >= FINALEVERSION_2014
5079 if (_VersionToUse() == FINALEVERSION_2014)
5080 {
5081 return _measurespec2014.measpace;
5082 }
5083#endif
5084 return _measurespec2005.measpace;
5085 }
5086
5093 Evpu16 GetSpaceBefore() const {
5094#if FXT_VERSION >= FINALEVERSION_2014
5095 if (_VersionToUse() == FINALEVERSION_2014)
5096 {
5097 return _measurespec2014.frontSpaceExtra;
5098 }
5099#endif
5100 return _measurespec2005.frontSpaceExtra;
5101 }
5102
5109 Evpu16 GetSpaceAfter() const {
5110#if FXT_VERSION >= FINALEVERSION_2014
5111 if (_VersionToUse() == FINALEVERSION_2014)
5112 {
5113 return _measurespec2014.backSpaceExtra;
5114 }
5115#endif
5116 return _measurespec2005.backSpaceExtra;
5117 }
5118
5127 bool GetAllowHorizontalSplit() const { return _GetAuxFlag(MEAS_POSSPLIT); }
5128
5138#ifndef PDK_FRAMEWORK_LUAFRIENDLY
5140#else
5141 int
5142#endif
5143 GetShowKeySignature() const;
5144
5154#ifndef PDK_FRAMEWORK_LUAFRIENDLY
5156#else
5157 int
5158#endif
5159 GetShowTimeSignature() const;
5160
5166 bool GetUseTimeSigForDisplay() const { return _GetNewFlag(MEAS_USE_DISPLAY_TIMESIG); }
5167
5178 bool GetShowFullNames() const;
5179
5186 bool GetContainsManualMeasureNumbers() const { return _GetAuxFlag(MEAS_MNSEPPLACE); }
5187
5194 bool GetBreakWordExtension() const { return _GetAuxFlag(0x8000); }
5195
5202 bool GetIncludeInNumbering() const { return !_GetMeFlag(MEAS_NO_MEAS_NUM); }
5203
5210 bool GetOverrideGroupBarlines() const { return _GetAuxFlag(MEAS_GRP_BARLINE_OVERRIDE); }
5211
5221#ifndef PDK_FRAMEWORK_LUAFRIENDLY
5223#else
5224 int
5225#endif
5227
5234 bool GetPositionEvenly() const { return _GetAuxFlag(MEAS_INDIVPOSDEF); }
5235
5242#ifdef PDK_FRAMEWORK_LUAFRIENDLY
5243 int
5244#else
5246#endif
5247 GetBarline() const;
5248
5257#ifndef PDK_FRAMEWORK_LUAFRIENDLY
5259#else
5260 int
5261#endif
5262 GetLeftBarline() const;
5263
5270 CMPER GetBarlineShapeID() const {
5271#if FXT_VERSION >= FINALEVERSION_2014
5272 if (_VersionToUse() == FINALEVERSION_2014)
5273 {
5274 return _measurespec2014.custombarshape;
5275 }
5276#endif
5277 return _measurespec2005.custombarshape;
5278 }
5279
5287#if FXT_VERSION >= FINALEVERSION_2014
5288 if (_VersionToUse() == FINALEVERSION_2014)
5289 {
5290 return _measurespec2014.customleftbarshape;
5291 }
5292#endif
5293 return _measurespec2005.customleftbarshape;
5294 }
5295
5311 if (!DataIsLoaded()) return NULL;
5312 if (_pKeySig) return _pKeySig;
5313 if (!_pKeySig) _pKeySig = new FCKeySignature();
5314#if FXT_VERSION >= FINALEVERSION_2014
5315 if (_VersionToUse() == FINALEVERSION_2014)
5316 {
5317 _pKeySig->SetID(_measurespec2014.key);
5318 } else
5319#endif
5320 {
5321 _pKeySig->SetID(_measurespec2005.key);
5322 }
5323 return _pKeySig;
5324 }
5325
5332 bool GetSmartShapeFlag() const { return _GetAuxFlag(MEAS_SMARTSHAPEBIT); }
5333
5342 bool GetChordFlag() const { return _GetNewFlag(0x0008); }
5343
5359 {
5360 if (!DataIsLoaded()) return NULL;
5361 if (_pTimeSig) return _pTimeSig;
5362 if (!_pTimeSig) _pTimeSig = new FCTimeSignature();
5363#if FXT_VERSION >= FINALEVERSION_2014
5364 if (_VersionToUse() == FINALEVERSION_2014)
5365 {
5366 _pTimeSig->SetBeats(_measurespec2014.beats);
5367 _pTimeSig->SetBeatDuration(_measurespec2014.divbeat);
5368 } else
5369#endif
5370 {
5371 _pTimeSig->SetBeats(_measurespec2005.beats);
5372 _pTimeSig->SetBeatDuration(_measurespec2005.divbeat);
5373 }
5374 _pTimeSig->SetCompositeTop(_GetAuxFlag(MEAS_ALTNUMTSIG));
5375 _pTimeSig->SetCompositeBottom(_GetAuxFlag(MEAS_ALTDENTSIG));
5376 _pTimeSig->SetAbbreviate(false);
5377 return _pTimeSig;
5378 }
5379
5391 {
5392 if (!DataIsLoaded()) return NULL;
5393 if (!GetUseTimeSigForDisplay()) return NULL;
5394 if (_pTimeSigDisplay) return _pTimeSigDisplay;
5395 if (!_pTimeSigDisplay) _pTimeSigDisplay = new FCTimeSignature();
5396#if FXT_VERSION >= FINALEVERSION_2014
5397 if (_VersionToUse() == FINALEVERSION_2014)
5398 {
5399 _pTimeSigDisplay->SetBeats(_measurespec2014.dispBeats);
5400 _pTimeSigDisplay->SetBeatDuration(_measurespec2014.dispDivbeat);
5401 } else
5402#endif
5403 {
5404 _pTimeSigDisplay->SetBeats(_measurespec2005.dispBeats);
5405 _pTimeSigDisplay->SetBeatDuration(_measurespec2005.dispDivbeat);
5406 }
5407 _pTimeSigDisplay->SetCompositeTop(_GetNewFlag(MEAS_DISPLAY_ALTNUMTSIG));
5408 _pTimeSigDisplay->SetCompositeBottom(_GetNewFlag(MEAS_DISPLAY_ALTDENTSIG));
5409 _pTimeSigDisplay->SetAbbreviate(_GetNewFlag(MEAS_ABBRVTIME));
5410 return _pTimeSigDisplay;
5411 }
5412
5422 {
5423 if (!DataIsLoaded()) return;
5424 if (GetUseTimeSigForDisplay() == value) return;
5425 if (!value)
5426 {
5427 if (_pTimeSigDisplay)
5428 {
5429 delete _pTimeSigDisplay;
5430 _pTimeSigDisplay = NULL;
5431 }
5432 }
5433 return _SetNewFlag(MEAS_USE_DISPLAY_TIMESIG, value);
5434 }
5435
5449 FCString* CreateNumberString(bool showAllRepeatPasses = false)
5450 {
5451 return _CreateNumberString(true, showAllRepeatPasses);
5452 }
5453
5454#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
5456 luabridge::RefCountedPtr<FCString> CreateNumberString_GC(bool showAllRepeatPasses = false)
5457 { return makeLuaSharedPtr(CreateNumberString(showAllRepeatPasses)); }
5458#endif
5459
5473 FCString* CreateNumberStringUnqualified(bool showAllRepeatPasses = false)
5474 {
5475 return _CreateNumberString(false, showAllRepeatPasses);
5476 }
5477
5478#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
5480 luabridge::RefCountedPtr<FCString> CreateNumberStringUnqualified_GC(bool showAllRepeatPasses = false)
5481 { return makeLuaSharedPtr(CreateNumberStringUnqualified(showAllRepeatPasses)); }
5482#endif
5483};
5484
5485/* Forward declaration, required for measure references FCMeasureNumberRegion */
5486class FCMeasures;
5487
5494{
5495#ifndef DOXYGEN_SHOULD_IGNORE_THIS
5496 private:
5497 /* Reference table for checking the "Include measure in measure numbering" states.
5498 Use AssignAllNonNumberedMeasures() to set */
5499 FCNumbers* _pNonIncludedMeasures;
5500
5501 /* Used for the _SetTempAllMeasures() etc mechanism. This is where the real value of
5502 * _pAllMeasures is stored, during a temporary collection assignment. */
5503 FCNumbers* _pTempNonIncludedMeasuresStorage;
5504
5506 FIN25_4_CODE(EDTMeasNumberRegion25_4 _measureregion25_4;)
5509 FIN2012_CODE(EDTMeasNumberRegion2012 _measureregion2012;)
5511 EDTMeasNumberRegion2010 _measureregion2010;
5512 EDTMeasNumberRegion _measureregionold;
5514 FCEnclosure _startEnclosureScore; // Set up by the constructor
5515 FCEnclosure _startEnclosureParts; // Set up by the constructor
5516 FCEnclosure _multipleEnclosureScore; // Set up by the constructor
5517 FCEnclosure _multipleEnclosureParts; // Set up by the constructor
5518
5519
5520 /* Returns a pointer to the correct 'flags' member of the score/part struct */
5521 const FLAG_16* _GetScorePartFlagsPtr(bool parts);
5522
5523 /* Returns a pointer to the correct 'flags2' member of the score/part struct */
5524 const FLAG_16* _GetScorePartFlags2Ptr(bool parts);
5525
5526 /* Returns a pointer to the correct 'incidence' member of the score/part struct */
5527 const twobyte* _GetScorePartIncidencePtr(bool parts) const;
5528
5529 /* Returns a pointer to the correct 'startxdisp' (or xdisp) member of the score/part struct */
5530 const twobyte* _GetScorePartStartxdispPtr(bool parts) const;
5531
5532 /* Returns a pointer to the correct 'startxdisp' (or xdisp) member of the score/part struct */
5533 const twobyte* _GetScorePartStartydispPtr(bool parts) const;
5534
5535 /* Returns a pointer to the correct 'multiplexdisp' member of the score/part struct */
5536 const twobyte* _GetScorePartMultiplexdispPtr(bool parts) const;
5537
5538 /* Returns a pointer to the correct 'multipleydisp' member of the score/part struct */
5539 const twobyte* _GetScorePartMultipleydispPtr(bool parts) const;
5540
5541 /* Returns a pointer to the correct 'mmrestxdisp' member of the score/part struct */
5542 const twobyte* _GetScorePartMmrestxdispPtr(bool parts) const;
5543
5544 /* Returns a pointer to the correct 'mmrestydisp' member of the score/part struct */
5545 const twobyte* _GetScorePartMmrestydispPtr(bool parts) const;
5546
5547 /* Returns a pointer to the correct 'startWith' member of the score/part struct */
5548 const twobyte* _GetScorePartStartWithPtr(bool parts) const;
5549
5550 /* Returns a pointer to the correct 'leftMMBracketChar' member of the score/part struct
5551 eUniChar32 on Fin2012+
5552 EWCHAR on pre-Fin2012
5553 */
5554 const void* _GetScorePartLeftMMBracketCharPtr(bool parts) const;
5555
5556 /* Returns a pointer to the correct 'rightMMBracketChar' member of the score/part struct
5557 eUniChar32 on Fin2012+
5558 EWCHAR on pre-Fin2012
5559 */
5560 const void* _GetScorePartRightMMBracketCharPtr(bool parts) const;
5561
5562 /* Returns a pointer to the correct 'startFont' member of the score/part struct */
5563 const EFONTID* _GetScorePartStartFontPtr(bool parts) const;
5564
5565 /* Returns a pointer to the correct 'startEfx' member of the score/part struct */
5566 const FLAG_16* _GetScorePartStartEfxPtr(bool parts) const;
5567
5568 /* Returns a pointer to the correct 'startSize' member of the score/part struct */
5569 const twobyte* _GetScorePartStartSizePtr(bool parts) const;
5570
5571 /* Returns a pointer to the correct 'multipleFont' member of the score/part struct */
5572 const EFONTID* _GetScorePartMultipleFontPtr(bool parts) const;
5573
5574 /* Returns a pointer to the correct 'multipleEfx' member of the score/part struct */
5575 const FLAG_16* _GetScorePartMultipleEfxPtr(bool parts) const;
5576
5577 /* Returns a pointer to the correct 'multipleSize' member of the score/part struct */
5578 const twobyte* _GetScorePartMultipleSizePtr(bool parts) const;
5579
5580 /* Returns a pointer to the correct 'mmRestFont' member of the score/part struct */
5581 const EFONTID* _GetScorePartMmRestFontPtr(bool parts) const;
5582
5583 /* Returns a pointer to the correct 'mmRestEfx' member of the score/part struct */
5584 const FLAG_16* _GetScorePartMmRestEfxPtr(bool parts) const;
5585
5586 /* Returns a pointer to the correct 'mmRestSize' member of the score/part struct */
5587 const twobyte* _GetScorePartMmRestSizePtr(bool parts) const;
5588
5589 /* Returns a pointer to the correct 'startMeas' member */
5590 const twobyte* _GetStartMeasPtr() const;
5591
5592 /* Returns a pointer to the correct 'endMeas' member */
5593 const twobyte* _GetEndMeasPtr() const;
5594
5595 /* Returns a pointer to the correct 'offset' member */
5596 const twobyte* _GetOffsetPtr() const;
5597
5598 /* Returns a pointer to the correct 'prefix' member. Finale 2012+ uses eUniChar16 buffer,
5599 earlier versions use ECHAR buffer. */
5600 const void* _GetPrefixPtr() const;
5601
5602 /* Returns a pointer to the correct 'suffix' member */
5603 const void* _GetSuffixPtr() const;
5604
5605 /* Returns a pointer to the correct 'flag' member */
5606 const FLAG_16* _GetFlagPtr() const;
5607
5608 /* Returns a pointer to the correct 'flag2' member */
5609 const FLAG_16* _GetFlag2Ptr() const;
5610
5611 /* Returns a pointer to the correct 'region' member */
5612 const twobyte* _GetRegionPtr() const;
5613
5614 /* Returns a pointer to the correct 'base' member */
5615 const twobyte* _GetBasePtr() const;
5616
5617 /* Returns a pointer to the correct 'startchar' member
5618 Finale 2012+ uses eUniChar32, earlier versions use twobyte.
5619 */
5620 const void* _GetStartcharPtr() const;
5621
5622 bool _GetScorePartFlags(bool parts, FLAG_16 flag);
5623 void _SetScorePartFlags(bool parts, FLAG_16 flag, bool state);
5624
5625 FLAG_16 _GetScorePartFlagsValue(bool parts);
5626 void _SetScorePartFlagsValue(bool parts, FLAG_16 flag);
5627 FLAG_16 _GetScorePartFlags2Value(bool parts);
5628 void _SetScorePartFlags2Value(bool parts, FLAG_16 flag2);
5629
5630 /* Non-virtual method to decide the FXT version */
5631 EVERSION _FXTVersionToUse() const;
5632
5633 /* For internal use only. Formats a display version of the measure number index.
5634 The measure number index is the 0-based index within the numbering sequence.
5635 */
5636 void _FormatDisplayedNumberForIndex(twobyte meas_num_index, FCString* pString);
5637protected:
5638 EXTAG Tag() const override { return ot_MeasNumberRegion; }
5639 int DataSizeLoad() const override;
5640 void* Allocate() override;
5641
5642 EVERSION EnigmaVersion() const override;
5643
5648 void CloneMemoryFrom(__FCBaseData* pSource) override
5649 {
5650 memcpy(_GetData(), ((FCMeasureNumberRegion*)pSource)->_GetData(), DataSizeLoad());
5651 _datablock = Allocate();
5653 }
5654
5655 __FCBaseData* CreateObject() override { return new FCMeasureNumberRegion(); }
5656#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
5657public:
5658
5702
5718
5734
5740 {
5742 MNJUSTIFY_LEFT = TEXT_JUSTIFY_LEFT,
5743
5745 MNJUSTIFY_CENTER = TEXT_JUSTIFY_CENTER,
5746
5748 MNJUSTIFY_RIGHT = TEXT_JUSTIFY_RIGHT
5750
5751 const char* ClassName() const override { return "FCMeasureNumberRegion"; }
5752 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_MEASURENUMBERREGION; }
5753
5754#ifndef DOXYGEN_SHOULD_IGNORE_THIS
5761 void* _GetData() { return Allocate(); }
5762#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
5763
5769
5776 void SetStartMeasure(twobyte measure);
5777
5784 void SetEndMeasure(twobyte measure);
5785
5793 void SetStartNumber(twobyte offset);
5794
5799 void SetPrefix(FCString* pString);
5800
5805 void SetSuffix(FCString* pString);
5806
5812 void SetUseScoreInfoForParts(bool value);
5813
5816 void SetID(twobyte newid);
5817
5829 void SetStartFontInfo(FCFontInfo* pFontInfo, bool parts);
5830
5841 void SetMultipleFontInfo(FCFontInfo* pFontInfo, bool parts);
5842
5854 void SetMultiMeasureFontInfo(FCFontInfo* pFontInfo, bool parts);
5855
5866 void SetUseEnclosureStart(bool use, bool parts);
5867
5876 void SetExcludeOtherStaves(bool exclude, bool parts);
5877
5886 void SetUseEnclosureMultiple(bool use, bool parts);
5887
5896 void SetShowOnTopStaff(bool showontop, bool parts);
5897
5906 void SetShowOnSystemStart(bool showonstart, bool parts);
5907
5916 void SetShowOnBottomStaff(bool showonbottom, bool parts);
5917
5926 void SetShowMultiples(bool showmultiples, bool parts);
5927
5936 void SetHideFirstNumber(bool hide, bool parts);
5937
5948 void SetShowMultiMeasureRange(bool show, bool parts);
5949
5960 void SetShowOnMultiMeasureRests(bool show, bool parts);
5961
5970 void SetMultipleValue(twobyte value, bool parts);
5971
5980 void SetMultipleStartMeasure(twobyte measure, bool parts);
5981
5992 void SetMultiMeasureBracketLeft(eUniChar32 character, bool parts);
5993
6004 void SetMultiMeasureBracketRight(eUniChar32 character, bool parts);
6005
6015 void SetBreakMultiMeasureRests(bool breakstate, bool parts);
6016
6022 void SetStartAlignment(
6023#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6025#else
6026int
6027#endif
6028 alignment,
6029 bool parts);
6030
6037#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6039#else
6040int
6041#endif
6042justification,
6043 bool parts);
6044
6051#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6053#else
6054int
6055#endif
6056 alignment,
6057 bool parts);
6058
6065#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6067#else
6068int
6069#endif
6070justification,
6071 bool parts);
6072
6079#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6081#else
6082int
6083#endif
6084 alignment,
6085 bool parts);
6086
6093#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6095#else
6096int
6097#endif
6098justification,
6099 bool parts);
6100
6109 void SetStartHorizontalPosition(twobyte distance, bool parts);
6110
6119 void SetStartVerticalPosition(twobyte distance, bool parts);
6120
6129 void SetMultipleHorizontalPosition(twobyte distance, bool parts);
6130
6139 void SetMultipleVerticalPosition(twobyte distance, bool parts);
6140
6149 void SetMultiMeasureHorizontalPosition(twobyte distance, bool parts);
6150
6159 void SetMultiMeasureVerticalPosition(twobyte distance, bool parts);
6160
6167 void SetView(
6168#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6170#else
6171 int
6172#endif
6173 view
6174 );
6175
6182 void SetNumberingStyle(
6183#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6185#else
6186 int
6187#endif
6188 style
6189 );
6190
6201 void SetBase(twobyte base);
6202
6215 void SetStartCharacter(eUniChar32 character);
6216
6222 void SetTime(bool state);
6223
6228 void SetTimeFrames(bool state);
6229
6236 void SetUseHours(bool state);
6237
6242 void SetTimePrecision(twobyte precision);
6243
6256 void SetCountFromOne(bool value);
6257
6268 void SetNoZero(bool value);
6269
6283 void SetDoubleUp(bool value);
6284
6289 twobyte GetStartMeasure() const;
6290
6295 twobyte GetEndMeasure() const;
6296
6304 twobyte GetStartNumber() const;
6305
6310 bool GetTime() const;
6311
6316 bool GetTimeFrames() const;
6317
6324 bool GetUseHours() const;
6325
6330 twobyte GetTimePrecision() const;
6331
6342 bool GetNoZero() const;
6343
6358 bool GetDoubleUp() const;
6359
6370 bool GetCountFromOne() const;
6371
6384 eUniChar32 GetStartCharacter() const;
6385
6396 twobyte GetBase() const;
6397
6408 bool GetUseScoreInfoForParts() const;
6409
6414 twobyte GetID();
6415
6426 bool GetDisplayedNumber(eMeas number, FCString* pString);
6427
6441 bool GetDisplayedNumberWithID(eMeas number, FCString* pString);
6442
6449 void GetPrefix(FCString* pString);
6450
6457 void GetSuffix(FCString* pString);
6458
6469 {
6470 return parts ? &_startEnclosureParts : &_startEnclosureScore;
6471 }
6472
6483 {
6484 return parts ? &_multipleEnclosureParts : &_multipleEnclosureScore;
6485 }
6486
6493 bool GetUseEnclosureStart(bool parts);
6494
6502 bool GetExcludeOtherStaves(bool parts);
6503
6508 bool GetUseEnclosureMultiple(bool parts);
6509
6514 bool GetShowOnTopStaff(bool parts);
6515
6520 bool GetShowOnSystemStart(bool parts);
6521
6526 bool GetShowOnBottomStaff(bool parts);
6527
6532 bool GetShowMultiples(bool parts);
6533
6538 bool GetHideFirstNumber(bool parts);
6539
6546 bool GetShowMultiMeasureRange(bool parts);
6547
6554 bool GetShowOnMultiMeasureRests(bool parts);
6555
6561 twobyte GetMultipleValue(bool parts);
6562
6567 twobyte GetMultipleStartMeasure(bool parts);
6568
6575 eUniChar32 GetMultiMeasureBracketLeft(bool parts);
6576
6583 eUniChar32 GetMultiMeasureBracketRight(bool parts);
6584
6589 bool GetBreakMultiMeasureRests(bool parts);
6590
6595#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6597#else
6598 int
6599#endif
6600 GetStartAlignment(bool parts);
6601
6606#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6608#else
6609 int
6610#endif
6611 GetStartJustification(bool parts);
6612
6613
6614
6619#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6621#else
6622 int
6623#endif
6624 GetMultipleAlignment(bool parts);
6625
6630#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6632#else
6633 int
6634#endif
6635 GetMultipleJustification(bool parts);
6636
6637
6638
6643#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6645#else
6646 int
6647#endif
6648 GetMultiMeasureAlignment(bool parts);
6649
6654#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6656#else
6657 int
6658#endif
6659 GetMultiMeasureJustification(bool parts);
6660
6661
6666 twobyte GetStartHorizontalPosition(bool parts);
6667
6672 twobyte GetStartVerticalPosition(bool parts);
6673
6678 twobyte GetMultipleHorizontalPosition(bool parts);
6679
6684 twobyte GetMultipleVerticalPosition(bool parts);
6685
6690 twobyte GetMultiMeasureHorizontalPosition(bool parts);
6691
6696 twobyte GetMultiMeasureVerticalPosition(bool parts);
6697
6703#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6705#else
6706 int
6707#endif
6708 GetView() const;
6709
6716#ifndef PDK_FRAMEWORK_LUAFRIENDLY
6718#else
6719 int
6720#endif
6721 GetNumberingStyle() const;
6722
6734 void GetStartFontInfo(FCFontInfo* pFontInfo, bool parts);
6735
6750 {
6751 FCFontInfo* pFontInfo = new FCFontInfo();
6752 GetStartFontInfo(pFontInfo, parts);
6753 return pFontInfo;
6754 }
6755
6756#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
6758 luabridge::RefCountedPtr<FCFontInfo> CreateStartFontInfo_GC(bool parts)
6759 { return makeLuaSharedPtr(CreateStartFontInfo(parts)); }
6760#endif
6761
6772 void GetMultipleFontInfo(FCFontInfo* pFontInfo, bool parts);
6773
6788 {
6789 FCFontInfo* pFontInfo = new FCFontInfo();
6790 GetMultipleFontInfo(pFontInfo, parts);
6791 return pFontInfo;
6792 }
6793
6794#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
6796 luabridge::RefCountedPtr<FCFontInfo> CreateMultipleFontInfo_GC(bool parts)
6797 { return makeLuaSharedPtr(CreateMultipleFontInfo(parts)); }
6798#endif
6799
6810 void GetMultiMeasureFontInfo(FCFontInfo* pFontInfo, bool parts);
6811
6826 {
6827 FCFontInfo* pFontInfo = new FCFontInfo();
6828 GetMultiMeasureFontInfo(pFontInfo, parts);
6829 return pFontInfo;
6830 }
6831
6832#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
6834 luabridge::RefCountedPtr<FCFontInfo> CreateMultiMeasureFontInfo_GC(bool parts)
6835 { return makeLuaSharedPtr(CreateMultiMeasureFontInfo(parts)); }
6836#endif
6837
6852 FCString* CreateDisplayedString(twobyte measure);
6853
6854#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
6856 luabridge::RefCountedPtr<FCString> CreateDisplayedString_GC(twobyte measure)
6857 { return makeLuaSharedPtr(CreateDisplayedString(measure)); }
6858#endif
6859
6860
6869 void CloneFormattingFrom(FCMeasureNumberRegion* pRegionFrom, bool score, bool parts);
6870
6879 bool IsMeasureIncluded(twobyte measureno)
6880 {
6881 if (measureno > GetEndMeasure()) return false;
6882 if (measureno < GetStartMeasure()) return false;
6883 return true;
6884 }
6885
6901 bool AssignAllNonNumberedMeasures(FCNumbers* pAllNonNumberedMeasures);
6902
6915 void _SetTempNonIncludedMeasures(FCNumbers* pNonNumberedMeasuresToUse)
6916 {
6917 /* Store the "actual" value, restore it with _RestoreTempNonIncludedMeasures() */
6918 _pTempNonIncludedMeasuresStorage = _pNonIncludedMeasures;
6919 /* Set temp value */
6920 _pNonIncludedMeasures = pNonNumberedMeasuresToUse;
6921 }
6922
6928 {
6929 /* Restore from temporary storage to the "real" storage */
6930 _pNonIncludedMeasures = _pTempNonIncludedMeasuresStorage;
6931 }
6932
6933#ifdef PDK_FRAMEWORK_DEBUG
6934 void DebugDump() override
6935 {
6937 DebugOutInt("Start measure: ", GetStartMeasure());
6938 DebugOutInt("End measure: ", GetEndMeasure());
6939 }
6940#endif
6941};
6942
6952{
6953#ifndef DOXYGEN_SHOULD_IGNORE_THIS
6954 private:
6956 EDTInstrumentUsed _instrumentused;
6957 int _resize;
6958
6960 bool LoadFirst() override { return false; }
6961protected:
6962 EXTAG Tag() const override { return ot_InstrumentUsed; }
6963 int DataSizeLoad() const override { return sizeof(EDTInstrumentUsed); }
6964 void* Allocate() override { return (void*) &_instrumentused; }
6965
6970 void CloneMemoryFrom(__FCBaseData* pSource) override
6971 {
6972 memcpy(&_instrumentused, ((FCSystemStaff*)pSource)->_GetDataPtr(), sizeof(_instrumentused));
6973 _datablock = &_instrumentused;
6974 _loadedsize = sizeof(_instrumentused);
6975 _resize = ((FCSystemStaff*)pSource)->GetResize();
6976 }
6977
6978 __FCBaseData* CreateObject() override { return new FCSystemStaff(); }
6979#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
6980public:
6981 const char* ClassName() const override { return "FCSystemStaff"; }
6982 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_SYSTEMSTAFF; }
6983
6984#ifndef DOXYGEN_SHOULD_IGNORE_THIS
6991 void* _GetDataPtr() { return &_instrumentused; }
6992#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
6993
7000 {
7001 memset(&_instrumentused, 0, sizeof(_instrumentused));
7002 _datablock = &_instrumentused;
7003 _loadedsize = sizeof(_instrumentused);
7004 _resize = 100;
7005 }
7006
7008 bool Load(CMPER itemno, twobyte inci) override;
7009
7011 bool SaveNew(CMPER itemno) override;
7012
7014 bool Save() override;
7015
7016
7024 void SetDistance(Evpu32 distance) { _instrumentused.separ = -distance; }
7025
7030 void SetStaff(eStaff staffno) { _instrumentused.inst = staffno; }
7031
7039 Evpu32 GetDistance() const { return -_instrumentused.separ; }
7040
7046 eStaff GetStaff() const override { return _instrumentused.inst; }
7047
7053 int GetResize() const
7054 {
7055 if (_dataid.other.cmper == 0) return 100;
7056 return _resize;
7057 }
7058
7067 void SetResize(int value)
7068 {
7069 _resize = value;
7070 }
7071
7079 {
7080 if (_dataid.other.cmper == 0) return false;
7081 if (!DataIsLoaded()) return false;
7082 EDataID dataID;
7083 dataID.detail.cmper1 = _dataid.other.cmper; /* System */
7084 dataID.detail.cmper2 = _instrumentused.inst; /* Staff */
7085 dataID.detail.inci = 0; /* Should be 0 */
7086 return FX_DeleteEData(dt_StaffEnduction, &dataID, EnigmaVersion()) != 0;
7087 }
7088
7089#ifdef PDK_FRAMEWORK_DEBUG
7090 void DebugDump() override
7091 {
7093 DebugOutInt("Distance: ", GetDistance());
7094 }
7095#endif
7096};
7097
7099
7106{
7107#ifndef DOXYGEN_SHOULD_IGNORE_THIS
7108 private:
7110 EDTDrumStaff2010 _drumstaff;
7111
7113 bool LoadFirst() override { return false; }
7114protected:
7115 EXTAG Tag() const override { return GetCustomTag() ? GetCustomTag() : ot_DrumStaff2010; } /* Custom tags might be used!!! */
7116 int DataSizeLoad() const override { return sizeof(EDTDrumStaff2010); }
7117 void* Allocate() override { return (void*) &_drumstaff; }
7118
7123 void CloneMemoryFrom(__FCBaseData* pSource) override
7124 {
7125 memcpy(&_drumstaff, ((FCPercussionStaff*)pSource)->_GetDataPtr(), sizeof(_drumstaff));
7126 _datablock = &_drumstaff;
7127 _loadedsize = sizeof(_drumstaff);
7128 }
7129
7130 __FCBaseData* CreateObject() override { return new FCPercussionStaff(); }
7131#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
7132public:
7133 const char* ClassName() const override { return "FCPercussionStaff"; }
7134 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_PERCUSSIONSTAFF; }
7135
7136#ifndef DOXYGEN_SHOULD_IGNORE_THIS
7143 void* _GetDataPtr() { return &_drumstaff; }
7144#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
7145
7148 {
7149 memset(&_drumstaff, 0, sizeof(_drumstaff));
7150 _datablock = &_drumstaff;
7151 _loadedsize = sizeof(_drumstaff);
7152 }
7153
7161 {
7162 return _drumstaff.whichDrumLib;
7163 }
7164
7169 void SetPercussionLibrary(CMPER cmper)
7170 {
7171 _drumstaff.whichDrumLib = cmper;
7172 }
7173
7180
7181#ifdef PDK_FRAMEWORK_DEBUG
7182 void DebugDump() override
7183 {
7185 DebugOutInt("Percussion Library: ", GetPercussionLibrary());
7186 }
7187#endif
7188};
7189
7190#ifdef PDK_FRAMEWORK_PREFS
7202{
7203#ifndef DOXYGEN_SHOULD_IGNORE_THIS
7204 private:
7205
7206 bool _fullnamepos; /* Needed for calculating the preferences*/
7207
7209 EDTNamePos _namepos;
7210
7212 bool LoadFirst() override { return false; }
7213protected:
7214 EXTAG Tag() const override { return GetCustomTag() ? GetCustomTag() : ot_NamePosFull; } /* Custom tags SHOULD be used!!! */
7215 int DataSizeLoad() const override { return sizeof(EDTNamePos); }
7216 void* Allocate() override { return (void*) &_namepos; }
7217
7222 void CloneMemoryFrom(__FCBaseData* pSource) override
7223 {
7224 memcpy(&_namepos, ((FCStaffNamePosition*)pSource)->_GetDataPtr(), sizeof(_namepos));
7225 _datablock = &_namepos;
7226 _loadedsize = sizeof(_namepos);
7227 _fullnamepos = ((FCStaffNamePosition*)pSource)->_GetFullNamePos();
7228 }
7229
7230 __FCBaseData* CreateObject() override { return new FCStaffNamePosition(_fullnamepos); }
7231#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
7232public:
7233 const char* ClassName() const override { return "FCStaffNamePosition"; }
7234 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_STAFFNAMEPOSITION; }
7235
7236#ifndef DOXYGEN_SHOULD_IGNORE_THIS
7238 bool _GetFullNamePos() { return _fullnamepos; }
7239
7246 void* _GetDataPtr() { return &_namepos; }
7247
7249 bool Load(CMPER itemno) override
7250 {
7251 const EDTNamePos savenamepos = _namepos;
7252 const bool retval = __FCNoInciOther::Load(itemno);
7253 if (! retval)
7254 {
7256 _namepos = savenamepos;
7257 }
7258 return retval;
7259 }
7260#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
7261
7268 FCStaffNamePosition(bool fullname);
7269
7274 twobyte GetHorizontalOffset() const { return _namepos.horizAdjust; }
7275
7280 twobyte GetVerticalOffset() const { return _namepos.vertAdjust; }
7281
7288 FLAG_16 GetJustification() const { return (_namepos.flag & (NAMEPOS_JUSTIBITS & 0x7)); }
7289
7296 FLAG_16 GetAlignment() const { return (_namepos.flag & NAMEPOS_HALIGNBITS) >> 4; }
7297
7302 bool GetExpandSingleWord() const { return GetBitFlag(_namepos.flag, NAMEPOS_EXPAND_SINGLE_WORD); }
7303
7308 bool GetUsePositioning() const { return GetBitFlag(_namepos.flag, 0x0008); }
7309
7310 // *******
7311 // SETTERS
7312 // *******
7313
7318 void SetHorizontalOffset(twobyte value) { _namepos.horizAdjust = value; }
7319
7324 void SetVerticalOffset(twobyte value) { _namepos.vertAdjust = value; }
7325
7332 void SetJustification(FLAG_16 justification)
7333 {
7334 const FLAG_16 actualJustiBits = (NAMEPOS_JUSTIBITS & 0x7);
7335 justification &= actualJustiBits;
7336 _namepos.flag &= ~actualJustiBits;
7337 _namepos.flag |= justification;
7338 }
7339
7346 void SetAlignment(FLAG_16 alignment)
7347 {
7348 alignment = alignment << 4;
7349 alignment &= NAMEPOS_HALIGNBITS;
7350 _namepos.flag &= ~NAMEPOS_HALIGNBITS;
7351 _namepos.flag |= alignment;
7352 }
7353
7358 void SetExpandSingleWord(bool state)
7359 {
7360 Set16BitFlag(&_namepos.flag, NAMEPOS_EXPAND_SINGLE_WORD, state);
7361 }
7362
7367 void SetUsePositioning(bool state) { Set16BitFlag(&_namepos.flag, 0x0008, state); }
7368
7373 Evpu16 CalcHorizontalPosition();
7374
7379 Evpu16 CalcVerticalPosition();
7380};
7381#endif /* PDK_FRAMEWORK_PREFS */
7382/* End of FCStaffNamePosition */
7383
7384
7385class FCInstrumentDef;
7388
7393{
7394 mutable FCString _uuid; /* Used for #GetInstrumentUUID */
7395
7396protected:
7397#ifndef DOXYGEN_SHOULD_IGNORE_THIS
7398#ifdef PDK_FRAMEWORK_PREFS
7400 std::unique_ptr<FCStaffNamePosition> _pFullNamePosition;
7401 std::unique_ptr<FCStaffNamePosition> _pAbbreviatedNamePosition;
7402#endif // PDK_FRAMEWORK_PREFS
7403
7410 EVERSION _VersionToUse() const;
7411
7412
7413 /* PURE VIRTUAL METHODS
7414 *
7415 * Used for data pointer access.
7416 */
7417
7419 virtual const uonebyte* _GetInstUUIDPtr() const = 0;
7420
7422 virtual const FLAG_16* _GetInstFlagPtr() const = 0;
7423
7425 virtual const FLAG_16* _GetFlagPtr() const = 0;
7426
7428 virtual const FLAG_16* _GetAltFlagPtr() const = 0;
7429
7431 virtual const FLAG_16* _GetAltFlag2Ptr() const = 0;
7432
7434 virtual const twobyte* _GetTranspositionPtr() const = 0;
7435
7437 virtual const FLAG_16* _GetMoreFlagsPtr() const = 0;
7438
7440 virtual const FLAG_16* _GetMoreFlags2Ptr() const = 0;
7441
7443 virtual const FLAG_16* _GetMoreFlags3Ptr() const = 0;
7444
7446 virtual const twobyte* _GetAbbrvNamePtr() const = 0;
7447
7449 virtual const twobyte* _GetFullNamePtr() const = 0;
7450
7452 virtual const twobyte* _GetClefsPtr() const = 0;
7453
7455 virtual const Efix32* _GetVertTabNumOffPtr() const = 0;
7456
7458 virtual const CMPER* _GetFretInstIDPtr() const = 0;
7459
7461 virtual const Evpu16* _GetBottomBarlineOffsetPtr() const = 0;
7462
7464 virtual const Evpu16* _GetTopBarlineOffsetPtr() const = 0;
7465
7467 virtual const utwobyte* _GetCapoLowFretPtr() const = 0;
7468
7470 virtual const FLAG_16* _GetBotLinesPtr() const = 0;
7471
7473 virtual const FLAG_16* _GetTopLinesPtr() const = 0;
7474
7476 virtual const Efix32* _GetLineSpacePtr() const = 0;
7477
7479 virtual const twobyte* _GetDwWRestPtr() const = 0;
7480
7482 virtual const twobyte* _GetStemReversalPtr() const = 0;
7483
7485 virtual const twobyte* _GetRepeatDotsOffPtr() const = 0;
7486
7488 virtual const twobyte* _GetHOtherRestPtr() const = 0;
7489
7491 virtual const EFONTID* _GetMFontPtr() const = 0;
7492
7494 virtual const twobyte* _GetSizeEfxPtr() const = 0;
7495
7497 virtual const Efix32* _GetHorzStemOffUpPtr() const = 0;
7498
7500 virtual const Efix32* _GetHorzStemOffDownPtr() const = 0;
7501
7503 virtual const Efix32* _GetVertStemStartOffUpPtr() const = 0;
7504
7506 virtual const Efix32* _GetVertStemStartOffDownPtr() const = 0;
7507
7509 virtual const Efix32* _GetVertStemEndOffUpPtr() const = 0;
7510
7512 virtual const Efix32* _GetVertStemEndOffDownPtr() const = 0;
7513
7518 virtual EXTAG _GetFullNamePosTag() const = 0;
7519
7524 virtual twobyte _GetFullNamePosCmper() const = 0;
7525
7530 virtual EXTAG _GetAbbreviatedNamePosTag() const = 0;
7531
7536 virtual twobyte _GetAbbreviatedNamePosCmper() const = 0;
7537
7538#ifdef PDK_FRAMEWORK_PREFS
7543 virtual bool _SaveNewFullNamePos() = 0;
7544
7549 virtual bool _SaveNewAbbreviatedNamePos() = 0;
7550#endif // PDK_FRAMEWORK_PREFS
7551
7557 void _SetFlag(FLAG_16 mask, bool state)
7558 {
7559 FLAG_16* pFlag = (FLAG_16*) _GetFlagPtr();
7560 return Set16BitFlag(pFlag, mask, state);
7561 }
7562
7563#endif /* #ifndef DOXYGEN_SHOULD_IGNORE_THIS */
7564private:
7565 /* ACCESSOR METHODS */
7566
7569 bool _GetInstFlag(FLAG_16 mask) const
7570 {
7571 return GetBitFlag(*_GetInstFlagPtr(), mask);
7572 }
7573
7576 void _SetInstFlag(FLAG_16 mask, bool state)
7577 {
7578 FLAG_16* pInstFlag = (FLAG_16*) _GetInstFlagPtr();
7579 return Set16BitFlag(pInstFlag, mask, state);
7580 }
7581
7586 bool _GetFlag(FLAG_16 mask) const
7587 {
7588 return GetBitFlag(*_GetFlagPtr(), mask);
7589 }
7590
7595 bool _GetAltFlag(FLAG_16 mask) const
7596 {
7597 return GetBitFlag(*_GetAltFlagPtr(), mask);
7598 }
7599
7604 void _SetAltFlag(FLAG_16 mask, bool state)
7605 {
7606 FLAG_16* pFlag = (FLAG_16*) _GetAltFlagPtr();
7607 return Set16BitFlag(pFlag, mask, state);
7608 }
7609
7614 bool _GetTranspositionFlag(FLAG_16 mask) const
7615 {
7616 return GetBitFlag(*_GetTranspositionPtr(), mask);
7617 }
7618
7623 void _SetTranspositionFlag(FLAG_16 mask, bool state)
7624 {
7625 FLAG_16* pFlag = (FLAG_16*) _GetTranspositionPtr();
7626 return Set16BitFlag(pFlag, mask, state);
7627 }
7628
7633 bool _GetMoreFlags(FLAG_16 mask) const
7634 {
7635 return GetBitFlag(*_GetMoreFlagsPtr(), mask);
7636 }
7637
7638 bool _GetMoreFlags2(FLAG_16 mask) const
7639 {
7640 return GetBitFlag(*_GetMoreFlags2Ptr(), mask);
7641 }
7642
7643 bool _GetMoreFlags3(FLAG_16 mask) const
7644 {
7645 return GetBitFlag(*_GetMoreFlags3Ptr(), mask);
7646 }
7647
7652 void _SetMoreFlags(FLAG_16 mask, bool state)
7653 {
7654 FLAG_16* pFlag = (FLAG_16*) _GetMoreFlagsPtr();
7655 return Set16BitFlag(pFlag, mask, state);
7656 }
7657
7662 void _SetMoreFlags2(FLAG_16 mask, bool state)
7663 {
7664 FLAG_16* pFlag = (FLAG_16*) _GetMoreFlags2Ptr();
7665 return Set16BitFlag(pFlag, mask, state);
7666 }
7667
7672 void _SetMoreFlags3(FLAG_16 mask, bool state)
7673 {
7674 FLAG_16* pFlag = const_cast<FLAG_16*>(_GetMoreFlags3Ptr());
7675 return Set16BitFlag(pFlag, mask, state);
7676 }
7677
7679 void _SetAbbreviatedNameID(CMPER cmperid)
7680 {
7681 CMPER* pCmper = (CMPER*) _GetAbbrvNamePtr();
7682 *pCmper = cmperid;
7683 }
7684
7686 void _SetFullNameID(CMPER cmperid)
7687 {
7688 CMPER* pCmper = (CMPER*) _GetFullNamePtr();
7689 *pCmper = cmperid;
7690 }
7691
7692public:
7693 const char* ClassName() const override { return "__FCStaffBase"; }
7694
7695#if FXT_VERSION >= FINALEVERSION_2012
7696
7698 static const char FFUUID_BLANKSTAFF[];
7700 static const char FFUUID_GRANDSTAFF[];
7702 static const char FFUUID_UNKNOWN[];
7703
7704 /* Strings */
7705
7707 static const char FFUUID_VIOLIN[];
7709 static const char FFUUID_VIOLA[];
7711 static const char FFUUID_CELLO[];
7713 static const char FFUUID_DOUBLEBASS[];
7715 static const char FFUUID_VIOLINSECTION[];
7717 static const char FFUUID_VIOLASECTION[];
7719 static const char FFUUID_CELLOSECTION[];
7721 static const char FFUUID_VIOLONCELLOSECTION[];
7723 static const char FFUUID_DOUBLEBASSSECTION[];
7725 static const char FFUUID_CONTRABASSSECTION[];
7727 static const char FFUUID_STRINGENSEMBLE[];
7729 static const char FFUUID_VIOLADAMORE[];
7731 static const char FFUUID_AJAENG[];
7733 static const char FFUUID_ARPEGGIONE[];
7735 static const char FFUUID_BARYTON[];
7737 static const char FFUUID_BYZANTINELYRA[];
7739 static const char FFUUID_CRETANLYRA[];
7741 static const char FFUUID_CRWTH[];
7743 static const char FFUUID_DAHU[];
7745 static const char FFUUID_DANGAO[];
7747 static const char FFUUID_DIHU[];
7749 static const char FFUUID_ERHU[];
7751 static const char FFUUID_ERXIAN[];
7753 static const char FFUUID_FIDDLE[];
7755 static const char FFUUID_GAOHU[];
7757 static const char FFUUID_GEHU[];
7759 static const char FFUUID_HAEGEUM[];
7761 static const char FFUUID_HARDANGERFIDDLE[];
7763 static const char FFUUID_HURDYGURDY[];
7765 static const char FFUUID_IGIL[];
7767 static const char FFUUID_KAMANCHA[];
7769 static const char FFUUID_KOKYU[];
7771 static const char FFUUID_KORA[];
7773 static const char FFUUID_LARUAN[];
7775 static const char FFUUID_LEIQIN[];
7777 static const char FFUUID_LIRONE[];
7779 static const char FFUUID_MORINKHUUR[];
7781 static const char FFUUID_NYCKELHARPA[];
7783 static const char FFUUID_OCTOBASS[];
7785 static const char FFUUID_REBAB[];
7787 static const char FFUUID_REBEC[];
7789 static const char FFUUID_SARANGI[];
7791 static const char FFUUID_SARANGIDRONE[];
7793 static const char FFUUID_STROHVIOLIN[];
7795 static const char FFUUID_TROMBAMARINA[];
7797 static const char FFUUID_VIELLE[];
7799 static const char FFUUID_VIOL[];
7801 static const char FFUUID_VIOLADAGAMBA[];
7803 static const char FFUUID_VIOLINOPICCOLO[];
7805 static const char FFUUID_VIOLONCELLOPICCOLO[];
7807 static const char FFUUID_VIOLOTTA[];
7809 static const char FFUUID_ZHONGHU[];
7810
7811 /* Keyboards */
7812
7814 static const char FFUUID_PIANO[];
7816 static const char FFUUID_PIANONONAME[];
7818 static const char FFUUID_HARPSICHORD[];
7820 static const char FFUUID_ORGAN[];
7822 static const char FFUUID_ORGAN2STAFF[];
7824 static const char FFUUID_CELESTA[];
7826 static const char FFUUID_ACCORDION[];
7828 static const char FFUUID_MELODICA[];
7830 static const char FFUUID_ELECTRICPIANO[];
7832 static const char FFUUID_CLAVINET[];
7834 static const char FFUUID_SYNTHPAD[];
7836 static const char FFUUID_SYNTHLEAD[];
7838 static const char FFUUID_SYNTHBRASS[];
7840 static const char FFUUID_SYNTHSOUNDTRACK[];
7842 static const char FFUUID_SOUNDFX[];
7844 static const char FFUUID_HARMONIUM[];
7846 static const char FFUUID_ONDESMARTENOT[];
7848 static const char FFUUID_THEREMIN[];
7850 static const char FFUUID_VIRGINAL[];
7852 static const char FFUUID_CLAVICHORD[];
7853
7854 /* Voices */
7855
7857 static const char FFUUID_SOPRANOVOICE[];
7859 static const char FFUUID_ALTOVOICE[];
7861 static const char FFUUID_TENORVOICE[];
7863 static const char FFUUID_BARITONEVOICE[];
7865 static const char FFUUID_BASSVOICE[];
7867 static const char FFUUID_VOCALS[];
7869 static const char FFUUID_VOICE[];
7871 static const char FFUUID_VOICENONAME[];
7873 static const char FFUUID_MEZZOSOPRANOVOICE[];
7875 static const char FFUUID_CONTRALTOVOICE[];
7877 static const char FFUUID_COUNTERTENORVOICE[];
7879 static const char FFUUID_BASSBAROTONEVOICE[];
7881 static const char FFUUID_CHOIRAAHS[];
7883 static const char FFUUID_CHOIROOHS[];
7885 static const char FFUUID_YODEL[];
7887 static const char FFUUID_BEATBOX[];
7889 static const char FFUUID_KAZOO[];
7891 static const char FFUUID_TALKBOX[];
7893 static const char FFUUID_VOCALPERCUSSION[];
7894
7895 /* Woodwinds */
7896
7898 static const char FFUUID_PICCOLO[];
7900 static const char FFUUID_FLUTE[];
7902 static const char FFUUID_ALTOFLUTE[];
7904 static const char FFUUID_OBOE[];
7906 static const char FFUUID_OBOEDAMORE[];
7908 static const char FFUUID_ENGLISHHORN[];
7910 static const char FFUUID_CLARINETBFLAT[];
7912 static const char FFUUID_CLARINETA[];
7914 static const char FFUUID_CLARINETEFLAT[];
7916 static const char FFUUID_ALTOCLARINET[];
7918 static const char FFUUID_CONTRALTOCLARINET[];
7920 static const char FFUUID_BASSCLARINET[];
7922 static const char FFUUID_CONTRABASSCLARINET[];
7924 static const char FFUUID_BASSOON[];
7926 static const char FFUUID_CONTRABASSOON[];
7928 static const char FFUUID_WINDSECTION[];
7930 static const char FFUUID_SOPRANOSAX[];
7932 static const char FFUUID_ALTOSAX[];
7934 static const char FFUUID_TENORSAX[];
7936 static const char FFUUID_BARITONESAX[];
7938 static const char FFUUID_SOPRANORECORDER[];
7940 static const char FFUUID_SOPRANINORECORDER[];
7942 static const char FFUUID_ALTORECORDER[];
7944 static const char FFUUID_TENORRECORDER[];
7946 static const char FFUUID_BASSRECORDER[];
7948 static const char FFUUID_DESCANTRECORDER[];
7950 static const char FFUUID_OCARINA[];
7952 static const char FFUUID_PENNYWHISTLE[];
7954 static const char FFUUID_PENNYWHISTLED[];
7956 static const char FFUUID_PENNYWHISTLEG[];
7958 static const char FFUUID_LOWIRISHWHISTLE[];
7960 static const char FFUUID_TINWHISTLEBFLAT[];
7962 static const char FFUUID_HARMONICA[];
7964 static const char FFUUID_BASSHARMONICA[];
7966 static const char FFUUID_CONCERTINA[];
7968 static const char FFUUID_BANDONEON[];
7970 static const char FFUUID_HORNF_WWQUINTET[];
7972 static const char FFUUID_BAGPIPES[];
7974 static const char FFUUID_UILLEANNPIPES[];
7976 static const char FFUUID_GAIDAPIPES[];
7978 static const char FFUUID_CONTRAALTOFLUTE[];
7980 static const char FFUUID_BASSFLUTE[];
7982 static const char FFUUID_CONTRABASSFLUTE[];
7984 static const char FFUUID_DOUBLECONTRABASSFLUTE[];
7986 static const char FFUUID_HYPERBASSFLUTE[];
7988 static const char FFUUID_PANPIPES[];
7990 static const char FFUUID_FIFE[];
7992 static const char FFUUID_BOTTLEBLOW[];
7994 static const char FFUUID_JUG[];
7996 static const char FFUUID_PICCOLOOBOE[];
7998 static const char FFUUID_PICCOLOHECKELPHONE[];
8000 static const char FFUUID_HECKELPHONE[];
8002 static const char FFUUID_BASSOBOE[];
8004 static const char FFUUID_BASSETCLARINET[];
8006 static const char FFUUID_BASSETHORN[];
8008 static const char FFUUID_HORNPIPE[];
8010 static const char FFUUID_PICCOLOCLARINET[];
8012 static const char FFUUID_SAXONETTE[];
8014 static const char FFUUID_SOPRANINOSAX[];
8016 static const char FFUUID_MEZZOSOPRANOSAX[];
8018 static const char FFUUID_SOPRILLO[];
8020 static const char FFUUID_CMELODYSAX[];
8022 static const char FFUUID_AULOCHROME[];
8024 static const char FFUUID_XAPHOON[];
8026 static const char FFUUID_BASSSAX[];
8028 static const char FFUUID_CONTRABASSSAX[];
8030 static const char FFUUID_SUBCONTRABASSSAX[];
8032 static const char FFUUID_TUBAX[];
8034 static const char FFUUID_BANSURI[];
8036 static const char FFUUID_DANSO[];
8038 static const char FFUUID_DIZI[];
8040 static const char FFUUID_DILLIKAVAL[];
8042 static const char FFUUID_DIPLE[];
8044 static const char FFUUID_DOUBLEFLUTE[];
8046 static const char FFUUID_DVOJNICE[];
8048 static const char FFUUID_DVOJNICEDRONE[];
8050 static const char FFUUID_FLAGEOLET[];
8052 static const char FFUUID_FUJARA[];
8054 static const char FFUUID_GEMSHORN[];
8056 static const char FFUUID_HOCCHIKU[];
8058 static const char FFUUID_HUN[];
8060 static const char FFUUID_IRISHFLUTE[];
8062 static const char FFUUID_KAVAL[];
8064 static const char FFUUID_KHLUI[];
8066 static const char FFUUID_KNOTWEEDFLUTE[];
8068 static const char FFUUID_KONCOVKAALTOFLUTE[];
8070 static const char FFUUID_KOUDI[];
8072 static const char FFUUID_NEY[];
8074 static const char FFUUID_NOHKAN[];
8076 static const char FFUUID_NOSEFLUTE[];
8078 static const char FFUUID_PALENDAG[];
8080 static const char FFUUID_QUENA[];
8082 static const char FFUUID_RYUTEKI[];
8084 static const char FFUUID_SHAKUHACHI[];
8086 static const char FFUUID_SHEPHERDSPIPE[];
8088 static const char FFUUID_SHINOBUE[];
8090 static const char FFUUID_SHIVAWHISTLE[];
8092 static const char FFUUID_SHVI[];
8094 static const char FFUUID_SULING[];
8096 static const char FFUUID_TARKA[];
8098 static const char FFUUID_TENOROVERTONEFLUTE[];
8100 static const char FFUUID_TUMPONG[];
8102 static const char FFUUID_VENU[];
8104 static const char FFUUID_XIAO[];
8106 static const char FFUUID_XUN[];
8108 static const char FFUUID_ALBOGUE[];
8110 static const char FFUUID_ALBOKA[];
8112 static const char FFUUID_ALTOCRUMHORN[];
8114 static const char FFUUID_ARGHUL[];
8116 static const char FFUUID_BAWU[];
8118 static const char FFUUID_CHALUMEAU[];
8120 static const char FFUUID_CLARINETTEDAMOUR[];
8122 static const char FFUUID_CORNAMUSE[];
8124 static const char FFUUID_DIPLICA[];
8126 static const char FFUUID_DOUBLECLARINET[];
8128 static const char FFUUID_HECKELCLARINA[];
8130 static const char FFUUID_HECKELPHONECLARINET[];
8132 static const char FFUUID_HIRTENSCHALMEI[];
8134 static const char FFUUID_LAUNEDDAS[];
8136 static const char FFUUID_MAQRUNAH[];
8138 static const char FFUUID_MIJWIZ[];
8140 static const char FFUUID_OCTAVIN[];
8142 static const char FFUUID_PIBGORN[];
8144 static const char FFUUID_RAUSCHPFEIFE[];
8146 static const char FFUUID_SIPSI[];
8148 static const char FFUUID_MODERNTAROGATO[];
8150 static const char FFUUID_TENORCRUMHORN[];
8152 static const char FFUUID_ZHALEIKA[];
8154 static const char FFUUID_ALGAITA[];
8156 static const char FFUUID_BIFORA[];
8158 static const char FFUUID_BOMBARDE[];
8160 static const char FFUUID_CROMORNE[];
8162 static const char FFUUID_DUDUK[];
8164 static const char FFUUID_DULCIAN[];
8166 static const char FFUUID_DULZAINA[];
8168 static const char FFUUID_GUAN[];
8170 static const char FFUUID_GUANZI[];
8172 static const char FFUUID_HICHIRIKI[];
8174 static const char FFUUID_HNE[];
8176 static const char FFUUID_JOGIBAJA[];
8178 static const char FFUUID_KENBAU[];
8180 static const char FFUUID_MIZMAR[];
8182 static const char FFUUID_NADASWARAM[];
8184 static const char FFUUID_OBOEDACACCIA[];
8186 static const char FFUUID_PI[];
8188 static const char FFUUID_PIRI[];
8190 static const char FFUUID_PUNGISNAKECHARMER[];
8192 static const char FFUUID_RACKETT[];
8194 static const char FFUUID_REEDCONTRABASS[];
8196 static const char FFUUID_RHAITA[];
8198 static const char FFUUID_ROTHPHONE[];
8200 static const char FFUUID_SARRUSOPHONE[];
8202 static const char FFUUID_SHAWM[];
8204 static const char FFUUID_SHEHNAI[];
8206 static const char FFUUID_SOPILA[];
8208 static const char FFUUID_SORNA[];
8210 static const char FFUUID_SRALAI[];
8212 static const char FFUUID_SUONA[];
8214 static const char FFUUID_SURNAY[];
8216 static const char FFUUID_TAEPYEONGSO[];
8218 static const char FFUUID_ANCIENTTAROGATO[];
8220 static const char FFUUID_TROMPETACHINA[];
8222 static const char FFUUID_ZURLA[];
8224 static const char FFUUID_ZURNA[];
8226 static const char FFUUID_KHAENMOUTHORGAN[];
8228 static const char FFUUID_HULUSI[];
8230 static const char FFUUID_SHENG[];
8231
8232 /* Brass */
8234 static const char FFUUID_TRUMPETBFLAT[];
8236 static const char FFUUID_TRUMPETC[];
8238 static const char FFUUID_TRUMPETD[];
8240 static const char FFUUID_CORNET[];
8242 static const char FFUUID_FLUGELHORN[];
8244 static const char FFUUID_MELLOPHONE[];
8246 static const char FFUUID_HORNF[];
8248 static const char FFUUID_TROMBONE[];
8250 static const char FFUUID_BASSTROMBONE[];
8252 static const char FFUUID_EUPHONIUM[];
8254 static const char FFUUID_BARITONEBC[];
8256 static const char FFUUID_BARITONETC[];
8258 static const char FFUUID_TUBA[];
8260 static const char FFUUID_BASSTUBA[];
8262 static const char FFUUID_SOUSAPHONE[];
8264 static const char FFUUID_BRASSSECTION[];
8266 static const char FFUUID_PICCOLOTRUMPETA[];
8268 static const char FFUUID_BUGLE[];
8270 static const char FFUUID_CORNETEFLAT[];
8272 static const char FFUUID_HORNEFLAT[];
8274 static const char FFUUID_ALTOTROMBONE[];
8276 static const char FFUUID_TENORTROMBONE[];
8278 static const char FFUUID_CONTRABASSTROMBONE[];
8280 static const char FFUUID_ALPHORN[];
8282 static const char FFUUID_ALTOHORN[];
8284 static const char FFUUID_DIDGERIDOO[];
8286 static const char FFUUID_POSTHORN[];
8288 static const char FFUUID_VIENNAHORN[];
8290 static const char FFUUID_WAGNERTUBA[];
8292 static const char FFUUID_BAROQUETRUMPET[];
8294 static const char FFUUID_BASSTRUMPET[];
8296 static const char FFUUID_CORNETTO[];
8298 static const char FFUUID_FISCORN[];
8300 static const char FFUUID_KUHLOHORN[];
8302 static const char FFUUID_POCKETTRUMPET[];
8304 static const char FFUUID_SAXHORN[];
8306 static const char FFUUID_SLIDETRUMPET[];
8308 static const char FFUUID_CIMBASSO[];
8310 static const char FFUUID_DOUBLEBELLEUPHONIUM[];
8312 static const char FFUUID_SACKBUT[];
8314 static const char FFUUID_HELICON[];
8316 static const char FFUUID_OPHICLEIDE[];
8318 static const char FFUUID_SERPENT[];
8320 static const char FFUUID_SUBCONTRABASSTUBA[];
8322 static const char FFUUID_CONCHSHELL[];
8324 static const char FFUUID_HORAGAI[];
8326 static const char FFUUID_SHOFAR[];
8328 static const char FFUUID_VUVUZELA[];
8329
8330 /* Plucked strings */
8332 static const char FFUUID_HARP[];
8334 static const char FFUUID_TROUBADORHARP[];
8336 static const char FFUUID_GUITAR[];
8338 static const char FFUUID_GUITAR8VB[];
8340 static const char FFUUID_ACOUSTICGUITAR[];
8342 static const char FFUUID_CLASSICALGUITAR[];
8344 static const char FFUUID_ELECTRICGUITAR[];
8346 static const char FFUUID_STEELGUITAR[];
8348 static const char FFUUID_BANJO[];
8350 static const char FFUUID_TENORBANJO[];
8352 static const char FFUUID_ACOUSTICBASS[];
8354 static const char FFUUID_BASSGUITAR[];
8356 static const char FFUUID_ELECTRICBASS[];
8358 static const char FFUUID_FRETLESSBASS[];
8360 static const char FFUUID_STRINGBASS[];
8362 static const char FFUUID_MANDOLIN[];
8364 static const char FFUUID_DULCIMER[];
8366 static const char FFUUID_HAMMEREDDULCIMER[];
8368 static const char FFUUID_DULCIMER8VB[];
8370 static const char FFUUID_AUTOHARP[];
8372 static const char FFUUID_LUTE[];
8374 static const char FFUUID_UKULELE[];
8376 static const char FFUUID_TENORUKULELE[];
8378 static const char FFUUID_SITAR[];
8380 static const char FFUUID_ZITHER[];
8382 static const char FFUUID_ARCHLUTE[];
8384 static const char FFUUID_BAGLAMA[];
8386 static const char FFUUID_BALALAIKA[];
8388 static const char FFUUID_BANDURA[];
8390 static const char FFUUID_BANJOLELE[];
8392 static const char FFUUID_BARBAT[];
8394 static const char FFUUID_BEGENA[];
8396 static const char FFUUID_BIWA[];
8398 static const char FFUUID_BOLON[];
8400 static const char FFUUID_BORDONUA[];
8402 static const char FFUUID_BOUZOUKI[];
8404 static const char FFUUID_BULGARIANTAMBURA[];
8406 static const char FFUUID_CHAPMANSTICK[];
8408 static const char FFUUID_CHARANGO[];
8410 static const char FFUUID_CHITARRABATTENTE[];
8412 static const char FFUUID_CHOAZHOUGUZHENG[];
8414 static const char FFUUID_CIMBALOM[];
8416 static const char FFUUID_CITTERN[];
8418 static const char FFUUID_CUATRO[];
8420 static const char FFUUID_DANBAU[];
8422 static const char FFUUID_DANNGUYET[];
8424 static const char FFUUID_DANTAMTHAPLUC[];
8426 static const char FFUUID_DANTRANH[];
8428 static const char FFUUID_DANTYBA[];
8430 static const char FFUUID_DIDDLEYBOW[];
8432 static const char FFUUID_DOBRO[];
8434 static const char FFUUID_DOMRA[];
8436 static const char FFUUID_DUTAR[];
8438 static const char FFUUID_DUXIANQIN[];
8441 static const char FFUUID_EKTARA1[];
8443 static const char FFUUID_FLAMENCOGUITAR[];
8445 static const char FFUUID_GEOMUNGO[];
8448 static const char FFUUID_EKTARA2[];
8450 static const char FFUUID_GOTTUVADHYAM[];
8454 static const char FFUUID_GUITARRON[];
8456 static const char FFUUID_GUITJO[];
8458 static const char FFUUID_GUITJODOUBLENECK[];
8460 static const char FFUUID_GUQIN[];
8462 static const char FFUUID_GUZHENG[];
8464 static const char FFUUID_HARPGUITAR[];
8466 static const char FFUUID_IRISHBOUZOUKI[];
8468 static const char FFUUID_JARANAHUASTECA[];
8470 static const char FFUUID_JARANAJAROCHO[];
8472 static const char FFUUID_JARANAMOSQUITO[];
8474 static const char FFUUID_JARANASEGUNDA[];
8476 static const char FFUUID_JARANATERCERA[];
8478 static const char FFUUID_KABOSY[];
8480 static const char FFUUID_KANTELE[];
8482 static const char FFUUID_KAYAGUM[];
8484 static const char FFUUID_KHIM[];
8486 static const char FFUUID_KOBZA[];
8488 static const char FFUUID_KOMUZ[];
8490 static const char FFUUID_KOTO[];
8492 static const char FFUUID_KUTIYAPI[];
8494 static const char FFUUID_LANGELEIK[];
8496 static const char FFUUID_LYRE[];
8498 static const char FFUUID_MANDOBASS[];
8500 static const char FFUUID_MANDOCELLO[];
8502 static const char FFUUID_MANDOLA[];
8504 static const char FFUUID_MANDORA[];
8506 static const char FFUUID_MANDORE[];
8508 static const char FFUUID_MANGBETU[];
8510 static const char FFUUID_MAROVANY[];
8512 static const char FFUUID_MOHANVEENA[];
8514 static const char FFUUID_MOODSWINGER[];
8516 static const char FFUUID_MUSICALBOW[];
8518 static const char FFUUID_NGONI[];
8520 static const char FFUUID_OCTAVEMANDOLIN[];
8522 static const char FFUUID_OUD[];
8524 static const char FFUUID_PIPA[];
8526 static const char FFUUID_PORTUGUESEGUITAR[];
8528 static const char FFUUID_PSALTERY[];
8530 static const char FFUUID_REQUINTOGUITAR[];
8532 static const char FFUUID_RUAN[];
8534 static const char FFUUID_RUDRAVEENA[];
8536 static const char FFUUID_SALLANEH[];
8538 static const char FFUUID_SANSHIN[];
8540 static const char FFUUID_SANTOOR[];
8542 static const char FFUUID_SANXIAN[];
8544 static const char FFUUID_SAROD[];
8546 static const char FFUUID_SAUNG[];
8548 static const char FFUUID_SAZ[];
8550 static const char FFUUID_SE[];
8552 static const char FFUUID_SETAR[];
8554 static const char FFUUID_SHAMISEN[];
8556 static const char FFUUID_TAMBURA[];
8559 static const char FFUUID_TAR_PLUCKED[];
8561 static const char FFUUID_THEORBO[];
8563 static const char FFUUID_TIMPLE[];
8565 static const char FFUUID_TRES[];
8567 static const char FFUUID_TSYMBALY[];
8569 static const char FFUUID_VALIHA[];
8571 static const char FFUUID_VEENA[];
8573 static const char FFUUID_VICHITRAVEENA[];
8575 static const char FFUUID_VIHUELAMEXICO[];
8577 static const char FFUUID_VIHUELASPAIN[];
8579 static const char FFUUID_WASHTUBBASS[];
8581 static const char FFUUID_WHAMOLA[];
8583 static const char FFUUID_XALAM[];
8585 static const char FFUUID_YANGQIN[];
8587 static const char FFUUID_YAZHENG[];
8589 static const char FFUUID_YUEQIN[];
8590
8591 /* Tablature */
8593 static const char FFUUID_TAB_GUITAR[];
8595 static const char FFUUID_TAB_GUITARNONAME[];
8597 static const char FFUUID_TAB_GUITARSTEMS[];
8599 static const char FFUUID_TAB_GUITAR_D[];
8601 static const char FFUUID_TAB_GUITAR_DADGAD[];
8603 static const char FFUUID_TAB_GUITAR_DOUBLED[];
8605 static const char FFUUID_TAB_GUITAR_DROPD[];
8607 static const char FFUUID_TAB_GUITAR_G[];
8609 static const char FFUUID_TAB_GUITAR_7STRING[];
8611 static const char FFUUID_TAB_BANJO_G[];
8613 static const char FFUUID_TAB_TENORBANJO[];
8615 static const char FFUUID_TAB_BANJO_C[];
8617 static const char FFUUID_TAB_BANJO_D[];
8619 static const char FFUUID_TAB_BANJO_DOUBLEC[];
8621 static const char FFUUID_TAB_BANJO_GMODAL[];
8623 static const char FFUUID_TAB_BANJO_PLECTRUM[];
8625 static const char FFUUID_TAB_BASSGUITAR_4[];
8627 static const char FFUUID_TAB_BASSGUITAR_5[];
8629 static const char FFUUID_TAB_BASSGUITAR_6[];
8631 static const char FFUUID_TAB_DULCIMER_DAA[];
8635 static const char FFUUID_TAB_DULCIMER_DAD[];
8637 static const char FFUUID_TAB_GAMBA[];
8639 static const char FFUUID_TAB_LUTEITALIAN[];
8641 static const char FFUUID_TAB_LUTELETTERS[];
8643 static const char FFUUID_TAB_MANDOLIN[];
8645 static const char FFUUID_TAB_REQUINTO[];
8647 static const char FFUUID_TAB_SITAR_SHANKAR[];
8649 static const char FFUUID_TAB_SITAR_KHAN[];
8651 static const char FFUUID_TAB_UKULELE[];
8653 static const char FFUUID_TAB_VIHUELA[];
8654
8655 /* Pitched Percussion */
8657 static const char FFUUID_TIMPANI[];
8659 static const char FFUUID_MALLETS[];
8661 static const char FFUUID_BELLS[];
8663 static const char FFUUID_CHIMES[];
8665 static const char FFUUID_CROTALES[];
8667 static const char FFUUID_GLOCKENSPIEL[];
8669 static const char FFUUID_SOPRANOGLOCKENSPIEL[];
8671 static const char FFUUID_ALTOGLOCKENSPIEL[];
8673 static const char FFUUID_MARIMBA[];
8675 static const char FFUUID_BASSMARIMBA[];
8677 static const char FFUUID_MARIMBASINGLESTAFF[];
8679 static const char FFUUID_TUBULARBELLS[];
8681 static const char FFUUID_VIBRAPHONE[];
8683 static const char FFUUID_XYLOPHONE[];
8685 static const char FFUUID_SOPRANOXYLOPHONE[];
8687 static const char FFUUID_ALTOXYLOPHONE[];
8689 static const char FFUUID_BASSXYLOPHONE[];
8691 static const char FFUUID_XYLORIMBA[];
8693 static const char FFUUID_BELL_LYRE[];
8695 static const char FFUUID_BOOMWHACKERS[];
8699 static const char FFUUID_CARILLON[];
8701 static const char FFUUID_CRYSTALGLASSES[];
8704 static const char FFUUID_FLEXATONE_PITCHED[];
8706 static const char FFUUID_GLASSHARMONICA[];
8708 static const char FFUUID_GLASSMARIMBA[];
8710 static const char FFUUID_HANDBELLS[];
8712 static const char FFUUID_HANDBELLS_TCLEF[];
8714 static const char FFUUID_HANDBELLS_BCLEF[];
8716 static const char FFUUID_HANG_TCLEF[];
8718 static const char FFUUID_JAWHARP[];
8720 static const char FFUUID_KALIMBA[];
8722 static const char FFUUID_SOPRANOMETALLOPHONE[];
8724 static const char FFUUID_ALTOMETALLOPHONE[];
8726 static const char FFUUID_BASSMETALLOPHONE[];
8728 static const char FFUUID_MUSICALSAW[];
8730 static const char FFUUID_SLIDEWHISTLE[];
8732 static const char FFUUID_STEELDRUMS_TCLEF[];
8734 static const char FFUUID_STEELDRUMS_BCLEF[];
8736 static const char FFUUID_BONANGGAMELAN[];
8738 static const char FFUUID_GANGSAGAMELAN[];
8740 static const char FFUUID_GENDERGAMELAN[];
8742 static const char FFUUID_GIYINGGAMELAN[];
8744 static const char FFUUID_KANTILGAMELAN[];
8746 static const char FFUUID_PELOGPANERUSGAMELAN[];
8748 static const char FFUUID_PEMADEGAMELAN[];
8750 static const char FFUUID_PENYACAHGAMELAN[];
8752 static const char FFUUID_SARONBARUNGGAMELAN[];
8754 static const char FFUUID_SARONDEMONGGAMELAN[];
8756 static const char FFUUID_SARONPANERUSGAMELAN[];
8758 static const char FFUUID_SLENDROPANERUSGAMELAN[];
8760 static const char FFUUID_SLENTHEMSGAMELAN[];
8762 static const char FFUUID_ALMGLOCKEN[];
8764 static const char FFUUID_ANGKLUNG[];
8766 static const char FFUUID_ARRAYMBIRA[];
8768 static const char FFUUID_BALAFON[];
8770 static const char FFUUID_BALAPHON[];
8772 static const char FFUUID_BIANQING[];
8774 static const char FFUUID_BIANZHONG[];
8776 static const char FFUUID_FANGXIANG[];
8778 static const char FFUUID_GANDINGANAKAYO[];
8780 static const char FFUUID_GYIL[];
8782 static const char FFUUID_KUBING[];
8784 static const char FFUUID_KULINTANG[];
8786 static const char FFUUID_KULINTANGAKAYO[];
8788 static const char FFUUID_KULINTANGATINIOK[];
8790 static const char FFUUID_LAMELLAPHONE[];
8792 static const char FFUUID_LIKEMBE[];
8794 static const char FFUUID_LUNTANG[];
8796 static const char FFUUID_MBIRA[];
8798 static const char FFUUID_MURCHANG[];
8800 static const char FFUUID_RANATEKLEK[];
8802 static const char FFUUID_RANATTHUMLEK[];
8804 static const char FFUUID_SANZA[];
8806 static const char FFUUID_TAIKODRUMS[];
8808 static const char FFUUID_TEMPLEBELLS[];
8810 static const char FFUUID_TIBETANBELLS[];
8812 static const char FFUUID_TIBETANSINGINGBOWLS[];
8813
8814 /* Drums */
8815
8817 static const char FFUUID_SNAREDRUM[];
8819 static const char FFUUID_BASSDRUM[];
8821 static const char FFUUID_DRUMSET[];
8823 static const char FFUUID_TENORDRUM[];
8825 static const char FFUUID_QUADTOMS[];
8827 static const char FFUUID_QUINTTOMS[];
8829 static const char FFUUID_ROTOTOMS[];
8831 static const char FFUUID_TENORLINE[];
8833 static const char FFUUID_SNARELINE[];
8835 static const char FFUUID_BASSDRUMS_5LINE[];
8837 static const char FFUUID_DJEMBE[];
8839 static const char FFUUID_BONGODRUMS[];
8841 static const char FFUUID_CONGADRUMS[];
8843 static const char FFUUID_LOGDRUM[];
8845 static const char FFUUID_TABLAS[];
8847 static const char FFUUID_TIMBALES[];
8849 static const char FFUUID_AFRICANLOGDRUM[];
8851 static const char FFUUID_APENTEMMA[];
8853 static const char FFUUID_ARABIANFRAMEDRUM[];
8855 static const char FFUUID_ASHIKO[];
8857 static const char FFUUID_ATABAQUE[];
8859 static const char FFUUID_BATA[];
8861 static const char FFUUID_BENDIR[];
8863 static const char FFUUID_BODHRAN[];
8865 static const char FFUUID_BOMBO[];
8867 static const char FFUUID_BOUGARABOU[];
8869 static const char FFUUID_BUFFALODRUM[];
8871 static const char FFUUID_CHENDA[];
8873 static const char FFUUID_CHUDAIKO[];
8875 static const char FFUUID_DABAKAN[];
8877 static const char FFUUID_DAIBYOSI[];
8879 static const char FFUUID_DAMROO[];
8881 static const char FFUUID_DARABUKA[];
8883 static const char FFUUID_DATANGULIONDRUM[];
8885 static const char FFUUID_DHOL[];
8887 static const char FFUUID_DHOLAK[];
8889 static const char FFUUID_DOLLU[];
8891 static const char FFUUID_DONDO[];
8893 static const char FFUUID_DOUNDOUNBA[];
8895 static const char FFUUID_DUFF[];
8897 static const char FFUUID_DUMBEK[];
8899 static const char FFUUID_EWEDRUMKAGAN[];
8901 static const char FFUUID_EWEDRUMKPANLOGO1LARGE[];
8905 static const char FFUUID_EWEDRUMKPANLOGO3COMBO[];
8907 static const char FFUUID_EWEDRUMSOGO[];
8909 static const char FFUUID_FONTOMFROM[];
8911 static const char FFUUID_GEDUK[];
8913 static const char FFUUID_HANDDRUM[];
8915 static const char FFUUID_HIRADAIKO[];
8917 static const char FFUUID_IGIHUMURIZO[];
8919 static const char FFUUID_INGOMA[];
8921 static const char FFUUID_INYAHURA[];
8923 static const char FFUUID_JANGGU[];
8925 static const char FFUUID_KAKKO[];
8927 static const char FFUUID_KANJIRA[];
8929 static const char FFUUID_KENDANGGAMELAN[];
8931 static const char FFUUID_KENKENI[];
8933 static const char FFUUID_KHOL[];
8935 static const char FFUUID_KODAIKO[];
8937 static const char FFUUID_KUDUM[];
8939 static const char FFUUID_LAMBEGDRUM[];
8941 static const char FFUUID_MADAL[];
8943 static const char FFUUID_MADDALE[];
8945 static const char FFUUID_MOROCCODRUM[];
8947 static const char FFUUID_MRIDANGAM[];
8949 static const char FFUUID_NAAL[];
8951 static const char FFUUID_NAGADODAIKO[];
8953 static const char FFUUID_NAGARA[];
8955 static const char FFUUID_NAQARA[];
8957 static const char FFUUID_NATIVELOGDRUM[];
8959 static const char FFUUID_NIGERIANLOGDRUM[];
8961 static const char FFUUID_ODAIKO[];
8963 static const char FFUUID_OKAWA[];
8965 static const char FFUUID_OKEDODAIKO[];
8967 static const char FFUUID_PAHUHULA[];
8969 static const char FFUUID_PAKHAVAJ[];
8971 static const char FFUUID_PANDERO[];
8973 static const char FFUUID_POWWOWDRUM[];
8975 static const char FFUUID_PUEBLODRUM[];
8977 static const char FFUUID_REPINIQUE[];
8979 static const char FFUUID_SABAR[];
8981 static const char FFUUID_SAKARA[];
8983 static const char FFUUID_SAMPHO[];
8985 static const char FFUUID_SANGBAN[];
8987 static const char FFUUID_SHIMEDAIKO[];
8989 static const char FFUUID_SURDO[];
8991 static const char FFUUID_TALKINGDRUM[];
8993 static const char FFUUID_TAMA[];
8995 static const char FFUUID_TAMBORITA[];
8997 static const char FFUUID_TAMTE[];
8999 static const char FFUUID_TANTAN[];
9001 static const char FFUUID_TANGKU[];
9003 static const char FFUUID_TAPHON[];
9006 static const char FFUUID_TARDRUM[];
9008 static const char FFUUID_TASHA[];
9010 static const char FFUUID_THAVIL[];
9012 static const char FFUUID_TOMBAK[];
9014 static const char FFUUID_TUMBAK[];
9016 static const char FFUUID_TSUZUMI[];
9018 static const char FFUUID_UCHIWADAIKO[];
9020 static const char FFUUID_UDAKU[];
9022 static const char FFUUID_ZARB[];
9023
9024 /* Percussion */
9025
9027 static const char FFUUID_PERCUSSIONGENERAL[];
9029 static const char FFUUID_PERCACCESSORIES[];
9031 static const char FFUUID_WINDCHIMES[];
9033 static const char FFUUID_CHIMETREE[];
9035 static const char FFUUID_BELLTREE[];
9037 static const char FFUUID_JINGLEBELLS[];
9039 static const char FFUUID_TAMBOURINE[];
9041 static const char FFUUID_TRIANGLE[];
9043 static const char FFUUID_CYMBALS[];
9045 static const char FFUUID_FINGERCYMBALS[];
9047 static const char FFUUID_CRASHCYMBAL[];
9049 static const char FFUUID_HIHATCYMBAL[];
9051 static const char FFUUID_RIDECYMBAL[];
9053 static const char FFUUID_SPLASHCYMBAL[];
9055 static const char FFUUID_TAMTAM[];
9057 static const char FFUUID_GONG[];
9059 static const char FFUUID_AGOGOBELLS[];
9061 static const char FFUUID_AIRHORN[];
9063 static const char FFUUID_BRAKEDRUM[];
9065 static const char FFUUID_CABASA[];
9067 static const char FFUUID_CAJON[];
9069 static const char FFUUID_CASTANETS[];
9071 static const char FFUUID_CLAP[];
9073 static const char FFUUID_CLAPPER[];
9075 static const char FFUUID_CLAVES[];
9077 static const char FFUUID_COWBELL[];
9079 static const char FFUUID_CUICA[];
9081 static const char FFUUID_GUIRO[];
9083 static const char FFUUID_MARACAS[];
9085 static const char FFUUID_POLICEWHISTLE[];
9087 static const char FFUUID_RAINSTICK[];
9089 static const char FFUUID_RATCHET[];
9091 static const char FFUUID_RATTLE[];
9093 static const char FFUUID_SANDBLOCK[];
9095 static const char FFUUID_SHAKERS[];
9097 static const char FFUUID_SPOONS[];
9099 static const char FFUUID_TEMPLEBLOCKS[];
9101 static const char FFUUID_VIBRASLAP[];
9103 static const char FFUUID_WASHBOARD[];
9105 static const char FFUUID_WHIP[];
9107 static const char FFUUID_WINDMACHINE[];
9109 static const char FFUUID_WOODBLOCKS[];
9111 static const char FFUUID_CENGCENGGAMELAN[];
9113 static const char FFUUID_GONGAGENGGAMELAN[];
9115 static const char FFUUID_KEMPULGAMELAN[];
9117 static const char FFUUID_KEMPYANGGAMELAN[];
9119 static const char FFUUID_KENONGGAMELAN[];
9121 static const char FFUUID_KETUKGAMELAN[];
9123 static const char FFUUID_REYONGGAMELAN[];
9125 static const char FFUUID_ADODO[];
9127 static const char FFUUID_AEOLIANHARP[];
9129 static const char FFUUID_AFOXE[];
9131 static const char FFUUID_AGOGOBLOCK[];
9133 static const char FFUUID_AGUNG[];
9135 static const char FFUUID_AGUNGATAMLANG[];
9137 static const char FFUUID_AHOKO[];
9139 static const char FFUUID_BABENDIL[];
9141 static const char FFUUID_BASICINDIANPERCUSSION[];
9143 static const char FFUUID_BERIMBAU[];
9145 static const char FFUUID_BO[];
9147 static const char FFUUID_BONES[];
9149 static const char FFUUID_BONGOBELLS[];
9151 static const char FFUUID_BULLROARER[];
9153 static const char FFUUID_CAXIXI[];
9155 static const char FFUUID_CHACHABELLS[];
9157 static const char FFUUID_CHABARA[];
9159 static const char FFUUID_CHANCHIKI[];
9161 static const char FFUUID_CHIMTA[];
9163 static const char FFUUID_CHINATEMPLEBLOCKS[];
9165 static const char FFUUID_CHINESECYMBALS[];
9167 static const char FFUUID_CHINESEGONGS[];
9171 static const char FFUUID_CHING[];
9173 static const char FFUUID_CHIPPLI[];
9175 static const char FFUUID_DAFF[];
9177 static const char FFUUID_DAFLI[];
9179 static const char FFUUID_DAWURO[];
9181 static const char FFUUID_DEF[];
9183 static const char FFUUID_DOIRA[];
9185 static const char FFUUID_EWEDRUMATOKE[];
9187 static const char FFUUID_EWEDRUMAXATSE[];
9189 static const char FFUUID_EWEDRUMGANGOKUI[];
9192 static const char FFUUID_FLEXATONE_PERC[];
9194 static const char FFUUID_GANDINGAN[];
9196 static const char FFUUID_GANZA[];
9198 static const char FFUUID_GHATAM[];
9200 static const char FFUUID_GHUNGROO[];
9202 static const char FFUUID_GOME[];
9204 static const char FFUUID_GUBAN[];
9206 static const char FFUUID_HANDCYMBAL[];
9208 static const char FFUUID_HANG[];
9210 static const char FFUUID_HATHELI[];
9212 static const char FFUUID_HOSHO[];
9214 static const char FFUUID_HYOUSHIGI[];
9216 static const char FFUUID_IBO[];
9218 static const char FFUUID_INDIANGONG[];
9220 static const char FFUUID_IPU[];
9222 static const char FFUUID_JAWBONE[];
9224 static const char FFUUID_KAEKEEKE[];
9226 static const char FFUUID_KAGUL[];
9228 static const char FFUUID_KALAAU[];
9230 static const char FFUUID_KASHIKLAR[];
9232 static const char FFUUID_KESI[];
9234 static const char FFUUID_KHARTAL[];
9236 static const char FFUUID_KKWAENGGWARI[];
9238 static const char FFUUID_KPOKOKPOKO[];
9240 static const char FFUUID_KRINSLITDRUM[];
9242 static const char FFUUID_LAVASTONES[];
9244 static const char FFUUID_LUOGONG[];
9246 static const char FFUUID_MANJEERA[];
9248 static const char FFUUID_PANCLAPPERS[];
9250 static const char FFUUID_PATSCHEN[];
9252 static const char FFUUID_RATTLECOG[];
9254 static const char FFUUID_RIQ[];
9256 static const char FFUUID_SHEKERE[];
9258 static const char FFUUID_SISTRE[];
9260 static const char FFUUID_SISTRUM[];
9262 static const char FFUUID_SLIDEWHISTLE_PERCCLEF[];
9264 static const char FFUUID_SLITDRUM[];
9266 static const char FFUUID_SNAP[];
9268 static const char FFUUID_STAMP[];
9270 static const char FFUUID_STIRDRUM[];
9272 static const char FFUUID_TEBYOSHI[];
9274 static const char FFUUID_TELEVI[];
9276 static const char FFUUID_TEPONAXTLI[];
9278 static const char FFUUID_THAIGONG[];
9280 static const char FFUUID_TIBETANCYMBALS[];
9282 static const char FFUUID_TICTOCBLOCK[];
9284 static const char FFUUID_TIMBALEBELL[];
9286 static const char FFUUID_TINAJA[];
9288 static const char FFUUID_TINGSHA[];
9290 static const char FFUUID_TOERE[];
9292 static const char FFUUID_TONETANG[];
9294 static const char FFUUID_TRYCHEL[];
9296 static const char FFUUID_UDU[];
9298 static const char FFUUID_ZILLS[];
9299
9300#endif
9301
9318
9334
9342
9344 ALTSTAFF_NORMAL = FXUseNormalNotation,
9345
9347 ALTSTAFF_SLASHBEATS = FXUseSlashBeatsNotation,
9348
9350 ALTSTAFF_RHYTHMIC = FXUseRhythmicNotation,
9351
9353 ALTSTAFF_ONEBARREPEAT = FXUseOneBarRepeatSymbol,
9354
9356 ALTSTAFF_TWOBARREPEAT = FXUseTwoBarRepeatSymbol,
9357
9360
9362 ALTSTAFF_BLANKNOTATION = FXUseBlankNotation
9364
9384
9386 bool Save() override;
9387
9388 /***********/
9389 /* GETTERS */
9390 /***********/
9391
9396 bool GetIgnoreKeySig() const { return _GetInstFlag(STAFF_NOKEY); }
9397
9402 bool GetIndependentTimeSig() const { return _GetInstFlag(STAFF_FLOATTIME); }
9403
9409 bool GetIndependentKeySig() const { return _GetInstFlag(STAFF_FLOATKEYS); }
9410
9415 bool GetShowMeasureNumbers() const { return !_GetInstFlag(STAFF_NEGMNUMB); }
9416
9422 bool GetShowKeySignatures() const { return !_GetInstFlag(STAFF_NEGKEY); }
9423
9424
9436 {
9437#if FXT_VERSION < FINALEVERSION_25
9438 return !_GetInstFlag(STAFF_NEGTIME); /* 32-bit PDK */
9439#else
9440 return !_GetInstFlag(STAFF_NEGTIME_SCORE); /* This is just a rename of the old STAFF_NEGTIME constant */
9441#endif
9442 }
9443
9452 {
9453 return GetShowTimeSignatures();
9454 }
9455
9469 {
9470#if FXT_VERSION >= FINALEVERSION_25
9471 return !_GetMoreFlags3(STAFF_MF3_NEGTIME_PARTS); /* 64-bit PDK */
9472#else
9473 return GetShowScoreTimeSignatures(); /* 32-bit PDK */
9474#endif
9475 }
9476
9477
9483 bool GetShowClefs() const { return !_GetInstFlag(STAFF_NEGCLEF); }
9484
9490 bool GetShowChords() const { return !_GetInstFlag(0x0002 /*STAFF_HIDE_CHORDS*/); }
9491
9497 bool GetShowBarlines() const { return !_GetInstFlag(STAFF_HIDE_BARLINES); }
9498
9504 bool GetShowTextRepeats() const { return !_GetInstFlag(STAFF_NEGREPEAT); }
9505
9510 bool GetShowRepeats() const { return !_GetInstFlag(STAFF_HIDE_RPT_BARS); }
9511
9516 bool GetShowScoreStaffNames() const { return !_GetInstFlag(STAFF_NEGNAME); }
9517
9522 bool GetBreakBarlines() const { return _GetInstFlag(STAFF_BLINEBREAK); }
9523
9528 bool GetBreakRepeatBarlines() const { return _GetInstFlag(STAFF_RBARBREAK); }
9529
9535 bool GetShowAugmentationDots() const { return _GetMoreFlags(STAFF_MF_SHOW_DOTS); }
9536
9541 bool GetIndependentFont() const { return _GetFlag(STAFF_USESMFONT); }
9542
9547 bool GetShowNoteColors() const { return _GetFlag(STAFF_SHOW_NOTE_COLORS); }
9548
9553 bool GetShowNoteShapes() const { return _GetFlag(STAFF_SF_DOSHAPENOTES); }
9554
9560 twobyte GetHalfRestPosition() const { return LO_ONEBYTE(*_GetHOtherRestPtr()); }
9561
9567 twobyte GetOtherRestPosition() const { return HI_ONEBYTE(*_GetHOtherRestPtr()); }
9568
9574 twobyte GetWholeRestPosition() const { return HI_ONEBYTE(*_GetDwWRestPtr()); }
9575
9581 twobyte GetDoubleWholeRestPosition() const { return LO_ONEBYTE(*_GetDwWRestPtr()); }
9582
9588 twobyte GetStemReversalPosition() const { return *_GetStemReversalPtr(); }
9589
9596 {
9597 return !GetBitFlag(*_GetFlagPtr(), STAFF_HIDE_REPEAT_TOP_DOT);
9598 }
9599
9606 {
9607 return !GetBitFlag(*_GetFlagPtr(), STAFF_HIDE_REPEAT_BOTTOM_DOT);
9608 }
9609
9615 twobyte GetTopRepeatDotPosition() const { return HI_ONEBYTE(*_GetRepeatDotsOffPtr()); }
9616
9622 twobyte GetBottomRepeatDotPosition() const { return LO_ONEBYTE(*_GetRepeatDotsOffPtr()); }
9623
9630 bool GetTransposeChromatic() const { return _GetTranspositionFlag(STAFF_CHROMTRANS); }
9631
9638 bool GetTransposeUseClef() const { return _GetTranspositionFlag(STAFF_SETTOCLEF); }
9639
9645 bool GetShowLyrics() const { return !_GetFlag(0x0010 /*STAFF_HIDE_LYRICS*/); }
9646
9651 bool GetShowRests() const { return _GetMoreFlags(STAFF_MF_SHOW_RESTS); }
9652
9657 bool GetShowPartStaffNames() const { return _GetFlag(0x0008 /*STAFF_SHOWNAME_PARTS*/); }
9658
9663 bool GetShowStems() const { return _GetMoreFlags(STAFF_MF_SHOW_STEMS); }
9664
9671 bool GetShowBeams() const { return _GetMoreFlags(STAFF_MF_SHOW_BEAMS); }
9672
9677#ifndef PDK_FRAMEWORK_LUAFRIENDLY
9679#else
9680 twobyte
9681#endif
9683 {
9684 switch(*_GetMoreFlagsPtr() & STAFF_MF_STEM_DIR_MASK)
9685 {
9686 case STAFF_MF_STEM_DIR_ALWAYS_UP:
9688 case STAFF_MF_STEM_DIR_ALWAYS_DOWN:
9690 case STAFF_MF_STEM_DIR_DEFAULT:
9691 default:
9692 return STAFFSTEMDIR_DEFAULT;
9693 }
9694 }
9695
9700 bool GetStemsUseVerticalOffsetForNoteheadEnd() const { return _GetMoreFlags(STAFF_MF_STEMS_FIXED_START); }
9701
9711 bool GetStemsNoteheadEndFixedToStaff() const { return _GetMoreFlags(STAFF_MF_STEM_STRT_FROM_STAFF); }
9712
9717 bool GetStemsUseVerticalOffsetForBeamEnd() const { return _GetMoreFlags(STAFF_MF_STEMS_FIXED_END); }
9718
9723 Efix32 GetStemsUpHorizontalOffset() const { return *_GetHorzStemOffUpPtr(); }
9724
9729 Efix32 GetStemsDownHorizontalOffset() const { return *_GetHorzStemOffDownPtr(); }
9730
9735 Efix32 GetStemsUpVerticalOffsetForNoteheadEnd() const { return *_GetVertStemStartOffUpPtr(); }
9736
9741 Efix32 GetStemsDownVerticalOffsetForNoteheadEnd() const { return *_GetVertStemStartOffDownPtr(); }
9742
9747 Efix32 GetStemsUpVerticalOffsetForBeamEnd() const { return *_GetVertStemEndOffUpPtr(); }
9748
9753 Efix32 GetStemsDownVerticalOffsetForBeamEnd() const { return *_GetVertStemEndOffDownPtr(); }
9754
9759 bool GetShowTies() const { return _GetMoreFlags(STAFF_MF_SHOW_TIES); }
9760
9767 {
9768 return _GetAltFlag(STAFF_ALT_SHOWOTHERNOTES);
9769 }
9770
9777 bool GetTransposeSimplifyKey() const { return !_GetTranspositionFlag(STAFF_NOKEYOPT); }
9778
9783 bool GetDisplayEmptyRests() const { return !_GetFlag(STAFF_BLANKMEASURE); }
9784
9789 bool GetFlatBeams() const { return _GetFlag(STAFF_FLAT_BEAMS); }
9790
9795 bool GetShowTuplets() const
9796 {
9797 return _GetMoreFlags(STAFF_MF_SHOW_TUPLETS);
9798 }
9799
9805 {
9806 return _GetMoreFlags(STAFF_MF_CLEF_FIRST_MEAS_ONLY);
9807 }
9808
9813 bool GetFretLetters() const
9814 {
9815 return _GetMoreFlags(STAFF_MF_USE_TAB_LETTERS);
9816 }
9817
9823 {
9824 return _GetMoreFlags(STAFF_MF_BREAK_LINES_AT_NOTES);
9825 }
9826
9832 bool GetShowFretboards() const { return !_GetFlag(0x0800 /*STAFF_HIDE_FRETBOARDS*/); }
9833
9838#ifndef PDK_FRAMEWORK_LUAFRIENDLY
9840#else
9841 int
9842#endif
9844 {
9845 if (_GetFlag(STAFF_DOPERCUSSIONNOTES)) return STAFFNOTATION_PERCUSSION;
9846 if (_GetFlag(STAFF_TABNOTES)) return STAFFNOTATION_TABLATURE;
9847 return STAFFNOTATION_NORMAL;
9848 }
9849
9856 bool GetAllowHiding() const;
9857
9865 twobyte GetTransposeInterval() const;
9866
9874 bool GetShowStaffLines() const;
9875
9883 twobyte GetLineCount() const;
9884
9891 Efix32 GetLineSpacing() const
9892 {
9893 return *_GetLineSpacePtr();
9894 }
9895
9900#ifndef PDK_FRAMEWORK_LUAFRIENDLY
9901 __FCStaffBase::ALTERNATE_STAFF GetAltNotationStyle() { return (__FCStaffBase::ALTERNATE_STAFF) (*_GetAltFlagPtr() & STAFF_ALTNOTATION); }
9902#else
9903 FLAG_16 GetAltNotationStyle() const { return *_GetAltFlagPtr() & STAFF_ALTNOTATION; }
9904#endif
9905
9910 twobyte GetAltNotationLayer() const {
9911 return ((*_GetAltFlagPtr() & STAFF_ALTLAYER) >> 4) + 1;
9912 }
9913
9918 bool GetAltShowArticulations() const { return GetBitFlag(*_GetAltFlagPtr(), STAFF_ALT_SHOWARTICS); }
9919
9924 bool GetAltShowLyrics() const { return GetBitFlag(*_GetAltFlagPtr(), STAFF_ALT_SHOWLYRICS); }
9925
9930 bool GetAltShowSmartShapes() const { return GetBitFlag(*_GetAltFlagPtr(), STAFF_ALT_SHOWSMARTSHAPES); }
9931
9936 bool GetAltShowExpression() const { return GetBitFlag(*_GetAltFlagPtr(), STAFF_ALT_SHOWEXPRESSIONS); }
9937
9942 bool GetAltShowOtherNotes() const { return GetBitFlag(*_GetAltFlagPtr(), STAFF_ALT_SHOWOTHERNOTES); }
9943
9948 bool GetAltShowOtherArticulations() const { return GetBitFlag(*_GetAltFlagPtr(), STAFF_ALT_SHOWOTHERARTICS); }
9949
9954 bool GetAltShowOtherLyrics() const { return GetBitFlag(*_GetAltFlag2Ptr(), STAFF_ALT2_SHOWOTHERLYRICS); }
9955
9960 bool GetAltShowOtherSmartShapes() const { return GetBitFlag(*_GetAltFlag2Ptr(), STAFF_ALT2_SHOWOTHERSMARTSHAPES); }
9961
9966 bool GetAltShowOtherExpressions() const { return GetBitFlag(*_GetAltFlag2Ptr(), STAFF_ALT2_SHOWOTHEREXPRESSIONS); }
9967
9973 bool GetAltRhythmStemsUp() const { return GetBitFlag(*_GetAltFlagPtr(), STAFF_ALT_RHYTHM_STEMS_UP); }
9974
9980 bool GetAltSlashDots() const { return GetBitFlag(*_GetAltFlagPtr(), STAFF_ALT_SLASH_DOTS); }
9981
9989 twobyte GetTransposeClefIndex() const { return (*_GetClefsPtr() & 0xff00) / 0x100; }
9990
9995 twobyte GetDefaultClef() const { return *_GetClefsPtr() & 0xff; }
9996
10005#ifndef PDK_FRAMEWORK_LUAFRIENDLY
10007#else
10008 int
10009#endif
10010 GetHideMode() const;
10011
10019 {
10020 const FLAG_16 *pMoreFlags3 = _GetMoreFlags3Ptr();
10021 if ( !pMoreFlags3 ) return false;
10022 return (_GetMoreFlags3(0x0001 /* STAFF_MF3_REDISPLAY_LAYER_ACCIS */));
10023 }
10024
10032 {
10033 const FLAG_16 *pMoreFlags2 = _GetMoreFlags2Ptr();
10034 if ( !pMoreFlags2 ) return false;
10035 return (_GetMoreFlags2(0x0001 /*STAFF_MF2_HIDE_KEYSIG_SHOW_ACCIS*/));
10036 }
10037
10047 CMPER GetAbbreviatedNameID() { return *_GetAbbrvNamePtr(); }
10048
10058 CMPER GetFullNameID() { return *_GetFullNamePtr(); }
10059
10060#ifdef PDK_FRAMEWORK_PREFS
10074
10088#endif
10089
10094 twobyte GetCapoPosition() const
10095 {
10096 return LOBYTE(*_GetCapoLowFretPtr());
10097 }
10098
10103 twobyte GetLowestFret() const
10104 {
10105 return HIBYTE(*_GetCapoLowFretPtr());
10106 }
10107
10116 {
10117 return *_GetVertTabNumOffPtr();
10118 }
10119
10126 {
10127 return *_GetFretInstIDPtr();
10128 }
10129
10136 {
10137 return *_GetBottomBarlineOffsetPtr();
10138 }
10139
10145 Evpu16 GetTopBarlineOffset() const
10146 {
10147 return *_GetTopBarlineOffsetPtr();
10148 }
10149
10150#if FXT_VERSION >= FINALEVERSION_2012
10161 const char* GetInstrumentUUID() const
10162 {
10163 if (_VersionToUse() < FINALEVERSION_2012) return "";
10164 _uuid.Clear();
10165
10166 const uonebyte* pInstUUID = _GetInstUUIDPtr();
10167 for (int i = 0; i < UUID_SIZE_PDK; i++)
10168 {
10169 uonebyte abyte = pInstUUID[i];
10170 int highnibble = (abyte & 0xf0) >> 4;
10171 int lownibble = (abyte & 0x0f);
10172 if (highnibble < 10)
10173 _uuid.AppendCharacter(highnibble + '0');
10174 else
10175 _uuid.AppendCharacter(highnibble + 'a' - 10);
10176 if (lownibble < 10)
10177 _uuid.AppendCharacter(lownibble + '0');
10178 else
10179 _uuid.AppendCharacter(lownibble + 'a' - 10);
10180 switch (i)
10181 {
10182 case 3:
10183 case 5:
10184 case 7:
10185 case 9:
10186 _uuid.AppendCharacter('-');
10187 break;
10188 }
10189 }
10190 return _uuid.GetCString();
10191 }
10192#endif
10193
10194 /***********/
10195 /* SETTERS */
10196 /***********/
10197
10202 void SetIgnoreKeySig(bool state) { return _SetInstFlag(STAFF_NOKEY, state); }
10203
10208 void SetIndependentTimeSig(bool state) { _SetInstFlag(STAFF_FLOATTIME, state); }
10209
10214 void SetShowMeasureNumbers(bool value) { _SetInstFlag(STAFF_NEGMNUMB, !value); }
10215
10221 void SetShowKeySignatures(bool value) { _SetInstFlag(STAFF_NEGKEY, !value); }
10222
10231 void SetShowTimeSignatures(bool value)
10232 {
10235 }
10236
10246 {
10247#if FXT_VERSION < FINALEVERSION_25
10248 _SetInstFlag(STAFF_NEGTIME, !value); /* 32-bit PDK */
10249#else
10250 _SetInstFlag(STAFF_NEGTIME_SCORE, !value); /* 64-bit PDK */
10251#endif
10252 }
10253
10262 {
10263#if FXT_VERSION >= FINALEVERSION_25
10264 _SetMoreFlags3(STAFF_MF3_NEGTIME_PARTS, !value);
10265#endif
10266 }
10267
10273 void SetShowClefs(bool value) { _SetInstFlag(STAFF_NEGCLEF, !value); }
10274
10280 void SetShowChords(bool value) { _SetInstFlag(0x0002 /*STAFF_HIDE_CHORDS*/, !value); }
10281
10287 void SetShowBarlines(bool value) { _SetInstFlag(STAFF_HIDE_BARLINES, !value); }
10288
10294 void SetShowTextRepeats(bool value) { _SetInstFlag(STAFF_NEGREPEAT, !value); }
10295
10300 void SetShowRepeats(bool value) { _SetInstFlag(STAFF_HIDE_RPT_BARS, !value); }
10301
10306 void SetShowScoreStaffNames(bool value) { _SetInstFlag(STAFF_NEGNAME, !value); }
10307
10312 void SetBreakBarlines(bool state) { _SetInstFlag(STAFF_BLINEBREAK, state); }
10313
10318 void SetBreakRepeatBarlines(bool state) { _SetInstFlag(STAFF_RBARBREAK, state); }
10319
10325 void SetShowAugmentationDots(bool value) { _SetMoreFlags(STAFF_MF_SHOW_DOTS, value); }
10326
10331 void SetIndependentFont(bool state) { _SetFlag(STAFF_USESMFONT, state); }
10332
10337 void SetShowNoteColors(bool state) { _SetFlag(STAFF_SHOW_NOTE_COLORS, state); }
10338
10343 void SetShowNoteShapes(bool state) { _SetFlag(STAFF_SF_DOSHAPENOTES, state); }
10344
10350 void SetHalfRestPosition(twobyte position)
10351 {
10352 *const_cast<twobyte*>(_GetHOtherRestPtr()) = MAKE_TWOBYTE(position, HI_ONEBYTE(*_GetHOtherRestPtr()));
10353 }
10354
10360 void SetOtherRestPosition(twobyte position)
10361 {
10362 *const_cast<twobyte*>(_GetHOtherRestPtr()) = MAKE_TWOBYTE(LO_ONEBYTE(*_GetHOtherRestPtr()), position);
10363 }
10364
10370 void SetWholeRestPosition(twobyte position)
10371 {
10372 *const_cast<twobyte*>(_GetDwWRestPtr()) = MAKE_TWOBYTE(LO_ONEBYTE(*_GetDwWRestPtr()), position);
10373 }
10374
10380 void SetDoubleWholeRestPosition(twobyte position)
10381 {
10382 *const_cast<twobyte*>(_GetDwWRestPtr()) = MAKE_TWOBYTE(position, HI_ONEBYTE(*_GetDwWRestPtr()));
10383 }
10384
10390 void SetStemReversalPosition(twobyte position)
10391 {
10392 twobyte* pStemReversal = (twobyte*) _GetStemReversalPtr();
10393 *pStemReversal = position;
10394 }
10395
10401 void SetShowTopRepeatDot(bool state)
10402 {
10403 Set16BitFlag((FLAG_16*)_GetFlagPtr(), STAFF_HIDE_REPEAT_TOP_DOT, !state);
10404 }
10405
10411 void SetShowBottomRepeatDot(bool state)
10412 {
10413 Set16BitFlag((FLAG_16*)_GetFlagPtr(), STAFF_HIDE_REPEAT_BOTTOM_DOT, !state);
10414 }
10415
10421 void SetTopRepeatDotPosition(twobyte position)
10422 { *const_cast<twobyte*>(_GetRepeatDotsOffPtr()) = MAKE_TWOBYTE(LO_ONEBYTE(*_GetRepeatDotsOffPtr()), position); }
10423
10429 void SetBottomRepeatDotPosition(twobyte position)
10430 { *const_cast<twobyte*>(_GetRepeatDotsOffPtr()) = MAKE_TWOBYTE(position, HI_ONEBYTE(*_GetRepeatDotsOffPtr())); }
10431
10444 void SetTransposeChromatic(bool state) { _SetTranspositionFlag(STAFF_CHROMTRANS, state); }
10445
10452 void SetTransposeUseClef(bool state) { _SetTranspositionFlag(STAFF_SETTOCLEF, state); }
10453
10459 void SetShowFretboards(bool value) { _SetFlag(0x0800 /*STAFF_HIDE_FRETBOARDS*/, !value); }
10460
10466 void SetShowLyrics(bool value) { _SetFlag(0x0010 /*STAFF_HIDE_LYRICS*/, !value); }
10467
10472 void SetShowRests(bool value) { _SetMoreFlags(STAFF_MF_SHOW_RESTS, value); }
10473
10478 void SetShowPartStaffNames(bool value) { _SetFlag(0x0008 /*STAFF_SHOWNAME_PARTS*/, value); }
10479
10484 void SetShowStems(bool value) { _SetMoreFlags(STAFF_MF_SHOW_STEMS, value); }
10485
10492 void SetShowBeams(bool value) { _SetMoreFlags(STAFF_MF_SHOW_BEAMS, value); }
10493
10499#ifndef PDK_FRAMEWORK_LUAFRIENDLY
10501#else
10502 twobyte
10503#endif
10504 value)
10505 {
10506 FLAG_16 mask = 0;
10507 switch (value)
10508 {
10510 mask = STAFF_MF_STEM_DIR_ALWAYS_UP;
10511 break;
10513 mask = STAFF_MF_STEM_DIR_ALWAYS_DOWN;
10514 break;
10515 default:
10517 mask = STAFF_MF_STEM_DIR_DEFAULT;
10518 break;
10519 }
10520 *const_cast<FLAG_16*>(_GetMoreFlagsPtr()) = (*_GetMoreFlagsPtr() & ~STAFF_MF_STEM_DIR_MASK) | mask;
10521 }
10522
10527 void SetStemsUseVerticalOffsetForNoteheadEnd(bool value) { _SetMoreFlags(STAFF_MF_STEMS_FIXED_START, value); }
10528
10538 void SetStemsNoteheadEndFixedToStaff(bool value) { _SetMoreFlags(STAFF_MF_STEM_STRT_FROM_STAFF, value); }
10539
10544 void SetStemsUseVerticalOffsetForBeamEnd(bool value) { _SetMoreFlags(STAFF_MF_STEMS_FIXED_END, value); }
10545
10550 void SetStemsUpHorizontalOffset(Efix32 value) { *const_cast<Efix32*>(_GetHorzStemOffUpPtr()) = value; }
10551
10556 void SetStemsDownHorizontalOffset(Efix32 value) { *const_cast<Efix32*>(_GetHorzStemOffDownPtr()) = value; }
10557
10562 void SetStemsUpVerticalOffsetForNoteheadEnd(Efix32 value) { *const_cast<Efix32*>(_GetVertStemStartOffUpPtr()) = value; }
10563
10568 void SetStemsDownVerticalOffsetForNoteheadEnd(Efix32 value) { *const_cast<Efix32*>(_GetVertStemStartOffDownPtr()) = value; }
10569
10574 void SetStemsUpVerticalOffsetForBeamEnd(Efix32 value) { *const_cast<Efix32*>(_GetVertStemEndOffUpPtr()) = value; }
10575
10580 void SetStemsDownVerticalOffsetForBeamEnd(Efix32 value) { *const_cast<Efix32*>(_GetVertStemEndOffDownPtr()) = value; }
10581
10586 void SetShowTies(bool state) { _SetMoreFlags(STAFF_MF_SHOW_TIES, state); }
10587
10593 {
10594 _SetAltFlag(STAFF_ALT_SHOWOTHERNOTES, state);
10595 }
10596
10603 void SetTransposeSimplifyKey(bool state) { _SetTranspositionFlag(STAFF_NOKEYOPT, !state); }
10604
10609 void SetDisplayEmptyRests(bool state) { _SetFlag(STAFF_BLANKMEASURE, !state); }
10610
10615 void SetFlatBeams(bool state) { _SetFlag(STAFF_FLAT_BEAMS, state); }
10616
10621 void SetShowTuplets(bool state)
10622 {
10623 _SetMoreFlags(STAFF_MF_SHOW_TUPLETS, state);
10624 }
10625
10631 {
10632 _SetMoreFlags(STAFF_MF_CLEF_FIRST_MEAS_ONLY, state);
10633 }
10634
10639 void SetFretLetters(bool state)
10640 {
10641 _SetMoreFlags(STAFF_MF_USE_TAB_LETTERS, state);
10642 }
10643
10648 void SetBreakTablatureLines(bool state)
10649 {
10650 _SetMoreFlags(STAFF_MF_BREAK_LINES_AT_NOTES, state);
10651 }
10652
10662#ifndef PDK_FRAMEWORK_LUAFRIENDLY
10664#else
10665 int
10666#endif
10667 value)
10668 {
10669 switch (value)
10670 {
10672 _SetFlag(STAFF_DOPERCUSSIONNOTES, true);
10673 _SetFlag(STAFF_TABNOTES, false);
10674 break;
10676 _SetFlag(STAFF_DOPERCUSSIONNOTES, false);
10677 _SetFlag(STAFF_TABNOTES, true);
10678 break;
10680 _SetFlag(STAFF_DOPERCUSSIONNOTES, false);
10681 _SetFlag(STAFF_TABNOTES, false);
10682 break;
10683 }
10684 }
10685
10691 void SetIndependentKeySig(bool state) { _SetInstFlag(STAFF_FLOATKEYS, state); }
10692
10699 void SetAllowHiding(bool state);
10700
10710 twobyte GetTransposeAlteration() const;
10711
10721 void SetTransposeAlteration(twobyte value);
10722
10732 void SetTransposeInterval(twobyte value);
10733
10741 void SetShowStaffLines(bool value);
10742
10750 void SetLineCount(twobyte value);
10751
10758 void SetLineSpacing(Efix32 distance)
10759 {
10760 Efix32* pStorage = (Efix32*) _GetLineSpacePtr();
10761 *pStorage = (distance / 64) * 64;
10762 }
10763
10771#ifndef PDK_FRAMEWORK_LUAFRIENDLY
10772 ALTERNATE_STAFF value
10773#else
10774 FLAG_16 value
10775#endif
10776 )
10777 {
10778 FLAG_16* pAltFlag = (FLAG_16*)_GetAltFlagPtr();
10779 *pAltFlag &= ~STAFF_ALTNOTATION;
10780 *pAltFlag |= value;
10781 }
10782
10789 void SetAltNotationLayer(int value)
10790 {
10791 if (value < 1) return;
10792 if (value > FX_GetMaxLayers()) return;
10793 value--;
10794 value = value << 4;
10795 FLAG_16* pAltFlag = (FLAG_16*) _GetAltFlagPtr();
10796 *pAltFlag &= ~STAFF_ALTLAYER;
10797 *pAltFlag |= value;
10798 }
10799
10804 void SetAltShowArticulations(bool state) { Set16BitFlag((FLAG_16*) _GetAltFlagPtr(), STAFF_ALT_SHOWARTICS, state); }
10805
10810 void SetAltShowLyrics(bool state) { Set16BitFlag((FLAG_16*) _GetAltFlagPtr(), STAFF_ALT_SHOWLYRICS, state); }
10811
10816 void SetAltShowSmartShapes(bool state) { Set16BitFlag((FLAG_16*) _GetAltFlagPtr(), STAFF_ALT_SHOWSMARTSHAPES, state); }
10817
10822 void SetAltShowExpression(bool state) { Set16BitFlag((FLAG_16*) _GetAltFlagPtr(), STAFF_ALT_SHOWEXPRESSIONS, state); }
10823
10828 void SetAltShowOtherNotes(bool state) { Set16BitFlag((FLAG_16*) _GetAltFlagPtr(), STAFF_ALT_SHOWOTHERNOTES, state); }
10829
10834 void SetAltShowOtherArticulations(bool state) { Set16BitFlag((FLAG_16*) _GetAltFlagPtr(), STAFF_ALT_SHOWOTHERARTICS, state); }
10835
10840 void SetAltShowOtherLyrics(bool state) { Set16BitFlag((FLAG_16*) _GetAltFlag2Ptr(), STAFF_ALT2_SHOWOTHERLYRICS, state); }
10841
10846 void SetAltShowOtherSmartShapes(bool state) { Set16BitFlag((FLAG_16*) _GetAltFlag2Ptr(), STAFF_ALT2_SHOWOTHERSMARTSHAPES, state); }
10847
10852 void SetAltShowOtherExpressions(bool state) { Set16BitFlag((FLAG_16*) _GetAltFlag2Ptr(), STAFF_ALT2_SHOWOTHEREXPRESSIONS, state); }
10853
10859 void SetAltRhythmStemsUp(bool state) { Set16BitFlag((FLAG_16*) _GetAltFlagPtr(), STAFF_ALT_RHYTHM_STEMS_UP, state); }
10860
10866 void SetAltSlashDots(bool state) { Set16BitFlag((FLAG_16*) _GetAltFlagPtr(), STAFF_ALT_SLASH_DOTS, state); }
10867
10876 void SetHideMode(
10877#ifndef PDK_FRAMEWORK_LUAFRIENDLY
10879#else
10880 int
10881#endif
10882 value
10883 );
10884
10892 void SetTransposeClefIndex(twobyte clefindex)
10893 {
10894 clefindex &= 0x00ff;
10895 clefindex *= 0x100;
10896 twobyte* pClefs = (twobyte*)_GetClefsPtr();
10897 *pClefs &= 0x00ff;
10898 *pClefs |= clefindex;
10899 }
10900
10905 void SetDefaultClef(twobyte clefindex)
10906 {
10907 clefindex &= 0xff;
10908 twobyte* pClefs = (twobyte*) _GetClefsPtr();
10909 *pClefs &= ~0xff;
10910 *pClefs |= clefindex;
10911 }
10912
10920 {
10921 const FLAG_16 *pMoreFlags3 = _GetMoreFlags3Ptr();
10922 if ( !pMoreFlags3 ) return;
10923 _SetMoreFlags3(0x0001 /*STAFF_MF3_REDISPLAY_LAYER_ACCIS*/,state);
10924 }
10925
10933 {
10934 const FLAG_16 *pMoreFlags2 = _GetMoreFlags2Ptr();
10935 if ( !pMoreFlags2 ) return;
10936 _SetMoreFlags2(0x0001 /*STAFF_MF2_HIDE_KEYSIG_SHOW_ACCIS*/,state);
10937 }
10938
10943 void SetLowestFret(twobyte value)
10944 {
10945 BYTE lobyte = LOBYTE(*_GetCapoLowFretPtr());
10946 utwobyte* pCapoLowFret = (utwobyte*) _GetCapoLowFretPtr();
10947 *pCapoLowFret = MAKEWORD(lobyte, value);
10948 }
10949
10956 void SetCapoPosition(twobyte value)
10957 {
10958 BYTE hibyte = HIBYTE(*_GetCapoLowFretPtr());
10959 utwobyte* pCapoLowFret = (utwobyte*) _GetCapoLowFretPtr();
10960 *pCapoLowFret = MAKEWORD(value, hibyte);
10961 }
10962
10970 void SetVerticalFretOffset(Efix32 value)
10971 {
10972 Efix32* pVertTabNumOff = (Efix32*) _GetVertTabNumOffPtr();
10973 *pVertTabNumOff = value;
10974 }
10975
10982 void SetFretInstrumentDefID(CMPER newid)
10983 {
10984 CMPER* pFretInstID = (CMPER*) _GetFretInstIDPtr();
10985 *pFretInstID = newid;
10986 }
10987
10993 void SetBottomBarlineOffset(Evpu16 distance)
10994 {
10995 Evpu16* pData = (Evpu16*) _GetBottomBarlineOffsetPtr();
10996 *pData = distance;
10997 }
10998
11004 void SetTopBarlineOffset(Evpu16 distance)
11005 {
11006 Evpu16* pData = (Evpu16*) _GetTopBarlineOffsetPtr();
11007 *pData = distance;
11008 }
11009
11010#if FXT_VERSION >= FINALEVERSION_2012
11025 void SetInstrumentUUID(const char* pszUUID)
11026 {
11027 if (_VersionToUse() < FINALEVERSION_2012) return;
11028 if (!pszUUID) return;
11029 if (strlen(pszUUID) != 36) return; /* Wrong string format */
11030 if (pszUUID[8] != '-') return; /* No first dash */
11031 if (pszUUID[13] != '-') return; /* No second dash */
11032 if (pszUUID[18] != '-') return; /* No third dash */
11033 if (pszUUID[23] != '-') return; /* No fourth dash */
11034 for (int i = 0; i < 36; i++)
11035 {
11036 switch (i)
11037 {
11038 case 8:
11039 case 13:
11040 case 18:
11041 case 23:
11042 if (pszUUID[i] != '-') return;
11043 break;
11044 default:
11045 if ((pszUUID[i] >= 'a') && (pszUUID[i] <= 'f')) break;
11046 if ((pszUUID[i] >= '0') && (pszUUID[i] <= '9')) break;
11047 return;
11048 }
11049 }
11050 /* UUID validation ok - store the UUID */
11051 const char* pszCurrent = pszUUID;
11052 for (int i = 0; i < UUID_SIZE_PDK; i++)
11053 {
11054 int result1, result2;
11055 if (*pszCurrent >= 'a') result1 = *pszCurrent - 'a' + 10;
11056 else if (*pszCurrent >= 'A') result1 = *pszCurrent - 'A' + 10;
11057 else result1 = *pszCurrent - '0';
11058 pszCurrent ++;
11059 if (*pszCurrent >= 'a') result2 = *pszCurrent - 'a' + 10;
11060 else if (*pszCurrent >= 'A') result2 = *pszCurrent - 'A' + 10;
11061 else result2 = *pszCurrent - '0';
11062 int result = (result1 * 0x10) | result2;
11063 uonebyte* pInstUUID = (uonebyte*) _GetInstUUIDPtr();
11064 pInstUUID[i] = result;
11065 pszCurrent ++;
11066 if ((i == 3) || (i == 5) || (i == 7) || (i == 9)) pszCurrent ++;
11067 }
11068 }
11069#endif
11070
11071 /****************/
11072 /* MISC METHODS */
11073 /****************/
11074
11080 {
11081 _SetFlag(STAFF_DOPERCUSSIONNOTES, false);
11082 _SetFlag(STAFF_TABNOTES, false);
11083 }
11084
11091 {
11093 }
11094
11101 {
11103 }
11104
11110 {
11112 }
11113
11119 bool GetTranspose() const
11120 {
11121 /* Fix Oct 22, 2012: STAFF_NOKEYOPT might be set even if no transposition
11122 * is used */
11123 return ((*_GetTranspositionPtr() & ~STAFF_NOKEYOPT) != 0);
11124 }
11125
11134 int CalcTopStaffLinePosition(bool forledgerlines = false) const;
11135
11144 int CalcBottomStaffLinePosition(bool forledgerlines = false) const;
11145
11153 bool SaveFullNameString(FCString* pString);
11154
11162 bool SaveAbbreviatedNameString(FCString* pString);
11163
11169 bool SaveNewFullNameString(FCString* pString);
11170
11177
11198
11220
11242
11264
11273 {
11274 FCFontInfo* retval = new FCFontInfo();
11275 retval->SetFontID(*_GetMFontPtr());
11276 retval->SetNameByID(*_GetMFontPtr());
11277 retval->SetSize(HIBYTE(*_GetSizeEfxPtr()));
11278 retval->SetEnigmaStyles(LOBYTE(*_GetSizeEfxPtr()));
11279 return retval;
11280 }
11281
11282
11283#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
11285 luabridge::RefCountedPtr<FCFontInfo> CreateIndependentFontInfo_GC() const
11286 { return makeLuaSharedPtr(CreateIndependentFontInfo()); }
11287#endif
11288
11295 {
11296 *const_cast<EFONTID*>(_GetMFontPtr()) = font.GetIDByName();
11297 *const_cast<twobyte*>(_GetSizeEfxPtr()) = MAKE_TWOBYTE(font.GetEnigmaStyles(), font.GetSize());
11298 }
11299
11309
11310#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
11312 luabridge::RefCountedPtr<FCString> CreateFullNameString_GC()
11313 { return makeLuaSharedPtr(CreateFullNameString()); }
11314#endif
11315
11325
11326#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
11328 luabridge::RefCountedPtr<FCString> CreateAbbreviatedNameString_GC()
11329 { return makeLuaSharedPtr(CreateAbbreviatedNameString()); }
11330#endif
11331
11332#ifdef PDK_FRAMEWORK_ENIGMASTRINGS
11349
11350#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
11352 luabridge::RefCountedPtr<FCString> CreateDisplayFullNameString_GC()
11353 { return makeLuaSharedPtr(CreateDisplayFullNameString()); }
11354#endif
11355
11370
11371#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
11373 luabridge::RefCountedPtr<FCString> CreateDisplayAbbreviatedNameString_GC()
11374 { return makeLuaSharedPtr(CreateDisplayAbbreviatedNameString()); }
11375#endif
11376
11386
11387#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
11389 luabridge::RefCountedPtr<FCString> CreateTrimmedFullNameString_GC()
11390 { return makeLuaSharedPtr(CreateTrimmedFullNameString()); }
11391#endif
11392
11402
11403#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
11405 luabridge::RefCountedPtr<FCString> CreateTrimmedAbbreviatedNameString_GC()
11406 { return makeLuaSharedPtr(CreateTrimmedAbbreviatedNameString()); }
11407#endif
11408
11409#endif /* #ifdef PDK_FRAMEWORK_ENIGMASTRINGS */
11410
11411
11412#if FXT_VERSION >= FINALEVERSION_2012
11422 bool InstrumentMatchesUUID(const char* pszUUID)
11423 {
11424 if (_VersionToUse() < FINALEVERSION_2012) return false;
11425 uonebyte* pInstUUID = (uonebyte*) _GetInstUUIDPtr();
11426
11427 if (strlen(pszUUID) != 36) return false; /* Wrong string format */
11428 if (pszUUID[8] != '-') return false; /* No first dash */
11429 if (pszUUID[13] != '-') return false; /* No second dash */
11430 if (pszUUID[18] != '-') return false; /* No third dash */
11431 if (pszUUID[23] != '-') return false; /* No fourth dash */
11432 const char* pszCurrent = pszUUID;
11433 for (int i = 0; i < UUID_SIZE_PDK; i++)
11434 {
11435 int result1, result2;
11436 if (*pszCurrent >= 'a') result1 = *pszCurrent - 'a' + 10;
11437 else if (*pszCurrent >= 'A') result1 = *pszCurrent - 'A' + 10;
11438 else result1 = *pszCurrent - '0';
11439 pszCurrent ++;
11440 if (*pszCurrent >= 'a') result2 = *pszCurrent - 'a' + 10;
11441 else if (*pszCurrent >= 'A') result2 = *pszCurrent - 'A' + 10;
11442 else result2 = *pszCurrent - '0';
11443 int result = (result1 * 0x10) | result2;
11444 if (result != pInstUUID[i]) return false;
11445 pszCurrent ++;
11446 if ((i == 3) || (i == 5) || (i == 7) || (i == 9)) pszCurrent ++;
11447 }
11448 return true;
11449 }
11450#endif
11451
11452#if FXT_VERSION >= FINALEVERSION_2012
11466 {
11467 if (_VersionToUse() < FINALEVERSION_2012) return false;
11468 uonebyte* pInstUUID = (uonebyte*) _GetInstUUIDPtr();
11469 bool blockisempty = true;
11470 for (int i = 0; i < UUID_SIZE_PDK; i++) if (pInstUUID[i]) blockisempty = false;
11471 if (blockisempty) return false;
11472 if (InstrumentMatchesUUID(FFUUID_BLANKSTAFF)) return false;
11473 if (InstrumentMatchesUUID(FFUUID_UNKNOWN)) return false;
11474 return true;
11475 }
11476#endif
11477
11478
11479};
11480
11481
11482/* Macro to only refer to the EDTStaffSpec2012 on 2012 PDKs and later. */
11483#if FXT_VERSION >= FINALEVERSION_2012
11484#define PROTECTED2012STAFFSPEC(code) code
11485#else
11486#define PROTECTED2012STAFFSPEC(code)
11487#endif
11488
11489/* Macro to only refer to the EDTStaffSpec2014 on 2014 PDKs and later. */
11490#if FXT_VERSION >= FINALEVERSION_2014
11491#define PROTECTED2014STAFFSPEC(code) code
11492#else
11493#define PROTECTED2014STAFFSPEC(code)
11494#endif
11495
11496
11503{
11504 const bool _skipWorkaround;
11505
11506 void _InitEDTStructs()
11507 {
11508 int size = 0;
11509 switch (_VersionToUse())
11510 {
11511 case FINALEVERSION_2010:
11512 size = sizeof(_staffspec2010);
11513 memset(&_staffspec2010, 0, size);
11514 break;
11515 case FINALEVERSION_2012:
11516 PROTECTED2012STAFFSPEC(size = sizeof(_staffspec2012);)
11517 PROTECTED2012STAFFSPEC(memset(&_staffspec2012, 0, size));
11518 break;
11519 default:
11520 PROTECTED2014STAFFSPEC(size = sizeof(_staffspec2014);)
11521 PROTECTED2014STAFFSPEC(memset(&_staffspec2014, 0, size));
11522 break;
11523 }
11524 }
11525
11526protected:
11527#ifndef DOXYGEN_SHOULD_IGNORE_THIS
11534 EDTStaffSpec2010 _staffspec2010;
11535 PROTECTED2012STAFFSPEC(EDTStaffSpec2012 _staffspec2012;)
11536 PROTECTED2014STAFFSPEC(EDTStaffSpec2014 _staffspec2014;)
11537
11538 EXTAG Tag() const override { return ot_EDTStaffSpec; }
11539 int DataSizeLoad() const override
11540 {
11541 switch (_VersionToUse())
11542 {
11543 case FINALEVERSION_2010:
11544 return sizeof(EDTStaffSpec2010);
11545 case FINALEVERSION_2012:
11546 PROTECTED2012STAFFSPEC(return sizeof(EDTStaffSpec2012));
11547 break;
11548 default:
11549 PROTECTED2014STAFFSPEC(return sizeof(EDTStaffSpec2014));
11550 break;
11551 }
11552 }
11553 void* Allocate() override
11554 {
11555 switch (_VersionToUse())
11556 {
11557 case FINALEVERSION_2010:
11558 return (void*) &_staffspec2010;
11559#if FXT_VERSION >= FINALEVERSION_2012
11560 case FINALEVERSION_2012:
11561 return (void*) &_staffspec2012;
11562#endif
11563 default:
11564 PROTECTED2014STAFFSPEC(return (void*) &_staffspec2014);
11565 return NULL;
11566 }
11567 }
11568
11573 void CloneMemoryFrom(__FCBaseData* pSource) override
11574 {
11575 void* pStaffSpec = NULL;
11576 fourbyte size = 0;
11577 switch (_VersionToUse())
11578 {
11579 case FINALEVERSION_2010:
11580 pStaffSpec = &_staffspec2010;
11581 size = sizeof(_staffspec2010);
11582 break;
11583 case FINALEVERSION_2012:
11584 PROTECTED2012STAFFSPEC(
11585 pStaffSpec = &_staffspec2012;
11586 size = sizeof(_staffspec2012);)
11587 break;
11588 default:
11589 PROTECTED2014STAFFSPEC(
11590 pStaffSpec = &_staffspec2014;
11591 size = sizeof(_staffspec2014);)
11592 break;
11593 }
11594
11595 memcpy(pStaffSpec, ((FCStaff*)pSource)->_GetStaffSpec(), size);
11596 _datablock = pStaffSpec;
11597 _loadedsize = size;
11598 }
11599
11600 __FCBaseData* CreateObject() override { return new FCStaff(); }
11601
11602
11604 const uonebyte* _GetInstUUIDPtr() const override
11605 {
11606 if (_VersionToUse() >= FINALEVERSION_2014)
11607 return _staffspec2014.instUUID;
11608 if (_VersionToUse() >= FINALEVERSION_2012)
11609 return _staffspec2012.instUUID;
11610 return NULL;
11611 }
11612
11614 const FLAG_16* _GetInstFlagPtr() const override
11615 {
11616 return &((EDTStaffSpec2010*)_GetStaffSpec())->instflag;
11617 }
11618
11620 const FLAG_16* _GetFlagPtr() const override
11621 {
11622 return &((EDTStaffSpec2010*)_GetStaffSpec())->flag;
11623 }
11624
11626 const FLAG_16* _GetAltFlagPtr() const override
11627 {
11628 return &((EDTStaffSpec2010*)_GetStaffSpec())->altFlag;
11629 }
11630
11632 const FLAG_16* _GetAltFlag2Ptr() const override
11633 {
11634 return &((EDTStaffSpec2010*)_GetStaffSpec())->altFlag2;
11635 }
11636
11638 const twobyte* _GetTranspositionPtr() const override
11639 {
11640 return &((EDTStaffSpec2010*)_GetStaffSpec())->transposition;
11641 }
11642
11644 const FLAG_16* _GetMoreFlagsPtr() const override
11645 {
11646 return &((EDTStaffSpec2010*)_GetStaffSpec())->moreFlags;
11647 }
11648
11650 const FLAG_16* _GetMoreFlags2Ptr() const override
11651 {
11652 if (_VersionToUse() < FINALEVERSION_2014) return NULL;
11653#if FXT_VERSION < FINALEVERSION_25
11654 return (const FLAG_16*)&((EDTStaffSpec2014*)_GetStaffSpec())->hideKeySigsShowAccis;
11655#else
11656 return &((EDTStaffSpec2014*)_GetStaffSpec())->moreFlags2;
11657#endif
11658 }
11659
11661 const FLAG_16* _GetMoreFlags3Ptr() const override
11662 {
11663 if (_VersionToUse() < FINALEVERSION_2014) return NULL;
11664#if FXT_VERSION < FINALEVERSION_25
11665 return (const FLAG_16*) &((EDTStaffSpec2014*)_GetStaffSpec())->redisplayLayerAccis;
11666#else
11667 return &((EDTStaffSpec2014*)_GetStaffSpec())->moreFlags3;
11668#endif
11669 }
11670
11672 FLAG_16* _GetAutoNumPtr() const
11673 {
11674 if (_VersionToUse() < FINALEVERSION_2012) return NULL;
11675 if (_VersionToUse() < FINALEVERSION_2014)
11676 return (FLAG_16*)&((EDTStaffSpec2012*)_GetStaffSpec())->autoNum;
11677 return (FLAG_16*)&((EDTStaffSpec2014*)_GetStaffSpec())->autoNum;
11678 }
11679
11681 const twobyte* _GetAbbrvNamePtr() const override
11682 {
11683 return &((EDTStaffSpec2010*)_GetStaffSpec())->abbrvName;
11684 }
11685
11687 const twobyte* _GetFullNamePtr() const override
11688 {
11689 return &((EDTStaffSpec2010*)_GetStaffSpec())->fullName;
11690 }
11691
11693 const twobyte* _GetClefsPtr() const override
11694 {
11695 return &((EDTStaffSpec2010*)_GetStaffSpec())->clefs;
11696 }
11697
11699 const Efix32* _GetVertTabNumOffPtr() const override
11700 {
11701 return &((EDTStaffSpec2010*)_GetStaffSpec())->vertTabNumOff;
11702 }
11703
11705 const CMPER* _GetFretInstIDPtr() const override
11706 {
11707 return &((EDTStaffSpec2010*)_GetStaffSpec())->fretInstID;
11708 }
11709
11711 const Evpu16* _GetBottomBarlineOffsetPtr() const override
11712 {
11713 return &((EDTStaffSpec2010*)_GetStaffSpec())->botBarlineOffset;
11714 }
11715
11717 const Evpu16* _GetTopBarlineOffsetPtr() const override
11718 {
11719 return &((EDTStaffSpec2010*)_GetStaffSpec())->topBarlineOffset;
11720 }
11721
11723 const utwobyte* _GetCapoLowFretPtr() const override
11724 {
11725 return &((EDTStaffSpec2010*)_GetStaffSpec())->capoLowFret;
11726 }
11727
11729 const FLAG_16* _GetBotLinesPtr() const override
11730 {
11731 return &((EDTStaffSpec2010*)_GetStaffSpec())->botLines;
11732 }
11733
11735 const FLAG_16* _GetTopLinesPtr() const override
11736 {
11737 return &((EDTStaffSpec2010*)_GetStaffSpec())->topLines;
11738 }
11739
11741 const Efix32* _GetLineSpacePtr() const override
11742 {
11743 return &((EDTStaffSpec2010*)_GetStaffSpec())->lineSpace;
11744 }
11745
11747 const twobyte* _GetDwWRestPtr() const override
11748 {
11749 return &((EDTStaffSpec2010*)_GetStaffSpec())->dw_wRest;
11750 }
11751
11753 const twobyte* _GetStemReversalPtr() const override
11754 {
11755 return &((EDTStaffSpec2010*)_GetStaffSpec())->stemReversal;
11756 }
11757
11759 const twobyte* _GetRepeatDotsOffPtr() const override
11760 {
11761 return &((EDTStaffSpec2010*)_GetStaffSpec())->repeatDotsOff;
11762 }
11763
11765 const twobyte* _GetHOtherRestPtr() const override
11766 {
11767 return &((EDTStaffSpec2010*)_GetStaffSpec())->h_otherRest;
11768 }
11769
11771 const ETAG* _GetFullNamePosTagPtr() const
11772 {
11773 return &((EDTStaffSpec2010*)_GetStaffSpec())->fullNamePosTag;
11774 }
11775
11777 const twobyte* _GetFullNamePosCmperPtr() const
11778 {
11779 return &((EDTStaffSpec2010*)_GetStaffSpec())->fullNamePosCmper;
11780 }
11781
11783 const ETAG* _GetAbbrvNamePosTagPtr() const
11784 {
11785 return &((EDTStaffSpec2010*)_GetStaffSpec())->abbrvNamePosTag;
11786 }
11787
11789 const EFONTID* _GetMFontPtr() const override
11790 {
11791 return &((EDTStaffSpec2010*)_GetStaffSpec())->mfont;
11792 }
11793
11795 const twobyte* _GetSizeEfxPtr() const override
11796 {
11797 return &((EDTStaffSpec2010*)_GetStaffSpec())->sizeefx;
11798 }
11799
11801 const Efix32* _GetHorzStemOffUpPtr() const override
11802 {
11803 return &((EDTStaffSpec2010*)_GetStaffSpec())->horzStemOffUp;
11804 }
11805
11807 const Efix32* _GetHorzStemOffDownPtr() const override
11808 {
11809 return &((EDTStaffSpec2010*)_GetStaffSpec())->horzStemOffDown;
11810 }
11811
11813 const Efix32* _GetVertStemStartOffUpPtr() const override
11814 {
11815 return &((EDTStaffSpec2010*)_GetStaffSpec())->vertStemStartOffUp;
11816 }
11817
11819 const Efix32* _GetVertStemStartOffDownPtr() const override
11820 {
11821 return &((EDTStaffSpec2010*)_GetStaffSpec())->vertStemStartOffDown;
11822 }
11823
11825 const Efix32* _GetVertStemEndOffUpPtr() const override
11826 {
11827 return &((EDTStaffSpec2010*)_GetStaffSpec())->vertStemEndOffUp;
11828 }
11829
11831 const Efix32* _GetVertStemEndOffDownPtr() const override
11832 {
11833 return &((EDTStaffSpec2010*)_GetStaffSpec())->vertStemEndOffDown;
11834 }
11835
11837 const twobyte* _GetAbbrvNamePosCmperPtr() const { return &((EDTStaffSpec2010*)_GetStaffSpec())->abbrvNamePosCmper; }
11838
11843 EXTAG _GetFullNamePosTag() const override
11844 { return (ufourbyte)( ((ufourbyte)edOther<<16) | (ufourbyte)*_GetFullNamePosTagPtr() ); }
11845
11850 twobyte _GetFullNamePosCmper() const override { return *_GetFullNamePosCmperPtr(); }
11851
11856 EXTAG _GetAbbreviatedNamePosTag() const override
11857 { return (ufourbyte)( ((ufourbyte)edOther<<16) | (ufourbyte)*_GetAbbrvNamePosTagPtr() ); }
11858
11863 twobyte _GetAbbreviatedNamePosCmper() const override { return *_GetAbbrvNamePosCmperPtr(); }
11864
11865#ifdef PDK_FRAMEWORK_PREFS
11867 virtual bool _SaveNewFullNamePos() override
11868 {
11869 if (!_pFullNamePosition || !_pFullNamePosition->SaveNew()) return false;
11870 ((EDTStaffSpec2010*)_GetStaffSpec())->fullNamePosCmper = _pFullNamePosition->GetItemNo();
11871 return true;
11872 }
11873
11875 virtual bool _SaveNewAbbreviatedNamePos() override
11876 {
11877 if (!_pAbbreviatedNamePosition || !_pAbbreviatedNamePosition->SaveNew()) return false;
11878 ((EDTStaffSpec2010*)_GetStaffSpec())->abbrvNamePosCmper = _pAbbreviatedNamePosition->GetItemNo();
11879 return true;
11880 }
11881#endif // PDK_FRAMEWORK_PREFS
11882
11884 bool _SaveRawFields() const;
11885
11886#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
11887public:
11888
11889#ifndef DOXYGEN_SHOULD_IGNORE_THIS
11891 EVERSION EnigmaVersion() const override
11892 {
11893 return _VersionToUse();
11894 }
11895#endif
11896
11897 const char* ClassName() const override { return "FCStaff"; }
11898 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_STAFF; }
11899
11900
11901#ifndef DOXYGEN_SHOULD_IGNORE_THIS
11909 const void* _GetStaffSpec() const
11910 {
11911 switch (_VersionToUse())
11912 {
11913 case FINALEVERSION_2010:
11914 return &_staffspec2010;
11915 case FINALEVERSION_2012:
11916 PROTECTED2012STAFFSPEC(return &_staffspec2012);
11917 return NULL;
11918 default:
11919 PROTECTED2014STAFFSPEC(return &_staffspec2014);
11920 return NULL;
11921 }
11922 }
11923#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
11924
11925#ifndef DOXYGEN_SHOULD_IGNORE_THIS
11927 bool LoadFirst() override
11928 {
11929 SetCmperAndInci(0, 0);
11930 return LoadNext();
11931 }
11932
11934 bool Load(CMPER itemno) override;
11935
11937 bool LoadNext() override;
11938
11940 bool Save() override
11941 {
11942 if (! __FCNoInciOther::Save()) return false;
11943 return _SaveRawFields();
11944 }
11945
11947 bool SaveNew() override
11948 {
11949 if (! __FCNoInciOther::SaveNew()) return false;
11950 return _SaveRawFields();
11951 }
11952#endif // DOXYGEN_SHOULD_IGNORE_THIS
11953
11959 {
11961 STAFFAUTONUMBER_ARABIC_SUFFIX = EDTStaffSpec2014::PDK_STAFF_AUTONUM_ARABIC_SUFFIX,
11962
11964 STAFFAUTONUMBER_ROMAN_SUFFIX = EDTStaffSpec2014::PDK_STAFF_AUTONUM_ROMAN_SUFFIX,
11965
11967 STAFFAUTONUMBER_ORDINAL_PREFIX = EDTStaffSpec2014::PDK_STAFF_AUTONUM_ORDINAL_PREFIX,
11968
11970 STAFFAUTONUMBER_ALPHA_SUFFIX = EDTStaffSpec2014::PDK_STAFF_AUTONUM_ALPHA_SUFFIX,
11971
11975
11976
11982 FCStaff() : __FCStaffBase(), _skipWorkaround(false)
11983 { _InitEDTStructs(); }
11984
11985#ifdef PDK_FRAMEWORK_LUAFRIENDLY
11990 FCStaff(bool skipWorkaround) : __FCStaffBase(), _skipWorkaround(skipWorkaround)
11991 { _InitEDTStructs(); }
11992
11994 static FCStaff* FCStaff_Lua(void* ptr, lua_State* L)
11995 {
11996 return _OneOptionalParamLuaConstructor<FCStaff, bool>(ptr, L);
11997 }
11998#endif // PDK_FRAMEWORK_LUAFRIENDLY
11999
12006
12007#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
12012 luabridge::RefCountedPtr<FCInstrumentPlaybackData> CreateInstrumentPlaybackData_GC()
12013 { return makeLuaSharedPtr(CreateInstrumentPlaybackData()); }
12014#endif
12015
12022
12023#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
12025 luabridge::RefCountedPtr<FCFretInstrumentDef> CreateFretInstrumentDef_GC()
12026 { return makeLuaSharedPtr(CreateFretInstrumentDef()); }
12027#endif
12028
12040 {
12041 const FLAG_16 * pAutoNum = _GetAutoNumPtr();
12042 if (pAutoNum)
12043 return GetBitFlag(*pAutoNum, PDK_STAFF_USE_AUTONUM_MASK);
12044 return false;
12045 }
12046
12057#ifndef PDK_FRAMEWORK_LUAFRIENDLY
12059#else
12060 int
12061#endif
12063 {
12064 const FLAG_16 * pAutoNum = _GetAutoNumPtr();
12065 if (pAutoNum)
12066 return (STAFFAUTONUMBER_STYLE)(*pAutoNum & PDK_STAFF_AUTONUM_TYPE_MASK);
12068 }
12069
12079 {
12080 FLAG_16 * pAutoNum = _GetAutoNumPtr();
12081 if (pAutoNum)
12082 Set16BitFlag(pAutoNum, PDK_STAFF_USE_AUTONUM_MASK, state);
12083 }
12084
12096#ifndef PDK_FRAMEWORK_LUAFRIENDLY
12098#else
12099 int
12100#endif
12101 value
12102 )
12103 {
12104 FLAG_16 * pAutoNum = _GetAutoNumPtr();
12105 if (pAutoNum)
12106 {
12107 *pAutoNum &= ~PDK_STAFF_AUTONUM_TYPE_MASK;
12108 *pAutoNum |= value;
12109 }
12110 }
12111
12123
12136
12148 bool SavePercussionLayout(int layoutID, int mapID);
12149
12162
12163#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
12168 luabridge::RefCountedPtr<FCInstrumentDef> CreateLayerInstrumentDef_GC(int layer)
12169 { return makeLuaSharedPtr(CreateLayerInstrumentDef(layer)); }
12170#endif
12171
12172#ifdef PDK_FRAMEWORK_DEBUG
12173 void DebugDump() override
12174 {
12176 DebugOutBool("Transposition: ", GetTranspose());
12177 DebugOutBool("Chromatic Transposition:" , GetTransposeChromatic());
12178 DebugOutBool("Transposition - Set to clef: ", GetTransposeUseClef());
12179 DebugOutBool("Transposition - Simplify key: ", GetTransposeSimplifyKey());
12180 DebugOutInt("Transposition - Alteration: ", GetTransposeAlteration());
12181 DebugOutInt("Transposition - Interval: ", GetTransposeInterval());
12182 DebugOutHex("topLines :", ((EDTStaffSpec2010*)_GetStaffSpec())->topLines);
12183 DebugOutHex("botLines :", ((EDTStaffSpec2010*)_GetStaffSpec())->botLines);
12184 DebugOutInt("drumStaffCmper: ", ((EDTStaffSpec2010*)_GetStaffSpec())->drumStaffCmper);
12185 }
12186#endif
12187
12188};
12189
12190class FCNoteEntry;
12191class FCCell;
12192
12206{
12207#ifndef DOXYGEN_SHOULD_IGNORE_THIS
12210 bool Load([[maybe_unused]]CMPER itemno) override { return false; }
12211
12214 bool SaveAs([[maybe_unused]]CMPER itemno) override { return false; }
12215
12218 bool SaveNew() override { return false; }
12219
12224 CMPER GetItemNo() const override { return GetConnectedStaff(); }
12225
12226 EXTAG Tag() const override { return ot_EDTCurrStaffSpec; }
12227#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
12228public:
12229 const char* ClassName() const override { return "FCCurrentStaffSpec"; }
12230
12231#ifdef PDK_FRAMEWORK_ENTRIES
12242 bool LoadForEntry(const FCNoteEntry* pNoteEntry);
12243#endif
12244
12256 bool LoadForCell(FCCell* pCell, TimeEdu32 durationpos);
12257
12262 int GetConnectedDurationPos() const { return _dataid.staffSpec.eduPos; }
12263
12268 int GetConnectedMeasure() const { return _dataid.staffSpec.measNum; }
12269
12274 int GetConnectedStaff() const { return _dataid.staffSpec.staffNum; }
12275};
12276
12277
12278class FCArticulation;
12279
12287{
12288private:
12289#ifndef DOXYGEN_SHOULD_IGNORE_THIS
12291 EDTArticulationDefinition _articdefold;
12292
12293#if FXT_VERSION >= FINALEVERSION_2012
12294#if FXT_VERSION >= FINALEVERSION_26
12295 typedef EDTArticulationDefinition25_6 CurrEDTArticulationDefinition;
12296#else
12297 typedef EDTArticulationDefinition2012 CurrEDTArticulationDefinition;
12298#endif
12299 CurrEDTArticulationDefinition _articdefCurr;
12300#endif
12301
12302 bool Use2012Version() const;
12303
12304 mutable EFONTNAME _mainsymbolfontname; /* For return value only */
12305 mutable EFONTNAME _flippedsymbolfontname; /* For return value only */
12306
12307 const FLAG_16* _GetFlag1Ptr() const;
12308 const FLAG_16* _GetFlag2Ptr() const;
12309 const twobyte* _GetMainShapePtr() const;
12310 const twobyte* _GetFlippedShapePtr() const;
12311 const twobyte* _GetStartTopNotePtr() const;
12312 const twobyte* _GetStartBotNotePtr() const;
12313 const twobyte* _GetDurTopNotePtr() const;
12314 const twobyte* _GetDurBotNotePtr() const;
12315 const twobyte* _GetAmpTopNotePtr() const;
12316 const twobyte* _GetAmpBotNotePtr() const;
12317 const Evpu16* _GetDefaultVerticalPosPtr() const;
12318 const Evpu16* _GetMainHandleVerticalOffsetPtr() const;
12319 const Evpu16* _GetMainHandleHorizontalOffsetPtr() const;
12320 const Evpu16* _GetFlippedHandleVerticalOffsetPtr() const;
12321 const Evpu16* _GetFlippedHandleHorizontalOffsetPtr() const;
12322
12323 bool _GetFlag1State(FLAG_16 state) const { return GetBitFlag(*_GetFlag1Ptr(), state); }
12324 void _SetFlag1State(FLAG_16 flagbits, bool state)
12325 {
12326 FLAG_16* pData = (FLAG_16*) _GetFlag1Ptr();
12327 Set16BitFlag(pData, flagbits, state);
12328 }
12329 bool _GetFlag2State(FLAG_16 state) const { return GetBitFlag(*_GetFlag2Ptr(), state); }
12330 void _SetFlag2State(FLAG_16 flagbits, bool state)
12331 {
12332 FLAG_16* pData = (FLAG_16*) _GetFlag2Ptr();
12333 Set16BitFlag(pData, flagbits, state);
12334 }
12335
12336protected:
12337 EXTAG Tag() const override { return ot_ArticulationDefinition; }
12338 int DataSizeLoad() const override;
12339 void* Allocate() override;
12340
12345 void CloneMemoryFrom(__FCBaseData* pSource) override
12346 {
12347 memcpy(_GetArticDef(), ((FCArticulationDef*)pSource)->_GetArticDef(), DataSizeLoad());
12348 _datablock = _GetArticDef();
12350 }
12351
12352 __FCBaseData* CreateObject() override { return new FCArticulationDef(); }
12353#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
12354public:
12370 ARTPOS_MANUAL_POSITIONING,
12371 ARTPOS_AUTO_NOTESTEM,
12372 ARTPOS_ALWAYS_NOTE_SIDE,
12373 ARTPOS_ALWAYS_STEM_SIDE,
12374 ARTPOS_BELOW_ENTRY,
12375 ARTPOS_ABOVE_ENTRY,
12376 ARTPOS_ALWAYS_ON_STEM
12377 };
12378
12392 ARTSLURINT_IGNORE,
12393 ARTSLURINT_INSIDE,
12394 ARTSLURINT_AUTO_INOUT
12395 };
12396
12397
12398 const char* ClassName() const override { return "FCArticulationDef"; }
12399 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_ARTICULATIONDEF; }
12400
12401#ifndef DOXYGEN_SHOULD_IGNORE_THIS
12408 void* _GetArticDef() { return Allocate(); }
12409
12410#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
12411
12418 {
12419 memset(_GetArticDef(), 0, DataSizeLoad());
12420 _datablock = _GetArticDef();
12422 }
12423
12431 bool GetOnScreenOnly() const { return _GetFlag1State(ARTIC_NOPRINT); }
12432
12441
12442#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
12444 luabridge::RefCountedPtr<FCFontInfo> CreateMainSymbolFontInfo_GC() const
12445 { return makeLuaSharedPtr(CreateMainSymbolFontInfo()); }
12446#endif
12447
12456
12457#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
12459 luabridge::RefCountedPtr<FCFontInfo> CreateFlippedSymbolFontInfo_GC() const
12460 { return makeLuaSharedPtr(CreateFlippedSymbolFontInfo()); }
12461#endif
12462
12472 eUniChar32 GetAboveSymbolChar() const
12473 {
12474 if (GetAboveUsesMain())
12475 return GetMainSymbolChar();
12476 else
12477 return GetFlippedSymbolChar();
12478 }
12479
12489 eUniChar32 GetBelowSymbolChar() const
12490 {
12491 if (GetBelowUsesMain())
12492 return GetMainSymbolChar();
12493 else
12494 return GetFlippedSymbolChar();
12495 }
12496
12497
12505 eUniChar32 GetMainSymbolChar() const;
12506
12513 twobyte GetMainSymbolShapeID() const { return GetMainSymbolIsShape() ? *_GetMainShapePtr() : 0; }
12514
12522 eUniChar32 GetFlippedSymbolChar() const;
12523
12530 twobyte GetFlippedSymbolShapeID() const { return GetFlippedSymbolIsShape() ? *_GetFlippedShapePtr() : 0; }
12531
12538 std::string GetMainSymbolFont() const;
12539
12545 const EFONTID GetMainSymbolFontID() const;
12546
12553 std::string GetFlippedSymbolFont() const;
12554
12560 const EFONTID GetFlippedSymbolFontID() const;
12561
12568 twobyte GetMainSymbolSize() const;
12569
12576 twobyte GetFlippedSymbolSize() const;
12577
12585 bool GetAboveUsesMain() const { return !_GetFlag1State(ARTIC_ABOVE_SYMBOL); }
12586
12594 bool GetBelowUsesMain() const { return !_GetFlag1State(ARTIC_BELOW_SYMBOL); }
12595
12601 bool GetCopyMainSymbol() const { return _GetFlag1State(ARTIC_IMRKITERANT); }
12602
12611 bool GetCopyMainSymbolHorizontally() const { return _GetFlag1State(ARTIC_HORZITERANT); }
12612
12619 bool GetPlayback() const { return _GetFlag2State(ARTIC_PLAY); }
12620
12626 bool GetAttackIsPercent() const { return _GetFlag2State(ARTIC_START_IS_PERCENT); }
12627
12633 twobyte GetTopAttack() const { return *_GetStartTopNotePtr(); }
12634
12639 twobyte GetBottomAttack() const { return *_GetStartBotNotePtr(); }
12640
12646 bool GetDurationIsPercent() const { return _GetFlag2State(ARTIC_DUR_IS_PERCENT); }
12647
12652 twobyte GetTopDuration() const { return *_GetDurTopNotePtr(); }
12653
12658 twobyte GetBottomDuration() const { return *_GetDurBotNotePtr(); }
12659
12664 bool GetVelocityIsPercent() const { return _GetFlag2State(ARTIC_AMP_IS_PERCENT); }
12665
12670 twobyte GetTopVelocity() const { return *_GetAmpTopNotePtr(); }
12671
12676 twobyte GetBottomVelocity() const { return *_GetAmpBotNotePtr(); }
12677
12684 twobyte GetOnStemDistanceFromStemEnd() const;
12685
12690 bool GetAvoidStaffLines() const { return _GetFlag2State(ARTIC_AVOID_STAFF_LINES); }
12691
12697 bool GetAlwaysPlaceOutsideStaff() const { return _GetFlag1State(ARTIC_OUTSIDESTAFF); }
12698
12704 bool GetCenterHorizontally() const { return _GetFlag1State(ARTIC_AUTOHORZ); }
12705
12717#ifndef PDK_FRAMEWORK_LUAFRIENDLY
12719#else
12720 int
12721#endif
12722 GetSlurInteraction() const;
12723
12730 bool GetInsideSlurs() const { return _GetFlag1State(ARTIC_INSIDE_SLUR); }
12731
12736 bool GetAttachToTopNote() const { return _GetFlag1State(ARTIC_USETOPNOTE); }
12737
12744 bool GetStackAutomatically() const;
12745
12752 bool GetCenterOnStemWhenStemSide() const;
12753
12760 bool GetStemSideWhenMultipleLayers() const;
12761
12769 Evpu16 GetDefaultVerticalPos() const { return *_GetDefaultVerticalPosPtr(); }
12770
12784#ifndef PDK_FRAMEWORK_LUAFRIENDLY
12786#else
12787 int
12788#endif
12789 GetAutoPosSide() const;
12790
12795 Evpu16 GetMainHandleVerticalOffset() const { return *_GetMainHandleVerticalOffsetPtr(); }
12796
12802 Evpu16 GetMainHandleHorizontalOffset() const { return *_GetMainHandleHorizontalOffsetPtr(); }
12803
12809 Evpu16 GetFlippedHandleVerticalOffset() const { return *_GetFlippedHandleVerticalOffsetPtr(); }
12810
12815 Evpu16 GetFlippedHandleHorizontalOffset() const { return *_GetFlippedHandleHorizontalOffsetPtr(); }
12816
12824 bool GetMainSymbolIsShape() const { return _GetFlag2State(ARTIC_MAIN_IS_SHAPE); }
12825
12833 bool GetFlippedSymbolIsShape() const { return _GetFlag2State(ARTIC_FLIPPED_IS_SHAPE); }
12834
12841 {
12842 if (GetAboveUsesMain())
12843 {
12844 if (GetMainSymbolIsShape()) return true;
12845 }
12846 else
12847 {
12848 if (GetFlippedSymbolIsShape()) return true;
12849 }
12850 if (GetBelowUsesMain())
12851 {
12852 if (GetMainSymbolIsShape()) return true;
12853 }
12854 else
12855 {
12856 if (GetFlippedSymbolIsShape()) return true;
12857 }
12858 return false;
12859 }
12860
12872 bool IsMainSymbolFont(const char* pszFontName) const;
12873
12885 bool IsFlippedSymbolFont(const char* pszFontName) const;
12886
12903 bool IsIdenticalTo(const FCArticulationDef& compareWith, bool playbackinfo, bool positioningvalues, bool positioningoptions, bool defaultside) const;
12904
12918 void GetMainSymbolFontInfo(FCFontInfo* pFontInfo) const;
12919
12933 void GetFlippedSymbolFontInfo(FCFontInfo* pFontInfo) const;
12934
12940 void SetOnScreenOnly(bool state) { _SetFlag1State(ARTIC_NOPRINT, state); }
12941
12953 void SetMainSymbolFontInfo(FCFontInfo* pFontInfo);
12954
12966 void SetFlippedSymbolFontInfo(FCFontInfo* pFontInfo);
12967
12972 void SetMainSymbolSize(twobyte size);
12973
12978 void SetFlippedSymbolSize(twobyte size);
12979
12986 void SetMainSymbolFont(const std::string& pszFontName);
12987
12993 void SetMainSymbolFontID(EFONTID fontid);
12994
13001 void SetFlippedSymbolFont(const std::string& pszFontName);
13002
13008 void SetFlippedSymbolFontID(EFONTID fontid);
13009
13016 void SetAboveSymbolChar(eUniChar32 symbol)
13017 {
13018 if (GetAboveUsesMain())
13019 SetMainSymbolChar(symbol);
13020 else
13021 SetFlippedSymbolChar(symbol);
13022 }
13023
13030 void SetBelowSymbolChar(eUniChar32 symbol)
13031 {
13032 if (GetBelowUsesMain())
13033 SetMainSymbolChar(symbol);
13034 else
13035 SetFlippedSymbolChar(symbol);
13036 }
13037
13038
13045 void SetMainSymbolChar(eUniChar32 symbol)
13046 {
13047 if (Use2012Version())
13048 {
13049#if FXT_VERSION >= FINALEVERSION_2012
13050 _articdefCurr.charMain = symbol;
13051#endif
13052 }
13053 else
13054 {
13055 _articdefold.efxsymbolMain &= 0xff00;
13056 _articdefold.efxsymbolMain |= (symbol & 0xff);
13057 }
13058 }
13059
13065 void SetMainSymbolIsShape(bool useshape)
13066 {
13067 _SetFlag2State(ARTIC_MAIN_IS_SHAPE, useshape);
13068 }
13069
13075 void SetFlippedSymbolIsShape(bool useshape)
13076 {
13077 _SetFlag2State(ARTIC_FLIPPED_IS_SHAPE, useshape);
13078 }
13079
13086 void SetMainSymbolShapeID(CMPER shapeID)
13087 {
13088 CMPER* pValue = (CMPER*) _GetMainShapePtr();
13089 *pValue = shapeID;
13090 }
13091
13098 void SetFlippedSymbolShapeID(twobyte shapeID)
13099 {
13100 CMPER* pValue = (CMPER*) _GetFlippedShapePtr();
13101 *pValue = shapeID;
13102 }
13103
13111 void SetFlippedSymbolChar(eUniChar32 symbol)
13112 {
13113 if (Use2012Version())
13114 {
13115#if FXT_VERSION >= FINALEVERSION_2012
13116 _articdefCurr.charAlt = symbol;
13117#endif
13118 }
13119 else
13120 {
13121 _articdefold.efxsymbolFlipped &= 0xff00;
13122 _articdefold.efxsymbolFlipped |= (symbol & 0xff);
13123 }
13124 }
13125
13133 void SetAboveUsesMain(bool state) { _SetFlag1State(ARTIC_ABOVE_SYMBOL, !state); }
13134
13142 void SetBelowUsesMain(bool state) { _SetFlag1State(ARTIC_BELOW_SYMBOL, !state); }
13143
13148 void SetCopyMainSymbol(bool state) { _SetFlag1State(ARTIC_IMRKITERANT, state); }
13149
13158 void SetCopyMainSymbolHorizontally(bool state) { _SetFlag1State(ARTIC_HORZITERANT, state); }
13159
13166 void SetPlayback(bool state) { _SetFlag2State(ARTIC_PLAY, state); }
13167
13173 void SetAttackIsPercent(bool state) { _SetFlag2State(ARTIC_START_IS_PERCENT, state); }
13174
13180 void SetTopAttack(twobyte value)
13181 {
13182 twobyte* pValue = (twobyte*) _GetStartTopNotePtr();
13183 *pValue = value;
13184 }
13185
13190 void SetBottomAttack(twobyte value)
13191 {
13192 twobyte* pValue = (twobyte*) _GetStartBotNotePtr();
13193 *pValue = value;
13194 }
13195
13200 void SetAutoPosSide(
13201#ifndef PDK_FRAMEWORK_LUAFRIENDLY
13203#else
13204 int mode
13205#endif
13206 );
13207
13212 void SetAlwaysPlaceOutsideStaff(bool state) { _SetFlag1State(ARTIC_OUTSIDESTAFF, state); }
13213
13218 void SetCenterHorizontally(bool state) { _SetFlag1State(ARTIC_AUTOHORZ, state); }
13219
13224 void SetAvoidStaffLines(bool state) { _SetFlag2State(ARTIC_AVOID_STAFF_LINES, state); }
13225
13232 void SetSlurInteraction(
13233#ifndef PDK_FRAMEWORK_LUAFRIENDLY
13235#else
13236 int mode
13237#endif
13238 );
13239
13246 void SetInsideSlurs(bool state) { _SetFlag1State(ARTIC_INSIDE_SLUR, state); }
13247
13252 void SetAttachToTopNote(bool state) { _SetFlag1State(ARTIC_USETOPNOTE, state); }
13253
13260 void SetStackAutomatically(bool state);
13261
13268 void SetCenterOnStemWhenStemSide(bool state);
13269
13276 void SetStemSideWhenMultipleLayers(bool state);
13277
13283 void SetDefaultVerticalPos(Evpu16 value)
13284 {
13285 Evpu16* pValue = (Evpu16*) _GetDefaultVerticalPosPtr();
13286 *pValue = value;
13287 }
13288
13295 {
13296 Evpu16* pValue = (Evpu16*) _GetMainHandleVerticalOffsetPtr();
13297 *pValue = value;
13298 }
13299
13306 {
13307 Evpu16* pValue = (Evpu16*) _GetMainHandleHorizontalOffsetPtr();
13308 *pValue = value;
13309 }
13310
13317 {
13318 Evpu16* pValue = (Evpu16*) _GetFlippedHandleVerticalOffsetPtr();
13319 *pValue = value;
13320 }
13321
13327 {
13328 Evpu16* pValue = (Evpu16*) _GetFlippedHandleHorizontalOffsetPtr();
13329 *pValue = value;
13330 }
13331
13337 void SetTopDuration(twobyte value)
13338 {
13339 twobyte* pValue = (twobyte*) _GetDurTopNotePtr();
13340 *pValue = value;
13341 }
13342
13347 void SetBottomDuration(twobyte value)
13348 {
13349 twobyte* pValue = (twobyte*) _GetDurBotNotePtr();
13350 *pValue = value;
13351 }
13352
13357 void SetDurationIsPercent(bool value) { _SetFlag2State(ARTIC_DUR_IS_PERCENT, value); }
13358
13363 void SetTopVelocity(twobyte value)
13364 {
13365 twobyte* pValue = (twobyte*) _GetAmpTopNotePtr();
13366 *pValue = value;
13367 }
13368
13373 void SetBottomVelocity(twobyte value)
13374 {
13375 twobyte* pValue = (twobyte*) _GetAmpBotNotePtr();
13376 *pValue = value;
13377 }
13378
13385 void SetOnStemDistanceFromStemEnd(twobyte value);
13386
13391 void SetVelocityIsPercent(bool value) { _SetFlag2State(ARTIC_AMP_IS_PERCENT, value); }
13392
13393#ifdef PDK_FRAMEWORK_DEBUG
13394 void DebugDump() override
13395 {
13397 std::unique_ptr<FCString> fontStr(std::unique_ptr<FCFontInfo>(CreateMainSymbolFontInfo())->CreateDescription());
13398 DebugOutInt("Main symbol char: ", GetMainSymbolChar());
13399 DebugOutString("Main symbol font: ", fontStr->GetCString());
13400 }
13401#endif
13402
13403};
13404
13405
13416{
13417private:
13418#ifndef DOXYGEN_SHOULD_IGNORE_THIS
13419 EDTMarkingCategory _categorydefold;
13420
13421 friend struct __FCEDTMarkingCategoryRaw;
13422
13423#if FXT_VERSION >= FINALEVERSION_2012
13424 EDTMarkingCategory2012 _categorydef2012;
13425#endif
13426
13427 bool _Use2012Version() const;
13428
13429 const FLAG_16* _GetFlagPtr() const
13430 {
13431#if FXT_VERSION >= FINALEVERSION_2012
13432 if (_Use2012Version()) return &_categorydef2012.categoryFlags;
13433#endif
13434 return &_categorydefold.categoryFlags;
13435 }
13436
13437 const twobyte* _GetCatIDPtr() const
13438 {
13439#if FXT_VERSION >= FINALEVERSION_2012
13440 if (_Use2012Version()) return &_categorydef2012.catID;
13441#endif
13442 return &_categorydefold.catID;
13443 }
13444
13445 const twobyte* _GetCatTypePtr() const
13446 {
13447#if FXT_VERSION >= FINALEVERSION_2012
13448 if (_Use2012Version()) return &_categorydef2012.categoryType;
13449#endif
13450 return &_categorydefold.categoryType;;
13451 }
13452
13453 const twobyte* _GetStaffListPtr() const
13454 {
13455#if FXT_VERSION >= FINALEVERSION_2012
13456 if (_Use2012Version()) return &_categorydef2012.staffList;
13457#endif
13458 return &_categorydefold.staffList;
13459 }
13460
13461 const twobyte* _GetVertAlignPtr() const
13462 {
13463#if FXT_VERSION >= FINALEVERSION_2012
13464 if (_Use2012Version()) return &_categorydef2012.vertAlign;
13465#endif
13466 return &_categorydefold.vertAlign;
13467 }
13468
13469 const twobyte* _GetVertOffsetBaseLinePtr() const
13470 {
13471#if FXT_VERSION >= FINALEVERSION_2012
13472 if (_Use2012Version()) return &_categorydef2012.vertOffsetBaseline;
13473#endif
13474 return &_categorydefold.vertOffsetBaseline;
13475 }
13476
13477 const twobyte* _GetVertOffsetEntryPtr() const
13478 {
13479#if FXT_VERSION >= FINALEVERSION_2012
13480 if (_Use2012Version()) return &_categorydef2012.vertOffsetEntry;
13481#endif
13482 return &_categorydefold.vertOffsetEntry;
13483 }
13484
13485 const twobyte* _GetJustificationPtr() const
13486 {
13487#if FXT_VERSION >= FINALEVERSION_2012
13488 if (_Use2012Version()) return &_categorydef2012.justification;
13489#endif
13490 return &_categorydefold.justification;
13491 }
13492
13493 const twobyte* _GetHorzAlignPtr() const
13494 {
13495#if FXT_VERSION >= FINALEVERSION_2012
13496 if (_Use2012Version()) return &_categorydef2012.horzAlign;
13497#endif
13498 return &_categorydefold.horzAlign;
13499 }
13500
13501 const twobyte* _GetHorzOffsetPtr() const
13502 {
13503#if FXT_VERSION >= FINALEVERSION_2012
13504 if (_Use2012Version()) return &_categorydef2012.horzOffset;
13505#endif
13506 return &_categorydefold.horzOffset;
13507 }
13508
13509 const EEnigmaFont* _GetTextFontPtr() const
13510 {
13511#if FXT_VERSION >= FINALEVERSION_2012
13512 if (_Use2012Version()) return &_categorydef2012.textFont;
13513#endif
13514 return &_categorydefold.textFont;
13515 }
13516
13517 const EEnigmaFont* _GetMusicFontPtr() const
13518 {
13519#if FXT_VERSION >= FINALEVERSION_2012
13520 if (_Use2012Version()) return &_categorydef2012.musicFont;
13521#endif
13522 return &_categorydefold.musicFont;
13523 }
13524
13525 const EEnigmaFont* _GetNumberFontPtr() const
13526 {
13527#if FXT_VERSION >= FINALEVERSION_2012
13528 if (_Use2012Version()) return &_categorydef2012.numberFont;
13529#endif
13530 return &_categorydefold.numberFont;
13531 }
13532
13533 bool _GetFlagState(FLAG_16 state) const
13534 {
13535 FLAG_16* pValue = (FLAG_16*) _GetFlagPtr();
13536 return GetBitFlag(*pValue, state);
13537 }
13538
13539 void _SetFlagState(FLAG_16 mask, bool state)
13540 {
13541 FLAG_16* pValue = (FLAG_16*) _GetFlagPtr();
13542 return Set16BitFlag(pValue, mask, state);
13543 }
13544
13545 bool DeleteData() override
13546 { return false; } // prevent deletion
13547
13548 bool SaveNew() override
13549 { return false; } // prevent raw SaveNew call
13550
13551#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
13552protected:
13553#ifndef DOXYGEN_SHOULD_IGNORE_THIS
13554
13555 EXTAG Tag() const override { return ot_MarkingCategory; }
13556
13557 int DataSizeLoad() const override
13558 {
13559#if FXT_VERSION >= FINALEVERSION_2012
13560 if (_Use2012Version()) return sizeof(EDTMarkingCategory2012);
13561#endif
13562 return sizeof(EDTMarkingCategory);
13563 }
13564
13565 void* Allocate() override
13566 {
13567#if FXT_VERSION >= FINALEVERSION_2012
13568 if (_Use2012Version()) return (void*) &_categorydef2012;
13569#endif
13570 return (void*) &_categorydefold;
13571 }
13572
13579 void CloneMemoryFrom(__FCBaseData* pSource) override
13580 {
13581 memcpy(_GetCategoryDef(), ((FCCategoryDef*)pSource)->_GetCategoryDef(), DataSizeLoad());
13582 _datablock = _GetCategoryDef();
13584 }
13585
13586 __FCBaseData* CreateObject() override { return new FCCategoryDef(); }
13587
13588 // Class doesn't yet support Unicode
13589 EVERSION EnigmaVersion() const override
13590 {
13591 if (_Use2012Version()) return FINALEVERSION_2012;
13592 return FINALEVERSION_2010;
13593 }
13594
13595#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
13596public:
13597
13622
13623
13642
13643 const char* ClassName() const override { return "FCCategoryDef"; }
13644 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_CATEGORYDEF; }
13645
13646#ifndef DOXYGEN_SHOULD_IGNORE_THIS
13653 void* _GetCategoryDef() { return Allocate(); }
13654#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
13655
13693
13744
13760
13766 {
13767 memset(_GetCategoryDef(), 0, DataSizeLoad());
13768 _datablock = _GetCategoryDef();
13770 }
13771
13776 bool IsIdentical(const __FCBase* pObject) const override
13777 {
13778 const FCCategoryDef* pOtherCategory = dynamic_cast<const FCCategoryDef*>(pObject);
13779 if (!pOtherCategory) return false;
13780 if (pOtherCategory->GetID() != GetID()) return false;
13781 if (*pOtherCategory->_GetFlagPtr() != *_GetFlagPtr()) return false;
13782 FCString thisname, othername;
13783 pOtherCategory->GetName(&othername);
13784 GetName(&thisname);
13785 return othername.IsEqualString(thisname);
13786 }
13787
13793 bool GetBreakMMRest() const
13794 {
13795 return _GetFlagState(MC_BREAK_MMREST);
13796 }
13797
13803 {
13804 return _GetFlagState(MC_USES_STAFF_LIST);
13805 }
13806
13815 twobyte GetID() const
13816 {
13817 return *_GetCatIDPtr();
13818 }
13819
13829#ifndef PDK_FRAMEWORK_LUAFRIENDLY
13831#else
13832 twobyte
13833#endif
13834 GetType() const
13835 {
13836 return static_cast<CATEGORY_DEFAULTIDS>(*_GetCatTypePtr());
13837 }
13838
13851 bool SaveNewWithType(
13852#ifndef PDK_FRAMEWORK_LUAFRIENDLY
13854#else
13855 int
13856#endif
13857 type);
13858
13866 twobyte GetStaffListID() const
13867 {
13868 return *_GetStaffListPtr();
13869 }
13870
13878 void GetName(FCString* pString) const
13879 {
13880#if FXT_VERSION >= FINALEVERSION_2012
13881 if (_Use2012Version())
13882 {
13883 pString->SetUnicodeString(_categorydef2012.name);
13884 return;
13885 }
13886#endif
13887 pString->SetCString(_categorydefold.name);
13888 }
13889
13899 {
13900 FCString* pString = new FCString();
13901 GetName(pString);
13902 return pString;
13903 }
13904
13905#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
13907 luabridge::RefCountedPtr<FCString> CreateName_GC()
13908 { return makeLuaSharedPtr(CreateName()); }
13909#endif
13910
13918#ifndef PDK_FRAMEWORK_LUAFRIENDLY
13920#else
13921 int
13922#endif
13923 GetVerticalAlignmentPoint() const { return (VERT_ALIGNMENT) *_GetVertAlignPtr(); }
13924
13930 twobyte GetVerticalBaselineOffset() const { return *_GetVertOffsetBaseLinePtr(); }
13931
13937 twobyte GetVerticalEntryOffset() const { return *_GetVertOffsetEntryPtr(); }
13938
13939
13947#ifndef PDK_FRAMEWORK_LUAFRIENDLY
13949#else
13950 int
13951#endif
13953 {
13954 return (HORIZ_JUSTIFICATION) *_GetJustificationPtr();
13955 }
13956
13962#ifndef PDK_FRAMEWORK_LUAFRIENDLY
13964#else
13965 int
13966#endif
13968 {
13969 return (HORIZ_ALIGNMENT) *_GetHorzAlignPtr();
13970 }
13971
13977 twobyte GetHorizontalOffset() const
13978 {
13979 return *_GetHorzOffsetPtr();
13980 }
13981
13990 {
13991 if (!UsesTextFont()) return false;
13992 pInfo->ParseEnigmaFont(_GetTextFontPtr());
13993 return true;
13994 }
13995
14004 {
14005 if (!UsesMusicFont()) return false;
14006 pInfo->ParseEnigmaFont(_GetMusicFontPtr());
14007 return true;
14008 }
14009
14018 {
14019 if (!UsesNumberFont()) return false;
14020 pInfo->ParseEnigmaFont(_GetNumberFontPtr());
14021 return true;
14022 }
14023
14024
14033 {
14034 if (!UsesTextFont()) return false;
14035 EEnigmaFont* pFont = (EEnigmaFont*) _GetTextFontPtr();
14036 pFont->font = pInfo->GetIDByName();
14037 pFont->efx = pInfo->GetEnigmaStyles();
14038 pFont->size = pInfo->GetSize();
14039 return true;
14040 }
14041
14050 {
14051 if (!UsesMusicFont()) return false;
14052 EEnigmaFont* pFont = (EEnigmaFont*) _GetMusicFontPtr();
14053 pFont->font = pInfo->GetIDByName();
14054 pFont->efx = pInfo->GetEnigmaStyles();
14055 pFont->size = pInfo->GetSize();
14056 return true;
14057 }
14058
14067 {
14068 if (!UsesNumberFont()) return false;
14069 EEnigmaFont* pFont = (EEnigmaFont*) _GetNumberFontPtr();
14070 pFont->font = pInfo->GetIDByName();
14071 pFont->efx = pInfo->GetEnigmaStyles();
14072 pFont->size = pInfo->GetSize();
14073 return true;
14074 }
14075
14083 void SetStaffListID(twobyte value)
14084 {
14085 twobyte* pStaffList = (twobyte*) _GetStaffListPtr();
14086 *pStaffList = value;
14087 }
14088
14097 {
14098 FCFontInfo* pFontInfo = new FCFontInfo();
14099 pFontInfo->ParseEnigmaFont(_GetTextFontPtr());
14100 return pFontInfo;
14101 }
14102
14103#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
14105 luabridge::RefCountedPtr<FCFontInfo> CreateTextFontInfo_GC()
14106 { return makeLuaSharedPtr(CreateTextFontInfo()); }
14107#endif
14108
14115 bool GetUserCreated() const
14116 {
14117 return _GetFlagState(MC_USER_CREATED);
14118 }
14119
14126 {
14127 if (GetUserCreated()) return false;
14128 return GetID() == 7;
14129 }
14130
14137 {
14138 if (GetUserCreated()) return false;
14139 return GetID() == DEFAULTCATID_DYNAMICS;
14140 }
14141
14148 {
14149 if (GetUserCreated()) return false;
14150 return GetID() == DEFAULTCATID_TEMPOMARKS;
14151 }
14152
14159 {
14160 if (GetUserCreated()) return false;
14162 }
14163
14170 {
14171 if (GetUserCreated()) return false;
14173 }
14174
14181 {
14182 if (GetUserCreated()) return false;
14184 }
14185
14192 {
14193 if (GetUserCreated()) return false;
14195 }
14196
14201 bool UsesStaffList() { return _GetFlagState(MC_STAFFLIST); }
14202
14207 bool UsesTextFont() { return _GetFlagState(0x0001); } /* For some reason MC_OVERRIDE_TEXT_FONT doesn't work*/
14208
14213 bool UsesMusicFont() { return _GetFlagState(0x0002); } /* For some reason MC_OVERRIDE_MUSIC_FONT doesn't work*/
14214
14219 bool UsesNumberFont() { return _GetFlagState(0x0004); } /* For some reason MC_OVERRIDE_NUMBER_FONT doesn't work*/
14220
14227 void SetName(FCString* pString)
14228 {
14229 if (!pString) return;
14230 /* Make sure there isn't any overflow of the text */
14231 FCString tempstring;
14232 tempstring.SetString(pString);
14233 tempstring.TruncateAt(63);
14234 /* Copy the text */
14235 if (_Use2012Version())
14236 {
14237#if FXT_VERSION >= FINALEVERSION_2012
14238 int len = tempstring.GetLength();
14239 memcpy(_categorydef2012.name, tempstring._GetUnicodeBuffer(), (len + 1) * sizeof (eUniChar16));
14240 _categorydef2012.name[len] = 0; /* For safety add a NULL */
14241#endif
14242 }
14243 else
14244 {
14245 strcpy(_categorydefold.name, tempstring.GetCString());
14246 }
14247 }
14248
14257#ifndef PDK_FRAMEWORK_LUAFRIENDLY
14259#else
14260 twobyte
14261#endif
14262 value
14263 )
14264 {
14265 twobyte* pAlign = (twobyte*) _GetVertAlignPtr();
14266 *pAlign = (twobyte) value;
14267 }
14268
14273 void SetUserCreated(bool value) { _SetFlagState(MC_USER_CREATED, value); }
14274
14279 void SetBreakMMRest(bool state)
14280 {
14281 _SetFlagState(MC_BREAK_MMREST, state);
14282 }
14283
14288 void SetOverrideStaffList(bool state)
14289 {
14290 _SetFlagState(MC_USES_STAFF_LIST, state);
14291 }
14292
14297 void SetID(twobyte catID)
14298 {
14299 twobyte* pData = (twobyte*) _GetCatIDPtr();
14300 *pData = catID;
14301 }
14302
14308 void SetVerticalBaselineOffset(twobyte value)
14309 {
14310 twobyte* pVertOffsetBase = (twobyte*) _GetVertOffsetBaseLinePtr();
14311 *pVertOffsetBase = value;
14312 }
14313
14319 void SetVerticalEntryOffset(twobyte value)
14320 {
14321 twobyte* pOffset = (twobyte*) _GetVertOffsetEntryPtr();
14322 *pOffset = value;
14323 }
14324
14331#ifndef PDK_FRAMEWORK_LUAFRIENDLY
14333#else
14334 int
14335#endif
14336 value)
14337 {
14338 switch (value)
14339 {
14340 case EXPRJUSTIFY_LEFT:
14341 case EXPRJUSTIFY_CENTER:
14342 case EXPRJUSTIFY_RIGHT:
14343 break;
14344 default:
14345 return;
14346 }
14347 twobyte* pJustification = (twobyte*) _GetJustificationPtr();
14348 *pJustification = value;
14349 }
14350
14351
14357 void SetHorizontalOffset(twobyte value)
14358 {
14359 twobyte* pHorizontalOffset = (twobyte*) _GetHorzOffsetPtr();
14360 *pHorizontalOffset = value;
14361 }
14362
14369#ifndef PDK_FRAMEWORK_LUAFRIENDLY
14371#else
14372 twobyte
14373#endif
14374 value
14375 )
14376 {
14377 twobyte* pHorizAlign = (twobyte*) _GetHorzAlignPtr();
14378 *pHorizAlign = (twobyte) value;
14379 }
14380
14381#ifdef PDK_FRAMEWORK_DEBUG
14382 void DebugDump() override
14383 {
14385 DebugOutInt("Category ID: ", GetID());
14386 DebugOutBool("User created: ", GetUserCreated());
14387 FCString string;
14388 GetName(&string);
14389 DebugOutString("Name: ", string.GetCString());
14390 }
14391#endif
14392};
14393
14394
14395
14396
14410{
14411private:
14412#ifndef DOXYGEN_SHOULD_IGNORE_THIS
14413 EDTFreezeMeasures _freezemeasures;
14414
14415#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
14416protected:
14417#ifndef DOXYGEN_SHOULD_IGNORE_THIS
14418
14419 EXTAG Tag() const override { return ot_FreezeMeasures; }
14420 int DataSizeLoad() const override { return sizeof(EDTFreezeMeasures); }
14421 void* Allocate() override { return (void*) &_freezemeasures; }
14422
14429 void CloneMemoryFrom(__FCBaseData* pSource) override
14430 {
14431 memcpy(&_freezemeasures, ((FCFreezeSystem*)pSource)->_GetFreezeMeasures(), sizeof(_freezemeasures));
14432 _datablock = &_freezemeasures;
14433 _loadedsize = sizeof(_freezemeasures);
14434 }
14435
14436 __FCBaseData* CreateObject() override { return new FCFreezeSystem(); }
14437
14438 // Doesn't support First/Next
14439 bool LoadFirst() override { return false; }
14440
14441#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
14442public:
14443 const char* ClassName() const override { return "FCFreezeSystem"; }
14444 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_FREEZESYSTEM; }
14445
14446#ifndef DOXYGEN_SHOULD_IGNORE_THIS
14453 void* _GetFreezeMeasures() { return Allocate(); }
14454#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
14455
14461 {
14462 memset(&_freezemeasures, 0, sizeof(_freezemeasures));
14463 _freezemeasures.mode = 1;
14464 _datablock = &_freezemeasures;
14465 _loadedsize = sizeof(_freezemeasures);
14466 }
14467
14476 void SetNextSysMeasure(twobyte measure) { _freezemeasures.measure = measure; }
14477
14485 twobyte GetNextSysMeasure() const { return _freezemeasures.measure; }
14486
14487
14488#ifdef PDK_FRAMEWORK_DEBUG
14489 void DebugDump() override
14490 {
14492 DebugOutInt("Next system measure: ", GetNextSysMeasure());
14493 }
14494#endif
14495};
14496
14497#ifndef DOXYGEN_SHOULD_IGNORE_THIS
14498// missing playback type defines
14499#define _EXP_NO_PLAYBACK 0x00
14500#define _EXP_MIDI_PERCUSSION_MAP 0x13
14501#define _EXP_SWING 0x0e
14502#define _EXP_HUMAN_PLAYBACK_ON 0x10
14503#define _EXP_HUMAN_PLAYBACK_OFF 0x11
14504#endif // DOXYGEN_SHOULD_IGNORE_THIS
14505
14515{
14516#ifndef DOXYGEN_SHOULD_IGNORE_THIS
14517#if FXT_VERSION >= FINALEVERSION_2012
14518 typedef EDTTextExpression2012 CurrEDTTextExpression;
14519#else
14520 typedef EDTTextExpression2004 CurrEDTTextExpression;
14521#endif
14522 CurrEDTTextExpression _nullexpression; /* A data block for when the _datablock is NULL.
14523 This should never be accessed directly. It's only
14524 available to prevent crashes. */
14525 CurrEDTTextExpression* _TypeCast() const
14526 {
14527 if (!_datablock) return (CurrEDTTextExpression*) &_nullexpression;
14528 return (CurrEDTTextExpression*)_datablock;
14529 }
14530
14531 void _AllocateMemory(int size);
14532protected:
14533 EXTAG Tag() const override { return ot_TextExpression; }
14534 EVERSION EnigmaVersion() const override;
14535
14536 int DataSizeLoad() const override;
14537 int DataSizeSave() const override;
14538 void* Allocate() override;
14539 void Deallocate() override;
14540 bool IsDynamicSize() override { return true; }
14541
14542 __FCBaseData* CreateObject() override { return new FCTextExpressionDef(); }
14543
14544 bool LoadNext() override
14545 {
14546 return Load(GetItemNo() + 1); // FX_NextEData can sometimes cause problems!!!
14547 }
14548
14549#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
14550public:
14551
14557 {
14559 REHMARKSTYLE_MANUAL = FX_EXPR_REHEARSAL_MANUAL,
14560
14562 REHMARKSTYLE_LETTER = FX_EXPR_REHERASAL_LETTERS,
14563
14565 REHMARKSTYLE_LETNUM = FX_EXPR_REHEARSAL_LETNUM,
14566
14568 REHMARKSTYLE_LETTER_LC = FX_EXPR_REHEARSAL_LETTERS_LC,
14569
14571 REHMARKSTYLE_LETNUM_LC = FX_EXPR_REHEARSAL_LETNUM_LC,
14572
14574 REHMARKSTYLE_NUMBER = FX_EXPR_REHEARSAL_NUMBERS,
14575
14577 REHMARKSTYLE_MEASNUM = FX_EXPR_REHEARSAL_MEASNUM
14579
14644
14645 const char* ClassName() const override { return "FCTextExpressionDef"; }
14646 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_TEXTEXPRESSIONDEF; }
14647
14653
14655 virtual ~FCTextExpressionDef();
14656
14662 bool DeepSaveAs(CMPER itemno) override
14663 {
14664 FCString* pString = CreateTextString();
14665 SaveNewTextBlock(pString);
14666 delete pString;
14667
14668 FCEnclosure* pEnclosure = CreateEnclosure();
14669 if (pEnclosure)
14670 {
14671 pEnclosure->SaveAs(itemno);
14672 delete pEnclosure;
14673 }
14674
14675 return SaveAs(itemno);
14676 }
14677
14685 bool DeepDeleteData() override;
14686
14687
14692
14697#ifndef PDK_FRAMEWORK_LUAFRIENDLY
14699#else
14700 int
14701#endif
14702 GetPlaybackType() const;
14703
14713 void SetPlaybackType(
14714#ifndef PDK_FRAMEWORK_LUAFRIENDLY
14716#else
14717 int
14718#endif
14719 playbackmode);
14720
14726 {
14727 return GetBitFlag(_TypeCast()->flag, EXP_VALUEisEXEC);
14728 }
14729
14736 twobyte GetExecutableShapeID() const
14737 {
14738 if (!GetUseExecutableShape()) return 0;
14739 return _TypeCast()->value;
14740 }
14741
14749 void SetExecutableShapeID(twobyte shapeID)
14750 {
14751 _TypeCast()->value = shapeID;
14752 SetUseExecutableShape((shapeID != 0) ? true : false);
14753 }
14754
14760 void SetUseExecutableShape(bool state)
14761 {
14762 Set16BitFlag(&_TypeCast()->flag, EXP_VALUEisEXEC, state);
14763 }
14764
14770 {
14771 return GetBitFlag(_TypeCast()->flag, TEXT_EXP_HIDEMEASURENUM);
14772 }
14773
14778 void SetHideMeasureNumbers(bool value)
14779 {
14780 Set16BitFlag(&_TypeCast()->flag, TEXT_EXP_HIDEMEASURENUM, value);
14781 }
14782
14787 bool GetUseEnclosure() const
14788 {
14789 return GetBitFlag(_TypeCast()->flag, TEXT_EXP_NEWENCLOSURE);
14790 }
14791
14796 void SetUseEnclosure(bool value)
14797 {
14798 Set16BitFlag(&_TypeCast()->flag, TEXT_EXP_NEWENCLOSURE, value);
14799 }
14800
14813 twobyte GetCategoryID() const
14814 {
14815#if FXT_VERSION >= FINALEVERSION_2014
14816 return (_TypeCast()->category & 0x3fff);
14817#else
14818 return (_TypeCast()->measYadjust & 0x3fff);
14819#endif
14820 }
14821
14827 twobyte GetTextID() const { return (_TypeCast()->textIDKey); }
14828
14836 {
14837 if (!GetBitFlag(_TypeCast()->flag, EXP_USEauxDATA)) return 0;
14838 if (!IsPlaybackTempo()) return 0;
14839 return _TypeCast()->value;
14840 }
14841
14850 {
14851 if (!GetBitFlag(_TypeCast()->flag, EXP_USEauxDATA)) return 0;
14852 if (!IsPlaybackTempo()) return 0;
14853 return _TypeCast()->auxdata1;
14854 }
14855
14862 twobyte GetPlaybackPass() const
14863 {
14864 return _TypeCast()->playPass;
14865 }
14866
14873 void SetPlaybackPass(twobyte value)
14874 {
14875 _TypeCast()->playPass = value;
14876 }
14877
14883 {
14884 if (GetPlaybackType() != EXPPLAYTYPE_KEYVELOCITY) return 0;
14885 return _TypeCast()->value;
14886 }
14887
14894 void SetPlaybackKeyVelocity(twobyte value)
14895 {
14896 if (value < 0) value = 0;
14897 if (value > 127) value = 127;
14899 _TypeCast()->value = value;
14900 }
14901
14907#ifndef PDK_FRAMEWORK_LUAFRIENDLY
14909#else
14910 int
14911#endif
14913 {
14914 return (FCCategoryDef::VERT_ALIGNMENT) _TypeCast()->vertMeasExprAlign;
14915 }
14916
14923 {
14924#if FXT_VERSION >= FINALEVERSION_2014
14925 return _TypeCast()->yAdjustBaseline;
14926#else
14927 return _TypeCast()->noteYadjustBaseline;
14928#endif
14929 }
14930
14937 {
14938#if FXT_VERSION >= FINALEVERSION_2014
14939 return _TypeCast()->yAdjustEntry;
14940#else
14941 return _TypeCast()->noteYadjustEntry;
14942#endif
14943
14944 }
14945
14953#ifndef PDK_FRAMEWORK_LUAFRIENDLY
14955#else
14956 int
14957#endif
14959 {
14960 return (REHEARSALMARK_STYLES) _TypeCast()->categorySpecific;
14961 }
14962
14971#ifndef PDK_FRAMEWORK_LUAFRIENDLY
14973#else
14974 int
14975#endif
14976 value
14977 )
14978 {
14979 _TypeCast()->categorySpecific = value;
14980 }
14981
14987 bool GetBreakMMRest() const
14988 {
14989 return GetBitFlag(_TypeCast()->flag, TEXT_EXP_BREAKREST);
14990 }
14991
14997 void SetBreakMMRest(bool state)
14998 {
14999 Set16BitFlag(&_TypeCast()->flag, TEXT_EXP_BREAKREST, state);
15000 }
15001
15008 void SetCategoryID(twobyte ID)
15009 {
15010#if FXT_VERSION >= FINALEVERSION_2014
15011 _TypeCast()->category &= 0xc000;
15012 _TypeCast()->category |= (ID & 0x3fff);
15013#else
15014 _TypeCast()->measYadjust &= 0xc000;
15015 _TypeCast()->measYadjust |= (ID & 0x3fff);
15016#endif
15017 }
15018
15019
15030 void SetUseCategoryFont(bool value);
15031
15043 void SetUseCategoryPos(bool value);
15044
15052 {
15054 return _TypeCast()->value;
15055 return 0;
15056 }
15057
15065 {
15067 return _TypeCast()->auxdata1;
15068 return 0;
15069 }
15070
15075 void SetPlaybackController(twobyte controllernumber, twobyte value)
15076 {
15077 Set16BitFlag(&_TypeCast()->flag, EXP_USEauxDATA, true);
15078 _TypeCast()->flag &= ~EXP_DYTYPEBITS;
15079 _TypeCast()->flag |= EXP_MIDI_CONTROLLER;
15080 _TypeCast()->value = value;
15081 _TypeCast()->auxdata1 = controllernumber;
15082 }
15083
15088 void SetPlaybackTempo(TimeEdu32 eduduration, int tempo)
15089 {
15090 Set16BitFlag(&_TypeCast()->flag, EXP_USEauxDATA, true);
15091 _TypeCast()->flag &= ~EXP_DYTYPEBITS;
15092 _TypeCast()->flag |= EXP_TIME;
15093 _TypeCast()->value = tempo;
15094 _TypeCast()->auxdata1 = eduduration;
15095 }
15096
15104 {
15106 return _TypeCast()->value;
15107 return 0;
15108 }
15109
15116 void SetPlaybackTransposition(twobyte halfsteps)
15117 {
15119 _TypeCast()->value = halfsteps;
15120 }
15121
15130 twobyte GetPitchWheelValue() const
15131 {
15133 return _TypeCast()->value - 8192;
15134 return 0;
15135 }
15136
15143 void SetPitchWheelValue(twobyte value)
15144 {
15146 _TypeCast()->value = (std::min)((std::max)(0, static_cast<int>(value) + 8192), 2*8192);
15147 }
15148
15155#ifndef PDK_FRAMEWORK_LUAFRIENDLY
15157#else
15158 int
15159#endif
15160 value)
15161 {
15162 _TypeCast()->vertMeasExprAlign = (twobyte) value;
15163 }
15164
15170 void SetVerticalBaselineOffset(twobyte value)
15171 {
15172#if FXT_VERSION >= FINALEVERSION_2014
15173 _TypeCast()->yAdjustBaseline = value;
15174#else
15175 _TypeCast()->noteYadjustBaseline = value;
15176#endif
15177 }
15178
15184 void SetVerticalEntryOffset(twobyte value)
15185 {
15186#if FXT_VERSION >= FINALEVERSION_2014
15187 _TypeCast()->yAdjustEntry = value;
15188#else
15189 _TypeCast()->noteYadjustEntry = value;
15190#endif
15191 }
15192
15200#ifndef PDK_FRAMEWORK_LUAFRIENDLY
15202#else
15203 int
15204#endif
15206 {
15207#if FXT_VERSION >= FINALEVERSION_2014
15208 return (FCCategoryDef::HORIZ_JUSTIFICATION) _TypeCast()->horzExprAlign;
15209#else
15210 return (FCCategoryDef::HORIZ_JUSTIFICATION) _TypeCast()->measExprAlign;
15211#endif
15212 }
15213
15222#ifndef PDK_FRAMEWORK_LUAFRIENDLY
15224#else
15225 int
15226#endif
15227 value)
15228 {
15229#if FXT_VERSION >= FINALEVERSION_2014
15230 _TypeCast()->horzExprAlign = (twobyte) value;
15231#else
15232 _TypeCast()->measExprAlign = (twobyte) value;
15233#endif
15234 }
15235
15241#ifndef PDK_FRAMEWORK_LUAFRIENDLY
15243#else
15244 int
15245#endif
15247 {
15248#if FXT_VERSION >= FINALEVERSION_2014
15249 return (FCCategoryDef::HORIZ_ALIGNMENT) _TypeCast()->horzMeasExprAlign;
15250#else
15251 return (FCCategoryDef::HORIZ_ALIGNMENT) _TypeCast()->measAlign;
15252#endif
15253 }
15254
15261#ifndef PDK_FRAMEWORK_LUAFRIENDLY
15263#else
15264 int
15265#endif
15266 value)
15267 {
15268#if FXT_VERSION >= FINALEVERSION_2014
15269 _TypeCast()->horzMeasExprAlign = (twobyte) value;
15270#else
15271 _TypeCast()->measAlign = (twobyte) value;
15272#endif
15273 }
15274
15275
15281 twobyte GetHorizontalOffset() const
15282 {
15283 return _TypeCast()->measXadjust;
15284 }
15285
15291 void SetHorizontalOffset(twobyte value)
15292 {
15293 _TypeCast()->measXadjust = value;
15294 }
15295
15305
15306#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
15308 luabridge::RefCountedPtr<FCString> CreateTextString_GC()
15309 { return makeLuaSharedPtr(CreateTextString()); }
15310#endif
15311
15321
15322#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
15324 luabridge::RefCountedPtr<FCEnclosure> CreateEnclosure_GC()
15325 { return makeLuaSharedPtr(CreateEnclosure()); }
15326#endif
15327
15332 bool IsPlaybackTempo() const
15333 {
15334 return (GetPlaybackType() == EXPPLAYTYPE_TEMPO);
15335 }
15336
15344 {
15345 return false;
15346 }
15347
15351 bool IsKeyVelocity() const
15352 {
15354 }
15355
15362 {
15364 }
15365
15379 bool MakeRehearsalMark(FCString* pString, int measure);
15380
15388 bool SaveTextString(FCString* pString);
15389
15397 bool SaveNewTextBlock(FCString* pString);
15398
15404 bool DeleteTextBlock();
15405
15420 bool AssignToCategory(FCCategoryDef* pDef);
15421
15426 bool GetUseCategoryFont() const;
15427
15432 bool GetUseCategoryPos() const;
15433
15434
15439 void SetDescription(FCString* pDescriptionString);
15440
15445 void GetDescription(FCString* pDescriptionString);
15446
15455
15456#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
15458 luabridge::RefCountedPtr<FCString> CreateDescription_GC()
15459 { return makeLuaSharedPtr(CreateDescription()); }
15460#endif
15461
15462
15463#ifdef PDK_FRAMEWORK_DEBUG
15464 void DebugDump() override
15465 {
15467 FCString description;
15468 GetDescription(&description);
15469 DebugOutString("Description: ", description.GetCString());
15470 DebugOutInt("Category ID: ", GetCategoryID());
15471 FCString* pString = CreateTextString();
15472 DebugOutString("Rawstring: ", pString->GetCString());
15473 delete pString;
15474 }
15475#endif
15476};
15477
15478
15479
15488{
15489private:
15490#ifndef DOXYGEN_SHOULD_IGNORE_THIS
15491 bool _unicode;
15492
15493 EDTShapeExpression2004* _TypeCast() const { return (EDTShapeExpression2004*)_datablock; }
15494
15495 const char* _TypeCastTextPtr() const
15496 {
15497 if (_loadedsize <= 36) return NULL;
15498 char* pszReturn = (char*) _datablock;
15499 pszReturn += 36; /* 3 full incis */
15500 return pszReturn;
15501 }
15502
15503 void _AllocateMemory(int size);
15504
15505#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
15506protected:
15507#ifndef DOXYGEN_SHOULD_IGNORE_THIS
15508
15509 EXTAG Tag() const override {
15510 /* DataSizeLoad() sets the custom tag!!! */
15511 return GetCustomTag() ? GetCustomTag() : ot_ShapeExpression2004;
15512 }
15513 EVERSION EnigmaVersion() const override { return _unicode ? FINALEVERSION_2012 : FINALEVERSION_2010; }
15514
15515 int DataSizeLoad() const override;
15516 int DataSizeSave() const override;
15517 void* Allocate() override;
15518 void Deallocate() override;
15519 bool IsDynamicSize() override { return true; }
15520
15521
15522 __FCBaseData* CreateObject() override { return new FCShapeExpressionDef(); }
15523
15524#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
15525public:
15526
15527#ifndef DOXYGEN_SHOULD_IGNORE_THIS
15528
15529 bool Load(CMPER cmper) override;
15530
15531 bool Save() override;
15532
15535 bool SaveNew() override;
15536
15537 const char* ClassName() const override { return "FCShapeExpressionDef"; }
15538 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_SHAPEEXPRESSIONDEF; }
15539
15546 void* _GetShapeExpression() { return Allocate(); }
15547#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
15548
15554
15556 virtual ~FCShapeExpressionDef();
15557
15558
15559#ifdef PDK_FRAMEWORK_SHAPES
15561 bool LoadFirst() override { return Load(1); }
15562
15564 bool LoadNext() override
15565 {
15566 if (!DataIsLoaded()) return false;
15567 return Load(GetItemNo() + 1);
15568 }
15569
15578
15579#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
15582 luabridge::RefCountedPtr<FCShapeDef> CreateShapeDef_GC()
15583 { return makeLuaSharedPtr(CreateShapeDef()); }
15584#endif
15585
15586#endif // PDK_FRAMEWORK_SHAPES
15587
15594 {
15595 return GetBitFlag(_TypeCast()->flag, EXP_VALUEisEXEC);
15596 }
15597
15598
15604 {
15605 return !GetBitFlag(_TypeCast()->flag, SHAPE_EXP_LOCKDOWN);
15606 }
15607
15612 bool GetNoPrint() const
15613 {
15614 return GetBitFlag(_TypeCast()->flag, SHAPE_EXP_NOPRINT);
15615 }
15616
15621 bool GetBreakMMRest() const
15622 {
15623 return GetBitFlag(_TypeCast()->flag, SHAPE_EXP_BREAKMMREST);
15624 }
15625
15633 {
15634 if (!GetUseExecutableShape()) return 0;
15635 return _TypeCast()->value;
15636 }
15637
15642 twobyte GetID() const
15643 {
15644 return _TypeCast()->shapedef;
15645 }
15646
15654#ifndef PDK_FRAMEWORK_LUAFRIENDLY
15656#else
15657 int
15658#endif
15660 {
15661 twobyte setting; /* Shape expr def have another order than text expr defs */
15662#if FXT_VERSION >= FINALEVERSION_2014
15663 setting = (FCCategoryDef::HORIZ_JUSTIFICATION) _TypeCast()->horzExprAlign;
15664#else
15665 setting = (FCCategoryDef::HORIZ_JUSTIFICATION) _TypeCast()->measExprAlign;
15666#endif
15667 switch (setting)
15668 {
15669 case 0:
15671 case 1:
15673 default:
15675 }
15676
15677 }
15678
15684#ifndef PDK_FRAMEWORK_LUAFRIENDLY
15686#else
15687 int
15688#endif
15690 {
15691#if FXT_VERSION >= FINALEVERSION_2014
15692 return (FCCategoryDef::HORIZ_ALIGNMENT) _TypeCast()->horzMeasExprAlign;
15693#else
15694 return (FCCategoryDef::HORIZ_ALIGNMENT) _TypeCast()->measAlign;
15695#endif
15696 }
15697
15703 {
15704#if FXT_VERSION >= FINALEVERSION_2014
15705 return GetBitFlag(_TypeCast()->category, USE_CATEGORY_POS_MASK);
15706#elif FXT_VERSION >= FINALEVERSION_2012
15707 return GetBitFlag(_TypeCast()->measYadjust, USE_CATEGORY_POS_MASK);
15708#else
15709 return GetBitFlag(_TypeCast()->measYadjust, 0x4000);
15710#endif
15711 }
15712
15718 twobyte GetHorizontalOffset() const
15719 {
15720 return _TypeCast()->measXadjust;
15721 }
15722
15728 twobyte GetVerticalEntryOffset() const {
15729#if FXT_VERSION < FINALEVERSION_2014
15730 return _TypeCast()->noteYadjustEntry;
15731#else
15732 return _TypeCast()->yAdjustEntry;
15733#endif
15734 }
15735
15743#ifndef PDK_FRAMEWORK_LUAFRIENDLY
15745#else
15746 int
15747#endif
15749 {
15750 return (FCCategoryDef::VERT_ALIGNMENT) _TypeCast()->vertMeasExprAlign;
15751 }
15752
15759#if FXT_VERSION < FINALEVERSION_2014
15760 return _TypeCast()->noteYadjustBaseline;
15761#else
15762 return _TypeCast()->yAdjustBaseline;
15763#endif
15764 }
15765
15770 void GetDescription(FCString* pName);
15771
15772
15777 void SetID(twobyte shapeID)
15778 {
15779 _TypeCast()->shapedef = shapeID;
15780 }
15781
15790 void SetExecutableShapeID(twobyte shapeID)
15791 {
15792 _TypeCast()->value = shapeID;
15793 SetUseExecutableShape((shapeID != 0) ? true : false);
15794 }
15795
15802 void SetUseExecutableShape(bool state)
15803 {
15804 Set16BitFlag(&_TypeCast()->flag, EXP_VALUEisEXEC, state);
15805 }
15806
15812 {
15813 Set16BitFlag(&_TypeCast()->flag, SHAPE_EXP_LOCKDOWN, !state);
15814 }
15815
15820 void SetNoPrint(bool state)
15821 {
15822 Set16BitFlag(&_TypeCast()->flag, SHAPE_EXP_NOPRINT, state);
15823 }
15824
15829 void SetBreakMMRest(bool state)
15830 {
15831 Set16BitFlag(&_TypeCast()->flag, SHAPE_EXP_BREAKMMREST, state);
15832 }
15833
15834
15841 twobyte GetCategoryID() const
15842 {
15843#if FXT_VERSION >= FINALEVERSION_2014
15844 return (_TypeCast()->category & 0x3fff);
15845#else
15846 return (_TypeCast()->measYadjust & 0x3fff);
15847#endif
15848 }
15849
15856 void SetCategoryID(twobyte ID)
15857 {
15858#if FXT_VERSION >= FINALEVERSION_2014
15859 _TypeCast()->category &= 0xc000;
15860 _TypeCast()->category |= (ID & 0x3fff);
15861#else
15862 _TypeCast()->measYadjust &= 0xc000;
15863 _TypeCast()->measYadjust |= (ID & 0x3fff);
15864#endif
15865 }
15866
15867
15876#ifndef PDK_FRAMEWORK_LUAFRIENDLY
15878#else
15879 int
15880#endif
15881 value)
15882 {
15883 /* Shape expr defs have the flags in another way than text expr defs... */
15884 twobyte setting = 0;
15885 switch (value)
15886 {
15888 setting = 0;
15889 break;
15891 setting = 1;
15892 break;
15894 setting = 2;
15895 break;
15896 }
15897#if FXT_VERSION >= FINALEVERSION_2014
15898 _TypeCast()->horzExprAlign = (twobyte) setting;
15899#else
15900 _TypeCast()->measExprAlign = (twobyte) setting;
15901#endif
15902 }
15903
15912#ifndef PDK_FRAMEWORK_LUAFRIENDLY
15914#else
15915 int
15916#endif
15917 value)
15918 {
15919#if FXT_VERSION >= FINALEVERSION_2014
15920 _TypeCast()->horzMeasExprAlign = (twobyte) value;
15921#else
15922 _TypeCast()->measAlign = (twobyte) value;
15923#endif
15924 }
15925
15930 void SetUseCategoryPos(bool value)
15931 {
15932#if FXT_VERSION >= FINALEVERSION_2014
15933 Set16BitFlag((FLAG_16*) &_TypeCast()->category, USE_CATEGORY_POS_MASK, value);
15934#elif FXT_VERSION >= FINALEVERSION_2012
15935 Set16BitFlag((FLAG_16*) &_TypeCast()->measYadjust, USE_CATEGORY_POS_MASK, value);
15936#else
15937 Set16BitFlag((FLAG_16*) &_TypeCast()->measYadjust, 0x4000, value);
15938#endif
15939 }
15940
15946 void SetHorizontalOffset(twobyte value)
15947 {
15948 _TypeCast()->measXadjust = value;
15949 }
15950
15956 void SetVerticalEntryOffset(twobyte value)
15957 {
15958#if FXT_VERSION < FINALEVERSION_2014
15959 _TypeCast()->noteYadjustEntry = value;
15960#else
15961 _TypeCast()->yAdjustEntry = value;
15962#endif
15963 }
15964
15973#ifndef PDK_FRAMEWORK_LUAFRIENDLY
15975#else
15976 int
15977#endif
15978 value)
15979 {
15980 _TypeCast()->vertMeasExprAlign = (twobyte) value;
15981 }
15982
15988 void SetVerticalBaselineOffset(twobyte value) {
15989#if FXT_VERSION < FINALEVERSION_2014
15990 _TypeCast()->noteYadjustBaseline = value;
15991#else
15992 _TypeCast()->yAdjustBaseline = value;
15993#endif
15994 }
15995
16000 void SetDescription(FCString* pName);
16001
16002#ifdef PDK_FRAMEWORK_SHAPES
16010 {
16011 if (!pShapeDef) return false;
16012 if (pShapeDef->GetItemNo() < 1) return false;
16013 _TypeCast()->shapedef = pShapeDef->GetItemNo();
16014 return true;
16015 }
16016#endif
16017
16025
16026#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
16028 luabridge::RefCountedPtr<FCString> CreateDescription_GC()
16029 { return makeLuaSharedPtr(CreateDescription()); }
16030#endif
16031
16032#ifdef PDK_FRAMEWORK_DEBUG
16033 void DebugDump() override
16034 {
16036 DebugOutInt("Category ID: ", GetCategoryID());
16037 }
16038#endif
16039};
16040
16041
16048{
16049private:
16050#ifndef DOXYGEN_SHOULD_IGNORE_THIS
16051 EDTTextBlock2004 _textblock2004; /* Pre 25.4-version of the struct */
16052#if FXT_VERSION >= FINALEVERSION_25_4
16053 EDTTextBlock25_4 _textblock25_4; /* 25.4 and above */
16054#endif
16055#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
16056
16057 /* If true, use the 25.4 struct. If false, use the old 2004 struct. */
16058 bool UseVersion25_4() const;
16059
16060 /* Returns the pointer to the flag member in the struct. */
16061 const FLAG_16* _GetFlagPtr() const
16062 {
16063 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.flag; )
16064 return &_textblock2004.flag;
16065 }
16066
16067 /* Returns the pointer to the textID member in the struct. */
16068 const eText* _GetTextIDPtr() const
16069 {
16070 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.textID; )
16071 return &_textblock2004.textID;
16072 }
16073
16074 /* Returns the pointer to the shapeID member in the struct. */
16075 const eShape* _GetShapeIDPtr() const
16076 {
16077 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.shapeID; )
16078 return &_textblock2004.shapeID;
16079 }
16080
16081 /* Returns the pointer to the lineSpacing member in the struct. */
16082 const twobyte* _GetLineSpacingPtr() const
16083 {
16084 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.lineSpacing; )
16085 return &_textblock2004.lineSpacing;
16086 }
16087
16088 /* Returns the pointer to the textTag member in the struct. */
16089 const ETAG* _GetTextTagPtr() const
16090 {
16091 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.textTag; )
16092 return &_textblock2004.textTag;
16093 }
16094
16095 /* Returns the pointer to the width member in the struct. */
16096 const Evpu16* _GetWidthPtr() const
16097 {
16098 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.width; )
16099 return &_textblock2004.width;
16100 }
16101
16102 /* Returns the pointer to the height member in the struct. */
16103 const Evpu16* _GetHeightPtr() const
16104 {
16105 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.height; )
16106 return &_textblock2004.height;
16107 }
16108
16109 /* Returns the pointer to the xadd member in the struct. */
16110 const Evpu16* _GetXaddPtr() const
16111 {
16112 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.xadd; )
16113 return &_textblock2004.xadd;
16114 }
16115
16116 /* Returns the pointer to the yadd member in the struct. */
16117 const Evpu16* _GetYaddPtr() const
16118 {
16119 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.yadd; )
16120 return &_textblock2004.yadd;
16121 }
16122
16123 /* Returns the pointer to the insethi member in the struct. */
16124 const EVPUFixedShort* _GetInsetHiPtr() const
16125 {
16126 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.insethi; )
16127 return &_textblock2004.insethi;
16128 }
16129
16130 /* Returns the pointer to the insetlo member in the struct. */
16131 const EVPUFixedShort* _GetInsetLoPtr() const
16132 {
16133 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.insetlo; )
16134 return &_textblock2004.insetlo;
16135 }
16136
16137 /* Returns the pointer to the stdlinelo member in the struct. */
16138 const EVPUFixedShort* _GetStdLineLoPtr() const
16139 {
16140 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.stdlinelo; )
16141 return &_textblock2004.stdlinelo;
16142 }
16143
16144 /* Returns the pointer to the stdlinehi member in the struct. */
16145 const EVPUFixedShort* _GetStdLineHiPtr() const
16146 {
16147 FIN25_4_CODE(if (UseVersion25_4()) return &_textblock25_4.stdlinehi; )
16148 return &_textblock2004.stdlinehi;
16149 }
16150protected:
16151#ifndef DOXYGEN_SHOULD_IGNORE_THIS
16152
16153 EXTAG Tag() const override { return ot_TextBlock; }
16154
16155 int DataSizeLoad() const override {
16156 FIN25_4_CODE(if (UseVersion25_4()) return sizeof(EDTTextBlock25_4);)
16157 return sizeof(EDTTextBlock2004);
16158 }
16159 void* Allocate() override
16160 {
16161 FIN25_4_CODE( if (UseVersion25_4()) return (void*) &_textblock25_4; )
16162 return (void*) &_textblock2004;
16163 }
16164
16169 void CloneMemoryFrom(__FCBaseData* pSource) override
16170 {
16171 void* pTextBlock = Allocate();
16172 memcpy(pTextBlock, ((FCTextBlock*)pSource)->_GetTextBlock(), DataSizeLoad());
16173 _datablock = pTextBlock;
16175 }
16176
16177 __FCBaseData* CreateObject() override { return new FCTextBlock(); }
16178
16179#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
16180public:
16181
16184 {
16185 TEXTJUSTIFY_LEFT = TEXT_JUSTIFY_LEFT,
16186 TEXTJUSTIFY_RIGHT = TEXT_JUSTIFY_RIGHT,
16187 TEXTJUSTIFY_CENTER = TEXT_JUSTIFY_CENTER,
16188 TEXTJUSTIFY_FULL = TEXT_JUSTIFY_FULL,
16189 TEXTJUSTIFY_FORCED_FULL = TEXT_JUSTIFY_FORCED_FULL
16190 };
16191
16192
16193 const char* ClassName() const override { return "FCTextBlock"; }
16194 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_TEXTBLOCK; }
16195
16196#ifndef DOXYGEN_SHOULD_IGNORE_THIS
16203 void* _GetTextBlock() { return Allocate(); }
16204#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
16205
16208 {
16209 void* pTextBlock = Allocate();
16210 int size = DataSizeLoad();
16211 memset(pTextBlock, 0, size);
16212 Set16BitFlag( (FLAG_16*)_GetFlagPtr(),
16213 TEXTBLOCK_NEWPOS | TEXTBLOCK_SHOWMAINSHAPE |
16214 TEXTBLOCK_WORDWRAP | TEXTBLOCK_LINESPACINGISPERCENT,
16215 true);
16216 SetLineSpacing(100);
16217 SetRawText(0, LO_UTWOBYTE(tx_TextBlock)); /* Default to tx_TextBlock */
16218 _datablock = pTextBlock;
16219 _loadedsize = size;
16220 }
16221
16226 twobyte GetRawTextID() const { return *_GetTextIDPtr(); }
16227
16231 void _SetRawTextID(twobyte therawtextid) { *(eText*)_GetTextIDPtr() = therawtextid; }
16232
16235 {
16236 EXTAG rawtextextag = tx_TextBlock;
16237 rawtextextag &= 0xffff0000;
16238 rawtextextag |= *_GetTextTagPtr();
16239 return rawtextextag;
16240 }
16241
16248 twobyte GetShapeID() const { return *_GetShapeIDPtr(); }
16249
16258
16259#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
16261 luabridge::RefCountedPtr<FCString> CreateRawTextString_GC()
16262 { return makeLuaSharedPtr(CreateRawTextString()); }
16263#endif
16264
16274 bool SaveRawTextString(FCString* pString);
16275
16284 bool SaveNewRawTextString(FCString* pString);
16285
16290 void SetShapeID(twobyte shapeID) { *(eShape*)_GetShapeIDPtr() = shapeID; }
16291
16294 void SetRawText(twobyte theid, ETAG tag = LO_UTWOBYTE(tx_TextBlock))
16295 {
16296 *(eText*)_GetTextIDPtr() = theid;
16297 *(ETAG*)_GetTextTagPtr() = tag;
16298 }
16299
16306 void SetJustification(FLAG_16 justification)
16307 {
16308 FLAG_16* pFlag = (FLAG_16*) _GetFlagPtr();
16309 *pFlag &= ~TEXTBLOCK_JUSTIBITS;
16310 *pFlag |= (justification % TEXTBLOCK_JUSTIBITS);
16311 }
16312
16314 bool DeepDeleteData() override
16315 {
16316 FCRawText rawtext;
16317 rawtext.SetCustomTag(GetRawTextExtag());
16318 rawtext.Load(GetRawTextID());
16319 rawtext.DeleteData();
16320 return DeleteData();
16321 }
16322
16327 twobyte GetLineSpacing() const { return *_GetLineSpacingPtr(); }
16328
16329
16334 void SetLineSpacing(twobyte linespacing) { *(twobyte*)_GetLineSpacingPtr() = linespacing; }
16335
16336
16343 FLAG_16 GetJustification() const
16344 {
16345 return (*_GetFlagPtr() & TEXTBLOCK_JUSTIBITS);
16346 }
16347
16356 {
16357 return GetBitFlag(*_GetFlagPtr(), TEXTBLOCK_NEWPOS);
16358 }
16359
16367 {
16368 return GetBitFlag(*_GetFlagPtr(), TEXTBLOCK_LINESPACINGISPERCENT);
16369 }
16370
16377 bool GetWordWrap() const
16378 {
16379 return GetBitFlag(*_GetFlagPtr(), TEXTBLOCK_WORDWRAP);
16380 }
16381
16388 {
16389 return !GetBitFlag(*_GetFlagPtr(), TEXTBLOCK_NOEXPANDSINGLEWORD);
16390 }
16391
16401 {
16402 FIN25_4_CODE( if (UseVersion25_4()) return GetBitFlag(*_GetFlagPtr(), TEXTBLOCK_ROUND_CORNERS); )
16403 return false;
16404 }
16405
16416 {
16417 FIN25_4_CODE( if (UseVersion25_4()) return _textblock25_4.m_cornerRadius; )
16418 return 0;
16419 }
16420
16421
16432 void SetFrameReference(bool state)
16433 {
16434 Set16BitFlag((FLAG_16*) _GetFlagPtr(), TEXTBLOCK_NEWPOS, state);
16435 }
16436
16444 {
16445 Set16BitFlag((FLAG_16*) _GetFlagPtr(), TEXTBLOCK_LINESPACINGISPERCENT, state);
16446 }
16447
16454 void SetWordWrap(bool state)
16455 {
16456 Set16BitFlag((FLAG_16*) _GetFlagPtr(), TEXTBLOCK_WORDWRAP, state);
16457 }
16458
16464 void SetExpandSingleWord(bool state)
16465 {
16466 Set16BitFlag((FLAG_16*) _GetFlagPtr(), TEXTBLOCK_NOEXPANDSINGLEWORD, !state);
16467 }
16468
16477 void SetRoundedCorners(bool state)
16478 {
16479 FIN25_4_CODE( if (UseVersion25_4()) Set16BitFlag((FLAG_16*) _GetFlagPtr(), TEXTBLOCK_ROUND_CORNERS, state); )
16480 }
16481
16491 void SetRoundedCornerRadius(Efix32 radius)
16492 {
16493 FIN25_4_CODE( if (UseVersion25_4()) _textblock25_4.m_cornerRadius = radius; )
16494 }
16495
16500 void SetLineWidth(int value)
16501 {
16502 *(EVPUFixedShort*)_GetStdLineLoPtr() = LOWORD(value);
16503 *(EVPUFixedShort*)_GetStdLineHiPtr() = HIWORD(value);
16504 }
16505
16510 void SetLineInset(int value)
16511 {
16512 *(EVPUFixedShort*)_GetInsetLoPtr() = LOWORD(value);
16513 *(EVPUFixedShort*)_GetInsetHiPtr() = HIWORD(value);
16514 }
16515
16521 {
16522 *(Evpu16*) _GetXaddPtr() = value;
16523 }
16524
16530 {
16531 *(Evpu16*) _GetYaddPtr() = value;
16532 }
16533
16538 void SetShowBorders(bool state)
16539 {
16540 Set16BitFlag((FLAG_16*)_GetFlagPtr(), TEXTBLOCK_SHOWMAINSHAPE, state);
16541 }
16542
16551 void SetWidth(Evpu16 width)
16552 {
16553 *(Evpu16*)_GetWidthPtr() = width;
16554 }
16555
16564 void SetHeight(Evpu16 height)
16565 {
16566 *(Evpu16*)_GetHeightPtr() = height;
16567 }
16568
16569
16574 int GetLineWidth() const
16575 {
16576 return MAKELONG(*_GetStdLineLoPtr(), *_GetStdLineHiPtr());
16577 }
16578
16583 int GetLineInset() const
16584 {
16585 return MAKELONG(*_GetInsetLoPtr(), *_GetInsetHiPtr());
16586 }
16587
16593 {
16594 return *_GetXaddPtr();
16595 }
16596
16602 {
16603 return *_GetYaddPtr();
16604 }
16605
16610 bool GetShowBorders() const
16611 {
16612 return GetBitFlag(*_GetFlagPtr(), TEXTBLOCK_SHOWMAINSHAPE);
16613 }
16614
16623 Evpu16 GetWidth() const
16624 {
16625 return *_GetWidthPtr();
16626 }
16627
16636 Evpu16 GetHeight() const
16637 {
16638 return *_GetHeightPtr();
16639 }
16640
16648 {
16649 return (GetWidth() == 0);
16650 }
16651
16660 {
16661 return (GetHeight() == 0);
16662 }
16663
16664#ifdef PDK_FRAMEWORK_DEBUG
16665 void DebugDump() override
16666 {
16668 DebugOutInt("Raw text ID: ", GetRawTextID());
16669 DebugOutHex("Text tag (hex): ", *_GetTextTagPtr());
16670 DebugOutHex("flag (hex): ", *_GetFlagPtr());
16671 }
16672#endif
16673};
16674
16675
16687{
16688private:
16689#ifndef DOXYGEN_SHOULD_IGNORE_THIS
16690 EDTPageText _pagetext;
16691#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
16692protected:
16693#ifndef DOXYGEN_SHOULD_IGNORE_THIS
16694
16695 EXTAG Tag() const override { return ot_PageText; }
16696 int DataSizeLoad() const override { return sizeof(EDTPageText); }
16697 void* Allocate() override { return (void*) &_pagetext; }
16698
16703 void CloneMemoryFrom(__FCBaseData* pSource) override
16704 {
16705 memcpy(&_pagetext, ((FCPageText*)pSource)->_GetPageText(), sizeof(_pagetext));
16706 _datablock = &_pagetext;
16707 _loadedsize = sizeof(_pagetext);
16708 }
16709
16710 __FCBaseData* CreateObject() override
16711 { return new FCPageText(); }
16712
16713
16715 bool LoadFirst() override
16716 {
16717 SetCmperAndInci(0, 0);
16718 if (Load(0, 0)) return true;
16719 return LoadNext();
16720 }
16721
16722#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
16723public:
16724
16730 {
16732 TEXTHORIZALIGN_LEFT = TEXT_HALIGN_LEFT,
16734 TEXTHORIZALIGN_RIGHT = TEXT_HALIGN_RIGHT,
16736 TEXTHORIZALIGN_CENTER = TEXT_HALIGN_CENTER
16738
16744 {
16746 TEXTVERTALIGN_TOP = TEXT_VALIGN_TOP,
16748 TEXTVERTALIGN_BOTTOM = TEXT_VALIGN_BOTTOM,
16750 TEXTVERTALIGN_CENTER = TEXT_VALIGN_CENTER
16752
16758 {
16760 TEXTASSIGN_ALL = PAGETEXT_ASSIGN_ALL,
16762 TEXTASSIGN_ODD = PAGETEXT_ASSIGN_ODD,
16764 TEXTASSIGN_EVEN = PAGETEXT_ASSIGN_EVEN
16766
16767 const char* ClassName() const override { return "FCPageText"; }
16768 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_PAGETEXT; }
16769
16770#ifndef DOXYGEN_SHOULD_IGNORE_THIS
16777 void* _GetPageText() { return Allocate(); }
16778#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
16779
16785 {
16786 memset(&_pagetext, 0, sizeof(_pagetext));
16787 _datablock = &_pagetext;
16788 _loadedsize = sizeof(_pagetext);
16789 }
16790
16800 {
16801 FCTextBlock textblock;
16802 textblock.Load(GetTextBlockID());
16803 return textblock.CreateRawTextString();
16804 }
16805
16806#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
16808 luabridge::RefCountedPtr<FCString> CreateTextString_GC()
16809 { return makeLuaSharedPtr(CreateTextString()); }
16810#endif
16811
16821
16822#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
16824 luabridge::RefCountedPtr<FCTextBlock> CreateTextBlock_GC()
16825 { return makeLuaSharedPtr(CreateTextBlock()); }
16826#endif
16827
16834 twobyte GetFirstPage() const
16835 {
16836 return _pagetext.startPage;
16837 }
16838
16845 twobyte GetLastPage() const
16846 {
16847 return _pagetext.endPage;
16848 }
16849
16856#ifndef PDK_FRAMEWORK_LUAFRIENDLY
16858#else
16859 int
16860#endif
16862 {
16863 return (TEXT_HORIZONTAL_ALIGN) ((_pagetext.flag & PAGETEXT_HPOS_LP_BITS) >> 2);
16864 }
16865
16871#ifndef PDK_FRAMEWORK_LUAFRIENDLY
16873#else
16874 int
16875#endif
16877 {
16878 return (TEXT_VERTICAL_ALIGN) ((_pagetext.flag & PAGETEXT_VPOS_BITS) >> 8);
16879 }
16880
16887#ifndef PDK_FRAMEWORK_LUAFRIENDLY
16889#else
16890 int
16891#endif
16893 {
16894 return (TEXT_HORIZONTAL_ALIGN) ((_pagetext.flag & PAGETEXT_HPOS_RP_BITS) >> 4);
16895 }
16896
16901#ifndef PDK_FRAMEWORK_LUAFRIENDLY
16903#else
16904 int
16905#endif
16907 {
16908 return (TEXT_ASSIGNMENT) (_pagetext.flag & PAGETEXT_OE_BITS);
16909 }
16910
16918 bool GetPageEdgeRef() const
16919 {
16920 return GetBitFlag(_pagetext.flag, PAGETEXT_HPOS_PAGE_EDGE);
16921 }
16922
16929 bool GetFrameEdgeRef() const
16930 {
16931 FCTextBlock textblock;
16932 if (!textblock.Load(GetTextBlockID())) return false;
16933 return textblock.GetFrameReference();
16934 }
16935
16936
16941 twobyte GetHorizontalPos() const
16942 {
16943 return _pagetext.xdisp;
16944 }
16945
16951 {
16952 return _pagetext.rightpgxdisp;
16953 }
16954
16959 twobyte GetVerticalPos() const
16960 {
16961 return _pagetext.ydisp;
16962 }
16963
16969 {
16970 return _pagetext.rightpgydisp;
16971 }
16972
16978 bool GetVisible() const
16979 {
16980 return !GetBitFlag(_pagetext.flag, (PAGETEXT_ANNOTATION));
16981 }
16982
16988 {
16989 return GetBitFlag(_pagetext.flag, PAGETEXT_INDRP_POS);
16990 }
16991
16997 CMPER GetTextBlockID() const
16998 {
16999 return _pagetext.block;
17000 }
17001
17006 void _SetTextBlockID(CMPER textblockid)
17007 {
17008 _pagetext.block = textblockid;
17009 }
17010
17018 CMPER GetStringID() const;
17019
17026 bool SaveNewTextBlock(FCString* pString);
17027
17033 bool SaveTextString(FCString* pString);
17034
17045#ifndef PDK_FRAMEWORK_LUAFRIENDLY
17047#else
17048 FLAG_16
17049#endif
17050 alignment
17051 )
17052 {
17053 _pagetext.flag &= ~PAGETEXT_HPOS_LP_BITS;
17054 _pagetext.flag |= ((alignment << 2) & PAGETEXT_HPOS_LP_BITS);
17056 }
17057
17065#ifndef PDK_FRAMEWORK_LUAFRIENDLY
17067#else
17068 FLAG_16
17069#endif
17070 alignment)
17071 {
17072 _pagetext.flag &= ~PAGETEXT_HPOS_RP_BITS;
17073 _pagetext.flag |= ((alignment << 4) & PAGETEXT_HPOS_RP_BITS);
17074 }
17075
17082#ifndef PDK_FRAMEWORK_LUAFRIENDLY
17084#else
17085 int
17086#endif
17087 alignment
17088 )
17089 {
17090 _pagetext.flag &= ~PAGETEXT_VPOS_BITS;
17091 _pagetext.flag |= ((alignment << 8) & PAGETEXT_VPOS_BITS);
17092 }
17093
17099#ifndef PDK_FRAMEWORK_LUAFRIENDLY
17101#else
17102 int
17103#endif
17104 assign
17105 )
17106 {
17107 _pagetext.flag &= ~PAGETEXT_OE_BITS;
17108 _pagetext.flag |= (assign & PAGETEXT_OE_BITS);
17109 }
17110
17118 void SetFirstPage(ePage page)
17119 {
17120 _pagetext.startPage = page;
17121 }
17122
17130 void SetLastPage(ePage page)
17131 {
17132 _pagetext.endPage = page;
17133 }
17134
17142 void SetHorizontalPos(twobyte value)
17143 {
17144 _pagetext.xdisp = value;
17146 }
17147
17152 void SetHorizontalPosRightPage(twobyte value)
17153 {
17154 _pagetext.rightpgxdisp = value;
17155 }
17156
17165 void SetVerticalPos(twobyte value)
17166 {
17167 _pagetext.ydisp = value;
17169 }
17170
17175 void SetVerticalPosRightPage(twobyte value)
17176 {
17177 _pagetext.rightpgydisp = value;
17178 }
17179
17185 void SetVisible(bool visible)
17186 {
17187 Set16BitFlag(&_pagetext.flag, PAGETEXT_ANNOTATION, !visible);
17188 }
17189
17195 {
17196 Set16BitFlag(&_pagetext.flag, PAGETEXT_INDRP_POS, state);
17197 }
17198
17210 void SetPageEdgeRef(bool state)
17211 {
17212 Set16BitFlag(&_pagetext.flag, PAGETEXT_HPOS_PAGE_EDGE, state);
17213 Set16BitFlag(&_pagetext.flag, PAGETEXT_VPOS_PAGE_EDGE, state);
17214 }
17215
17222 void SetFrameEdgeRef(bool state)
17223 {
17224 FCTextBlock textblock;
17225 if (!textblock.Load(GetTextBlockID())) return;
17226 textblock.SetFrameReference(state);
17227 textblock.Save();
17228 }
17229
17231 bool DeepDeleteData() override
17232 {
17233 FCTextBlock textblock;
17234 textblock.Load(GetTextBlockID());
17235 textblock.DeepDeleteData();
17236 return DeleteData();
17237 }
17238
17239#ifdef PDK_FRAMEWORK_DEBUG
17240 void DebugDump() override
17241 {
17243 DebugOutInt("First page: ", GetFirstPage());
17244 DebugOutInt("Last page: ", GetLastPage());
17245 DebugOutHex("Flag (hex): ", _pagetext.flag);
17246 }
17247#endif
17248};
17249
17250
17251
17252
17253
17270{
17271 private:
17272#ifndef DOXYGEN_SHOULD_IGNORE_THIS
17273 EDTSeparatePlacement _separateplacement;
17274#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
17275protected:
17276#ifndef DOXYGEN_SHOULD_IGNORE_THIS
17277
17278 EXTAG Tag() const override { return GetCustomTag() ? GetCustomTag() : ot_SeparateBackwardRepeatPlacement; }
17279 int DataSizeLoad() const override { return sizeof(EDTSeparatePlacement); }
17280 void* Allocate() override { return (void*) &_separateplacement; }
17281
17286 void CloneMemoryFrom(__FCBaseData* pSource) override
17287 {
17288 memcpy(&_separateplacement, ((FCSeparatePlacement*)pSource)->_GetSeparatePlacement(), sizeof(_separateplacement));
17289 _datablock = &_separateplacement;
17290 _loadedsize = sizeof(_separateplacement);
17291 }
17292
17293 __FCBaseData* CreateObject() override { return new FCSeparatePlacement(); }
17294
17295#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
17296public:
17315
17316 const char* ClassName() const override { return "FCSeparatePlacement"; }
17317 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_SEPARATEPLACEMENT; }
17318
17319#ifndef DOXYGEN_SHOULD_IGNORE_THIS
17326 void* _GetSeparatePlacement() { return Allocate(); }
17327#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
17328
17334 {
17335 memset(&_separateplacement, 0, sizeof(_separateplacement));
17336 _datablock = &_separateplacement;
17337 _loadedsize = sizeof(_separateplacement);
17338 }
17339
17340
17351#ifndef PDK_FRAMEWORK_LUAFRIENDLY
17353#else
17354 int
17355#endif
17356 mode
17357 )
17358 {
17359 switch (mode)
17360 {
17362 SetCustomTag(ot_SeparateTextRepeatPlacement);
17363 break;
17365 SetCustomTag(ot_SeparateBackwardRepeatPlacement);
17366 break;
17368 SetCustomTag(ot_SeparateEndingRepeatPlacement);
17369 break;
17371 SetCustomTag(ot_SeparateEndingRepeatTextPlacement);
17372 break;
17373 }
17374 }
17375
17387#ifndef PDK_FRAMEWORK_LUAFRIENDLY
17389#else
17390 int
17391#endif
17392 GetMode() const
17393 {
17394 switch(GetCustomTag())
17395 {
17396 case ot_SeparateTextRepeatPlacement:
17398 case ot_SeparateEndingRepeatPlacement:
17400 case ot_SeparateEndingRepeatTextPlacement:
17402 case ot_SeparateBackwardRepeatPlacement:
17403 default:
17405 }
17406 }
17407
17412 eStaff GetStaff() const override { return _separateplacement.instno; }
17413
17415 bool HasStaffValue() const override { return true; }
17416
17425 twobyte GetMeasure() const override
17426 {
17428 return _separateplacement.measure;
17429 return 0;
17430 }
17431
17441 Evpu16 GetHorizontalOffset1() const { return _separateplacement.x1add; }
17442
17452 Evpu16 GetVerticalOffset1() const { return _separateplacement.y1add; }
17453
17463 {
17464 switch (GetMode())
17465 {
17468 return _separateplacement.x2add;
17469
17470 default:
17471 break;
17472 }
17473 return 0;
17474 }
17475
17484 Evpu16 GetVerticalOffset2() const
17485 {
17486 switch (GetMode())
17487 {
17490 return _separateplacement.y2add;
17491
17492 default:
17493 break;
17494 }
17495 return 0;
17496 }
17497
17504 void SetStaff(eStaff staff) { _separateplacement.instno = staff; }
17505
17514 void SetMeasure(twobyte meas)
17515 {
17517 _separateplacement.measure = meas;
17518 }
17519
17529 void SetHorizontalOffset1(Evpu16 value) { _separateplacement.x1add = value; }
17530
17540 void SetVerticalOffset1(Evpu16 value) { _separateplacement.y1add = value; }
17541
17550 void SetHorizontalOffset2(Evpu16 value)
17551 {
17552 switch (GetMode())
17553 {
17556 _separateplacement.x2add = value;
17557 break;
17558
17559 default:
17560 break;
17561 }
17562 }
17563
17572 void SetVerticalOffset2(Evpu16 value)
17573 {
17574 switch (GetMode())
17575 {
17578 _separateplacement.y2add = value;
17579 break;
17580
17581 default:
17582 break;
17583 }
17584 }
17585
17592 bool GetVisible() const
17593 {
17594 switch (GetMode())
17595 {
17598 return !GetBitFlag(_separateplacement.measure, SEPARATES_HIDDEN); // reverse bit
17599
17601 return !GetBitFlag(_separateplacement.y2add, SEPARATES_HIDDEN);
17602
17603 default:
17604 break;
17605 }
17606 return true;
17607 }
17608
17615 void SetVisible(bool state)
17616 {
17617 switch (GetMode())
17618 {
17621 return Set16BitFlag(reinterpret_cast<FLAG_16*>(&_separateplacement.measure), SEPARATES_HIDDEN, !state); // reverse bit
17622
17624 return Set16BitFlag(reinterpret_cast<FLAG_16*>(&_separateplacement.y2add), SEPARATES_HIDDEN, !state);
17625
17626 default:
17627 break;
17628 }
17629 }
17630};
17631
17632
17633class FCCell;
17634
17641{
17642private:
17643#ifndef DOXYGEN_SHOULD_IGNORE_THIS
17644 EDTScoreExpression2009 _expression;
17645#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
17646protected:
17647#ifndef DOXYGEN_SHOULD_IGNORE_THIS
17648
17649 int DataSizeLoad() const override { return sizeof(EDTScoreExpression2009); }
17650 void* Allocate() override { return (void*) &_expression; }
17651
17656 void CloneMemoryFrom(__FCBaseData* pSource) override
17657 {
17658 memcpy(&_expression, ((FCExpression*)pSource)->_GetExpression(), sizeof(_expression));
17659 _datablock = &_expression;
17660 _loadedsize = sizeof(_expression);
17661 }
17662
17663 __FCBaseData* CreateObject() override { return new FCExpression(); }
17664
17665#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
17666public:
17667
17683
17684
17685 const char* ClassName() const override { return "FCExpression"; }
17686 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_EXPRESSION; }
17687
17688 EXTAG Tag() const override { return ot_ScoreExpression2009; } /* Tag is required to be public for some plug-ins */
17689
17690#ifndef DOXYGEN_SHOULD_IGNORE_THIS
17697 void* _GetExpression() { return Allocate(); }
17698#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
17699
17705 {
17706 memset(&_expression, 0, sizeof(_expression));
17707 _datablock = &_expression;
17708 _loadedsize = sizeof(_expression);
17709 }
17710
17711
17719
17727
17738 bool CalcMetricPos(FCPoint* pPoint);
17739
17745 {
17747 SetVerticalPos(0);
17748 }
17749
17758 twobyte GetStaff() const override { return _expression.staffAssign; }
17759
17760#ifdef PDK_FRAMEWORK_LAYOUT
17772 eStaff CalcStaffInPageView() const;
17773
17786 eStaff CalcStaffInScrollView() const;
17787
17798 eStaff CalcStaffInCurrentView() const;
17799#endif // PDK_FRAMEWORK_LAYOUT
17800
17802 bool HasStaffValue() const override { return true; }
17803
17810 eMeas GetMeasure() const override { return _dataid.other.cmper; }
17811
17818 twobyte GetLayerAssignment() const { return _expression.flag & 0x7; }
17819
17832 {
17833 return (_expression.flag & 0x70) >> 4;
17834 }
17835
17842#ifndef PDK_FRAMEWORK_LUAFRIENDLY
17844#else
17845 int
17846#endif
17848 {
17849 if (GetBitFlag(_expression.flag, 0x0400)) return EXPRPLAYSTART_POSINMEASURE;
17850 if (GetBitFlag(_expression.flag, 0x0200)) return EXPRPLAYSTART_ALIGNMENTPOINT;
17852 }
17853
17859 {
17860 return !GetBitFlag(_expression.flag, 0x1000);
17861 }
17862
17869 {
17870 return !GetBitFlag(_expression.flag, 0x0800);
17871 }
17872
17881 twobyte GetStaffListID() const { return _expression.staffList; }
17882
17888 twobyte GetStaffGroupID() const { return _expression.staffGroup; }
17889
17896 twobyte GetRehearsalMarkOffset() const { return _expression.rehearsalMarkOffset; }
17897
17903 bool GetVisible() const { return !GetBitFlag(_expression.flag, 0x4000); }
17904
17910 bool GetScaleWithEntry() const { return !GetBitFlag(_expression.flag, 0x0100); }
17911
17916 TimeEdu32 GetMeasurePos() const override { return 0x10000 * _expression.horzEDUOffHi + _expression.horzEDUOffLo; }
17917
17925 twobyte GetHorizontalPos() const { return _expression.horzEVPUOff; }
17926
17933 twobyte GetVerticalPos() const { return _expression.vertOff; }
17934
17939 twobyte GetGraceNoteIndex() const { return _expression.graceNoteIndex; }
17940
17947 bool IsVisibleOnStaff(twobyte staff);
17948
17958
17959#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
17961 luabridge::RefCountedPtr<FCShapeExpressionDef> CreateShapeExpressionDef_GC()
17962 { return makeLuaSharedPtr(CreateShapeExpressionDef()); }
17963#endif
17964
17974
17975#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
17977 luabridge::RefCountedPtr<FCTextExpressionDef> CreateTextExpressionDef_GC()
17978 { return makeLuaSharedPtr(CreateTextExpressionDef()); }
17979#endif
17980
17987 bool IsShape() const { return GetBitFlag(_expression.flag, SCOREEXP_SHAPE_OBJECT); }
17988
17996 bool IsSingleStaffAssigned() { return (GetStaff() > 0); }
17997
18003 bool GetShape() const { return GetBitFlag(_expression.flag, SCOREEXP_SHAPE_OBJECT); }
18004
18015 twobyte GetID() const { return _expression.dynumber; }
18016
18022 bool SaveNewToCell(FCCell* pCell);
18023
18032 void SetID(twobyte id) { _expression.dynumber = id; }
18033
18040 void SetLayerAssignment(twobyte layer)
18041 {
18042 layer &= 0x07;
18043 _expression.flag &= ~0x07;
18044 _expression.flag |= layer;
18045 }
18046
18051 void SetScoreAssignment(bool value)
18052 {
18053 Set16BitFlag(&_expression.flag, 0x1000, !value);
18054 }
18055
18060 void SetPartAssignment(bool value)
18061 {
18062 Set16BitFlag(&_expression.flag, 0x0800, !value);
18063 }
18064
18075 void SetPlaybackLayerAssignment(twobyte layer)
18076 {
18077 layer &= 0x07;
18078 layer <<= 4;
18079 _expression.flag &= ~0x70;
18080 _expression.flag |= layer;
18081 }
18082
18090#ifndef PDK_FRAMEWORK_LUAFRIENDLY
18092#else
18093 int
18094#endif
18095 value
18096 )
18097 {
18098 switch (value)
18099 {
18101 Set16BitFlag(&_expression.flag, 0x0400, true);
18102 Set16BitFlag(&_expression.flag, 0x0200, false);
18103 break;
18105 Set16BitFlag(&_expression.flag, 0x0400, false);
18106 Set16BitFlag(&_expression.flag, 0x0200, true);
18107 break;
18108 default: /* EXPRPLAYSTART_BEGINNINGOFMEASURE */
18109 Set16BitFlag(&_expression.flag, 0x0400, false);
18110 Set16BitFlag(&_expression.flag, 0x0200, false);
18111 break;
18112 }
18113 }
18114
18121 void SetStaff(twobyte staffno) { _expression.staffAssign = staffno; }
18122
18131 void SetShape(bool isshape) { Set16BitFlag(&_expression.flag, SCOREEXP_SHAPE_OBJECT, isshape); }
18132
18139 void SetStaffListID(twobyte ID) { _expression.staffList = ID; }
18140
18146 void SetStaffGroupID(twobyte value) { _expression.staffGroup = value; }
18147
18154 void SetRehearsalMarkOffset(twobyte value) { _expression.rehearsalMarkOffset = value; }
18155
18161 void SetVisible(bool state) { Set16BitFlag(&_expression.flag, 0x4000, !state); }
18162
18167 void SetScaleWithEntry(bool state) { Set16BitFlag(&_expression.flag, 0x0100, !state); }
18168
18173 void SetMeasurePos(TimeEdu32 value)
18174 {
18175 _expression.horzEDUOffHi = (value & 0xffff0000) / 0x10000;
18176 _expression.horzEDUOffLo = value & 0x0000ffff;
18177 }
18178
18185 void SetHorizontalPos(twobyte value) { _expression.horzEVPUOff = value; }
18186
18193 void SetVerticalPos(twobyte value) { _expression.vertOff = value; }
18194
18199 void SetGraceNoteIndex(twobyte index) {
18200 if (index < 0) return; /* Negative indexes aren't allowed */
18201 _expression.graceNoteIndex = index;
18202 }
18203
18204#ifdef PDK_FRAMEWORK_DEBUG
18205 void DebugDump() override
18206 {
18208 DebugOutBlock(&_expression, 0, sizeof(_expression));
18209 DebugOutHex("Flag bits (hex): ", _expression.flag);
18210 DebugOutInt("Attached to Staff: ", GetStaff());
18211 DebugOutInt("Staff List ID: ", GetStaffListID());
18212 DebugOutInt("Rehearsal Mark Offset: ", GetRehearsalMarkOffset());
18213 DebugOutInt("Measure Pos (EDUs): ", GetMeasurePos());
18214 DebugOutInt("Horizontal Pos (EVPUs): ", GetHorizontalPos());
18215 DebugOutInt("Vertical Pos: ", GetVerticalPos());
18216 }
18217#endif
18218};
18219
18220
18221/* Macro for accessing same-name fields in different versions
18222 of the Staff Style Def struct: */
18223#define __STAFFSTYLEDEF_RETURN_FIELD_PTR(field) \
18224switch (_VersionToUse()) \
18225{ \
18226 case FINALEVERSION_2014: \
18227 return &_staffstyledef2014.field; \
18228 case FINALEVERSION_2012: \
18229 return &_staffstyledef2012.field; \
18230 default: \
18231 return &_staffstyledef2010.field; \
18232} \
18233
18234
18244{
18245private:
18246 const bool _skipWorkaround;
18247
18248#ifndef DOXYGEN_SHOULD_IGNORE_THIS
18249 EDTStaffStyle2010 _staffstyledef2010;
18250
18251#if FXT_VERSION >= FINALEVERSION_2012
18252 EDTStaffStyle2012 _staffstyledef2012;
18253#else
18254 EDTStaffStyle2010 _staffstyledef2012; /* Dummy struct for unsupported PDKs */
18255#endif
18256
18257#if FXT_VERSION >= FINALEVERSION_2014
18258 EDTStaffStyle2014 _staffstyledef2014;
18259#else
18260 EDTStaffStyle2010 _staffstyledef2014; /* Dummy struct for unsupported PDKs */
18261#endif
18262
18264 const uonebyte* _GetInstUUIDPtr() const override
18265 {
18266 if (_VersionToUse() >= FINALEVERSION_2014)
18267 return _staffstyledef2014.instUUID;
18268 if (_VersionToUse() >= FINALEVERSION_2012)
18269 return _staffstyledef2012.instUUID;
18270 return NULL;
18271 }
18272
18274 const FLAG_16* _GetInstFlagPtr() const override
18275 {
18276 __STAFFSTYLEDEF_RETURN_FIELD_PTR(instflag);
18277 }
18278
18280 const FLAG_16* _GetFlagPtr() const override
18281 {
18282 __STAFFSTYLEDEF_RETURN_FIELD_PTR(flag);
18283 }
18284
18286 const FLAG_16* _GetAltFlagPtr() const override
18287 {
18288 __STAFFSTYLEDEF_RETURN_FIELD_PTR(altFlag);
18289 }
18290
18292 const FLAG_16* _GetAltFlag2Ptr() const override
18293 {
18294 __STAFFSTYLEDEF_RETURN_FIELD_PTR(altFlag2);
18295 }
18296
18298 const twobyte* _GetTranspositionPtr() const override
18299 {
18300 __STAFFSTYLEDEF_RETURN_FIELD_PTR(transposition);
18301 }
18302
18304 const FLAG_16* _GetMoreFlagsPtr() const override
18305 {
18306 __STAFFSTYLEDEF_RETURN_FIELD_PTR(moreFlags);
18307 }
18308
18310 const FLAG_16* _GetMoreFlags2Ptr() const override
18311 {
18312 if (_VersionToUse() < FINALEVERSION_2014) return NULL;
18313#if FXT_VERSION < FINALEVERSION_25
18314 return (const FLAG_16*) &_staffstyledef2014.hideKeySigsShowAccis;
18315#else
18316 return &_staffstyledef2014.moreFlags2;
18317#endif
18318 }
18319
18321 const FLAG_16* _GetMoreFlags3Ptr() const override
18322 {
18323 if (_VersionToUse() < FINALEVERSION_2014) return NULL;
18324#if FXT_VERSION < FINALEVERSION_25
18325 return (const FLAG_16*) &_staffstyledef2014.redisplayLayerAccis;
18326#else
18327 return &_staffstyledef2014.moreFlags3;
18328#endif
18329 }
18330
18332 const FLAG_16* _GetMask1FlagPtr() const
18333 {
18334 __STAFFSTYLEDEF_RETURN_FIELD_PTR(mask1);
18335 }
18336
18338 const FLAG_16* _GetMask2FlagPtr() const
18339 {
18340 __STAFFSTYLEDEF_RETURN_FIELD_PTR(mask2);
18341 }
18342
18344 const FLAG_16* _GetMask3FlagPtr() const
18345 {
18346 __STAFFSTYLEDEF_RETURN_FIELD_PTR(mask3);
18347 }
18348
18350 const FLAG_16* _GetSFFlagPtr() const
18351 {
18352 __STAFFSTYLEDEF_RETURN_FIELD_PTR(sfflag);
18353 }
18354
18356 const twobyte* _GetAbbrvNamePtr() const override
18357 {
18358 __STAFFSTYLEDEF_RETURN_FIELD_PTR(abbrvName);
18359 }
18360
18362 const twobyte* _GetFullNamePtr() const override
18363 {
18364 __STAFFSTYLEDEF_RETURN_FIELD_PTR(fullName);
18365 }
18366
18368 const twobyte* _GetClefsPtr() const override
18369 {
18370 __STAFFSTYLEDEF_RETURN_FIELD_PTR(clefs);
18371 }
18372
18374 const Efix32* _GetVertTabNumOffPtr() const override
18375 {
18376 __STAFFSTYLEDEF_RETURN_FIELD_PTR(vertTabNumOff);
18377 }
18378
18380 const CMPER* _GetFretInstIDPtr() const override
18381 {
18382 __STAFFSTYLEDEF_RETURN_FIELD_PTR(fretInstID);
18383 }
18384
18386 const Evpu16* _GetBottomBarlineOffsetPtr() const override
18387 {
18388 __STAFFSTYLEDEF_RETURN_FIELD_PTR(botBarlineOffset);
18389 }
18390
18392 const Evpu16* _GetTopBarlineOffsetPtr() const override
18393 {
18394 __STAFFSTYLEDEF_RETURN_FIELD_PTR(topBarlineOffset);
18395 }
18396
18398 const utwobyte* _GetCapoLowFretPtr() const override
18399 {
18400 __STAFFSTYLEDEF_RETURN_FIELD_PTR(capoLowFret);
18401 }
18402
18404 const FLAG_16* _GetBotLinesPtr() const override
18405 {
18406 __STAFFSTYLEDEF_RETURN_FIELD_PTR(botLines);
18407 }
18408
18410 const FLAG_16* _GetTopLinesPtr() const override
18411 {
18412 __STAFFSTYLEDEF_RETURN_FIELD_PTR(topLines);
18413 }
18414
18416 const Efix32* _GetLineSpacePtr() const override
18417 {
18418 __STAFFSTYLEDEF_RETURN_FIELD_PTR(lineSpace);
18419 }
18420
18422 const twobyte* _GetDwWRestPtr() const override
18423 {
18424 __STAFFSTYLEDEF_RETURN_FIELD_PTR(dw_wRest);
18425 }
18426
18428 const twobyte* _GetStemReversalPtr() const override
18429 {
18430 __STAFFSTYLEDEF_RETURN_FIELD_PTR(stemReversal);
18431 }
18432
18434 const twobyte* _GetRepeatDotsOffPtr() const override
18435 {
18436 __STAFFSTYLEDEF_RETURN_FIELD_PTR(repeatDotsOff);
18437 }
18438
18440 const twobyte* _GetHOtherRestPtr() const override
18441 {
18442 __STAFFSTYLEDEF_RETURN_FIELD_PTR(h_otherRest);
18443 }
18444
18446 const EFONTID* _GetMFontPtr() const override
18447 {
18448 __STAFFSTYLEDEF_RETURN_FIELD_PTR(mfont);
18449 }
18450
18452 const twobyte* _GetSizeEfxPtr() const override
18453 {
18454 __STAFFSTYLEDEF_RETURN_FIELD_PTR(sizeefx);
18455 }
18456
18458 const Efix32* _GetHorzStemOffUpPtr() const override
18459 {
18460 __STAFFSTYLEDEF_RETURN_FIELD_PTR(horzStemOffUp);
18461 }
18462
18464 const Efix32* _GetHorzStemOffDownPtr() const override
18465 {
18466 __STAFFSTYLEDEF_RETURN_FIELD_PTR(horzStemOffDown);
18467 }
18468
18470 const Efix32* _GetVertStemStartOffUpPtr() const override
18471 {
18472 __STAFFSTYLEDEF_RETURN_FIELD_PTR(vertStemStartOffUp);
18473 }
18474
18476 const Efix32* _GetVertStemStartOffDownPtr() const override
18477 {
18478 __STAFFSTYLEDEF_RETURN_FIELD_PTR(vertStemStartOffDown);
18479 }
18480
18482 const Efix32* _GetVertStemEndOffUpPtr() const override
18483 {
18484 __STAFFSTYLEDEF_RETURN_FIELD_PTR(vertStemEndOffUp);
18485 }
18486
18488 const Efix32* _GetVertStemEndOffDownPtr() const override
18489 {
18490 __STAFFSTYLEDEF_RETURN_FIELD_PTR(vertStemEndOffDown);
18491 }
18492
18494 FLAG_16 GetMask1() const { return *_GetMask1FlagPtr(); }
18495
18497 FLAG_16 GetMask2() const { return *_GetMask2FlagPtr(); }
18498
18500 FLAG_16 GetMask3() const { return *_GetMask3FlagPtr(); }
18501
18506 EXTAG _GetFullNamePosTag() const override { return ot_NamePosFullStyle; }
18507
18512 twobyte _GetFullNamePosCmper() const override { return GetItemNo(); }
18513
18518 EXTAG _GetAbbreviatedNamePosTag() const override { return ot_NamePosAbbrvStyle; }
18519
18524 twobyte _GetAbbreviatedNamePosCmper() const override { return GetItemNo(); }
18525
18526#ifdef PDK_FRAMEWORK_PREFS
18528 virtual bool _SaveNewFullNamePos() override
18529 { return this->_pFullNamePosition && this->_pFullNamePosition->SaveAs(GetItemNo()); }
18530
18532 virtual bool _SaveNewAbbreviatedNamePos() override
18533 { return this->_pAbbreviatedNamePosition && this->_pAbbreviatedNamePosition->SaveAs(GetItemNo()); }
18534#endif
18535
18537 bool LoadFirst() override
18538 {
18539 /* Since there can be holes in the staff style "chain", there
18540 need to be a better method to find items. Scanning a gap of 2000 items
18541 should be an ok workaround for just about any documents. In fact,
18542 attempting to load non-existent items takes almost zero time.*/
18543 for (int i = 1; i <= 2000; i++)
18544 {
18545 if (Load(i)) return true;
18546 }
18547 return false;
18548 }
18549
18551 bool LoadNext() override
18552 {
18553 /* Since there can be holes in the staff style "chain", there
18554 need to be a better method to find items. Scanning a gap of 2000 items
18555 should be an ok workaround for just about any documents. In fact,
18556 attempting to load non-existent items takes almost zero time.*/
18557 int itemno = GetItemNo();
18558 for (int i = 1; i <= 2000; i++)
18559 {
18560 if (Load(itemno + i)) return true;
18561 }
18562 return false;
18563 }
18564
18566 bool _SaveRawFields() const;
18567
18568 void _Init()
18569 {
18570 memset(_GetStaffStyle(), 0, DataSizeLoad());
18571 _datablock = _GetStaffStyle();
18573 }
18574
18575#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
18576protected:
18577#ifndef DOXYGEN_SHOULD_IGNORE_THIS
18578
18579 EXTAG Tag() const override { return ot_EDTStaffStyle2010; }
18580 int DataSizeLoad() const override
18581 {
18582 switch (_VersionToUse())
18583 {
18584 case FINALEVERSION_2014:
18585 return sizeof(EDTStaffStyle2014);
18586 case FINALEVERSION_2012:
18587 return sizeof(EDTStaffStyle2012);
18588 default:
18589 return sizeof(EDTStaffStyle2010);
18590 }
18591 }
18592 void* Allocate() override
18593 {
18594 switch (_VersionToUse())
18595 {
18596 case FINALEVERSION_2014:
18597 return (void*) &_staffstyledef2014;
18598 case FINALEVERSION_2012:
18599 return (void*) &_staffstyledef2012;
18600 default:
18601 return (void*) &_staffstyledef2010;
18602 }
18603 }
18604 EVERSION EnigmaVersion() const override { return _VersionToUse(); }
18605
18610 void CloneMemoryFrom(__FCBaseData* pSource) override
18611 {
18612 memcpy(_GetStaffStyle(), ((FCStaffStyleDef*)pSource)->_GetStaffStyle(), DataSizeLoad());
18613 _datablock = _GetStaffStyle();
18615 }
18616
18617 __FCBaseData* CreateObject() override { return new FCStaffStyleDef(); }
18618
18619#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
18620public:
18621 const char* ClassName() const override { return "FCStaffStyleDef"; }
18622 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_STAFFSTYLEDEF; }
18623
18624#ifndef DOXYGEN_SHOULD_IGNORE_THIS
18631 void* _GetStaffStyle() { return Allocate(); }
18632
18634 bool Load(CMPER itemno) override;
18635
18637 bool Save() override
18638 {
18639 if (! __FCNoInciOther::Save()) return false;
18640 return _SaveRawFields();
18641 }
18642
18644 bool SaveNew() override
18645 {
18646 if (! __FCNoInciOther::SaveNew()) return false;
18647 return _SaveRawFields();
18648 }
18649#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
18650
18655 FCStaffStyleDef() : __FCStaffBase(), _skipWorkaround(false)
18656 { _Init(); }
18657
18658#ifdef PDK_FRAMEWORK_LUAFRIENDLY
18663 FCStaffStyleDef(bool skipWorkaround) : __FCStaffBase(), _skipWorkaround(skipWorkaround)
18664 { _Init(); }
18665
18667 static FCStaffStyleDef* FCStaffStyleDef_Lua(void* ptr, lua_State* L)
18668 {
18669 return _OneOptionalParamLuaConstructor<FCStaffStyleDef, bool>(ptr, L);
18670 }
18671#endif // PDK_FRAMEWORK_LUAFRIENDLY
18672
18673
18674 /************************
18675 *** GETTERS for data ***
18676 ************************/
18677
18682 bool GetCopyable() const { return GetBitFlag(*_GetSFFlagPtr(), SFFLAG_COPYABLE); }
18683
18688 bool GetAddToMenu() const { return GetBitFlag(*_GetSFFlagPtr(), SFFLAG_ADDTOMENU); }
18689
18690
18691 /*************************************
18692 *** GETTERS for Staff Style usage ***
18693 *************************************/
18694
18700 bool GetUseShowKeySignatures() const { return GetBitFlag(GetMask2(), SFMASK2_NEGKEY); }
18701
18707 bool GetUseShowMeasureNumbers() const { return GetBitFlag(GetMask1(), SFMASK1_NEGMNUMB); }
18708
18715 bool GetUseShowTimeSignatures() const { return GetBitFlag(GetMask2(), SFMASK2_NEGTIME); }
18716
18721 bool GetUseShowPartTimeSignatures() const { return GetBitFlag(GetMask3(), SFMASK3_NEGTIME_PARTS); }
18722
18728 bool GetUseShowClefs() const { return GetBitFlag(GetMask2(), SFMASK2_NEGCLEF); }
18729
18735 bool GetUseShowChords() const { return GetBitFlag(GetMask3(), SFMASK3_HIDE_CHORDS); }
18736
18742 bool GetUseShowAugmentationDots() const { return GetBitFlag(GetMask2(), SFMASK2_SHOWDOTS); }
18743
18749 bool GetUseShowFretboards() const { return GetBitFlag(GetMask3(), SFMASK3_HIDE_FRETBOARDS); }
18750
18756 bool GetUseShowLyrics() const { return GetBitFlag(GetMask3(), SFMASK3_HIDE_LYRICS); }
18757
18763 bool GetUseShowRepeats() const { return GetBitFlag(GetMask2(), SFMASK2_HIDE_RPT_BARS); }
18764
18770 bool GetUseShowRests() const { return GetBitFlag(GetMask2(), SFMASK2_SHOWRESTS); }
18771
18779 bool GetUseShowStaffLines() const;
18780
18786 bool GetUseShowScoreStaffNames() const { return GetBitFlag(GetMask1(), SFMASK1_NEGNAME); }
18787
18793 bool GetUseShowPartStaffNames() const { return GetBitFlag(GetMask3(), SFMASK3_SHOWNAME_PARTS); }
18794
18801 bool GetUseShowStems() const { return GetBitFlag(GetMask3(), SFMASK3_SHOWSTEMS); }
18802
18808 bool GetUseShowTies() const { return GetBitFlag(GetMask2(), SFMASK2_SHOWTIES); }
18809
18815 bool GetUseIndependentFont() const { return GetBitFlag(GetMask1(), SFMASK1_FLOATNOTEHEADFONT); }
18816
18822 bool GetUseFlatBeams() const { return GetBitFlag(GetMask1(), SFMASK1_FLAT_BEAMS); }
18823
18829 bool GetUseNotationStyle() const { return GetBitFlag(GetMask1(), SFMASK1_NOTATIONSTYLE); }
18830
18836 bool GetUseDisplayEmptyRests() const { return GetBitFlag(GetMask1(), SFMASK1_BLANKMEASURE); }
18837
18843 bool GetUseAllowHiding() const { return GetBitFlag(GetMask1(), SFMASK1_NO_OPTIMIZE); }
18844
18850 bool GetUseDefaultClef() const { return GetBitFlag(GetMask1(), SFMASK1_DEFAULTCLEF); }
18851
18860 bool GetUseStafflineAdjustments() const { return GetBitFlag(GetMask1(), SFMASK1_STAFFLINES); }
18861
18867 bool GetUseTransposition() const { return GetBitFlag(GetMask1(), SFMASK1_TRANSPOSITION); }
18868
18874 bool GetUseBreakBarlines() const { return GetBitFlag(GetMask1(), SFMASK1_BLINEBREAK); }
18875
18881 bool GetUseBreakRepeatBarlines() const { return GetBitFlag(GetMask1(), SFMASK1_RBARBREAK); }
18882
18888 bool GetUseShowTextRepeats() const { return GetBitFlag(GetMask1(), SFMASK1_NEGREPEAT); }
18889
18895 bool GetUseShowBarlines() const { return GetBitFlag(GetMask1(), SFMASK1_HIDE_BARLINES); }
18896
18902 bool GetUseFullName() const { return GetBitFlag(GetMask2(), SFMASK2_FULLNAME); }
18903
18909 bool GetUseAbbreviatedName() const { return GetBitFlag(GetMask2(), SFMASK2_ABBRVNAME); }
18910
18916 bool GetUseIndependentKeySig() const { return GetBitFlag(GetMask2(), SFMASK2_FLOATKEYS); }
18917
18923 bool GetUseIndependentTimeSig() const { return GetBitFlag(GetMask2(), SFMASK2_FLOATTIME); }
18924
18930 bool GetUseHideMode() const { return GetBitFlag(GetMask2(), SFMASK2_HIDESTAFF); }
18931
18937 bool GetUseIgnoreKeySig() const { return GetBitFlag(GetMask2(), SFMASK2_NOKEY); }
18938
18944 bool GetUseFullNamePosition() const { return GetBitFlag(GetMask2(), SFMASK2_FULLNAMEPOS); }
18945
18951 bool GetUseAbbreviatedPosition() const { return GetBitFlag(GetMask2(), SFMASK2_ABBRVNAMEPOS); }
18952
18958 bool GetUseAltNotationStyle() const { return GetBitFlag(GetMask2(), SFMASK2_ALTNOTATION); }
18959
18965 bool GetUseShowNoteColors() const { return GetBitFlag(GetMask3(), SFMASK3_SHOW_NOTE_COLORS); }
18966
18974 bool GetUseShowNoteShapes() const;
18975
18983 bool GetUseNoKeySigShowAccidentals() const;
18984
18993
18994
18995 /* **********************
18996 *** SETTERS for data ***
18997 ************************/
18998
19003 void SetCopyable(bool value) { Set16BitFlag((FLAG_16*)_GetSFFlagPtr(), SFFLAG_COPYABLE, value); }
19004
19009 void SetAddToMenu(bool value) { Set16BitFlag((FLAG_16*) _GetSFFlagPtr(), SFFLAG_ADDTOMENU, value); }
19010
19011 /* ***********************************
19012 *** SETTERS for Staff Style usage ***
19013 *************************************/
19014
19021 {
19022 Set16BitFlag((FLAG_16*) _GetMask2FlagPtr(), SFMASK2_NEGKEY, state);
19023 }
19024
19031 {
19032 Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_NEGMNUMB, state);
19033 }
19034
19043 {
19044 Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_NEGTIME, state);
19045 }
19046
19052 {
19053 Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_NEGTIME_PARTS, state);
19054 }
19055
19061 void SetUseShowClefs(bool state)
19062 {
19063 Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_NEGCLEF, state);
19064 }
19065
19071 void SetUseShowChords(bool state)
19072 {
19073 Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_HIDE_CHORDS, state);
19074 }
19075
19082 {
19083 Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_SHOWDOTS, state);
19084 }
19085
19091 void SetUseShowFretboards(bool state)
19092 {
19093 Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_HIDE_FRETBOARDS, state);
19094 }
19095
19101 void SetUseShowLyrics(bool state)
19102 {
19103 Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_HIDE_LYRICS, state);
19104 }
19105
19111 void SetUseShowRepeats(bool state)
19112 {
19113 Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_HIDE_RPT_BARS, state);
19114 }
19115
19121 void SetUseShowRests(bool state)
19122 {
19123 Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_SHOWRESTS, state);
19124 }
19125
19133 void SetUseShowStaffLines(bool state);
19134
19141 {
19142 Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_NEGNAME, state);
19143 }
19144
19151 {
19152 Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_SHOWNAME_PARTS, state);
19153 }
19154
19161 void SetUseShowStems(bool state)
19162 {
19163 Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_SHOWSTEMS, state);
19164 }
19165
19171 void SetUseShowTies(bool state)
19172 {
19173 Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_SHOWTIES, state);
19174 }
19175
19181 void SetUseIndependentFont(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_FLOATNOTEHEADFONT, state); }
19182
19188 void SetUseFlatBeams(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_FLAT_BEAMS, state); }
19189
19195 void SetUseNotationStyle(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_NOTATIONSTYLE, state); }
19196
19202 void SetUseDisplayEmptyRests(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_BLANKMEASURE, state); }
19203
19209 void SetUseAllowHiding(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_NO_OPTIMIZE, state); }
19210
19216 void SetUseDefaultClef(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_DEFAULTCLEF, state); }
19217
19226 void SetUseStafflineAdjustments(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_STAFFLINES, state); }
19227
19233 void SetUseTransposition(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_TRANSPOSITION, state); }
19234
19240 void SetUseBreakBarlines(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_BLINEBREAK, state); }
19241
19247 void SetUseBreakRepeatBarlines(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_RBARBREAK, state); }
19248
19254 void SetUseShowTextRepeats(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_NEGREPEAT, state); }
19255
19261 void SetUseShowBarlines(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_HIDE_BARLINES, state); }
19262
19268 void SetUseFullName(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_FULLNAME, state); }
19269
19275 void SetUseAbbreviatedName(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_ABBRVNAME, state); }
19276
19282 void SetUseIndependentKeySig(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_FLOATKEYS, state); }
19283
19289 void SetUseIndependentTimeSig(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_FLOATTIME, state); }
19290
19296 void SetUseHideMode(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_HIDESTAFF, state); }
19297
19303 void SetUseIgnoreKeySig(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_NOKEY, state); }
19304
19310 void SetUseFullNamePosition(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_FULLNAMEPOS, state); }
19311
19317 void SetUseAbbreviatedPosition(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_ABBRVNAMEPOS, state); }
19318
19324 void SetUseAltNotationStyle(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_ALTNOTATION, state); }
19325
19331 void SetUseShowNoteColors(bool state) { Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_SHOW_NOTE_COLORS, state); }
19332
19340 void SetUseShowNoteShapes(bool state);
19341
19349 void SetUseNoKeySigShowAccidentals(bool state);
19350
19358 void SetUseRedisplayOtherLayerAccidentals(bool state);
19359
19360 /*********************
19361 *** MISC. METHODS ***
19362 *********************/
19363
19370 bool IsInstrumentChange();
19371
19372#ifdef PDK_FRAMEWORK_PREFS
19387
19402#endif
19403
19408 void GetName(FCString* pString);
19409
19414 void SetName(FCString* pString);
19415
19416
19417#ifdef PDK_FRAMEWORK_DEBUG
19418 void DebugDump() override
19419 {
19421 DebugOutBool("Is 2012 Instrument Change: ", IsInstrumentChange());
19422 }
19423#endif
19424};
19425
19426
19427
19437{
19438private:
19439#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19440 EDTStaffStyleAssign _staffstyleassign;
19441#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19442protected:
19443#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19444
19445 EXTAG Tag() const override { return ot_EDTStaffStyleAssign; }
19446 int DataSizeLoad() const override { return sizeof(EDTStaffStyleAssign); }
19447 void* Allocate() override { return (void*) &_staffstyleassign; }
19448
19453 void CloneMemoryFrom(__FCBaseData* pSource) override
19454 {
19455 memcpy(&_staffstyleassign, ((FCStaffStyleAssign*)pSource)->_GetStaffStyleAssign(), sizeof(_staffstyleassign));
19456 _datablock = &_staffstyleassign;
19457 _loadedsize = sizeof(_staffstyleassign);
19458 }
19459
19460 __FCBaseData* CreateObject() override
19461 { return new FCStaffStyleAssign(); }
19462
19463#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19464public:
19465 const char* ClassName() const override { return "FCStaffStyleAssign"; }
19466 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_STAFFSTYLEASSIGN; }
19467
19468#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19475 void* _GetStaffStyleAssign() { return Allocate(); }
19476#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19477
19483 {
19484 memset(&_staffstyleassign, 0, sizeof(_staffstyleassign));
19485 _datablock = &_staffstyleassign;
19486 _loadedsize = sizeof(_staffstyleassign);
19487 _staffstyleassign.range.end.edu = 0x7fffffff;
19488 }
19489
19496 twobyte GetStyleID() const { return _staffstyleassign.style; };
19497
19503 eMeas GetStartMeasure() const { return _staffstyleassign.range.start.meas; };
19504
19509 TimeEdu32 GetStartMeasurePos() const { return _staffstyleassign.range.start.edu; };
19510
19515 eMeas GetEndMeasure() const { return _staffstyleassign.range.end.meas; };
19516
19521 TimeEdu32 GetEndMeasurePos() const { return _staffstyleassign.range.end.edu; };
19522
19527 void SetStartMeasure(eMeas value) { _staffstyleassign.range.start.meas = value; }
19528
19533 void SetStartMeasurePos(TimeEdu32 value) { _staffstyleassign.range.start.edu = value; }
19534
19539 void SetEndMeasure(eMeas value) { _staffstyleassign.range.end.meas = value; }
19540
19545 void SetEndMeasurePos(TimeEdu32 value) { _staffstyleassign.range.end.edu = value; }
19546
19551 void SetStyleID(twobyte value) { _staffstyleassign.style = value; }
19552
19557 eStaff GetStaff() const override { return _dataid.other.cmper; };
19558
19565
19571 {
19572 if (!pRegion) return false;
19573 if (GetEndMeasure() < pRegion->GetStartMeasure()) return false;
19574 if (GetStartMeasure() > pRegion->GetEndMeasure()) return false;
19575 if (GetEndMeasure() == pRegion->GetStartMeasure())
19576 {
19577 if (GetEndMeasurePos() < pRegion->GetStartMeasurePos()) return false;
19578 }
19579 if (GetStartMeasure() == pRegion->GetEndMeasure())
19580 {
19581 if (GetStartMeasurePos() > pRegion->GetEndMeasurePos()) return false;
19582 }
19583 // Horizontally, it's an overlap - check the staff:
19584 if (pRegion->IsStaffIncluded(GetStaff())) return true;
19585 return false;
19586 }
19587
19588#ifdef PDK_FRAMEWORK_DEBUG
19589 void DebugDump() override
19590 {
19592 DebugOutInt("Style ID: ", GetStyleID());
19593 DebugOutInt("Start measure: ", GetStartMeasure());
19594 DebugOutInt("End measure: ", GetEndMeasure());
19595 }
19596#endif
19597};
19598
19599
19600
19613{
19614private:
19615#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19616 EDTMultimeasureRest _mmrest;
19617
19618#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19619protected:
19620#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19621
19622 EXTAG Tag() const override { return ot_MultimeasureRest; }
19623 int DataSizeLoad() const override { return sizeof(EDTMultimeasureRest); }
19624 void* Allocate() override { return (void*) &_mmrest; }
19625
19632 void CloneMemoryFrom(__FCBaseData* pSource) override
19633 {
19634 memcpy(&_mmrest, ((FCMultiMeasureRest*)pSource)->_GetMMRest(), sizeof(_mmrest));
19635 _datablock = &_mmrest;
19636 _loadedsize = sizeof(_mmrest);
19637 }
19638
19639 __FCBaseData* CreateObject() override { return new FCMultiMeasureRest(); }
19640
19641 bool LoadFirst() override
19642 {
19643 Load(0);
19644 return LoadNext();
19645 }
19646
19647 bool SaveNew() override { return false; } // Disabled: Save() has to be used
19648#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19649public:
19650 const char* ClassName() const override { return "FCMultiMeasureRest"; }
19651 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_MULTIMEASUREREST; }
19652
19653#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19660 void* _GetMMRest() { return Allocate(); }
19661#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19662
19669 {
19670 memset(&_mmrest, 0, sizeof(_mmrest));
19671 SetWidth(300); /* Just to set a width */
19672 _datablock = &_mmrest;
19673 _loadedsize = sizeof(_mmrest);
19674 }
19675
19681 twobyte GetStartMeasure() const { return _dataid.other.cmper; }
19682
19688 twobyte GetEndMeasure() const { return _mmrest.stopBefore - 1; }
19689
19695 twobyte GetWidth() const { return _mmrest.measureWidth; }
19696
19703 twobyte GetShapeID() const { return _mmrest.shape; }
19704
19710 bool GetUseSymbols() const
19711 {
19712 return GetBitFlag(_mmrest.flag, MMREST_USE_SYMBOLS);
19713 }
19714
19722 {
19723 return _mmrest.symbolMeasures;
19724 }
19725
19732 bool GetStretchHorizontally() const;
19733
19739 twobyte GetShapeEndAdjust() const { return _mmrest.adjustEndPoint; }
19740
19746 twobyte GetShapeStartAdjust() const { return _mmrest.adjustStartPoint; }
19747
19753 twobyte GetSymbolSpace() const { return _mmrest.spaceBetween; }
19754
19761 twobyte GetStartNumberingAt() const { return _mmrest.startNumbering; }
19762
19768 twobyte GetNumberHorizontalAdjust() const { return _mmrest.horizNumberAdjust; }
19769
19774 twobyte GetNumberVerticalAdjust() const { return _mmrest.vertNumberAdjust; }
19775
19780 twobyte CalcMeasureSpan() { return GetEndMeasure() - GetStartMeasure() + 1; }
19781
19786 void SetWidth(twobyte value) { _mmrest.measureWidth = value; }
19787
19795 void SetStartMeasure(twobyte measure) { _dataid.other.cmper = measure; }
19796
19802 void SetEndMeasure(twobyte measure) { _mmrest.stopBefore = measure + 1; }
19803
19809 void SetShapeEndAdjust(twobyte value) { _mmrest.adjustEndPoint = value; }
19810
19816 void SetShapeStartAdjust(twobyte value) { _mmrest.adjustStartPoint = value; }
19817
19824 void SetShapeID(twobyte shapeID) { _mmrest.shape = shapeID; }
19825
19826
19832 void SetUseSymbols(bool value)
19833 {
19834 Set16BitFlag(&_mmrest.flag, MMREST_USE_SYMBOLS, value);
19835 }
19836
19843 void SetUseSymbolsLessThan(twobyte value)
19844 {
19845 _mmrest.symbolMeasures = value;
19846 }
19847
19854 void SetStretchHorizontally( bool value );
19855
19861 void SetSymbolSpace(twobyte space) { _mmrest.spaceBetween = space; }
19862
19867 void SetStartNumberingAt(twobyte value) { _mmrest.startNumbering = value; }
19868
19873 void SetNumberHorizontalAdjust(twobyte value) { _mmrest.horizNumberAdjust = value; }
19874
19879 void SetNumberVerticalAdjust(twobyte value) { _mmrest.vertNumberAdjust = value; }
19880
19885 bool IsMeasureIncluded(int measure)
19886 {
19887 if (measure < GetStartMeasure()) return false;
19888 if (measure > GetEndMeasure()) return false;
19889 return true;
19890 }
19891
19896 bool IsShape()
19897 {
19898 if (!GetUseSymbols()) return true;
19899 if (GetUseSymbolsLessThan() >= CalcMeasureSpan()) return true;
19900 return false;
19901 }
19902
19903#ifdef PDK_FRAMEWORK_PREFS
19910 void PrefsReset();
19911#endif
19912
19913
19914#ifdef PDK_FRAMEWORK_DEBUG
19915 void DebugDump() override
19916 {
19918 DebugOutInt("Start measure: ", GetStartMeasure());
19919 DebugOutInt("End measure: ", GetEndMeasure());
19920 }
19921#endif
19922};
19923
19924#if FXT_VERSION >= FINALEVERSION_2012
19933{
19934private:
19935#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19936 EDTMultiStaffInstGroup _multistaffinstgroup;
19937
19938#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19939protected:
19940#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19941
19942 EXTAG Tag() const override { return otx_MultiStaffInstGroup; }
19943 int DataSizeLoad() const override { return sizeof(EDTMultiStaffInstGroup); }
19944 void* Allocate() override { return (void*) &_multistaffinstgroup; }
19945
19952 void CloneMemoryFrom(__FCBaseData* pSource) override
19953 {
19954 memcpy(&_multistaffinstgroup, ((FCMultiStaffInstrument*)pSource)->_GetMultiStaffInstGroup(), sizeof(_multistaffinstgroup));
19955 _datablock = &_multistaffinstgroup;
19956 _loadedsize = sizeof(_multistaffinstgroup);
19957 }
19958
19959 __FCBaseData* CreateObject() override { return new FCMultiStaffInstrument(); }
19960
19961 /*bool LoadFirst() override
19962 {
19963 Load(0);
19964 return LoadNext();
19965 } */
19966#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19967public:
19968 const char* ClassName() const override { return "FCMultiStaffInstrument"; }
19969 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_MULTISTAFFINSTRUMENT; }
19970
19971#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19978 void* _GetMultiStaffInstGroup() { return Allocate(); }
19979#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19980
19987 {
19988 memset(&_multistaffinstgroup, 0, sizeof(_multistaffinstgroup));
19989 }
19990
19996 bool ContainsStaff(CMPER staffno)
19997 {
19998 if (staffno == 0) return false;
19999 if (staffno == GetFirstStaff()) return true;
20000 if (staffno == GetSecondStaff()) return true;
20001 if (staffno == GetThirdStaff()) return true;
20002 return false;
20003 }
20004
20009 CMPER GetFirstStaff() const { return _multistaffinstgroup.staffNum1; }
20010
20015 CMPER GetSecondStaff() const { return _multistaffinstgroup.staffNum2; }
20016
20021 CMPER GetThirdStaff() const { return _multistaffinstgroup.staffNum3; }
20022
20027 eStaffGroup GetGroupID() const
20028 {
20029 return _multistaffinstgroup.staffGroupID;
20030 }
20031
20032
20038 void SetFirstStaff(CMPER value) { _multistaffinstgroup.staffNum1 = value; }
20039
20044 void SetSecondStaff(CMPER value) { _multistaffinstgroup.staffNum2 = value; }
20045
20051 void SetThirdStaff(CMPER value) { _multistaffinstgroup.staffNum3 = value; }
20052
20057 void SetGroupID(eStaffGroup value)
20058 {
20059 _multistaffinstgroup.staffGroupID = value;
20060 }
20061
20062
20070 {
20071 CMPER returnvalue = 0;
20072 twobyte lowestslot = 10000;
20073 twobyte slottest = FX_InstToSlot(GetFirstStaff(), 0);
20074 if (slottest)
20075 {
20076 lowestslot = slottest;
20077 returnvalue = GetFirstStaff();
20078 }
20079 slottest = FX_InstToSlot(GetSecondStaff(), 0);
20080 if ((slottest) && (slottest < lowestslot))
20081 {
20082 lowestslot = slottest;
20083 returnvalue = GetSecondStaff();
20084 }
20085 slottest = FX_InstToSlot(GetThirdStaff(), 0);
20086 if ((slottest) && (slottest < lowestslot))
20087 {
20088 returnvalue = GetThirdStaff();
20089 }
20090 return returnvalue;
20091 }
20092
20100 {
20101 CMPER returnvalue = 0;
20102 twobyte highestslot = -10000;
20103 twobyte slottest = FX_InstToSlot(GetFirstStaff(), 0);
20104 if (slottest)
20105 {
20106 highestslot = slottest;
20107 returnvalue = GetFirstStaff();
20108 }
20109 slottest = FX_InstToSlot(GetSecondStaff(), 0);
20110 if ((slottest) && (slottest > highestslot))
20111 {
20112 highestslot = slottest;
20113 returnvalue = GetSecondStaff();
20114 }
20115 slottest = FX_InstToSlot(GetThirdStaff(), 0);
20116 if ((slottest) && (slottest > highestslot))
20117 {
20118 returnvalue = GetThirdStaff();
20119 }
20120 return returnvalue;
20121 }
20122
20123
20124#ifdef PDK_FRAMEWORK_DEBUG
20125 void DebugDump() override
20126 {
20128 DebugOutInt("First staff: ", GetFirstStaff());
20129 DebugOutInt("Second staff: ", GetSecondStaff());
20130 DebugOutInt("Third staff: ", GetThirdStaff());
20131 DebugOutInt("Group ID: ", GetGroupID());
20132 }
20133#endif
20134};
20135#endif // #if FXT_VERSION >= FINALEVERSION_2012
20136
20137
20147{
20148private:
20149#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20150 EDTAllotment _allotment;
20151
20152#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20153protected:
20154#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20155
20156 EXTAG Tag() const override { return ot_Allotment; }
20157 int DataSizeLoad() const override { return sizeof(EDTAllotment); }
20158 void* Allocate() override { return (void*) &_allotment; }
20159
20166 void CloneMemoryFrom(__FCBaseData* pSource) override
20167 {
20168 memcpy(&_allotment, ((FCAllotment*)pSource)->_GetAllotment(), sizeof(_allotment));
20169 _datablock = &_allotment;
20170 _loadedsize = sizeof(_allotment);
20171 }
20172
20173 __FCBaseData* CreateObject() override { return new FCAllotment(); }
20174
20175 bool LoadFirst() override
20176 {
20177 if (!Load(0)) return LoadNext();
20178 return true;
20179 }
20180
20181 bool LoadNext() override
20182 {
20183 EDTAllotment scratch;
20184 if (!FX_NextEData(Tag(), &_dataid, &scratch, sizeof(scratch), EnigmaVersion())) return false;
20185 return LoadDataBlock();
20186 }
20187
20188#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20189public:
20190 const char* ClassName() const override { return "FCAllotment"; }
20191 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_ALLOTMENT; }
20192
20193#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20200 void* _GetAllotment() { return Allocate(); }
20201#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20202
20208 {
20209 memset(&_allotment, 0, sizeof(_allotment));
20210 _datablock = &_allotment;
20211 _loadedsize = sizeof(_allotment);
20212 }
20213
20218 void SetWidth(Evpu16 width)
20219 {
20220 _allotment.allotment = width;
20221 }
20222
20223
20228 Evpu16 GetWidth() const
20229 {
20230 return _allotment.allotment;
20231 }
20232
20233
20234#ifdef PDK_FRAMEWORK_DEBUG
20235 void DebugDump() override
20236 {
20238 DebugOutInt("Allotment Width: ", GetWidth());
20239 }
20240#endif
20241};
20242
20243
20244
20251{
20252private:
20253#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20256 EDTTGraphic _graphic;
20257
20258 EXTAG Tag() const override { return ot_PageGraphic; }
20259 int DataSizeLoad() const override { return sizeof(EDTTGraphic); }
20260 void* Allocate() override { return (void*) &_graphic; }
20261
20262 EVERSION EnigmaVersion() const override { return FINALEVERSION_2010; }
20263
20268 void CloneMemoryFrom(__FCBaseData* pSource) override
20269 {
20270 memcpy(&_graphic, ((FCPageGraphic*)pSource)->_GetGraphic(), sizeof(_graphic));
20271 _datablock = &_graphic;
20272 _loadedsize = sizeof(_graphic);
20273 }
20274
20276 bool LoadFirst() override
20277 {
20278 SetCmperAndInci(0, 0);
20279 if (Load(0, 0)) return true; /* 0, 0 is a valid record! */
20280 return LoadNext();
20281 }
20282
20284 bool SaveNew(CMPER) override
20285 { return false; }
20286
20288 bool _RawRelink() override;
20289
20290 __FCBaseData* CreateObject() override { return new FCPageGraphic(); }
20291
20292#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20293
20294public:
20295 const char* ClassName() const override { return "FCPageGraphic"; }
20296 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_PAGEGRAPHIC; }
20297
20298#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20305 void* _GetGraphic() { return &_graphic; }
20306#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20307
20308
20322
20336
20337
20338
20344 {
20345 memset(&_graphic, 0, sizeof(_graphic));
20346 }
20347
20353 {
20354 return MAKEBOOL(_graphic.graphicCmper);
20355 }
20356
20361 int GetFirstPage() const
20362 {
20363 return _graphic.start;
20364 }
20365
20370 int GetLastPage() const
20371 {
20372 return _graphic.end;
20373 }
20374
20379 Evpu16 GetHorizontalPos() const
20380 {
20381 return _graphic.left;
20382 }
20383
20388 Evpu16 GetVerticalPos() const
20389 {
20390 return _graphic.bottom;
20391 }
20392
20397 Evpu16 GetWidth() const
20398 {
20399 return _graphic.width;
20400 }
20401
20406 Evpu16 GetHeight() const
20407 {
20408 return _graphic.height;
20409 }
20410
20415 Evpu16 GetOriginalWidth() const
20416 {
20417 return _graphic.origWidth;
20418 }
20419
20424 Evpu16 GetOriginalHeight() const
20425 {
20426 return _graphic.origHeight;
20427 }
20428
20435 bool GetVisible() const { return !GetBitFlag(_graphic.displayFlags, GRAPHIC_DISPLAY_HIDDEN); }
20436
20443 bool GetPageEdgeRef() const { return GetBitFlag(_graphic.alignFlags, GRAPHIC_ALIGN_PAPER); }
20444
20449 bool GetIndependentRightPage() const { return (_graphic.rightPgAlignFlags != 0); }
20450
20455 Evpu16 GetHorizontalPosRightPage() const { return _graphic.rightPgLeft; }
20456
20461 Evpu16 GetVerticalPosRightPage() const { return _graphic.rightPgBottom; }
20462
20468 bool GetFixedPercent() const { return GetBitFlag(_graphic.alignFlags, GRAPHIC_ALIGN_FIXEDPERC); }
20469
20477#ifndef PDK_FRAMEWORK_LUAFRIENDLY
20479#else
20480 int
20481#endif
20483 {
20484 if (GetBitFlag(_graphic.alignFlags, GRAPHIC_ALIGN_LEFT)) return GRAPHICHORIZALIGN_LEFT;
20485 if (GetBitFlag(_graphic.alignFlags, GRAPHIC_ALIGN_RIGHT)) return GRAPHICHORIZALIGN_RIGHT;
20487 }
20488
20495#ifndef PDK_FRAMEWORK_LUAFRIENDLY
20497#else
20498 int
20499#endif
20501 {
20502 if (GetBitFlag(_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_LEFT)) return GRAPHICHORIZALIGN_LEFT;
20503 if (GetBitFlag(_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_RIGHT)) return GRAPHICHORIZALIGN_RIGHT;
20505 }
20506
20513#ifndef PDK_FRAMEWORK_LUAFRIENDLY
20515#else
20516 int
20517#endif
20519 {
20520 if (GetBitFlag(_graphic.alignFlags, GRAPHIC_ALIGN_TOP)) return GRAPHICVERTALIGN_TOP;
20521 if (GetBitFlag(_graphic.alignFlags, GRAPHIC_ALIGN_BOTTOM)) return GRAPHICVERTALIGN_BOTTOM;
20523 }
20524
20525 /* SETTERS */
20526
20531 void SetFirstPage(int pageno)
20532 {
20533 _graphic.start = pageno;
20534 }
20535
20540 void SetLastPage(int pageno)
20541 {
20542 _graphic.end = pageno;
20543 }
20544
20552 void SetHorizontalPos(Evpu16 pos)
20553 {
20554 _graphic.left = pos;
20556 }
20557
20565 void SetVerticalPos(Evpu16 pos)
20566 {
20567 _graphic.bottom = pos;
20569 }
20570
20575 void SetWidth(Evpu16 width)
20576 {
20577 _graphic.width = width;
20578 }
20579
20584 void SetHeight(Evpu16 height)
20585 {
20586 _graphic.height = height;
20587 }
20588
20593 void SetVisible(bool state)
20594 {
20595 Set16BitFlag(&_graphic.displayFlags, GRAPHIC_DISPLAY_HIDDEN, !state);
20596 }
20597
20609 void SetPageEdgeRef(bool state)
20610 {
20611 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_MARGINS, !state);
20612 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_PAPER, state);
20613 }
20614
20620 {
20621 if (GetIndependentRightPage() == state) return;
20622 /* Copy the alignment */
20623 if (state)
20624 _graphic.rightPgAlignFlags = _graphic.alignFlags;
20625 else
20626 _graphic.rightPgAlignFlags = 0;
20627 }
20628
20633 void SetHorizontalPosRightPage(Evpu16 value)
20634 {
20635 _graphic.rightPgLeft = value;
20636 }
20637
20642 void SetVerticalPosRightPage(Evpu16 value)
20643 {
20644 _graphic.rightPgBottom = value;
20645 }
20646
20652 void SetFixedPercent(bool state) { Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_FIXEDPERC, state); }
20653
20664#ifndef PDK_FRAMEWORK_LUAFRIENDLY
20666#else
20667 FLAG_16
20668#endif
20669 alignment
20670 )
20671 {
20672 switch (alignment)
20673 {
20675 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_LEFT, true);
20676 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_RIGHT, false);
20677 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_CENTERH, false);
20678 break;
20680 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_LEFT, false);
20681 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_RIGHT, true);
20682 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_CENTERH, false);
20683 break;
20684 default: /* Horizontally centered */
20685 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_LEFT, false);
20686 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_RIGHT, false);
20687 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_CENTERH, true);
20688 break;
20689 }
20691 }
20692
20700#ifndef PDK_FRAMEWORK_LUAFRIENDLY
20702#else
20703 FLAG_16
20704#endif
20705 alignment)
20706 {
20707 switch (alignment)
20708 {
20710 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_LEFT, true);
20711 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_RIGHT, false);
20712 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_CENTERH, false);
20713 break;
20715 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_LEFT, false);
20716 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_RIGHT, true);
20717 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_CENTERH, false);
20718 break;
20719 default: /* Horizontally centered */
20720 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_LEFT, false);
20721 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_RIGHT, false);
20722 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_CENTERH, true);
20723 break;
20724 }
20725 }
20726
20734#ifndef PDK_FRAMEWORK_LUAFRIENDLY
20736#else
20737 int
20738#endif
20739 alignment
20740 )
20741 {
20742 /* If GetIndependentRightPage() is ON, copy the vertical alignment
20743 * there as well (to make sure they are in synch). */
20744 switch (alignment)
20745 {
20747 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_TOP, true);
20748 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_BOTTOM, false);
20749 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_CENTERV, false);
20751 {
20752 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_TOP, true);
20753 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_BOTTOM, false);
20754 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_CENTERV, false);
20755 }
20756 break;
20758 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_TOP, false);
20759 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_BOTTOM, true);
20760 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_CENTERV, false);
20762 {
20763 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_TOP, false);
20764 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_BOTTOM, true);
20765 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_CENTERV, false);
20766 }
20767 break;
20768 default:
20769 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_TOP, false);
20770 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_BOTTOM, false);
20771 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_CENTERV, true);
20773 {
20774 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_TOP, false);
20775 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_BOTTOM, false);
20776 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_CENTERV, true);
20777 }
20778 break;
20779 }
20780 }
20781};
20782
20783
20797{
20798private:
20799#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20801 EDTTextRepeatStyle2005 _repeatdef;
20802
20803protected:
20804 EXTAG Tag() const override { return ot_TextRepeatStyle; }
20805 int DataSizeLoad() const override { return sizeof(EDTTextRepeatStyle2005); }
20806 void* Allocate() override { return (void*) &_repeatdef; }
20807
20812 void CloneMemoryFrom(__FCBaseData* pSource) override
20813 {
20814 memcpy(&_repeatdef, ((FCTextRepeatDef*)pSource)->_GetRepeatDef(), sizeof(_repeatdef));
20815 _datablock = &_repeatdef;
20816 _loadedsize = sizeof(_repeatdef);
20817 }
20818
20819
20820 bool LoadFirst() override
20821 {
20822 bool returnval = __FCNoInciOther::LoadFirst();
20823 if (!returnval) return false;
20824 /* Check that a string exists as well.
20825 * Otherwise, it might be possible that it returns true
20826 * even if there are no text repeats at all. */
20827 FCString* pString = CreateTextString();
20828 bool stringexists = !pString->IsEmpty();
20829 delete pString;
20830 return stringexists;
20831 }
20832
20833
20834 __FCBaseData* CreateObject() override { return new FCTextRepeatDef(); }
20835
20840 bool _SaveTextAs(FCString* pString, CMPER itemno);
20841
20844 bool _DeleteText();
20845
20848 bool _DeleteEnclosure();
20849#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20850public:
20851
20858 {
20860 TEXTREPJUST_LEFT = TEXT_REPEAT_LEFTJUST,
20861
20863 TEXTREPJUST_RIGHT = TEXT_REPEAT_RITEJUST,
20864
20866 TEXTREPJUST_CENTER = TEXT_REPEAT_CENTERED,
20867
20869 TEXTREPJUST_FULL = TEXT_REPEAT_FULLJUST
20871
20887
20888
20889 const char* ClassName() const override { return "FCTextRepeatDef"; }
20890 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_TEXTREPEATDEF; }
20891
20892#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20899 void* _GetRepeatDef() { return &_repeatdef; }
20900
20901#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20902
20908
20914 bool DeepSaveAs(CMPER itemno) override;
20915
20921 bool DeepDeleteData() override
20922 {
20923 _DeleteEnclosure();
20924 _DeleteText();
20925 return DeleteData();
20926 }
20927
20937
20938#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
20940 luabridge::RefCountedPtr<FCString> CreateTextString_GC()
20941 { return makeLuaSharedPtr(CreateTextString()); }
20942#endif
20943
20954 bool SaveTextString(FCString *pString);
20955
20970 bool DeepSaveNew(FCString* pString, FCEnclosure* pEnclosure);
20971
20984
20985#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
20987 luabridge::RefCountedPtr<FCEnclosure> CreateEnclosure_GC()
20988 { return makeLuaSharedPtr(CreateEnclosure()); }
20989#endif
20990
21003 bool SaveEnclosure(FCEnclosure* pEnclosure);
21004
21010 {
21011 if (!pInfo) return;
21012 pInfo->SetNameByID(_repeatdef.font);
21013 pInfo->SetEnigmaStyles(_repeatdef.efx);
21014 pInfo->SetSize(_repeatdef.size);
21015 }
21016
21022 {
21023 if (!pInfo) return;
21024 _repeatdef.font = pInfo->GetIDByName();
21025 _repeatdef.efx = pInfo->GetEnigmaStyles();
21026 _repeatdef.size = pInfo->GetSize();
21027 }
21028
21034 bool GetUseThisFont() const
21035 {
21036 return GetBitFlag(_repeatdef.flag, TEXT_REPEAT_USETHISFONT);
21037 }
21038
21044 void SetUseThisFont(bool state)
21045 {
21046 return Set16BitFlag(&_repeatdef.flag, TEXT_REPEAT_USETHISFONT, state);
21047 }
21048
21055#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21057#else
21058 int
21059#endif
21060 GetJustification() const;
21061
21068 void SetJustification(
21069#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21071#else
21072 int
21073#endif
21074 value
21075 );
21076
21081#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21083#else
21084 int
21085#endif
21086 GetReplaceMode() const;
21087
21088
21094 void SetReplaceMode(
21095#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21097#else
21098 int
21099#endif
21100 value
21101 );
21102
21103
21104#ifdef PDK_FRAMEWORK_DEBUG
21105 void DebugDump() override
21106 {
21108 }
21109#endif
21110
21111};
21112
21113
21115
21128{
21129private:
21130#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21131 EDTTextRepeat2005 _textrepeat;
21132#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21133protected:
21134#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21135
21136 EXTAG Tag() const override { return ot_TextRepeat2005; }
21137 int DataSizeLoad() const override { return sizeof(EDTTextRepeat2005); }
21138 void* Allocate() override { return (void*) &_textrepeat; }
21139
21144 void CloneMemoryFrom(__FCBaseData* pSource) override
21145 {
21146 memcpy(&_textrepeat, ((FCTextRepeat*)pSource)->_GetTextRepeat(), sizeof(_textrepeat));
21147 _datablock = &_textrepeat;
21148 _loadedsize = sizeof(_textrepeat);
21149 }
21150
21151 __FCBaseData* CreateObject() override { return new FCTextRepeat(); }
21152
21153#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21154public:
21155 const char* ClassName() const override { return "FCTextRepeat"; }
21156 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_TEXTREPEAT; }
21157
21158#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21165 void* _GetTextRepeat() { return &_textrepeat; }
21166#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21167
21185
21222
21223
21248
21254 {
21255 memset(&_textrepeat, 0, sizeof(_textrepeat));
21256 _datablock = &_textrepeat;
21257 _loadedsize = sizeof(_textrepeat);
21258 }
21259
21267
21268
21275
21276#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
21278 luabridge::RefCountedPtr<FCTextRepeatDef> CreateTextRepeatDef_GC()
21279 { return makeLuaSharedPtr(CreateTextRepeatDef()); }
21280#endif
21281
21295
21296#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
21298 luabridge::RefCountedPtr<FCSeparatePlacements> CreateSeparatePlacements_GC()
21299 { return makeLuaSharedPtr(CreateSeparatePlacements()); }
21300#endif
21301
21311 twobyte GetID() const { return _textrepeat.repnum; }
21312
21322 void SetID(twobyte id) { _textrepeat.repnum = id; }
21323
21329 Evpu16 GetHorizontalPos() const { return _textrepeat.horzPos; }
21330
21336 void SetHorizontalPos(Evpu32 value) { _textrepeat.horzPos = value; }
21337
21342 Evpu16 GetVerticalPos() const { return _textrepeat.vertPos; }
21343
21348 void SetVerticalPos(Evpu32 value) { _textrepeat.vertPos = value; }
21349
21355 int GetTarget() const { return _textrepeat.target; }
21356
21362 void SetTarget(int value) { _textrepeat.target = value; }
21363
21368 bool GetAutoUpdateTarget() const { return GetBitFlag(_textrepeat.flag, TXTRPT_AUTOUPDATE); }
21369
21374 void SetAutoUpdateTarget(bool state) { Set16BitFlag(&_textrepeat.flag, TXTRPT_AUTOUPDATE, state); }
21375
21384 {
21385 return GetBitFlag(_textrepeat.flag, TXTRPT_INDIVPLAC);
21386 }
21387
21396 {
21397 Set16BitFlag(&_textrepeat.flag, TXTRPT_INDIVPLAC, state);
21398 }
21399
21407 bool GetVisible() const
21408 {
21409 return !GetBitFlag(_textrepeat.flag, 0x4000); // this is a reverse bit
21410 }
21411
21416 void SetVisible(bool state)
21417 {
21418 Set16BitFlag(&_textrepeat.flag, 0x4000, !state);
21419 }
21420
21421
21428#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21430#else
21431 int
21432#endif
21433 GetShowMode() const;
21434
21441 void SetShowMode(
21442#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21444#else
21445 int
21446#endif
21447 mode);
21448
21455 twobyte GetStaffListID() const { return _textrepeat.staffList; }
21456
21461 void SetStaffListID(twobyte list)
21462 {
21463 if (list < 0) return;
21464 _textrepeat.staffList = list;
21465 Set16BitFlag(&_textrepeat.flag, TXTRPT_TOPSTAFFONLY, false);
21466 }
21467
21472 twobyte GetTotalPasses() const { return _textrepeat.actuate; }
21473
21478 void SetTotalPasses(twobyte totalpasses)
21479 {
21480 _textrepeat.actuate = totalpasses;
21481 }
21482
21483
21488 bool GetJumpIfIgnore() const { return GetBitFlag(_textrepeat.flag, TXTRPT_JMPIGNORE); }
21489
21494 void SetJumpIfIgnore(bool state) { Set16BitFlag(&_textrepeat.flag, TXTRPT_JMPIGNORE, state); }
21495
21496
21501 bool GetResetOnRepeat() const { return GetBitFlag(_textrepeat.flag, TXTRPT_CLRonCHANGE); }
21502
21507 void SetResetOnRepeat(bool state) { Set16BitFlag(&_textrepeat.flag, TXTRPT_CLRonCHANGE, state); }
21508
21509
21517#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21519#else
21520 int
21521#endif
21522 GetTargetTrigger() const;
21523
21534 void SetTargetTrigger(
21535#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21537#else
21538 int
21539#endif
21540 mode);
21541
21542
21551#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21553#else
21554 int
21555#endif
21556 GetAction() const;
21557
21566 void SetAction(
21567#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21569#else
21570 int
21571#endif
21572 mode);
21573
21574
21575#ifdef PDK_FRAMEWORK_DEBUG
21576 void DebugDump() override
21577 {
21579 DebugOutHex("FCTextRepeat:flag: ", _textrepeat.flag);
21580 }
21581#endif
21582};
21583
21584
21590{
21591private:
21592#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21594 EDTExecutableShapeDef _executableshapedef;
21595
21596protected:
21597 EXTAG Tag() const override { return ot_ExecutableShapeDef; }
21598 int DataSizeLoad() const override { return sizeof(EDTExecutableShapeDef); }
21599 void* Allocate() override { return (void*) &_executableshapedef; }
21600
21605 void CloneMemoryFrom(__FCBaseData* pSource) override
21606 {
21607 memcpy(&_executableshapedef, ((FCExecutableShapeDef*)pSource)->_GetExecutableShapeDef(), sizeof(_executableshapedef));
21608 _datablock = &_executableshapedef;
21609 _loadedsize = sizeof(_executableshapedef);
21610 }
21611
21616 bool LoadNext() override
21617 {
21618 EDataID olddataID = _dataid;
21619 _dataid.other.cmper ++;
21620 if (LoadDataBlock()) return true;
21621 _dataid = olddataID;
21622 return false;
21623 }
21624
21625 __FCBaseData* CreateObject() override { return new FCExecutableShapeDef(); }
21626
21627#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21628public:
21629 const char* ClassName() const override { return "FCExecutableShapeDef"; }
21630 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_EXECUTABLESHAPEDEF; }
21631
21632#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21639 void* _GetExecutableShapeDef() { return &_executableshapedef; }
21640
21641#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21642
21645
21648 twobyte GetShapeID() { return _executableshapedef.shapeID; }
21649
21652 void SetShapeID(twobyte shapeID) { _executableshapedef.shapeID = shapeID; }
21653
21654#ifdef PDK_FRAMEWORK_DEBUG
21655 void DebugDump() override
21656 {
21658 }
21659#endif
21660
21661};
21662
21663
21677{
21678#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21679 private:
21681 EDTChordSuffix _chordsuffixold;
21682#if FXT_VERSION >= FINALEVERSION_2012
21683 EDTChordSuffix2012 _chordsuffix2012;
21684#endif
21685protected:
21687 bool _Use2012Version() const;
21688
21689 EXTAG Tag() const override { return ot_ChordSuffix; }
21690 int DataSizeLoad() const override
21691 {
21692#if FXT_VERSION >= FINALEVERSION_2012
21693 if (_Use2012Version()) return sizeof(EDTChordSuffix2012);
21694#endif
21695 return sizeof(EDTChordSuffix);
21696 }
21697 void* Allocate() override
21698 {
21699#if FXT_VERSION >= FINALEVERSION_2012
21700 if (_Use2012Version()) return (void*) &_chordsuffix2012;
21701#endif
21702 return (void*) &_chordsuffixold;
21703 }
21704 EVERSION EnigmaVersion() const override
21705 {
21706 if (_Use2012Version()) return FINALEVERSION_2012;
21707 return FINALEVERSION_2010;
21708 }
21709
21714 void CloneMemoryFrom(__FCBaseData* pSource) override;
21715
21716 __FCBaseData* CreateObject() override { return new FCChordSuffixElement(); }
21717#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21718public:
21719 const char* ClassName() const override { return "FCChordSuffixElement"; }
21720 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_CHORDSUFFIXELEMENT; }
21721
21722#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21729 void* _GetDataPtr()
21730 {
21731#if FXT_VERSION >= FINALEVERSION_2012
21732 if (_Use2012Version()) return &_chordsuffix2012;
21733#endif
21734 return &_chordsuffixold;
21735 }
21736#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21737
21742
21747 void GetFontInfo(FCFontInfo* pFontInfo);
21748
21753 void SetFontInfo(FCFontInfo* pFontInfo);
21754
21759 eUniChar32 GetSymbol() const;
21760
21765 void SetSymbol(eUniChar32 symbol);
21766
21771 bool GetNumberRepresentation() const;
21772
21777 void SetNumberRepresentation(bool state);
21778
21783 bool GetPrefixFlat() const;
21784
21789 void SetPrefixFlat(bool state);
21790
21795 bool GetPrefixSharp() const;
21796
21801 void SetPrefixSharp(bool state);
21802
21807 bool GetPrefixPlus() const;
21808
21813 void SetPrefixPlus(bool state);
21814
21819 bool GetPrefixMinus() const;
21820
21825 void SetPrefixMinus(bool state);
21826
21831 twobyte GetHorizontalOffset() const;
21832
21837 void SetHorizontalOffset(twobyte value);
21838
21843 twobyte GetVerticalOffset() const;
21844
21849 void SetVerticalOffset(twobyte value);
21850
21851#ifdef PDK_FRAMEWORK_DEBUG
21852 void DebugDump() override
21853 {
21855 }
21856#endif
21857};
21858
21859
21860#if FXT_VERSION >= FINALEVERSION_2012
21861
21862#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21863
21864// the conversion to Unicode names may have happened before Finale 25, but
21865// we only support 64-bit Finale in 2023, so no extra effort is going into
21866// supporting 32-bit versions.
21867#if FXT_VERSION >= FINALEVERSION_25
21868const EXTAG __ot_FRETSTYLE = MAKEEXTAG(MAKETAG(edMultiInciOther,31), 'f','t');
21869const int __MAX_FRET_NAME_LEN = 48 * sizeof(eUniChar16); // Max number of characters of names of
21870const int __MAX_FRET_NUM_TEXT_LEN = 24 * sizeof(eUniChar16);
21871#else
21872const EXTAG __ot_FRETSTYLE = MAKEEXTAG(MAKETAG(edMultiInciOther,13), 'f','t');
21873const int __MAX_FRET_NAME_LEN = 48; // Max number of characters of names of
21874const int __MAX_FRET_NUM_TEXT_LEN = 24;
21875#endif
21876
21877
21878#include "pragma_align_begin.h"
21879struct __FCFretStyle // ot_FRETSTYLE (1 logical incidences, 14 physical incidences (0..13))
21880 // cmper comes from EDTChord2010::fbStyleID
21881{
21882 // start of physical incident 0 (0 based)
21883 tbool showLastFret; // Show the last fret when drawing fretboards
21884 tbool rotate; // Rotate the diagram so the nut is on the left
21885 tbool fingNumWhite; // Draw fingering numbers white.
21886
21887 // CMPERs of the various shapes that can be drawn on the fretboard diagram. When these
21888 // are zero, the hardcoded shapes will be used. (Hardcoded shapes are designed to look
21889 // like the Seville Font.)
21890
21891 eShape fingStrShapeID; // ID of ot_SHAPEDEF record used for drawing
21892 // a fingered (closed) string shape
21893 eShape openStrShapeID; // ID of ot_SHAPEDEF record used for drawing
21894 // an open string shape
21895 eShape muteStrShapeID; // ID of ot_SHAPEDEF record used for drawing
21896 // a muted string shape
21897 // start of physical incident 1 (0 based)
21898 eShape barreShapeID; // ID of ot_SHAPEDEF record used for drawing
21899 // the fretboard barre shape
21900 eShape customShapeID; // ID of the ot_SHAPEDEF record used for
21901 // drawing the user defined shape
21902 utwobyte defNumFrets; // The number of frets to show by default in this style
21903
21904 // Following are the high and low twobyte fields that, together, designate various
21905 // Efix32 values for the fretboard style.
21906
21907 twobyte stringGapHi; // High and low twobyte values for
21908 twobyte stringGapLo; // Efix32 string gap (right edge to right edge)
21909
21910 twobyte fretGapHi; // High and low twobyte values for
21911 // start of physical incident 2 (0 based)
21912 twobyte fretGapLo; // Efix32 fret gap (bottom edge to bottom edge)
21913
21914 twobyte stringWidthHi; // High and low twobyte values for
21915 twobyte stringWidthLo; // Efix32 width of strings
21916
21917 twobyte fretWidthHi; // High and low twobyte values for
21918 twobyte fretWidthLo; // Efix32 width of frets
21919
21920 twobyte nutWidthHi; // High and low twobyte values for
21921 // start of physical incident 3 (0 based)
21922 twobyte nutWidthLo; // Efix32 width of the nut
21923
21924 twobyte vertTextOffHi; // High and low twobyte values for
21925 twobyte vertTextOffLo; // Efix32 vert offset of fret number text
21926
21927 twobyte horzTextOffHi; // High and low twobyte values for
21928 twobyte horzTextOffLo; // Efix32 horz offset of fret number text
21929
21930 twobyte horzHandleOffHi; // High and low twobyte values for
21931 // start of physical incident 4 (0 based)
21932 twobyte horzHandleOffLo; // Efix32 horz offset of the fretboard's handle
21933
21934 twobyte vertHandleOffHi; // High and low twobyte values for
21935 twobyte vertHandleOffLo; // Efix32 vert offset of the fretboard's handle
21936
21937 twobyte whiteoutHi; // High and low twobyte values for
21938 twobyte whiteoutLo; // Efix32 whiteout of strings for fingering numbers
21939
21940 // Font information
21941
21942 EFONTID fretNumFontID; // Font ID, size and EFX data for the
21943 // start of physical incident 5 (0 based)
21944 FontPoints16 fretNumFontSize; // fret number font. (Designates which
21945 FLAG_16 fretNumFontEfx; // fret is the first shown in the diagram
21946
21947 EFONTID fingNumFontID; // Font ID, size and EFX data for the
21948 FontPoints16 fingNumFontSize; // fingering numbers font used in the.
21949 FLAG_16 fingNumFontEfx; // fretboard diagrams
21950
21951 // Fingering number offsets
21952 twobyte horzFingNumOffHi; // High and low twobyte values for
21953 // start of physical incident 6 (0 based)
21954 twobyte horzFingNumOffLo; // Efix32 horizontal finger number offset
21955
21956 twobyte vertFingNumOffHi; // High and low twobyte values for
21957 twobyte vertFingNumOffLo; // Efix32 vertical finger number offset
21958
21959 twobyte pad[3]; // Unused--padding to make size mult of OTSIZE
21960
21961#if FXT_VERSION >= FINALEVERSION_25
21962 // start of physical incident 7 (0 based)
21963 eUniChar16 name[__MAX_FRET_NAME_LEN]; // The name of the fretboard style
21964
21965 // start of physical incident 23 (0 based)
21966 eUniChar16 fretNumText[__MAX_FRET_NUM_TEXT_LEN];
21967 // The text to display after the
21968 // fret number (e.g., 'fr' or 'fret')
21969 // end of physical incident 30 (0 based)
21970#else
21971 // start of physical incident 7 (0 based)
21972 ECHAR name[__MAX_FRET_NAME_LEN]; // The name of the fretboard style
21973
21974 // start of physical incident 11 (0 based)
21975 ECHAR fretNumText[__MAX_FRET_NUM_TEXT_LEN];
21976 // The text to display after the
21977 // fret number (e.g., 'fr' or 'fret')
21978 // end of physical incident 12 (0 based)
21979#endif
21980};
21981#include "pragma_align_end.h"
21982
21983#endif /* #ifndef DOXYGEN_SHOULD_IGNORE_THIS */
21984
21985
21995{
21996private:
21997#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21998 /* The data storage for the object. */
21999 __FCFretStyle _fretstyledef;
22000
22001protected:
22002 EXTAG Tag() const override { return __ot_FRETSTYLE; }
22003 int DataSizeLoad() const override { return sizeof(__FCFretStyle); }
22004 void* Allocate() override { return (void*)&_fretstyledef; }
22005 EVERSION EnigmaVersion() const override { return FINALEVERSION_2010; }
22006
22011 void CloneMemoryFrom(__FCBaseData* pSource) override
22012 {
22013 memcpy(&_fretstyledef, ((FCFretboardStyleDef*)pSource)->_GetFretStyleDef(), sizeof(_fretstyledef));
22014 _datablock = &_fretstyledef;
22015 _loadedsize = sizeof(_fretstyledef);
22016 }
22017
22022 bool LoadNext() override
22023 {
22024 EDataID olddataID = _dataid;
22025 _dataid.other.cmper++;
22026 if (LoadDataBlock()) return true;
22027 _dataid = olddataID;
22028 return false;
22029 }
22030
22031 __FCBaseData* CreateObject() override { return new FCFretboardStyleDef(); }
22032
22033#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
22034public:
22035 const char* ClassName() const override { return "FCFretboardStyleDef"; }
22036 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_FRETBOARDSTYLEDEF; }
22037
22038#ifndef DOXYGEN_SHOULD_IGNORE_THIS
22045 void* _GetFretStyleDef() { return &_fretstyledef; }
22046
22047#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
22048
22054 {
22055 memset(&_fretstyledef, 0, sizeof(_fretstyledef));
22056 _datablock = &_fretstyledef;
22057 _loadedsize = sizeof(_fretstyledef);
22058 }
22059
22060 // *******
22061 // GETTERS
22062 // *******
22063
22070 void GetName(FCString* pString) const
22071 {
22072 if (!pString) return;
22073#if FXT_VERSION >= FINALEVERSION_25
22074 pString->SetUnicodeString(_fretstyledef.name);
22075#else
22076 pString->SetCString(_fretstyledef.name);
22077#endif
22078 }
22079
22084 Efix32 GetStringSpacing() const { return MAKELONG(_fretstyledef.stringGapLo, _fretstyledef.stringGapHi); }
22085
22090 Efix32 GetStringThickness() const { return MAKELONG(_fretstyledef.stringWidthLo, _fretstyledef.stringWidthHi); }
22091
22096 Efix32 GetFretSpacing() const { return MAKELONG(_fretstyledef.fretGapLo, _fretstyledef.fretGapHi); }
22097
22102 Efix32 GetFretThickness() const { return MAKELONG(_fretstyledef.fretWidthLo, _fretstyledef.fretWidthHi); }
22103
22108 Efix32 GetNutThickness() const { return MAKELONG(_fretstyledef.nutWidthLo, _fretstyledef.nutWidthHi); }
22109
22114 Efix32 GetHorizontalFingeringOffset() const { return MAKELONG(_fretstyledef.horzFingNumOffLo, _fretstyledef.horzFingNumOffHi); }
22115
22120 Efix32 GetVerticalFingeringOffset() const { return MAKELONG(_fretstyledef.vertFingNumOffLo, _fretstyledef.vertFingNumOffHi); }
22121
22126 Efix32 GetFingeringWhiteout() const { return MAKELONG(_fretstyledef.whiteoutLo, _fretstyledef.whiteoutHi); }
22127
22132 Efix32 GetHorizontalHandleOffset() const { return MAKELONG(_fretstyledef.horzHandleOffLo, _fretstyledef.horzHandleOffHi); }
22133
22138 Efix32 GetVerticalHandleOffset() const { return MAKELONG(_fretstyledef.vertHandleOffLo, _fretstyledef.vertHandleOffHi); }
22139
22146 void GetFretNumberText(FCString* pString) const
22147 {
22148 if (!pString) return;
22149#if FXT_VERSION >= FINALEVERSION_25
22150 pString->SetUnicodeString(_fretstyledef.fretNumText);
22151#else
22152 pString->SetCString(_fretstyledef.fretNumText);
22153#endif
22154 }
22155
22160 Efix32 GetHorizontalFretNumberOffset() const { return MAKELONG(_fretstyledef.horzTextOffLo, _fretstyledef.horzTextOffHi); }
22161
22166 Efix32 GetVerticalFretNumberOffset() const { return MAKELONG(_fretstyledef.vertTextOffLo, _fretstyledef.vertTextOffHi); }
22167
22172 int GetFretCountDefault() const { return _fretstyledef.defNumFrets; }
22173
22178 bool GetShowLastFret() const { return _fretstyledef.showLastFret != 0; }
22179
22186 bool GetRotate() const { return _fretstyledef.rotate != 0; }
22187
22192 bool GetDrawFingeringWhite() const { return _fretstyledef.fingNumWhite != 0; }
22193
22198 twobyte GetFingeredShapeID() const
22199 {
22200 return _fretstyledef.fingStrShapeID;
22201 }
22202
22207 twobyte GetOpenStringShapeID() const
22208 {
22209 return _fretstyledef.openStrShapeID;
22210 }
22211
22216 twobyte GetMuteStringShapeID() const
22217 {
22218 return _fretstyledef.muteStrShapeID;
22219 }
22220
22225 twobyte GetBarreShapeID() const
22226 {
22227 return _fretstyledef.barreShapeID;
22228 }
22229
22234 twobyte GetCustomShapeID() const
22235 {
22236 return _fretstyledef.customShapeID;
22237 }
22238
22246 {
22247 if (!pFontInfo) return;
22248 pFontInfo->SetNameByID(_fretstyledef.fingNumFontID);
22249 pFontInfo->SetSize(_fretstyledef.fingNumFontSize);
22250 pFontInfo->SetEnigmaStyles(_fretstyledef.fingNumFontEfx);
22251 }
22252
22260 {
22261 if (!pFontInfo) return;
22262 pFontInfo->SetNameByID(_fretstyledef.fretNumFontID);
22263 pFontInfo->SetSize(_fretstyledef.fretNumFontSize);
22264 pFontInfo->SetEnigmaStyles(_fretstyledef.fretNumFontEfx);
22265 }
22266
22267 // *******
22268 // SETTERS
22269 // *******
22270
22277 void SetName(const FCString* pString)
22278 {
22279 if (!pString) return;
22280 memset(&_fretstyledef.name, 0, sizeof(_fretstyledef.name));
22281#if FXT_VERSION >= FINALEVERSION_25
22282 pString->CopyToUnicodeBuffer(_fretstyledef.name, DIM(_fretstyledef.name));
22283#else
22284 strncpy(_fretstyledef.name, pString->GetCString(), sizeof(_fretstyledef.name) - 1);
22285#endif
22286 }
22287
22292 void SetStringSpacing(Efix32 value)
22293 {
22294 _fretstyledef.stringGapLo = LOWORD(value);
22295 _fretstyledef.stringGapHi = HIWORD(value);
22296 }
22297
22302 void SetStringThickness(Efix32 value)
22303 {
22304 _fretstyledef.stringWidthLo = LOWORD(value);
22305 _fretstyledef.stringWidthHi = HIWORD(value);
22306 }
22307
22312 void SetFretSpacing(Efix32 value)
22313 {
22314 _fretstyledef.fretGapLo = LOWORD(value);
22315 _fretstyledef.fretGapHi = HIWORD(value);
22316 }
22317
22322 void SetFretThickness(Efix32 value)
22323 {
22324 _fretstyledef.fretWidthLo = LOWORD(value);
22325 _fretstyledef.fretWidthHi = HIWORD(value);
22326 }
22327
22332 void SetNutThickness(Efix32 value)
22333 {
22334 _fretstyledef.nutWidthLo = LOWORD(value);
22335 _fretstyledef.nutWidthHi = HIWORD(value);
22336 }
22337
22343 {
22344 _fretstyledef.horzFingNumOffLo = LOWORD(value);
22345 _fretstyledef.horzFingNumOffHi = HIWORD(value);
22346 }
22347
22353 {
22354 _fretstyledef.vertFingNumOffLo = LOWORD(value);
22355 _fretstyledef.vertFingNumOffHi = HIWORD(value);
22356 }
22357
22362 void SetFingeringWhiteout(Efix32 value)
22363 {
22364 _fretstyledef.whiteoutLo = LOWORD(value);
22365 _fretstyledef.whiteoutHi = HIWORD(value);
22366 }
22367
22372 void SetHorizontalHandleOffset(Efix32 value)
22373 {
22374 _fretstyledef.horzHandleOffLo = LOWORD(value);
22375 _fretstyledef.horzHandleOffHi = HIWORD(value);
22376 }
22377
22382 void SetVerticalHandleOffset(Efix32 value)
22383 {
22384 _fretstyledef.vertHandleOffLo = LOWORD(value);
22385 _fretstyledef.vertHandleOffHi = HIWORD(value);
22386 }
22387
22394 void SetFretNumberText(const FCString* pString)
22395 {
22396 if (!pString) return;
22397 memset(&_fretstyledef.fretNumText, 0, sizeof(_fretstyledef.fretNumText));
22398#if FXT_VERSION >= FINALEVERSION_25
22399 pString->CopyToUnicodeBuffer(_fretstyledef.fretNumText, DIM(_fretstyledef.fretNumText));
22400#else
22401 strncpy(_fretstyledef.fretNumText, pString->GetCString(), sizeof(_fretstyledef.fretNumText) - 1);
22402#endif
22403 }
22404
22410 {
22411 _fretstyledef.horzTextOffLo = LOWORD(value);
22412 _fretstyledef.horzTextOffHi = HIWORD(value);
22413 }
22414
22420 {
22421 _fretstyledef.vertTextOffLo = LOWORD(value);
22422 _fretstyledef.vertTextOffHi = HIWORD(value);
22423 }
22424
22429 void SetFretCountDefault(int value) { _fretstyledef.defNumFrets = value; }
22430
22435 void SetShowLastFret(bool state) { _fretstyledef.showLastFret = state; }
22436
22443 void SetRotate(bool state) { _fretstyledef.rotate = state; }
22444
22449 void SetDrawFingeringWhite(bool state) { _fretstyledef.fingNumWhite = state; }
22450
22455 void SetFingeredShapeID(twobyte value)
22456 {
22457 _fretstyledef.fingStrShapeID = value;
22458 }
22459
22464 void SetOpenStringShapeID(twobyte value)
22465 {
22466 _fretstyledef.openStrShapeID = value;
22467 }
22468
22473 void SetMuteStringShapeID(twobyte value)
22474 {
22475 _fretstyledef.muteStrShapeID = value;
22476 }
22477
22482 void SetBarreShapeID(twobyte value)
22483 {
22484 _fretstyledef.barreShapeID = value;
22485 }
22486
22491 void SetCustomShapeID(twobyte value)
22492 {
22493 _fretstyledef.customShapeID = value;
22494 }
22495
22503 {
22504 if (!pFontInfo) return;
22505 _fretstyledef.fingNumFontID = pFontInfo->GetIDByName();
22506 _fretstyledef.fingNumFontSize = pFontInfo->GetSize();
22507 _fretstyledef.fingNumFontEfx = pFontInfo->GetEnigmaStyles();
22508 }
22509
22517 {
22518 if (!pFontInfo) return;
22519 _fretstyledef.fretNumFontID = pFontInfo->GetIDByName();
22520 _fretstyledef.fretNumFontSize = pFontInfo->GetSize();
22521 _fretstyledef.fretNumFontEfx = pFontInfo->GetEnigmaStyles();
22522 }
22523
22524#ifdef PDK_FRAMEWORK_DEBUG
22525 void DebugDump() override
22526 {
22528 }
22529#endif
22530
22531};
22532
22533#endif // FXT_VERSION >= FINALEVERSION_2012
22534
22535
22536#if FXT_VERSION >= FINALEVERSION_2012
22537
22540{
22541#ifndef DOXYGEN_SHOULD_IGNORE_THIS
22542 private:
22544 EDTFretGroup2012 _fretgroup;
22545
22546protected:
22547 EXTAG Tag() const override { return otx_FretGroup; }
22548 int DataSizeLoad() const override { return sizeof(EDTFretGroup2012); }
22549 void* Allocate() override { return (void*) &_fretgroup; }
22550 EVERSION EnigmaVersion() const override { return FINALEVERSION_2012; }
22551
22556 void CloneMemoryFrom(__FCBaseData* pSource) override
22557 {
22558 memcpy(&_fretgroup, ((FCFretboardGroupDef*)pSource)->_GetDataPtr(), sizeof(_fretgroup));
22559 _datablock = &_fretgroup;
22560 _loadedsize = sizeof(_fretgroup);
22561 }
22562
22563 __FCBaseData* CreateObject() override { return new FCFretboardGroupDef(); }
22564#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
22565public:
22566 const char* ClassName() const override { return "FCFretboardGroupDef"; }
22567 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_FRETBOARDGROUPDEF; }
22568
22569#ifndef DOXYGEN_SHOULD_IGNORE_THIS
22576 void* _GetDataPtr() { return &_fretgroup; }
22577#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
22578
22581
22582 bool LoadFirst() override
22583 {
22584 return Load(1, 0);
22585 }
22586
22589 twobyte _GetInci() { return _dataid.other.inci; }
22590
22598
22599#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
22601 luabridge::RefCountedPtr<FCFretInstrumentDef> CreateFretInstrumentDef_GC()
22602 { return makeLuaSharedPtr(CreateFretInstrumentDef()); }
22603#endif
22604
22612
22613#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
22615 luabridge::RefCountedPtr<FCFretboardGroup> CreateFretboardGroup_GC()
22616 { return makeLuaSharedPtr(CreateFretboardGroup()); }
22617#endif
22618
22623 CMPER GetFretInstrumentID() const { return _fretgroup.fretInstID; }
22624
22629 void SetFretInstrumentID(CMPER value) { _fretgroup.fretInstID = value; }
22630
22635 void GetName(FCString* pString) const { pString->SetUnicodeString(_fretgroup.name); }
22636
22641 void SetName(const FCString* pString) { pString->CopyToUnicodeBuffer(_fretgroup.name, DIM(_fretgroup.name)); }
22642
22643#ifdef PDK_FRAMEWORK_DEBUG
22644 void DebugDump() override
22645 {
22647 }
22648#endif
22649};
22650
22651#endif
22652
22653
22654
22668{
22669private:
22670#ifndef DOXYGEN_SHOULD_IGNORE_THIS
22671 /* Data is dynamically stored! */
22672
22673protected:
22674 EXTAG Tag() const override { return ot_EndingRepeat; }
22675
22676 void _AllocateMemory(int size);
22677
22678 int DataSizeLoad() const override;
22679 int DataSizeSave() const override;
22680 void* Allocate() override;
22681 void Deallocate() override;
22682 bool IsDynamicSize() override { return true; }
22683
22684 __FCBaseData* CreateObject() override { return new FCEndingRepeat(); }
22685#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
22686public:
22687
22688 const char* ClassName() const override { return "FCEndingRepeat"; }
22689 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_ENDINGREPEAT; }
22690
22691#ifndef DOXYGEN_SHOULD_IGNORE_THIS
22692
22696 EDTEndingRepeat2005* _TypeCast() const { return (EDTEndingRepeat2005*) _datablock; }
22697#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
22698
22704 {
22705 _AllocateMemory(sizeof(EDTEndingRepeat2005));
22706 }
22707
22713 bool DeepDeleteData() override;
22714
22720 bool DeepSaveAs(CMPER itemno) override;
22721
22728 twobyte GetStaffListID() const { return _TypeCast()->staffList; }
22729
22734 bool GetSkipOnIgnore() const
22735 {
22736 return GetBitFlag(_TypeCast()->flag, EndRepeat_JMPIGNORE);
22737 }
22738
22743 eMeas GetTargetMeasure() const
22744 {
22745 return _TypeCast()->nextend;
22746 }
22747
22753 {
22754 return GetBitFlag(_TypeCast()->flag, EndRepeat_INDIVPLAC);
22755 }
22756
22764 bool GetVisible() const
22765 {
22766 return !GetBitFlag(_TypeCast()->flag, 0x0004); // this is a reverse bit
22767 }
22768
22774 {
22775 return _TypeCast()->line2;
22776 }
22777
22783 {
22784 return _TypeCast()->pos;
22785 }
22786
22792 {
22793 return _TypeCast()->line;
22794 }
22795
22801 {
22802 return _TypeCast()->pos2;
22803 }
22804
22810 {
22811 return _TypeCast()->endline;
22812 }
22813
22819 {
22820 return _TypeCast()->textpos;
22821 }
22822
22828 {
22829 return _TypeCast()->textline;
22830 }
22831
22838#ifndef PDK_FRAMEWORK_LUAFRIENDLY
22840#else
22841 int
22842#endif
22843 GetShowMode() const;
22844
22849 int GetPassNumbersCount() const { return _TypeCast()->numTotalPasses; }
22850
22859#ifndef PDK_FRAMEWORK_LUAFRIENDLY
22861#else
22862int
22863#endif
22865 {
22866 switch (_TypeCast()->flag & EndRepeat_ACTION_BITS)
22867 {
22868 case 0:
22870 case 0x10:
22872 case 0x20:
22874 case 0x50:
22876 default:
22878 }
22879 }
22880
22885 void SetStaffListID(twobyte list)
22886 {
22887 if (list < 0) return;
22888 _TypeCast()->staffList = list;
22889 Set16BitFlag(&_TypeCast()->flag, EndRepeat_TOPSTAFFONLY, false);
22890 }
22891
22896 void SetSkipOnIgnore(bool state)
22897 {
22898 Set16BitFlag(&_TypeCast()->flag, EndRepeat_JMPIGNORE, state);
22899 }
22900
22906 void SetTargetMeasure(eMeas measure)
22907 {
22908 _TypeCast()->nextend = measure;
22909 }
22910
22916 {
22917 Set16BitFlag(&_TypeCast()->flag, EndRepeat_INDIVPLAC, state);
22918 }
22919
22924 void SetVisible(bool state)
22925 {
22926 Set16BitFlag(&_TypeCast()->flag, 0x004, !state);
22927 }
22928
22933 void SetVerticalTopBracketPosition(Evpu16 position)
22934 {
22935 _TypeCast()->line2 = position;
22936 }
22937
22943 {
22944 _TypeCast()->pos = position;
22945 }
22946
22952 {
22953 _TypeCast()->line = position;
22954 }
22955
22961 {
22962 _TypeCast()->pos2 = position;
22963 }
22964
22970 {
22971 _TypeCast()->endline = position;
22972 }
22973
22978 void SetHorizontalTextPosition(Evpu16 position)
22979 {
22980 _TypeCast()->textpos = position;
22981 }
22982
22987 void SetVerticalTextPosition(Evpu16 position)
22988 {
22989 _TypeCast()->textline = position;
22990 }
22991
22992
22999 void SetShowMode(
23000#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23002#else
23003 int
23004#endif
23005 mode);
23006
23007
23017
23018#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
23020 luabridge::RefCountedPtr<FCString> CreateTextString_GC()
23021 { return makeLuaSharedPtr(CreateTextString()); }
23022#endif
23023
23034 bool SaveTextString(FCString* pString);
23035
23044 bool GetPassNumbers(FCNumbers* pNumbers);
23045
23057 bool SetPassNumbers(FCNumbers* pNumbers);
23058
23067#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23069#else
23070int
23071#endif
23072 value
23073 )
23074 {
23075 switch (value)
23076 {
23078 _TypeCast()->flag &= ~EndRepeat_ACTION_BITS;
23079 _TypeCast()->flag |= 0x10;
23080 break;
23082 _TypeCast()->flag &= ~EndRepeat_ACTION_BITS;
23083 _TypeCast()->flag |= 0x20;
23084 break;
23086 _TypeCast()->flag &= ~EndRepeat_ACTION_BITS;
23087 _TypeCast()->flag |= 0x50;
23088 break;
23090 _TypeCast()->flag &= ~EndRepeat_ACTION_BITS;
23091 break;
23095 break;
23096 }
23097 }
23098
23099
23115
23116#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
23118 luabridge::RefCountedPtr<FCSeparatePlacements> CreateSeparatePlacements_GC()
23119 { return makeLuaSharedPtr(CreateSeparatePlacements()); }
23120#endif
23121
23137
23138#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
23140 luabridge::RefCountedPtr<FCSeparatePlacements> CreateTextSeparatePlacements_GC()
23141 { return makeLuaSharedPtr(CreateTextSeparatePlacements()); }
23142#endif
23143};
23144
23145
23156{
23157private:
23158#ifndef DOXYGEN_SHOULD_IGNORE_THIS
23163 EDTBackwardRepeat2005 _backwardrepeat;
23164
23165protected:
23166 EXTAG Tag() const override { return ot_BackwardRepeat; }
23167 int DataSizeLoad() const override { return sizeof(EDTBackwardRepeat2005); }
23168 void* Allocate() override { return (void*) &_backwardrepeat; }
23169
23174 void CloneMemoryFrom(__FCBaseData* pSource) override
23175 {
23176 memcpy(&_backwardrepeat, ((FCBackwardRepeat*)pSource)->_GetBackwardRepeat(), sizeof(_backwardrepeat));
23177 _datablock = &_backwardrepeat;
23178 _loadedsize = sizeof(_backwardrepeat);
23179 }
23180
23181 __FCBaseData* CreateObject() override { return new FCBackwardRepeat(); }
23182#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
23183public:
23184
23185 const char* ClassName() const override { return "FCBackwardRepeat"; }
23186 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_BACKWARDREPEAT; }
23187
23188#ifndef DOXYGEN_SHOULD_IGNORE_THIS
23195 void* _GetBackwardRepeat() { return &_backwardrepeat; }
23196#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
23197
23203 {
23204 memset(&_backwardrepeat, 0, sizeof(_backwardrepeat));
23205 _datablock = &_backwardrepeat;
23206 _loadedsize = sizeof(_backwardrepeat);
23207 }
23208
23209
23214 eMeas GetTargetMeasure() const
23215 {
23216 return _backwardrepeat.target;
23217 }
23218
23224 {
23225 return GetBitFlag(_backwardrepeat.flag, BackRepeat_INDIVPLAC);
23226 }
23227
23235 bool GetVisible() const
23236 {
23237 return !GetBitFlag(_backwardrepeat.flag, 0x4000); // this is a reverse bit
23238 }
23239
23245 twobyte GetTotalPasses() const
23246 {
23247 return _backwardrepeat.actuate;
23248 }
23249
23255 {
23256 return _backwardrepeat.line2;
23257 }
23258
23264 {
23265 return _backwardrepeat.line1;
23266 }
23267
23273 {
23274 return _backwardrepeat.pos1;
23275 }
23276
23282 {
23283 return _backwardrepeat.pos2;
23284 }
23285
23290 twobyte GetStaffListID() const
23291 {
23292 return _backwardrepeat.staffList;
23293 }
23294
23301#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23303#else
23304 int
23305#endif
23307 {
23308 if (GetBitFlag(_backwardrepeat.flag, BackRepeat_TOPSTAFFONLY)) return FCTextRepeat::REPSHOW_TOPSTAFF;
23309 if (_backwardrepeat.staffList) return FCTextRepeat::REPSHOW_STAFFLIST;
23311 }
23312
23320#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23322#else
23323 int
23324#endif
23325 mode)
23326 {
23327 switch (mode)
23328 {
23330 Set16BitFlag(&_backwardrepeat.flag, BackRepeat_TOPSTAFFONLY, true);
23331 _backwardrepeat.staffList = 0;
23332 break;
23334 Set16BitFlag(&_backwardrepeat.flag, BackRepeat_TOPSTAFFONLY, false);
23335 if (!_backwardrepeat.staffList) _backwardrepeat.staffList = 1;
23336 break;
23338 Set16BitFlag(&_backwardrepeat.flag, BackRepeat_TOPSTAFFONLY, false);
23339 _backwardrepeat.staffList = 0;
23340 break;
23341 }
23342 }
23343
23344
23349 void SetTargetMeasure(eMeas measure)
23350 {
23351 _backwardrepeat.target = measure;
23352 }
23353
23359 {
23360 return Set16BitFlag(&_backwardrepeat.flag, BackRepeat_INDIVPLAC, state);
23361 }
23362
23367 void SetVisible(bool state)
23368 {
23369 return Set16BitFlag(&_backwardrepeat.flag, 0x4000, !state);
23370 }
23371
23377 void SetTotalPasses(twobyte passes)
23378 {
23379 _backwardrepeat.actuate = passes;
23380 }
23381
23391#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23393#else
23394int
23395#endif
23397 {
23398 switch (_backwardrepeat.flag & BackRepeat_ACTION_BITS)
23399 {
23400 case 0:
23402 case 0x10:
23404 case 0x20:
23406 default:
23408 }
23409 }
23410
23416 {
23417 return GetBitFlag(_backwardrepeat.flag, BackRepeat_CLRonCHANGE);
23418 }
23419
23424 void SetTopBracketPosition(Evpu16 position)
23425 {
23426 _backwardrepeat.line2 = position;
23427 }
23428
23433 void SetBottomBracketPosition(Evpu16 position)
23434 {
23435 _backwardrepeat.line1 = position;
23436 }
23437
23442 void SetRightBracketPosition(Evpu16 position)
23443 {
23444 _backwardrepeat.pos1 = position;
23445 }
23446
23451 void SetLeftBracketPosition(Evpu16 position)
23452 {
23453 _backwardrepeat.pos2 = position;
23454 }
23455
23460 void SetStaffListID(twobyte stafflistid)
23461 {
23462 _backwardrepeat.staffList = stafflistid;
23463 }
23464
23474#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23476#else
23477int
23478#endif
23479 value
23480 )
23481 {
23482 switch (value)
23483 {
23485 _backwardrepeat.flag &= ~BackRepeat_ACTION_BITS;
23486 _backwardrepeat.flag |= 0x10;
23487 break;
23489 _backwardrepeat.flag &= ~BackRepeat_ACTION_BITS;
23490 _backwardrepeat.flag |= 0x20;
23491 break;
23493 _backwardrepeat.flag &= ~BackRepeat_ACTION_BITS;
23494 break;
23499 break;
23500 }
23501 }
23502
23507 void SetResetOnRepeatAction(bool state)
23508 {
23509 Set16BitFlag(&_backwardrepeat.flag, BackRepeat_CLRonCHANGE, state);
23510 }
23511
23520#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23522#else
23523 int
23524#endif
23526 {
23527 switch (_backwardrepeat.flag & 0xc00)
23528 {
23529 case 0x00:
23531 case 0x400:
23533 case 0x800:
23535 default:
23536 break;
23537 }
23538
23539#ifdef PDK_FRAMEWORK_DEBUG
23540 DebugOutHex("Undefined flag state for FCBackwardRepeat:GetAction: ", _backwardrepeat.flag);
23541#endif
23543 }
23544
23554#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23556#else
23557 int
23558#endif
23559 mode)
23560 {
23561 switch (mode)
23562 {
23564 /* 0x0c40 bits should all be off */
23565 Set16BitFlag(&_backwardrepeat.flag, 0x0c00, false);
23566 break;
23567
23569 /* 0x0400 (in the 0x0c40 bit set) represents the "jump on pass" */
23570 Set16BitFlag(&_backwardrepeat.flag, 0x0c00, false);
23571 Set16BitFlag(&_backwardrepeat.flag, 0x0400, true);
23572 break;
23573
23575 /* 0x0800 (in the 0x0c40 bit set) represents the "play section" */
23576 Set16BitFlag(&_backwardrepeat.flag, 0x0c00, false);
23577 Set16BitFlag(&_backwardrepeat.flag, 0x0800, true);
23578 break;
23579
23582 break;
23583 }
23584 }
23585
23599
23600#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
23602 luabridge::RefCountedPtr<FCSeparatePlacements> CreateSeparatePlacements_GC()
23603 { return makeLuaSharedPtr(CreateSeparatePlacements()); }
23604#endif
23605
23606};
23607
23608
23615{
23616private:
23617#ifndef DOXYGEN_SHOULD_IGNORE_THIS
23619 struct __FCEDTBeatChartHeader
23620 {
23621 TimeEdu32 totalDur; // total duration of beat chart (should be equal to total duration of measure)
23622 Evpu16 totalWidth; // total "ideal width" (equal to last nextposi in array)
23623 Evpu16 minWidth; // final minpos value
23624 Evpu16 allotWidth;
23625 tbool incizero; // always 1
23626 };
23627
23631 EDTBeatChartElement _beatchartelement;
23632
23633 const __FCEDTBeatChartHeader* _GetDataAsHeader() const
23634 { return reinterpret_cast<const __FCEDTBeatChartHeader*>(&_beatchartelement); }
23635
23636 __FCEDTBeatChartHeader* _GetDataAsHeader()
23637 { return reinterpret_cast<__FCEDTBeatChartHeader*>(&_beatchartelement); }
23638
23639protected:
23640 EXTAG Tag() const override { return ot_BeatChartElement; }
23641 int DataSizeLoad() const override { return sizeof(EDTBeatChartElement); }
23642 void* Allocate() override { return (void*) &_beatchartelement; }
23643
23648 void CloneMemoryFrom(__FCBaseData* pSource) override
23649 {
23650 memcpy(&_beatchartelement, ((FCBeatChartElement*)pSource)->_GetBeatChartElement(), sizeof(_beatchartelement));
23651 _datablock = &_beatchartelement;
23652 _loadedsize = sizeof(_beatchartelement);
23653 }
23654
23655 __FCBaseData* CreateObject() override { return new FCBeatChartElement(); }
23656#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
23657public:
23658
23659 const char* ClassName() const override { return "FCBeatChartElement"; }
23660 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_BEATCHARTELEMENT; }
23661
23662#ifndef DOXYGEN_SHOULD_IGNORE_THIS
23669 void* _GetBeatChartElement() { return &_beatchartelement; }
23670#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
23671
23678 {
23679 memset(&_beatchartelement, 0, sizeof(_beatchartelement));
23680 _datablock = &_beatchartelement;
23681 _loadedsize = sizeof(_beatchartelement);
23682 }
23683
23697 TimeEdu32 GetMeasurePos() const override { return _beatchartelement.dura; }
23698
23706 Evpu16 GetHorizontalPosition() const { return _beatchartelement.posi; }
23707
23720 {
23721 if (GetInitElement()) return 0;
23722 return _beatchartelement.nextposi;
23723 }
23724
23734 Evpu16 GetMinimumPosition() const
23735 {
23736 if (GetInitElement()) return 0;
23737 return _beatchartelement.minpos;
23738 }
23739
23750 TimeEdu32 GetTotalDuration() const
23751 {
23752 if (!GetInitElement()) return 0;
23753 return _GetDataAsHeader()->totalDur;
23754 }
23755
23765 Evpu16 GetFullSpan() const
23766 {
23767 if (!GetInitElement()) return 0;
23768 return _GetDataAsHeader()->totalWidth;
23769 }
23770
23783 Evpu16 GetMinimumWidth() const
23784 {
23785 if (!GetInitElement()) return 0;
23786 return _GetDataAsHeader()->minWidth;
23787 }
23788
23801 Evpu16 GetReferenceWidth() const
23802 {
23803 if (!GetInitElement()) return 0;
23804 return _GetDataAsHeader()->allotWidth;
23805 }
23806
23812 bool GetInitElement() const { return _beatchartelement.incizero != 0; }
23813
23826 Evpu16 CalcWidth()
23827 {
23828 if (GetInitElement()) return 0;
23830 }
23831
23839 void SetMeasurePos(TimeEdu32 edupos) { _beatchartelement.dura = edupos; }
23840
23851 void SetWidth(Evpu16 width)
23852 {
23853 if (GetInitElement()) return;
23854 _beatchartelement.nextposi = width + _beatchartelement.posi;
23855 }
23856
23863 void SetHorizontalPosition(Evpu16 position)
23864 {
23865 if (GetInitElement()) return;
23866 _beatchartelement.posi = position;
23867 }
23868
23877 void SetNextHorizontalPosition(Evpu16 value)
23878 {
23879 if (GetInitElement()) return;
23880 _beatchartelement.nextposi = value;
23881 }
23882
23893 void SetMinimumPosition(Evpu16 value)
23894 {
23895 if (GetInitElement()) return;
23896 _beatchartelement.minpos = value;
23897 }
23898
23905 void SetTotalDuration(TimeEdu32 dura)
23906 {
23907 if (!GetInitElement()) return;
23908 _GetDataAsHeader()->totalDur = dura;
23909 }
23910
23917 void SetFullSpan(Evpu16 span)
23918 {
23919 if (!GetInitElement()) return;
23920 _GetDataAsHeader()->totalWidth = span;
23921 }
23922
23932 void SetMinimumWidth(Evpu16 width)
23933 {
23934 if (!GetInitElement()) return;
23935 _GetDataAsHeader()->minWidth = width;
23936 }
23937
23944 void SetReferenceWidth(Evpu16 width)
23945 {
23946 if (!GetInitElement()) return;
23947 _GetDataAsHeader()->allotWidth = width;
23948 }
23949
23963 bool MoveHorizontalPosition(Evpu16 offset, FCBeatChartElements* pBeatChart);
23964
23965
23966#ifdef PDK_FRAMEWORK_DEBUG
23967 void DebugDump() override
23968 {
23970 DebugOutInt("Measure Pos: ", GetMeasurePos());
23971 DebugOutInt("Horizontal Position: ", GetHorizontalPosition());
23972 DebugOutInt("Minimum position: ", GetMinimumPosition());
23973 DebugOutInt("Next horizontal position:", GetNextHorizontalPosition());
23974 DebugOutBool("Init element: ", GetInitElement());
23975 }
23976#endif
23977};
23978
23979
23987{
23988private:
23989#ifndef DOXYGEN_SHOULD_IGNORE_THIS
23993 EDTTempo _tempo;
23994
23995protected:
23996 EXTAG Tag() const override { return ot_Tempo; }
23997 int DataSizeLoad() const override { return sizeof(EDTTempo); }
23998 void* Allocate() override { return (void*) &_tempo; }
23999
24004 void CloneMemoryFrom(__FCBaseData* pSource) override
24005 {
24006 memcpy(&_tempo, ((FCTempoElement*)pSource)->_GetTempoElement(), sizeof(_tempo));
24007 _datablock = &_tempo;
24008 _loadedsize = sizeof(_tempo);
24009 }
24010
24011 __FCBaseData* CreateObject() override { return new FCTempoElement(); }
24012#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24013public:
24014
24015 const char* ClassName() const override { return "FCTempoElement"; }
24016 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_TEMPOELEMENT; }
24017
24018#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24025 void* _GetTempoElement() { return &_tempo; }
24026#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24027
24033 {
24034 memset(&_tempo, 0, sizeof(_tempo));
24035 _tempo.unit = 1000;
24036 _datablock = &_tempo;
24037 _loadedsize = sizeof(_tempo);
24038 }
24039
24044 void SetMeasurePos(twobyte edupos) { _tempo.eldur = edupos; }
24045
24050 TimeEdu32 GetMeasurePos() const override { return _tempo.eldur; }
24051
24057 bool GetAbsolute() const { return _tempo.flag == TIMEDIAL_ABSOLUTE; }
24058
24065 void SetAbsolute(bool value)
24066 {
24067 _tempo.flag = value ? TIMEDIAL_ABSOLUTE : TIMEDIAL_RELATIVE;
24068 }
24069
24075 fourbyte GetRatio() const { return _tempo.ratio; }
24076
24081 void SetRatio(fourbyte value) { _tempo.ratio = value; }
24082
24093 {
24094 if (GetAbsolute())
24095 {
24096 float result = _tempo.ratio * _tempo.unit;
24097 result /= 65536;
24098 /* The value here is relative to 60 BPM == 1024 */
24099 result *= 60;
24100 result /= 1024;
24101 /* Round it off to 2 decimals */
24102 fourbyte fb = (fourbyte) (result * 100);
24103 result = fb;
24104 result /= 100;
24105 return result;
24106 }
24107 else
24108 {
24109 /* Relative */
24110 float result = GetRatio();
24111 result /= 10;
24112 return result;
24113 }
24114 }
24115
24122 void SetAbsoluteValue(float value)
24123 {
24124 SetAbsolute(true);
24125 _tempo.unit = 1000;
24126 value *= 1024;
24127 value /= 60;
24128 value *= 65536;
24129 value /= 1000;
24130 _tempo.ratio = (fourbyte) value;
24131 }
24132
24139 void SetRelativeValue(float value)
24140 {
24141 SetAbsolute(false);
24142 SetRatio((fourbyte) (value * 10));
24143 }
24144};
24145
24146
24147
24148#ifdef PDK_FRAMEWORK_TINYXML
24156{
24157 int _midikey;
24158 PERC_NOTE_TYPE _notetype;
24159 FCString _name;
24160public:
24167 PERCNOTETYPE_BASSDRUM = 13,
24168 PERCNOTETYPE_BELLTREE = 70,
24169 PERCNOTETYPE_BONGO_HIGH = 32,
24170 PERCNOTETYPE_BONGO_LOW = 33,
24171 PERCNOTETYPE_CONGA = 36,
24172 PERCNOTETYPE_COWBELL = 6,
24173 PERCNOTETYPE_CASTANETS = 362,
24174 PERCNOTETYPE_CYMBAL_CHINA = 17,
24175 PERCNOTETYPE_CYMBAL_CRASH = 4,
24176 PERCNOTETYPE_CYMBAL_RIDE = 18,
24177 PERCNOTETYPE_CYMBAL_SIZZLE = 121,
24178 PERCNOTETYPE_CYMBAL_SPLASH = 21,
24179 PERCNOTETYPE_CLAVES = 35,
24180 PERCNOTETYPE_GONG_SMALL = 137,
24181 PERCNOTETYPE_GONG_MEDIUM = 136,
24182 PERCNOTETYPE_GONG_LARGE = 135,
24183 PERCNOTETYPE_HIHAT_CLOSED = 15,
24184 PERCNOTETYPE_HIHAT_FOOT = 16,
24185 PERCNOTETYPE_HIHAT_OPEN = 14,
24186 PERCNOTETYPE_KICKDRUM = 2,
24187 PERCNOTETYPE_RHYTHMCUES = 235,
24188 PERCNOTETYPE_ROTOTOM_MID = 321,
24189 PERCNOTETYPE_SIDEDRUM = 279,
24190 PERCNOTETYPE_SNAREDRUM = 1,
24191 PERCNOTETYPE_TAMBOURINE = 7,
24192 PERCNOTETYPE_TAMTAM = 149,
24193 PERCNOTETYPE_TOM_HIGH = 24,
24194 PERCNOTETYPE_TOM_HIGHMID = 25,
24195 PERCNOTETYPE_TOM_LOW = 27,
24196 PERCNOTETYPE_TRIANGLE_MUTE = 8,
24197 PERCNOTETYPE_TRIANGLE_OPEN = 9,
24198 PERCNOTETYPE_VIBRASLAP = 12,
24199 PERCNOTETYPE_WINDCHIMES = 460,
24200 PERCNOTETYPE_WOODBLOCK_HIGH = 10
24201 };
24202
24204 FCPercussionMapNote(int midikey, int notetype, const char* pszName) : __FCBase()
24205 {
24206 _midikey = midikey;
24207 _notetype = notetype;
24208 _name.SetCString(pszName);
24209 }
24210 const char* ClassName() const override { return "FCPercussionMapNote"; }
24211
24216 PERC_NOTE_TYPE GetRawNoteType() const { return _notetype; }
24217
24225 PERC_NOTE_TYPE GetNoteType() const { return _notetype & 0x0fff; }
24226
24231 twobyte GetOrderID() const
24232 {
24233 twobyte returnvalue = _notetype & 0xf000;
24234 returnvalue /= 0x1000;
24235 return returnvalue;
24236 }
24237
24242 int GetMidiNote() const { return _midikey; }
24243
24246 const char* GetName() const { return _name.GetCString(); }
24247};
24248
24249
24260{
24261 twobyte _percussionid;
24262public:
24263
24269 FCPercussionMapNotes(twobyte percussionid) : __FCCollection()
24270 {
24271 _percussionid = percussionid;
24272 }
24273
24275 twobyte GetPercussionID() const { return _percussionid; }
24276
24277 const char* ClassName() const override { return "FCPercussionMapNotes"; }
24278
24284
24291 FCPercussionMapNote* FindRawNoteType(PERC_NOTE_TYPE rawnotetype)
24292 {
24293 for (int i = 0; i < GetCount(); i++)
24294 {
24295 FCPercussionMapNote* pItem = GetItemAt(i);
24296 if (pItem->GetRawNoteType() == rawnotetype) return pItem;
24297 }
24298 return NULL;
24299 }
24300
24308 {
24309 for (int i = 0; i < GetCount(); i++)
24310 {
24311 FCPercussionMapNote* pItem = GetItemAt(i);
24312 if (pItem->GetMidiNote() == midinote) return pItem;
24313 }
24314 return NULL;
24315 }
24316};
24317
24318class FCInstrumentDef;
24319
24328{
24329 public:
24330 const char* ClassName() const override { return "FCPercussionMapNotesLookup"; }
24331
24337
24348};
24349
24350#endif /*PDK_FRAMEWORK_TINYXML*/
24351
24352
24355
24364{
24365public:
24366 const char* ClassName() const override { return "FCPercussionLayoutNotesLookup"; }
24367
24373
24386
24395 FCPercussionLayoutNote* FindPercussionLayoutRawNote(FCPercussionStaff* pPercussionStaff, FLAG_16 percussionnote);
24396
24402};
24403
24404
24405
24413{
24414private:
24415#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24417 EDTInstDefinition _instrumentdef;
24418
24419protected:
24420 EXTAG Tag() const override { return ot_InstDefinition; }
24421 int DataSizeLoad() const override { return sizeof(EDTInstDefinition); }
24422 void* Allocate() override { return (void*) &_instrumentdef; }
24423
24428 void CloneMemoryFrom(__FCBaseData* pSource) override
24429 {
24430 memcpy(&_instrumentdef, ((FCInstrumentDef*)pSource)->_GetInstrumentDef(), sizeof(_instrumentdef));
24431 _datablock = &_instrumentdef;
24432 _loadedsize = sizeof(_instrumentdef);
24433 }
24434
24435 __FCBaseData* CreateObject() override { return new FCInstrumentDef(); }
24436#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24437public:
24438
24439 const char* ClassName() const override { return "FCInstrumentDef"; }
24440 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_INSTRUMENTDEF; }
24441
24442#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24449 void* _GetInstrumentDef() { return &_instrumentdef; }
24450
24451#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24452
24458
24471 {
24473 text.Load(GetItemNo());
24474 return text.CreateString();
24475 }
24476
24477#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
24479 luabridge::RefCountedPtr<FCString> CreateNameString_GC()
24480 { return makeLuaSharedPtr(CreateNameString()); }
24481#endif
24482
24487 twobyte GetVirtualChannel() const { return _instrumentdef.virtChannel; }
24488
24495 twobyte GetPercussionMapID() const { return _instrumentdef.percMapRefID; }
24496
24503 void SetPercussionMapID(twobyte mapID) { _instrumentdef.percMapRefID = mapID; }
24504
24505#ifdef PDK_FRAMEWORK_TINYXML
24520
24521#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
24523 luabridge::RefCountedPtr<FCPercussionMapNotes> CreatePercussionMapNotes_GC()
24524 { return makeLuaSharedPtr(CreatePercussionMapNotes()); }
24525#endif
24526#endif // PDK_FRAMEWORK_TINYXML
24527
24533 bool GetPercussionMapLocation(void* pFileSpecLocation, FCString* pMapName, EVERSION finpathspecversion);
24534
24535#ifdef PDK_FRAMEWORK_DEBUG
24536 void DebugDump() override
24537 {
24539 this->DebugDataDump();
24540 }
24541#endif
24542
24543};
24544
24545#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24546
24547#include "pragma_align_begin.h"
24548struct __EDTLayerPlayData
24549{
24550 ePlaybackRoute playbackRouteNum; // twobyte
24551 twobyte velControlLevel;
24552 FLAG_16 velControlSaveFlags;
24553 FLAG_16 playFlags;
24554};
24555#include "pragma_align_end.h"
24556
24557#include "pragma_align_begin.h"
24558struct __EDTPlayData2006
24559{
24560 __EDTLayerPlayData chordPlayData;
24561 __EDTLayerPlayData MIDIExpressionsPlayData;
24562 __EDTLayerPlayData layerPlayData[4]; // Should be MAX_LAYERS
24563};
24564#include "pragma_align_end.h"
24565
24566const EXTAG __ot_PlayData2006 = MAKEEXTAG(edOther4Inci,'P','L');
24567
24568// __EDTLayerPlayData.playFlags
24569const FLAG_16 __PLAY_LAYER_TRACK = 0x0001;
24570const FLAG_16 __SOLO_LAYER_TRACK = 0x0002;
24571
24572
24573#endif /* #ifndef DOXYGEN_SHOULD_IGNORE_THIS */
24574
24575
24586{
24587 __EDTLayerPlayData* _pLayerData;
24588public:
24593 FCLayerPlaybackData(__EDTLayerPlayData* pData) : __FCBase()
24594 {
24595 _pLayerData = pData;
24596 }
24597 const char* ClassName() const override { return "FCLayerPlaybackData"; }
24598
24603 ePlaybackRoute GetInstrumentDefID() const
24604 {
24605 /* The value is 0-based!!! To be able to map to FCInstrumentDef, it
24606 * needs to be 1-based. */
24607 return _pLayerData->playbackRouteNum + 1;
24608 }
24609
24614 bool GetPlay() const
24615 {
24616 return GetBitFlag(_pLayerData->playFlags, __PLAY_LAYER_TRACK);
24617 }
24618
24623 bool GetSolo() const
24624 {
24625 return GetBitFlag(_pLayerData->playFlags, __SOLO_LAYER_TRACK);
24626 }
24627
24634 void SetInstrumentDefID(ePlaybackRoute value)
24635 {
24636 /* The value is 0-based!!! (To be able to map to FCInstrumentDef, it
24637 * needs to be 1-based.) */
24638 _pLayerData->playbackRouteNum = value - 1;
24639 }
24640
24645 void SetPlay(bool state)
24646 {
24647 return Set16BitFlag(&_pLayerData->playFlags, __PLAY_LAYER_TRACK, state);
24648 }
24649
24654 void SetSolo(bool state)
24655 {
24656 return Set16BitFlag(&_pLayerData->playFlags, __SOLO_LAYER_TRACK, state);
24657 }
24658};
24659
24660
24668{
24669private:
24670#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24672 __EDTPlayData2006 _playbackdata;
24673
24674 std::unique_ptr<FCLayerPlaybackData> _pChordLayer;
24675 std::unique_ptr<FCLayerPlaybackData> _pExpressionLayer;
24676 std::vector<std::unique_ptr<FCLayerPlaybackData>> _pNoteLayers;
24677
24678protected:
24679 EXTAG Tag() const override { return __ot_PlayData2006; }
24680 int DataSizeLoad() const override { return sizeof(__EDTPlayData2006); }
24681 void* Allocate() override { return (void*) &_playbackdata; }
24682
24687 void CloneMemoryFrom(__FCBaseData* pSource) override
24688 {
24689 memcpy(&_playbackdata, ((FCInstrumentPlaybackData*)pSource)->_GetPlaybackData(), sizeof(_playbackdata));
24690 _datablock = &_playbackdata;
24691 _loadedsize = sizeof(_playbackdata);
24692 }
24693
24694 __FCBaseData* CreateObject() override { return new FCInstrumentPlaybackData(); }
24695#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24696public:
24697
24698 const char* ClassName() const override { return "FCInstrumentPlaybackData"; }
24699 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_INSTRUMENTPLAYBACKDATA; }
24700
24701#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24708 void* _GetPlaybackData() { return &_playbackdata; }
24709
24710#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24711
24716 FCInstrumentPlaybackData() : __FCNoInciOther(), _pNoteLayers(DIM(_playbackdata.layerPlayData))
24717 {}
24718
24735 {
24736 if (!DataIsLoaded()) return NULL;
24737 if (!_pChordLayer)
24738 _pChordLayer = std::make_unique<FCLayerPlaybackData>(FCLayerPlaybackData(&_playbackdata.chordPlayData));
24739 return _pChordLayer.get();
24740 }
24741
24758 {
24759 if (!DataIsLoaded()) return NULL;
24760 if (!_pExpressionLayer)
24761 _pExpressionLayer = std::make_unique<FCLayerPlaybackData>(FCLayerPlaybackData(&_playbackdata.MIDIExpressionsPlayData));
24762 return _pExpressionLayer.get();
24763 }
24764
24783 {
24784 if ((layernumber < 1) || (layernumber > _pNoteLayers.size())) return NULL;
24785 if (!DataIsLoaded()) return NULL;
24786 layernumber--; /* Make a 0-based index */
24787 if (!_pNoteLayers[layernumber])
24788 _pNoteLayers[layernumber] = std::make_unique<FCLayerPlaybackData>(FCLayerPlaybackData(&_playbackdata.layerPlayData[layernumber]));
24789 return _pNoteLayers[layernumber].get();
24790 }
24791
24792#ifdef PDK_FRAMEWORK_DEBUG
24793 void DebugDump() override
24794 {
24796 DebugDataDump();
24797 }
24798#endif
24799
24800};
24801
24811{
24812private:
24813#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24815 EDTPercussionNoteDef2010 _percussionnotedef2010;
24816#if FXT_VERSION >= FINALEVERSION_2012
24817 EDTPercussionNoteDef2012 _percussionnotedef2012;
24818#endif
24819
24824 EVERSION _VersionToUse() const;
24825
24826protected:
24827 EXTAG Tag() const override;
24828
24829 int DataSizeLoad() const override;
24830
24831 void* Allocate() override;
24832
24837 void CloneMemoryFrom(__FCBaseData* pSource) override
24838 {
24839 memcpy(_GetPercussionNoteDef(), ((FCPercussionLayoutNote*)pSource)->_GetPercussionNoteDef(), DataSizeLoad());
24840 _datablock = _GetPercussionNoteDef();
24842 }
24843
24844 __FCBaseData* CreateObject() override { return new FCPercussionLayoutNote(); }
24845#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24846public:
24847
24848 const char* ClassName() const override { return "FCPercussionLayoutNote"; }
24849 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_PERCUSSIONLAYOUTNOTE; }
24850
24851#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24858 void* _GetPercussionNoteDef();
24859
24860
24861#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24862
24868 memset(Allocate(), 0, DataSizeLoad());
24869 }
24870
24877 PERC_NOTE_TYPE GetRawNoteType() const;
24878
24884 PERC_NOTE_TYPE GetNoteType() const;
24885
24894 twobyte GetOrderID() const;
24895
24903 twobyte GetStaffPosition() const;
24904
24909 fourbyte GetClosedNotehead() const;
24910
24915 fourbyte GetHalfNotehead() const;
24916
24921 fourbyte GetWholeNotehead() const;
24922
24927 fourbyte GetDoubleWholeNotehead() const;
24928
24929
24930
24935 void SetNoteType(PERC_NOTE_TYPE value);
24936
24945 void SetOrderID(twobyte value);
24946
24955 void SetStaffPosition(twobyte value);
24956
24961 void SetClosedNotehead(fourbyte value);
24962
24967 void SetHalfNotehead(fourbyte value);
24968
24973 void SetWholeNotehead(fourbyte value);
24974
24979 void SetDoubleWholeNotehead(fourbyte value);
24980
24981#ifdef PDK_FRAMEWORK_TINYXML
24989 twobyte CalcMidiRawNote(FCPercussionMapNotes* pNotes);
24990
24998 twobyte CalcMidiNote(FCPercussionMapNotes* pNotes);
24999#endif
25000
25001
25002#ifdef PDK_FRAMEWORK_DEBUG
25003 void DebugDump() override
25004 {
25006 }
25007#endif
25008
25009};
25010
25011
25012
25013/* Previously undocumented stuff */
25014const EXTAG __ot_CategoryStaffListScore = MAKEEXTAG(edOther, 'C', 's');
25015const EXTAG __ot_CategoryStaffListParts = MAKEEXTAG(edOther, 'C', 'p');
25016const EXTAG __ot_CategoryStaffListScoreOverride = MAKEEXTAG(edOther, 'c',
25017'o');
25018const EXTAG __ot_CategoryStaffListPartsOverride = MAKEEXTAG(edOther, 'C',
25019'o');
25020
25021
25022const EXTAG __ot_StaffAssignStaffListScore = MAKEEXTAG(edOther, 'S', 's');
25023const EXTAG __ot_StaffAssignStaffListParts = MAKEEXTAG(edOther, 's', 'p');
25024const EXTAG __ot_StaffAssignStaffListScoreOverride = MAKEEXTAG(edOther, 'S',
25025'o');
25026const EXTAG __ot_StaffAssignStaffListPartsOverride = MAKEEXTAG(edOther, 's',
25027'o');
25028
25029
25043{
25044#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25045 EDTStaffList* _TypeCast() const { return (EDTStaffList*)_datablock; }
25046#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25047protected:
25048#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25049
25050 EXTAG Tag() const override { return GetCustomTag() ? GetCustomTag() : ot_StaffListDataScore; }
25051
25052 int DataSizeLoad() const override;
25053 int DataSizeSave() const override;
25054 void* Allocate() override;
25055 void Deallocate() override;
25056 bool IsDynamicSize() override { return true; }
25057
25058 __FCBaseData* CreateObject() override { return new FCStaffList(); }
25059
25060#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25061public:
25067 {
25068 SLMODE_SCORE = 0,
25069 SLMODE_PARTS,
25070 SLMODE_FORCESCORE,
25071 SLMODE_FORCEPARTS,
25072
25073 SLMODE_CATEGORY_SCORE,
25074 SLMODE_CATEGORY_PARTS,
25075 SLMODE_CATEGORY_FORCESCORE,
25076 SLMODE_CATEGORY_FORCEPARTS,
25077
25078 SLMODE_ASSIGNMENT_SCORE,
25079 SLMODE_ASSIGNMENT_PARTS,
25080 SLMODE_ASSIGNMENT_FORCESCORE,
25081 SLMODE_ASSIGNMENT_FORCEPARTS
25082 };
25083
25084
25090 {
25091 }
25092
25093 const char* ClassName() const override { return "FCStaffList"; }
25094 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_STAFFLIST; }
25095
25096#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25103 void* _GetStaffListElement() { return _datablock; }
25104#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25105
25106
25127#ifndef PDK_FRAMEWORK_LUAFRIENDLY
25129#else
25130 int
25131#endif
25132 mode
25133 )
25134 {
25135 switch (mode)
25136 {
25137 case SLMODE_SCORE:
25138 SetCustomTag(ot_StaffListDataScore);
25139 break;
25140 case SLMODE_PARTS:
25141 SetCustomTag(ot_StaffListDataParts);
25142 break;
25143 case SLMODE_FORCESCORE:
25144 SetCustomTag(ot_StaffListForceScore);
25145 break;
25146 case SLMODE_FORCEPARTS:
25147 SetCustomTag(ot_StaffListForceParts);
25148 break;
25149
25150 case SLMODE_CATEGORY_SCORE:
25151 SetCustomTag(__ot_CategoryStaffListScore);
25152 break;
25153 case SLMODE_CATEGORY_PARTS:
25154 SetCustomTag(__ot_CategoryStaffListParts);
25155 break;
25156 case SLMODE_CATEGORY_FORCESCORE:
25157 SetCustomTag(__ot_CategoryStaffListScoreOverride);
25158 break;
25159 case SLMODE_CATEGORY_FORCEPARTS:
25160 SetCustomTag(__ot_CategoryStaffListPartsOverride);
25161 break;
25162
25163 case SLMODE_ASSIGNMENT_SCORE:
25164 SetCustomTag(__ot_StaffAssignStaffListScore);
25165 break;
25166 case SLMODE_ASSIGNMENT_PARTS:
25167 SetCustomTag(__ot_StaffAssignStaffListParts);
25168 break;
25169 case SLMODE_ASSIGNMENT_FORCESCORE:
25170 SetCustomTag(__ot_StaffAssignStaffListScoreOverride);
25171 break;
25172 case SLMODE_ASSIGNMENT_FORCEPARTS:
25173 SetCustomTag(__ot_StaffAssignStaffListPartsOverride);
25174 break;
25175 }
25176 }
25177
25178#ifdef PDK_FRAMEWORK_DEBUG
25179 void DebugDump() override
25180 {
25182 }
25183#endif
25184
25186 bool Load(CMPER itemno) override;
25187
25189 bool SaveNew() override { return false; }
25190
25192 bool Save() override;
25193
25195 bool DeleteData() override { return false; }
25196
25198 bool LoadNext() override { return Load(GetItemNo() + 1); }
25199
25206 {
25207 if (!DataIsLoaded()) return 0;
25208 int maxcount = _loadedsize / sizeof(EDTStaffList);
25209 /* Reduce list if some elements are 0 at the end */
25210 while (maxcount > 0)
25211 {
25212 if (_TypeCast()[maxcount - 1].staff == 0)
25213 maxcount --;
25214 else
25215 return maxcount;
25216 }
25217 return maxcount;
25218 }
25219
25225 int GetStaffCount() const
25226 {
25227 if (!DataIsLoaded()) return 0;
25228 int maxcount = _loadedsize / sizeof(EDTStaffList);
25229 int staffcount = 0;
25230 for (int i = 0; i < maxcount; i++)
25231 {
25232 if (_TypeCast()[i].staff > 0) staffcount++;
25233 }
25234 return staffcount;
25235 }
25236
25246 int GetStaff(int index)
25247 {
25248 if (index < 0) return 0;
25249 int maxcount = _loadedsize / sizeof(EDTStaffList);
25250 int staffcount = 0;
25251 for (int i = 0; i < maxcount; i++)
25252 {
25253 if (_TypeCast()[i].staff > 0)
25254 {
25255 if (staffcount == index) return _TypeCast()[index].staff;
25256 staffcount++;
25257 }
25258 }
25259 return 0;
25260 }
25261
25266 bool IsElementAvailable(twobyte stafflistelement)
25267 {
25268 if (stafflistelement == 0) return false; /* This value would not be a valid value in a staff list. */
25269 int maxcount = _loadedsize / sizeof(EDTStaffList);
25270 for (int i = 0; i < maxcount; i++)
25271 {
25272 if (_TypeCast()[i].staff == stafflistelement) return true;
25273 }
25274 return false;
25275 }
25276
25282 {
25283 return IsElementAvailable(SLD_TOPSTAFF);
25284 }
25285
25291 {
25292 return IsElementAvailable(SLD_BOTTOMSTAFF);
25293 }
25294
25301 bool IncludesStaff(twobyte staffnumber)
25302 {
25303 return IsElementAvailable(staffnumber);
25304 }
25305
25317
25318#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
25320 luabridge::RefCountedPtr<FCString> CreateNameString_GC()
25321 { return makeLuaSharedPtr(CreateNameString()); }
25322#endif
25323
25330 bool SaveNameString(FCString* pString);
25331
25336 bool AddElement(twobyte elementnumber);
25337
25348 bool AddStaff(twobyte staffnumber)
25349 {
25350 if (staffnumber < 1) return false;
25351 return AddElement(staffnumber);
25352 }
25353
25362 {
25363 return AddElement(SLD_TOPSTAFF);
25364 }
25365
25374 {
25375 return AddElement(SLD_BOTTOMSTAFF);
25376 }
25377
25382 bool RemoveElement(twobyte element);
25383
25391 {
25392 return RemoveElement(SLD_TOPSTAFF);
25393 }
25394
25402 {
25403 return RemoveElement(SLD_BOTTOMSTAFF);
25404 }
25405
25412 bool RemoveStaff(twobyte staffnumber)
25413 {
25414 if (staffnumber < 1) return false;
25415 return RemoveElement(staffnumber);
25416 }
25417};
25418
25419
25420
25427{
25428private:
25429#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25430 EDTFretInstrument _fretinstrumentold; /* Pre 25.3 */
25431
25432 FIN25_3_CODE( EDTFretInstrument25_3 _fretinstrument25_3; )
25433
25434 /* Decides which of the structs that should be used, based on
25435 the PDK and running version. Returns true if 25.3 is supported. */
25436 bool _Use25_3Version() const;
25437
25438 /* Returns a pointer to the 'noOfFrets' member */
25439 const twobyte* _GetNoOfFretsPtr() const
25440 {
25441 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.noOfFrets; )
25442 return &_fretinstrumentold.noOfFrets;
25443 }
25444
25445 /* Returns a pointer to the 'noOfStrings' member */
25446 const twobyte* _GetNoOfStringsPtr() const
25447 {
25448 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.noOfStrings; )
25449 return &_fretinstrumentold.noOfStrings;
25450 }
25451
25452 /* Returns a pointer to the 'speedyClef' member */
25453 const eClef* _GetSpeedyClefPtr() const
25454 {
25455 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.speedyClef; )
25456 return &_fretinstrumentold.speedyClef;
25457 }
25458
25459 /* Returns a pointer to the 'diatonicStepsLo' member */
25460 const utwobyte* _GetDiatonicStepsLoPtr() const
25461 {
25462 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.diatonicStepsLo; )
25463 return &_fretinstrumentold.diatonicStepsLo;
25464 }
25465
25466 /* Returns a pointer to the 'diatonicStepsHi' member */
25467 const utwobyte* _GetDiatonicStepsHiPtr() const
25468 {
25469 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.diatonicStepsHi; )
25470 return &_fretinstrumentold.diatonicStepsHi;
25471 }
25472
25473 /* Returns a pointer to the 'name' member. On Finale 25.3+, it's an
25474 eUniChar16 buffer. On earlier Finale versions, it's an ECHAR buffer. */
25475 const void* _GetNamePtr() const
25476 {
25477 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.name; )
25478 return &_fretinstrumentold.name;
25479 }
25480
25481 /* Returns a pointer to the 'stringTuning' member. The meaning of this pointer is a
25482 bit different in 25.3 PDK versions. */
25483 const void* _GetStringTuningPtr(int stringno) const
25484 {
25485 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.stringTuning[stringno - 1]; )
25486 return &_fretinstrumentold.stringTuning[stringno - 1];
25487 }
25488
25489#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25490protected:
25491#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25492
25493 EXTAG Tag() const override;
25494 int DataSizeLoad() const override;
25495 void* Allocate() override;
25496 EVERSION EnigmaVersion() const override { return _Use25_3Version() ? FINALEVERSION_25_3 : FINALEVERSION_2010; }
25497
25504 void CloneMemoryFrom(__FCBaseData* pSource) override
25505 {
25506 int size = DataSizeLoad();
25507 memcpy(_GetFretInstrumentDef(), ((FCFretInstrumentDef*)pSource)->_GetFretInstrumentDef(), size);
25508 _datablock = _GetFretInstrumentDef();
25509 _loadedsize = size;
25510 }
25511
25512 __FCBaseData* CreateObject() override { return new FCFretInstrumentDef(); }
25513
25514#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25515public:
25516 const char* ClassName() const override { return "FCFretInstrumentDef"; }
25517 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_FRETINSTRUMENTDEF; }
25518
25520 bool LoadFirst() override { return Load(1); }
25521
25523 bool LoadNext() override
25524 {
25525 if (!DataIsLoaded()) return false;
25526 return Load(GetItemNo() + 1);
25527 }
25528
25529#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25536 void* _GetFretInstrumentDef() { return Allocate(); }
25537#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25538
25544 {
25545 /* Don't use virtual methods in the constructor */
25546 if (_Use25_3Version())
25547 {
25548#if FXT_VERSION >= FINALEVERSION_25_3
25549 memset(&_fretinstrument25_3, 0, sizeof(_fretinstrument25_3));
25550 _datablock = &_fretinstrument25_3;
25551 _loadedsize = sizeof(_fretinstrument25_3);
25552#endif
25553 }
25554 else
25555 {
25556 memset(&_fretinstrumentold, 0, sizeof(_fretinstrumentold));
25557 _datablock = &_fretinstrumentold;
25558 _loadedsize = sizeof(_fretinstrumentold);
25559 }
25560 }
25561
25566 twobyte GetFretCount() const
25567 {
25568 return *_GetNoOfFretsPtr();
25569 }
25570
25575 void SetFretCount(twobyte count)
25576 {
25577 *(twobyte*)_GetNoOfFretsPtr() = count;
25578 }
25579
25584 twobyte GetStringCount() const
25585 {
25586 return *_GetNoOfStringsPtr();
25587 }
25588
25595 void SetStringCount(twobyte count)
25596 {
25597 if (count < 1) return;
25598 if (count > 24) return;
25599 *(twobyte*)_GetNoOfStringsPtr() = count;
25600 }
25601
25606 eClef GetSpeedyClef() const
25607 {
25608 return *_GetSpeedyClefPtr();
25609 }
25610
25615 void SetSpeedyClef(eClef clef)
25616 {
25617 *(eClef*)_GetSpeedyClefPtr() = clef;
25618 }
25619
25630 bool GetName(FCString* pString)
25631 {
25632 if (!pString) return false;
25633 if (_Use25_3Version())
25634 {
25635 /* Unicode version */
25636 FIN25_3_CODE( pString->SetUnicodeString((eUniChar16*) _GetNamePtr()); )
25637 }
25638 else
25639 {
25640 /* Old ECHAR version */
25641 pString->SetCString((ECHAR*) _GetNamePtr());
25642 }
25643
25644 return true;
25645 }
25646
25657 bool SetName(FCString* pString)
25658 {
25659 if (!pString) return false;
25660 if (pString->GetLength() > 47) return false;
25661 if (_Use25_3Version())
25662 {
25663 /* Unicode version */
25664 FIN25_3_CODE( pString->CopyToUnicodeBuffer((eUniChar16*) _GetNamePtr()); )
25665 }
25666 else
25667 {
25668 /* Old ECHAR version */
25669 strcpy((ECHAR*) _GetNamePtr(), pString->GetCString());
25670 }
25671 return true;
25672 }
25673
25684 twobyte GetStringTuning(int stringnumber)
25685 {
25686 if (stringnumber < 1) return 0;
25687 if (stringnumber > GetStringCount()) return 0;
25688 if (stringnumber > 24) return 0;
25689
25690 /* The meaning of the StringTuning array has shifted a bit between PDKs.
25691 */
25692#if FXT_VERSION >= FINALEVERSION_25_3
25693 if (_Use25_3Version())
25694 {
25695 return ((EDTStringData*)_GetStringTuningPtr(stringnumber))->pitch;
25696 }
25697#endif
25698 return *(twobyte*)_GetStringTuningPtr(stringnumber);
25699 }
25700
25712 bool SetStringTuning(int stringnumber, twobyte midinumber)
25713 {
25714 if (stringnumber < 1) return false;
25715 if (stringnumber > GetStringCount()) return false;
25716 if (stringnumber > 24) return false;
25717
25718 if (_Use25_3Version())
25719 {
25720#if FXT_VERSION >= FINALEVERSION_25_3
25721 ((EDTStringData*)_GetStringTuningPtr(stringnumber))->pitch = midinumber;
25722#endif
25723 }
25724 else
25725 {
25726 *(twobyte*)_GetStringTuningPtr(stringnumber) = midinumber;
25727 }
25728 return true;
25729 }
25730
25736 {
25737 return (MAKELONG(*_GetDiatonicStepsLoPtr(), *_GetDiatonicStepsHiPtr()) != 0);
25738 }
25739
25745 {
25746 if (!IsDiatonic()) return 0;
25747 ufourbyte fb = MAKELONG(*_GetDiatonicStepsLoPtr(), *_GetDiatonicStepsHiPtr());
25748 int totalcount = 0;
25749 while (fb)
25750 {
25751 if (fb & 0x01) totalcount ++;
25752 fb = fb >> 1;
25753 }
25754 return totalcount;
25755 }
25756
25765 {
25766 if (!pNumbers) return false;
25767 pNumbers->ClearAll();
25768 ufourbyte fb = MAKELONG(*_GetDiatonicStepsLoPtr(), *_GetDiatonicStepsHiPtr());
25769 int count = 0;
25770 while (fb != 0)
25771 {
25772 count ++;
25773 if (fb & 0x01)
25774 {
25775 pNumbers->Add(new FCNumber(count));
25776 count = 0;
25777 }
25778 fb = fb >> 1;
25779 }
25780 return true;
25781 }
25782
25791 {
25792 if (!pNumbers) return false;
25793 ufourbyte fb = 0;
25794 for (int i = pNumbers->GetCount() - 1; i >= 0; i--)
25795 {
25796 FCNumber* pNumber = pNumbers->GetItemAt(i);
25797 if (pNumber->GetInt() < 1) return false;
25798 if (pNumber->GetInt() > 5) return false;
25799 fb = fb << 1; /* Shift to next number */
25800 fb |= 0x01;
25801 for (int bitcount = 0; bitcount < pNumber->GetInt() - 1; bitcount++)
25802 {
25803 fb = fb << 1; /* Shift with extra zeros, if necessary */
25804 }
25805 }
25806 *(utwobyte*)_GetDiatonicStepsLoPtr() = LOWORD(fb);
25807 *(utwobyte*)_GetDiatonicStepsHiPtr() = HIWORD(fb);
25808 return true;
25809 }
25810
25811
25812#ifdef PDK_FRAMEWORK_DEBUG
25813 void DebugDump() override
25814 {
25816 DebugOutHex("Diatonic bit set: ", MAKELONG(*_GetDiatonicStepsLoPtr(), *_GetDiatonicStepsHiPtr()));
25817 }
25818#endif
25819};
25820
25821
25822#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25823#include "pragma_align_begin.h"
25824struct __EDTMidClef
25825{
25826 twobyte clefindex;
25827 twobyte edupos;
25828 twobyte vertadjust;
25829 twobyte resize;
25830 twobyte horizadjust;
25831 FLAG_16 flag;
25832};
25833#include "pragma_align_end.h"
25834
25835const EXTAG __ot_MidClef = MAKEEXTAG(edOther, 'C', 'E');
25836#endif
25837
25838
25850{
25851private:
25852#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25853 __EDTMidClef _midclefdata;
25854
25857 {
25858 _midclefdata = src._midclefdata;
25859 _datablock = &_midclefdata;
25860 _loadedsize = sizeof(_midclefdata);
25861 }
25862
25863 friend class FCCellClefChanges;
25864#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25865protected:
25866#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25867
25868 EXTAG Tag() const override { return __ot_MidClef; }
25869 int DataSizeLoad() const override { return sizeof(__EDTMidClef); }
25870 void* Allocate() override { return (void*) &_midclefdata; }
25871
25872 void CloneMemoryFrom(__FCBaseData* pSource) override
25873 {
25874 memcpy(&_midclefdata, ((FCCellClefChange*)pSource)->_GetCellClefChange(), sizeof(_midclefdata));
25875 _datablock = &_midclefdata;
25876 _loadedsize = sizeof(_midclefdata);
25877 }
25878
25879 __FCBaseData* CreateObject() override { return new FCCellClefChange(); }
25880
25881#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25882public:
25883 const char* ClassName() const override { return "FCCellClefChange"; }
25884 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_CELLCLEFCHANGE; }
25885
25886#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25893 void* _GetCellClefChange() { return Allocate(); }
25894#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25895
25901
25906 twobyte GetClefIndex() const { return _midclefdata.clefindex; }
25907
25915 TimeEdu32 GetMeasurePos() const override { return _midclefdata.edupos; }
25916
25921 twobyte GetClefPercent() const { return _midclefdata.resize; }
25922
25927 twobyte GetHorizontalOffset() const { return _midclefdata.horizadjust; }
25928
25933 twobyte GetVerticalOffset() const { return _midclefdata.vertadjust; }
25934
25940 twobyte GetClefShow() const;
25941
25946 bool GetAllowVerticalDrag() const { return (_midclefdata.flag & 0x04) != 0; }
25947
25953 bool GetClefAfterBarline() const { return (_midclefdata.flag & 0x0010) != 0; }
25954
25959 void SetClefIndex(twobyte value) { _midclefdata.clefindex = value; }
25960
25971 void SetMeasurePos(twobyte value) { _midclefdata.edupos = value; }
25972
25977 void SetClefPercent(twobyte value) { _midclefdata.resize = value; }
25978
25983 void SetHorizontalOffset(twobyte value) { _midclefdata.horizadjust = value; }
25984
25989 void SetVerticalOffset(twobyte value) { _midclefdata.vertadjust = value; }
25990
25998 void SetClefShow(twobyte showstate);
25999
26007 void SetAllowVerticalDrag(bool state) { Set16BitFlag(&_midclefdata.flag, 0x04, state); }
26008
26014 void SetClefAfterBarline(bool state) { Set16BitFlag(&_midclefdata.flag, 0x0010, state); }
26015
26020 bool IsStartClef() { return (GetMeasurePos() == 0); }
26021};
26022
26023
26034class FCGuide : public __FCBase
26035{
26036 Efix32 _position;
26037 public:
26042 FCGuide(Efix32 position) : __FCBase()
26043 {
26044 _position = position;
26045 }
26046 const char* ClassName() const override { return "FCGuide"; }
26047
26056 Efix32 GetPosition() const { return _position; }
26057
26064 void SetPosition(Efix32 value) { _position = value; }
26065};
26066
26067#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26068
26069const EXTAG __ot_MetatoolExpression = MAKEEXTAG(edOther, '&', 'd');
26070const EXTAG __ot_MetatoolArticulation = MAKEEXTAG(edOther, '&', 'a');
26071const EXTAG __ot_MetatoolRepeat = MAKEEXTAG(edOther, '&', 'r');
26072const EXTAG __ot_MetatoolClef = MAKEEXTAG(edOther, '&', 'f');
26073const EXTAG __ot_MetatoolTuplet = MAKEEXTAG(edOther3Inci, '&', 'u');
26074const EXTAG __ot_MetatoolStaffStyle = MAKEEXTAG(edOther, '&', 's');
26075
26076#include "pragma_align_begin.h"
26077struct __EDTMetatool
26078{
26079 twobyte item1; /* For most data, this is a cmper */
26080 twobyte item2; /* For expressions, this is a bool */
26081 twobyte item3;
26082 twobyte item4;
26083 twobyte item5;
26084 twobyte item6;
26085};
26086#include "pragma_align_end.h"
26087
26088#endif /* #ifndef DOXYGEN_SHOULD_IGNORE_THIS */
26089
26090class FCClefDef;
26091#ifdef PDK_FRAMEWORK_ENTRIES
26092class FCTuplet;
26093#endif
26094
26108{
26109public:
26115 {
26116 /* Currently unassigned metatool mode. */
26117 MTOOLMODE_UNKNOWN = 0,
26118
26121
26124
26127
26130
26131#ifdef PDK_FRAMEWORK_ENTRIES
26135#endif
26136
26140private:
26141#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26142 METATOOL_MODES _mode; /* The mode of the object. */
26143
26144 __EDTMetatool _metatool; /* Data for most kind of items */
26145 EDTTuplet2005 _tupletmetatool; /* Data for tuplets */
26146
26147#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
26148protected:
26149#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26150
26151 EXTAG Tag() const override
26152 {
26153 switch (_mode)
26154 {
26156 return __ot_MetatoolExpression;
26158 return __ot_MetatoolArticulation;
26159 case MTOOLMODE_REPEAT:
26160 return __ot_MetatoolRepeat;
26161 case MTOOLMODE_CLEF:
26162 return __ot_MetatoolClef;
26163#ifdef PDK_FRAMEWORK_ENTRIES
26164 case MTOOLMODE_TUPLET:
26165 return __ot_MetatoolTuplet;
26166#endif
26168 return __ot_MetatoolStaffStyle;
26169 case MTOOLMODE_UNKNOWN:
26170 return 0;
26171 }
26172 return 0;
26173 }
26174 int DataSizeLoad() const override
26175 {
26176 switch (_mode)
26177 {
26178#ifdef PDK_FRAMEWORK_ENTRIES
26179 case MTOOLMODE_TUPLET:
26180 return sizeof(_tupletmetatool);
26181#endif
26182 case MTOOLMODE_UNKNOWN:
26183 return 0;
26184 default:
26185 return sizeof(__EDTMetatool);
26186 }
26187 }
26188 void* Allocate() override
26189 {
26190 switch (_mode)
26191 {
26192#ifdef PDK_FRAMEWORK_ENTRIES
26193 case MTOOLMODE_TUPLET:
26194 return (void*) &_tupletmetatool;
26195#endif
26196 case MTOOLMODE_UNKNOWN:
26197 return NULL;
26198 default:
26199 return (void*) &_metatool;
26200 }
26201 }
26202
26209 void CloneMemoryFrom(__FCBaseData* pSource) override
26210 {
26211 if (_mode == MTOOLMODE_UNKNOWN) return;
26212 memcpy(_GetMetatool(), ((FCMetatoolAssignment*)pSource)->_GetMetatool(), DataSizeLoad());
26213 _datablock = _GetMetatool();
26214 _loadedsize = sizeof(DataSizeLoad());
26215 }
26216
26217 __FCBaseData* CreateObject() override { return new FCMetatoolAssignment(); }
26218
26219#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
26220public:
26221 const char* ClassName() const override { return "FCMetatoolAssignment"; }
26222 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_METATOOLASSIGNMENT; }
26223
26224#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26231 void* _GetMetatool() { return Allocate(); }
26232#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
26233
26239 {
26240 _mode = MTOOLMODE_UNKNOWN;
26241 // _datablock and _loadedsize is initialized in SetMode()
26242 memset(&_metatool, 0, sizeof(_metatool));
26243 memset(&_tupletmetatool, 0, sizeof(_tupletmetatool));
26244 }
26245
26256#ifndef PDK_FRAMEWORK_LUAFRIENDLY
26258#else
26259 int
26260#endif
26261 mode)
26262 {
26263 if (_mode != MTOOLMODE_UNKNOWN) return;
26264 _mode = (METATOOL_MODES) mode;
26265 _datablock = _GetMetatool();
26267 }
26268
26275#ifndef PDK_FRAMEWORK_LUAFRIENDLY
26277#else
26278 int
26279#endif
26280 GetMode() const { return (METATOOL_MODES) _mode; }
26281
26300 CMPER GetDefID() const
26301 {
26302 switch (_mode)
26303 {
26306 case MTOOLMODE_REPEAT:
26307 case MTOOLMODE_CLEF:
26309 return _metatool.item1;
26310 default:
26311 return 0;
26312 }
26313 }
26314
26321 twobyte GetKeystroke() const;
26322
26332 {
26333 if (_mode != MTOOLMODE_EXPRESSION) return false;
26334 return (_metatool.item2 == 0);
26335 }
26336
26346 {
26347 if (!pDef) return false;
26348 if (_mode != MTOOLMODE_ARTICULATION) return false;
26349 _metatool.item1 = pDef->GetItemNo();
26350 return true;
26351 }
26352
26362 {
26363 if (!pDef) return false;
26364 if (_mode != MTOOLMODE_EXPRESSION) return false;
26365 _metatool.item1 = pDef->GetItemNo();
26366 _metatool.item2 = 1;
26367 return true;
26368 }
26369
26379 {
26380 if (!pDef) return false;
26381 if (_mode != MTOOLMODE_EXPRESSION) return false;
26382 _metatool.item1 = pDef->GetItemNo();
26383 _metatool.item2 = 0;
26384 return true;
26385 }
26386
26396 {
26397 if (!pDef) return false;
26398 if (_mode != MTOOLMODE_REPEAT) return false;
26399 _metatool.item1 = pDef->GetItemNo();
26400 return true;
26401 }
26402
26411 bool AssignClefDef(FCClefDef* pDef);
26412
26413#ifdef PDK_FRAMEWORK_ENTRIES
26422 bool AssignTuplet(FCTuplet* pTuplet);
26423#endif
26424
26434 {
26435 if (!pStaffStyle) return false;
26436 if (_mode != MTOOLMODE_STAFFSTYLE) return false;
26437 _metatool.item1 = pStaffStyle->GetItemNo();
26438 return true;
26439 }
26440
26447 bool SaveAsKeystroke(twobyte keystrokeslot)
26448 {
26449 if (_mode == MTOOLMODE_UNKNOWN) return false;
26450 if ((keystrokeslot >= 'A' && keystrokeslot <= 'Z') || (keystrokeslot >= '0' && keystrokeslot <= '9'))
26451 {
26452 return __FCNoInciOther::SaveAs(keystrokeslot);
26453 }
26454 return false;
26455 }
26456
26458 bool SaveNew() override { return false; }
26459
26462 virtual bool SaveAs([[maybe_unused]]CMPER cmper) override { return false; }
26463
26482
26483#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
26485 luabridge::RefCountedPtr<__FCBaseData> CreateLinkedObject_GC()
26486 { return makeLuaSharedPtr(CreateLinkedObject()); }
26487#endif
26488
26489#ifdef PDK_FRAMEWORK_DEBUG
26490 void DebugDump() override
26491 {
26493 switch (_mode)
26494 {
26495#ifdef PDK_FRAMEWORK_ENTRIES
26496 case MTOOLMODE_TUPLET:
26497 DebugDataDump();
26498 break;
26499#endif
26500 default:
26501 DebugOutInt("item1: ", _metatool.item1);
26502 DebugOutInt("item2: ", _metatool.item2);
26503 DebugOutInt("item3: ", _metatool.item3);
26504 DebugOutInt("item4: ", _metatool.item4);
26505 DebugOutInt("item5: ", _metatool.item5);
26506 DebugOutInt("item6: ", _metatool.item6);
26507 break;
26508 }
26509 }
26510#endif
26511};
26512
26513
26514#ifdef PDK_FRAMEWORK_ENIGMASTRINGS
26526{
26527private:
26528#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26530 EDTBookmark2012 _bookmark;
26531
26532protected:
26533 EXTAG Tag() const override { return ot_Bookmark2012; }
26534 int DataSizeLoad() const override { return sizeof(_bookmark); }
26535 void* Allocate() override { return (void*) &_bookmark; }
26536
26541 void CloneMemoryFrom(__FCBaseData* pSource) override
26542 {
26543 memcpy(&_bookmark, ((FCBookmark*)pSource)->_GetBookmark(), DataSizeLoad());
26544 _datablock = _GetBookmark();
26546 }
26547
26548 __FCBaseData* CreateObject() override { return new FCBookmark(); }
26549#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
26550public:
26551
26552 const char* ClassName() const override { return "FCBookmark"; }
26553 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_BOOKMARK; }
26554
26555#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26562 void* _GetBookmark() { return &_bookmark; }
26563
26565 bool LoadFirst() override
26566 {
26567 SetCmperAndInci(0, 0);
26568 return LoadNext();
26569 }
26570
26572 bool Save() override;
26573
26575 bool SaveNew() override;
26576
26577#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
26578
26588
26594 {
26595 memset(_GetBookmark(), 0, DataSizeLoad());
26596 _datablock = _GetBookmark();
26598 }
26599
26612 {
26613 FCBookmarkText text;
26614 if (! text.Load(_bookmark.nameRawTextID))
26615 return nullptr;
26616 FCString* retval = text.CreateString();
26617 retval->TrimEnigmaFontTags();
26618 return retval;
26619 }
26620
26621#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
26623 luabridge::RefCountedPtr<FCString> CreateNameString_GC()
26624 { return makeLuaSharedPtr(CreateNameString()); }
26625#endif
26626
26641 bool SaveNameString(const FCString* pString);
26642
26649#ifndef PDK_FRAMEWORK_LUAFRIENDLY
26651#else
26652 int
26653#endif
26654 GetViewType() const { return (BOOKMARKTYPES)_bookmark.view; }
26655
26662 ePercent GetViewPercent() const { return _bookmark.viewPercent; }
26663
26668 bool GetUseViewPercent() const { return MAKEBOOL(_bookmark.scaleView); }
26669
26676 int GetLocator() const { return _bookmark.page_meas; }
26677
26687 int GetHorizontalPosInst() const { return _bookmark.horizpos_inst; }
26688
26693 bool GetUseHorizontalPosInst() const { return GetBitFlag(_bookmark.flag, BM_SCRL_HORIZINST); }
26694
26705 {
26707 return static_cast<utwobyte>(_bookmark.vertpos_staffset) - IU_STAFFSET1 + 1;
26708 return _bookmark.vertpos_staffset;
26709 }
26710
26715 bool GetUseVerticalPosStaffSet() const { return GetBitFlag(_bookmark.flag, BM_SCRL_VERTSTAFFSET); }
26716
26725#ifndef PDK_FRAMEWORK_LUAFRIENDLY
26727#else
26728 int
26729#endif
26730 value) { _bookmark.view = (twobyte)value; }
26731
26738 void SetViewPercent(ePercent value) {_bookmark.viewPercent = value; }
26739
26744 void SetUseViewPercent(bool state) { _bookmark.scaleView = state; }
26745
26753 void SetLocator(int value) { _bookmark.page_meas = value; }
26754
26764 void SetHorizontalPosInst(int value) { _bookmark.horizpos_inst = value; }
26765
26770 void SetUseHorizontalPosInst(bool state) { Set16BitFlag(&_bookmark.flag, BM_SCRL_HORIZINST, state); }
26771
26782 {
26784 _bookmark.vertpos_staffset = IU_STAFFSET1 + value - 1;
26785 else
26786 _bookmark.vertpos_staffset = value;
26787 }
26788
26793 void SetUseVerticalPosStaffSet(bool state) { Set16BitFlag(&_bookmark.flag, BM_SCRL_VERTSTAFFSET, state); }
26794
26801 bool IsForPageView() const
26802 { return GetViewType() == BOOKMARKTYPE_PAGEVIEW; }
26803
26810 bool IsForScrollView() const
26811 { return GetViewType() == BOOKMARKTYPE_SCROLLVIEW; }
26812
26813#ifdef PDK_FRAMEWORK_DEBUG
26814 void DebugDump() override
26815 {
26817 this->DebugDataDump();
26818 }
26819#endif
26820
26821};
26822#endif // PDK_FRAMEWORK_ENIGMASTRINGS
26823
26824#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26825
26826#include "pragma_align_begin.h"
26827struct _FCEDTKeyFormat
26828{
26829 twobyte totalSteps; // number elements in EDTKeyStep array (12 for std key)
26830 twobyte numDiatonicSteps; // (7 for std key)
26831private:
26832 twobyte filler[4];
26833};
26834#include "pragma_align_end.h"
26835
26836//cmper = key cmper from eKey
26837//inci = 0
26838#define __ot_KeyFormat MAKEEXTAG(edOther,'K','F')
26839
26840#include "pragma_align_begin.h"
26841struct _FCEDTKeyAttributes
26842{
26843 twobyte harmonicRef;
26844 eMIDIkey middleKey;
26845 EFONTID symbolFont; //enigma font id of accidental symbols
26846 twobyte gotoKeyUnit;
26847 twobyte symListID; //cmper of accidental symbols
26848 FLAG_16 flags;
26849
26850// flag values:
26851#define KEYSATTRIB_HAS_CLEFOCTV 0x0001 // indicates that accidental octave placement records exists
26852};
26853#include "pragma_align_end.h"
26854
26855//cmper = key cmper from eKey
26856//inci = 0
26857#define __ot_KeyAttributes MAKEEXTAG(edOther,'K','A')
26858
26859#include "pragma_align_begin.h"
26860struct __FCEDTKeyStep
26861{
26862 twobyte diatonicStep;
26863 FLAG_16 flag;
26864
26865//flag values:
26866#define KEYSTEP_IS_NEXT_DIATONIC_STEP 0x8000
26867};
26868#include "pragma_align_end.h"
26869
26870//multi-inci array of EDTKeyStep (
26871//cmper = key cmper from eKey
26872#define __ot_KeyStepMap MAKEEXTAG(edOther,'K','M')
26873
26874// cmper1 = cmper from _FCEDTKeyAttributes.symListID
26875// cmper2 = list element (1..7 or -1..-7)
26876// inci = 0
26877#define __dt_KeyAcciSymbol MAKEEXTAG(edDetail,'K','S')
26878
26879// inci array of twobytes
26880// cmper = key cmper from eKey
26881// inci = 0
26882#define __ot_KeyAcciOrderPositive MAKEEXTAG(edOther,'O','p') //0..6 (for 1 up to 7)
26883#define __ot_KeyAcciOrderNegative MAKEEXTAG(edOther,'O','n') //0..6 (for -1 down to -7)
26884
26885// inci array of twobytes
26886// cmper = key cmper from eKey
26887#define __ot_KeyAcciAmountPositive MAKEEXTAG(edOther,'A','p') //0..6 (for 1 up to 7)
26888#define __ot_KeyAcciAmountNegative MAKEEXTAG(edOther,'A','n') //0..6 (for -1 down to -7)
26889
26890// inci array of twobytes
26891// cmper = key cmper from eKey
26892#define __ot_KeyToneCenterPositive MAKEEXTAG(edOther,'T','p') //0..7 (for 0 up to 7)
26893#define __ot_KeyToneCenterNegative MAKEEXTAG(edOther,'T','n') //0..7 (for 0 down to -7, but 0 not used)
26894
26895// inci array of twobytes
26896// cmper1 = key cmper from eKey
26897// cmper2 = clef id
26898#define __dt_KeyOctavePlacementPositive MAKEEXTAG(edDetail,'C','p') //0..6 (for 1 up to 7)
26899#define __dt_KeyOctavePlacementNegative MAKEEXTAG(edDetail,'C','n') //0..6 (for -1 down to -7)
26900
26901// As far as I know custom key modes are the only Enigma data that use parallel
26902// positive and negative arrays like this. RGP 3/6/2024
26903
26904template<EXTAG TAGP, EXTAG TAGN, int MAXSIZE, bool CONSTRAIN_VALUES>
26905class __FCDualArray
26906{
26907 static_assert(MAXSIZE == 7 || MAXSIZE == 8, "MAXSIZE must be 7 o 8");
26908 static constexpr bool IS_DETAIL = HI_UTWOBYTE(TAGP) == edDetail;
26909
26910protected:
26911 using __FCPositiveArray = std::conditional_t<IS_DETAIL, __FCEnigmaDetailArray<twobyte, TAGP>, __FCEnigmaOtherArray<twobyte, TAGP>>;
26912 using __FCNegativeArray = std::conditional_t<IS_DETAIL, __FCEnigmaDetailArray<twobyte, TAGN>, __FCEnigmaOtherArray<twobyte, TAGN>>;
26913
26914 __FCPositiveArray _positive;
26915 __FCNegativeArray _negative;
26916
26917private:
26918 twobyte __getActualX(twobyte x) const
26919 {
26920 twobyte actualX = std::abs(x);
26921 if constexpr (MAXSIZE == 7)
26922 {
26923 if (actualX == 0)
26924 {
26925#ifdef PDK_FRAMEWORK_LUAFRIENDLY
26926 throw std::runtime_error("zero is not a valid index");
26927#endif
26928 assert(actualX);
26929 return 0;
26930 }
26931 actualX--;
26932 }
26933 if (actualX >= MAXSIZE)
26934 {
26935#ifdef PDK_FRAMEWORK_LUAFRIENDLY
26936 throw std::runtime_error("index out of range: " + std::to_string(x));
26937#endif
26938 return actualX % MAXSIZE;
26939 }
26940 return actualX;
26941 }
26942
26943protected:
26944 __FCDualArray() : _positive(MAXSIZE), _negative(MAXSIZE)
26945 {
26946 _positive.Reset();
26947 _negative.Reset();
26948 }
26949
26950public:
26951 twobyte operator[](twobyte x) const
26952 {
26953 twobyte actualX = __getActualX(x);
26954 if (x < 0) return _negative[actualX];
26955 return _positive[actualX];
26956 }
26957
26958 twobyte& operator[](twobyte x)
26959 {
26960 twobyte actualX = __getActualX(x);
26961 if (x < 0) return _negative[actualX];
26962 return _positive[actualX];
26963 }
26964
26965 int NumPositive() const { return _positive.NumElements(); }
26966 int NumNegative() const { return _negative.NumElements(); }
26967
26968 __FCDualArray& operator=(const std::map<twobyte, twobyte>& values)
26969 {
26970 _positive.Reset();
26971 _negative.Reset();
26972 for (auto value : values)
26973 {
26974 if (value.first >= 0 && !NumPositive())
26975 _positive.AllocateFor(MAXSIZE);
26976 else if (value.first < 0 && !NumNegative())
26977 _negative.AllocateFor(MAXSIZE);
26978 if constexpr(CONSTRAIN_VALUES)
26979 {
26980 if (value.second < 0 || value.second > 6)
26981 {
26982#ifdef PDK_FRAMEWORK_LUAFRIENDLY
26983 throw std::runtime_error("value must be between 0 and 6: got " + std::to_string(value.second));
26984#endif
26985 (*this)[value.first] = std::abs(value.second) % 6;
26986 return *this;
26987 }
26988 }
26989 (*this)[value.first] = value.second;
26990 }
26991 return *this;
26992 }
26993
26994 operator std::map<twobyte, twobyte>() const
26995 {
26996 std::map<twobyte, twobyte> values;
26997 const twobyte xoff = (MAXSIZE == 7) ? 1 : 0;
26998 for (twobyte x = 0; x < NumPositive(); x++)
26999 {
27000 if (x >= MAXSIZE) break;
27001 values[x + xoff] = _positive[x];
27002 }
27003 const twobyte startneg = (MAXSIZE == 7) ? 0 : 1;
27004 for (twobyte x = startneg; x < NumNegative(); x++)
27005 {
27006 if (x >= MAXSIZE) break;
27007 values[-x - xoff] = _negative[x];
27008 }
27009 return values;
27010 }
27011
27012 bool Load(CMPER cmper, CMPER cmper2)
27013 {
27014 bool retval = false;
27015 if constexpr(IS_DETAIL)
27016 {
27017 if (_positive.Load(cmper, cmper2)) retval = true;
27018 if (_negative.Load(cmper, cmper2)) retval = true;
27019 }
27020 else
27021 {
27022 if (_positive.Load(cmper)) retval = true;
27023 if (_negative.Load(cmper)) retval = true;
27024 }
27025 return retval;
27026 }
27027
27028 bool SaveAs(CMPER cmper, CMPER cmper2)
27029 {
27030 if constexpr(IS_DETAIL)
27031 return _positive.SaveAs(cmper, cmper2) && _negative.SaveAs(cmper, cmper2);
27032 else
27033 return _positive.SaveAs(cmper) && _negative.SaveAs(cmper);
27034 }
27035
27036 bool Delete(CMPER cmper)
27037 {
27038 bool deleted = false;
27039 if (__FCPositiveArray().Delete(cmper)) deleted = true;
27040 if (__FCNegativeArray().Delete(cmper)) deleted = true;
27041 return deleted;
27042 }
27043};
27044
27045template<EXTAG TAGP, EXTAG TAGN, int MAXSIZE, bool CONSTRAIN_VALUES = true>
27046class __FCDualOtherArray : public __FCDualArray<TAGP, TAGN, MAXSIZE, CONSTRAIN_VALUES>
27047{
27048 using __FCDualOtherArrayBase = __FCDualArray<TAGP, TAGN, MAXSIZE, CONSTRAIN_VALUES>;
27049
27050public:
27051 __FCDualOtherArray() = default;
27052
27053 using __FCDualOtherArrayBase::operator=;
27054 using __FCDualOtherArrayBase::operator std::map<twobyte, twobyte>;
27055
27056 bool Load(CMPER cmper)
27057 { return __FCDualOtherArrayBase::Load(cmper, 0); }
27058
27059 bool SaveAs(CMPER cmper)
27060 { return __FCDualOtherArrayBase::SaveAs(cmper, 0); }
27061};
27062
27063template<EXTAG TAGP, EXTAG TAGN, int MAXSIZE, bool CONSTRAIN_VALUES = true>
27064class __FCDualDetailArray : public __FCDualArray<TAGP, TAGN, MAXSIZE, CONSTRAIN_VALUES>
27065{
27066 using __FCDualDetailArrayBase = __FCDualArray<TAGP, TAGN, MAXSIZE, CONSTRAIN_VALUES>;
27067
27068public:
27069 __FCDualDetailArray() = default;
27070 using __FCDualDetailArrayBase::operator=;
27071 using __FCDualDetailArrayBase::operator std::map<twobyte, twobyte>;
27072};
27073
27074using __FCCustomKeyModeTonalCenters = __FCDualOtherArray<__ot_KeyToneCenterPositive, __ot_KeyToneCenterNegative, 8>;
27075using __FCCustomKeyModeAcciOrder = __FCDualOtherArray<__ot_KeyAcciOrderPositive, __ot_KeyAcciOrderNegative, 7>;
27076using __FCCustomKeyModeAcciAmounts = __FCDualOtherArray<__ot_KeyAcciAmountPositive, __ot_KeyAcciAmountNegative, 7, false>;
27077using __FCCustomKeyClefOctavePlacement = __FCDualDetailArray<__dt_KeyOctavePlacementPositive, __dt_KeyOctavePlacementNegative, 7, false>;
27078
27079class __FCCustomKeyClefOctavePlacements
27080{
27081 std::vector<__FCCustomKeyClefOctavePlacement> _placements;
27082
27083public:
27084 __FCCustomKeyClefOctavePlacements() = default;
27085
27086 __FCCustomKeyClefOctavePlacements& operator=(const std::vector<std::map<twobyte, twobyte>>& values)
27087 {
27088 _placements.clear();
27089 _placements.resize(values.size());
27090 for (size_t x = 0; x < _placements.size(); x++)
27091 _placements[x] = values[x];
27092 return *this;
27093 }
27094
27095 operator std::vector<std::map<twobyte, twobyte>>() const
27096 {
27097 std::vector<std::map<twobyte, twobyte>> retval(_placements.size());
27098 for (size_t x = 0; x < _placements.size(); x++)
27099 retval[x] = _placements[x];
27100 return retval;
27101 }
27102
27103 bool Load(CMPER cmper);
27104
27105 bool SaveAs(CMPER cmper)
27106 {
27107 for (CMPER x = 0; x < _placements.size(); x++)
27108 {
27109 if (!_placements[x].SaveAs(cmper, x)) return false;
27110 }
27111 return true;
27112 }
27113
27114 bool Delete(CMPER cmper)
27115 {
27116 return __FCCustomKeyClefOctavePlacement().Delete(cmper);
27117 }
27118};
27119
27120#endif // DOXYGEN_SHOULD_IGNORE_THIS
27121
27131{
27132 using symbolMap = std::map<twobyte, std::string>;
27133
27134 CMPER _itemno;
27135 symbolMap _list; // key: 1..7 for sharps, -1..-7 for flats, 0 for natural; value: utf8-encoded string
27136
27138 : _itemno(src._itemno), _list(src._list)
27139 {}
27140
27141public:
27142 const char* ClassName() const override { return "FCCustomKeyModeSymbolList"; }
27143
27144#ifndef DOXYGEN_SHOULD_IGNORE_THIS
27145 FCCustomKeyModeSymbolList* CreateClone() const
27146 { return new FCCustomKeyModeSymbolList(*this); }
27147#endif
27148
27153 FCCustomKeyModeSymbolList() : _itemno(kNewCmper) {}
27154
27159 bool Load(CMPER itemno);
27160
27165 bool LoadNext();
27166
27171 bool LoadFirst();
27172
27180 bool Save();
27181
27187 bool SaveAs(CMPER itemno)
27188 {
27189 _itemno = itemno;
27190 return Save();
27191 }
27192
27197 bool DeleteData();
27198
27204 CMPER GetItemNo() const { return _itemno; }
27205
27214 symbolMap GetList() const { return _list; }
27215
27230 void SetList(symbolMap list) { _list = list; }
27231
27237 FCString* CreateListString() const;
27238
27239#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
27241 luabridge::RefCountedPtr<FCString> CreateListString_GC() const
27242 { return makeLuaSharedPtr(CreateListString()); }
27243#endif
27244
27253 static symbolMap GetDefaultList();
27254
27261 bool CalcIsDefaultList() const;
27262};
27263
27298{
27299private:
27300 _FCEDTKeyFormat _format;
27301 _FCEDTKeyAttributes _attributes;
27302 std::vector<eHarmLev> _stepmap;
27303 __FCCustomKeyModeTonalCenters _tonalcenters;
27304 __FCCustomKeyModeAcciOrder _acciorder;
27305 __FCCustomKeyModeAcciAmounts _acciamounts;
27306 __FCCustomKeyClefOctavePlacements _clefplacements;
27307
27308 bool _LoadChildData();
27309 bool _SaveChildData();
27310 bool _DeleteChildData();
27311
27312 bool _LoadStepMap();
27313 bool _SaveStepMap();
27314
27316 bool SaveNew() override
27317 {
27318#if PDK_FRAMEWORK_LUAFRIENDLY
27319 throw std::runtime_error("SaveNew not implemented for FCCustomKeyModeDef");
27320#endif
27321 return false;
27322 }
27323
27324protected:
27325#ifndef DOXYGEN_SHOULD_IGNORE_THIS
27326 EXTAG Tag() const override { return __ot_KeyFormat; }
27327 int DataSizeLoad() const override { return sizeof(_format); }
27328 void* Allocate() override { return (void*) &_format; }
27329
27334 void CloneMemoryFrom(__FCBaseData* pSource) override
27335 {
27336 FCCustomKeyModeDef* pSourceKeyModeDef = dynamic_cast<FCCustomKeyModeDef*>(pSource);
27337 assert(pSourceKeyModeDef);
27338 _format = pSourceKeyModeDef->_format;
27339 _attributes = pSourceKeyModeDef->_attributes;
27340 _stepmap = pSourceKeyModeDef->_stepmap;
27341 _tonalcenters = pSourceKeyModeDef->_tonalcenters;
27342 _acciorder = pSourceKeyModeDef->_acciorder;
27343 _acciamounts = pSourceKeyModeDef->_acciamounts;
27344 _clefplacements = pSourceKeyModeDef->_clefplacements;
27345 _datablock = Allocate();
27347 }
27348
27349 __FCBaseData* CreateObject() override { return new FCCustomKeyModeDef(); }
27350#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
27351public:
27352 const char* ClassName() const override { return "FCCustomKeyModeDef"; }
27353 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_KEYMODEDEF; }
27354
27360 {
27361 memset(&_attributes, 0, sizeof(_attributes));
27362 memset(&_format, 0, sizeof(_format));
27363 }
27364
27365#ifndef DOXYGEN_SHOULD_IGNORE_THIS
27367 bool LoadFirst() override
27368 {
27369 if (Load(0)) return true;
27370 return LoadNext();
27371 }
27372
27374 bool LoadNext() override
27375 {
27376 // Due to Finale bug, calling FX_NextEData with extag of __ot_KeyFormat and null buffer crashes Finale.
27377 // Therefore we cannot call the base class LoadNext (__FCBaseData::LoadNext).
27378 _FCEDTKeyFormat format;
27379 if (!FX_NextEData(Tag(), &_dataid, &format, sizeof(format), EnigmaVersion())) return false;
27380 return Load(_dataid.other.cmper);
27381 }
27382
27384 bool Load(CMPER itemno) override
27385 {
27386 if (! __FCNoInciOther::Load(itemno)) return false;
27387 return _LoadChildData();
27388 }
27389
27391 bool Save() override
27392 {
27393 _format.numDiatonicSteps = static_cast<twobyte>(_stepmap.size());
27394 if (! __FCNoInciOther::Save()) return false;
27395 return _SaveChildData();
27396 }
27397
27399 bool DeleteData() override
27400 {
27401 if (!_DeleteChildData()) return false;
27403 }
27404#endif // DOXYGEN_SHOULD_IGNORE_THIS
27405
27410 bool SaveNewLinear();
27411
27416 bool SaveNewNonLinear();
27417
27432 static bool DeleteItemNo(CMPER itemno)
27433 {
27435 def.SetCmperAndInci(itemno, 0);
27436 return def.DeleteData();
27437 }
27438
27448 eKey GetKeyID(int accidentalnumber = 0) const
27449 {
27450 if (IsLinear())
27451 return ::MakeLinearKey(accidentalnumber, GetItemNo());
27452 return GetItemNo();
27453 }
27454
27455#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
27457 static int GetKeyID_CFunc(lua_State *L)
27458 {
27459 return _CFunctionOneOptionalParameter<FCCustomKeyModeDef, eKey, int, &FCCustomKeyModeDef::GetKeyID>(L, 0);
27460 }
27461#endif
27462
27472 bool IsLinear() const { return ::IsLinearKeyMode(GetItemNo()); }
27473
27480 bool IsNonLinear() const { return !::IsLinearKey(GetItemNo()); }
27481
27486 bool IsPredefined() const { return ::IsPredefinedKeyMode(GetItemNo()); }
27487
27494 twobyte GetHarmonicReference() const { return _attributes.harmonicRef; }
27495
27504 void SetHarmonicReference(twobyte value) { _attributes.harmonicRef = value; }
27505
27512 twobyte GetMiddleKeyNumber() const { return _attributes.middleKey; }
27513
27531 void SetMiddleKeyNumber(twobyte value) { _attributes.middleKey = value; }
27532
27539 twobyte GetGoToKeyUnit() const { return _attributes.gotoKeyUnit; }
27540
27555 void SetGoToKeyUnit(twobyte value) { _attributes.gotoKeyUnit = value; }
27556
27565 twobyte GetSymbolListID() const { return _attributes.symListID; }
27566
27575 void SetSymbolListID(twobyte value) { _attributes.symListID = value; }
27576
27583 bool GetHasClefAccidentalPlacements() const { return GetBitFlag(_attributes.flags, KEYSATTRIB_HAS_CLEFOCTV); }
27584
27591 void SetHasClefAccidentalPlacements(bool state) { Set16BitFlag(&_attributes.flags, KEYSATTRIB_HAS_CLEFOCTV, state); }
27592
27599 EFONTID GetAccidentalFontID() const { return _attributes.symbolFont; }
27600
27611 void SetAccidentalFontID(const EFONTID value) { _attributes.symbolFont = value; }
27612
27623
27624#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
27626 luabridge::RefCountedPtr<FCFontInfo> CreateAccidentalFontInfo_GC() const
27627 { return makeLuaSharedPtr(CreateAccidentalFontInfo()); }
27628#endif
27629
27630
27637 twobyte GetTotalChromaticSteps() const { return _format.totalSteps; }
27638
27650 void SetTotalChromaticSteps(twobyte value) { _format.totalSteps = value; }
27651
27670 std::vector<eHarmLev> GetDiatonicStepsMap() const { return _stepmap; }
27671
27682 void SetDiatonicStepsMap(const std::vector<eHarmLev>& list) { _stepmap = list; }
27683
27693 std::map<twobyte, twobyte> GetTonalCenters() const { return _tonalcenters; }
27694
27751 void SetTonalCenters(const std::map<twobyte, twobyte>& values) { _tonalcenters = values; }
27752
27761 twobyte GetBaseTonalCenter() const
27762 {
27763 if (_tonalcenters.NumPositive() <= 0)
27764 return GetItemNo() == KEYMODE_MINOR ? 5 : 0;
27765 return _tonalcenters[0];
27766 }
27767
27783 void SetBaseTonalCenter(twobyte value)
27784 {
27785 if (value < 0 || value > 6)
27786 {
27787#ifdef PDK_FRAMEWORK_LUAFRIENDLY
27788 throw std::runtime_error("value must be between 0 and 6; got " + std::to_string(value));
27789#endif
27790 return;
27791 }
27792 if (value == 0 || (value == 5 && GetItemNo() == KEYMODE_MINOR))
27793 {
27794 // do not create tonal centers if they are not necessary.
27795 if (_tonalcenters.NumPositive() == 0 && _tonalcenters.NumNegative() == 0)
27796 return;
27797 }
27798 if (IsNonLinear())
27799 {
27800 SetTonalCenters({{0, value}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}, {6,0}, {7,0}});
27801 return;
27802 }
27803 auto tonalCenters = GetDefaultTonalCenters();
27804 if (value > 0)
27805 {
27806 for (auto& tonalCenter : tonalCenters)
27807 tonalCenter.second = (tonalCenter.second + value) % 7;
27808 }
27809 SetTonalCenters(tonalCenters);
27810 }
27811
27821 static std::map<twobyte, twobyte> GetDefaultTonalCenters()
27822 {
27823 return {{-7,0}, {-6,4}, {-5,1}, {-4,5}, {-3,2}, {-2,6}, {-1,3}, {0,0}, {1,4}, {2,1}, {3,5}, {4,2}, {5,6}, {6,3}, {7,0}};
27824 }
27825
27830 static bool CalcIsDefaultTonalCenters(const std::map<twobyte, twobyte>& values)
27831 {
27832 return values == GetDefaultTonalCenters();
27833 }
27834
27844 std::map<twobyte, twobyte> GetAccidentalOrder() const { return _acciorder; }
27845
27910 void SetAccidentalOrder(const std::map<twobyte, twobyte>& values) { _acciorder = values; }
27911
27920 static std::map<twobyte, twobyte> GetDefaultAccidentalOrder()
27921 {
27922 return {{-7,3}, {-6,0}, {-5,4}, {-4,1}, {-3,5}, {-2,2}, {-1,6}, {1,3}, {2,0}, {3,4}, {4,1}, {5,5}, {6,2}, {7,6}};
27923 }
27924
27929 static bool CalcIsDefaultAccidentalOrder(const std::map<twobyte, twobyte>& values)
27930 {
27931 return values == GetDefaultAccidentalOrder();
27932 }
27933
27943 std::map<twobyte, twobyte> GetAccidentalAmounts() const { return _acciamounts; }
27944
27996 void SetAccidentalAmounts(const std::map<twobyte, twobyte>& values) { _acciamounts = values; }
27997
28004 static std::map<twobyte, twobyte> GetDefaultAccidentalAmounts()
28005 {
28006 return {{-7,-1}, {-6,-1}, {-5,-1}, {-4,-1}, {-3,-1}, {-2,-1}, {-1,-1}, {1,1}, {2,1}, {3,1}, {4,1}, {5,1}, {6,1}, {7,1}};
28007 }
28008
28013 static bool CalcIsDefaultAccidentalAmounts(const std::map<twobyte, twobyte>& values)
28014 {
28015 return values == GetDefaultAccidentalAmounts();
28016 }
28017
28026 std::vector<std::map<twobyte, twobyte>> GetClefAccidentalPlacements() const { return _clefplacements; }
28027
28050 void SetClefAccidentalPlacements(const std::vector<std::map<twobyte, twobyte>>& values) { _clefplacements = values; }
28051
28060 static std::vector<std::map<twobyte, twobyte>> GetDefaultClefAccidentalPlacements()
28061 {
28062 return
28063 {
28064 {{-7,0}, {-6,1}, {-5,0}, {-4,1}, {-3,0}, {-2,1}, {-1,0}, {1,1}, {2,1}, {3,1}, {4,1}, {5,0}, {6,1}, {7,0}},
28065 {{-7,-1}, {-6,0}, {-5,-1}, {-4,0}, {-3,-1}, {-2,0}, {-1,-1}, {1,0}, {2,0}, {3,0}, {4,0}, {5,-1}, {6,0}, {7,-1}},
28066 {{-7,-1}, {-6,0}, {-5,-1}, {-4,0}, {-3,-1}, {-2,0}, {-1,-1}, {1,-1}, {2,0}, {3,-1}, {4,0}, {5,-1}, {6,0}, {7,-1}},
28067 {{-7,-2}, {-6,-1}, {-5,-2}, {-4,-1}, {-3,-2}, {-2,-1}, {-1,-2}, {1,-1}, {2,-1}, {3,-1}, {4,-1}, {5,-2}, {6,-1}, {7,-2}},
28068 {{-7,0}, {-6,1}, {-5,0}, {-4,1}, {-3,0}, {-2,1}, {-1,0}, {1,1}, {2,1}, {3,1}, {4,1}, {5,0}, {6,1}, {7,0}},
28069 {{-7,-1}, {-6,0}, {-5,-1}, {-4,0}, {-3,-1}, {-2,0}, {-1,-1}, {1,0}, {2,0}, {3,0}, {4,0}, {5,-1}, {6,0}, {7,-1}},
28070 {{-7,-3}, {-6,-2}, {-5,-3}, {-4,-2}, {-3,-3}, {-2,-2}, {-1,-3}, {1,-2}, {2,-2}, {3,-2}, {4,-2}, {5,-3}, {6,-2}, {7,-3}},
28071 {{-7,-1}, {-6,-1}, {-5,-1}, {-4,-1}, {-3,-1}, {-2,-1}, {-1,-1}, {1,-1}, {2,-1}, {3,-1}, {4,-1}, {5,-1}, {6,-1}, {7,-1}},
28072 {{-7,0}, {-6,1}, {-5,0}, {-4,1}, {-3,0}, {-2,1}, {-1,0}, {1,1}, {2,1}, {3,1}, {4,1}, {5,0}, {6,1}, {7,0}},
28073 {{-7,-1}, {-6,-1}, {-5,-1}, {-4,-1}, {-3,-1}, {-2,-1}, {-1,-1}, {1,-1}, {2,-1}, {3,-1}, {4,-1}, {5,-1}, {6,-1}, {7,-1}},
28074 {{-7,0}, {-6,0}, {-5,0}, {-4,0}, {-3,0}, {-2,0}, {-1,0}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}, {6,0}, {7,0}},
28075 {{-7,0}, {-6,0}, {-5,0}, {-4,0}, {-3,0}, {-2,0}, {-1,0}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}, {6,0}, {7,0}},
28076 {{-7,0}, {-6,1}, {-5,0}, {-4,1}, {-3,0}, {-2,1}, {-1,0}, {1,1}, {2,1}, {3,1}, {4,1}, {5,0}, {6,1}, {7,0}},
28077 {{-7,1}, {-6,2}, {-5,1}, {-4,2}, {-3,1}, {-2,2}, {-1,1}, {1,2}, {2,2}, {3,2}, {4,2}, {5,1}, {6,2}, {7,1}},
28078 {{-7,-1}, {-6,0}, {-5,-1}, {-4,0}, {-3,-1}, {-2,0}, {-1,-1}, {1,0}, {2,0}, {3,0}, {4,0}, {5,-1}, {6,0}, {7,-1}},
28079 {{-7,0}, {-6,1}, {-5,0}, {-4,1}, {-3,0}, {-2,1}, {-1,0}, {1,1}, {2,1}, {3,1}, {4,1}, {5,0}, {6,1}, {7,0}},
28080 {{-7,0}, {-6,1}, {-5,0}, {-4,1}, {-3,0}, {-2,1}, {-1,0}, {1,1}, {2,1}, {3,1}, {4,1}, {5,0}, {6,1}, {7,0}},
28081 {{-7,0}, {-6,1}, {-5,0}, {-4,1}, {-3,0}, {-2,1}, {-1,0}, {1,1}, {2,1}, {3,1}, {4,1}, {5,0}, {6,1}, {7,0}}
28082 };
28083 }
28084
28089 static bool CalcIsDefaultClefAccidentalPlacements(const std::vector<std::map<twobyte, twobyte>>& values)
28090 {
28091 return values == GetDefaultClefAccidentalPlacements();
28092 }
28093
28106 FCKeySignature* CreateKeySignature(eHarmAlt alteration = 0) const;
28107
28108#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
28110private:
28111 luabridge::RefCountedPtr<FCKeySignature> CreateKeySignature_GC(eHarmAlt alteration)
28112 { return makeLuaSharedPtr(CreateKeySignature(alteration)); }
28113public:
28115 static int CreateKeySignature_CFunc(lua_State *L)
28116 {
28117 return _CFunctionOneOptionalParameter<FCCustomKeyModeDef, luabridge::RefCountedPtr<FCKeySignature>, eHarmAlt, &FCCustomKeyModeDef::CreateKeySignature_GC>(L, 0);
28118 }
28119#endif
28120
28121};
28122
28123#endif /* _FF_OTHER_H */
28124
Base class for all data-related classes (that handles Finale data).
Definition ff_base.h:676
virtual void Deallocate()
Definition ff_base.h:725
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.
virtual bool LoadFirst()=0
Loads the very first element in the database, if any.
const PDKFRAMEWORK_CLASSID GetClassID() const override=0
Returns the internal class ID for the PDK Framework class. This is implemented mostly because Lua has...
EDataID _dataid
The EdataID for the last loaded/saved object.
Definition ff_base.h:712
bool DataIsLoaded() const
Returns true is any data has been loaded into the object.
Definition ff_base.h:770
bool LoadDataBlock()
Loads the data. If the object is of dynamic size, the old memory block is freed and a new is allocate...
Definition finaleframework.cpp:921
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.
const EDataID * _GetDataID()
Intended ONLY for the _CloneFrom implementation.
Definition ff_base.h:848
virtual bool DeleteData()
Deletes the associated data from Finale's database. Be careful when deleting multiple objects.
Definition finaleframework.cpp:911
virtual bool IsDynamicSize()
Definition ff_base.h:733
virtual bool LoadNext()
Loads the next element from the database, if any.
Definition finaleframework.cpp:980
virtual void CloneMemoryFrom(__FCBaseData *pSource)
Definition finaleframework.cpp:838
void _TagDocumentID()
For internal use only.
Definition finaleframework.cpp:808
virtual bool Save()
Saves the currently loaded to its current location.
Definition finaleframework.cpp:951
void DebugDataDump() override
Outputs a memory dump of the data block in the object for debugging purposes.
Definition ff_base.h:1013
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 DebugOutString(const char *pszPrefixText, const char *thestring)
Static method that outputs a line for debugging purposes (C string version). The text appears with th...
Definition finaleframework.cpp:436
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
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
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
virtual bool SaveAll()
Saves all data in the collection.
Definition ff_basecollection.h:646
Base class for all collection classes. A collection is a storage that can store multiple objects of s...
Definition ff_basecollection.h:26
void Add(__FCBase *pNewItem)
Adds an element to the end of the collection.
Definition finaleframework.cpp:13726
void ClearAll()
Destroys all the objects in the collection and empties the collection.
Definition ff_basecollection.h:151
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 for "other" data with incis of the __FCInciOther class (where it's common to collect all i...
Definition ff_basecollection.h:754
virtual bool DeleteDataForItem(CMPER cmper)
Deletes all subrecords (incis) from the Finale database for a specific item (cmper).
Definition finaleframework.cpp:14067
An internal inci holder for composite time signature bottom elements.
Definition ff_other.h:435
__FCCompositeTimeSigBottomElement()
The constructor.
Definition ff_other.h:477
ECompositeTimeLower * _GetThirdRecordPtr()
For internal use only.
Definition ff_other.h:491
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:495
ECompositeTimeLower * _GetSecondRecordPtr()
For internal use only.
Definition ff_other.h:488
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:463
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_other.h:464
ECompositeTimeLower * _GetFirstRecordPtr()
For internal use only.
Definition ff_other.h:485
An internal inci holder for composite time signature top elements.
Definition ff_other.h:364
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:392
__FCCompositeTimeSigTopElement()
The constructor.
Definition ff_other.h:406
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:421
ECompositeTimeUpper * _GetFirstRecordPtr()
For internal use only.
Definition ff_other.h:414
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_other.h:393
ECompositeTimeUpper * _GetSecondRecordPtr()
For internal use only.
Definition ff_other.h:417
Base class for "other" (ot_*) data with incis.
Definition ff_other.h:63
virtual bool SaveNew(CMPER itemno)
Creates a new inci record with data.
Definition finaleframework.cpp:4817
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:80
int GetItemInci() const
Returns the inci (subrecord) value in the data ID for a loaded record.
Definition ff_other.h:128
virtual bool Load(CMPER itemno, twobyte inci)
Loads the indicated record within the item number.
Definition finaleframework.cpp:4780
twobyte CalcLastInci() override
Overridden version of CalcLastInci for __FCInciOther-based classes.
Definition finaleframework.cpp:4798
int GetItemCmper() const
Returns the cmper (main record) value for a loaded record.
Definition ff_other.h:116
virtual eMeas GetMeasure() const
Virtual method for returning the measure number.
Definition ff_other.h:140
virtual TimeEdu32 GetMeasurePos() const
Virtual method for returning the position within the measure.
Definition ff_other.h:159
virtual eStaff GetStaff() const
Virtual method for returning the staff number.
Definition ff_other.h:149
bool Reload() override
Overridden version of Reload(), to support complex (mixed) data types.
Definition finaleframework.cpp:4786
virtual bool HasStaffValue() const
Method that should return true if GetStaff() returns actual values.
Definition ff_other.h:152
__FCInciOther()
The constructor.
Definition ff_other.h:79
void _SetCmper(CMPER cmper)
Primarily for internal use.
Definition ff_other.h:109
Base class for the "Other" (ot_*) Enigma structures that don't use the inci parameter.
Definition ff_other.h:231
void SetItemNo(CMPER cmper)
Sets the item number. Use with extreme care! This is mostly intended for situations when creating new...
Definition ff_other.h:332
virtual bool Load(CMPER itemno)
Loads the indicated item.
Definition finaleframework.cpp:4719
bool LoadFirst() override
Loads the first element of 1-based data.
Definition ff_other.h:346
virtual bool SaveNew()
Creates the data as completely new item number. The object will now be connected to the new item numb...
Definition finaleframework.cpp:4744
virtual bool DeepSaveAs(CMPER itemno)
Saves the data under another item number, but also makes a deep copy of the object.
Definition ff_other.h:292
bool Reload() override
Overridden Reload() method to support complex data types.
Definition finaleframework.cpp:4725
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:349
__FCNoInciOther()
The constructor.
Definition ff_other.h:265
virtual CMPER GetItemNo() const
Returns the item number. This typically points to items such as a page number, a measure number,...
Definition ff_other.h:323
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:262
virtual bool SaveAs(CMPER itemno)
Saves the data under another item number. The object will now be connected to the new item number.
Definition finaleframework.cpp:4737
bool DeepDeleteData() override
Deletes the data and all related data available in other data structures.
Definition ff_other.h:303
Base class for all "Other" (ot_*) Enigma structures.
Definition ff_other.h:26
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:38
bool IsIdenticalRecord(__FCOther *pCompare)
Compares an object to see if both objects point to the same data record.
Definition ff_other.h:50
void SetCmperAndInci(CMPER cmper, twobyte inci)
Sets both the CMPER and the incident number in the dataID record. Mainly for internal use.
Definition ff_other.h:30
__FCOther()
The constructor.
Definition ff_other.h:41
The base class for FCStaff (and its subclass FCCurrentStaffSpec), as well FCStaffStyleDef.
Definition ff_other.h:7393
static const char FFUUID_KUBING[]
Definition ff_other.h:8782
static const char FFUUID_GOTTUVADHYAM[]
Definition ff_other.h:8450
static const char FFUUID_POCKETTRUMPET[]
Definition ff_other.h:8302
static const char FFUUID_DVOJNICE[]
Definition ff_other.h:8046
static const char FFUUID_SAUNG[]
Definition ff_other.h:8546
static const char FFUUID_SHAKUHACHI[]
Definition ff_other.h:8084
static const char FFUUID_KASHIKLAR[]
Definition ff_other.h:9230
static const char FFUUID_ODAIKO[]
Definition ff_other.h:8961
static const char FFUUID_KODAIKO[]
Definition ff_other.h:8935
static const char FFUUID_TROMBONE[]
Definition ff_other.h:8248
static const char FFUUID_BOMBARDE[]
Definition ff_other.h:8158
void SetStemsDownHorizontalOffset(Efix32 value)
Sets the horizontal stem offset for down stems.
Definition ff_other.h:10556
static const char FFUUID_NADASWARAM[]
Definition ff_other.h:8182
void SetLineSpacing(Efix32 distance)
Sets the distance between the staff lines, in EFIXs.
Definition ff_other.h:10758
void SetHalfRestPosition(twobyte position)
Sets the vertical position for the half rests. This setting is located in the "Staff Setup" dialog bo...
Definition ff_other.h:10350
static const char FFUUID_GUITARRAQUINTAHUAPANGUERA[]
Definition ff_other.h:8452
static const char FFUUID_KAKKO[]
Definition ff_other.h:8925
bool GetShowTopRepeatDot() const
Returns if the top repeat dot should be displayed for the staff. This setting is located in the "Staf...
Definition ff_other.h:9595
static const char FFUUID_DIHU[]
Definition ff_other.h:7747
static const char FFUUID_RYUTEKI[]
Definition ff_other.h:8082
static const char FFUUID_SOUSAPHONE[]
Definition ff_other.h:8262
static const char FFUUID_HANDDRUM[]
Definition ff_other.h:8913
bool GetAltNotationDisplayOtherLayerNotes() const
Returns true if notes in the non-alternate layers should be displayed.
Definition ff_other.h:9766
static const char FFUUID_MANDOCELLO[]
Definition ff_other.h:8500
CMPER GetFullNameID()
Returns the text block ID for the full name. Usually not needed, use CreateFullNameString or CreateTr...
Definition ff_other.h:10058
static const char FFUUID_SOPRANOXYLOPHONE[]
Definition ff_other.h:8685
static const char FFUUID_FLEXATONE_PERC[]
Definition ff_other.h:9192
void Make1LineFullBarlineStaff()
Fills the necessary values in the Staff Setup dialog to make a 1-line staff with full-length barlines...
Definition ff_other.h:11204
static const char FFUUID_BONES[]
Definition ff_other.h:9147
static const char FFUUID_CORNETEFLAT[]
Definition ff_other.h:8270
static const char FFUUID_KESI[]
Definition ff_other.h:9232
FCString * CreateDisplayAbbreviatedNameString()
Creates an abbreviated staff name for display purposes.
Definition finaleframework.cpp:9085
static const char FFUUID_KANJIRA[]
Definition ff_other.h:8927
static const char FFUUID_HUN[]
Definition ff_other.h:8058
static const char FFUUID_TROUBADORHARP[]
Definition ff_other.h:8334
static const char FFUUID_JANGGU[]
Definition ff_other.h:8923
static const char FFUUID_TENORVOICE[]
Definition ff_other.h:7861
static const char FFUUID_RAUSCHPFEIFE[]
Definition ff_other.h:8144
static const char FFUUID_BASSTRUMPET[]
Definition ff_other.h:8294
static const char FFUUID_PAHUHULA[]
Definition ff_other.h:8967
static const char FFUUID_MANDOBASS[]
Definition ff_other.h:8498
static const char FFUUID_GUITAR8VB[]
Definition ff_other.h:8338
static const char FFUUID_PENNYWHISTLE[]
Definition ff_other.h:7952
twobyte GetCapoPosition() const
For tablature notation: returns the capo position.
Definition ff_other.h:10094
static const char FFUUID_SLENTHEMSGAMELAN[]
Definition ff_other.h:8760
static const char FFUUID_VIELLE[]
Definition ff_other.h:7797
bool GetShowBeams() const
Returns true if beams should be displayed for the staff.
Definition ff_other.h:9671
void SetStemsDownVerticalOffsetForBeamEnd(Efix32 value)
Sets the vertical stem offset for the beam of end down stems.
Definition ff_other.h:10580
bool GetShowTextRepeats() const
Returns true if endings and text repeats should be displayed for the staff.
Definition ff_other.h:9504
static const char FFUUID_ELECTRICPIANO[]
Definition ff_other.h:7830
static const char FFUUID_TAB_BANJO_D[]
Definition ff_other.h:8617
void SetAltShowOtherNotes(bool state)
Sets if notes should be displayed on layers other than the altered layer.
Definition ff_other.h:10828
void SetOtherRestPosition(twobyte position)
Sets the vertical position for the "other" rests. This setting is located in the "Staff Setup" dialog...
Definition ff_other.h:10360
bool GetShowPartTimeSignatures() const
Returns true if the time signature should be displayed for the staff in parts.
Definition ff_other.h:9468
static const char FFUUID_KPOKOKPOKO[]
Definition ff_other.h:9238
static const char FFUUID_GRANDSTAFF[]
Definition ff_other.h:7700
static const char FFUUID_JARANAHUASTECA[]
Definition ff_other.h:8468
static const char FFUUID_KONCOVKAALTOFLUTE[]
Definition ff_other.h:8068
void SetRedisplayOtherLayerAccidentals(bool state)
Sets the "Redisplay accidentals in other layers within measures" state.
Definition ff_other.h:10919
static const char FFUUID_NIGERIANLOGDRUM[]
Definition ff_other.h:8959
static const char FFUUID_HARPSICHORD[]
Definition ff_other.h:7818
static const char FFUUID_BANJOLELE[]
Definition ff_other.h:8390
static const char FFUUID_VIRGINAL[]
Definition ff_other.h:7850
Efix32 GetStemsUpVerticalOffsetForNoteheadEnd() const
Returns the vertical stem offset for the notehead end of up stems.
Definition ff_other.h:9735
static const char FFUUID_UNKNOWN[]
Definition ff_other.h:7702
static const char FFUUID_TONETANG[]
Definition ff_other.h:9292
static const char FFUUID_THAIGONG[]
Definition ff_other.h:9278
static const char FFUUID_QUADTOMS[]
Definition ff_other.h:8825
void SetAltShowOtherExpressions(bool state)
Sets if expressions should be displayed on layers other than the altered layer.
Definition ff_other.h:10852
static const char FFUUID_BUGLE[]
Definition ff_other.h:8268
static const char FFUUID_TAB_BASSGUITAR_6[]
Definition ff_other.h:8629
static const char FFUUID_GEDUK[]
Definition ff_other.h:8911
static const char FFUUID_BANDURA[]
Definition ff_other.h:8388
static const char FFUUID_DILLIKAVAL[]
Definition ff_other.h:8040
void SetStemsDirection(STAFFSTEMDIRS value)
Sets the stem direction for note entries on the staff. (Staff Stem Settings dialog....
Definition ff_other.h:10498
static const char FFUUID_LUNTANG[]
Definition ff_other.h:8794
static const char FFUUID_FLUGELHORN[]
Definition ff_other.h:8242
void SetAltNotationStyle(ALTERNATE_STAFF value)
Sets the alternate notation style for the staff or staff style.
Definition ff_other.h:10770
static const char FFUUID_DOLLU[]
Definition ff_other.h:8889
void SetAltShowOtherArticulations(bool state)
Sets if articulations should be displayed on layers other than the altered layer.
Definition ff_other.h:10834
void SetAltShowExpression(bool state)
Sets if expressions should be diplayed on the altered layer.
Definition ff_other.h:10822
static const char FFUUID_BEGENA[]
Definition ff_other.h:8394
static const char FFUUID_INDIANGONG[]
Definition ff_other.h:9218
static const char FFUUID_MARIMBA[]
Definition ff_other.h:8673
bool GetShowPartStaffNames() const
Returns true if part staff names should be displayed for the staff.
Definition ff_other.h:9657
static const char FFUUID_NGONI[]
Definition ff_other.h:8518
bool GetAltShowArticulations() const
Returns if articulations should be diplayed on the altered layer.
Definition ff_other.h:9918
static const char FFUUID_PATSCHEN[]
Definition ff_other.h:9250
static const char FFUUID_SLIDEWHISTLE_PERCCLEF[]
Definition ff_other.h:9262
static const char FFUUID_DULCIMER8VB[]
Definition ff_other.h:8368
static const char FFUUID_DULCIAN[]
Definition ff_other.h:8164
static const char FFUUID_LYRE[]
Definition ff_other.h:8496
static const char FFUUID_TAB_GUITAR_7STRING[]
Definition ff_other.h:8609
static const char FFUUID_FLAMENCOGUITAR[]
Definition ff_other.h:8443
static const char FFUUID_MELODICA[]
Definition ff_other.h:7828
static const char FFUUID_MANDOLIN[]
Definition ff_other.h:8362
static const char FFUUID_YUEQIN[]
Definition ff_other.h:8589
static const char FFUUID_OCARINA[]
Definition ff_other.h:7950
static const char FFUUID_APENTEMMA[]
Definition ff_other.h:8851
bool GetTranspose() const
Returns the transposition status of the staff.
Definition ff_other.h:11119
void SetAltSlashDots(bool state)
Sets if dots should be added to slashes in compound meters (for altered layers). This setting is only...
Definition ff_other.h:10866
void SetAltShowOtherSmartShapes(bool state)
Sets if smart shapes should be displayed on layers other than the altered layer.
Definition ff_other.h:10846
static const char FFUUID_GANDINGANAKAYO[]
Definition ff_other.h:8778
static const char FFUUID_ZURLA[]
Definition ff_other.h:8222
static const char FFUUID_TANTAN[]
Definition ff_other.h:8999
static const char FFUUID_CROMORNE[]
Definition ff_other.h:8160
static const char FFUUID_ANGKLUNG[]
Definition ff_other.h:8764
bool GetAllowHiding() const
Returns the "Allow hiding when empty" state. If set, the staff allows "optimization".
Definition finaleframework.cpp:8719
static const char FFUUID_BORDONUA[]
Definition ff_other.h:8400
void SetIgnoreKeySig(bool state)
Sets the "Ignore Key Signature" state for the staff.
Definition ff_other.h:10202
static const char FFUUID_CUICA[]
Definition ff_other.h:9079
Efix32 GetStemsDownVerticalOffsetForBeamEnd() const
Returns the vertical stem offset for the beam of end down stems.
Definition ff_other.h:9753
static const char FFUUID_BIFORA[]
Definition ff_other.h:8156
Efix32 GetStemsUpVerticalOffsetForBeamEnd() const
Returns the vertical stem offset for the beam of end up stems.
Definition ff_other.h:9747
bool GetShowOnlyFirstMeasureClef() const
For tablature notation: returns if the clef should show only on the first measure.
Definition ff_other.h:9804
static const char FFUUID_TENORUKULELE[]
Definition ff_other.h:8376
static const char FFUUID_CASTANETS[]
Definition ff_other.h:9069
static const char FFUUID_ORGAN2STAFF[]
Definition ff_other.h:7822
bool GetTransposeChromatic() const
Returns the chromatic transposition status for the staff.
Definition ff_other.h:9630
static const char FFUUID_PERCACCESSORIES[]
Definition ff_other.h:9029
static const char FFUUID_CRWTH[]
Definition ff_other.h:7741
static const char FFUUID_BULLROARER[]
Definition ff_other.h:9151
void SetVerticalFretOffset(Efix32 value)
For tablature notation: sets the vertical offset for fret numbers.
Definition ff_other.h:10970
static const char FFUUID_BONGODRUMS[]
Definition ff_other.h:8839
static const char FFUUID_TAB_DULCIMER_DAA[]
Definition ff_other.h:8631
static const char FFUUID_PICCOLOOBOE[]
Definition ff_other.h:7996
static const char FFUUID_TAMBURA[]
Definition ff_other.h:8556
static const char FFUUID_POWWOWDRUM[]
Definition ff_other.h:8973
static const char FFUUID_OCTAVEMANDOLIN[]
Definition ff_other.h:8520
static const char FFUUID_CIMBASSO[]
Definition ff_other.h:8308
bool GetShowTies() const
Returns true if ties should be displayed for the staff.
Definition ff_other.h:9759
static const char FFUUID_SYNTHLEAD[]
Definition ff_other.h:7836
static const char FFUUID_BULGARIANTAMBURA[]
Definition ff_other.h:8404
bool GetShowTimeSignatures() const
Returns true if the time signature should be displayed for the staff.
Definition ff_other.h:9435
STAFFNOTATION_STYLE
Styles for the FCStaff::GetNotationStyle() and FCStaff::SetNotationStyle() methods....
Definition ff_other.h:9308
@ STAFFNOTATION_TABLATURE
Definition ff_other.h:9316
@ STAFFNOTATION_PERCUSSION
Definition ff_other.h:9313
@ STAFFNOTATION_NORMAL
Definition ff_other.h:9310
static const char FFUUID_KETUKGAMELAN[]
Definition ff_other.h:9121
static const char FFUUID_GUZHENG[]
Definition ff_other.h:8462
static const char FFUUID_TAB_GUITAR_DROPD[]
Definition ff_other.h:8605
static const char FFUUID_TROMBAMARINA[]
Definition ff_other.h:7795
static const char FFUUID_TAB_VIHUELA[]
Definition ff_other.h:8653
static const char FFUUID_ZITHER[]
Definition ff_other.h:8380
static const char FFUUID_GONGAGENGGAMELAN[]
Definition ff_other.h:9113
bool GetAltSlashDots() const
Returns if dots should be added to slashes in compound meters (for altered layers)....
Definition ff_other.h:9980
static const char FFUUID_BOLON[]
Definition ff_other.h:8398
bool GetStemsNoteheadEndFixedToStaff() const
Returns the value of "Use Vertical Offset For Notehead End Of Stem: Offset From" radio buttons in the...
Definition ff_other.h:9711
static const char FFUUID_TAB_GUITAR_DADGAD[]
Definition ff_other.h:8601
static const char FFUUID_RAINSTICK[]
Definition ff_other.h:9087
bool GetShowScoreTimeSignatures() const
Returns true if the time signature should be displayed for the staff in the score.
Definition ff_other.h:9451
static const char FFUUID_MEZZOSOPRANOSAX[]
Definition ff_other.h:8016
static const char FFUUID_TIMPLE[]
Definition ff_other.h:8563
static const char FFUUID_UILLEANNPIPES[]
Definition ff_other.h:7974
static const char FFUUID_CENGCENGGAMELAN[]
Definition ff_other.h:9111
static const char FFUUID_MAQRUNAH[]
Definition ff_other.h:8136
static const char FFUUID_SISTRE[]
Definition ff_other.h:9258
static const char FFUUID_GANGSAGAMELAN[]
Definition ff_other.h:8738
bool GetBreakRepeatBarlines() const
Returns the "Break repeat barlines between staves" state.
Definition ff_other.h:9528
static const char FFUUID_STROHVIOLIN[]
Definition ff_other.h:7793
static const char FFUUID_ALTOGLOCKENSPIEL[]
Definition ff_other.h:8671
static const char FFUUID_SOPRANORECORDER[]
Definition ff_other.h:7938
static const char FFUUID_STRINGBASS[]
Definition ff_other.h:8360
static const char FFUUID_TIMPANI[]
Definition ff_other.h:8657
static const char FFUUID_DVOJNICEDRONE[]
Definition ff_other.h:8048
static const char FFUUID_GENDERGAMELAN[]
Definition ff_other.h:8740
static const char FFUUID_ONDESMARTENOT[]
Definition ff_other.h:7846
static const char FFUUID_HECKELCLARINA[]
Definition ff_other.h:8128
static const char FFUUID_BELLS[]
Definition ff_other.h:8661
static const char FFUUID_MURCHANG[]
Definition ff_other.h:8798
static const char FFUUID_XIAO[]
Definition ff_other.h:8104
static const char FFUUID_JAWBONE[]
Definition ff_other.h:9222
static const char FFUUID_TAB_GUITAR_DOUBLED[]
Definition ff_other.h:8603
static const char FFUUID_BUFFALODRUM[]
Definition ff_other.h:8869
static const char FFUUID_VOCALS[]
Definition ff_other.h:7867
static const char FFUUID_AIRHORN[]
Definition ff_other.h:9061
static const char FFUUID_JOGIBAJA[]
Definition ff_other.h:8176
static const char FFUUID_TAB_GUITARNONAME[]
Definition ff_other.h:8595
bool GetAltShowLyrics() const
Returns if lyrics should be diplayed on the altered layer.
Definition ff_other.h:9924
static const char FFUUID_EKTARA2[]
Definition ff_other.h:8448
static const char FFUUID_PI[]
Definition ff_other.h:8186
static const char FFUUID_BASICINDIANPERCUSSION[]
Definition ff_other.h:9141
static const char FFUUID_REBEC[]
Definition ff_other.h:7787
static const char FFUUID_BODHRAN[]
Definition ff_other.h:8863
static const char FFUUID_GEMSHORN[]
Definition ff_other.h:8054
static const char FFUUID_SURDO[]
Definition ff_other.h:8989
static const char FFUUID_POLICEWHISTLE[]
Definition ff_other.h:9085
static const char FFUUID_IPU[]
Definition ff_other.h:9220
static const char FFUUID_FLEXATONE_PITCHED[]
Definition ff_other.h:8704
static const char FFUUID_MARACAS[]
Definition ff_other.h:9083
static const char FFUUID_GHATAM[]
Definition ff_other.h:9198
static const char FFUUID_OBOEDACACCIA[]
Definition ff_other.h:8184
static const char FFUUID_TARDRUM[]
Definition ff_other.h:9006
static const char FFUUID_TAB_LUTELETTERS[]
Definition ff_other.h:8641
void SetBreakBarlines(bool state)
Sets the "Break barlines between staves" state.
Definition ff_other.h:10312
static const char FFUUID_STAMP[]
Definition ff_other.h:9268
bool GetShowClefs() const
Returns true if clefs should be displayed for the staff.
Definition ff_other.h:9483
static const char FFUUID_SPLASHCYMBAL[]
Definition ff_other.h:9053
static const char FFUUID_TIBETANSINGINGBOWLS[]
Definition ff_other.h:8812
static const char FFUUID_ASHIKO[]
Definition ff_other.h:8855
static const char FFUUID_SUONA[]
Definition ff_other.h:8212
static const char FFUUID_CHIMTA[]
Definition ff_other.h:9161
bool Save() override
Overloaded version of the Save method, that saves any attached objects.
Definition finaleframework.cpp:8673
static const char FFUUID_SAXHORN[]
Definition ff_other.h:8304
twobyte GetWholeRestPosition() const
Returns the vertical position for the whole rests. This setting is located in the "Staff Setup" dialo...
Definition ff_other.h:9574
static const char FFUUID_LANGELEIK[]
Definition ff_other.h:8494
static const char FFUUID_VIOL[]
Definition ff_other.h:7799
static const char FFUUID_ZILLS[]
Definition ff_other.h:9298
static const char FFUUID_DOUBLECLARINET[]
Definition ff_other.h:8126
static const char FFUUID_FLUTE[]
Definition ff_other.h:7900
static const char FFUUID_SOPRANOVOICE[]
Definition ff_other.h:7857
static const char FFUUID_QUINTTOMS[]
Definition ff_other.h:8827
static const char FFUUID_SOPRANOSAX[]
Definition ff_other.h:7930
static const char FFUUID_LIRONE[]
Definition ff_other.h:7777
bool GetShowRepeats() const
Returns true if repeats should be displayed for the staff.
Definition ff_other.h:9510
static const char FFUUID_PAKHAVAJ[]
Definition ff_other.h:8969
static const char FFUUID_BYZANTINELYRA[]
Definition ff_other.h:7737
static const char FFUUID_GUITAR[]
Definition ff_other.h:8336
static const char FFUUID_CMELODYSAX[]
Definition ff_other.h:8020
static const char FFUUID_LEIQIN[]
Definition ff_other.h:7775
static const char FFUUID_VEENA[]
Definition ff_other.h:8571
static const char FFUUID_CRETANLYRA[]
Definition ff_other.h:7739
static const char FFUUID_TEMPLEBLOCKS[]
Definition ff_other.h:9099
Efix32 GetStemsDownHorizontalOffset() const
Returns the horizontal stem offset for down stems.
Definition ff_other.h:9729
static const char FFUUID_TAMBOURINE[]
Definition ff_other.h:9039
static const char FFUUID_GYIL[]
Definition ff_other.h:8780
static const char FFUUID_CHENDA[]
Definition ff_other.h:8871
bool IsPercussion()
Returns true if the staff is a percussion staff.
Definition ff_other.h:11090
void SetIndependentFontInfo(const FCFontInfo &font)
Sets the FCFontInfo for the alternate notehead font. You must all set SetIndependentFont to true.
Definition ff_other.h:11294
static const char FFUUID_CLARINETTEDAMOUR[]
Definition ff_other.h:8120
static const char FFUUID_GUITARRON[]
Definition ff_other.h:8454
bool GetAltShowSmartShapes() const
Returns if smart shapes should be diplayed n the altered layer.
Definition ff_other.h:9930
static const char FFUUID_TINWHISTLEBFLAT[]
Definition ff_other.h:7960
void SetShowTextRepeats(bool value)
Sets if endings and text repeats should be displayed for the staff.
Definition ff_other.h:10294
bool GetIgnoreKeySig() const
Returns true if "Ignore Key Signature" is set for the staff.
Definition ff_other.h:9396
static const char FFUUID_TAEPYEONGSO[]
Definition ff_other.h:8216
static const char FFUUID_DIPLICA[]
Definition ff_other.h:8124
static const char FFUUID_HAEGEUM[]
Definition ff_other.h:7759
static const char FFUUID_TAMBORITA[]
Definition ff_other.h:8995
static const char FFUUID_AGOGOBLOCK[]
Definition ff_other.h:9131
static const char FFUUID_TUBULARBELLS[]
Definition ff_other.h:8679
static const char FFUUID_HOSHO[]
Definition ff_other.h:9212
static const char FFUUID_TAR_PLUCKED[]
Definition ff_other.h:8559
static const char FFUUID_BASSETHORN[]
Definition ff_other.h:8006
static const char FFUUID_BASSDRUM[]
Definition ff_other.h:8819
static const char FFUUID_BASSMETALLOPHONE[]
Definition ff_other.h:8726
__FCStaffBase::ALTERNATE_STAFF GetAltNotationStyle()
Returns the alternate notation style for the staff.
Definition ff_other.h:9901
static const char FFUUID_SANZA[]
Definition ff_other.h:8804
static const char FFUUID_DULCIMER[]
Definition ff_other.h:8364
static const char FFUUID_DOIRA[]
Definition ff_other.h:9183
static const char FFUUID_AGUNG[]
Definition ff_other.h:9133
void Make0LineFullBarlineStaff()
Fills the necessary values in the Staff Setup dialog to make a staff without staff lines with full-le...
Definition ff_other.h:11248
static const char FFUUID_CAJON[]
Definition ff_other.h:9067
void SetWholeRestPosition(twobyte position)
Sets the vertical position for the whole rests. This setting is located in the "Staff Setup" dialog b...
Definition ff_other.h:10370
static const char FFUUID_KNOTWEEDFLUTE[]
Definition ff_other.h:8066
static const char FFUUID_NAAL[]
Definition ff_other.h:8949
static const char FFUUID_BALAPHON[]
Definition ff_other.h:8770
static const char FFUUID_REEDCONTRABASS[]
Definition ff_other.h:8194
static const char FFUUID_TAB_LUTEITALIAN[]
Definition ff_other.h:8639
static const char FFUUID_CONTRABASSFLUTE[]
Definition ff_other.h:7982
static const char FFUUID_MUSICALBOW[]
Definition ff_other.h:8516
static const char FFUUID_HELICON[]
Definition ff_other.h:8314
bool InstrumentMatchesUUID(const char *pszUUID)
Returns true if the UUID string matches the instrument UUID for the staff.
Definition ff_other.h:11422
static const char FFUUID_DHOL[]
Definition ff_other.h:8885
void SetDoubleWholeRestPosition(twobyte position)
Sets the vertical position for the double whole rests. This setting is located in the "Staff Setup" d...
Definition ff_other.h:10380
static const char FFUUID_HICHIRIKI[]
Definition ff_other.h:8172
static const char FFUUID_BAROQUETRUMPET[]
Definition ff_other.h:8292
static const char FFUUID_UCHIWADAIKO[]
Definition ff_other.h:9018
static const char FFUUID_KUTIYAPI[]
Definition ff_other.h:8492
static const char FFUUID_SAMPHO[]
Definition ff_other.h:8983
static const char FFUUID_CHACHABELLS[]
Definition ff_other.h:9155
static const char FFUUID_KUDUM[]
Definition ff_other.h:8937
static const char FFUUID_SLIDETRUMPET[]
Definition ff_other.h:8306
static const char FFUUID_AGOGOBELLS[]
Definition ff_other.h:9059
static const char FFUUID_OKEDODAIKO[]
Definition ff_other.h:8965
static const char FFUUID_SOPILA[]
Definition ff_other.h:8206
static const char FFUUID_UDAKU[]
Definition ff_other.h:9020
bool GetFretLetters() const
For tablature notation: returns if fret letters should be used.
Definition ff_other.h:9813
static const char FFUUID_CHABARA[]
Definition ff_other.h:9157
static const char FFUUID_CYMBALS[]
Definition ff_other.h:9043
static const char FFUUID_ALTOXYLOPHONE[]
Definition ff_other.h:8687
static const char FFUUID_MODERNTAROGATO[]
Definition ff_other.h:8148
static const char FFUUID_KAMANCHA[]
Definition ff_other.h:7767
bool GetRedisplayOtherLayerAccidentals() const
Returns the "Redisplay accidentals in other layers within measures" state.
Definition ff_other.h:10018
twobyte GetTransposeAlteration() const
Returns the transposition key alteration.
Definition finaleframework.cpp:8731
static const char FFUUID_BELL_LYRE[]
Definition ff_other.h:8693
static const char FFUUID_KENDANGGAMELAN[]
Definition ff_other.h:8929
static const char FFUUID_GUBAN[]
Definition ff_other.h:9204
static const char FFUUID_DRUMSET[]
Definition ff_other.h:8821
STAFFSTEMDIRS
Options for the directions in which the staff displays note stems.
Definition ff_other.h:9324
@ STAFFSTEMDIR_ALWAYS_UP
Definition ff_other.h:9329
@ STAFFSTEMDIR_ALWAYS_DOWN
Definition ff_other.h:9332
@ STAFFSTEMDIR_DEFAULT
Definition ff_other.h:9326
static const char FFUUID_CHROMANOTESINSTRUMENTS[]
Definition ff_other.h:8697
static const char FFUUID_HNE[]
Definition ff_other.h:8174
static const char FFUUID_BASSXYLOPHONE[]
Definition ff_other.h:8689
static const char FFUUID_SRALAI[]
Definition ff_other.h:8210
static const char FFUUID_TAB_BANJO_DOUBLEC[]
Definition ff_other.h:8619
static const char FFUUID_SAKARA[]
Definition ff_other.h:8981
static const char FFUUID_DANTAMTHAPLUC[]
Definition ff_other.h:8424
void SetIndependentKeySig(bool state)
Sets the state of independent key sigs for the staff.
Definition ff_other.h:10691
static const char FFUUID_KANTILGAMELAN[]
Definition ff_other.h:8744
void SetShowRests(bool value)
Sets if rests should be displayed for the staff.
Definition ff_other.h:10472
static const char FFUUID_ARPEGGIONE[]
Definition ff_other.h:7733
static const char FFUUID_KULINTANGATINIOK[]
Definition ff_other.h:8788
static const char FFUUID_HYOUSHIGI[]
Definition ff_other.h:9214
static const char FFUUID_DONDO[]
Definition ff_other.h:8891
static const char FFUUID_BANDONEON[]
Definition ff_other.h:7968
static const char FFUUID_DARABUKA[]
Definition ff_other.h:8881
static const char FFUUID_BALAFON[]
Definition ff_other.h:8768
static const char FFUUID_DIZI[]
Definition ff_other.h:8038
static const char FFUUID_SHIMEDAIKO[]
Definition ff_other.h:8987
static const char FFUUID_ALTOMETALLOPHONE[]
Definition ff_other.h:8724
static const char FFUUID_KENONGGAMELAN[]
Definition ff_other.h:9119
static const char FFUUID_ERXIAN[]
Definition ff_other.h:7751
static const char FFUUID_CLAVES[]
Definition ff_other.h:9075
static const char FFUUID_INGOMA[]
Definition ff_other.h:8919
static const char FFUUID_DABAKAN[]
Definition ff_other.h:8875
static const char FFUUID_CONCHSHELL[]
Definition ff_other.h:8322
static const char FFUUID_HORNEFLAT[]
Definition ff_other.h:8272
static const char FFUUID_MELLOPHONE[]
Definition ff_other.h:8244
static const char FFUUID_JARANAMOSQUITO[]
Definition ff_other.h:8472
static const char FFUUID_DOUBLEBELLEUPHONIUM[]
Definition ff_other.h:8310
static const char FFUUID_PUNGISNAKECHARMER[]
Definition ff_other.h:8190
static const char FFUUID_TAB_TENORBANJO[]
Definition ff_other.h:8613
void SetFretLetters(bool state)
For tablature notation: sets if sets letters should be used.
Definition ff_other.h:10639
twobyte GetStemReversalPosition() const
Returns the stem reversal position offset for the staff. This setting is located in the "Staff Setup"...
Definition ff_other.h:9588
static const char FFUUID_EWEDRUMKPANLOGO1LARGE[]
Definition ff_other.h:8901
bool SaveFullNameString(FCString *pString)
Saves the full string. A full name text block ID must exist for the staff, otherwise this method will...
Definition finaleframework.cpp:9004
static const char FFUUID_SYNTHPAD[]
Definition ff_other.h:7834
static const char FFUUID_PICCOLOCLARINET[]
Definition ff_other.h:8010
static const char FFUUID_LIKEMBE[]
Definition ff_other.h:8792
static const char FFUUID_SETAR[]
Definition ff_other.h:8552
static const char FFUUID_TROMPETACHINA[]
Definition ff_other.h:8220
static const char FFUUID_GLOCKENSPIEL[]
Definition ff_other.h:8667
bool GetShowNoteColors() const
Returns if the staff should display note colors.
Definition ff_other.h:9547
static const char FFUUID_SLENDROPANERUSGAMELAN[]
Definition ff_other.h:8758
static const char FFUUID_TRUMPETBFLAT[]
Definition ff_other.h:8234
void SetTransposeInterval(twobyte value)
Sets the transposition interval.
Definition finaleframework.cpp:8906
bool GetStemsUseVerticalOffsetForNoteheadEnd() const
Returns the value of "Use Vertical Offset For Notehead End Of Stem" checkbox in the Staff Stem Settin...
Definition ff_other.h:9700
static const char FFUUID_VIOLASECTION[]
Definition ff_other.h:7717
static const char FFUUID_MORINKHUUR[]
Definition ff_other.h:7779
static const char FFUUID_TENORDRUM[]
Definition ff_other.h:8823
static const char FFUUID_TARKA[]
Definition ff_other.h:8096
static const char FFUUID_FISCORN[]
Definition ff_other.h:8298
static const char FFUUID_RIDECYMBAL[]
Definition ff_other.h:9051
static const char FFUUID_MANJEERA[]
Definition ff_other.h:9246
static const char FFUUID_CHANCHIKI[]
Definition ff_other.h:9159
twobyte GetTransposeInterval() const
Returns the transposition interval.
Definition finaleframework.cpp:8887
static const char FFUUID_VIHUELAMEXICO[]
Definition ff_other.h:8575
CMPER GetAbbreviatedNameID()
Returns the text block ID for the abbreviated name. Usually not needed, use CreateAbbreviatedNameStri...
Definition ff_other.h:10047
static const char FFUUID_CLARINETA[]
Definition ff_other.h:7912
static const char FFUUID_MALLETS[]
Definition ff_other.h:8659
static const char FFUUID_HIRADAIKO[]
Definition ff_other.h:8915
static const char FFUUID_CELLO[]
Definition ff_other.h:7711
static const char FFUUID_GHUNGROO[]
Definition ff_other.h:9200
static const char FFUUID_DAIBYOSI[]
Definition ff_other.h:8877
static const char FFUUID_TIMBALEBELL[]
Definition ff_other.h:9284
static const char FFUUID_BARITONESAX[]
Definition ff_other.h:7936
static const char FFUUID_AGUNGATAMLANG[]
Definition ff_other.h:9135
static const char FFUUID_FINGERCYMBALS[]
Definition ff_other.h:9045
static const char FFUUID_PALENDAG[]
Definition ff_other.h:8078
static const char FFUUID_FUJARA[]
Definition ff_other.h:8052
twobyte GetTopRepeatDotPosition() const
Returns the top repeat dot position for the staff. This setting is located in the "Staff Setup" dialo...
Definition ff_other.h:9615
void SetIndependentTimeSig(bool state)
Sets the independent time sigs state for the staff.
Definition ff_other.h:10208
static const char FFUUID_TRIANGLE[]
Definition ff_other.h:9041
static const char FFUUID_TRUMPETD[]
Definition ff_other.h:8238
static const char FFUUID_XAPHOON[]
Definition ff_other.h:8024
static const char FFUUID_QUENA[]
Definition ff_other.h:8080
void SetShowRepeats(bool value)
Sets if repeats should be displayed for the staff.
Definition ff_other.h:10300
void SetShowBeams(bool value)
Returns true if beams should be displayed for the staff.
Definition ff_other.h:10492
static const char FFUUID_CLAP[]
Definition ff_other.h:9071
static const char FFUUID_CHUDAIKO[]
Definition ff_other.h:8873
static const char FFUUID_SURNAY[]
Definition ff_other.h:8214
static const char FFUUID_CLASSICALGUITAR[]
Definition ff_other.h:8342
static const char FFUUID_BOUZOUKI[]
Definition ff_other.h:8402
bool GetShowTuplets() const
For tablature notation: returns if tuplets should show or not.
Definition ff_other.h:9795
bool GetShowMeasureNumbers() const
Returns true if measure numbers should be displayed for the staff.
Definition ff_other.h:9415
STAFF_HIDEMODES GetHideMode() const
Returns how the staff should be hidden.
Definition finaleframework.cpp:8932
static const char FFUUID_EWEDRUMATOKE[]
Definition ff_other.h:9185
static const char FFUUID_MOODSWINGER[]
Definition ff_other.h:8514
void SetBottomBarlineOffset(Evpu16 distance)
Sets the bottom barline offset, in EVPUs. This parameter controls how far the barlines extends downwa...
Definition ff_other.h:10993
static const char FFUUID_PENNYWHISTLED[]
Definition ff_other.h:7954
static const char FFUUID_VICHITRAVEENA[]
Definition ff_other.h:8573
ALTERNATE_STAFF
Alternate staff notation styles for FCStaff::GetAltNotationStyle() and FCStaff::SetAltNotationStyle()...
Definition ff_other.h:9341
@ ALTSTAFF_RHYTHMIC
Definition ff_other.h:9350
@ ALTSTAFF_BLANKNOTATIONRESTS
Definition ff_other.h:9359
@ ALTSTAFF_SLASHBEATS
Definition ff_other.h:9347
@ ALTSTAFF_NORMAL
Definition ff_other.h:9344
@ ALTSTAFF_BLANKNOTATION
Definition ff_other.h:9362
@ ALTSTAFF_TWOBARREPEAT
Definition ff_other.h:9356
@ ALTSTAFF_ONEBARREPEAT
Definition ff_other.h:9353
static const char FFUUID_SARONBARUNGGAMELAN[]
Definition ff_other.h:8752
static const char FFUUID_SOPRANINORECORDER[]
Definition ff_other.h:7940
void SetStemsDownVerticalOffsetForNoteheadEnd(Efix32 value)
Sets the vertical stem offset for the notehead end of down stems.
Definition ff_other.h:10568
static const char FFUUID_UKULELE[]
Definition ff_other.h:8374
static const char FFUUID_BO[]
Definition ff_other.h:9145
bool GetShowNoteShapes() const
Returns if the staff should display note colors.
Definition ff_other.h:9553
static const char FFUUID_DOUBLEBASSSECTION[]
Definition ff_other.h:7723
static const char FFUUID_BIANQING[]
Definition ff_other.h:8772
static const char FFUUID_TAMTAM[]
Definition ff_other.h:9055
void SetShowOnlyFirstMeasureClef(bool state)
For tablature notation: sets if the clef should show only on the first measure.
Definition ff_other.h:10630
static const char FFUUID_WHIP[]
Definition ff_other.h:9105
static const char FFUUID_ALPHORN[]
Definition ff_other.h:8280
static const char FFUUID_AEOLIANHARP[]
Definition ff_other.h:9127
static const char FFUUID_DOUBLEBASS[]
Definition ff_other.h:7713
static const char FFUUID_HORNF_WWQUINTET[]
Definition ff_other.h:7970
static const char FFUUID_TRUMPETC[]
Definition ff_other.h:8236
static const char FFUUID_CELLOSECTION[]
Definition ff_other.h:7719
static const char FFUUID_BOUGARABOU[]
Definition ff_other.h:8867
static const char FFUUID_PANCLAPPERS[]
Definition ff_other.h:9248
static const char FFUUID_TAB_BANJO_C[]
Definition ff_other.h:8615
static const char FFUUID_REBAB[]
Definition ff_other.h:7785
static const char FFUUID_KALIMBA[]
Definition ff_other.h:8720
static const char FFUUID_SANXIAN[]
Definition ff_other.h:8542
static const char FFUUID_CONTRABASSCLARINET[]
Definition ff_other.h:7922
static const char FFUUID_DAMROO[]
Definition ff_other.h:8879
static const char FFUUID_CORNETTO[]
Definition ff_other.h:8296
static const char FFUUID_CROTALES[]
Definition ff_other.h:8665
static const char FFUUID_BAGPIPES[]
Definition ff_other.h:7972
static const char FFUUID_VIOLOTTA[]
Definition ff_other.h:7807
static const char FFUUID_HANDBELLS_BCLEF[]
Definition ff_other.h:8714
static const char FFUUID_TENORBANJO[]
Definition ff_other.h:8350
static const char FFUUID_DJEMBE[]
Definition ff_other.h:8837
static const char FFUUID_VIOLONCELLOPICCOLO[]
Definition ff_other.h:7805
void SetTransposeChromatic(bool state)
Sets the chromatic transposition status for the staff.
Definition ff_other.h:10444
static const char FFUUID_WASHTUBBASS[]
Definition ff_other.h:8579
static const char FFUUID_CONTRABASSSAX[]
Definition ff_other.h:8028
bool SaveAbbreviatedNameString(FCString *pString)
Saves the abbreviated string. A abbreviated name text block ID must exist for the staff,...
Definition finaleframework.cpp:9012
static const char FFUUID_IGIHUMURIZO[]
Definition ff_other.h:8917
bool GetShowRests() const
Returns true if rests should be displayed for the staff.
Definition ff_other.h:9651
static const char FFUUID_TAMA[]
Definition ff_other.h:8993
static const char FFUUID_TEBYOSHI[]
Definition ff_other.h:9272
static const char FFUUID_EWEDRUMKAGAN[]
Definition ff_other.h:8899
bool GetStemsUseVerticalOffsetForBeamEnd() const
Returns the value of "Use Vertical Offset For Beam End Of Stem (Offset From Staff)" checkbox in the S...
Definition ff_other.h:9717
bool GetShowChords() const
Returns true if chords should be displayed for the staff.
Definition ff_other.h:9490
static const char FFUUID_TIMBALES[]
Definition ff_other.h:8847
static const char FFUUID_STEELGUITAR[]
Definition ff_other.h:8346
static const char FFUUID_TENOROVERTONEFLUTE[]
Definition ff_other.h:8098
static const char FFUUID_DESCANTRECORDER[]
Definition ff_other.h:7948
static const char FFUUID_SPOONS[]
Definition ff_other.h:9097
static const char FFUUID_ACOUSTICBASS[]
Definition ff_other.h:8352
static const char FFUUID_NAGARA[]
Definition ff_other.h:8953
static const char FFUUID_BASSBAROTONEVOICE[]
Definition ff_other.h:7879
static const char FFUUID_CUATRO[]
Definition ff_other.h:8418
static const char FFUUID_DUFF[]
Definition ff_other.h:8895
bool GetBreakBarlines() const
Returns the "Break barlines between staves" state.
Definition ff_other.h:9522
static const char FFUUID_PELOGPANERUSGAMELAN[]
Definition ff_other.h:8746
static const char FFUUID_SHEPHERDSPIPE[]
Definition ff_other.h:8086
static const char FFUUID_HARPGUITAR[]
Definition ff_other.h:8464
static const char FFUUID_TASHA[]
Definition ff_other.h:9008
static const char FFUUID_ALBOGUE[]
Definition ff_other.h:8108
static const char FFUUID_MADAL[]
Definition ff_other.h:8941
Evpu16 GetTopBarlineOffset() const
Returns the top barline offset, in EVPUs. This parameter controls how far the barlines extends upward...
Definition ff_other.h:10145
void SetAltShowOtherLyrics(bool state)
Sets if lyrics should be displayed on layers other than the altered layer.
Definition ff_other.h:10840
static const char FFUUID_ALTOHORN[]
Definition ff_other.h:8282
bool GetShowFretboards() const
Returns true if fretboards should be displayed for the staff.
Definition ff_other.h:9832
static const char FFUUID_AHOKO[]
Definition ff_other.h:9137
void SetInstrumentUUID(const char *pszUUID)
Sets a predefined UUID for the staff.
Definition ff_other.h:11025
static const char FFUUID_UDU[]
Definition ff_other.h:9296
void SetShowStaffLines(bool value)
Sets if staff lines should be displayed for the staff.
Definition finaleframework.cpp:8780
static const char FFUUID_CHIMES[]
Definition ff_other.h:8663
static const char FFUUID_PICCOLO[]
Definition ff_other.h:7898
static const char FFUUID_CHALUMEAU[]
Definition ff_other.h:8118
static const char FFUUID_ALGAITA[]
Definition ff_other.h:8154
static const char FFUUID_ALTOCRUMHORN[]
Definition ff_other.h:8112
static const char FFUUID_MANDORE[]
Definition ff_other.h:8506
static const char FFUUID_BOMBO[]
Definition ff_other.h:8865
static const char FFUUID_BATA[]
Definition ff_other.h:8859
static const char FFUUID_CRYSTALGLASSES[]
Definition ff_other.h:8701
int CalcTopStaffLinePosition(bool forledgerlines=false) const
Calculates the staff position of the top staff line. For standard 5-lines staves, this value is 0.
Definition finaleframework.cpp:8960
bool GetIndependentTimeSig() const
Returns true if independent time signatures is set for the staff.
Definition ff_other.h:9402
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:7693
static const char FFUUID_SNAP[]
Definition ff_other.h:9266
static const char FFUUID_CONCERTINA[]
Definition ff_other.h:7966
static const char FFUUID_TINGSHA[]
Definition ff_other.h:9288
static const char FFUUID_JARANAJAROCHO[]
Definition ff_other.h:8470
static const char FFUUID_DIDDLEYBOW[]
Definition ff_other.h:8430
static const char FFUUID_PUEBLODRUM[]
Definition ff_other.h:8975
static const char FFUUID_GONG[]
Definition ff_other.h:9057
static const char FFUUID_HANDCYMBAL[]
Definition ff_other.h:9206
static const char FFUUID_KHIM[]
Definition ff_other.h:8484
static const char FFUUID_DUTAR[]
Definition ff_other.h:8436
FCString * CreateTrimmedAbbreviatedNameString()
Creates a string object of the abbreviated staff name without any font information.
Definition finaleframework.cpp:9125
twobyte GetTransposeClefIndex() const
Returns the clef state in the transposition dialog. This value is valid only of GetTransposeUseClef r...
Definition ff_other.h:9989
static const char FFUUID_CONTRAALTOFLUTE[]
Definition ff_other.h:7978
static const char FFUUID_HORNPIPE[]
Definition ff_other.h:8008
static const char FFUUID_WINDMACHINE[]
Definition ff_other.h:9107
static const char FFUUID_BASSFLUTE[]
Definition ff_other.h:7980
static const char FFUUID_VIOLIN[]
Definition ff_other.h:7707
static const char FFUUID_SOPRILLO[]
Definition ff_other.h:8018
static const char FFUUID_AULOCHROME[]
Definition ff_other.h:8022
static const char FFUUID_TUBAX[]
Definition ff_other.h:8032
static const char FFUUID_FIDDLE[]
Definition ff_other.h:7753
static const char FFUUID_SHEKERE[]
Definition ff_other.h:9256
static const char FFUUID_OPHICLEIDE[]
Definition ff_other.h:8316
static const char FFUUID_SANGBAN[]
Definition ff_other.h:8985
static const char FFUUID_FIFE[]
Definition ff_other.h:7990
static const char FFUUID_ALBOKA[]
Definition ff_other.h:8110
static const char FFUUID_TICTOCBLOCK[]
Definition ff_other.h:9282
static const char FFUUID_CONTRABASSOON[]
Definition ff_other.h:7926
void SetAltShowArticulations(bool state)
Sets if articulations should be diplayed on the alternate layer.
Definition ff_other.h:10804
static const char FFUUID_JAWHARP[]
Definition ff_other.h:8718
static const char FFUUID_DAHU[]
Definition ff_other.h:7743
static const char FFUUID_GUITJO[]
Definition ff_other.h:8456
static const char FFUUID_BASSDRUMS_5LINE[]
Definition ff_other.h:8835
static const char FFUUID_BERIMBAU[]
Definition ff_other.h:9143
static const char FFUUID_PIRI[]
Definition ff_other.h:8188
static const char FFUUID_TOMBAK[]
Definition ff_other.h:9012
static const char FFUUID_DOUBLECONTRABASSFLUTE[]
Definition ff_other.h:7984
static const char FFUUID_HARP[]
Definition ff_other.h:8332
void SetFlatBeams(bool state)
Sets the "Flat beams" state.
Definition ff_other.h:10615
static const char FFUUID_EWEDRUMKPANLOGO3COMBO[]
Definition ff_other.h:8905
static const char FFUUID_WHAMOLA[]
Definition ff_other.h:8581
void SetShowStems(bool value)
Sets if stems should be displayed for the staff.
Definition ff_other.h:10484
static const char FFUUID_AJAENG[]
Definition ff_other.h:7731
static const char FFUUID_KOMUZ[]
Definition ff_other.h:8488
static const char FFUUID_JARANATERCERA[]
Definition ff_other.h:8476
static const char FFUUID_LAUNEDDAS[]
Definition ff_other.h:8134
static const char FFUUID_PENYACAHGAMELAN[]
Definition ff_other.h:8750
static const char FFUUID_SOPRANINOSAX[]
Definition ff_other.h:8014
static const char FFUUID_NAQARA[]
Definition ff_other.h:8955
static const char FFUUID_GUAN[]
Definition ff_other.h:8168
static const char FFUUID_TENORTROMBONE[]
Definition ff_other.h:8276
void SetShowAugmentationDots(bool value)
Sets if augmentation dots should be displayed for the staff.
Definition ff_other.h:10325
static const char FFUUID_BASSETCLARINET[]
Definition ff_other.h:8004
static const char FFUUID_BELLTREE[]
Definition ff_other.h:9035
static const char FFUUID_VIOLONCELLOSECTION[]
Definition ff_other.h:7721
static const char FFUUID_BIWA[]
Definition ff_other.h:8396
static const char FFUUID_NATIVELOGDRUM[]
Definition ff_other.h:8957
void SetLineCount(twobyte value)
Sets the number of staff lines. Please note that it's usually more efficient to call the 'Make' metho...
Definition finaleframework.cpp:8813
void SetShowBarlines(bool value)
Sets if barlines should be displayed for the staff.
Definition ff_other.h:10287
static const char FFUUID_SALLANEH[]
Definition ff_other.h:8536
static const char FFUUID_MRIDANGAM[]
Definition ff_other.h:8947
static const char FFUUID_NOSEFLUTE[]
Definition ff_other.h:8076
static const char FFUUID_RATTLECOG[]
Definition ff_other.h:9252
static const char FFUUID_GAOHU[]
Definition ff_other.h:7755
Efix32 GetLineSpacing() const
Returns the distance between the staff lines, in EFIXes.
Definition ff_other.h:9891
static const char FFUUID_TAB_SITAR_KHAN[]
Definition ff_other.h:8649
static const char FFUUID_MOROCCODRUM[]
Definition ff_other.h:8945
static const char FFUUID_XYLOPHONE[]
Definition ff_other.h:8683
static const char FFUUID_TAB_BANJO_GMODAL[]
Definition ff_other.h:8621
static const char FFUUID_VENU[]
Definition ff_other.h:8102
void SetAltShowLyrics(bool state)
Sets if lyrics should be diplayed on the altered layer.
Definition ff_other.h:10810
static const char FFUUID_KAGUL[]
Definition ff_other.h:9226
static const char FFUUID_TAB_GAMBA[]
Definition ff_other.h:8637
static const char FFUUID_TAB_UKULELE[]
Definition ff_other.h:8651
static const char FFUUID_THAVIL[]
Definition ff_other.h:9010
void SetNotationStyle(STAFFNOTATION_STYLE value)
Sets the notation style for the staff.
Definition ff_other.h:10661
static const char FFUUID_HORNF[]
Definition ff_other.h:8246
static const char FFUUID_KEMPULGAMELAN[]
Definition ff_other.h:9115
static const char FFUUID_CHING[]
Definition ff_other.h:9171
static const char FFUUID_BAGLAMA[]
Definition ff_other.h:8384
static const char FFUUID_PICCOLOHECKELPHONE[]
Definition ff_other.h:7998
static const char FFUUID_DOBRO[]
Definition ff_other.h:8432
static const char FFUUID_KENBAU[]
Definition ff_other.h:8178
static const char FFUUID_DANTRANH[]
Definition ff_other.h:8426
static const char FFUUID_ZURNA[]
Definition ff_other.h:8224
static const char FFUUID_TRYCHEL[]
Definition ff_other.h:9294
static const char FFUUID_HECKELPHONE[]
Definition ff_other.h:8000
static const char FFUUID_TAB_BASSGUITAR_5[]
Definition ff_other.h:8627
void Make1LineShortBarlineStaff()
Fills the necessary values in the Staff Setup dialog to make a 1-line staff with short-length barline...
Definition ff_other.h:11226
static const char FFUUID_YANGQIN[]
Definition ff_other.h:8585
static const char FFUUID_SLIDEWHISTLE[]
Definition ff_other.h:8730
static const char FFUUID_SUBCONTRABASSSAX[]
Definition ff_other.h:8030
static const char FFUUID_PENNYWHISTLEG[]
Definition ff_other.h:7956
static const char FFUUID_CHIMETREE[]
Definition ff_other.h:9033
static const char FFUUID_VIOLINOPICCOLO[]
Definition ff_other.h:7803
static const char FFUUID_SNARELINE[]
Definition ff_other.h:8833
void SetShowTies(bool state)
Sets if ties should be displayed for the staff.
Definition ff_other.h:10586
static const char FFUUID_WOODBLOCKS[]
Definition ff_other.h:9109
static const char FFUUID_VIOLADAGAMBA[]
Definition ff_other.h:7801
void SetNoKeySigShowAccidentals(bool state)
Sets the "Hide key signature & show all accidentals" state, available in the Finale 2014 Score Manage...
Definition ff_other.h:10932
static const char FFUUID_FLAGEOLET[]
Definition ff_other.h:8050
static const char FFUUID_DAFF[]
Definition ff_other.h:9175
static const char FFUUID_GOME[]
Definition ff_other.h:9202
bool SaveNewAbbreviatedNameString(FCString *pString)
Saves the abbreviated string as a new staff name block. The staff object must be saved afterwards,...
Definition finaleframework.cpp:9030
static const char FFUUID_MAROVANY[]
Definition ff_other.h:8510
static const char FFUUID_TAB_DULCIMER_DAD[]
Definition ff_other.h:8635
void SetShowBottomRepeatDot(bool state)
Sets if the bottom repeat dot should be displayed for the staff. This setting is located in the "Staf...
Definition ff_other.h:10411
static const char FFUUID_PSALTERY[]
Definition ff_other.h:8528
static const char FFUUID_BASSHARMONICA[]
Definition ff_other.h:7964
static const char FFUUID_BARITONEVOICE[]
Definition ff_other.h:7863
static const char FFUUID_BASSOON[]
Definition ff_other.h:7924
static const char FFUUID_ALTOFLUTE[]
Definition ff_other.h:7902
bool GetAltShowOtherLyrics() const
Returns if lyrics should be displayed on layers other than the altered layer.
Definition ff_other.h:9954
static const char FFUUID_KAYAGUM[]
Definition ff_other.h:8482
static const char FFUUID_CHINESEPERCUSSIONENSEMBLE[]
Definition ff_other.h:9169
static const char FFUUID_OCTOBASS[]
Definition ff_other.h:7783
static const char FFUUID_MUSICALSAW[]
Definition ff_other.h:8728
static const char FFUUID_DIPLE[]
Definition ff_other.h:8042
bool GetAltShowOtherNotes() const
Returns if notes should be displayed on layers other than the altered layer.
Definition ff_other.h:9942
static const char FFUUID_KOBZA[]
Definition ff_other.h:8486
static const char FFUUID_SHINOBUE[]
Definition ff_other.h:8088
static const char FFUUID_ALTOCLARINET[]
Definition ff_other.h:7916
static const char FFUUID_HECKELPHONECLARINET[]
Definition ff_other.h:8130
static const char FFUUID_CLAPPER[]
Definition ff_other.h:9073
FCFontInfo * CreateIndependentFontInfo() const
Creates a FCFontInfo object for the alternate notehead font. GetIndependentFont must be true for this...
Definition ff_other.h:11272
static const char FFUUID_TAB_GUITAR[]
Definition ff_other.h:8593
twobyte GetLowestFret() const
For tablature notation, returns the default lowest fret number.
Definition ff_other.h:10103
static const char FFUUID_HARMONICA[]
Definition ff_other.h:7962
static const char FFUUID_CHITARRABATTENTE[]
Definition ff_other.h:8410
static const char FFUUID_SOPRANOGLOCKENSPIEL[]
Definition ff_other.h:8669
static const char FFUUID_CLARINETBFLAT[]
Definition ff_other.h:7910
void MakeStandard5LineStaff()
Fills the necessary values in the Staff Setup dialog to make a standard 5-line staff.
Definition ff_other.h:11182
static const char FFUUID_KUHLOHORN[]
Definition ff_other.h:8300
static const char FFUUID_DIDGERIDOO[]
Definition ff_other.h:8284
static const char FFUUID_TOERE[]
Definition ff_other.h:9290
static const char FFUUID_YAZHENG[]
Definition ff_other.h:8587
static const char FFUUID_BARYTON[]
Definition ff_other.h:7735
static const char FFUUID_VALIHA[]
Definition ff_other.h:8569
static const char FFUUID_EWEDRUMGANGOKUI[]
Definition ff_other.h:9189
static const char FFUUID_BIANZHONG[]
Definition ff_other.h:8774
static const char FFUUID_WINDCHIMES[]
Definition ff_other.h:9031
void SetAltNotationLayer(int value)
Sets the 1-based layer that is used for the alternate notation.
Definition ff_other.h:10789
static const char FFUUID_ATABAQUE[]
Definition ff_other.h:8857
static const char FFUUID_TAB_GUITAR_G[]
Definition ff_other.h:8607
static const char FFUUID_MANDORA[]
Definition ff_other.h:8504
static const char FFUUID_REQUINTOGUITAR[]
Definition ff_other.h:8530
bool IsTablature()
Returns true if the staff is a tablature staff.
Definition ff_other.h:11100
static const char FFUUID_SAXONETTE[]
Definition ff_other.h:8012
static const char FFUUID_PIPA[]
Definition ff_other.h:8524
FCString * CreateDisplayFullNameString()
Creates a staff name for display purposes.
Definition finaleframework.cpp:9054
static const char FFUUID_LAMELLAPHONE[]
Definition ff_other.h:8790
static const char FFUUID_HYPERBASSFLUTE[]
Definition ff_other.h:7986
static const char FFUUID_ROTOTOMS[]
Definition ff_other.h:8829
static const char FFUUID_ZARB[]
Definition ff_other.h:9022
static const char FFUUID_TUMPONG[]
Definition ff_other.h:8100
static const char FFUUID_TAB_MANDOLIN[]
Definition ff_other.h:8643
static const char FFUUID_TUBA[]
Definition ff_other.h:8258
static const char FFUUID_BABENDIL[]
Definition ff_other.h:9139
static const char FFUUID_KAVAL[]
Definition ff_other.h:8062
static const char FFUUID_ACOUSTICGUITAR[]
Definition ff_other.h:8340
bool GetShowStaffLines() const
Returns true if staff lines should be displayed for the staff.
Definition finaleframework.cpp:8768
static const char FFUUID_TIBETANBELLS[]
Definition ff_other.h:8810
static const char FFUUID_EKTARA1[]
Definition ff_other.h:8441
static const char FFUUID_PIBGORN[]
Definition ff_other.h:8142
void SetShowMeasureNumbers(bool value)
Sets if measure numbers should be displayed for the staff.
Definition ff_other.h:10214
static const char FFUUID_SHAWM[]
Definition ff_other.h:8202
static const char FFUUID_FRETLESSBASS[]
Definition ff_other.h:8358
static const char FFUUID_SERPENT[]
Definition ff_other.h:8318
void SetTransposeSimplifyKey(bool state)
Sets the state of the "Simplify Key Sig" in the transposition dialog box.
Definition ff_other.h:10603
void SetAltNotationDisplayOtherLayerNotes(bool state)
Sets if the non-alternate layers should be displayed or not.
Definition ff_other.h:10592
static const char FFUUID_ARGHUL[]
Definition ff_other.h:8114
bool GetIndependentFont() const
Returns if a independent notehead font should be used for the staff.
Definition ff_other.h:9541
bool GetAltShowOtherSmartShapes() const
Returns if smart shapes should be displayed on layers other than the altered layer.
Definition ff_other.h:9960
static const char FFUUID_KOKYU[]
Definition ff_other.h:7769
static const char FFUUID_VIHUELASPAIN[]
Definition ff_other.h:8577
static const char FFUUID_THEORBO[]
Definition ff_other.h:8561
static const char FFUUID_VUVUZELA[]
Definition ff_other.h:8328
static const char FFUUID_DUMBEK[]
Definition ff_other.h:8897
static const char FFUUID_TALKINGDRUM[]
Definition ff_other.h:8991
static const char FFUUID_KABOSY[]
Definition ff_other.h:8478
void SetShowTopRepeatDot(bool state)
Sets if the top repeat dot should be displayed for the staff. This setting is located in the "Staff S...
Definition ff_other.h:10401
static const char FFUUID_LAVASTONES[]
Definition ff_other.h:9242
void SetStemsUpHorizontalOffset(Efix32 value)
Sets the horizontal stem offset for up stems.
Definition ff_other.h:10550
static const char FFUUID_MIZMAR[]
Definition ff_other.h:8180
static const char FFUUID_GANDINGAN[]
Definition ff_other.h:9194
static const char FFUUID_VIBRAPHONE[]
Definition ff_other.h:8681
static const char FFUUID_CHINESEGONGS[]
Definition ff_other.h:9167
bool GetShowScoreStaffNames() const
Returns true if score staff names should be displayed for the staff.
Definition ff_other.h:9516
void SetShowFretboards(bool value)
Sets if fretboards should be displayed for the staff.
Definition ff_other.h:10459
bool GetAltRhythmStemsUp() const
Returns if stems should be freezes up in rhythmic notation (for altered layers). This setting is only...
Definition ff_other.h:9973
static const char FFUUID_BANJO[]
Definition ff_other.h:8348
static const char FFUUID_TALKBOX[]
Definition ff_other.h:7891
static const char FFUUID_KALAAU[]
Definition ff_other.h:9228
static const char FFUUID_KEMPYANGGAMELAN[]
Definition ff_other.h:9117
static const char FFUUID_SARRUSOPHONE[]
Definition ff_other.h:8200
static const char FFUUID_SOPRANOMETALLOPHONE[]
Definition ff_other.h:8722
void SetTransposeClefIndex(twobyte clefindex)
Sets the clef state in the transposition dialog. This value is valid only of GetTransposeUseClef retu...
Definition ff_other.h:10892
static const char FFUUID_CITTERN[]
Definition ff_other.h:8416
static const char FFUUID_DOUNDOUNBA[]
Definition ff_other.h:8893
static const char FFUUID_HATHELI[]
Definition ff_other.h:9210
static const char FFUUID_OBOE[]
Definition ff_other.h:7904
static const char FFUUID_COUNTERTENORVOICE[]
Definition ff_other.h:7877
static const char FFUUID_KHAENMOUTHORGAN[]
Definition ff_other.h:8226
static const char FFUUID_DEF[]
Definition ff_other.h:9181
const char * GetInstrumentUUID() const
Returns the assigned instrument UUID for the staff.
Definition ff_other.h:10161
static const char FFUUID_JUG[]
Definition ff_other.h:7994
static const char FFUUID_TABLAS[]
Definition ff_other.h:8845
void SetAltRhythmStemsUp(bool state)
Sets if stems should be freezes up in rhythmic notation (for altered layers). This setting is only us...
Definition ff_other.h:10859
static const char FFUUID_BARITONEBC[]
Definition ff_other.h:8254
static const char FFUUID_ORGAN[]
Definition ff_other.h:7820
static const char FFUUID_RUAN[]
Definition ff_other.h:8532
static const char FFUUID_MANDOLA[]
Definition ff_other.h:8502
void SetShowScoreStaffNames(bool value)
Sets if score staff names should be displayed for the staff.
Definition ff_other.h:10306
static const char FFUUID_HOCCHIKU[]
Definition ff_other.h:8056
static const char FFUUID_PICCOLOTRUMPETA[]
Definition ff_other.h:8266
static const char FFUUID_OUD[]
Definition ff_other.h:8522
static const char FFUUID_LOWIRISHWHISTLE[]
Definition ff_other.h:7958
static const char FFUUID_RATTLE[]
Definition ff_other.h:9091
void SetLowestFret(twobyte value)
For tablature notation, set the default lowest fret number.
Definition ff_other.h:10943
void SetShowChords(bool value)
Sets if chords should be displayed for the staff.
Definition ff_other.h:10280
static const char FFUUID_GUIRO[]
Definition ff_other.h:9081
static const char FFUUID_BOOMWHACKERS[]
Definition ff_other.h:8695
static const char FFUUID_CHINESECYMBALS[]
Definition ff_other.h:9165
void SetShowClefs(bool value)
Sets if clefs should be displayed for the staff.
Definition ff_other.h:10273
void SetShowLyrics(bool value)
Sets if lyrics should be displayed for the staff.
Definition ff_other.h:10466
static const char FFUUID_BASSRECORDER[]
Definition ff_other.h:7946
static const char FFUUID_MARIMBASINGLESTAFF[]
Definition ff_other.h:8677
static const char FFUUID_TAB_DULCIMER_DAAUNISON[]
Definition ff_other.h:8633
twobyte GetAltNotationLayer() const
Returns the 1-based layer that is used for the alternate notation.
Definition ff_other.h:9910
static const char FFUUID_TEPONAXTLI[]
Definition ff_other.h:9276
twobyte GetHalfRestPosition() const
Returns the vertical position for the half rests. This setting is located in the "Staff Setup" dialog...
Definition ff_other.h:9560
twobyte GetBottomRepeatDotPosition() const
Returns the bottom repeat dot position for the staff. This setting is located in the "Staff Setup" di...
Definition ff_other.h:9622
static const char FFUUID_ALMGLOCKEN[]
Definition ff_other.h:8762
static const char FFUUID_BASSVOICE[]
Definition ff_other.h:7865
static const char FFUUID_ERHU[]
Definition ff_other.h:7749
static const char FFUUID_GEOMUNGO[]
Definition ff_other.h:8445
static const char FFUUID_HURDYGURDY[]
Definition ff_other.h:7763
static const char FFUUID_DUDUK[]
Definition ff_other.h:8162
static const char FFUUID_AUTOHARP[]
Definition ff_other.h:8370
static const char FFUUID_SHOFAR[]
Definition ff_other.h:8326
static const char FFUUID_VIENNAHORN[]
Definition ff_other.h:8288
static const char FFUUID_EUPHONIUM[]
Definition ff_other.h:8252
bool HasInstrumentAssigned()
Returns true if there is an instrument assigned to the staff.
Definition ff_other.h:11465
void SetFretInstrumentDefID(CMPER newid)
Sets the ID for the tablature instrument (for tablature notation).
Definition ff_other.h:10982
static const char FFUUID_NOHKAN[]
Definition ff_other.h:8074
bool GetIndependentKeySig() const
Returns true if independent key sigs is set for the staff.
Definition ff_other.h:9409
static const char FFUUID_XYLORIMBA[]
Definition ff_other.h:8691
bool GetTransposeUseClef() const
Returns the "Set to clef" state in the transposition dialog.
Definition ff_other.h:9638
void SetTopRepeatDotPosition(twobyte position)
Sets the top repeat dot position for the staff. This setting is located in the "Staff Setup" dialog b...
Definition ff_other.h:10421
static const char FFUUID_DAWURO[]
Definition ff_other.h:9179
static const char FFUUID_JINGLEBELLS[]
Definition ff_other.h:9037
static const char FFUUID_ZHALEIKA[]
Definition ff_other.h:8152
static const char FFUUID_CONTRALTOCLARINET[]
Definition ff_other.h:7918
bool GetFlatBeams() const
Returns the "Flat beams" state.
Definition ff_other.h:9789
static const char FFUUID_DANBAU[]
Definition ff_other.h:8420
void SetAllowHiding(bool state)
Sets the "Allow hiding when empty" state. If set, the staff allows "optimization".
Definition finaleframework.cpp:8725
bool GetNoKeySigShowAccidentals() const
Returns the "Hide key signature & show all accidentals" state, available in the Finale 2014 Score Man...
Definition ff_other.h:10031
static const char FFUUID_TENORRECORDER[]
Definition ff_other.h:7944
void SetStemsUpVerticalOffsetForBeamEnd(Efix32 value)
Sets the vertical stem offset for the beam of end up stems.
Definition ff_other.h:10574
static const char FFUUID_BONGOBELLS[]
Definition ff_other.h:9149
static const char FFUUID_TAB_SITAR_SHANKAR[]
Definition ff_other.h:8647
static const char FFUUID_WAGNERTUBA[]
Definition ff_other.h:8290
static const char FFUUID_TAB_GUITAR_D[]
Definition ff_other.h:8599
static const char FFUUID_CAXIXI[]
Definition ff_other.h:9153
static const char FFUUID_VOICENONAME[]
Definition ff_other.h:7871
static const char FFUUID_INYAHURA[]
Definition ff_other.h:8921
static const char FFUUID_GLASSMARIMBA[]
Definition ff_other.h:8708
void SetTransposeAlteration(twobyte value)
Sets the transposition key alteration when transposition is used.
Definition finaleframework.cpp:8749
static const char FFUUID_KORA[]
Definition ff_other.h:7771
static const char FFUUID_ELECTRICBASS[]
Definition ff_other.h:8356
bool GetAltShowOtherArticulations() const
Returns if articulations should be displayed on layers other than the altered layer.
Definition ff_other.h:9948
static const char FFUUID_STEELDRUMS_BCLEF[]
Definition ff_other.h:8734
static const char FFUUID_GLASSHARMONICA[]
Definition ff_other.h:8706
static const char FFUUID_ROTHPHONE[]
Definition ff_other.h:8198
static const char FFUUID_DANSO[]
Definition ff_other.h:8036
static const char FFUUID_KKWAENGGWARI[]
Definition ff_other.h:9236
static const char FFUUID_TELEVI[]
Definition ff_other.h:9274
static const char FFUUID_TAB_GUITARSTEMS[]
Definition ff_other.h:8597
static const char FFUUID_ELECTRICGUITAR[]
Definition ff_other.h:8344
static const char FFUUID_TSYMBALY[]
Definition ff_other.h:8567
static const char FFUUID_CELESTA[]
Definition ff_other.h:7824
static const char FFUUID_SYNTHSOUNDTRACK[]
Definition ff_other.h:7840
static const char FFUUID_CARILLON[]
Definition ff_other.h:8699
static const char FFUUID_REPINIQUE[]
Definition ff_other.h:8977
bool GetShowAugmentationDots() const
Returns true if augmentation dots should be displayed for the staff.
Definition ff_other.h:9535
bool GetTransposeSimplifyKey() const
Returns the state of the "Simplify Key Sig" in the transposition dialog box.
Definition ff_other.h:9777
static const char FFUUID_DANNGUYET[]
Definition ff_other.h:8422
static const char FFUUID_BASSTUBA[]
Definition ff_other.h:8260
static const char FFUUID_BRAKEDRUM[]
Definition ff_other.h:9063
static const char FFUUID_LARUAN[]
Definition ff_other.h:7773
static const char FFUUID_GANZA[]
Definition ff_other.h:9196
static const char FFUUID_JARANASEGUNDA[]
Definition ff_other.h:8474
static const char FFUUID_RACKETT[]
Definition ff_other.h:8192
static const char FFUUID_FANGXIANG[]
Definition ff_other.h:8776
static const char FFUUID_MOHANVEENA[]
Definition ff_other.h:8512
static const char FFUUID_YODEL[]
Definition ff_other.h:7885
static const char FFUUID_SAZ[]
Definition ff_other.h:8548
static const char FFUUID_BARITONETC[]
Definition ff_other.h:8256
static const char FFUUID_TENORCRUMHORN[]
Definition ff_other.h:8150
static const char FFUUID_HAMMEREDDULCIMER[]
Definition ff_other.h:8366
static const char FFUUID_CHOIRAAHS[]
Definition ff_other.h:7881
Efix32 GetStemsUpHorizontalOffset() const
Returns the horizontal stem offset for up stems.
Definition ff_other.h:9723
static const char FFUUID_TSUZUMI[]
Definition ff_other.h:9016
void SetShowNoteShapes(bool state)
Sets if the staff should display note colors.
Definition ff_other.h:10343
static const char FFUUID_DAFLI[]
Definition ff_other.h:9177
static const char FFUUID_CHAPMANSTICK[]
Definition ff_other.h:8406
static const char FFUUID_CONTRABASSSECTION[]
Definition ff_other.h:7725
static const char FFUUID_GIYINGGAMELAN[]
Definition ff_other.h:8742
void SetStemsUseVerticalOffsetForNoteheadEnd(bool value)
Sets the value of "Use Vertical Offset For Notehead End Of Stem" checkbox in the Staff Stem Settings ...
Definition ff_other.h:10527
FCString * CreateFullNameString()
Creates a FCString object of the full staff name (including the Enigma text tags).
Definition finaleframework.cpp:9039
static const char FFUUID_IRISHBOUZOUKI[]
Definition ff_other.h:8466
static const char FFUUID_DANGAO[]
Definition ff_other.h:7745
static const char FFUUID_DULZAINA[]
Definition ff_other.h:8166
static const char FFUUID_PIANONONAME[]
Definition ff_other.h:7816
static const char FFUUID_POSTHORN[]
Definition ff_other.h:8286
bool GetDisplayEmptyRests() const
Returns the "Display Rests in empty measures" state.
Definition ff_other.h:9783
static const char FFUUID_DANTYBA[]
Definition ff_other.h:8428
void SetStemsUseVerticalOffsetForBeamEnd(bool value)
Sets the value of "Use Vertical Offset For Beam End Of Stem (Offset From Staff)" checkbox in the Staf...
Definition ff_other.h:10544
static const char FFUUID_TANGKU[]
Definition ff_other.h:9001
static const char FFUUID_IBO[]
Definition ff_other.h:9216
bool GetShowStems() const
Returns true if stems should be displayed for the staff.
Definition ff_other.h:9663
static const char FFUUID_PANPIPES[]
Definition ff_other.h:7988
static const char FFUUID_GUITJODOUBLENECK[]
Definition ff_other.h:8458
twobyte GetDoubleWholeRestPosition() const
Returns the vertical position for the double whole rests. This setting is located in the "Staff Setup...
Definition ff_other.h:9581
static const char FFUUID_EWEDRUMAXATSE[]
Definition ff_other.h:9187
static const char FFUUID_HANG[]
Definition ff_other.h:9208
static const char FFUUID_HULUSI[]
Definition ff_other.h:8228
FCString * CreateTrimmedFullNameString()
Creates a string object of the full staff name without any font information.
Definition finaleframework.cpp:9116
Evpu16 GetBottomBarlineOffset() const
Returns the bottom barline offset, in EVPUs. This parameter controls how far the barlines extends dow...
Definition ff_other.h:10135
static const char FFUUID_SHAKERS[]
Definition ff_other.h:9095
static const char FFUUID_SHEHNAI[]
Definition ff_other.h:8204
void SetStemsNoteheadEndFixedToStaff(bool value)
Sets the value of "Use Vertical Offset For Notehead End Of Stem: Offset From" radio buttons in the St...
Definition ff_other.h:10538
static const char FFUUID_BRASSSECTION[]
Definition ff_other.h:8264
static const char FFUUID_STRINGENSEMBLE[]
Definition ff_other.h:7727
void SetShowKeySignatures(bool value)
Sets if the key signature should be displayed for the staff.
Definition ff_other.h:10221
static const char FFUUID_SHIVAWHISTLE[]
Definition ff_other.h:8090
STAFFSTEMDIRS GetStemsDirection() const
Returns the stem direction for note entries on the staff. (Staff Stem Settings dialog....
Definition ff_other.h:9682
void SetBottomRepeatDotPosition(twobyte position)
Sets the bottom repeat dot position for the staff. This setting is located in the "Staff Setup" dialo...
Definition ff_other.h:10429
static const char FFUUID_TAB_BANJO_G[]
Definition ff_other.h:8611
static const char FFUUID_ZHONGHU[]
Definition ff_other.h:7809
static const char FFUUID_RANATTHUMLEK[]
Definition ff_other.h:8802
static const char FFUUID_HIRTENSCHALMEI[]
Definition ff_other.h:8132
void SetShowPartStaffNames(bool value)
Sets if part staff names should be displayed for the staff.
Definition ff_other.h:10478
static const char FFUUID_BANSURI[]
Definition ff_other.h:8034
static const char FFUUID_RANATEKLEK[]
Definition ff_other.h:8800
static const char FFUUID_MANGBETU[]
Definition ff_other.h:8508
static const char FFUUID_CORNET[]
Definition ff_other.h:8240
static const char FFUUID_ALTORECORDER[]
Definition ff_other.h:7942
static const char FFUUID_TAPHON[]
Definition ff_other.h:9003
static const char FFUUID_CRASHCYMBAL[]
Definition ff_other.h:9047
static const char FFUUID_ENGLISHHORN[]
Definition ff_other.h:7908
static const char FFUUID_CONGADRUMS[]
Definition ff_other.h:8841
static const char FFUUID_COWBELL[]
Definition ff_other.h:9077
void SetDisplayEmptyRests(bool state)
Sets the "Display Rests in empty measures" state.
Definition ff_other.h:10609
bool IsNormalNotation()
Returns true if the staff is using "normal" music notation (not percussion and not TAB notation).
Definition ff_other.h:11109
twobyte GetDefaultClef() const
Returns the start/default clef.
Definition ff_other.h:9995
static const char FFUUID_VIOLINSECTION[]
Definition ff_other.h:7715
static const char FFUUID_EWEDRUMKPANLOGO2MEDIUM[]
Definition ff_other.h:8903
static const char FFUUID_TAIKODRUMS[]
Definition ff_other.h:8806
static const char FFUUID_IGIL[]
Definition ff_other.h:7765
static const char FFUUID_ACCORDION[]
Definition ff_other.h:7826
twobyte GetOtherRestPosition() const
Returns the vertical position for the "other" rests. This setting is located in the "Staff Setup" dia...
Definition ff_other.h:9567
static const char FFUUID_NEY[]
Definition ff_other.h:8072
static const char FFUUID_KOUDI[]
Definition ff_other.h:8070
static const char FFUUID_SNAREDRUM[]
Definition ff_other.h:8817
static const char FFUUID_ALTOSAX[]
Definition ff_other.h:7932
static const char FFUUID_LUOGONG[]
Definition ff_other.h:9244
static const char FFUUID_BOTTLEBLOW[]
Definition ff_other.h:7992
static const char FFUUID_RIQ[]
Definition ff_other.h:9254
static const char FFUUID_BASSCLARINET[]
Definition ff_other.h:7920
bool GetShowLyrics() const
Returns true if lyrics should be displayed for the staff.
Definition ff_other.h:9645
static const char FFUUID_CORNAMUSE[]
Definition ff_other.h:8122
static const char FFUUID_LOGDRUM[]
Definition ff_other.h:8843
FCString * CreateAbbreviatedNameString()
Creates a string object of the abbreviated staff name (including the Enigma text tags).
Definition finaleframework.cpp:9046
static const char FFUUID_THEREMIN[]
Definition ff_other.h:7848
static const char FFUUID_CLAVINET[]
Definition ff_other.h:7832
static const char FFUUID_SARONDEMONGGAMELAN[]
Definition ff_other.h:8754
static const char FFUUID_MIJWIZ[]
Definition ff_other.h:8138
static const char FFUUID_MEZZOSOPRANOVOICE[]
Definition ff_other.h:7873
static const char FFUUID_SHAMISEN[]
Definition ff_other.h:8554
static const char FFUUID_EWEDRUMSOGO[]
Definition ff_other.h:8907
static const char FFUUID_GUANZI[]
Definition ff_other.h:8170
static const char FFUUID_SYNTHBRASS[]
Definition ff_other.h:7838
static const char FFUUID_BASSMARIMBA[]
Definition ff_other.h:8675
void SetTopBarlineOffset(Evpu16 distance)
Sets the top barline offset, in EVPUs. This parameter controls how far the barlines extends upwards.
Definition ff_other.h:11004
static const char FFUUID_KULINTANG[]
Definition ff_other.h:8784
static const char FFUUID_SARONPANERUSGAMELAN[]
Definition ff_other.h:8756
static const char FFUUID_GAIDAPIPES[]
Definition ff_other.h:7976
static const char FFUUID_SUBCONTRABASSTUBA[]
Definition ff_other.h:8320
static const char FFUUID_HIHATCYMBAL[]
Definition ff_other.h:9049
static const char FFUUID_HANG_TCLEF[]
Definition ff_other.h:8716
CMPER GetFretInstrumentDefID() const
Returns the ID for the tablature instrument (for tablature notation). Use the FCFretInstrumentDef cla...
Definition ff_other.h:10125
static const char FFUUID_TINAJA[]
Definition ff_other.h:9286
bool GetShowBottomRepeatDot() const
Returns if the bottom repeat dot should be displayed for the staff. This setting is located in the "S...
Definition ff_other.h:9605
static const char FFUUID_VOICE[]
Definition ff_other.h:7869
static const char FFUUID_SE[]
Definition ff_other.h:8550
static const char FFUUID_WINDSECTION[]
Definition ff_other.h:7928
static const char FFUUID_NAGADODAIKO[]
Definition ff_other.h:8951
static const char FFUUID_MBIRA[]
Definition ff_other.h:8796
static const char FFUUID_PIANO[]
Definition ff_other.h:7814
void SetShowTuplets(bool state)
For tablature notation: sets if tuplets should show or not.
Definition ff_other.h:10621
void SetStemReversalPosition(twobyte position)
Sets the stem reversal position offset for the staff. This setting is located in the "Staff Setup" di...
Definition ff_other.h:10390
static const char FFUUID_OKAWA[]
Definition ff_other.h:8963
static const char FFUUID_TAB_BASSGUITAR_4[]
Definition ff_other.h:8625
static const char FFUUID_CHINATEMPLEBLOCKS[]
Definition ff_other.h:9163
static const char FFUUID_BONANGGAMELAN[]
Definition ff_other.h:8736
static const char FFUUID_BASSGUITAR[]
Definition ff_other.h:8354
static const char FFUUID_VOCALPERCUSSION[]
Definition ff_other.h:7893
static const char FFUUID_CHIPPLI[]
Definition ff_other.h:9173
static const char FFUUID_SHENG[]
Definition ff_other.h:8230
static const char FFUUID_ALTOTROMBONE[]
Definition ff_other.h:8274
static const char FFUUID_LUTE[]
Definition ff_other.h:8372
void SetIndependentFont(bool state)
Sets if a independent notehead font should be used for the staff.
Definition ff_other.h:10331
static const char FFUUID_DOUBLEFLUTE[]
Definition ff_other.h:8044
static const char FFUUID_KANTELE[]
Definition ff_other.h:8480
static const char FFUUID_PORTUGUESEGUITAR[]
Definition ff_other.h:8526
static const char FFUUID_BASSTROMBONE[]
Definition ff_other.h:8250
static const char FFUUID_IRISHFLUTE[]
Definition ff_other.h:8060
bool GetBreakTablatureLines() const
For tablature notation: returns if tablature lines should break at fret numbers.
Definition ff_other.h:9822
static const char FFUUID_KOTO[]
Definition ff_other.h:8490
static const char FFUUID_CLARINETEFLAT[]
Definition ff_other.h:7914
bool SaveNewFullNameString(FCString *pString)
Saves the full string as a new staff name block. The staff object must be saved afterwards,...
Definition finaleframework.cpp:9020
static const char FFUUID_OBOEDAMORE[]
Definition ff_other.h:7906
bool GetAltShowExpression() const
Returns if expressions should be diplayed on the altered layer.
Definition ff_other.h:9936
static const char FFUUID_SISTRUM[]
Definition ff_other.h:9260
static const char FFUUID_CHOAZHOUGUZHENG[]
Definition ff_other.h:8412
static const char FFUUID_AFOXE[]
Definition ff_other.h:9129
static const char FFUUID_LAMBEGDRUM[]
Definition ff_other.h:8939
static const char FFUUID_CONTRABASSTROMBONE[]
Definition ff_other.h:8278
void SetShowPartTimeSignatures(bool value)
Sets if the time signature should be displayed for the staff in parts. This does nothing on Finale ve...
Definition ff_other.h:10261
static const char FFUUID_VIBRASLAP[]
Definition ff_other.h:9101
static const char FFUUID_CLAVICHORD[]
Definition ff_other.h:7852
static const char FFUUID_GUQIN[]
Definition ff_other.h:8460
static const char FFUUID_BARBAT[]
Definition ff_other.h:8392
static const char FFUUID_KRINSLITDRUM[]
Definition ff_other.h:9240
static const char FFUUID_SLITDRUM[]
Definition ff_other.h:9264
static const char FFUUID_SARANGI[]
Definition ff_other.h:7789
static const char FFUUID_SITAR[]
Definition ff_other.h:8378
static const char FFUUID_BALALAIKA[]
Definition ff_other.h:8386
static const char FFUUID_NYCKELHARPA[]
Definition ff_other.h:7781
static const char FFUUID_SANDBLOCK[]
Definition ff_other.h:9093
static const char FFUUID_KENKENI[]
Definition ff_other.h:8931
void SetShowScoreTimeSignatures(bool value)
Sets if the time signature should be displayed for the staff in the score.
Definition ff_other.h:10245
static const char FFUUID_OCTAVIN[]
Definition ff_other.h:8140
static const char FFUUID_HANDBELLS_TCLEF[]
Definition ff_other.h:8712
static const char FFUUID_SULING[]
Definition ff_other.h:8094
twobyte GetLineCount() const
Returns the number of staff lines for the staff.
Definition finaleframework.cpp:8792
static const char FFUUID_HARDANGERFIDDLE[]
Definition ff_other.h:7761
static const char FFUUID_MADDALE[]
Definition ff_other.h:8943
static const char FFUUID_STIRDRUM[]
Definition ff_other.h:9270
static const char FFUUID_CHARANGO[]
Definition ff_other.h:8408
static const char FFUUID_BASSSAX[]
Definition ff_other.h:8026
static const char FFUUID_VIOLADAMORE[]
Definition ff_other.h:7729
static const char FFUUID_RATCHET[]
Definition ff_other.h:9089
void SetTransposeUseClef(bool state)
Sets the "Set to clef" state in the transposition dialog.
Definition ff_other.h:10452
static const char FFUUID_PEMADEGAMELAN[]
Definition ff_other.h:8748
static const char FFUUID_DOMRA[]
Definition ff_other.h:8434
static const char FFUUID_CHOIROOHS[]
Definition ff_other.h:7883
static const char FFUUID_PERCUSSIONGENERAL[]
Definition ff_other.h:9027
static const char FFUUID_CONTRALTOVOICE[]
Definition ff_other.h:7875
static const char FFUUID_STEELDRUMS_TCLEF[]
Definition ff_other.h:8732
static const char FFUUID_ANCIENTTAROGATO[]
Definition ff_other.h:8218
static const char FFUUID_HORAGAI[]
Definition ff_other.h:8324
static const char FFUUID_HARMONIUM[]
Definition ff_other.h:7844
static const char FFUUID_HANDBELLS[]
Definition ff_other.h:8710
bool GetShowKeySignatures() const
Returns true if the key signature should be displayed for the staff.
Definition ff_other.h:9422
static const char FFUUID_TIBETANCYMBALS[]
Definition ff_other.h:9280
static const char FFUUID_FONTOMFROM[]
Definition ff_other.h:8909
static const char FFUUID_XALAM[]
Definition ff_other.h:8583
static const char FFUUID_SARANGIDRONE[]
Definition ff_other.h:7791
bool GetShowBarlines() const
Returns true if barlines should be displayed for the staff.
Definition ff_other.h:9497
static const char FFUUID_WASHBOARD[]
Definition ff_other.h:9103
static const char FFUUID_SOUNDFX[]
Definition ff_other.h:7842
Efix32 GetStemsDownVerticalOffsetForNoteheadEnd() const
Returns the vertical stem offset for the notehead end of down stems.
Definition ff_other.h:9741
static const char FFUUID_SIPSI[]
Definition ff_other.h:8146
static const char FFUUID_BEATBOX[]
Definition ff_other.h:7887
static const char FFUUID_SANSHIN[]
Definition ff_other.h:8538
static const char FFUUID_KULINTANGAKAYO[]
Definition ff_other.h:8786
static const char FFUUID_DUXIANQIN[]
Definition ff_other.h:8438
static const char FFUUID_KHOL[]
Definition ff_other.h:8933
virtual FCStaffNamePosition * GetFullNamePosition()
Gets the name position object for the full staff name. The object is of the FCStaffNamePosition class...
Definition finaleframework.cpp:9137
STAFFNOTATION_STYLE GetNotationStyle() const
Returns the notation style for the staff.
Definition ff_other.h:9843
void SetShowNoteColors(bool state)
Sets if the staff should display note colors.
Definition ff_other.h:10337
static const char FFUUID_RUDRAVEENA[]
Definition ff_other.h:8534
virtual FCStaffNamePosition * GetAbbreviatedNamePosition()
Gets the name position object for the abbreviated staff name. The object is of the FCStaffNamePositio...
Definition finaleframework.cpp:9148
static const char FFUUID_XUN[]
Definition ff_other.h:8106
static const char FFUUID_KAEKEEKE[]
Definition ff_other.h:9224
static const char FFUUID_SACKBUT[]
Definition ff_other.h:8312
static const char FFUUID_BLANKSTAFF[]
Definition ff_other.h:7698
void SetShowTimeSignatures(bool value)
Sets if the time signature should be displayed for the staff in both score and parts.
Definition ff_other.h:10231
static const char FFUUID_ARCHLUTE[]
Definition ff_other.h:8382
Efix32 GetVerticalFretOffset() const
For tablature notation: returns the vertical offset for fret numbers.
Definition ff_other.h:10115
static const char FFUUID_KHLUI[]
Definition ff_other.h:8064
static const char FFUUID_VIOLA[]
Definition ff_other.h:7709
static const char FFUUID_TUMBAK[]
Definition ff_other.h:9014
static const char FFUUID_KAZOO[]
Definition ff_other.h:7889
bool GetAltShowOtherExpressions() const
Returns if expressions should be displayed on layers other than the altered layer.
Definition ff_other.h:9966
void SetHideMode(STAFF_HIDEMODES value)
Sets how the staff should be hidden.
Definition finaleframework.cpp:8833
static const char FFUUID_TAB_BANJO_PLECTRUM[]
Definition ff_other.h:8623
int CalcBottomStaffLinePosition(bool forledgerlines=false) const
Calculates the staff position of the bottom staff line. For standard 5-lines staves,...
Definition finaleframework.cpp:8982
STAFF_HIDEMODES
The different hide modes for FCStaff::GetHideMode() and FCStaff::SetHideMode().
Definition ff_other.h:9371
@ STAFFHIDE_SCORE
Definition ff_other.h:9376
@ STAFFHIDE_SCORE_AND_PARTS
Definition ff_other.h:9379
@ STAFFHIDE_NORMAL
Definition ff_other.h:9373
@ STAFFHIDE_CUTAWAY
Definition ff_other.h:9382
static const char FFUUID_RHAITA[]
Definition ff_other.h:8196
void SetBreakRepeatBarlines(bool state)
Sets the "Break repeat barlines between staves" state.
Definition ff_other.h:10318
static const char FFUUID_SAROD[]
Definition ff_other.h:8544
static const char FFUUID_TENORLINE[]
Definition ff_other.h:8831
static const char FFUUID_REYONGGAMELAN[]
Definition ff_other.h:9123
static const char FFUUID_ARABIANFRAMEDRUM[]
Definition ff_other.h:8853
static const char FFUUID_AFRICANLOGDRUM[]
Definition ff_other.h:8849
static const char FFUUID_SORNA[]
Definition ff_other.h:8208
void SetAltShowSmartShapes(bool state)
Sets if smart shapes should be diplayed n the altered layer.
Definition ff_other.h:10816
static const char FFUUID_GEHU[]
Definition ff_other.h:7757
void SetStemsUpVerticalOffsetForNoteheadEnd(Efix32 value)
Sets the vertical stem offset for the notehead end of up stems.
Definition ff_other.h:10562
static const char FFUUID_DATANGULIONDRUM[]
Definition ff_other.h:8883
static const char FFUUID_DHOLAK[]
Definition ff_other.h:8887
static const char FFUUID_TRES[]
Definition ff_other.h:8565
static const char FFUUID_ARRAYMBIRA[]
Definition ff_other.h:8766
static const char FFUUID_SANTOOR[]
Definition ff_other.h:8540
void MakeNormalNotation()
Transforms a staff to "normal" (not TAB and not percussion).
Definition ff_other.h:11079
static const char FFUUID_BASSOBOE[]
Definition ff_other.h:8002
static const char FFUUID_TENORSAX[]
Definition ff_other.h:7934
static const char FFUUID_ADODO[]
Definition ff_other.h:9125
static const char FFUUID_SABAR[]
Definition ff_other.h:8979
void SetBreakTablatureLines(bool state)
For tablature notation: sets if tablature lines should break at fret numbers.
Definition ff_other.h:10648
static const char FFUUID_KHARTAL[]
Definition ff_other.h:9234
static const char FFUUID_CABASA[]
Definition ff_other.h:9065
static const char FFUUID_TAMTE[]
Definition ff_other.h:8997
void SetCapoPosition(twobyte value)
For tablature notation: sets the capo position.
Definition ff_other.h:10956
static const char FFUUID_TEMPLEBELLS[]
Definition ff_other.h:8808
void SetDefaultClef(twobyte clefindex)
Sets the start/default clef.
Definition ff_other.h:10905
static const char FFUUID_CIMBALOM[]
Definition ff_other.h:8414
static const char FFUUID_PANDERO[]
Definition ff_other.h:8971
static const char FFUUID_SHVI[]
Definition ff_other.h:8092
static const char FFUUID_BAWU[]
Definition ff_other.h:8116
static const char FFUUID_BENDIR[]
Definition ff_other.h:8861
static const char FFUUID_ALTOVOICE[]
Definition ff_other.h:7859
static const char FFUUID_TAB_REQUINTO[]
Definition ff_other.h:8645
Class for allotment data (in the Document Options).
Definition ff_other.h:20147
void SetWidth(Evpu16 width)
Sets the allotment reference width (int EVPUs).
Definition ff_other.h:20218
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_other.h:20191
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:20235
FCAllotment()
The constructor.
Definition ff_other.h:20207
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:20190
Evpu16 GetWidth() const
Returns the allotment reference width (int EVPUs).
Definition ff_other.h:20228
The class for an articulation definition. On Finale 2012 and above, this class supports the Unicode c...
Definition ff_other.h:12287
void SetAlwaysPlaceOutsideStaff(bool state)
Sets the state of the "Always place outside staff" setting.
Definition ff_other.h:13212
void SetMainSymbolFont(const std::string &pszFontName)
Sets the main symbol font.
Definition finaleframework.cpp:10073
void SetFlippedSymbolChar(eUniChar32 symbol)
Sets the character for the flipped symbol. On Finale 2012 and above, this supports the Unicode range.
Definition ff_other.h:13111
const EFONTID GetMainSymbolFontID() const
Returns the internal document-specific font ID for the main symbol.
Definition finaleframework.cpp:9661
std::string GetMainSymbolFont() const
Gets the font name for the main symbol.
Definition finaleframework.cpp:9640
void SetCenterHorizontally(bool state)
Sets the state of the "Center horizontally" setting.
Definition ff_other.h:13218
void SetOnStemDistanceFromStemEnd(twobyte value)
Sets the "On-stem distance from stem end/flag/beam" value.
Definition finaleframework.cpp:9857
void SetAutoPosSide(ARTPOSITIONING_SIDES mode)
Sets the vertical auto positioning setting for the articulation definition.
Definition finaleframework.cpp:9718
bool GetAvoidStaffLines() const
Returns the state of the "Avoid staff lines" setting.
Definition ff_other.h:12690
bool GetDurationIsPercent() const
Returns the "Values are percentages" for "Duration" playback change.
Definition ff_other.h:12646
void SetDurationIsPercent(bool value)
Sets the "Values are percentages" for the "Duration" playback change.
Definition ff_other.h:13357
void SetVelocityIsPercent(bool value)
Sets the "Values are percentages" for the "Velocity" playback change.
Definition ff_other.h:13391
bool GetFlippedSymbolIsShape() const
Returns true if the flipped symbol is a shape.
Definition ff_other.h:12833
void SetInsideSlurs(bool state)
Sets the state of the "Inside slurs" setting.
Definition ff_other.h:13246
void SetTopDuration(twobyte value)
Sets the Top Note Value for "Duration" change of playback.
Definition ff_other.h:13337
void SetFlippedHandleVerticalOffset(Evpu16 value)
Sets the vertical offset to handle for the flipped symbol.
Definition ff_other.h:13316
twobyte GetFlippedSymbolShapeID() const
Returns the shape ID for the flipped symbol.
Definition ff_other.h:12530
void SetFlippedSymbolShapeID(twobyte shapeID)
Sets the shape ID for the flipped symbol.
Definition ff_other.h:13098
FCFontInfo * CreateMainSymbolFontInfo() const
Creates a FCFontInfo object based on the main symbol font information.
Definition finaleframework.cpp:9926
bool GetCenterOnStemWhenStemSide() const
Returns the state of the "Center over/under stem when stem side" setting.
Definition finaleframework.cpp:9892
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:13394
void SetCenterOnStemWhenStemSide(bool state)
Sets the state of the "Center over/under stem when stem side" setting.
Definition finaleframework.cpp:9841
void SetTopVelocity(twobyte value)
Sets the Top Note Value for "Velocity" change of playback.
Definition ff_other.h:13363
bool IsFlippedSymbolFont(const char *pszFontName) const
Returns true if the flipped symbol font matches the font string. The font name check is case sensitiv...
Definition finaleframework.cpp:9918
Evpu16 GetDefaultVerticalPos() const
Returns the default vertical position for the articulation definition.
Definition ff_other.h:12769
twobyte GetBottomDuration() const
Returns the Bottom Note Value for "Duration" change of playback.
Definition ff_other.h:12658
void SetAvoidStaffLines(bool state)
Sets the state of the "Avoid staff lines" setting.
Definition ff_other.h:13224
bool IsIdenticalTo(const FCArticulationDef &compareWith, bool playbackinfo, bool positioningvalues, bool positioningoptions, bool defaultside) const
Compares the articulation definition to another definition and checks if all settings are identical.
Definition finaleframework.cpp:10114
void SetStackAutomatically(bool state)
Sets the state of the "Stack automatically" setting.
Definition finaleframework.cpp:9833
twobyte GetMainSymbolShapeID() const
Returns the shape ID for the main symbol.
Definition ff_other.h:12513
bool GetCopyMainSymbolHorizontally() const
Returns the state of the "Horizontally/Vertically" setting that's used (when GetCopyMainSymbol is set...
Definition ff_other.h:12611
FCFontInfo * CreateFlippedSymbolFontInfo() const
Creates a FCFontInfo object based on the flipped symbol font information.
Definition finaleframework.cpp:9933
bool IsShapeUsed()
Returns true if a shape is used for the articulation definition.
Definition ff_other.h:12840
twobyte GetTopVelocity() const
Returns the Top Note Value for "Velocity" change of playback.
Definition ff_other.h:12670
void SetFlippedSymbolSize(twobyte size)
Sets the flipped symbol font size.
Definition finaleframework.cpp:10042
void SetCopyMainSymbol(bool state)
Sets the state of the "Copy the Main Symbol" setting.
Definition ff_other.h:13148
bool GetMainSymbolIsShape() const
Returns true if the main symbol is a shape.
Definition ff_other.h:12824
void SetFlippedSymbolFontID(EFONTID fontid)
Sets the internal document-specific font ID for the flipped symbol.
Definition finaleframework.cpp:10086
twobyte GetTopDuration() const
Returns the Top Note Value for "Duration" change of playback.
Definition ff_other.h:12652
void SetPlayback(bool state)
Sets the playback change state bit for the articulation definition.
Definition ff_other.h:13166
void SetFlippedHandleHorizontalOffset(Evpu16 value)
Sets the horizontal offset to handle for the flipped symbol.
Definition ff_other.h:13326
eUniChar32 GetAboveSymbolChar() const
Returns the character for the "above" symbol. On Finale 2012 and above, this supports the Unicode ran...
Definition ff_other.h:12472
void SetStemSideWhenMultipleLayers(bool state)
Sets the state of the "place stem side when multiple layers are present" setting.
Definition finaleframework.cpp:9849
bool GetInsideSlurs() const
Returns the state of the "Inside slurs" setting.
Definition ff_other.h:12730
bool GetCopyMainSymbol() const
Returns the state of the "Copy the Main Symbol" setting.
Definition ff_other.h:12601
bool GetPlayback() const
Gets the playback change state bit for the articulation definition.
Definition ff_other.h:12619
void SetBottomVelocity(twobyte value)
Sets the Bottom Note Value for "Velocity" change of playback.
Definition ff_other.h:13373
bool GetBelowUsesMain() const
Return the state of the "When Placed Below a Note, Use the" setting.
Definition ff_other.h:12594
std::string GetFlippedSymbolFont() const
Gets the font name for the flipped symbol.
Definition finaleframework.cpp:9679
void SetAttackIsPercent(bool state)
Sets the "Values are percentages" state for the "Attack" playback change.
Definition ff_other.h:13173
eUniChar32 GetFlippedSymbolChar() const
Returns the character for the flipped symbol. On Finale 2012 and above, this supports the Unicode ran...
Definition finaleframework.cpp:9604
twobyte GetBottomAttack() const
Returns the Bottom Note Value for "Attack" change of playback.
Definition ff_other.h:12639
bool IsMainSymbolFont(const char *pszFontName) const
Returns true if the main symbol font matches the font string. The font name check is case sensitive.
Definition finaleframework.cpp:9910
Evpu16 GetMainHandleVerticalOffset() const
Gets the vertical offset to handle for the main symbol.
Definition ff_other.h:12795
void SetMainSymbolSize(twobyte size)
Sets the main symbol font size.
Definition finaleframework.cpp:10026
const EFONTID GetFlippedSymbolFontID() const
Returns the internal document-specific font ID for the flipped symbol.
Definition finaleframework.cpp:9700
void SetFlippedSymbolIsShape(bool useshape)
Set the flipped symbol to use shape or a font character.
Definition ff_other.h:13075
void SetBottomAttack(twobyte value)
Sets the Bottom Note Value for "Attack" change of playback.
Definition ff_other.h:13190
Evpu16 GetFlippedHandleVerticalOffset() const
Gets the vertical offset to handle for the flipped symbol.
Definition ff_other.h:12809
void SetOnScreenOnly(bool state)
Sets the flag if the articulation definition should be displayed on the screen only.
Definition ff_other.h:12940
void SetBelowSymbolChar(eUniChar32 symbol)
Sets the character for the "below" symbol. On Finale 2012 and above, this supports the Unicode range.
Definition ff_other.h:13030
twobyte GetBottomVelocity() const
Returns the Bottom Note Value for "Velocity" change of playback.
Definition ff_other.h:12676
void SetSlurInteraction(ARTSLUR_INTERACTION mode)
Sets the "Slur Interaction" setting.
Definition finaleframework.cpp:9803
twobyte GetMainSymbolSize() const
Returns the font size of the main symbol.
Definition finaleframework.cpp:9616
void SetCopyMainSymbolHorizontally(bool state)
Sets the state of the "Horizontally/Vertically" setting that's used (when GetCopyMainSymbol is set).
Definition ff_other.h:13158
ARTSLUR_INTERACTION GetSlurInteraction() const
Gets the settings for slur interaction.
Definition finaleframework.cpp:9871
bool GetOnScreenOnly() const
Returns true if the main symbol should not print.
Definition ff_other.h:12431
void SetMainHandleVerticalOffset(Evpu16 value)
Sets the vertical offset to handle for the main symbol.
Definition ff_other.h:13294
void SetDefaultVerticalPos(Evpu16 value)
Sets the default vertical position for the articulation definition.
Definition ff_other.h:13283
ARTPOSITIONING_SIDES
The auto positioning modes for articulations. Used by FCArticulationDef::GetAutoPosSide() and FCArtic...
Definition ff_other.h:12369
twobyte GetOnStemDistanceFromStemEnd() const
Returns the "On-stem distance from stem end/flag/beam" value.
Definition finaleframework.cpp:9794
void SetMainSymbolFontInfo(FCFontInfo *pFontInfo)
Sets the main symbol font for the articulation definition based on a FCFontInfo record.
Definition finaleframework.cpp:9984
ARTSLUR_INTERACTION
The options for slur interaction used by FCArticulationDef::GetSlurInteraction() and FCArticulationDe...
Definition ff_other.h:12391
void SetFlippedSymbolFont(const std::string &pszFontName)
Sets the flipped symbol font.
Definition finaleframework.cpp:10101
bool GetVelocityIsPercent() const
Returns the "Values are percentages" for "Velocity" playback change.
Definition ff_other.h:12664
ARTPOSITIONING_SIDES GetAutoPosSide() const
Gets the vertical auto positioning setting for the articulation definition.
Definition finaleframework.cpp:9769
void SetBelowUsesMain(bool state)
Sets the state of the "When Placed Below a Note, Use the" setting.
Definition ff_other.h:13142
void SetAboveSymbolChar(eUniChar32 symbol)
Sets the character for the "above" symbol. On Finale 2012 and above, this supports the Unicode range.
Definition ff_other.h:13016
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_other.h:12399
Evpu16 GetMainHandleHorizontalOffset() const
Gets the horizontal offset to handle for the main symbol.
Definition ff_other.h:12802
void GetMainSymbolFontInfo(FCFontInfo *pFontInfo) const
Gets the main symbol font for the articulation definition based on a FCFontInfo record.
Definition finaleframework.cpp:9940
void SetFlippedSymbolFontInfo(FCFontInfo *pFontInfo)
Sets the flipped symbol font for the articulation definition based on a FCFontInfo record.
Definition finaleframework.cpp:10005
Evpu16 GetFlippedHandleHorizontalOffset() const
Gets the horizontal offset to handle for the flipped symbol.
Definition ff_other.h:12815
eUniChar32 GetMainSymbolChar() const
Returns the character for the main symbol. On Finale 2012 and above, this supports the Unicode range.
Definition finaleframework.cpp:9591
void SetMainHandleHorizontalOffset(Evpu16 value)
Sets the horizontal offset to handle for the main symbol.
Definition ff_other.h:13305
bool GetAlwaysPlaceOutsideStaff() const
Returns the state of the "Always place outside staff" setting.
Definition ff_other.h:12697
twobyte GetFlippedSymbolSize() const
Returns the font size of the flipped symbol.
Definition finaleframework.cpp:9628
void SetAttachToTopNote(bool state)
Sets the state of the "Attach to top note" setting.
Definition ff_other.h:13252
void SetTopAttack(twobyte value)
Sets the Top Note Value for "Attack" change of playback.
Definition ff_other.h:13180
void SetBottomDuration(twobyte value)
Sets the Bottom Note Value for "Duration" change of playback.
Definition ff_other.h:13347
bool GetAttachToTopNote() const
Returns the state of the "Attach to top note" setting.
Definition ff_other.h:12736
void SetAboveUsesMain(bool state)
Sets the state of the "When Placed Above a Note, Use the" setting.
Definition ff_other.h:13133
void GetFlippedSymbolFontInfo(FCFontInfo *pFontInfo) const
Gets the flipped symbol font for the articulation definition based on a FCFontInfo record.
Definition finaleframework.cpp:9962
FCArticulationDef()
The constructor.
Definition ff_other.h:12417
void SetMainSymbolChar(eUniChar32 symbol)
Sets the character for the main symbol. On Finale 2012 and above, this supports the Unicode range.
Definition ff_other.h:13045
void SetMainSymbolFontID(EFONTID fontid)
Sets the internal document-specific font ID for the main symbol.
Definition finaleframework.cpp:10058
void SetMainSymbolShapeID(CMPER shapeID)
Sets the shape ID for the main symbol.
Definition ff_other.h:13086
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:12398
bool GetAttackIsPercent() const
Returns the "Values are percentages" state for the "Attack" playback change.
Definition ff_other.h:12626
bool GetAboveUsesMain() const
Return the state of the "When Placed Above a Note, Use the" setting.
Definition ff_other.h:12585
bool GetStackAutomatically() const
Returns the state of the "Stack automatically" setting.
Definition finaleframework.cpp:9883
eUniChar32 GetBelowSymbolChar() const
Returns the character for the "below" symbol. On Finale 2012 and above, this supports the Unicode ran...
Definition ff_other.h:12489
void SetMainSymbolIsShape(bool useshape)
Set the main symbol to use shape or a font character.
Definition ff_other.h:13065
twobyte GetTopAttack() const
Returns the Top Note Value for "Attack" change of playback.
Definition ff_other.h:12633
bool GetCenterHorizontally() const
Returns the state of the "Center horizontally" setting.
Definition ff_other.h:12704
bool GetStemSideWhenMultipleLayers() const
Returns the state of the "place stem side when multiple layers are present" setting.
Definition finaleframework.cpp:9901
Class for attaching an articulation definition to an entry.
Definition ff_entrydetails.h:1839
The class for a backward repeat definition.
Definition ff_other.h:23156
FCTextRepeat::REPSHOWMODES GetShowMode() const
Returns on which staves the backward repeat should be shown.
Definition ff_other.h:23306
FCSeparatePlacements * CreateSeparatePlacements()
Creates a FCSeparatePlacements collection and loads it with all matching independent positioning reco...
Definition finaleframework.cpp:11733
FCTextRepeat::REPTARGETTRIGGERS GetTargetTrigger() const
Returns the target trigger for the backwards repeat. This value also affects how the GetTargetMeasure...
Definition ff_other.h:23396
void SetBottomBracketPosition(Evpu16 position)
Sets the vertical bottom position of the bracket.
Definition ff_other.h:23433
void SetRightBracketPosition(Evpu16 position)
Sets the horizontal right-side position of the bracket.
Definition ff_other.h:23442
twobyte GetStaffListID() const
Gets the staff list ID.
Definition ff_other.h:23290
Evpu16 GetBottomBracketPosition() const
Returns the vertical bottom position of the bracket.
Definition ff_other.h:23263
Evpu16 GetRightBracketPosition() const
Returns the horizontal right-side position of the bracket.
Definition ff_other.h:23272
void SetTotalPasses(twobyte passes)
Sets the number of passes for the playback. This is used as value for "Jump on Pass" as well.
Definition ff_other.h:23377
void SetVisible(bool state)
Sets if the repeat is visible. ("Show" is checked in the context menu.)
Definition ff_other.h:23367
void SetIndividualPositioning(bool state)
Returns true if the bracket has individual positioning.
Definition ff_other.h:23358
eMeas GetTargetMeasure() const
Sets the playback destination measure for the backward repeat.
Definition ff_other.h:23214
void SetLeftBracketPosition(Evpu16 position)
Sets the horizontal left-side position of the bracket.
Definition ff_other.h:23451
Evpu16 GetTopBracketPosition() const
Returns the vertical top position of the bracket.
Definition ff_other.h:23254
void SetTargetTrigger(FCTextRepeat::REPTARGETTRIGGERS value)
Set the target trigger for the backward repeat. This method should also be combined with a SetTargetM...
Definition ff_other.h:23473
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_other.h:23186
bool GetVisible() const
Returns true if the repeat is visible. ("Show" is checked in the context menu.)
Definition ff_other.h:23235
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:23185
void SetResetOnRepeatAction(bool state)
Sets the "Reset on Repeat Action" state.
Definition ff_other.h:23507
void SetTargetMeasure(eMeas measure)
Sets the playback destination measure for the backward repeat.
Definition ff_other.h:23349
bool GetResetOnRepeatAction() const
Returns the "Reset on Repeat Action" state.
Definition ff_other.h:23415
void SetShowMode(FCTextRepeat::REPSHOWMODES mode)
Sets where the backward repeat should be shown.
Definition ff_other.h:23319
FCBackwardRepeat()
The constructor.
Definition ff_other.h:23202
FCTextRepeat::REPACTIONS GetAction() const
Returns the action type for the backward repeat. This controls what should happen when the text repea...
Definition ff_other.h:23525
Evpu16 GetLeftBracketPosition() const
Returns the horizontal left-side position of the bracket.
Definition ff_other.h:23281
bool GetIndividualPositioning() const
Returns true if the bracket has individual positioning.
Definition ff_other.h:23223
void SetStaffListID(twobyte stafflistid)
Sets the staff list ID.
Definition ff_other.h:23460
void SetTopBracketPosition(Evpu16 position)
Sets the vertical position of the bracket.
Definition ff_other.h:23424
twobyte GetTotalPasses() const
Returns the number of passes for the playback. This is used as value for "Jump on Pass" as well.
Definition ff_other.h:23245
void SetAction(FCTextRepeat::REPACTIONS mode)
Sets the action type for the backward repeat. This controls what should happen when the backward repe...
Definition ff_other.h:23553
The class for one single beat chart element.
Definition ff_other.h:23615
Evpu16 GetMinimumPosition() const
Returns the minimum position for the element.
Definition ff_other.h:23734
void SetNextHorizontalPosition(Evpu16 value)
Sets the next position in the measure.
Definition ff_other.h:23877
void SetMinimumPosition(Evpu16 value)
Sets the minimum position for the element.
Definition ff_other.h:23893
Evpu16 GetReferenceWidth() const
Returns the reference width for the beat chart.
Definition ff_other.h:23801
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:23659
void SetHorizontalPosition(Evpu16 position)
Sets the position of the beat chart element.
Definition ff_other.h:23863
bool GetInitElement() const
Returns true if it's the first (init) element in the chart. The init element defines the full beat ch...
Definition ff_other.h:23812
void SetFullSpan(Evpu16 span)
Sets the full span for the beat chart.
Definition ff_other.h:23917
Evpu16 GetHorizontalPosition() const
Returns the position in the measure for the element (in EVPUs).
Definition ff_other.h:23706
Evpu16 GetNextHorizontalPosition() const
Returns the next position in the measure.
Definition ff_other.h:23719
void SetMeasurePos(TimeEdu32 edupos)
Sets the duration reference position for the element.
Definition ff_other.h:23839
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_other.h:23660
TimeEdu32 GetTotalDuration() const
Returns the total duration for the beat chart.
Definition ff_other.h:23750
Evpu16 GetMinimumWidth() const
Returns the minimum width for the beat chart.
Definition ff_other.h:23783
FCBeatChartElement()
The constructor.
Definition ff_other.h:23677
bool MoveHorizontalPosition(Evpu16 offset, FCBeatChartElements *pBeatChart)
"Moves" the beat chart element by the offset amount.
Definition finaleframework.cpp:11751
void SetMinimumWidth(Evpu16 width)
Sets the minimum width for the beat chart.
Definition ff_other.h:23932
TimeEdu32 GetMeasurePos() const override
Return the duration reference position for the element.
Definition ff_other.h:23697
Evpu16 CalcWidth()
Calculates and returns the width of the beat chart element.
Definition ff_other.h:23826
void SetReferenceWidth(Evpu16 width)
Sets the reference width for the beat chart.
Definition ff_other.h:23944
Evpu16 GetFullSpan() const
Returns the full span for the beat chart.
Definition ff_other.h:23765
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:23967
void SetWidth(Evpu16 width)
Sets the width of the beat chart element.
Definition ff_other.h:23851
void SetTotalDuration(TimeEdu32 dura)
Sets the total duration for the beat chart. This should be the same duration as the measure.
Definition ff_other.h:23905
Collection class for FCBeatChartElement class objects (which is a beat chart for a measure).
Definition ff_othercollection.h:1543
The class for a Finale bookmark.
Definition ff_other.h:26526
FCBookmark()
The constructor.
Definition ff_other.h:26593
void SetViewType(BOOKMARKTYPES value)
Sets the view type for the bookmark.
Definition ff_other.h:26724
ePercent GetViewPercent() const
Get the view percent to which to scale the view. This value is only used if GetUseViewPercent is true...
Definition ff_other.h:26662
int GetHorizontalPosInst() const
Returns the first scroll locator for the bookmark.
Definition ff_other.h:26687
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:26814
void SetViewPercent(ePercent value)
Set the view percent to which to scale the view. This value is only used if SetUseViewPercent is true...
Definition ff_other.h:26738
int GetLocator() const
Returns the locator for the bookmark.
Definition ff_other.h:26676
bool IsForScrollView() const
Returns true if this bookmark is for Scroll View.
Definition ff_other.h:26810
void SetLocator(int value)
Sets the locator for the bookmark.
Definition ff_other.h:26753
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:26552
int GetVerticalPosStaffSet() const
Returns the second scroll locator for the bookmark.
Definition ff_other.h:26704
bool GetUseHorizontalPosInst() const
Indicates whether to use the value returned by GetHorizontalPosInst.
Definition ff_other.h:26693
void SetHorizontalPosInst(int value)
Sets the first scroll locator for the bookmark.
Definition ff_other.h:26764
BOOKMARKTYPES GetViewType() const
Returns the view type for the bookmark.
Definition ff_other.h:26654
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_other.h:26553
bool GetUseVerticalPosStaffSet() const
Indicates whether to use the value returned by GetVerticalPosStaffSet.
Definition ff_other.h:26715
bool IsForPageView() const
Returns true if this bookmark is for Page View.
Definition ff_other.h:26801
bool SaveNameString(const FCString *pString)
Saves the name of the bookmark.
Definition finaleframework.cpp:13376
BOOKMARKTYPES
The bookmark type.
Definition ff_other.h:26581
@ BOOKMARKTYPE_PAGEVIEW
Definition ff_other.h:26583
@ BOOKMARKTYPE_SCROLLVIEW
Definition ff_other.h:26586
void SetUseVerticalPosStaffSet(bool state)
Sets whether to use the value specified by SetVerticalPosStaffSet.
Definition ff_other.h:26793
void SetUseHorizontalPosInst(bool state)
Sets whether to use the value specified by SetHorizontalPosInst.
Definition ff_other.h:26770
void SetVerticalPosStaffSet(int value)
Sets the second scroll locator for the bookmark.
Definition ff_other.h:26781
void SetUseViewPercent(bool state)
Sets if the view will be scaled. The scale value is specified by SetViewPercent.
Definition ff_other.h:26744
FCString * CreateNameString()
Creates a string with the name of the bookmark. This is the string that appears in Finale's Bookmarks...
Definition ff_other.h:26611
bool GetUseViewPercent() const
Indicates if the view will be scaled. The scale value is specified by GetViewPercent.
Definition ff_other.h:26668
Text used for a bookmarks. Please refer to the FCBookmark class.
Definition ff_text.h:372
Class for a category definition.
Definition ff_other.h:13416
void SetVerticalEntryOffset(twobyte value)
Sets the vertical "Additional Entry Offset" value in the category definition.
Definition ff_other.h:14319
bool GetOverrideStaffList() const
Gets the value for if staff lists are used for this category.
Definition ff_other.h:13802
bool UsesStaffList()
Returns true if the category uses a staff list.
Definition ff_other.h:14201
bool IsDefaultMiscellaneous()
Returns true if the category is the standard (pre-defined/Finale-created) category "Miscellaneous".
Definition ff_other.h:14125
bool GetBreakMMRest() const
Gets the "Break Multi-measure rest" option from the category definition. For many categories,...
Definition ff_other.h:13793
bool UsesTextFont()
Returns true if the category uses the text font settings.
Definition ff_other.h:14207
FCFontInfo * CreateTextFontInfo()
Creates a FCFontInfo object from the text font.
Definition ff_other.h:14096
HORIZ_JUSTIFICATION
The horizontal justification settings for the category.
Definition ff_other.h:13750
@ EXPRJUSTIFY_CENTER
Definition ff_other.h:13755
@ EXPRJUSTIFY_RIGHT
Definition ff_other.h:13758
@ EXPRJUSTIFY_LEFT
Definition ff_other.h:13752
void SetName(FCString *pString)
Sets the name of the category.
Definition ff_other.h:14227
HORIZ_JUSTIFICATION GetHorizontalJustification() const
Gets the "Horizontal Justification" in the category definition.
Definition ff_other.h:13952
HORIZ_ALIGNMENT GetHorizontalAlignmentPoint() const
Gets the "Horizontal Alignment Point" in the category definition.
Definition ff_other.h:13967
bool SaveNewWithType(CATEGORY_DEFAULTIDS type)
Creates a new category definition based on the input type. The new category inherits features of the ...
Definition finaleframework.cpp:10249
FCString * CreateName()
Creates a string object with the category name.
Definition ff_other.h:13898
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:13643
bool GetNumberFontInfo(FCFontInfo *pInfo)
Gets the font info for the number font.
Definition ff_other.h:14017
VERT_ALIGNMENT
The vertical alignment points available to categories and expressions.
Definition ff_other.h:13662
@ ALIGNVERT_BELOWENTRY
Definition ff_other.h:13685
@ ALIGNVERT_BELOW_STAFF_BASELINE
Definition ff_other.h:13673
@ ALIGNVERT_CLICKPOS
Definition ff_other.h:13664
@ ALIGNVERT_BOTTOMNOTE
Definition ff_other.h:13679
@ ALIGNVERT_STAFF_REFERENCE_LINE
Definition ff_other.h:13667
@ ALIGNVERT_ABOVE_STAFF_BASELINE
Definition ff_other.h:13670
@ ALIGNVERT_BELOW_STAFF_BASELINE_OR_ENTRY
Definition ff_other.h:13691
@ ALIGNVERT_ABOVEENTRY
Definition ff_other.h:13682
@ ALIGNVERT_TOPNOTE
Definition ff_other.h:13676
@ ALIGNVERT_ABOVE_STAFF_BASELINE_OR_ENTRY
Definition ff_other.h:13688
void SetHorizontalOffset(twobyte value)
Sets the "Additional Horizontal Offset" in the category definition.
Definition ff_other.h:14357
twobyte GetVerticalEntryOffset() const
Returns the vertical "Additional Entry Offset" in the category definition.
Definition ff_other.h:13937
bool SetMusicFontInfo(FCFontInfo *pInfo)
Sets the font info for the music font.
Definition ff_other.h:14049
bool GetUserCreated() const
Returns true if the category was user created.
Definition ff_other.h:14115
CATEGORY_MODE
Constants used by the FCString::ReplaceCategoryFonts method.
Definition ff_other.h:13629
@ CATEGORYMODE_MUSIC
Definition ff_other.h:13637
@ CATEGORYMODE_NUMBER
Definition ff_other.h:13640
@ CATEGORYMODE_TEXT
Definition ff_other.h:13634
@ CATEGORYMODE_NONE
Definition ff_other.h:13631
void SetID(twobyte catID)
Sets the internal category ID.
Definition ff_other.h:14297
bool IsDefaultTechniqueText()
Returns true if the category is the standard (pre-defined/Finale-created) category "Technique Text".
Definition ff_other.h:14180
CATEGORY_DEFAULTIDS GetType() const
Returns the original default category ID upon which this category is based. For default categories,...
Definition ff_other.h:13834
void SetHorizontalJustification(HORIZ_JUSTIFICATION value)
Sets the "Horizontal Justification" in the category definition.
Definition ff_other.h:14330
twobyte GetHorizontalOffset() const
Gets the "Additional Horizontal Offset" in the category definition.
Definition ff_other.h:13977
bool GetTextFontInfo(FCFontInfo *pInfo)
Gets the font info for the text font.
Definition ff_other.h:13989
CATEGORY_DEFAULTIDS
The default/predefined category IDs in Finale.
Definition ff_other.h:13603
@ DEFAULTCATID_TEMPOALTERATIONS
Definition ff_other.h:13611
@ DEFAULTCATID_DYNAMICS
Definition ff_other.h:13605
@ DEFAULTCATID_TECHNIQUETEXT
Definition ff_other.h:13617
@ DEFAULTCATID_EXPRESSIVETEXT
Definition ff_other.h:13614
@ DEFAULTCATID_REHEARSALMARK
Definition ff_other.h:13620
@ DEFAULTCATID_TEMPOMARKS
Definition ff_other.h:13608
bool SetTextFontInfo(FCFontInfo *pInfo)
Sets the font info for the text font.
Definition ff_other.h:14032
void SetHorizontalAlignmentPoint(HORIZ_ALIGNMENT value)
Sets the "Horizontal Alignment Point" value in the category definition.
Definition ff_other.h:14368
bool IsDefaultExpressiveText()
Returns true if the category is the standard (pre-defined/Finale-created) category "Expressive Text".
Definition ff_other.h:14169
bool UsesNumberFont()
Returns true if the category uses the number font settings.
Definition ff_other.h:14219
bool IsIdentical(const __FCBase *pObject) const override
Overridden method to provide comparison of category definitions.
Definition ff_other.h:13776
bool IsDefaultTempoMarks()
Returns true if the category is the standard (pre-defined/Finale-created) category "Tempo Marks".
Definition ff_other.h:14147
bool IsDefaultTempoAlterations()
Returns true if the category is the standard (pre-defined/Finale-created) category "Tempo Alterations...
Definition ff_other.h:14158
void SetBreakMMRest(bool state)
Sets the flag for if the category should break multimeasure rests.
Definition ff_other.h:14279
void SetOverrideStaffList(bool state)
Gets the value for if staff lists are used for this category. Use with care!
Definition ff_other.h:14288
void SetUserCreated(bool value)
Sets the user-defined state. Use with care!
Definition ff_other.h:14273
void SetVerticalBaselineOffset(twobyte value)
Sets the vertical "Additional Baseline Offset" value in the category definition.
Definition ff_other.h:14308
bool GetMusicFontInfo(FCFontInfo *pInfo)
Gets the font info for the music font.
Definition ff_other.h:14003
void SetStaffListID(twobyte value)
(Only works on Finale 2014b and above.) Sets the staff list ID for the category def.
Definition ff_other.h:14083
twobyte GetVerticalBaselineOffset() const
Returns the vertical "Additional Baseline Offset" in the category definition.
Definition ff_other.h:13930
void SetVerticalAlignmentPoint(VERT_ALIGNMENT value)
Sets the vertical alignment point for the category definition positioning.
Definition ff_other.h:14256
bool IsDefaultRehearsalMarks()
Returns true if the category is the standard (pre-defined/Finale-created) category "Rehearsal Marks".
Definition ff_other.h:14191
bool UsesMusicFont()
Returns true if the category uses the music font settings.
Definition ff_other.h:14213
bool IsDefaultDynamics()
Returns true if the category is the standard (pre-defined/Finale-created) category "Dynamics".
Definition ff_other.h:14136
VERT_ALIGNMENT GetVerticalAlignmentPoint() const
Returns the vertical alignment point for the category definition positioning.
Definition ff_other.h:13923
void GetName(FCString *pString) const
Gets the name of the category and copies it to an existing string object.
Definition ff_other.h:13878
FCCategoryDef()
The constructor.
Definition ff_other.h:13765
twobyte GetID() const
Returns the internal category ID. This is a read-only value.
Definition ff_other.h:13815
twobyte GetStaffListID() const
(Only works on Finale 2014b and above.) Returns the staff list ID for the category def.
Definition ff_other.h:13866
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_other.h:13644
HORIZ_ALIGNMENT
The horizontal alignment points available to categories and expressions.
Definition ff_other.h:13700
@ ALIGNHORIZ_CENTERPRIMARYNOTEHEAD
Definition ff_other.h:13714
@ ALIGNHORIZ_LEFTOFALLNOTEHEAD
Definition ff_other.h:13705
@ ALIGNHORIZ_STEM
Definition ff_other.h:13711
@ ALIGNHORIZ_TIMESIGSTART
Definition ff_other.h:13726
@ ALIGNHORIZ_RIGHTALLNOTEHEADS
Definition ff_other.h:13720
@ ALIGNHORIZ_CENTEROVERUNDERMUSIC
Definition ff_other.h:13738
@ ALIGNHORIZ_LEFTBARLINE
Definition ff_other.h:13723
@ ALIGNHORIZ_CLICKPOS
Definition ff_other.h:13702
@ ALIGNHORIZ_CENTERALLNOTEHEADS
Definition ff_other.h:13717
@ ALIGNHORIZ_RIGHTBARLINE
Definition ff_other.h:13741
@ ALIGNHORIZ_STARTOFMUSIC
Definition ff_other.h:13732
@ ALIGNHORIZ_LEFTOFPRIMARYNOTEHEAD
Definition ff_other.h:13708
@ ALIGNHORIZ_CENTERBETWEENBARLINES
Definition ff_other.h:13735
@ ALIGNHORIZ_AFTERCLEFKEYTIMEREPEAT
Definition ff_other.h:13729
bool SetNumberFontInfo(FCFontInfo *pInfo)
Sets the font info for the number font.
Definition ff_other.h:14066
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:14382
Contains a clef change inside a cell. This is an item member in a FCCellClefChanges collection (creat...
Definition ff_other.h:25850
void SetClefShow(twobyte showstate)
Sets the clef show state.
Definition finaleframework.cpp:13229
void SetClefPercent(twobyte value)
Set the clef resizing, in percent.
Definition ff_other.h:25977
TimeEdu32 GetMeasurePos() const override
Returns the measure position (in EDUs) where the clef is placed in the measure.
Definition ff_other.h:25915
twobyte GetHorizontalOffset() const
Returns the horizontal adjustment for the mid-clef change.
Definition ff_other.h:25927
twobyte GetVerticalOffset() const
Returns the vertical adjustment for the mid-clef change.
Definition ff_other.h:25933
bool GetAllowVerticalDrag() const
Returns the "Allow Vertical Drag" setting.
Definition ff_other.h:25946
bool GetClefAfterBarline() const
Returns true if the clef should appear to the right of the barline. Only affects the first clefs in t...
Definition ff_other.h:25953
void SetMeasurePos(twobyte value)
Sets the measure position (in EDUs) where the clef is placed in the measure.
Definition ff_other.h:25971
twobyte GetClefIndex() const
Returns the clef index.
Definition ff_other.h:25906
twobyte GetClefPercent() const
Returns the clef resizing, in percent.
Definition ff_other.h:25921
void SetHorizontalOffset(twobyte value)
Sets the horizontal adjustment for the mid-clef change.
Definition ff_other.h:25983
twobyte GetClefShow() const
Sets the clef display state.
Definition finaleframework.cpp:13219
bool IsStartClef()
Returns true if it's the starting clef in the cell.
Definition ff_other.h:26020
void SetClefAfterBarline(bool state)
Sets if the clef should appear to the right of the barline. Only affects the first clefs in the cell.
Definition ff_other.h:26014
FCCellClefChange()
The constructor.
Definition finaleframework.cpp:13206
void SetAllowVerticalDrag(bool state)
Sets the "Allow Vertical Drag" setting.
Definition ff_other.h:26007
void SetVerticalOffset(twobyte value)
Sets the vertical adjustment for the mid-clef change.
Definition ff_other.h:25989
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_other.h:25884
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:25883
void SetClefIndex(twobyte value)
Sets the clef index.
Definition ff_other.h:25959
Collection class for FCCellClefChange class objects, containing all mid-clef changes in a cell.
Definition ff_othercollection.h:2247
The class that reference a cell (one measure on one staff) in the musical "grid".
Definition ff_cell.h:18
Class that stores one record of a chord suffix definition.
Definition ff_other.h:21677
void SetHorizontalOffset(twobyte value)
Sets the horizontal offset value (from base symbol).
Definition finaleframework.cpp:11513
bool GetPrefixMinus() const
Returns true if the "prefix with minus" is used.
Definition finaleframework.cpp:11471
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:21719
bool GetNumberRepresentation() const
Returns true if the symbol is a number instead of a character slot.
Definition finaleframework.cpp:11353
bool GetPrefixFlat() const
Returns true if the "prefix with flat" is used.
Definition finaleframework.cpp:11381
void GetFontInfo(FCFontInfo *pFontInfo)
Gets the font information for the chords suffix.
Definition finaleframework.cpp:11288
bool GetPrefixPlus() const
Returns true if the "prefix with plus" is used.
Definition finaleframework.cpp:11441
eUniChar32 GetSymbol() const
Returns the suffix character symbols.
Definition finaleframework.cpp:11325
twobyte GetVerticalOffset() const
Returns the vertical offset value (from base symbol).
Definition finaleframework.cpp:11528
void SetPrefixSharp(bool state)
Sets if the "prefix with sharp" should be used or not.
Definition finaleframework.cpp:11426
twobyte GetHorizontalOffset() const
Returns the horizontal offset value (from base symbol).
Definition finaleframework.cpp:11499
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_other.h:21720
void SetVerticalOffset(twobyte value)
Sets the vertical offset value (from base symbol).
Definition finaleframework.cpp:11542
void SetNumberRepresentation(bool state)
Sets if the symbol is a number or a character slot.
Definition finaleframework.cpp:11367
void SetSymbol(eUniChar32 symbol)
Sets the suffix character symbols.
Definition finaleframework.cpp:11339
void SetPrefixFlat(bool state)
Sets if the "prefix with flat" should be used or not.
Definition finaleframework.cpp:11396
void SetFontInfo(FCFontInfo *pFontInfo)
Sets the font information for the chords suffix.
Definition finaleframework.cpp:11307
FCChordSuffixElement()
The constructor.
Definition finaleframework.cpp:11240
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:21852
void SetPrefixMinus(bool state)
Sets if the "prefix with minus" should be used or not.
Definition finaleframework.cpp:11485
void SetPrefixPlus(bool state)
Sets if the "prefix with plus" should be used or not.
Definition finaleframework.cpp:11456
bool GetPrefixSharp() const
Returns true if the "prefix with sharp" is used.
Definition finaleframework.cpp:11411
Data class for the global clef definitions.
Definition ff_globals.h:51
A collection of __FCCompositeTimeSigBottomElement records.
Definition ff_other.h:920
int GetGroupElementBeatDuration(int groupindex, int subindex) const
Returns the beat duration for a group element.
Definition ff_other.h:1114
void SetGroupElementBeatDuration(int groupindex, int subindex, twobyte value)
Sets the beat duration for a group element.
Definition ff_other.h:1203
virtual ~FCCompositeTimeSigBottom()
The destructor.
Definition ff_other.h:1059
bool SaveAll() override
Overridden SaveAll method that repacks the composite bottom time sig.
Definition ff_other.h:1218
int GetGroupCount() const
Calculates and returns the number of top time sig groups.
Definition ff_other.h:1073
int GetGroupElementCount(int groupindex) const
Returns the number of items in the composite time sig group.
Definition ff_other.h:1091
bool DeleteGroup(int groupindex)
Deletes a group from the array.
Definition ff_other.h:1175
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:1046
int GetElementCount() const
Returns the number of array elements for all the bottom time sig digits.
Definition ff_other.h:1125
bool SaveAllForItem(CMPER cmper) override
Overridden SaveAllForItem method that repacks the composite top time sig according to the cmper.
Definition ff_other.h:1237
FCCompositeTimeSigBottom()
The constructor.
Definition ff_other.h:1052
int AddGroup(int elementcount=1)
Adds a group to the end of the top composite time sig.
Definition ff_other.h:1138
A collection of __FCCompositeTimeSigTopElement records.
Definition ff_other.h:516
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:636
void SetGroupElementBeatsWithFraction(int groupindex, int subindex, double value)
Sets the beat number for a group element.
Definition ff_other.h:839
void MergeWithPreviousGroup(int groupindex)
Merges the beat group with the previous beat group, by removing the "start group flag" from the group...
Definition ff_other.h:719
bool SaveAllForItem(CMPER cmper) override
Overridden SaveAllForItem method that repacks the composite top time sig according to the cmper.
Definition ff_other.h:884
double GetGroupElementBeatsWithFraction(int groupindex, int subindex) const
Returns the fractional beat number for a group element.
Definition ff_other.h:796
FCCompositeTimeSigTop()
The constructor.
Definition ff_other.h:642
bool SaveAll() override
Overridden SaveAll method that repacks the composite top time sig.
Definition ff_other.h:865
int GetElementCount() const
Returns the number of array elements for all the top time sig digits.
Definition ff_other.h:811
void SetGroupElementBeats(int groupindex, int subindex, twobyte value)
Sets the beat number for a group element.
Definition ff_other.h:824
int CalcTotalGroupBeats(int groupindex) const
Returns the accumulated number of beats the composite group element.
Definition ff_other.h:760
int GetGroupElementBeats(int groupindex, int subindex) const
Returns the beat number for a group element.
Definition ff_other.h:780
virtual ~FCCompositeTimeSigTop()
The destructor.
Definition ff_other.h:649
int GetGroupElementCount(int index) const
Returns the number of items in the composite time sig group.
Definition ff_other.h:736
int GetGroupCount() const
Calculates and returns the number of top time sig groups.
Definition ff_other.h:663
int AddGroup(int elementcount)
Adds a group to the end of the top composite time sig.
Definition ff_other.h:681
The class for a "current staff state" (the sum of staff changes and staff style changes) at a specifi...
Definition ff_other.h:12206
bool LoadForEntry(const FCNoteEntry *pNoteEntry)
Loads the staff spec data based on the position in the note entry.
Definition finaleframework.cpp:9322
int GetConnectedStaff() const
Returns the connected staff for loaded data.
Definition ff_other.h:12274
bool LoadForCell(FCCell *pCell, TimeEdu32 durationpos)
Loads the staff spec data based on a position in a cell.
Definition finaleframework.cpp:9332
int GetConnectedMeasure() const
Returns the connected measure for loaded data.
Definition ff_other.h:12268
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:12229
int GetConnectedDurationPos() const
Returns the connected duration position for loaded data.
Definition ff_other.h:12262
Class that allows access to custom key modes. (Finale calls them "Nonstandard Key Signatures",...
Definition ff_other.h:27298
static bool DeleteItemNo(CMPER itemno)
Class function that deletes all data associated with an item number.
Definition ff_other.h:27432
void SetBaseTonalCenter(twobyte value)
Sets the base tonal center for the key mode.
Definition ff_other.h:27783
static std::map< twobyte, twobyte > GetDefaultAccidentalAmounts()
Class method that returns the default accidental amounts for the key signatures in common practice no...
Definition ff_other.h:28004
void SetMiddleKeyNumber(twobyte value)
Sets the "Middle Key Number" value from the Special Key Signature Attributes dialog.
Definition ff_other.h:27531
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:27352
std::map< twobyte, twobyte > GetAccidentalOrder() const
Definition ff_other.h:27844
twobyte GetBaseTonalCenter() const
Returns the base tonal center for the key mode.
Definition ff_other.h:27761
void SetAccidentalOrder(const std::map< twobyte, twobyte > &values)
Definition ff_other.h:27910
bool GetHasClefAccidentalPlacements() const
Returns whether the custom key mode has accidental octave placement records.
Definition ff_other.h:27583
void SetSymbolListID(twobyte value)
Sets the item number (ID) of the custom symbol list for accidentals. (Setting this value to zero caus...
Definition ff_other.h:27575
static bool CalcIsDefaultAccidentalAmounts(const std::map< twobyte, twobyte > &values)
Class function that returns true if the input accidental amounts match the default setting.
Definition ff_other.h:28013
std::map< twobyte, twobyte > GetAccidentalAmounts() const
Definition ff_other.h:27943
std::map< twobyte, twobyte > GetTonalCenters() const
Returns the table of tonal centers by number of sharps/flats.
Definition ff_other.h:27693
EFONTID GetAccidentalFontID() const
Returns the font ID for accidental symbols.
Definition ff_other.h:27599
void SetAccidentalAmounts(const std::map< twobyte, twobyte > &values)
Definition ff_other.h:27996
void SetDiatonicStepsMap(const std::vector< eHarmLev > &list)
Sets a list specifiying the chromatic step where each diatonic step occurs.
Definition ff_other.h:27682
twobyte GetMiddleKeyNumber() const
Returns the "Middle Key Number" value from the Special Key Signature Attributes dialog.
Definition ff_other.h:27512
twobyte GetHarmonicReference() const
Returns the "Harmonic Reference" value from the Special Key Signature Attributes dialog.
Definition ff_other.h:27494
bool SaveNewNonLinear()
saves the current instance as new non-linear custom key mode.
Definition finaleframework.cpp:13655
static bool CalcIsDefaultClefAccidentalPlacements(const std::vector< std::map< twobyte, twobyte > > &values)
Class function that returns true if the input clef accidental placements match the default setting.
Definition ff_other.h:28089
bool IsLinear() const
Returns true if this is a linear mode.
Definition ff_other.h:27472
bool IsPredefined() const
Returns true if this is a predefined mode (major or minor).
Definition ff_other.h:27486
static std::map< twobyte, twobyte > GetDefaultAccidentalOrder()
Class method that returns the default accidental order for the key signatures in common practice nota...
Definition ff_other.h:27920
eKey GetKeyID(int accidentalnumber=0) const
Returns the key ID for this custom key mode, based on the input number of sharps or flats (for linear...
Definition ff_other.h:27448
twobyte GetSymbolListID() const
Returns the item number (ID) of the custom symbol list for accidentals, or zero if none....
Definition ff_other.h:27565
static std::vector< std::map< twobyte, twobyte > > GetDefaultClefAccidentalPlacements()
Class method that returns the default clef accidental placements for the key signatures in common pra...
Definition ff_other.h:28060
FCFontInfo * CreateAccidentalFontInfo() const
Creates an instance of FCFontInfo that matches the current setting of GetAccidentalFontID....
Definition finaleframework.cpp:13672
std::vector< std::map< twobyte, twobyte > > GetClefAccidentalPlacements() const
Definition ff_other.h:28026
static bool CalcIsDefaultAccidentalOrder(const std::map< twobyte, twobyte > &values)
Class function that returns true if the input accidental order matches the default setting.
Definition ff_other.h:27929
void SetHasClefAccidentalPlacements(bool state)
Sets whether the custom key mode has accidental octave placement records.
Definition ff_other.h:27591
void SetGoToKeyUnit(twobyte value)
Sets the "Go to Key Unit" value from the Special Key Signature Attributes dialog.
Definition ff_other.h:27555
bool SaveNewLinear()
saves the current instance as new linear custom key mode.
Definition finaleframework.cpp:13637
static std::map< twobyte, twobyte > GetDefaultTonalCenters()
Class method that returns the default tonal centers for the major mode in common practice notation.
Definition ff_other.h:27821
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_other.h:27353
void SetTotalChromaticSteps(twobyte value)
Sets the "Total Steps" value from the Key Step Map dialog.
Definition ff_other.h:27650
static bool CalcIsDefaultTonalCenters(const std::map< twobyte, twobyte > &values)
Class function that returns true if the input tonal centers match the default setting.
Definition ff_other.h:27830
void SetTonalCenters(const std::map< twobyte, twobyte > &values)
Sets the table of tonal centers by number of sharps/flats.
Definition ff_other.h:27751
twobyte GetTotalChromaticSteps() const
Returns the "Total Steps" value from the Key Step Map dialog.
Definition ff_other.h:27637
void SetHarmonicReference(twobyte value)
Sets the "Harmonic Reference" value from the Special Key Signature Attributes dialog.
Definition ff_other.h:27504
twobyte GetGoToKeyUnit() const
Returns the "Go to Key Unit" value from the Special Key Signature Attributes dialog.
Definition ff_other.h:27539
FCCustomKeyModeDef()
The constructor.
Definition ff_other.h:27359
bool IsNonLinear() const
Returns true if this is a non-linear mode.
Definition ff_other.h:27480
void SetAccidentalFontID(const EFONTID value)
Sets the font ID for accidental symbols.
Definition ff_other.h:27611
FCKeySignature * CreateKeySignature(eHarmAlt alteration=0) const
Creates a FCKeySignature instance for this custom key signature.
Definition finaleframework.cpp:13686
std::vector< eHarmLev > GetDiatonicStepsMap() const
Returns a list specifying the chromatic step where each diatonic step occurs.
Definition ff_other.h:27670
void SetClefAccidentalPlacements(const std::vector< std::map< twobyte, twobyte > > &values)
Definition ff_other.h:28050
Class that encapsulates the list of accidental symbols for instances of FCCustomKeyModeDef....
Definition ff_other.h:27131
bool LoadFirst()
Loads the first item.
Definition finaleframework.cpp:13413
bool CalcIsDefaultList() const
Calculates if this is equal to the default symbol list.
Definition finaleframework.cpp:13498
FCCustomKeyModeSymbolList()
the constructor.
Definition ff_other.h:27153
bool Save()
Saves the item.
Definition finaleframework.cpp:13430
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:27142
bool DeleteData()
Delete the item from the Finale document.
Definition finaleframework.cpp:13451
bool SaveAs(CMPER itemno)
Saves the item with a new ID. If the ID exists, it will be overwritten with the list from this instan...
Definition ff_other.h:27187
bool LoadNext()
Loads the next item.
Definition finaleframework.cpp:13422
void SetList(symbolMap list)
Sets a list of strings that represent the symbols for each sharp, flat, or natural alteration.
Definition ff_other.h:27230
static symbolMap GetDefaultList()
Class function that returns a fully-populated default symbol list, based on the current document sett...
Definition finaleframework.cpp:13475
symbolMap GetList() const
Returns a list of strings that represent the symbols for each sharp, flat, or natural alteration.
Definition ff_other.h:27214
FCString * CreateListString() const
Returns a string of all the accidental symbol strings separated by spaces. This could be used as a de...
Definition finaleframework.cpp:13457
CMPER GetItemNo() const
Gets the item number. This value is meaningless if the instance has neither been loaded or saved.
Definition ff_other.h:27204
bool Load(CMPER itemno)
Loads the data for a given item.
Definition finaleframework.cpp:13396
Class to encapsulate enclosures (available for example in expressions and measure numbers....
Definition ff_other.h:2872
int GetLineWidth() const
Returns the line width (in 64ths of an EVPUs).
Definition ff_other.h:3253
void SetOpaque(bool state)
Sets the "opaque" state.
Definition ff_other.h:3171
void SetMode(ENCLOSUREMODES enclosuremode)
Set the enclosure sizing option.
Definition ff_other.h:3205
void SetRoundedCornerRadius(Efix32 radius)
Sets the corner radius (in EFIXes) for rounded corners on Finale 25.4 and above.
Definition ff_other.h:3196
ENCLOSUREMODES
The enclosure sizing options.
Definition ff_other.h:3021
@ ENCLOSUREMODE_MINWIDTH
Definition ff_other.h:3026
@ ENCLOSUREMODE_NONE
Definition ff_other.h:3023
@ ENCLOSUREMODE_MATCHDIMENSIONS
Definition ff_other.h:3029
void SetHorizontalOffset(int offset)
Sets the horizontal offset.
Definition ff_other.h:3119
bool SaveAs(CMPER itemno) override
Overridden version of SaveAs.
Definition ff_other.h:3369
bool GetOpaque() const
Returns the "opaque" state.
Definition ff_other.h:3315
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_other.h:2970
void SetRoundedCorners(bool state)
Sets if rounded corners should be used (on Finale 25.4 and later) for the enclosure.
Definition ff_other.h:3184
void SetHorizontalMargin(int margin)
Sets the horizontal margin (which is half the width value in the enclosure dialog box).
Definition ff_other.h:3140
void SetVerticalOffset(int offset)
Sets the vertical offset.
Definition ff_other.h:3129
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
bool GetFixedSize() const
Returns the "fixed size" state.
Definition ff_other.h:3305
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:2969
void SetFixedSize(bool state)
Sets the "fixed size" state.
Definition ff_other.h:3161
ENCLOSURESHAPE GetShape() const
Returns the shape of the enclosure.
Definition ff_other.h:3242
int GetHorizontalOffset() const
Returns the horizontal offset.
Definition ff_other.h:3263
void SetLineWidth(int width)
Sets the line width (in 64ths of a EVPUs).
Definition ff_other.h:3109
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:3377
void SetVerticalMargin(int margin)
Sets the vertical margin (which is half the height value in the enclosure dialog box).
Definition ff_other.h:3151
bool GetRoundedCorners() const
Returns if rounded corners should be used (on Finale 25.4 and later) for the enclosure.
Definition ff_other.h:3329
ENCLOSURESHAPE
The enclosure shapes.
Definition ff_other.h:2990
@ ENCLOSURE_ELLIPSE
Definition ff_other.h:2998
@ ENCLOSURE_PENTAGON
Definition ff_other.h:3007
@ ENCLOSURE_DIAMOND
Definition ff_other.h:3004
@ ENCLOSURE_OCTAGON
Definition ff_other.h:3016
@ ENCLOSURE_TRIANGLE
Definition ff_other.h:3001
@ ENCLOSURE_RECTANGLE
Definition ff_other.h:2995
@ ENCLOSURE_NONE
Definition ff_other.h:2992
@ ENCLOSURE_SEPTAGON
Definition ff_other.h:3013
@ ENCLOSURE_HEXAGON
Definition ff_other.h:3010
ENCLOSUREMODES GetMode() const
Returns the enclosure sizing option.
Definition ff_other.h:3357
int GetVerticalOffset() const
Returns the vertical offset.
Definition ff_other.h:3273
int GetHorizontalMargin() const
Returns the horizontal margin (which is half the width value in the enclosure dialog box).
Definition ff_other.h:3284
Efix32 GetRoundedCornerRadius() const
Returns the corner radius (in EFIXes) for rounded corners on Finale 25.4 and above.
Definition ff_other.h:3342
void SetShape(ENCLOSURESHAPE shape)
Sets the shape for the enclosure.
Definition ff_other.h:3088
FCEnclosure()
The constructor.
Definition ff_other.h:3050
int GetVerticalMargin() const
Returns the vertical margin (which is half the height value in the enclosure dialog box).
Definition ff_other.h:3295
The class for a start of repeat bracket in the document. There can only be one ending repeat in each ...
Definition ff_other.h:22668
void SetVerticalTopBracketPosition(Evpu16 position)
Sets the top vertical position of the repeat bracket.
Definition ff_other.h:22933
void SetVerticalLeftBracketPosition(Evpu16 position)
Sets the vertical position of the repeat bracket's left side.
Definition ff_other.h:22951
bool GetVisible() const
Returns true if the repeat is visible. ("Show" is checked in the context menu.)
Definition ff_other.h:22764
eMeas GetTargetMeasure() const
Returns the target measure number.
Definition ff_other.h:22743
bool DeepDeleteData() override
Reimplementation of DeepDeleteData(). Deletes both the basic repeat ending data and the optional repe...
Definition finaleframework.cpp:12443
FCEndingRepeat()
The constructor.
Definition ff_other.h:22703
void SetVisible(bool state)
Sets if the repeat is visible. ("Show" is checked in the context menu.)
Definition ff_other.h:22924
void SetSkipOnIgnore(bool state)
Returns the "Skip ending if ignoring repeats" setting.
Definition ff_other.h:22896
Evpu16 GetVerticalTopBracketPosition() const
Returns the top vertical position of the bracket.
Definition ff_other.h:22773
void SetStaffListID(twobyte list)
Sets the staff list ID to be used.
Definition ff_other.h:22885
Evpu16 GetHorizontalLeftBracketPosition() const
Returns the horizontal position of the bracket's left side.
Definition ff_other.h:22782
FCString * CreateTextString()
Loads the text for an ending repeat and returns it in a FCString object.
Definition finaleframework.cpp:12502
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:22688
Evpu16 GetHorizontalTextPosition() const
Returns the horizontal position of the repeat text.
Definition ff_other.h:22818
FCSeparatePlacements * CreateTextSeparatePlacements()
Creates a FCSeparatePlacements collection and loads it with all matching independent positioning reco...
Definition finaleframework.cpp:12587
bool SetPassNumbers(FCNumbers *pNumbers)
Sets the pass numbers for the repeat ending.
Definition finaleframework.cpp:12531
Evpu16 GetVerticalTextPosition() const
Returns the vertical position of the repeat text.
Definition ff_other.h:22827
void SetVerticalTextPosition(Evpu16 position)
Sets the vertical position of the repeat text.
Definition ff_other.h:22987
bool DeepSaveAs(CMPER itemno) override
Reimplementation of DeepDeleteAs(). Saves both the basic repeat ending data and the optional repeat t...
Definition finaleframework.cpp:12454
FCTextRepeat::REPSHOWMODES GetShowMode() const
Returns where the ending repeat should be shown.
Definition finaleframework.cpp:12470
void SetShowMode(FCTextRepeat::REPSHOWMODES mode)
Sets where the ending repeat should be shown.
Definition finaleframework.cpp:12477
Evpu16 GetVerticalRightBracketPosition() const
Returns the vertical position of the bracket's right side.
Definition ff_other.h:22809
void SetTargetTrigger(FCTextRepeat::REPTARGETTRIGGERS value)
Set the target trigger for the ending repeat. This method should also be combined with a SetTargetMea...
Definition ff_other.h:23066
void SetHorizontalLeftBracketPosition(Evpu16 position)
Sets the horizontal position of the repeat bracket's left side.
Definition ff_other.h:22942
void SetHorizontalTextPosition(Evpu16 position)
Sets the horizontal position of the repeat text.
Definition ff_other.h:22978
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_other.h:22689
Evpu16 GetVerticalLeftBracketPosition() const
Returns the vertical position of the bracket's left side.
Definition ff_other.h:22791
bool GetSkipOnIgnore() const
Returns the "Skip ending if ignoring repeats" setting.
Definition ff_other.h:22734
Evpu16 GetHorizontalRightBracketPosition() const
Returns the horizontal position of the bracket's right side.
Definition ff_other.h:22800
void SetHorizontalRightBracketPosition(Evpu16 position)
Sets the horizontal position of the repeat bracket's right side.
Definition ff_other.h:22960
void SetIndividualPositioning(bool state)
Sets if the repeat bracket has individual staff positioning enabled or not.
Definition ff_other.h:22915
bool GetPassNumbers(FCNumbers *pNumbers)
Fills the pass numbers in a FCNumbers collection.
Definition finaleframework.cpp:12519
twobyte GetStaffListID() const
Returns the staff list ID to be used for the text repeat assignment.
Definition ff_other.h:22728
int GetPassNumbersCount() const
Returns the number of pass numbers available to the ending repeat.
Definition ff_other.h:22849
FCSeparatePlacements * CreateSeparatePlacements()
Creates a FCSeparatePlacements collection and loads it with all matching independent positioning reco...
Definition finaleframework.cpp:12573
FCTextRepeat::REPTARGETTRIGGERS GetTargetTrigger() const
Returns the target trigger for the ending repeat. This value also affects how the GetTargetMeasure() ...
Definition ff_other.h:22864
bool GetIndividualPositioning() const
Returns true if the bracket has individual staff positioning enabled.
Definition ff_other.h:22752
void SetTargetMeasure(eMeas measure)
Returns the target measure number. The value is dependent on GetTargetTrigger(), which is set with Se...
Definition ff_other.h:22906
bool SaveTextString(FCString *pString)
Saves a FCString object for the ending repeat.
Definition finaleframework.cpp:12510
void SetVerticalRightBracketPosition(Evpu16 position)
Sets the vertical position of the repeat bracket's right side.
Definition ff_other.h:22969
The class for an executable shape definition.
Definition ff_other.h:21590
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:21655
twobyte GetShapeID()
Returns the shape ID that is connected to the executable shape.
Definition ff_other.h:21648
void SetShapeID(twobyte shapeID)
Sets the shape ID that is connected to the executable shape.
Definition ff_other.h:21652
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_other.h:21630
FCExecutableShapeDef()
The constructor.
Definition ff_other.h:21644
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:21629
Class for expression assignments to a measure/staff.
Definition ff_other.h:17641
bool IsSingleStaffAssigned()
Returns true if the expression is assigned to a single staff.
Definition ff_other.h:17996
twobyte GetGraceNoteIndex() const
Returns the grace note index that the expression is connected to.
Definition ff_other.h:17939
bool GetVisible() const
Returns the display state of the expression (relative to the active part).
Definition ff_other.h:17903
void SetScaleWithEntry(bool state)
Sets if the expression should scale to entry.
Definition ff_other.h:18167
void SetMeasurePos(TimeEdu32 value)
Sets the expression position in EDUs.
Definition ff_other.h:18173
twobyte GetLayerAssignment() const
Returns the layer that the expression is assigned to.
Definition ff_other.h:17818
void SetScoreAssignment(bool value)
Sets if the expression is assigned to the score.
Definition ff_other.h:18051
void ResetPos()
Resets the position of the expression.
Definition ff_other.h:17744
void SetPlaybackLayerAssignment(twobyte layer)
Sets the layer that the playback of the expression is assigned to.
Definition ff_other.h:18075
bool AssignTextExpressionDef(FCTextExpressionDef *pDef)
Assigns a saved text expression definition to an expression.
Definition finaleframework.cpp:11596
void SetHorizontalPos(twobyte value)
Sets the horizontal position offset, in EVPUs.
Definition ff_other.h:18185
twobyte GetStaffGroupID() const
Returns the "staff group" ID for the staff, which is used for expressions that are one unity in a sta...
Definition ff_other.h:17888
bool AssignShapeExpressionDef(FCShapeExpressionDef *pDef)
Assigns a saved shape expression definition to an expression.
Definition finaleframework.cpp:11605
eMeas GetMeasure() const override
Returns the 1-based measure number that the expression is assigned to.
Definition ff_other.h:17810
bool IsShape() const
Returns true if the expression is a shape expression.
Definition ff_other.h:17987
eStaff CalcStaffInCurrentView() const
Calculates the 1-based staff number that the expression is assigned to in the current view.
Definition finaleframework.cpp:11654
bool GetPartAssignment() const
Returns true if the expression is assigned to the parts.
Definition ff_other.h:17868
EXPRESSION_PLAYBACK_STARTPOINTS GetPlaybackStart() const
Returns the playback start point for the expression.
Definition ff_other.h:17847
twobyte GetID() const
Returns the definition ID for the shape or text expresion.
Definition ff_other.h:18015
bool HasStaffValue() const override
Overridden version, since this class supports staff returns.
Definition ff_other.h:17802
TimeEdu32 GetMeasurePos() const override
Returns the expression position in EDUs.
Definition ff_other.h:17916
void SetVisible(bool state)
Sets the display state of the expression (relative to the active part).
Definition ff_other.h:18161
twobyte GetStaffListID() const
Returns the staff list ID for the expression.
Definition ff_other.h:17881
FCShapeExpressionDef * CreateShapeExpressionDef()
Creates a shape expression definition object for the expression.
Definition finaleframework.cpp:11568
void SetPartAssignment(bool value)
Sets if the expression is assigned to the parts.
Definition ff_other.h:18060
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_other.h:17686
void SetID(twobyte id)
Sets the definition ID for the shape or text expresion.
Definition ff_other.h:18032
void SetStaffListID(twobyte ID)
Sets the staff list ID for the expression.
Definition ff_other.h:18139
void SetGraceNoteIndex(twobyte index)
Sets the grace note index, for when expression are connected to grace notes.
Definition ff_other.h:18199
void SetPlaybackStart(EXPRESSION_PLAYBACK_STARTPOINTS value)
Sets the playback start point for the expression.
Definition ff_other.h:18089
FCExpression()
The constructor.
Definition ff_other.h:17704
bool IsVisibleOnStaff(twobyte staff)
Returns true if the expression is displayed on the staff. This method takes both individual expressio...
Definition finaleframework.cpp:11560
void SetShape(bool isshape)
Marks the expression as a shape or a text expression.
Definition ff_other.h:18131
eStaff CalcStaffInPageView() const
Calculates the 1-based staff number that the expression is assigned to, taking into account assignmen...
Definition finaleframework.cpp:11615
twobyte GetRehearsalMarkOffset() const
Returns the rehearsal mark offset.
Definition ff_other.h:17896
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:18205
bool CalcMetricPos(FCPoint *pPoint)
Calculates the metric position for an expression in the current layout. The position is in page coord...
Definition finaleframework.cpp:11663
FCTextExpressionDef * CreateTextExpressionDef()
Creates a text expression definition object for the expression.
Definition finaleframework.cpp:11580
twobyte GetStaff() const override
Returns the 1-based staff number that the expression is assigned to.
Definition ff_other.h:17758
eStaff CalcStaffInScrollView() const
Calculates the 1-based staff number that the expression is assigned to, taking into account assignmen...
Definition finaleframework.cpp:11634
void SetVerticalPos(twobyte value)
Sets the vertical position offset, in EVPUs.
Definition ff_other.h:18193
void SetLayerAssignment(twobyte layer)
Sets the layer that the expression is assigned to.
Definition ff_other.h:18040
void SetRehearsalMarkOffset(twobyte value)
Sets the rehearsal mark offset.
Definition ff_other.h:18154
EXPRESSION_PLAYBACK_STARTPOINTS
Constants for GetPlaybackStart() and SetPlaybackStart().
Definition ff_other.h:17673
@ EXPRPLAYSTART_POSINMEASURE
Definition ff_other.h:17675
@ EXPRPLAYSTART_BEGINNINGOFMEASURE
Definition ff_other.h:17681
@ EXPRPLAYSTART_ALIGNMENTPOINT
Definition ff_other.h:17678
void SetStaff(twobyte staffno)
Sets the assigned staff.
Definition ff_other.h:18121
twobyte GetHorizontalPos() const
Returns the horizontal offset position in EVPUs.
Definition ff_other.h:17925
twobyte GetVerticalPos() const
Returns the vertical offset position in EVPUs.
Definition ff_other.h:17933
EXTAG Tag() const override
The Enigma tag for the derived class.
Definition ff_other.h:17688
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:17685
bool GetShape() const
Identical to IsShape().
Definition ff_other.h:18003
void SetStaffGroupID(twobyte value)
Sets the "staff group" ID for the staff, which is used for expressions that are one unity in a staff ...
Definition ff_other.h:18146
twobyte GetPlaybackLayerAssignment() const
Returns the layer that the playback of the expression is assigned to.
Definition ff_other.h:17831
bool GetScoreAssignment() const
Returns true if the expression is assigned to the score.
Definition ff_other.h:17858
bool SaveNewToCell(FCCell *pCell)
Saves an expression to a single cell. It also automatically sets the expression attribute for the mea...
Definition finaleframework.cpp:11677
bool GetScaleWithEntry() const
Returns if the expression should scale to entry or not.
Definition ff_other.h:17910
Collection class for FCExpression class objects.
Definition ff_othercollection.h:890
Class for document-independent font information.
Definition ff_base.h:1138
void ParseEnigmaFont(const EEnigmaFont *pEnigmaFont)
Transfers the info from a Finale-internal font structure to the FCFontInfo object.
Definition ff_base.h:1456
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 SetFontID(EFONTID fontID)
Sets the internal document-specific font ID.
Definition ff_base.h:1525
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
Class for freezing a system at a specific measure.
Definition ff_other.h:14410
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:14489
FCFreezeSystem()
The constructor.
Definition ff_other.h:14460
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:14443
twobyte GetNextSysMeasure() const
Returns the start measure for the subsequent system after the system's frozen measures.
Definition ff_other.h:14485
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_other.h:14444
void SetNextSysMeasure(twobyte measure)
Sets the start measure for the subsequent system.
Definition ff_other.h:14476
Class for tablature instruments definitions.
Definition ff_other.h:25427
bool SetDiatonicInfo(FCNumbers *pNumbers)
Sets the diatonic steps info, based on the numbers of a FCNumbers collection.
Definition ff_other.h:25790
twobyte GetStringTuning(int stringnumber)
Returns the MIDI number for a specific open string's tuning.
Definition ff_other.h:25684
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_other.h:25517
bool SetStringTuning(int stringnumber, twobyte midinumber)
Sets the MIDI number for a specific open string's tuning.
Definition ff_other.h:25712
bool GetDiatonicInfo(FCNumbers *pNumbers)
Fills a number collection with all the defined diatonic steps.
Definition ff_other.h:25764
twobyte GetFretCount() const
Returns the number of frets for the instrument definition.
Definition ff_other.h:25566
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:25516
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:25813
twobyte GetStringCount() const
Returns the number of strings for the instrument definition.
Definition ff_other.h:25584
bool GetName(FCString *pString)
Gets the name of the fretted instrument definition.
Definition ff_other.h:25630
bool SetName(FCString *pString)
Sets the name of the fretted instrument definition.
Definition ff_other.h:25657
bool LoadNext() override
Overridden version of LoadNext, to work with FCFretInstrumentDefs::LoadAll()
Definition ff_other.h:25523
void SetStringCount(twobyte count)
Sets the number of strings for the instrument definition.
Definition ff_other.h:25595
int GetDiatonicCount()
Returns the number of diatonic steps that are defined for the instrument.
Definition ff_other.h:25744
bool LoadFirst() override
Overridden version of LoadFirst, to work with FCFretInstrumentDefs::LoadAll()
Definition ff_other.h:25520
void SetFretCount(twobyte count)
Sets the number of frets for the instrument definition.
Definition ff_other.h:25575
void SetSpeedyClef(eClef clef)
Sets the clef number to be used in Speedy Edit.
Definition ff_other.h:25615
eClef GetSpeedyClef() const
Returns the clef number to be used in Speedy Edit.
Definition ff_other.h:25606
bool IsDiatonic()
Returns if the instrument has diatonic fretboard information defined or not.
Definition ff_other.h:25735
FCFretInstrumentDef()
The constructor.
Definition ff_other.h:25543
Class that stores one record of a fretboard chord definition.
Definition ff_other.h:22540
void SetFretInstrumentID(CMPER value)
Sets the ID for the FCFretInstrumentDef associated with this group.
Definition ff_other.h:22629
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:22566
FCFretInstrumentDef * CreateFretInstrumentDef() const
Creates the associated instance of FCFretInstrumentDef.
Definition finaleframework.cpp:12365
CMPER GetFretInstrumentID() const
Returns the ID for the FCFretInstrumentDef associated with this group.
Definition ff_other.h:22623
twobyte _GetInci()
Returns the inci for the fretboard (which indicates the alternate version of a fretboard).
Definition ff_other.h:22589
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:22644
void GetName(FCString *pString) const
Gets the name of the fretboard group.
Definition ff_other.h:22635
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_other.h:22567
void SetName(const FCString *pString)
Sets the name of the fretboard group.
Definition ff_other.h:22641
FCFretboardGroup * CreateFretboardGroup() const
Creates the associated instance of FCFretboardGroup.
Definition finaleframework.cpp:12376
bool LoadFirst() override
Loads the very first element in the database, if any.
Definition ff_other.h:22582
FCFretboardGroupDef()
The constructor.
Definition ff_other.h:22580
Class that represents a fretboard group. A correctly constructed fretboard group has exactly 12 FCFre...
Definition ff_detailscollection.h:476
The class for a fretboard style definition, which reflects the content the "Fretboard Style" dialog b...
Definition ff_other.h:21995
void SetFingeredShapeID(twobyte value)
Sets the shape ID of the "fingered" shape.
Definition ff_other.h:22455
void GetName(FCString *pString) const
Copies the style name to a FCString object.
Definition ff_other.h:22070
bool GetShowLastFret() const
Returns if the last fret should be shown when drawing the fretboards, or not.
Definition ff_other.h:22178
void SetNutThickness(Efix32 value)
Sets the nut thickness, in EFIXes.
Definition ff_other.h:22332
void SetFretNumberText(const FCString *pString)
Sets the fret number text, using a FCString object.
Definition ff_other.h:22394
void SetHorizontalFingeringOffset(Efix32 value)
Sets the horizontal offset for fingering numbers, in EFIXes.
Definition ff_other.h:22342
void GetFingeringFontInfo(FCFontInfo *pFontInfo)
Copies the fingering font information to a FCFontInfo object.
Definition ff_other.h:22245
void SetFretNumberFontInfo(FCFontInfo *pFontInfo)
Copies the fret number font information fro a FCFontInfo object.
Definition ff_other.h:22516
void SetFretThickness(Efix32 value)
Sets the fret thickness, in EFIXes.
Definition ff_other.h:22322
FCFretboardStyleDef()
The constructor.
Definition ff_other.h:22053
int GetFretCountDefault() const
Returns the default number of frets for the style.
Definition ff_other.h:22172
twobyte GetOpenStringShapeID() const
Returns the shape ID of the "open string" shape.
Definition ff_other.h:22207
twobyte GetMuteStringShapeID() const
Returns the shape ID of the "mute string" shape.
Definition ff_other.h:22216
void SetVerticalFretNumberOffset(Efix32 value)
Sets the vertical text offset for fret number text, in EFIXes.
Definition ff_other.h:22419
void SetCustomShapeID(twobyte value)
Sets the shape ID of the "custom" shape.
Definition ff_other.h:22491
void SetBarreShapeID(twobyte value)
Sets the shape ID of the "barre" shape.
Definition ff_other.h:22482
Efix32 GetFretThickness() const
Returns the fret thickness, in EFIXes.
Definition ff_other.h:22102
Efix32 GetVerticalHandleOffset() const
Returns the vertical handle offset, in EFIXes.
Definition ff_other.h:22138
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:22525
void SetHorizontalFretNumberOffset(Efix32 value)
Sets the horizontal text offset for fret number text, in EFIXes.
Definition ff_other.h:22409
void SetMuteStringShapeID(twobyte value)
Sets the shape ID of the "mute string" shape.
Definition ff_other.h:22473
void SetOpenStringShapeID(twobyte value)
Sets the shape ID of the "open string" shape.
Definition ff_other.h:22464
Efix32 GetNutThickness() const
Returns the nut thickness, in EFIXes.
Definition ff_other.h:22108
void GetFretNumberText(FCString *pString) const
Copies the fret number text to a FCString object.
Definition ff_other.h:22146
Efix32 GetVerticalFingeringOffset() const
Returns the vertical offset for fingering numbers, in EFIXes.
Definition ff_other.h:22120
twobyte GetCustomShapeID() const
Returns the shape ID of the "custom" shape.
Definition ff_other.h:22234
Efix32 GetFingeringWhiteout() const
Returns the whiteout for fingering numbers, in EFIXes.
Definition ff_other.h:22126
void SetStringSpacing(Efix32 value)
Sets the string spacing, in EFIXes.
Definition ff_other.h:22292
Efix32 GetVerticalFretNumberOffset() const
Returns the vertical text offset for fret number text, in EFIXes.
Definition ff_other.h:22166
Efix32 GetFretSpacing() const
Returns the fret spacing, in EFIXes.
Definition ff_other.h:22096
Efix32 GetHorizontalFingeringOffset() const
Returns the horizontal offset for fingering numbers, in EFIXes.
Definition ff_other.h:22114
void SetVerticalHandleOffset(Efix32 value)
Sets the vertical handle offset, in EFIXes.
Definition ff_other.h:22382
void SetVerticalFingeringOffset(Efix32 value)
Sets the vertical offset for fingering numbers, in EFIXes.
Definition ff_other.h:22352
void SetFingeringFontInfo(FCFontInfo *pFontInfo)
Copies the fingering font information from a FCFontInfo object.
Definition ff_other.h:22502
bool GetDrawFingeringWhite() const
Returns if the fingering numbers should be drawn in white.
Definition ff_other.h:22192
twobyte GetFingeredShapeID() const
Returns the shape ID of the "fingered" shape.
Definition ff_other.h:22198
void SetRotate(bool state)
Sets if the fret should be rotated or not.
Definition ff_other.h:22443
void SetFretCountDefault(int value)
Sets the default number of frets for the style.
Definition ff_other.h:22429
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:22035
Efix32 GetHorizontalHandleOffset() const
Returns the horizontal handle offset, in EFIXes.
Definition ff_other.h:22132
void SetFingeringWhiteout(Efix32 value)
Sets the whiteout for fingering numbers, in EFIXes.
Definition ff_other.h:22362
bool GetRotate() const
Returns if the fret should be rotated or not.
Definition ff_other.h:22186
void SetDrawFingeringWhite(bool state)
Sets if the fingering numbers should be drawn in white.
Definition ff_other.h:22449
void SetFretSpacing(Efix32 value)
Sets the fret spacing, in EFIXes.
Definition ff_other.h:22312
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_other.h:22036
void GetFretNumberFontInfo(FCFontInfo *pFontInfo)
Copies the fret number font information to a FCFontInfo object.
Definition ff_other.h:22259
void SetName(const FCString *pString)
Sets the style name, by using a FCString object.
Definition ff_other.h:22277
Efix32 GetStringSpacing() const
Returns the string spacing, in EFIXes.
Definition ff_other.h:22084
Efix32 GetStringThickness() const
Returns the string thickness, in EFIXes.
Definition ff_other.h:22090
void SetShowLastFret(bool state)
Sets if the last fret should be shown when drawing the fretboards, or not.
Definition ff_other.h:22435
Efix32 GetHorizontalFretNumberOffset() const
Returns the horizontal text offset for fret number text, in EFIXes.
Definition ff_other.h:22160
void SetStringThickness(Efix32 value)
Sets the string thickness, in EFIXes.
Definition ff_other.h:22302
void SetHorizontalHandleOffset(Efix32 value)
Sets the horizontal handle offset, in EFIXes.
Definition ff_other.h:22372
twobyte GetBarreShapeID() const
Returns the shape ID of the "barre" shape.
Definition ff_other.h:22225
The class for a guide in the document.
Definition ff_other.h:26035
Efix32 GetPosition() const
Returns the position for a guide, if EFIXes.
Definition ff_other.h:26056
FCGuide(Efix32 position)
The constructor.
Definition ff_other.h:26042
void SetPosition(Efix32 value)
Sets the position for a guide, if EFIXes.
Definition ff_other.h:26064
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:26046
The class for an instrument definition item (in the instrument list/Score Manager).
Definition ff_other.h:24413
FCInstrumentDef()
The constructor.
Definition ff_other.h:24457
void SetPercussionMapID(twobyte mapID)
Set the percussion mapping ID for the virtual instrument.
Definition ff_other.h:24503
twobyte GetPercussionMapID() const
Returns the percussion mapping ID for the instrument.
Definition ff_other.h:24495
FCPercussionMapNotes * CreatePercussionMapNotes()
Loads and make a collection with all the percussion notes for the current percussion MIDI map....
Definition finaleframework.cpp:12214
FCString * CreateNameString()
Creates a string with the name of the instrument engine.
Definition ff_other.h:24470
bool GetPercussionMapLocation(void *pFileSpecLocation, FCString *pMapName, EVERSION finpathspecversion)
Returns the location and map name for the current percussion MIDI Map.
Definition finaleframework.cpp:12329
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_other.h:24440
twobyte GetVirtualChannel() const
Returns the virtual channel number for the instrument.
Definition ff_other.h:24487
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:24439
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:24536
Text used for an instrument definition. Please refer to the FCInstrumentDef class.
Definition ff_text.h:363
The class for instrument playback data. This is also the link between staves/staff styles and the FCI...
Definition ff_other.h:24668
FCLayerPlaybackData * GetChordLayerData()
Returns the chord playback layer object (of the FCLayerPlaybackData class).
Definition ff_other.h:24734
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:24698
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:24793
FCLayerPlaybackData * GetNoteLayerData(int layernumber)
Returns the MIDI expression playback layer object (of the FCLayerPlaybackData class).
Definition ff_other.h:24782
FCLayerPlaybackData * GetMidiExpressionLayerData()
Returns the MIDI expression playback layer object (of the FCLayerPlaybackData class).
Definition ff_other.h:24757
FCInstrumentPlaybackData()
The constructor.
Definition ff_other.h:24716
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_other.h:24699
Class for key signatures. Instances of this class are auto-created by FCMeasure:GetKeySignature and F...
Definition ff_keysig.h:25
void SetID(eKey newkey)
Sets the key signature ID.
Definition ff_keysig.h:79
Helper class for FCInstrumentPlaybackData, providing the playback data for the Chord Layer,...
Definition ff_other.h:24586
void SetSolo(bool state)
Sets the "Solo" state of the layer.
Definition ff_other.h:24654
void SetInstrumentDefID(ePlaybackRoute value)
Set the ID that maps to the FCInstrumentDef class.
Definition ff_other.h:24634
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:24597
void SetPlay(bool state)
Sets the "Play" state of the layer.
Definition ff_other.h:24645
ePlaybackRoute GetInstrumentDefID() const
Returns the ID that maps to the FCInstrumentDef class.
Definition ff_other.h:24603
FCLayerPlaybackData(__EDTLayerPlayData *pData)
The constructor.
Definition ff_other.h:24593
bool GetSolo() const
Returns the "Solo" state of the layer.
Definition ff_other.h:24623
bool GetPlay() const
Returns the "Play" state of the layer.
Definition ff_other.h:24614
The class for a measure (the full vertical measure stack) in the document. It maps the Measure Attrib...
Definition ff_other.h:4221
bool GetSystemBreak() const
Gets the system break state for the measure.
Definition ff_other.h:4996
void SetForwardRepeat(bool state)
Sets if a forward repeat should be displayed for the measure or not.
Definition ff_other.h:4594
void SetChordFlag(bool state)
Set to true if chords are available anywhere in the measure.
Definition ff_other.h:4928
bool GetPositionEvenly() const
Gets the state of the "Position Evenly across Measure" setting.
Definition ff_other.h:5234
bool GetIncludeInNumbering() const
Gets the state of the "Include in numbering" setting.
Definition ff_other.h:5202
bool GetBreakMMRest() const
Gets the state of the "Break multi-measure rest" setting for a specific measure.
Definition ff_other.h:4988
FCBeatChartElements * CreateBeatChartElements()
Creates a with the beat chart for the current measure.
Definition finaleframework.cpp:5219
FCMeasure()
The constructor.
Definition ff_other.h:4477
void SetTextFlag(bool state)
Sets the flag that marks if a measure contains any measure-attached text blocks.
Definition ff_other.h:4616
bool Save() override
Overloaded version of Save(), that transfer key/time sig data to the measure info.
Definition finaleframework.cpp:5157
void SetSpaceBefore(Evpu16 space)
Sets the extra space before the music in the measure.
Definition ff_other.h:4701
void SetHideKeySigShowAccis(bool state)
Sets the "Hide key signature and show all accidentals" key signature state for the measure....
Definition ff_other.h:4558
FCTimeSignature * GetTimeSignatureForDisplay() const
Returns a pointer to the time signature object. If time signature for display shouldn't be used,...
Definition ff_other.h:5390
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:4453
void SetRepeatBracketFlag(bool state)
Sets if there are repeat brackets displayed for the measure.
Definition ff_other.h:4645
bool GetKeyless() const
Returns the keyless time signature mode for the measure. Only works on Finale 2014 and above.
Definition ff_other.h:4946
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_other.h:4454
SHOW_STATES GetShowTimeSignature() const
Gets the state for if the time signature should show or hide.
Definition finaleframework.cpp:5431
void SetLeftBarline(BARLINE_STYLES style)
Sets the left barline style for the measure.
Definition finaleframework.cpp:5356
BARLINE_STYLES GetLeftBarline() const
Gets the left barline style for the measure.
Definition finaleframework.cpp:5502
TimeEdu32 GetDuration()
Returns the duration of the measure, based on the standard time signature.
Definition ff_other.h:4935
void SetExpressionFlag(bool state)
Sets the flag that marks if a measure contains any expressions.
Definition ff_other.h:4605
void SetHideCautionary(bool state)
Sets the "Hide cautionary key/clefs/time sigs" setting for the measure.
Definition ff_other.h:4673
void SetPositioningNotesMode(POSITIONING_MODES mode)
Sets the note positioning mode for the measure.
Definition finaleframework.cpp:5379
bool GetExpressionFlag() const
Gets the flag that marks if a measure contains any expressions.
Definition ff_other.h:5014
FCExpressions * CreateExpressions()
Creates a with the expressions for the current measure.
Definition finaleframework.cpp:5226
BARLINE_STYLES
Settings used for FCMeasure::SetBarline(), FCMeasure::SetLeftBarline(), FCMeasure::GetBarline() and F...
Definition ff_other.h:4371
@ BARLINE_THICK
Definition ff_other.h:4386
@ BARLINE_SHAPE
Definition ff_other.h:4395
@ BARLINE_NORMAL
Definition ff_other.h:4377
@ BARLINE_FINAL
Definition ff_other.h:4389
@ BARLINE_DASHED
Definition ff_other.h:4383
@ BARLINE_DOUBLE
Definition ff_other.h:4380
@ BARLINE_DEFAULT
Definition ff_other.h:4399
@ BARLINE_TICK
Definition ff_other.h:4392
@ BARLINE_NONE
Definition ff_other.h:4374
Evpu16 GetSpaceBefore() const
Gets the extra space before the music in the measure.
Definition ff_other.h:5093
void SetIncludeInNumbering(bool state)
Sets the "Include in numbering" setting.
Definition ff_other.h:4809
Evpu16 GetSpaceAfter() const
Gets the extra space after the music in the measure.
Definition ff_other.h:5109
void SetBreakWordExtension(bool state)
Sets the "Break Word Extension" state.
Definition ff_other.h:4801
void SetOverrideGroupBarlines(bool state)
Sets the "Override group barlines" setting.
Definition ff_other.h:4817
bool GetShowFullNames() const
Gets the state of the "Show full staff & group name" setting.
Definition finaleframework.cpp:5443
FCKeySignature * GetKeySignature() const
Returns a pointer to the key signature object.
Definition ff_other.h:5310
void SetContainsManualMeasureNumbers(bool state)
Marks the measure that it contains manually adjusted measure numbers (or not).
Definition ff_other.h:4793
bool GetBreakWordExtension() const
Gets the "Break Word Extension" state.
Definition ff_other.h:5194
bool GetTextRepeatFlag() const
Returns true if there are text repeats in the measure.
Definition ff_other.h:5060
bool GetBackwardRepeat() const
Returns true if the backward repeat should be displayed for the measure.
Definition ff_other.h:5036
void SetShowKeySignature(SHOW_STATES state)
Sets the if the key signature should show or hide.
Definition finaleframework.cpp:5240
void SetAllowHorizontalSplit(bool state)
Sets the "Allow Horizontal Split Points" setting.
Definition ff_other.h:4741
void SetSpaceAfter(Evpu16 space)
Sets the extra space after the music in the measure.
Definition ff_other.h:4719
CMPER GetBarlineShapeID() const
Returns the barline shape ID (for use with the FCShapeDef class), for custom barlines.
Definition ff_other.h:5270
void SetBarline(FCMeasure::BARLINE_STYLES style)
Sets the barline style for the measure.
Definition finaleframework.cpp:5339
void SetBarlineShapeID(twobyte shapeID)
Sets the barline shape ID (for use with the FCShapeDef class), for custom barlines.
Definition ff_other.h:4865
Evpu16 GetWidth() const
Gets the (relative) measure width.
Definition ff_other.h:5077
bool GetSmartShapeFlag() const
Returns true if a smart shape runs somewhere through the measure.
Definition ff_other.h:5332
void SetShowFullNames(bool state)
Sets the "Show full staff & group name" setting.
Definition finaleframework.cpp:5373
void SetPageBreak(bool state)
Sets the page break for a specific measure.
Definition ff_other.h:4575
bool GetAllowHorizontalSplit() const
Gets the state of the "Allow Horizontal Split Points" setting.
Definition ff_other.h:5127
POSITIONING_MODES
Settings used for FCMeasure::SetPositioningNotesMode() and FCMeasure::GetPositioningNotesMode()
Definition ff_other.h:4423
@ POSITIONING_MANUALLY
Definition ff_other.h:4429
@ POSITIONING_BEATCHART
Definition ff_other.h:4432
@ POSITIONING_TIMESIG
Definition ff_other.h:4426
bool GetUseTimeSigForDisplay() const
Returns if the measure should use another time sig for display.
Definition ff_other.h:5166
bool GetChordFlag() const
Returns true if chords are available anywhere in the measure.
Definition ff_other.h:5342
virtual ~FCMeasure()
Destructor.
Definition ff_other.h:4488
FCString * CreateNumberStringUnqualified(bool showAllRepeatPasses=false)
Creates and returns a string containing the measure number string for this measure....
Definition ff_other.h:5473
void SetShowTimeSignature(SHOW_STATES state)
Sets the if the time signature should show or hide.
Definition finaleframework.cpp:5265
SHOW_STATES GetShowKeySignature() const
Sets the state for if the key signature should show or hide.
Definition finaleframework.cpp:5414
bool GetHideCautionary() const
Gets the state of the "Hide cautionary key/clefs/time sigs" setting for the measure.
Definition ff_other.h:5069
POSITIONING_MODES GetPositioningNotesMode() const
Gets the note positioning mode for the measure.
Definition finaleframework.cpp:5454
FCMeasure::BARLINE_STYLES GetBarline() const
Gets the barline style for the measure.
Definition finaleframework.cpp:5473
FCTimeSignature * GetTimeSignature() const
Returns a pointer to the time signature object.
Definition ff_other.h:5358
void SetLeftBarlineShapeID(twobyte shapeID)
Sets the left barline shape ID (for use with the FCShapeDef class), for custom left barlines.
Definition ff_other.h:4882
bool GetContainsManualMeasureNumbers() const
Gets the state that marks if the measure contains manually adjusted measure numbers (or not).
Definition ff_other.h:5186
void SetPositionEvenly(bool state)
Sets the "Position Evenly across Measure" setting.
Definition ff_other.h:4842
void SetBreakMMRest(bool state)
Sets the "Break multi-measure rest" setting for a specific measure.
Definition ff_other.h:4585
CMPER GetLeftBarlineShapeID() const
Returns the left barline shape ID (for use with the FCShapeDef class), for custom left barlines.
Definition ff_other.h:5286
bool GetTextFlag() const
Gets the flag that marks if a measure contains any measure-attached text blocks.
Definition ff_other.h:5025
void SetSmartShapeFlag(bool state)
Set to true if a smart shape runs somewhere through the measure. Use with extreme care!
Definition ff_other.h:4918
void SetUseTimeSigForDisplay(bool value)
Turns time sig for display ON or OFF.
Definition ff_other.h:5421
void SetKeyless(bool state)
Sets the keyless time signature mode for the measure. Only works on Finale 2014 and above.
Definition ff_other.h:4548
bool Load(CMPER itemno) override
Overloaded version of Load(), that removes any existing key/time sig data.
Definition finaleframework.cpp:5207
bool GetPageBreak() const
Gets the page break state for a specific measure.
Definition ff_other.h:4979
void SetBackwardRepeat(bool state)
Sets if a backward repeat should be displayed for the measure or not.
Definition ff_other.h:4631
bool GetHideKeySigShowAccis() const
Returns the "Hide key signature and show all accidentals" key signature state for the measure....
Definition ff_other.h:4960
FCTempoElements * CreateTempoElements()
Creates a with the Tempo Tool changes for the current measure.
Definition finaleframework.cpp:5233
void SetSystemBreak(bool state)
Sets the measure to force a system break.
Definition ff_other.h:4664
void SetTextRepeatFlag(bool state)
Sets the stat that marks if there are text repeats in the measure.
Definition ff_other.h:4656
bool GetRepeatBracketFlag() const
Returns true if repeat brackets display for the measure.
Definition ff_other.h:5049
FCString * CreateNumberString(bool showAllRepeatPasses=false)
Creates and returns a string containing the measure number string for this measure....
Definition ff_other.h:5449
bool GetOverrideGroupBarlines() const
Gets the state of the "Override group barlines" setting.
Definition ff_other.h:5210
bool GetForwardRepeat() const
Returns true if a forward repeat should be displayed for the measure.
Definition ff_other.h:5004
void SetWidth(Evpu16 width)
Sets the (relative) measure width.
Definition ff_other.h:4684
SHOW_STATES
Settings used for FCMeasure::SetShowKeySignature(), FCMeasure::SetShowTimeSignature(),...
Definition ff_other.h:4441
@ SHOWSTATE_IFNEEDED
Definition ff_other.h:4444
@ SHOWSTATE_HIDE
Definition ff_other.h:4450
@ SHOWSTATE_SHOW
Definition ff_other.h:4447
The class for a measure number region.
Definition ff_other.h:5494
void SetUseEnclosureMultiple(bool use, bool parts)
Sets if enclosures should be used for multiple numbers.
Definition finaleframework.cpp:6462
void SetDoubleUp(bool value)
Sets if the double-up (=duplicating the first character) style should be used or not.
Definition finaleframework.cpp:7065
void SetHideFirstNumber(bool hide, bool parts)
Sets if the first occurence should be hidden or not.
Definition finaleframework.cpp:6522
bool GetUseEnclosureStart(bool parts)
Returns true if start measure numbers should use the enclosure data.
Definition finaleframework.cpp:7260
void SetShowOnTopStaff(bool showontop, bool parts)
Sets if the measure number should be shown on top staff or not.
Definition finaleframework.cpp:6474
void SetStartMeasure(twobyte measure)
Sets the start measure for the measure number region.
Definition finaleframework.cpp:6331
void SetUseScoreInfoForParts(bool value)
Sets if parts should use the score information section of the measure number region appearance.
Definition finaleframework.cpp:6391
twobyte GetMultipleVerticalPosition(bool parts)
Returns the default vertical position for the multiple numbers.
Definition finaleframework.cpp:7566
void SetID(twobyte newid)
Sets the unique measure number region ID. USE WITH CARE!!!
Definition finaleframework.cpp:6398
void CloneFormattingFrom(FCMeasureNumberRegion *pRegionFrom, bool score, bool parts)
Copies the formatting part (visual appearance + positioning) of the measure number region.
Definition finaleframework.cpp:7644
MNALIGNMENTS GetMultipleAlignment(bool parts)
Returns the alignment for "multiple" measure numbers.
Definition finaleframework.cpp:7462
FCEnclosure * GetEnclosureMultiple(bool parts)
Gets the pointer to the multiple enclosure object. This object is a part of the measure number region...
Definition ff_other.h:6482
MNALIGNMENTS
The measure number alignment values.
Definition ff_other.h:5724
@ MNALIGN_CENTER
Definition ff_other.h:5729
@ MNALIGN_RIGHT
Definition ff_other.h:5732
@ MNALIGN_LEFT
Definition ff_other.h:5726
MNJUSTIFICATIONS GetMultipleJustification(bool parts)
Returns the justifications for "multiple" measure numbers.
Definition finaleframework.cpp:7485
bool GetShowOnTopStaff(bool parts)
Returns true if top staff should show a measure number.
Definition finaleframework.cpp:7290
void SetBase(twobyte base)
Sets the base for the measure numbering style.
Definition finaleframework.cpp:7008
FCString * CreateDisplayedString(twobyte measure)
Creates a string with the measure number as it would be displayed for the measure.
Definition finaleframework.cpp:7630
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:5751
void SetShowMultiples(bool showmultiples, bool parts)
Sets if the "multiple" numbering should be used or not.
Definition finaleframework.cpp:6510
bool GetNoZero() const
Returns if no zero should be used.
Definition finaleframework.cpp:7092
void SetTimeFrames(bool state)
Returns true if "frames" for time measure numbers.
Definition finaleframework.cpp:7033
void SetMultipleHorizontalPosition(twobyte distance, bool parts)
Sets the horizontal position of multiple numbers.
Definition finaleframework.cpp:6794
void SetUseEnclosureStart(bool use, bool parts)
Sets if enclosures should be used for start numbers.
Definition finaleframework.cpp:6446
bool GetUseEnclosureMultiple(bool parts)
Returns true if "multiple" measure numbers should use the enclosure data.
Definition finaleframework.cpp:7278
void GetStartFontInfo(FCFontInfo *pFontInfo, bool parts)
Gets the start font for the measure number region.
Definition finaleframework.cpp:7587
bool GetShowMultiMeasureRange(bool parts)
Returns true if the measure range should be displayed for multimeasure rests.
Definition finaleframework.cpp:7350
void SetUseHours(bool state)
Returns if time measure numbers should include hours.
Definition finaleframework.cpp:7039
bool GetShowMultiples(bool parts)
Returns true if repeated numbered sequences are used.
Definition finaleframework.cpp:7326
NUMBERVIEWS GetView() const
Returns the view where the number region should show.
Definition finaleframework.cpp:6933
void SetStartNumber(twobyte offset)
Sets the start measure for the measure number region.
Definition finaleframework.cpp:6341
void SetPrefix(FCString *pString)
Sets the prefix string.
Definition finaleframework.cpp:6346
void SetExcludeOtherStaves(bool exclude, bool parts)
Sets if the numbers should be excluded on other staves.
Definition finaleframework.cpp:6454
void SetTime(bool state)
Sets if a time mode is used.
Definition finaleframework.cpp:7027
void SetTimePrecision(twobyte precision)
Sets the time precision, for the time modes that aren't based on frames.
Definition finaleframework.cpp:7045
eUniChar32 GetMultiMeasureBracketLeft(bool parts)
Returns the left-side range bracket character for multimeasure rest ranges.
Definition finaleframework.cpp:7370
bool GetBreakMultiMeasureRests(bool parts)
Returns true if multiple measure numbers should break multi-measure rests.
Definition finaleframework.cpp:7400
void GetPrefix(FCString *pString)
Copies the prefix string to a FCString object.
Definition finaleframework.cpp:7231
bool GetHideFirstNumber(bool parts)
Returns true if the first number in the measure number region should be hidden.
Definition finaleframework.cpp:7338
twobyte GetMultiMeasureVerticalPosition(bool parts)
Returns the vertical position of for multimeasure rests.
Definition finaleframework.cpp:7580
void SetMultipleFontInfo(FCFontInfo *pFontInfo, bool parts)
Sets the multiple font for the measure number region.
Definition finaleframework.cpp:6416
void _SetTempNonIncludedMeasures(FCNumbers *pNonNumberedMeasuresToUse)
For internal use only.
Definition ff_other.h:6915
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:6934
void SetShowOnSystemStart(bool showonstart, bool parts)
Sets if the measure number should be shown on system starts or not.
Definition finaleframework.cpp:6486
void SetShowOnMultiMeasureRests(bool show, bool parts)
Sets if the measure numbers should show on multimeasure rests.
Definition finaleframework.cpp:6539
void SetView(NUMBERVIEWS view)
Sets the view where the region should show.
Definition finaleframework.cpp:6823
MNALIGNMENTS GetStartAlignment(bool parts)
Returns the alignment for start measure numbers.
Definition finaleframework.cpp:7416
bool AssignAllNonNumberedMeasures(FCNumbers *pAllNonNumberedMeasures)
Assigns a reference table for all non-numbered measures in the document.
Definition finaleframework.cpp:7705
FCFontInfo * CreateMultiMeasureFontInfo(bool parts)
Creates a FCFontInfo object with the font information about the multimeasure rest measure numbers.
Definition ff_other.h:6825
bool IsMeasureIncluded(twobyte measureno)
Returns true if the measure is within the measure number region.
Definition ff_other.h:6879
bool GetDoubleUp() const
Returns true if the numbering model is a "double up" (a, b, c, .... aa, bb, cc, etc)
Definition finaleframework.cpp:7123
void SetNumberingStyle(NUMBERINGSTYLE style)
Sets the numbering style.
Definition finaleframework.cpp:6852
void GetMultiMeasureFontInfo(FCFontInfo *pFontInfo, bool parts)
Gets the font to be used for multi-measure rests.
Definition finaleframework.cpp:7615
twobyte GetStartMeasure() const
Returns the start measure of the measure number region.
Definition finaleframework.cpp:7077
void SetStartAlignment(MNALIGNMENTS alignment, bool parts)
Sets the alignment for start measure numbers.
Definition finaleframework.cpp:6599
void SetStartFontInfo(FCFontInfo *pFontInfo, bool parts)
Sets the start font for the measure number region.
Definition finaleframework.cpp:6403
void SetMultiMeasureBracketLeft(eUniChar32 character, bool parts)
Sets the left-side range bracket character for multimeasure rest ranges.
Definition finaleframework.cpp:6557
twobyte GetStartNumber() const
Returns the measure region's starting number (for display).
Definition finaleframework.cpp:7087
void GetMultipleFontInfo(FCFontInfo *pFontInfo, bool parts)
Gets the multiple font for the measure number region.
Definition finaleframework.cpp:7600
bool GetShowOnBottomStaff(bool parts)
Returns true if bottom staff should show a measure number.
Definition finaleframework.cpp:7314
bool GetDisplayedNumber(eMeas number, FCString *pString)
Formats the displayed number for a measure (without prefix/suffix)
Definition finaleframework.cpp:7193
void SetStartJustification(MNJUSTIFICATIONS justification, bool parts)
Sets the justification for the start measure numbers.
Definition finaleframework.cpp:6629
MNJUSTIFICATIONS GetMultiMeasureJustification(bool parts)
Returns the justifications for multimeasure rest measure numbers.
Definition finaleframework.cpp:7531
twobyte GetMultipleValue(bool parts)
Returns the "Show on every" value for multiple measure numbers.
Definition finaleframework.cpp:7360
void SetStartVerticalPosition(twobyte distance, bool parts)
Sets the default vertical position of start numbers.
Definition finaleframework.cpp:6789
twobyte GetMultiMeasureHorizontalPosition(bool parts)
Returns the horizontal position of for multimeasure rests.
Definition finaleframework.cpp:7573
MNJUSTIFICATIONS
The measure number justification values.
Definition ff_other.h:5740
@ MNJUSTIFY_LEFT
Definition ff_other.h:5742
@ MNJUSTIFY_RIGHT
Definition ff_other.h:5748
@ MNJUSTIFY_CENTER
Definition ff_other.h:5745
twobyte GetMultipleStartMeasure(bool parts)
Returns the "Show on every" value for multiple measure numbers.
Definition finaleframework.cpp:7365
void SetCountFromOne(bool value)
Sets if the measuring should start from one instead of zero.
Definition finaleframework.cpp:7053
void SetMultipleAlignment(MNALIGNMENTS alignment, bool parts)
Sets the alignment for "multiple" measure numbers.
Definition finaleframework.cpp:6662
void SetMultiMeasureAlignment(MNALIGNMENTS alignment, bool parts)
Sets the alignment for multimeasure measure numbers.
Definition finaleframework.cpp:6723
void SetMultiMeasureHorizontalPosition(twobyte distance, bool parts)
Sets the horizontal position of multimeasure rest numbers.
Definition finaleframework.cpp:6808
void SetMultiMeasureJustification(MNJUSTIFICATIONS justification, bool parts)
Sets the justification for the start measure numbers.
Definition finaleframework.cpp:6753
void SetMultipleValue(twobyte value, bool parts)
Sets the "Show on every" value for multiple measure numbers.
Definition finaleframework.cpp:6544
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_other.h:5752
eUniChar32 GetStartCharacter() const
Gets the base character.
Definition finaleframework.cpp:7137
bool GetTime() const
Returns true if a time mode is used.
Definition finaleframework.cpp:7098
void SetBreakMultiMeasureRests(bool breakstate, bool parts)
Sets if "multiple" measure numbers should break multimeasure rests or not.
Definition finaleframework.cpp:6589
void _RestoreTempNonIncludedMeasures()
For internal use only.
Definition ff_other.h:6927
twobyte GetID()
Returns the unique measure number region ID.
Definition finaleframework.cpp:7072
void SetMultipleVerticalPosition(twobyte distance, bool parts)
Sets the vertical position of multiple numbers.
Definition finaleframework.cpp:6801
bool GetTimeFrames() const
Returns true if "frames" for time measure numbers.
Definition finaleframework.cpp:7104
twobyte GetBase() const
Returns the number base.
Definition finaleframework.cpp:7147
MNALIGNMENTS GetMultiMeasureAlignment(bool parts)
Returns the alignment for multimeasure rest measure numbers.
Definition finaleframework.cpp:7508
void SetMultiMeasureVerticalPosition(twobyte distance, bool parts)
Sets the vertical position of multimeasure rest numbers.
Definition finaleframework.cpp:6815
NUMBERVIEWS
The number views where the region should show.
Definition ff_other.h:5708
@ NUMBERVIEW_ALL
Definition ff_other.h:5710
@ NUMBERVIEW_SCROLLONLY
Definition ff_other.h:5716
@ NUMBERVIEW_PAGEONLY
Definition ff_other.h:5713
twobyte GetStartHorizontalPosition(bool parts)
Returns the default horizontal position for start numbers.
Definition finaleframework.cpp:7549
void SetMultipleJustification(MNJUSTIFICATIONS justification, bool parts)
Sets the justification for the "multiple" measure numbers.
Definition finaleframework.cpp:6692
twobyte GetStartVerticalPosition(bool parts)
Returns the default vertical position for start numbers.
Definition finaleframework.cpp:7554
FCMeasureNumberRegion()
The constructor.
Definition finaleframework.cpp:5534
bool GetExcludeOtherStaves(bool parts)
Returns true if measure numbers should be excluded on other staves.
Definition finaleframework.cpp:7269
void SetMultiMeasureBracketRight(eUniChar32 character, bool parts)
Sets the right-side range bracket character for multimeasure rest ranges.
Definition finaleframework.cpp:6573
bool GetShowOnSystemStart(bool parts)
Returns true if the system start should show a measure number.
Definition finaleframework.cpp:7302
bool GetCountFromOne() const
Returns true if the numbering model starts with 1 (numbers) or 0 (letters).
Definition finaleframework.cpp:7130
void SetStartCharacter(eUniChar32 character)
Sets the starting character of the measure numbering style.
Definition finaleframework.cpp:7013
FCFontInfo * CreateStartFontInfo(bool parts)
Creates a FCFontInfo object with the font information about the start measure numbers.
Definition ff_other.h:6749
void GetSuffix(FCString *pString)
Gets the suffix string.
Definition finaleframework.cpp:7245
void SetEndMeasure(twobyte measure)
Sets the end measure for the measure number region.
Definition finaleframework.cpp:6336
eUniChar32 GetMultiMeasureBracketRight(bool parts)
Returns the right-side range bracket character for multimeasure rest ranges.
Definition finaleframework.cpp:7385
twobyte GetTimePrecision() const
Returns the time precision, for the time modes that aren't based on frames.
Definition finaleframework.cpp:7116
NUMBERINGSTYLE GetNumberingStyle() const
Returns the numbering style.
Definition finaleframework.cpp:6950
bool GetUseHours() const
Returns if time measure numbers should include hours.
Definition finaleframework.cpp:7110
FCFontInfo * CreateMultipleFontInfo(bool parts)
Creates a FCFontInfo object with the font information about the "multiple" measure numbers.
Definition ff_other.h:6787
NUMBERINGSTYLE
Numbering styles for measure numbers.
Definition ff_other.h:5668
@ NUMBERING_FRAMES
Definition ff_other.h:5697
@ NUMBERING_TIME_1000
Definition ff_other.h:5694
@ NUMBERING_UPPERCASEDOUBLE
Definition ff_other.h:5676
@ NUMBERING_CUSTOM
Definition ff_other.h:5700
@ NUMBERING_DIGITS
Definition ff_other.h:5670
@ NUMBERING_TIME_10
Definition ff_other.h:5688
@ NUMBERING_TIME_100
Definition ff_other.h:5691
@ NUMBERING_TIME_SECONDS
Definition ff_other.h:5685
@ NUMBERING_LOWERCASEDOUBLE
Definition ff_other.h:5673
@ NUMBERING_LOWERCASE
Definition ff_other.h:5679
@ NUMBERING_UPPERCASE
Definition ff_other.h:5682
twobyte GetMultipleHorizontalPosition(bool parts)
Returns the default horizontal position for the multiple numbers.
Definition finaleframework.cpp:7559
void SetNoZero(bool value)
Sets if no zero should be used.
Definition finaleframework.cpp:7059
void SetSuffix(FCString *pString)
Sets the suffix string.
Definition finaleframework.cpp:6370
twobyte GetEndMeasure() const
Returns the end measure of the measure number region.
Definition finaleframework.cpp:7082
bool GetUseScoreInfoForParts() const
Returns true if parts should use the score information section of the measure number region appearanc...
Definition finaleframework.cpp:7152
bool GetDisplayedNumberWithID(eMeas number, FCString *pString)
Formats the displayed number for a measure, with the region ID.
Definition finaleframework.cpp:7220
void SetMultipleStartMeasure(twobyte measure, bool parts)
Sets the "Show on every" start value for multiple measure numbers.
Definition finaleframework.cpp:6549
void SetStartHorizontalPosition(twobyte distance, bool parts)
Sets the default horizontal position of start numbers.
Definition finaleframework.cpp:6784
void SetShowMultiMeasureRange(bool show, bool parts)
Sets if the measure range should be displayed for multimeasure rests or not.
Definition finaleframework.cpp:6534
MNJUSTIFICATIONS GetStartJustification(bool parts)
Returns the justifications for start measure numbers.
Definition finaleframework.cpp:7439
void SetShowOnBottomStaff(bool showonbottom, bool parts)
Sets if the measure number should be displayed on the bottom staff or not.
Definition finaleframework.cpp:6498
FCEnclosure * GetEnclosureStart(bool parts)
Gets the pointer to the start enclosure object. This object is a part of the measure number region an...
Definition ff_other.h:6468
bool GetShowOnMultiMeasureRests(bool parts)
Returns true if the measure numbers should show on multimeasure rests.
Definition finaleframework.cpp:7355
void SetMultiMeasureFontInfo(FCFontInfo *pFontInfo, bool parts)
Sets the font to be used for multi-measure rests.
Definition finaleframework.cpp:6431
Collection class for FCMeasure class objects.
Definition ff_othercollection.h:228
Class for a metatool key assignment.
Definition ff_other.h:26108
bool SaveAsKeystroke(twobyte keystrokeslot)
Saves the metatool object to a specific keystroke.
Definition ff_other.h:26447
METATOOL_MODES
Definition ff_other.h:26115
@ MTOOLMODE_STAFFSTYLE
Definition ff_other.h:26138
@ MTOOLMODE_REPEAT
Definition ff_other.h:26126
@ MTOOLMODE_TUPLET
Definition ff_other.h:26134
@ MTOOLMODE_ARTICULATION
Definition ff_other.h:26123
@ MTOOLMODE_CLEF
Definition ff_other.h:26129
@ MTOOLMODE_EXPRESSION
Definition ff_other.h:26120
bool AssignArticulationDef(FCArticulationDef *pDef)
Assigns an articulation definition to a metatool.
Definition ff_other.h:26345
void SetMode(METATOOL_MODES mode)
Sets the mode of the object.
Definition ff_other.h:26255
bool SaveNew() override
Overridden functionality: SaveNew() is not supported for this class.
Definition ff_other.h:26458
bool AssignStaffStyle(FCStaffStyleDef *pStaffStyle)
Assigns an StaffStyle definition object to a metatool.
Definition ff_other.h:26433
bool AssignShapeExpressionDef(FCShapeExpressionDef *pDef)
Assigns a shape expression definition to a metatool.
Definition ff_other.h:26378
bool AssignClefDef(FCClefDef *pDef)
Assigns an clef definition to a metatool.
Definition finaleframework.cpp:13258
virtual bool SaveAs(CMPER cmper) override
Overridden functionality: SaveAs() isn't supported for this class. Use SaveAsKeystroke instead.
Definition ff_other.h:26462
__FCBaseData * CreateLinkedObject()
Creates and loads an object that is connected to the metatool keystroke.
Definition finaleframework.cpp:13276
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:26221
bool AssignRepeatDef(FCTextRepeatDef *pDef)
Assigns an text repeat definition to a metatool.
Definition ff_other.h:26395
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:26490
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_other.h:26222
bool AssignTextExpressionDef(FCTextExpressionDef *pDef)
Assigns a text expression definition to a metatool.
Definition ff_other.h:26361
twobyte GetKeystroke() const
Returns the keystroke to where the metatool is saved.
Definition finaleframework.cpp:13252
METATOOL_MODES GetMode() const
Returns the mode of the object.
Definition ff_other.h:26280
bool AssignTuplet(FCTuplet *pTuplet)
Assigns an tuplet object to a metatool.
Definition finaleframework.cpp:13267
FCMetatoolAssignment()
The constructor.
Definition ff_other.h:26238
bool IsShapeExpressionDef() const
Returns if an expression metatool is connected to a shape expression definition, or not....
Definition ff_other.h:26331
CMPER GetDefID() const
Returns the 1-based (or 0-based) definition ID for supported object types.
Definition ff_other.h:26300
Class for a multi-measure rest instance.
Definition ff_other.h:19613
void SetNumberHorizontalAdjust(twobyte value)
Sets the horizontal adjustment value for the multimeasure rest number.
Definition ff_other.h:19873
twobyte GetShapeStartAdjust() const
Returns the left-side adjustment for multimeasure shapes.
Definition ff_other.h:19746
twobyte GetUseSymbolsLessThan() const
Returns the number of measures for the "Use symbols for restsless than" option.
Definition ff_other.h:19721
bool IsMeasureIncluded(int measure)
Returns true if the measure number is included in the MM rest.
Definition ff_other.h:19885
void PrefsReset()
Resets the object to the current default values.
Definition finaleframework.cpp:12142
void SetEndMeasure(twobyte measure)
Sets the end measure of the MM rest.
Definition ff_other.h:19802
void SetShapeEndAdjust(twobyte value)
Sets the right-side adjustment for MM shapes.
Definition ff_other.h:19809
FCMultiMeasureRest()
The constructor.
Definition ff_other.h:19668
void SetStretchHorizontally(bool value)
Sets if shape should be stretched horizontally for the MM rest.
Definition finaleframework.cpp:12157
bool GetStretchHorizontally() const
Returns if shape should be stretched horizontally for the MM rest.
Definition finaleframework.cpp:12150
void SetUseSymbols(bool value)
Sets if the "Use symbols for rests less than" is used.
Definition ff_other.h:19832
twobyte GetStartNumberingAt() const
Returns the threshold number where mm rests should start to be created.
Definition ff_other.h:19761
void SetShapeStartAdjust(twobyte value)
Sets the left-side adjustment for MM shapes.
Definition ff_other.h:19816
twobyte GetShapeID() const
Returns the shape ID (for use in the FCShapeDef class) for the MM rest.
Definition ff_other.h:19703
twobyte GetEndMeasure() const
Returns the end measure of the MM rest.
Definition ff_other.h:19688
twobyte GetShapeEndAdjust() const
Returns the right-side adjustment for multimeasure shapes.
Definition ff_other.h:19739
void SetNumberVerticalAdjust(twobyte value)
Sets the vertical adjustment value for the multimeasure rest number.
Definition ff_other.h:19879
twobyte GetNumberVerticalAdjust() const
Returns the vertical adjustment value for the multimeasure rest number.
Definition ff_other.h:19774
twobyte GetSymbolSpace() const
Gets the space between multimeasure rest symbols for the mm rest.
Definition ff_other.h:19753
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_other.h:19651
void SetSymbolSpace(twobyte space)
Sets the space between multimeasure rest symbols.
Definition ff_other.h:19861
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:19650
void SetShapeID(twobyte shapeID)
Sets the shape ID (for use in the FCShapeDef class) for the MM rest.
Definition ff_other.h:19824
bool GetUseSymbols() const
Returns true if the "Use symbols for rests less than" is used.
Definition ff_other.h:19710
twobyte GetWidth() const
Returns the width of the MM rest.
Definition ff_other.h:19695
void SetUseSymbolsLessThan(twobyte value)
Sets the number of measures for the "Use symbols for restsless than" option.
Definition ff_other.h:19843
bool IsShape()
Returns true if a shape is used for the MM rest.
Definition ff_other.h:19896
twobyte GetNumberHorizontalAdjust() const
Returns the horizontal adjustment value for the multimeasure rest number.
Definition ff_other.h:19768
void SetStartNumberingAt(twobyte value)
Sets the threshold number where mm rests should start to be created.
Definition ff_other.h:19867
void SetWidth(twobyte value)
Sets the width of the MM rest.
Definition ff_other.h:19786
twobyte CalcMeasureSpan()
Calculates the number of measures that MM rest spans.
Definition ff_other.h:19780
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:19915
twobyte GetStartMeasure() const
Returns the start measure of the MM rest.
Definition ff_other.h:19681
void SetStartMeasure(twobyte measure)
Sets the start measure of the MM rest.
Definition ff_other.h:19795
Class for a multi-staff instrument defined in the Score Manager.
Definition ff_other.h:19933
CMPER CalcTopStaff()
Returns the top staff in the group.
Definition ff_other.h:20069
CMPER CalcBottomStaff()
Returns the bottom staff in the group.
Definition ff_other.h:20099
void SetFirstStaff(CMPER value)
Sets the staff number of the first staff in the instrument group, Use with care!
Definition ff_other.h:20038
CMPER GetSecondStaff() const
Returns the staff number of the second staff in the instrument group.
Definition ff_other.h:20015
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:20125
void SetSecondStaff(CMPER value)
Sets the staff number of the second staff in the instrument group. Use with care!
Definition ff_other.h:20044
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_other.h:19969
void SetThirdStaff(CMPER value)
Sets the staff number of the third staff in the instrument group.
Definition ff_other.h:20051
CMPER GetThirdStaff() const
Returns the staff number of the third staff in the instrument group.
Definition ff_other.h:20021
bool ContainsStaff(CMPER staffno)
Returns true if the staff is available in the multi-instrument group.
Definition ff_other.h:19996
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:19968
eStaffGroup GetGroupID() const
Returns the staff group ID.
Definition ff_other.h:20027
CMPER GetFirstStaff() const
Returns the staff number of the first staff in the instrument group.
Definition ff_other.h:20009
void SetGroupID(eStaffGroup value)
Sets the staff group ID. Use with care!
Definition ff_other.h:20057
FCMultiStaffInstrument()
The constructor.
Definition ff_other.h:19986
Class that encapsulates EREGION and provides additional functionality to region handling.
Definition ff_region.h:25
twobyte GetStartMeasure() const
Returns the start measure for the region.
Definition ff_region.h:411
TimeEdu32 GetStartMeasurePos() const
Returns the start position of the region within the measure.
Definition ff_region.h:489
bool IsStaffIncluded(twobyte staffnumber) const
Returns true if the staff number is with the region.
Definition finaleframework.cpp:15658
twobyte GetEndMeasure() const
Returns the end measure for the region.
Definition ff_region.h:419
TimeEdu32 GetEndMeasurePos() const
Returns the end position of the region within the measure.
Definition ff_region.h:499
Encapsulates a note entry from an owner class (for example FCNoteEntryCell, FCNoteEntryLayer) class.
Definition ff_noteframe.h:940
Simple class to put numbers into collections.
Definition ff_base.h:4821
int GetInt() const
Returns the integer value version of the number.
Definition ff_base.h:4865
Simple collection class for FCNumber class objects.
Definition ff_basecollection.h:357
FCNumber * GetItemAt(int index) const
Overridden GetItemAt method.
Definition ff_basecollection.h:404
Utility class to provide a mechanism for loading blob data blocks consisting of more than 1 inci....
Definition ff_other.h:167
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:214
FCOtherInci(EXTAG customTag=0)
the constructor
Definition ff_other.h:195
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_other.h:215
Class for page-assigned graphics. Currently, this class can only be used to edit existing page graphi...
Definition ff_other.h:20251
void SetVerticalAlignment(GRAPHIC_VERTICAL_ALIGN alignment)
Sets the vertical alignment for the text block.
Definition ff_other.h:20733
bool IsEmbedded()
Returns true if the graphic is embedded in the document.
Definition ff_other.h:20352
void SetLastPage(int pageno)
Sets the end page for the graphics.
Definition ff_other.h:20540
GRAPHIC_HORIZONTAL_ALIGN GetHorizontalAlignment() const
Returns the horizontal alignment for the graphic on left-side (or all) pages.
Definition ff_other.h:20482
GRAPHIC_VERTICAL_ALIGN GetVerticalAlignment() const
Returns the vertical alignment for the graphic.
Definition ff_other.h:20518
void SetIndependentRightPage(bool state)
Sets if the right-side page positioning is used or not.
Definition ff_other.h:20619
Evpu16 GetWidth() const
Returns the graphic rectangle's width, in EVPUs.
Definition ff_other.h:20397
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:20295
void SetVerticalPos(Evpu16 pos)
Sets the graphic rectangle's bottom position, in EVPUs.
Definition ff_other.h:20565
GRAPHIC_HORIZONTAL_ALIGN GetHorizontalAlignmentRightPage() const
Returns the horizontal alignment for a right-side page graphic.
Definition ff_other.h:20500
void SetHorizontalPosRightPage(Evpu16 value)
Sets the horizontal position for right-side pages (if used).
Definition ff_other.h:20633
void SetHorizontalAlignmentRightPage(GRAPHIC_HORIZONTAL_ALIGN alignment)
Sets the horizontal alignment for right-side pages.
Definition ff_other.h:20699
Evpu16 GetVerticalPosRightPage() const
Returns the vertical positioning for right-side pages (if used).
Definition ff_other.h:20461
void SetVisible(bool state)
Sets the visibility state of the graphic.
Definition ff_other.h:20593
FCPageGraphic()
The constructor.
Definition ff_other.h:20343
bool GetPageEdgeRef() const
Returns true if positioning is referenced from the page edge.
Definition ff_other.h:20443
Evpu16 GetOriginalHeight() const
Returns the original graphic rectangle's height (before stretching), in EVPUs.
Definition ff_other.h:20424
void SetVerticalPosRightPage(Evpu16 value)
Sets the vertical position for right-side pages (if used).
Definition ff_other.h:20642
Evpu16 GetHorizontalPosRightPage() const
Returns the horizontal positioning for right-side pages (if used).
Definition ff_other.h:20455
int GetFirstPage() const
Returns the start page for the graphics.
Definition ff_other.h:20361
void SetFirstPage(int pageno)
Sets the start page for the graphics.
Definition ff_other.h:20531
GRAPHIC_VERTICAL_ALIGN
Vertical alignment constants for graphic.
Definition ff_other.h:20328
@ GRAPHICVERTALIGN_CENTER
Definition ff_other.h:20334
@ GRAPHICVERTALIGN_TOP
Definition ff_other.h:20330
@ GRAPHICVERTALIGN_BOTTOM
Definition ff_other.h:20332
void SetHorizontalPos(Evpu16 pos)
Sets the graphic rectangle's left-side position, in EVPUs.
Definition ff_other.h:20552
Evpu16 GetHorizontalPos() const
Returns the graphic rectangle's left-side position, in EVPUs.
Definition ff_other.h:20379
void SetHeight(Evpu16 height)
Sets the graphic rectangle's height, in EVPUs.
Definition ff_other.h:20584
GRAPHIC_HORIZONTAL_ALIGN
Horizontal alignment constants for graphic.
Definition ff_other.h:20314
@ GRAPHICHORIZALIGN_LEFT
Definition ff_other.h:20316
@ GRAPHICHORIZALIGN_RIGHT
Definition ff_other.h:20318
@ GRAPHICHORIZALIGN_CENTER
Definition ff_other.h:20320
void SetFixedPercent(bool state)
Sets the state of the "Fixed Percent" checkbox in the graphic attributes dialog box.
Definition ff_other.h:20652
bool GetVisible() const
Returns the visibility status of the page graphic.
Definition ff_other.h:20435
Evpu16 GetOriginalWidth() const
Returns the original graphic rectangle's width (before stretching), in EVPUs.
Definition ff_other.h:20415
int GetLastPage() const
Returns the start page for the graphics.
Definition ff_other.h:20370
bool GetFixedPercent() const
Returns the state of the "Fixed Percent" checkbox in the graphic attributes dialog box.
Definition ff_other.h:20468
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_other.h:20296
void SetPageEdgeRef(bool state)
Sets if positioning is referenced from the page edge, or from the margin.
Definition ff_other.h:20609
Evpu16 GetVerticalPos() const
Returns the graphic rectangle's bottom position, in EVPUs.
Definition ff_other.h:20388
Evpu16 GetHeight() const
Returns the graphic rectangle's height, in EVPUs.
Definition ff_other.h:20406
void SetWidth(Evpu16 width)
Sets the graphic rectangle's width, in EVPUs.
Definition ff_other.h:20575
bool GetIndependentRightPage() const
Returns true if the right-side page positioning is used.
Definition ff_other.h:20449
void SetHorizontalAlignment(GRAPHIC_HORIZONTAL_ALIGN alignment)
Sets the horizontal alignment for left-side (or all) pages.
Definition ff_other.h:20663
The class representing a physical page in Finale.
Definition ff_other.h:3398
eMeas CalcLastMeasure()
Calculates the last measure number on the page.
Definition finaleframework.cpp:4913
void SetFirstSystem(eSsys firstsysno)
Sets the system number of the first system of the page.
Definition finaleframework.cpp:4872
int CalcInteriorHeight(bool resize)
Returns the available space between the top and bottom margins on the page.
Definition finaleframework.cpp:4920
void SetBottomMargin(Evpu16 margin)
Sets the bottom page margin, as a positive value.
Definition ff_other.h:3610
FCPage()
The constructor.
Definition ff_other.h:3440
void SetHoldMargins(bool state)
Sets the Hold Margins setting.
Definition ff_other.h:3635
void SetWidth(Evpu32 width)
Sets the page width.
Definition ff_other.h:3570
bool IsBlank() const
Returns true if this is a blank page.
Definition ff_other.h:3482
void SetTopMargin(Evpu16 margin)
Sets the top page margin as a positive value.
Definition ff_other.h:3602
Evpu16 GetRightMargin() const
Returns the right page margin as a positive value.
Definition ff_other.h:3517
eSsys GetFirstSystem()
Gets the system number of the first system of the page.
Definition finaleframework.cpp:4867
Evpu32 GetWidth() const
Returns the page width.
Definition ff_other.h:3493
Evpu16 GetLeftMargin() const
Returns the left page margin as a positive value.
Definition ff_other.h:3509
twobyte GetPercent() const
Returns the resize percentage of the page.
Definition ff_other.h:3544
bool GetHoldMargins() const
Returns the status of the Hold Margins setting.
Definition ff_other.h:3558
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:3422
Evpu16 GetBottomMargin() const
Returns the bottom page margin as a positive value.
Definition ff_other.h:3533
void SetHeight(Evpu32 height)
Sets the page height.
Definition ff_other.h:3578
void SetPercent(twobyte percent)
Set the resize percentage of the page.
Definition ff_other.h:3621
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:3687
void UpdateLayout(bool bUnfreezeMeasures=false)
Updates the layout starting from the page and reloads the page data.
Definition finaleframework.cpp:4877
bool IsPortrait() const
Returns true if the height is larger than the width.
Definition ff_other.h:3473
Evpu16 GetTopMargin() const
Returns the top page margin as a positive value.
Definition ff_other.h:3525
eSsys CalcLastSystem()
Calculates the last system on the page.
Definition finaleframework.cpp:4883
Evpu32 GetHeight() const
Returns the page height.
Definition ff_other.h:3501
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_other.h:3423
void SetLeftMargin(Evpu16 margin)
Sets the left page margin, as a positive value.
Definition ff_other.h:3586
eMeas CalcFirstMeasure()
Calculates the first measure number on the page.
Definition finaleframework.cpp:4906
void SetRightMargin(Evpu16 margin)
Sets the right page margin, as a positive value.
Definition ff_other.h:3594
Class for a page-connected text block.
Definition ff_other.h:16687
twobyte GetHorizontalPosRightPage() const
Returns the horizontal position for the text block on right-side pages (if used).
Definition ff_other.h:16950
bool GetVisible() const
Returns true if the text block is visible (in the score/part that's currently in focus).
Definition ff_other.h:16978
void SetHorizontalAlignment(TEXT_HORIZONTAL_ALIGN alignment)
Sets the horizontal alignment for left-side (or all) pages.
Definition ff_other.h:17044
void SetFrameEdgeRef(bool state)
Sets if the frame edge of the text block is used as the positioning reference.
Definition ff_other.h:17222
bool SaveNewTextBlock(FCString *pString)
Saves a new raw text block (both a raw text and the connected text block) and assigns it to the page ...
Definition finaleframework.cpp:11792
bool GetPageEdgeRef() const
Returns true if positioning is referenced from the page edge.
Definition ff_other.h:16918
FCPageText()
The constructor.
Definition ff_other.h:16784
void SetVerticalPos(twobyte value)
Sets the vertical position for the text block. Smaller values go downward, higher values go upward.
Definition ff_other.h:17165
FCString * CreateTextString()
Gets a pointer to the text string, as a string object.
Definition ff_other.h:16799
bool GetFrameEdgeRef() const
Returns if the frame edge is used as the positioning reference or not.
Definition ff_other.h:16929
bool SaveTextString(FCString *pString)
Resaves a raw text string. This method requires that the text block already exists.
Definition finaleframework.cpp:11807
twobyte GetHorizontalPos() const
Returns the horizontal position for the text block.
Definition ff_other.h:16941
void SetLastPage(ePage page)
Sets the page number for the last page. If a text block page only should appear on one page,...
Definition ff_other.h:17130
void SetHorizontalAlignmentRightPage(TEXT_HORIZONTAL_ALIGN alignment)
Sets the horizontal alignment for right-side pages.
Definition ff_other.h:17064
void SetVerticalAlignment(TEXT_VERTICAL_ALIGN alignment)
Sets the vertical alignment for the text block.
Definition ff_other.h:17081
CMPER GetStringID() const
Returns the raw text ID for the page text (as an Engima string). This ID is "owned" by the connected ...
Definition finaleframework.cpp:11772
twobyte GetLastPage() const
Returns the page number for the last page.
Definition ff_other.h:16845
TEXT_HORIZONTAL_ALIGN GetHorizontalAlignmentRightPage() const
Returns the horizontal alignment for a right-side page text block.
Definition ff_other.h:16892
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_other.h:16768
FCTextBlock * CreateTextBlock()
Creates a FCTextBlock object that belongs to the page text. (It might return NULL....
Definition finaleframework.cpp:11780
TEXT_ASSIGNMENT
Constants for how text blocks are displayed.
Definition ff_other.h:16758
@ TEXTASSIGN_ALL
Definition ff_other.h:16760
@ TEXTASSIGN_ODD
Definition ff_other.h:16762
@ TEXTASSIGN_EVEN
Definition ff_other.h:16764
CMPER GetTextBlockID() const
Returns the connected block ID for the text. For use with FCTextBlock.
Definition ff_other.h:16997
twobyte GetFirstPage() const
Returns the page number for the first page.
Definition ff_other.h:16834
void SetHorizontalPosRightPage(twobyte value)
Sets the horizontal position for the text block on right-side pages.
Definition ff_other.h:17152
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:17240
twobyte GetVerticalPosRightPage() const
Returns the vertical position for the text block for right-side pages (if used).
Definition ff_other.h:16968
TEXT_VERTICAL_ALIGN
Vertical alignment constants for text blocks.
Definition ff_other.h:16744
@ TEXTVERTALIGN_TOP
Definition ff_other.h:16746
@ TEXTVERTALIGN_BOTTOM
Definition ff_other.h:16748
@ TEXTVERTALIGN_CENTER
Definition ff_other.h:16750
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_other.h:17185
void _SetTextBlockID(CMPER textblockid)
Sets the connected block ID for the text. For use with FCTextBlock.
Definition ff_other.h:17006
void SetFirstPage(ePage page)
Sets the page number for the starting page. If a text block page only should appear on one page,...
Definition ff_other.h:17118
void SetPageEdgeRef(bool state)
Sets if positioning is referenced from the page edge, or from the margin.
Definition ff_other.h:17210
void SetPageAssignment(TEXT_ASSIGNMENT assign)
Sets the page assignment (all/odd/even).
Definition ff_other.h:17098
bool DeepDeleteData() override
Reimplementation to delete block and raw text as well.
Definition ff_other.h:17231
twobyte GetVerticalPos() const
Returns the vertical position for the text block.
Definition ff_other.h:16959
TEXT_HORIZONTAL_ALIGN GetHorizontalAlignment() const
Returns the horizontal alignment for the text block on left-side (or all) pages.
Definition ff_other.h:16861
bool GetIndependentRightPage() const
Returns true if the right-side page positioning is used.
Definition ff_other.h:16987
TEXT_HORIZONTAL_ALIGN
Horizontal alignment constants for text blocks.
Definition ff_other.h:16730
@ TEXTHORIZALIGN_RIGHT
Definition ff_other.h:16734
@ TEXTHORIZALIGN_LEFT
Definition ff_other.h:16732
@ TEXTHORIZALIGN_CENTER
Definition ff_other.h:16736
void SetIndependentRightPage(bool state)
Sets if the right-side page positioning is used.
Definition ff_other.h:17194
TEXT_VERTICAL_ALIGN GetVerticalAlignment() const
Returns the vertical alignment for the text block.
Definition ff_other.h:16876
TEXT_ASSIGNMENT GetPageAssignment() const
Returns the page assignment (all/odd/even).
Definition ff_other.h:16906
void SetHorizontalPos(twobyte value)
Sets the horizontal position for the text block.
Definition ff_other.h:17142
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:16767
void SetVerticalPosRightPage(twobyte value)
Sets the vertical position for the text block for right-side pages.
Definition ff_other.h:17175
The class for a note definition in a percussion layout.
Definition ff_other.h:24811
twobyte CalcMidiRawNote(FCPercussionMapNotes *pNotes)
Calculates the MIDI note based on the percussion map. The order ID must match.
Definition finaleframework.cpp:12920
PERC_NOTE_TYPE GetNoteType() const
Returns the percussion note type.
Definition finaleframework.cpp:12729
twobyte CalcMidiNote(FCPercussionMapNotes *pNotes)
Calculates the MIDI note based on the percussion map. No mapping to the order ID is made.
Definition finaleframework.cpp:12934
void SetWholeNotehead(fourbyte value)
Sets the notehead character for whole notes.
Definition finaleframework.cpp:12891
void SetHalfNotehead(fourbyte value)
Sets the notehead character for half notes.
Definition finaleframework.cpp:12877
FCPercussionLayoutNote()
The constructor.
Definition ff_other.h:24867
void SetStaffPosition(twobyte value)
Sets the vertical position of the note.
Definition finaleframework.cpp:12849
fourbyte GetHalfNotehead() const
Returns the notehead character for half notes.
Definition finaleframework.cpp:12779
twobyte GetOrderID() const
Returns the order ID (within the layout), when there are multiple notes of the same type in one layou...
Definition finaleframework.cpp:12740
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_other.h:24849
void SetDoubleWholeNotehead(fourbyte value)
Sets the notehead character for double whole notes.
Definition finaleframework.cpp:12905
void SetNoteType(PERC_NOTE_TYPE value)
Sets the percussion note type.
Definition finaleframework.cpp:12814
twobyte GetStaffPosition() const
Returns the vertical position of the note.
Definition finaleframework.cpp:12756
void SetClosedNotehead(fourbyte value)
Sets the notehead character for quarter notes and smaller.
Definition finaleframework.cpp:12863
fourbyte GetClosedNotehead() const
Returns the notehead character for quarter notes and smaller.
Definition finaleframework.cpp:12768
void SetOrderID(twobyte value)
Sets the order ID (within the layout), when there are multiple notes of the same type in one layout.
Definition finaleframework.cpp:12831
fourbyte GetDoubleWholeNotehead() const
Returns the notehead character for double whole notes.
Definition finaleframework.cpp:12802
fourbyte GetWholeNotehead() const
Returns the notehead character for whole notes.
Definition finaleframework.cpp:12790
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:25003
PERC_NOTE_TYPE GetRawNoteType() const
Returns the "raw" percussion note type. This includes the order ID, for notes that share the same typ...
Definition finaleframework.cpp:12717
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:24848
Collection class for FCPercussionLayoutNote class objects (=a percussion layout).
Definition ff_othercollection.h:1758
A lookup table for FCPercussionLayoutNotes collections.
Definition ff_other.h:24364
FCPercussionLayoutNotes * GetPercussionLayoutNotes(FCPercussionStaff *pPercussionStaff)
Returns the pointer to a FCPercussionLayoutNotes object based on the supplied percussion staff object...
Definition finaleframework.cpp:12625
FCPercussionLayoutNotesLookup()
The constructor.
Definition ff_other.h:24372
FCPercussionLayoutNotes * GetItemAt(int index) const
Overridden GetItemAt method.
Definition ff_other.h:24401
FCPercussionLayoutNote * FindPercussionLayoutRawNote(FCPercussionStaff *pPercussionStaff, FLAG_16 percussionnote)
Returns the percusion layout note, based on the percussion staff and the raw percussion note ID.
Definition finaleframework.cpp:12639
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:24366
Class for an individual note in a percussion map, read from Finale's XML file.
Definition ff_other.h:24156
FCPercussionMapNote(int midikey, int notetype, const char *pszName)
The constructor. Not supported by Lua.
Definition ff_other.h:24204
int GetMidiNote() const
Returns the midi note value.
Definition ff_other.h:24242
PERC_NOTE_TYPE GetNoteType() const
Returns the percussion note type.
Definition ff_other.h:24225
PERCUSSION_NOTE_TYPES
The predefined "virtual" percussion note types in Finale.
Definition ff_other.h:24166
const char * GetName() const
The name string for the note type. This is usually empty for standard percussion note types.
Definition ff_other.h:24246
twobyte GetOrderID() const
Returns the order ID for the percussion note type.
Definition ff_other.h:24231
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:24210
PERC_NOTE_TYPE GetRawNoteType() const
Returns the "raw" percussion note type. This includes the order ID as well.
Definition ff_other.h:24216
Collection class for FCPercussionMapNote class objects, used by the FCInstrumentDef class.
Definition ff_other.h:24260
FCPercussionMapNote * FindRawNoteType(PERC_NOTE_TYPE rawnotetype)
Finds and returns the raw note type in the collection.
Definition ff_other.h:24291
FCPercussionMapNotes(twobyte percussionid)
The constructor. Not supported by Lua.
Definition ff_other.h:24269
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:24277
FCPercussionMapNote * FindMidiNote(twobyte midinote)
Finds and returns a MIDI note in the collection.
Definition ff_other.h:24307
twobyte GetPercussionID() const
Returns the percussion map ID for the loaded collection.
Definition ff_other.h:24275
FCPercussionMapNote * GetItemAt(int index) const
Overridden GetItemAt method.
Definition ff_other.h:24283
A lookup table for FCPercussionMapNotes notes.
Definition ff_other.h:24328
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:24330
FCPercussionMapNotesLookup()
The constructor.
Definition ff_other.h:24336
FCPercussionMapNotes * GetPercussionMapNotes(FCInstrumentDef *pInstrumentDef)
Returns the pointer to a FCPercussionMapNotes object based on the supplied instrument definition.
Definition finaleframework.cpp:12606
Class that stores the information for drum mapping, either for a staff or staff style.
Definition ff_other.h:7106
FCPercussionStaff()
The constructor.
Definition ff_other.h:7147
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:7182
CMPER GetPercussionLibrary()
Returns the number to the percussion library that's used. This is loaded by the percussion layout,...
Definition ff_other.h:7160
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_other.h:7134
FCPercussionLayoutNotes * CreateLayoutNotes()
Creates a percussion layout for the percussion staff. A more effiencent approach is using FCPercussio...
Definition finaleframework.cpp:7792
void SetPercussionLibrary(CMPER cmper)
Set the percussion library that's used. This is loaded by the percussion layout, (the FCPercussionLay...
Definition ff_other.h:7169
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:7133
Simple class for the representation of x, y coordinates.
Definition ff_base.h:4892
double GetY() const
Returns the y position.
Definition ff_base.h:4942
double GetX() const
Returns the x position.
Definition ff_base.h:4936
The class for raw text objects. All other text classes are based on this class, but it can also be us...
Definition ff_text.h:17
bool Load(twobyte number)
Loads the text with the indicated text number.
Definition finaleframework.cpp:4386
FCString * CreateString() const
Creates a string object with the loaded text. If the string doesn't exist (or if it's empty),...
Definition finaleframework.cpp:4470
Class that handles separate placement for repeats.
Definition ff_other.h:17270
twobyte GetMeasure() const override
Sets the measure that the separate placement should be matched to.
Definition ff_other.h:17425
SEPARATEPLACEMENT_MODES GetMode() const
Gets the type of data that should be used when reading/saving the record.
Definition ff_other.h:17392
void SetHorizontalOffset2(Evpu16 value)
Sets the 2nd horizontal offset, compared to the standard positioning.
Definition ff_other.h:17550
eStaff GetStaff() const override
Returns the staff that the separate placement should be matched to.
Definition ff_other.h:17412
void SetVisible(bool state)
Sets the visibility state. (Whether "Show" is checked in the context menu.)
Definition ff_other.h:17615
Evpu16 GetVerticalOffset1() const
Returns the 1st vertical offset, compared to the standard positioning.
Definition ff_other.h:17452
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_other.h:17317
FCSeparatePlacement()
The constructor.
Definition ff_other.h:17333
void SetVerticalOffset2(Evpu16 value)
Sets the 2nd vertical offset, compared to the standard positioning.
Definition ff_other.h:17572
SEPARATEPLACEMENT_MODES
Modes for which placement type to load.
Definition ff_other.h:17302
@ SEPARMODE_BACKWARDREPEAT
Definition ff_other.h:17304
@ SEPARMODE_ENDINGREPEATTEXT
Definition ff_other.h:17313
@ SEPARMODE_TEXTREPEAT
Definition ff_other.h:17307
@ SEPARMODE_ENDINGREPEAT
Definition ff_other.h:17310
void SetVerticalOffset1(Evpu16 value)
Sets the 1st horizontal offset, compared to the standard positioning.
Definition ff_other.h:17540
bool HasStaffValue() const override
Overridden method (returning true) since this class contains a staff value.
Definition ff_other.h:17415
bool GetVisible() const
Returns the visibility state. (Whether "Show" is checked in the context menu.)
Definition ff_other.h:17592
Evpu16 GetHorizontalOffset1() const
Returns the 1st horizontal offset, compared to the standard positioning.
Definition ff_other.h:17441
Evpu16 GetHorizontalOffset2() const
Returns the 2nd horizontal offset, compared to the standard positioning.
Definition ff_other.h:17462
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:17316
void SetHorizontalOffset1(Evpu16 value)
Sets the 1st horizontal offset, compared to the standard positioning.
Definition ff_other.h:17529
void SetStaff(eStaff staff)
Sets the staff that the separate placement should be matched to.
Definition ff_other.h:17504
Evpu16 GetVerticalOffset2() const
Returns the 2nd horizontal offset, compared to the standard positioning.
Definition ff_other.h:17484
void SetMeasure(twobyte meas)
Sets the measure that the separate placement should be matched to.
Definition ff_other.h:17514
void SetMode(SEPARATEPLACEMENT_MODES mode)
Sets the type of data that should be used when reading/saving the record.
Definition ff_other.h:17350
Collection class for FCSeparatePlacement records, that handles separate placements in repeats.
Definition ff_othercollection.h:1020
Class for a shape definition (as in Finale's Shape selection dialog).
Definition ff_other.h:2233
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:2469
fourbyte GetDataCount() const
Returns the number of elements in the data array.
Definition ff_other.h:2666
bool GetFontInfo(int index, FCFontInfo *pFontInfo)
Gets the font info from a "setfont" tag.
Definition finaleframework.cpp:38533
bool Load(CMPER itemno) override
Loads the indicated item in a special way, since there's a crash bug when loading empty shapes,...
Definition ff_other.h:2527
bool DeleteData() override
Deletes the associated data from Finale's database. Be careful when deleting multiple objects.
Definition ff_other.h:2512
bool SaveWithType(SHAPEDEF_TYPES shapedeftype)
Saves an existing shape definition with the Save() method, but also saves the type of shape with the ...
Definition ff_other.h:2638
void InstructionDebugDump(int instructionindex)
Special "DebugDump" to get the elements within an instruction.
Definition finaleframework.cpp:38647
bool LoadNext() override
Different approach for loading next for shapes.
Definition ff_other.h:2519
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_other.h:2470
FCStrings * CreateTextStrings()
Returns a string collection with all the texts in the shape.
Definition finaleframework.cpp:38487
bool SaveNewWithType(SHAPEDEF_TYPES shapedeftype)
Saves a new shape definition the with the SaveNew() method, but also saves the type of shape with the...
Definition ff_other.h:2603
int GetInstructionSize(int index)
Returns how many data blocks an instruction contains. (This is a fixed number based on the instructio...
Definition ff_other.h:2726
FCShapeDefInstructions * CreateInstructions()
Creates a collection with all the instructions for the shape.
Definition finaleframework.cpp:38311
bool _GetIsEmptyShape()
For internal use.
Definition ff_other.h:2488
bool RebuildInstructions(FCShapeDefInstructions *pCollection)
Rebuilds the shape data from a collection (containing all the instructions for the shape).
Definition finaleframework.cpp:38377
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:2820
bool ExportAsSVGFile(FCString *pFileName, float scaling, const char *pszUnit)
Saves the shape as a SVG (Scalable Vector File) file. An existing file with the same full path will b...
Definition finaleframework.cpp:38603
ETAG GetInstructionTag(int index)
Returns the instruction tag at a certain index in the shape path.
Definition ff_other.h:2716
SHAPEDEF_TYPES GetType() const
Returns the shape definition type.
Definition ff_other.h:2583
FCShapeDef()
The constructor.
Definition ff_other.h:2473
fourbyte GetInstructionsCount() const
Returns the total number of elements in the instructions array.
Definition ff_other.h:2688
bool SetFontInfo(int index, FCFontInfo *pFontInfo)
Sets the font info to a "setfont" tag.
Definition finaleframework.cpp:38567
bool CalcProtected()
Returns true if the shape is marked as "protected" by Finale and shouldn't be deleted....
Definition ff_other.h:2492
SHAPEDEF_TYPES
The shape definition types, to be used with FCShapeDef::SaveNewWithType(), etc.
Definition ff_other.h:2238
bool LoadFirst() override
Different approach for loading first for shapes.
Definition ff_other.h:2507
Helper class for FCShapeDef.
Definition ff_other.h:1290
void Init_Stroke()
Creates a st_stroke shape instruction.
Definition ff_other.h:1753
void Init_Ellipse(int width, int height)
Inits a Ellipse instruction.
Definition ff_other.h:1683
double GetFloatData(int index)
Returns the floating point data contained at the 0-based index position.
Definition finaleframework.cpp:38237
const char * GetTagAsString() const
Returns the instruction tag as a human-readable C-type string, such as "startobject",...
Definition ff_other.h:1444
virtual ~FCShapeDefInstruction()
The destructor.
Definition finaleframework.cpp:38102
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:1386
fourbyte GetFourbyteData(int index) const
Returns the fourbyte data contained at the 0-based index position.
Definition finaleframework.cpp:38220
void Init_Null()
Creates a NULL shape instruction.
Definition ff_other.h:1760
void _SetMemory(EDTPathInst *pPathInstruction, void *pPathData, int offset)
For internal use only.
Definition finaleframework.cpp:38195
bool IsIdentical(const __FCBase *pTestObject) const override
Returns true if the shape def instructions are identical.
Definition ff_other.h:1425
void Init_SetGrey(int greyvalue)
Sets the grey percent (0-100).
Definition ff_other.h:1657
void Init_ClosePath()
Inits a ClosePath instruction.
Definition ff_other.h:1672
void Init_RLineTo(int x, int y)
Creates a st_rlineto shape instruction.
Definition ff_other.h:1736
void Init_SetFont(FCFontInfo *pFontInfo)
Creates a st_setfont shape instruction.
Definition ff_other.h:1716
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:1768
SHAPEDEFTAGS
The instruction tag constants that can be returned from the GetTag method.
Definition ff_other.h:1321
@ SHAPETAG_SETGRAY
Definition ff_other.h:1353
@ SHAPETAG_SETDASH
Definition ff_other.h:1347
@ SHAPETAG_CURVETO
Definition ff_other.h:1362
@ SHAPETAG_RMOVETO
Definition ff_other.h:1341
@ SHAPETAG_SETFONT
Definition ff_other.h:1323
@ SHAPETAG_LINEWIDTH
Definition ff_other.h:1344
@ SHAPETAG_STROKE
Definition ff_other.h:1338
@ SHAPETAG_NULL
Definition ff_other.h:1377
@ SHAPETAG_STARTGROUP
Definition ff_other.h:1329
@ SHAPETAG_RECTANGLE
Definition ff_other.h:1368
@ SHAPETAG_STARTOBJECT
Definition ff_other.h:1326
@ SHAPETAG_ENDGROUP
Definition ff_other.h:1332
@ SHAPETAG_SLUR
Definition ff_other.h:1365
@ SHAPETAG_BRACKET
Definition ff_other.h:1374
@ SHAPETAG_DRAWCHAR
Definition ff_other.h:1335
@ SHAPETAG_CLOSEPATH
Definition ff_other.h:1371
@ SHAPETAG_FILLSOLID
Definition ff_other.h:1359
@ SHAPETAG_ELLIPSE
Definition ff_other.h:1356
@ SHAPETAG_LINETO
Definition ff_other.h:1350
void Init_Bracket(int brackettype)
Creates a bracket shape instruction.
Definition ff_other.h:1745
void Init_EndGroup()
Creates a st_endgroup shape instruction.
Definition ff_other.h:1602
void Init_CurveTo(int x1, int y1, int x2, int y2, int endpt_x, int endpt_y)
Creates a st_curveto shape instruction.
Definition ff_other.h:1618
void Init_DrawChar(eUniChar16 character)
Creates a st_drawchar shape instruction.
Definition ff_other.h:1706
void Init_Slur(int x1, int y1, int x2, int y2, int endpt_x, int endpt_y)
Creates a st_slur shape instruction.
Definition ff_other.h:1631
void Init_StartGroup(int xorigin, int yorigin, int left, int top, int right, int bottom, int xtransform=1000, int ytransform=1000, int rotation=0)
Creates a st_startgroup shape instruction.
Definition ff_other.h:1583
void Init_RMoveTo(int x, int y)
Creates a st_rmoveto shape instruction.
Definition ff_other.h:1609
void Init_SetDash(int dashlength, int spacebetween)
Creates a st_setdash shape instruction.
Definition ff_other.h:1727
bool SetFourbyteData(int index, fourbyte fbvalue)
Sets the fourbyte data contained at the 0-based index position.
Definition ff_other.h:1534
int GetCount() const
Returns the number of parameter elements in the instruction.
Definition ff_other.h:1411
void Init_StartObject(int xorigin, int yorigin, int left, int top, int right, int bottom, int xtransform=1000, int ytransform=1000, int rotation=0)
Creates a st_startobject shape instruction.
Definition ff_other.h:1563
void Init_LineWidth(int linewidth)
Creates a st_linewidth shape instruction.
Definition ff_other.h:1647
void Init_Rectangle(int width, int height)
Inits a Rectangle instruction.
Definition ff_other.h:1695
void Init_FillSolid()
Inits a FillSolid instruction, which fills the path.
Definition ff_other.h:1665
ETAG GetTag() const
Returns the instruction tag as a constant.
Definition ff_other.h:1419
Helper class for FCShapeDef.
Definition ff_other.h:1804
FCShapeDefInstruction * AddStartGroup(FCPoint *pOrigin, FCPoint *pBoundLeftTop, FCPoint *pBoundRightBottom, int xtransform=1000, int ytransform=1000, int rotation=0)
Adds a StartGroup instruction. All instructions in the group will transform according to the group....
Definition ff_other.h:1872
FCShapeDefInstruction * AddSetGrey(int percent)
Adds a SetGrey instruction.
Definition ff_other.h:1925
FCShapeDefInstruction * AddCurveToDetails(int x1, int y1, int x2, int y2, int endpt_x, int endpt_y)
Adds a CurveTo instruction with all parameters set.
Definition ff_other.h:2033
FCShapeDefInstruction * AddCurveTo(int ctrlpt_height=72)
Adds a standard CurveTo instruction.
Definition ff_other.h:2001
FCShapeDefInstruction * AddSetDash(int dashlength, int spacebetween)
Adds a SetDash instruction.
Definition ff_other.h:2076
FCShapeDefInstruction * AddDrawChar(eUniChar16 character)
Adds a DrawChar instruction.
Definition finaleframework.cpp:38258
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:1806
FCShapeDefInstruction * GetItemAt(int index) const
Overridden version of GetItemAt().
Definition ff_other.h:1812
FCShapeDefInstruction * AddClosePath()
Adds a ClosePath instruction.
Definition ff_other.h:1950
FCShapeDefInstruction * AddSetFont(FCFontInfo *pFontInfo)
Adds a SetFont instruction.
Definition ff_other.h:2146
FCShapeDefInstruction * AddStroke()
Adds a Stroke instruction (which draws a path).
Definition ff_other.h:2061
FCShapeDefInstruction * AddRMoveTo(int x, int y)
Adds a RMoveTo instruction (=relative move to).
Definition ff_other.h:2129
FCShapeDefInstruction * AddEllipse(int width, int height)
Adds an Ellipse instruction (draws a circle).
Definition ff_other.h:1965
FCShapeDefInstruction * AddSolidLineStyle()
A shortcut method to add a SetDash(18, 0) instruction.
Definition ff_other.h:2117
FCShapeDefInstruction * AddRLineTo(int x, int y)
Adds a RLineTo instruction (=relative line to).
Definition ff_other.h:2091
FCShapeDefInstruction * AddLineWidth(int linewidth)
Adds a LineWidth instruction.
Definition ff_other.h:1911
FCShapeDefInstruction * AddNull()
Adds a Null instruction.
Definition ff_other.h:1821
FCShapeDefInstruction * AddFillSolid()
Adds a FillSolid instruction, which fills the path.
Definition ff_other.h:1937
FCShapeDefInstruction * AddEndGroup()
Adds a LineWidth instruction, which closes the group that was started with AddStartGroup.
Definition ff_other.h:1895
FCShapeDefInstruction * AddStartObject(FCPoint *pOrigin, FCPoint *pBoundLeftTop, FCPoint *pBoundRightBottom, int xtransform=1000, int ytransform=1000, int rotation=0)
Adds a StartObject instruction.
Definition ff_other.h:1845
FCShapeDefInstruction * AddSlur(int ctrlpt_height=72)
Adds a standard Slur instruction.
Definition ff_other.h:2048
FCShapeDefInstruction * AddBracket(int brackettype)
Adds a Bracket instruction.
Definition ff_other.h:2105
FCShapeDefInstruction * AddRectangle(int width, int height)
Adds an Rectangle instruction (draws a circle).
Definition ff_other.h:1980
FCShapeDefInstruction * AddDrawCharsString(FCString *pString)
Adds a string as a series of DrawChar instructions from a FCString object. This method supports 16-bi...
Definition ff_other.h:2200
FCShapeDefInstruction * AddDrawChars(const char *pszString)
Adds a string as a series of DrawChar instructions. This method doesn't support Unicode.
Definition ff_other.h:2177
Class for a shape expression definition.
Definition ff_other.h:15488
void SetNoPrint(bool state)
Sets the "No Print" state.
Definition ff_other.h:15820
bool GetUseCategoryPos() const
Returns true if the expression is marked to use the category positioning.
Definition ff_other.h:15702
void GetDescription(FCString *pName)
Gets the description text for the shape expression definition.
Definition finaleframework.cpp:11916
bool GetAllowHorizontalStretching() const
Returns the "Allow Horizontal Stretching" state.
Definition ff_other.h:15603
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:16033
bool AssignShapeDef(FCShapeDef *pShapeDef)
Assigns a saved FCShapeDef object to the shape expression definition.
Definition ff_other.h:16009
FCShapeExpressionDef()
The constructor.
Definition finaleframework.cpp:11826
FCString * CreateDescription()
Creates a FCString object, containing the description text.
Definition finaleframework.cpp:11975
void SetUseCategoryPos(bool value)
Sets if the "use category positioning" should be checked or not.
Definition ff_other.h:15930
twobyte GetVerticalBaselineOffset() const
Returns the vertical "Additional Baseline Offset" in the shape expression definition.
Definition ff_other.h:15758
twobyte GetCategoryID() const
Returns the category ID for the expression definition.
Definition ff_other.h:15841
void SetAllowHorizontalStretching(bool state)
Sets the "Allow Horizontal Stretching" state.
Definition ff_other.h:15811
bool GetNoPrint() const
Returns the "No Print" state.
Definition ff_other.h:15612
void SetExecutableShapeID(twobyte shapeID)
Sets the executable shape ID for the expression def.
Definition ff_other.h:15790
FCCategoryDef::HORIZ_JUSTIFICATION GetHorizontalJustification() const
Returns the "Horizontal Justification" setting in the shape expression definition.
Definition ff_other.h:15659
virtual ~FCShapeExpressionDef()
The destructor.
Definition finaleframework.cpp:11835
bool LoadNext() override
Overridden LoadNext, since the data loading mechanism requires it for LoadAll() to work.
Definition ff_other.h:15564
void SetVerticalBaselineOffset(twobyte value)
Sets the vertical "Additional Baseline Offset" in the shape expression definition.
Definition ff_other.h:15988
void SetHorizontalJustification(FCCategoryDef::HORIZ_JUSTIFICATION value)
Sets the "Horizontal Justification" in the shape expression definition.
Definition ff_other.h:15875
void SetDescription(FCString *pName)
Sets the description text for the shape expression definition.
Definition finaleframework.cpp:11940
void SetVerticalEntryOffset(twobyte value)
Sets the vertical "Additional Entry Offset" in the shape expression definition.
Definition ff_other.h:15956
void SetBreakMMRest(bool state)
Sets the "Break Multimeasure Rest" state.
Definition ff_other.h:15829
FCCategoryDef::VERT_ALIGNMENT GetVerticalAlignmentPoint() const
Returns the vertical alignment point for the expression definition positioning.
Definition ff_other.h:15748
void SetVerticalAlignmentPoint(FCCategoryDef::VERT_ALIGNMENT value)
Sets the vertical alignment point for the expression definition positioning.
Definition ff_other.h:15972
bool LoadFirst() override
Overridden LoadFirst, since the data loading mechanism requires it for LoadAll() to work.
Definition ff_other.h:15561
void SetID(twobyte shapeID)
Sets the shape ID (of the FCShapeDef class).
Definition ff_other.h:15777
void SetHorizontalAlignmentPoint(FCCategoryDef::HORIZ_ALIGNMENT value)
Sets the "Horizontal Alignment Point" setting in the shape expression definition.
Definition ff_other.h:15911
void SetUseExecutableShape(bool state)
Sets the use of executable shape. Normally this isn't called directly. Instead, use SetExecutableShap...
Definition ff_other.h:15802
twobyte GetExecutableShapeID()
Returns the executable shape ID.
Definition ff_other.h:15632
FCCategoryDef::HORIZ_ALIGNMENT GetHorizontalAlignmentPoint() const
Returns the "Horizontal Alignment Point" setting in the shape expression definition.
Definition ff_other.h:15689
twobyte GetHorizontalOffset() const
Returns the "Additional Horizontal Offset" value in the shape expression definition.
Definition ff_other.h:15718
twobyte GetVerticalEntryOffset() const
Returns the vertical "Additional Entry Offset" in the shape expression definition.
Definition ff_other.h:15728
void SetHorizontalOffset(twobyte value)
Sets the "Additional Horizontal Offset" in the shape expression definition.
Definition ff_other.h:15946
bool GetUseExecutableShape() const
Returns true if an executable is used for the expression def.
Definition ff_other.h:15593
twobyte GetID() const
Returns the shape ID (of the FCShapeDef class).
Definition ff_other.h:15642
FCShapeDef * CreateShapeDef()
Creates a FCShapeDef object for the shape that's connected to the shape expression definition....
Definition finaleframework.cpp:11984
bool GetBreakMMRest() const
Returns the "Break Multimeasure Rest" state.
Definition ff_other.h:15621
void SetCategoryID(twobyte ID)
Sets the category ID for the expression definition.
Definition ff_other.h:15856
The class for a staff in the score. It is also a base class for staff styles.
Definition ff_other.h:11503
FCPercussionStaff * CreatePercussionStaff()
Creates a percussion staff (or staff style) object, if the staff is set to percussion.
Definition finaleframework.cpp:9203
void SetAutoNumberingStyle(STAFFAUTONUMBER_STYLE value)
Sets the auto-numbering style for this staff. For Finale to recognize it, you must also set SetUseAut...
Definition ff_other.h:12095
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_other.h:11898
bool GetUseAutoNumberingStyle() const
Gets the option of whether to use the auto-numbering style for this staff.
Definition ff_other.h:12039
FCInstrumentPlaybackData * CreateInstrumentPlaybackData()
Creates a FCInstrumentPlaybackData object for the staff.
Definition finaleframework.cpp:9272
FCInstrumentDef * CreateLayerInstrumentDef(int layer)
Creates the instrument definition object for the staff or staff style.
Definition finaleframework.cpp:9294
int CalcPercussionLayoutID()
Calculates the percussion layout ID for the staff or staff style.
Definition finaleframework.cpp:9194
STAFFAUTONUMBER_STYLE GetAutoNumberingStyle() const
Gets the auto-numbering style for this staff. It is only valid if GetUseAutoNumberingStyle is true.
Definition ff_other.h:12062
FCStaff()
The constructor.
Definition ff_other.h:11982
void SetUseAutoNumberingStyle(bool state)
Sets the option of whether to use the auto-numbering style for this staff.
Definition ff_other.h:12078
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:12173
STAFFAUTONUMBER_STYLE
Style types for the GetAutoNumberingStyle and SetAutoNumberingStyle methods.
Definition ff_other.h:11959
@ STAFFAUTONUMBER_ARABIC_SUFFIX
Definition ff_other.h:11961
@ STAFFAUTONUMBER_ARABIC_PREFIX
Definition ff_other.h:11973
@ STAFFAUTONUMBER_ORDINAL_PREFIX
Definition ff_other.h:11967
@ STAFFAUTONUMBER_ALPHA_SUFFIX
Definition ff_other.h:11970
@ STAFFAUTONUMBER_ROMAN_SUFFIX
Definition ff_other.h:11964
bool SavePercussionLayout(int layoutID, int mapID)
Sets up and saves a percussion staff. The supplied percussion layout ID will be used....
Definition finaleframework.cpp:9223
FCFretInstrumentDef * CreateFretInstrumentDef()
Creates a FCFretInstrumentDef object for the connected tablature instrument. Might return NULL if the...
Definition finaleframework.cpp:9283
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:11897
An object that contains one staff list section (out of 4). Before data is loaded/saved,...
Definition ff_other.h:25043
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:25179
bool RemoveElement(twobyte element)
Removes an element from the staff list.
Definition finaleframework.cpp:13144
bool DeleteData() override
DeleteData() is currently not supported.
Definition ff_other.h:25195
int GetStaff(int index)
Gets a staff number for a reference index.
Definition ff_other.h:25246
bool RemoveStaff(twobyte staffnumber)
Removes a staff number from the staff list.
Definition ff_other.h:25412
bool AddElement(twobyte elementnumber)
Adds an element to the staff list.
Definition finaleframework.cpp:13120
bool IncludesTopStaff()
Returns true if the "Top Staff" is included in the staff list.
Definition ff_other.h:25281
bool RemoveBottomStaff()
Removes a "Bottom Staff" from the staff list.
Definition ff_other.h:25401
int GetStaffCount() const
Returns the number of staves that are part of the staff list. Top/bottom staff settings are not inclu...
Definition ff_other.h:25225
bool SaveNew() override
SaveNew() is not supported.
Definition ff_other.h:25189
FCStaffList()
the constructor.
Definition ff_other.h:25089
bool AddBottomStaff()
Adds a "Bottom Staff" to the staff list.
Definition ff_other.h:25373
FCString * CreateNameString()
Loads the name of the staff list and puts it in an object.
Definition finaleframework.cpp:13049
bool IncludesBottomStaff()
Returns true if the "Bottom Staff" is included in the staff list.
Definition ff_other.h:25290
bool IncludesStaff(twobyte staffnumber)
Returns true if the staff number is included in the staff list.
Definition ff_other.h:25301
bool SaveNameString(FCString *pString)
Saves the name of the staff list.
Definition finaleframework.cpp:13084
void SetMode(STAFFLIST_MODES mode)
Sets the list of data that should be used when reading/saving the record.
Definition ff_other.h:25126
bool RemoveTopStaff()
Removes a "Top Staff" from the staff list.
Definition ff_other.h:25390
bool IsElementAvailable(twobyte stafflistelement)
Returns true if the element (staff or top/bottom setting) is available.
Definition ff_other.h:25266
bool LoadNext() override
Overridden LoadNext so the FCStaffLists collection work correctly.
Definition ff_other.h:25198
bool Save() override
Overridden Save method, since the staff list is of dynamic size.
Definition finaleframework.cpp:12988
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_other.h:25094
bool Load(CMPER itemno) override
Overridden Load() method, since the staff list is of dynamic size.
Definition finaleframework.cpp:12953
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:25093
STAFFLIST_MODES
Modes for loading/saving the staff list.
Definition ff_other.h:25067
bool AddTopStaff()
Adds a "Top Staff" to the staff list.
Definition ff_other.h:25361
int GetElementCount() const
Returns the number of elements in the staff list. Both staff numbers and top/bottom staff are include...
Definition ff_other.h:25205
bool AddStaff(twobyte staffnumber)
Adds a staff number to the staff list.
Definition ff_other.h:25348
Class for staff (or staff style) name positioning data.
Definition ff_other.h:7202
twobyte GetHorizontalOffset() const
Returns the horizontal offset adjustment value.
Definition ff_other.h:7274
void SetUsePositioning(bool state)
Sets if the positioning is activated for the staff (or staff style).
Definition ff_other.h:7367
Evpu16 CalcHorizontalPosition()
Calculates the actual horizontal position, based on the preferences.
Definition finaleframework.cpp:7828
void SetJustification(FLAG_16 justification)
Sets the default justification for the staff text.
Definition ff_other.h:7332
void SetAlignment(FLAG_16 alignment)
Sets the default alignment for the staff text.
Definition ff_other.h:7346
bool GetUsePositioning() const
Returns if the positioning is activated for the staff (or staff style).
Definition ff_other.h:7308
FLAG_16 GetAlignment() const
Returns the default alignment for the staff text.
Definition ff_other.h:7296
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:7233
FCStaffNamePosition(bool fullname)
The constructor.
Definition finaleframework.cpp:7807
void SetHorizontalOffset(twobyte value)
Returns the horizontal offset adjustment value.
Definition ff_other.h:7318
FLAG_16 GetJustification() const
Returns the default justification for the staff text.
Definition ff_other.h:7288
void SetVerticalOffset(twobyte value)
Returns the vertical offset adjustment value.
Definition ff_other.h:7324
Evpu16 CalcVerticalPosition()
Calculates the actual vertical position, based on the preferences.
Definition finaleframework.cpp:7840
twobyte GetVerticalOffset() const
Returns the vertical offset adjustment value.
Definition ff_other.h:7280
void SetExpandSingleWord(bool state)
Sets the default "expand single word" state.
Definition ff_other.h:7358
bool GetExpandSingleWord() const
Returns the default "expand single word" state.
Definition ff_other.h:7302
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_other.h:7234
Class for staff style assignments to a staff.
Definition ff_other.h:19437
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:19589
void SetEndMeasure(eMeas value)
Sets the end measure for the applied staff style.
Definition ff_other.h:19539
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_other.h:19466
FCStaffStyleAssign()
The constructor.
Definition ff_other.h:19482
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:19465
eMeas GetStartMeasure() const
Returns the start measure number of the assigned staff style.
Definition ff_other.h:19503
eStaff GetStaff() const override
Returns the staff number for a loaded staff style region.
Definition ff_other.h:19557
twobyte GetStyleID() const
Returns the staff style ID, for use with the FCStaffStyleDef class. Please note that the style ID is ...
Definition ff_other.h:19496
void SetStartMeasure(eMeas value)
Sets the start measure for the applied staff style.
Definition ff_other.h:19527
TimeEdu32 GetEndMeasurePos() const
Returns the end measure EDU position of the assigned staff style.
Definition ff_other.h:19521
void SetStyleID(twobyte value)
Sets the staff style definition ID for the applied staff style.
Definition ff_other.h:19551
eMeas GetEndMeasure() const
Returns the end measure number of the assigned staff style.
Definition ff_other.h:19515
void SetStartMeasurePos(TimeEdu32 value)
Sets the start measure position for the applied staff style.
Definition ff_other.h:19533
void SetEndMeasurePos(TimeEdu32 value)
Sets the end measure position for the applied staff style.
Definition ff_other.h:19545
bool IsOverlapping(FCMusicRegion *pRegion)
Returns true if the supplied FCMusicRegion object is within staff style region.
Definition ff_other.h:19570
void SetEndMeasurePosRight()
Sets the the end measure pos to the right-most edge of the staff style assignment's end measure.
Definition ff_other.h:19564
TimeEdu32 GetStartMeasurePos() const
Returns the start measure EDU position of the assigned staff style.
Definition ff_other.h:19509
Class for a staff style definition.
Definition ff_other.h:18244
void SetUseShowNoteShapes(bool state)
Sets if note shapes should be part of the staff style or not.
Definition finaleframework.cpp:12117
void SetUseShowPartStaffNames(bool state)
Sets if staff name display in parts should be part of the staff style or not.
Definition ff_other.h:19150
void SetUseRedisplayOtherLayerAccidentals(bool state)
Sets if "Redisplay accidentals in other layers within measures" should be part of the staff style or ...
Definition finaleframework.cpp:12131
void SetUseShowAugmentationDots(bool state)
Sets if augmentation dot setting should be part of the staff style or not.
Definition ff_other.h:19081
bool GetCopyable() const
Returns if the staff style definition should be copyable or not.
Definition ff_other.h:18682
bool GetUseShowRepeats() const
Returns true if the repeat bar display is active for the staff style definition.
Definition ff_other.h:18763
void SetUseShowTies(bool state)
Sets if the display of ties should be part of the staff style or not.
Definition ff_other.h:19171
void SetUseShowFretboards(bool state)
Sets if fretboard display should be part of the staff style or not.
Definition ff_other.h:19091
void SetUseBreakRepeatBarlines(bool state)
Sets if the "Break repeat barlines between staves" setting should be part of the staff style or not.
Definition ff_other.h:19247
bool GetUseDisplayEmptyRests() const
Returns true if "Display Rests in empty measures" state should be used for the staff style definition...
Definition ff_other.h:18836
void SetUseShowChords(bool state)
Sets if chords should be part of the staff style or not.
Definition ff_other.h:19071
bool GetUseShowPartStaffNames() const
Returns true if the staff name display in parts is active for the staff style definition.
Definition ff_other.h:18793
void GetName(FCString *pString)
Gets the name for the staff style.
Definition finaleframework.cpp:12043
void SetUseFullName(bool state)
Sets if the full staff name should be part of the staff style or not.
Definition ff_other.h:19268
bool GetUseNoKeySigShowAccidentals() const
Returns true if "Hide key signature & show all accidentals" (available in the Finale 2014 Score Manag...
Definition finaleframework.cpp:12096
bool GetUseShowRests() const
Returns true if the "Show Rests" is active for the staff style definition.
Definition ff_other.h:18770
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:19418
bool GetUseNotationStyle() const
Returns true if the notation style should be used for the staff style definition.
Definition ff_other.h:18829
void SetUseHideMode(bool state)
Sets if the hide mode (such as GetHideMode) should be part of the staff style or not.
Definition ff_other.h:19296
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:18621
void SetUseIndependentTimeSig(bool state)
Sets if independent time signatures should be part of the staff style or not.
Definition ff_other.h:19289
void SetUseShowLyrics(bool state)
Sets if lyrics display should be part of the staff style or not.
Definition ff_other.h:19101
bool GetUseShowMeasureNumbers() const
Returns true if the measure number is active for the staff style definition.
Definition ff_other.h:18707
bool GetUseHideMode() const
Returns true if the hide mode (such as GetHideMode) should be used for the staff style definition.
Definition ff_other.h:18930
bool GetUseStafflineAdjustments() const
Returns true if the staffline adjustments settings should be used for the staff style definition.
Definition ff_other.h:18860
void SetUseDisplayEmptyRests(bool state)
Sets if "Display Rests in empty measures" state should be part of the staff style or not.
Definition ff_other.h:19202
bool GetUseIndependentKeySig() const
Returns true if independent key signatures should be used for the staff style definition.
Definition ff_other.h:18916
void SetUseBreakBarlines(bool state)
Sets if the "Break barlines between staves" setting should be part of the staff style or not.
Definition ff_other.h:19240
void SetCopyable(bool value)
Sets if the staff style definition should be copyable or not.
Definition ff_other.h:19003
bool GetUseIndependentTimeSig() const
Returns true if independent time signatures should be used for the staff style definition.
Definition ff_other.h:18923
void SetUseShowNoteColors(bool state)
Sets if note colors should be part of the staff style or not.
Definition ff_other.h:19331
void SetUseAbbreviatedName(bool state)
Sets if the abbreviated staff name should be part of the staff style or not.
Definition ff_other.h:19275
bool GetUseShowStems() const
Returns true if the stem display is active for the staff style definition. This flag activates or dea...
Definition ff_other.h:18801
void SetUseShowRepeats(bool state)
Sets if repeat bar display should be part of the staff style or not.
Definition ff_other.h:19111
bool GetUseTransposition() const
Returns true if the transposition settings should be used for the staff style definition.
Definition ff_other.h:18867
void SetUseIndependentKeySig(bool state)
Sets if independent key signatures should be part of the staff style or not.
Definition ff_other.h:19282
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_other.h:18622
void SetUseNotationStyle(bool state)
Sets if the notation style should be part of the staff style or not.
Definition ff_other.h:19195
void SetName(FCString *pString)
Sets the name for the staff style.
Definition finaleframework.cpp:12060
void SetUseShowRests(bool state)
Sets if "Show Rests" should be part of the staff style or not.
Definition ff_other.h:19121
bool GetUseFullName() const
Returns true if the full staff name should be used for the staff style definition.
Definition ff_other.h:18902
void SetUseAllowHiding(bool state)
Sets if the "optimization" state should be part of the staff style or not.
Definition ff_other.h:19209
void SetUseShowKeySignatures(bool state)
Sets if "Display Key Sig" should be part of the staff style or not.
Definition ff_other.h:19020
bool GetUseDefaultClef() const
Returns true if the default clef setting should be used for the staff style definition.
Definition ff_other.h:18850
void SetUseShowMeasureNumbers(bool state)
Sets if measure numbers should be part of the staff style or not.
Definition ff_other.h:19030
bool GetUseAltNotationStyle() const
Returns true if the alternate notation style should be used for the staff style definition.
Definition ff_other.h:18958
bool GetUseFlatBeams() const
Returns true if the flat beams state should be used for the staff style definition.
Definition ff_other.h:18822
void SetUseShowTextRepeats(bool state)
Sets if the text repeat display setting should be part of the staff style or not.
Definition ff_other.h:19254
bool GetUseShowFretboards() const
Returns true if the fretboard display is active for the staff style definition.
Definition ff_other.h:18749
bool GetUseShowNoteColors() const
Returns true if note colors should be used for the staff style definition.
Definition ff_other.h:18965
void SetUseShowStems(bool state)
Returns true if the stem display is active for the staff style definition. This flag activates or dea...
Definition ff_other.h:19161
bool GetUseShowChords() const
Returns true if the chords is active for the staff style definition.
Definition ff_other.h:18735
void SetUseShowClefs(bool state)
Sets if the clef should be part of the staff style or not.
Definition ff_other.h:19061
bool GetUseShowTies() const
Returns true if the display of ties is active for the staff style definition.
Definition ff_other.h:18808
void SetUseShowStaffLines(bool state)
Sets if staff line display should be part of the staff style or not.
Definition finaleframework.cpp:12110
void SetUseAltNotationStyle(bool state)
Sets if the alternate notation style should be part of the staff style or not.
Definition ff_other.h:19324
bool GetUseShowScoreStaffNames() const
Returns true if the statff name display in the score is active for the staff style definition.
Definition ff_other.h:18786
void SetUseIgnoreKeySig(bool state)
Sets if the "Ignore Key Signature" state should be part of the staff style or not.
Definition ff_other.h:19303
bool GetUseIndependentFont() const
Returns true if the independent notehead font state should be used for the staff style definition.
Definition ff_other.h:18815
bool GetUseShowNoteShapes() const
Returns true if note shapes should be used for the staff style definition.
Definition finaleframework.cpp:12089
bool GetUseBreakRepeatBarlines() const
Returns true if the "Break repeat barlines between staves" setting should be used for the staff style...
Definition ff_other.h:18881
void SetAddToMenu(bool value)
Sets if the staff style definition should be added to the staff style menu, or not.
Definition ff_other.h:19009
void SetUseShowBarlines(bool state)
Sets if the barline display setting should be part of the staff style or not.
Definition ff_other.h:19261
bool GetUseAllowHiding() const
Returns true if the "optimization" state should be used for the staff style definition.
Definition ff_other.h:18843
bool GetUseShowTimeSignatures() const
Returns true if the time signature setting is active for the staff style definition.
Definition ff_other.h:18715
bool GetUseAbbreviatedPosition() const
Returns true if the abbreviated name positioning should be used for the staff style definition.
Definition ff_other.h:18951
bool GetUseShowTextRepeats() const
Returns true if the text repeat display setting should be used for the staff style definition.
Definition ff_other.h:18888
bool GetUseAbbreviatedName() const
Returns true if the abbreviated staff name should be used for the staff style definition.
Definition ff_other.h:18909
void SetUseAbbreviatedPosition(bool state)
Sets if the abbreviated name positioning should be part of the staff style or not.
Definition ff_other.h:19317
void SetUseDefaultClef(bool state)
Sets if the default clef setting should be part of the staff style or not.
Definition ff_other.h:19216
bool GetUseShowBarlines() const
Returns true if the barline display setting should be used for the staff style definition.
Definition ff_other.h:18895
bool GetUseBreakBarlines() const
Returns true if the "Break barlines between staves" setting should be used for the staff style defini...
Definition ff_other.h:18874
void SetUseNoKeySigShowAccidentals(bool state)
Sets if "Hide key signature & show all accidentals" (available in the Finale 2014 Score Manager) shou...
Definition finaleframework.cpp:12124
void SetUseShowScoreStaffNames(bool state)
Sets if staff name display in score should be part of the staff style or not.
Definition ff_other.h:19140
bool GetUseFullNamePosition() const
Returns true if the full name positioning should be used for the staff style definition.
Definition ff_other.h:18944
bool GetUseShowAugmentationDots() const
Returns true if the augmentation dot setting is active for the staff style definition.
Definition ff_other.h:18742
bool GetUseShowClefs() const
Returns true if the clef is active for the staff style definition.
Definition ff_other.h:18728
bool GetUseShowKeySignatures() const
Returns true if the "Display Key Signature" is active for the staff style definition.
Definition ff_other.h:18700
void SetUseIndependentFont(bool state)
Sets if independent notehead font state should be part of the staff style or not.
Definition ff_other.h:19181
bool GetUseShowLyrics() const
Returns true if the lyrics display is active for the staff style definition.
Definition ff_other.h:18756
bool GetUseIgnoreKeySig() const
Returns true if the "Ignore Key Signature" state should be used for the staff style definition.
Definition ff_other.h:18937
void SetUseShowPartTimeSignatures(bool state)
Sets if the parts time signature setting is active for the staff style definition.
Definition ff_other.h:19051
void SetUseFlatBeams(bool state)
Sets if the flat beams state should be part of the staff style or not.
Definition ff_other.h:19188
FCStaffStyleDef()
The constructor.
Definition ff_other.h:18655
void SetUseTransposition(bool state)
Sets if the transposition settings should be part of the staff style or not.
Definition ff_other.h:19233
void SetUseShowTimeSignatures(bool state)
Sets if time signature should be part of the staff style or not.
Definition ff_other.h:19042
FCStaffNamePosition * GetFullNamePosition() override
Override of __FCStaffBase::GetFullNamePosition.
Definition ff_other.h:19382
FCStaffNamePosition * GetAbbreviatedNamePosition() override
Override of __FCStaffBase::GetAbbreviatedNamePosition.
Definition ff_other.h:19397
bool GetUseShowStaffLines() const
Returns true if the display of staff lines is active for the staff style definition.
Definition finaleframework.cpp:12082
bool IsInstrumentChange()
Returns true if the staff style is a 2012 instrument change.
Definition finaleframework.cpp:12029
bool GetUseShowPartTimeSignatures() const
Returns true if the parts time signature setting is active for the staff style definition.
Definition ff_other.h:18721
void SetUseStafflineAdjustments(bool state)
Sets if the staffline adjustments settings should be part of the staff style or not.
Definition ff_other.h:19226
bool GetAddToMenu() const
Returns if the staff style definition should be added to the staff style menu, or not.
Definition ff_other.h:18688
void SetUseFullNamePosition(bool state)
Sets if the full name positioning should be part of the staff style or not.
Definition ff_other.h:19310
bool GetUseRedisplayOtherLayerAccidentals() const
Returns true if "Redisplay accidentals in other layers within measures" should be used for the staff ...
Definition finaleframework.cpp:12103
The class for a staff system on a page.
Definition ff_other.h:3715
void SetResize(twobyte value)
Sets the staff system's resize value (in percent).
Definition ff_other.h:3866
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:3740
eMeas GetNextSysMeasure() const
Returns the starting measure number for the next system.
Definition ff_other.h:3930
eMeas GetFirstMeasure() const
Returns the measure for the first measure of the system.
Definition ff_other.h:3923
eStaff CalcTopStaff()
Calculates the top staff ID for the staff system.
Definition finaleframework.cpp:5033
Evpu16 GetRightMargin() const
Returns the right margin value, in EVPUs.
Definition ff_other.h:3987
void SetUseStaffResize(bool state)
Sets the flag that marks if any of the staves on the system use individual staff resizing.
Definition ff_other.h:3903
int CalcHeight(bool verticalresize)
Calculates the height of the staff system.
Definition finaleframework.cpp:5062
twobyte GetSpaceAfterMusic() const
Gets the extra space after the music, in EVPUs.
Definition ff_other.h:3945
twobyte GetStaffHeight() const
Returns the default staff height for the system, in 1/64th of a Evpu32.
Definition ff_other.h:3998
void SetRightMargin(Evpu16 margin)
Sets the right system margin value, in EVPUs. This is usually a negative value, since it's the distan...
Definition ff_other.h:3859
twobyte GetResize() const
Returns the resize value (in percent) for the system.
Definition ff_other.h:4005
FCSystemStaves * CreateSystemStaves()
Creates a staff list with the staves available for the system.
Definition finaleframework.cpp:4954
twobyte GetSpaceAbove() const
Returns the space to the previous system (or the distance from the top page margin),...
Definition ff_other.h:3954
void SetLeftMargin(Evpu16 margin)
Sets the left margin value, in EVPUs.
Definition ff_other.h:3850
Int100 GetHorizontalStretch() const
Returns the calculated horizontal stretch of the system contents, in 1/100 of a percent.
Definition ff_other.h:4052
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_other.h:3741
bool ContainsMeasure(eMeas measurenumber)
Returns true if the measure number is on the system.
Definition ff_other.h:4127
bool GetHoldMargins() const
Returns the "Hold Margins" flag for the staff system.
Definition ff_other.h:4032
void SetBottomMargin(Evpu16 margin)
Sets the bottom margin value, referenced from the staff baseline of the bottom staff,...
Definition ff_other.h:3840
bool IsOptimized() const
Returns true if the system is "optimized".
Definition finaleframework.cpp:4946
void SetSpaceAfterMusic(twobyte space)
Sets the extra space after the music, in EVPUs.
Definition ff_other.h:3808
void SetNextSysMeasure(eMeas measure)
Sets the measure starting the next system.
Definition ff_other.h:3792
bool HasPageBreak()
Returns true if the first measure of the staff system has a page break (or "start a new page" marker)...
Definition finaleframework.cpp:4939
twobyte GetTopStaff() const
Returns the staff number of the top staff of the system.
Definition finaleframework.cpp:4961
bool GetResizeVerticalSpace() const
Returns true if the "Resize Vertical Space" option is set.
Definition ff_other.h:4013
void SetSpaceAbove(twobyte space)
Sets the space to the previous system, in EVPUs.
Definition ff_other.h:3816
eStaff CalcBottomStaff()
Calculates the bottom staff ID for the staff system.
Definition finaleframework.cpp:5041
int CalcWhiteSpaceBottom(bool verticalresize)
Calculates the vertical white space below the first staff line to the bottom system margin.
Definition finaleframework.cpp:5080
void SetSpaceBeforeMusic(twobyte space)
Sets the extra space before the music, in EVPUs.
Definition ff_other.h:3800
twobyte GetSpaceBeforeMusic() const
Gets the extra space before the music, in EVPUs.
Definition ff_other.h:3937
void SetHoldMargins(bool state)
Sets the flag for "Hold Margins" for the staff system.
Definition ff_other.h:3912
void SetResizeVerticalSpace(bool value)
Sets the "Resize Vertical Space" option.
Definition ff_other.h:3891
Evpu16 GetBottomMargin() const
Returns the bottom margin value, in EVPUs.
Definition ff_other.h:3969
void SetStaffHeight(twobyte value)
Sets the default staff height for the system, in 1/64th of a Evpu32.
Definition ff_other.h:3883
bool GetUseStaffResize() const
Returns the flag that marks if any of the staves on the system use individual staff resizing.
Definition ff_other.h:4023
void SetTopMargin(Evpu16 margin)
Sets the top margin value (the distance between the system top and the topmost staff reference line),...
Definition ff_other.h:3827
FCFreezeSystem * CreateFreezeSystem(bool force_create=true)
Creates a corresponding FCFreezeSystem object, if any such exists.
Definition finaleframework.cpp:5000
int CalcStavesSpan()
Calculates the distance from the reference line of the top-most staff to the reference of the bottom-...
Definition finaleframework.cpp:5049
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:4191
Evpu16 GetTopMargin() const
Returns the top margin value, in EVPUs.
Definition ff_other.h:3962
void SetFirstMeasure(eMeas measure)
Sets the first measure to start the system.
Definition ff_other.h:3781
bool CalcRegion(FCMusicRegion *pRegion)
Get the region for the staff system.
Definition finaleframework.cpp:4968
Evpu16 GetLeftMargin() const
Returns the left margin value, in EVPUs.
Definition ff_other.h:3979
FCStaffSystem()
The constructor.
Definition ff_other.h:3757
Class that provides storage for text. This is to achieve platform-transparent text handling,...
Definition ff_base.h:1877
void AppendCharacter(eUniChar32 character)
Appends a character to the string.
Definition finaleframework.cpp:1825
eUniChar16 GetCharacterAt(int index) const
Returns the character at the index position.
Definition finaleframework.cpp:2008
int GetLength() const
Returns the length of the string.
Definition ff_base.h:3055
bool CopyToUnicodeBuffer(eUniChar16 *pBuffer, int maxbufferlen=0) const
Copies the string to a 16-bit Unicode buffer. The buffer must be big enough to have room for an endin...
Definition finaleframework.cpp:1297
void SetCString(const char *pszBuffer, int maxchars=-1)
Sets the string, using a C-string version of the string.
Definition finaleframework.cpp:1234
void AppendFloat(double value)
Appends an floating-point value to the string.
Definition finaleframework.cpp:1884
const char * GetCString() const
Returns a C-string version of the string.
Definition finaleframework.cpp:1338
void SetString(const FCString *pString)
Copies a string.
Definition finaleframework.cpp:2398
bool TruncateAt(int newlength)
Truncates the string at the indicated position.
Definition ff_base.h:3670
int FormatCString(const char *fmt,...)
Formats a string using the same syntax and manner as the printf() function in C. The version of the m...
Definition finaleframework.cpp:1088
void Clear()
Creates an empty string.
Definition ff_base.h:2391
void AppendCString(const char *pOtherString)
Appends a C-style string to the string.
Definition finaleframework.cpp:1861
bool IsEmpty() const
Returns true if the string is empty.
Definition ff_base.h:3179
bool TrimEnigmaFontTags()
Removes all Enigma font tags from a string, leaving only the actual text and text insert tags,...
Definition finaleframework.cpp:1437
bool IsEqualString(const FCString &value) const
Returns true if the string is identical with the parameter. (FCString string version....
Definition ff_base.h:3142
void SetUnicodeString(const eUniChar16 *pChar, int maxchars=-1)
Sets the string by using a 16-bit Unicode buffer as input parameter.
Definition finaleframework.cpp:1273
void AppendInteger(int value)
Appends an integer value (decimal) to the string.
Definition finaleframework.cpp:1877
Collection class for FCString class objects.
Definition ff_basecollection.h:1085
Class that stores one "inci" of a staff list (for a system or for the global list of staves).
Definition ff_other.h:6952
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_other.h:6982
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:7090
FCSystemStaff()
The constructor.
Definition ff_other.h:6999
bool SaveNew(CMPER itemno) override
Overridden version of SaveNew (to save the resize of the staff as well)
Definition finaleframework.cpp:7738
void SetStaff(eStaff staffno)
Sets the 1-based staff number for this slot.
Definition ff_other.h:7030
void SetDistance(Evpu32 distance)
Sets the distance between this staff and the top staff.
Definition ff_other.h:7024
int GetResize() const
Returns the resize for the specific staff, in percent.
Definition ff_other.h:7053
bool DeleteResizeData()
Deletes the staff resize data connected with the system/staff.
Definition ff_other.h:7078
bool Load(CMPER itemno, twobyte inci) override
Overridden version of Load (to get the resize of the staff as well)
Definition finaleframework.cpp:7717
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:6981
void SetResize(int value)
Sets the resize for the specific staff, in percent. Setting the value to 100 will clear any resize da...
Definition ff_other.h:7067
eStaff GetStaff() const override
Returns the 1-based staff number for this slot.
Definition ff_other.h:7046
bool Save() override
Overridden version of Save (to save the resize of the staff as well)
Definition finaleframework.cpp:7763
Evpu32 GetDistance() const
Returns the distance between this staff and the top staff.
Definition ff_other.h:7039
Collection class for FCSystemStaff class objects, which contains the list of staves available within ...
Definition ff_othercollection.h:544
The class for a single tempo change in the Tempo Tool. The tempo elements should be stored in measure...
Definition ff_other.h:23987
FCTempoElement()
The constructor.
Definition ff_other.h:24032
bool GetAbsolute() const
Returns true if the tempo is an absolute or relative tempo setting.
Definition ff_other.h:24057
void SetRatio(fourbyte value)
Sets the tempo ratio value.
Definition ff_other.h:24081
float CalcValue()
Returns the actual value for the tempo. The returned value might be absolute or relative,...
Definition ff_other.h:24092
void SetAbsoluteValue(float value)
Sets the tempo to an actual absolute value.
Definition ff_other.h:24122
void SetMeasurePos(twobyte edupos)
Sets the duration reference position for the element.
Definition ff_other.h:24044
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:24015
TimeEdu32 GetMeasurePos() const override
Gets the duration reference position for the element.
Definition ff_other.h:24050
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_other.h:24016
fourbyte GetRatio() const
Returns the tempo ratio value.
Definition ff_other.h:24075
void SetAbsolute(bool value)
Sets the tempo to absolute or relative.
Definition ff_other.h:24065
void SetRelativeValue(float value)
Sets the tempo to an actual relative value in percent.
Definition ff_other.h:24139
Collection class for FCTempoElements class objects for one measure. The tempo elements should be stor...
Definition ff_othercollection.h:1718
Class for a text block.
Definition ff_other.h:16048
void SetRoundedCornerRadius(Efix32 radius)
Sets the rounded corner radius, to use when rounded corners are enabled for the text block frame.
Definition ff_other.h:16491
void SetLineSpacing(twobyte linespacing)
Sets the line spacing value for the text block.
Definition ff_other.h:16334
twobyte GetRawTextID() const
Returns the text ID for the raw text.
Definition ff_other.h:16226
void SetVerticalTextOffset(int value)
Sets the vertical offset for the text (relative to the left frame side).
Definition ff_other.h:16529
int GetVerticalTextOffset() const
Returns the vertical offset for the text (relative to the left frame side).
Definition ff_other.h:16601
bool GetShowBorders() const
Returns if the borders should display for the txt block, or not.
Definition ff_other.h:16610
bool SaveNewRawTextString(FCString *pString)
Saves a new raw text string.
Definition finaleframework.cpp:9370
void SetLineInset(int value)
Sets the inset between text and border (in EFIXes) for the frame's border.
Definition ff_other.h:16510
void _SetRawTextID(twobyte therawtextid)
Sets the text ID for the raw text.
Definition ff_other.h:16231
void SetRoundedCorners(bool state)
Sets if the text frame should use rounded corners.
Definition ff_other.h:16477
bool SaveRawTextString(FCString *pString)
Saves the raw text string in an existing text block.
Definition finaleframework.cpp:9361
EXTAG GetRawTextExtag()
Returns the full EXTAG that is used to store the raw text.
Definition ff_other.h:16234
bool GetRoundedCorners() const
Returns if the text frame should use rounded corners.
Definition ff_other.h:16400
bool GetExpandSingleWord() const
Returns the "expand single word" state, which effects the full justification modes.
Definition ff_other.h:16387
bool DeepDeleteData() override
Reimplementation to delete raw text as well.
Definition ff_other.h:16314
bool GetLineSpacingIsPercent() const
Returns if the line spacing value should be percent or points.
Definition ff_other.h:16366
bool GetExpandVertically() const
Returns if the text block is set to "Expand Vertically" for a standard frame.
Definition ff_other.h:16659
FCString * CreateRawTextString()
Creates a string object for the connected raw text.
Definition finaleframework.cpp:9353
void SetWordWrap(bool state)
Sets if the text should word wrap automatically.
Definition ff_other.h:16454
Evpu16 GetWidth() const
Returns the fixed width of the frame.
Definition ff_other.h:16623
bool GetExpandHorizontally() const
Returns if the text block is set to "Expand Vertically" for a standard frame.
Definition ff_other.h:16647
TEXTBLOCKJUSTIFY
Constants for text justification.
Definition ff_other.h:16184
void SetJustification(FLAG_16 justification)
Sets the justification to any of the text block justification styles.
Definition ff_other.h:16306
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:16193
void SetWidth(Evpu16 width)
Sets the fixed width of the frame.
Definition ff_other.h:16551
FCTextBlock()
The constructor.
Definition ff_other.h:16207
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_other.h:16194
bool GetFrameReference() const
Returns if the text block should be positioned by the frame layout or not. This is a compatibility bi...
Definition ff_other.h:16355
FLAG_16 GetJustification() const
Returns the justification for the text block.
Definition ff_other.h:16343
Evpu16 GetHeight() const
Returns the fixed height of the frame.
Definition ff_other.h:16636
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:16665
twobyte GetLineSpacing() const
Returns the line spacing value for the text block.
Definition ff_other.h:16327
void SetFrameReference(bool state)
Sets if the text block should be positioned by the frame layout or not.
Definition ff_other.h:16432
int GetLineWidth() const
Returns the line width of the frame's border.
Definition ff_other.h:16574
void SetHeight(Evpu16 height)
Sets the fixed height of the frame.
Definition ff_other.h:16564
void SetLineWidth(int value)
Sets the line width (in EFIXes) of the frame's border.
Definition ff_other.h:16500
int GetLineInset() const
Returns the inset between text and border (in EFIXes) for the frame's border.
Definition ff_other.h:16583
void SetExpandSingleWord(bool state)
Sets the "expand single word" state, which effects the full justification modes.
Definition ff_other.h:16464
void SetLineSpacingIsPercent(bool state)
Sets if the line spacing value should be percent or points.
Definition ff_other.h:16443
Efix32 GetRoundedCornerRadius() const
Returns the rounded corner radius, to use when rounded corners are enabled for the text block frame.
Definition ff_other.h:16415
int GetHorizontalTextOffset() const
Returns the horizontal offset for the text (relative to the left frame side).
Definition ff_other.h:16592
twobyte GetShapeID() const
Return the layout shape ID for the text block.
Definition ff_other.h:16248
void SetHorizontalTextOffset(int value)
Sets the horizontal offset for the text (relative to the left frame side).
Definition ff_other.h:16520
void SetRawText(twobyte theid, ETAG tag=LO_UTWOBYTE(tx_TextBlock))
Sets the raw text ID and tag for the raw text. This can be used prior to SaveNewRawTextString to set ...
Definition ff_other.h:16294
void SetShapeID(twobyte shapeID)
Sets the layout shape ID for the text block.
Definition ff_other.h:16290
void SetShowBorders(bool state)
Sets if the borders should display for the txt block, or not.
Definition ff_other.h:16538
bool GetWordWrap() const
Returns true if the text should word wrap automatically.
Definition ff_other.h:16377
Class for a text expression definition.
Definition ff_other.h:14515
bool GetHideMeasureNumbers() const
Returns true if the rehearsal mark text expression hides the measure numbers.
Definition ff_other.h:14769
bool IsPlaybackTempo() const
Returns true if the expression is defined for tempo playback.
Definition ff_other.h:15332
void SetHorizontalAlignmentPoint(FCCategoryDef::HORIZ_ALIGNMENT value)
Sets the "Horizontal Alignment Point" setting in the text expression definition.
Definition ff_other.h:15260
twobyte GetPlaybackPass() const
Definition ff_other.h:14862
FCString * CreateDescription()
Creates a string object that contains the description text.
Definition finaleframework.cpp:10681
void SetDescription(FCString *pDescriptionString)
Sets the description text for the text expression definition.
Definition finaleframework.cpp:10588
twobyte GetVerticalEntryOffset() const
Returns the vertical "Additional Entry Offset" in the text expression definition.
Definition ff_other.h:14936
bool IsSmartMusicMarker() const
Returns true if the text expression's playback style is defined as a SmartMusic marker....
Definition ff_other.h:15343
void SetUseCategoryPos(bool value)
Sets if the "use category positioning" checkbox should be checked or not.
Definition finaleframework.cpp:10563
twobyte GetHorizontalOffset() const
Returns the "Additional Horizontal Offset" value in the text expression definition.
Definition ff_other.h:15281
bool DeleteTextBlock()
Removes the expression's text block (including its raw text data block) from Finale's database.
Definition finaleframework.cpp:10502
void SetBreakMMRest(bool state)
Sets the "Break Multi-measure rest" option in the text expression definition.
Definition ff_other.h:14997
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_other.h:14646
void SetPlaybackPass(twobyte value)
Sets the specific (1-based) pass number when the expression should play back.
Definition ff_other.h:14873
twobyte GetVerticalBaselineOffset() const
Returns the vertical "Additional Baseline Offset" in the text expression definition.
Definition ff_other.h:14922
bool GetUseCategoryPos() const
Returns true if the expression is marked to use the category positioning.
Definition finaleframework.cpp:10642
twobyte GetCategoryID() const
Returns the category ID for the expression definition.
Definition ff_other.h:14813
bool SaveNewTextBlock(FCString *pString)
Saves a new raw text block (both a raw text and the connected text block) and assigns it to the expre...
Definition finaleframework.cpp:10487
twobyte GetPlaybackTempoDuration()
For tempo expressions, returns the metronome duration (in EDUs) for the defined playback tempo.
Definition ff_other.h:14849
void SetUseCategoryFont(bool value)
Sets if the "use category font" should be checked or not.
Definition finaleframework.cpp:10538
FCCategoryDef::VERT_ALIGNMENT GetVerticalAlignmentPoint() const
Returns the vertical alignment point for the expression definition positioning.
Definition ff_other.h:14912
FCString * CreateTextString()
Gets a pointer to the text expression string, as a string object. If the string is empty,...
Definition finaleframework.cpp:10423
FCCategoryDef::HORIZ_ALIGNMENT GetHorizontalAlignmentPoint() const
Returns the "Horizontal Alignment Point" setting in the text expression definition.
Definition ff_other.h:15246
bool GetUseExecutableShape() const
Returns true if an executable is used for the expression def.
Definition ff_other.h:14725
twobyte GetPlaybackTempoValue()
For tempo expressions, returns the playback tempo value.
Definition ff_other.h:14835
twobyte GetPlaybackKeyVelocity() const
Returns the key velocity value (if the playback type is key velocity).
Definition ff_other.h:14882
void SetPlaybackType(EXPR_PLAYBACK_TYPES playbackmode)
Sets the playback type for the expression def.
Definition finaleframework.cpp:10736
twobyte GetPlaybackControllerNumber() const
returns the playback MIDI controller number.
Definition ff_other.h:15064
REHEARSALMARK_STYLES GetRehearsalMarkStyle() const
Returns the rehearsal mark numbering style.
Definition ff_other.h:14958
bool DeepDeleteData() override
Reimplemented version of DeepDeleteData() for FCTextExpressionDef objects.
Definition finaleframework.cpp:10305
void SetHorizontalOffset(twobyte value)
Sets the "Additional Horizontal Offset" in the text expression definition.
Definition ff_other.h:15291
CMPER GetTextBlockID()
Returns the text block ID (for use with FCTextBlock).
void SetVerticalEntryOffset(twobyte value)
Sets the vertical "Additional Entry Offset" in the text expression definition.
Definition ff_other.h:15184
twobyte GetTextID() const
Returns the text ID for the expression text. For use with the FCTextBlock class.
Definition ff_other.h:14827
bool MakeRehearsalMark(FCString *pString, int measure)
Creates an automatic rehearsal string based on the definition and a measure.
Definition finaleframework.cpp:10445
void SetExecutableShapeID(twobyte shapeID)
Sets the executable shape ID for the expression def.
Definition ff_other.h:14749
bool AssignToCategory(FCCategoryDef *pDef)
Assigns the expression definition to a category.
Definition finaleframework.cpp:10518
void SetPlaybackTempo(TimeEdu32 eduduration, int tempo)
Sets the playback tempo type for the expression definition.
Definition ff_other.h:15088
bool IsKeyVelocity() const
Returns true if the text expression's playback style is defined as key velocity.
Definition ff_other.h:15351
bool SaveTextString(FCString *pString)
Resaves the text for an existing text expression.
Definition finaleframework.cpp:10476
REHEARSALMARK_STYLES
The rehearsal number mark types available to text expressions.
Definition ff_other.h:14557
@ REHMARKSTYLE_MEASNUM
Definition ff_other.h:14577
@ REHMARKSTYLE_LETNUM_LC
Definition ff_other.h:14571
@ REHMARKSTYLE_LETTER
Definition ff_other.h:14562
@ REHMARKSTYLE_NUMBER
Definition ff_other.h:14574
@ REHMARKSTYLE_LETNUM
Definition ff_other.h:14565
@ REHMARKSTYLE_MANUAL
Definition ff_other.h:14559
@ REHMARKSTYLE_LETTER_LC
Definition ff_other.h:14568
twobyte GetExecutableShapeID() const
Returns the executable shape ID.
Definition ff_other.h:14736
twobyte GetPlaybackControllerValue() const
returns the playback controller value.
Definition ff_other.h:15051
void SetHorizontalJustification(FCCategoryDef::HORIZ_JUSTIFICATION value)
Sets the "Horizontal Justification" in the text expression definition.
Definition ff_other.h:15221
void SetVerticalBaselineOffset(twobyte value)
Sets the vertical "Additional Baseline Offset" in the text expression definition.
Definition ff_other.h:15170
void SetPlaybackController(twobyte controllernumber, twobyte value)
Sets the playback to a specific MIDI CC controller.
Definition ff_other.h:15075
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:15464
FCCategoryDef::HORIZ_JUSTIFICATION GetHorizontalJustification() const
Returns the "Horizontal Justification" setting in the text expression definition.
Definition ff_other.h:15205
EXPR_PLAYBACK_TYPES GetPlaybackType() const
Returns the playback type for the expression def.
Definition finaleframework.cpp:10693
bool IsAutoRehearsalMark() const
Returns true if an automatic rehearsal number style is used.
Definition ff_other.h:15361
FCEnclosure * CreateEnclosure()
Loads and creates an enclosure object. It's the caller's responsibility to free the allocated memory ...
Definition finaleframework.cpp:10433
void SetPlaybackKeyVelocity(twobyte value)
Sets the playback mode to key velocity and changes the key velocity value.
Definition ff_other.h:14894
bool GetBreakMMRest() const
Returns the "Break Multi-measure rest" option in the text expression definition.
Definition ff_other.h:14987
virtual ~FCTextExpressionDef()
The destructor.
Definition finaleframework.cpp:10333
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:14645
void SetPlaybackTransposition(twobyte halfsteps)
Sets the playback transposition type for the expression definition.
Definition ff_other.h:15116
void SetHideMeasureNumbers(bool value)
Sets if the rehearsal mark text expression hides the measure numbers or not.
Definition ff_other.h:14778
EXPR_PLAYBACK_TYPES
Return values for the GetPlaybackType method.
Definition ff_other.h:14589
@ EXPPLAYTYPE_PERCUSSIONMAP
Definition ff_other.h:14630
@ EXPPLAYTYPE_MIDICHANNEL
Definition ff_other.h:14609
@ EXPPLAYTYPE_IGNORETEMPOTOOL
Definition ff_other.h:14618
@ EXPPLAYTYPE_NONE
Definition ff_other.h:14642
@ EXPPLAYTYPE_MIDIDUMP
Definition ff_other.h:14606
@ EXPPLAYTYPE_TRANSPOSE
Definition ff_other.h:14603
@ EXPPLAYTYPE_PLAYTEMPOTOOL
Definition ff_other.h:14615
@ EXPPLAYTYPE_CONTROLLER
Definition ff_other.h:14600
@ EXPPLAYTYPE_PATCHCHANGE
Definition ff_other.h:14621
@ EXPPLAYTYPE_UNKNOWN
Definition ff_other.h:14591
@ EXPPLAYTYPE_KEYVELOCITY
Definition ff_other.h:14594
@ EXPPLAYTYPE_SWING
Definition ff_other.h:14633
@ EXPPLAYTYPE_HUMANPLAYBACKON
Definition ff_other.h:14636
@ EXPPLAYTYPE_PITCHWHEEL
Definition ff_other.h:14627
@ EXPPLAYTYPE_CHANNELPRESSURE
Definition ff_other.h:14624
@ EXPPLAYTYPE_RESTRIKEKEYS
Definition ff_other.h:14612
@ EXPPLAYTYPE_TEMPO
Definition ff_other.h:14597
@ EXPPLAYTYPE_HUMANPLAYBACKOFF
Definition ff_other.h:14639
void SetRehearsalMarkStyle(REHEARSALMARK_STYLES value)
Sets the rehearsal mark numbering style.
Definition ff_other.h:14970
twobyte GetPitchWheelValue() const
Returns the pitchwheel value.
Definition ff_other.h:15130
void SetVerticalAlignmentPoint(FCCategoryDef::VERT_ALIGNMENT value)
Sets the vertical alignment point for the expression definition positioning.
Definition ff_other.h:15154
void SetPitchWheelValue(twobyte value)
Sets the playback MIDI pitchwheel type] for the expression definition.
Definition ff_other.h:15143
twobyte GetPlaybackTransposition() const
Returns the playback transposition in half-steps.
Definition ff_other.h:15103
void SetUseEnclosure(bool value)
Sets if the text expression uses an enclosure or not.
Definition ff_other.h:14796
void GetDescription(FCString *pDescriptionString)
Gets the description text for the text expression definition.
Definition finaleframework.cpp:10667
FCTextExpressionDef()
The constructor.
Definition finaleframework.cpp:10288
bool GetUseEnclosure() const
Returns true if the text expression uses an enclosure.
Definition ff_other.h:14787
bool GetUseCategoryFont() const
Returns true if the expression is marked to use the category font.
Definition finaleframework.cpp:10617
void SetUseExecutableShape(bool state)
Sets the use of executable shape. Normally this isn't called directly. Instead, use SetExecutableShap...
Definition ff_other.h:14760
bool DeepSaveAs(CMPER itemno) override
Reimplemented method that makes a copy of the text string before resaving.
Definition ff_other.h:14662
void SetCategoryID(twobyte ID)
Sets the category ID for the expression definition.
Definition ff_other.h:15008
The class for a text repeat definition.
Definition ff_other.h:20797
REPEAT_REPLACE_MODE GetReplaceMode() const
Returns how '#' should be treated and replaced by the text repeat.
Definition finaleframework.cpp:11030
FCEnclosure * CreateEnclosure()
Loads and returns a pointer to the loaded enclosure object for the text repeat.
Definition finaleframework.cpp:10961
FCTextRepeatDef()
The constructor.
Definition finaleframework.cpp:10827
bool DeepDeleteData() override
Reimplemented method that deletes the enclosure and text string before deleting the data.
Definition ff_other.h:20921
REPEAT_REPLACE_MODE
Constants for use with FCTextRepeatDef::GetReplaceMode() and FCTextRepeatDef::SetReplaceMode().
Definition ff_other.h:20877
@ REPEATREPLACE_TARGETMEASURE
Definition ff_other.h:20885
@ REPEATREPLACE_TIMESPLAYED
Definition ff_other.h:20879
@ REPEATREPLACE_TARGETTEXT
Definition ff_other.h:20882
void SetReplaceMode(REPEAT_REPLACE_MODE value)
Sets how '#' should be treated and replaced by the text repeat.
Definition finaleframework.cpp:11037
FCString * CreateTextString()
Gets a pointer to the text repeat string, as a string object.
Definition finaleframework.cpp:10925
bool DeepSaveAs(CMPER itemno) override
Reimplemented method that makes a copy of the enclosure and text string before resaving.
Definition finaleframework.cpp:10846
bool SaveTextString(FCString *pString)
Saves the text to the text repeat definition. The main FCTextRepeatDef data must be saved first.
Definition finaleframework.cpp:10932
void SetFontInfo(FCFontInfo *pInfo)
Sets the font info for the text repeat.
Definition ff_other.h:21021
bool DeepSaveNew(FCString *pString, FCEnclosure *pEnclosure)
Saves a new FCTextRepeatDef object, together with a text string and an (optional) enclosure....
Definition finaleframework.cpp:10941
void SetUseThisFont(bool state)
Returns the "Use This Font" setting. Only active if the '#' should be replaced by the target text.
Definition ff_other.h:21044
void SetJustification(TEXT_REPEAT_JUSTIFICATION value)
Sets the justification for the text repeat.
Definition finaleframework.cpp:11003
void GetFontInfo(FCFontInfo *pInfo)
Gets the font info for the text repeat.
Definition ff_other.h:21009
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_other.h:20890
bool SaveEnclosure(FCEnclosure *pEnclosure)
Saves the enclosure to the FCTextRepeatDef object.
Definition finaleframework.cpp:10975
bool GetUseThisFont() const
Returns the "Use This Font" setting. Only active if the '#' should be replaced by the target text.
Definition ff_other.h:21034
TEXT_REPEAT_JUSTIFICATION
Constants for use with FCTextRepeatDef::GetJustification() and FCTextRepeatDef::SetJustification().
Definition ff_other.h:20858
@ TEXTREPJUST_FULL
Definition ff_other.h:20869
@ TEXTREPJUST_CENTER
Definition ff_other.h:20866
@ TEXTREPJUST_LEFT
Definition ff_other.h:20860
@ TEXTREPJUST_RIGHT
Definition ff_other.h:20863
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:20889
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:21105
TEXT_REPEAT_JUSTIFICATION GetJustification() const
Returns the justification for the text repeat.
Definition finaleframework.cpp:10998
Class for text repeat assignments to a measure. The assignment is connected with a FCTextRepeatDef de...
Definition ff_other.h:21128
void SetShowMode(REPSHOWMODES mode)
Sets where the text repeat should be shown.
Definition finaleframework.cpp:11079
void SetAutoUpdateTarget(bool state)
Sets the "Auto-update target" setting.
Definition ff_other.h:21374
void SetAction(REPACTIONS mode)
Sets the action type for the text repeat assignment. This controls what should happen when the text r...
Definition finaleframework.cpp:11186
void SetResetOnRepeat(bool state)
Sets the "Reset on Repeat" setting.
Definition ff_other.h:21507
void SetTarget(int value)
Sets the target measure or ID for the text repeat. This value is dependent on the GetTargetTrigger() ...
Definition ff_other.h:21362
void SetStaffListID(twobyte list)
Sets the staff list ID to be used.
Definition ff_other.h:21461
twobyte GetTotalPasses() const
Returns the number of passes for the text repeat assignment.
Definition ff_other.h:21472
bool AssignTextRepeatDef(FCTextRepeatDef *pDef)
Assigns a saved text repeat definition to a text repeat.
Definition finaleframework.cpp:11696
void SetVerticalPos(Evpu32 value)
Sets the vertical position (in EVPUs) from the top reference line of the measure.
Definition ff_other.h:21348
FCTextRepeatDef * CreateTextRepeatDef()
Creates a text repeat definition object for the text repeat.
Definition finaleframework.cpp:11704
REPSHOWMODES GetShowMode() const
Returns where the text repeat should be shown.
Definition finaleframework.cpp:11071
FCSeparatePlacements * CreateSeparatePlacements()
Creates a FCSeparatePlacements collection and loads it with all matching independent positioning reco...
Definition finaleframework.cpp:11715
void SetVisible(bool state)
Sets if the repeat is visible. ("Show" is checked in the context menu.)
Definition ff_other.h:21416
REPTARGETTRIGGERS
The modes used by FCTextRepeat::GetTargetTrigger() and FCTextRepeat::SetTargetTrigger().
Definition ff_other.h:21197
@ REPTARGET_NEXTENDING
Definition ff_other.h:21220
@ REPTARGET_BACKWARDS
Definition ff_other.h:21210
@ REPTARGET_UNDEFINED
Definition ff_other.h:21200
@ REPTARGET_DEFID
Definition ff_other.h:21203
@ REPTARGET_NEVERSKIPENDING
Definition ff_other.h:21213
@ REPTARGET_MEASURENUM
Definition ff_other.h:21206
@ REPTARGET_FORWARDS
Definition ff_other.h:21217
void SetTargetTrigger(REPTARGETTRIGGERS mode)
Sets the target "trigger", which controls how the GetTarget() value will be interpreted.
Definition finaleframework.cpp:11117
FCTextRepeat()
The constructor.
Definition ff_other.h:21253
void SetHorizontalPos(Evpu32 value)
Sets the horizontal position (in EVPUs) from the measure's origin. The value is depending on the FCTe...
Definition ff_other.h:21336
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:21576
REPSHOWMODES
Constants for use with FCTextRepeat::GetShowMode() and FCTextRepeat::SetShowMode().
Definition ff_other.h:21175
@ REPSHOW_ALL
Definition ff_other.h:21177
@ REPSHOW_TOPSTAFF
Definition ff_other.h:21180
@ REPSHOW_STAFFLIST
Definition ff_other.h:21183
bool GetVisible() const
Returns true if the repeat is visible. ("Show" is checked in the context menu.)
Definition ff_other.h:21407
void SetID(twobyte id)
Use with care! Sets the definition ID for the text repeat.
Definition ff_other.h:21322
bool GetJumpIfIgnore() const
Returns the "Jump if ignoring repeats" setting.
Definition ff_other.h:21488
bool GetAutoUpdateTarget() const
Returns the "Auto-update target" setting.
Definition ff_other.h:21368
void SetTotalPasses(twobyte totalpasses)
Sets the number of passes for the text repeat assignment.
Definition ff_other.h:21478
bool GetIndividualPositioning() const
Returns if individual positioning on different staves should be allowed or not.
Definition ff_other.h:21383
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_other.h:21155
Evpu16 GetHorizontalPos() const
Returns the horiozontal position (in EVPUs) from the measure's origin. The value is depending on the ...
Definition ff_other.h:21329
void SetIndividualPositioning(bool state)
Sets if individual positioning on different staves should be allowed..
Definition ff_other.h:21395
REPACTIONS
Definition ff_other.h:21232
@ REPACTION_ALWAYSJUMP
Definition ff_other.h:21237
@ REPACTION_PLAYSECTION
Definition ff_other.h:21243
@ REPACTION_JUMPONPASS
Definition ff_other.h:21240
@ REPACTION_NEVERJUMP
Definition ff_other.h:21234
@ REPACTION_STOPONPASS
Definition ff_other.h:21246
REPACTIONS GetAction() const
Returns the action type for the text repeat assignment. This controls what should happen when the tex...
Definition finaleframework.cpp:11162
Evpu16 GetVerticalPos() const
Returns the vertical position (in EVPUs) from the top reference line of the measure.
Definition ff_other.h:21342
REPTARGETTRIGGERS GetTargetTrigger() const
Returns the target "trigger", which controls how the GetTarget() value will be interpreted.
Definition finaleframework.cpp:11110
twobyte GetID() const
Returns the definition ID for the text repeat.
Definition ff_other.h:21311
void SetJumpIfIgnore(bool state)
Sets the "Jump if ignoring repeats" setting.
Definition ff_other.h:21494
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_other.h:21156
int GetTarget() const
Returns the target measure or ID for the text repeat. This value is dependent on the GetTargetTrigger...
Definition ff_other.h:21355
twobyte GetStaffListID() const
Returns the staff list ID to be used for the text repeat assignment.
Definition ff_other.h:21455
bool GetResetOnRepeat() const
Returns the "Reset on Repeat" setting.
Definition ff_other.h:21501
Class for time signatures. Instances of this class are auto-created when needed by FCMeasure:GetTimeS...
Definition ff_timesig.h:27
void SetAbbreviate(bool state)
Sets if the time signature should be abbreviated (to cut and common time).
Definition ff_timesig.h:95
void SetBeatDuration(twobyte value)
Sets the beat duration (in EDUs), or the composite bottom ID.
Definition ff_timesig.h:76
void SetCompositeTop(bool value)
Sets the composite "mark" of the top part of the time signature.
Definition ff_timesig.h:82
void SetBeats(twobyte value)
Sets the number of beats, or the composite top ID.
Definition ff_timesig.h:63
void SetCompositeBottom(bool value)
Sets the composite "mark" of the bottom part of the time signature.
Definition ff_timesig.h:85
Class for attaching an tuplet to an entry.
Definition ff_entrydetails.h:2153