Finale PDK Framework 0.78
Lua Power for 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
17951 bool GetTracksVoice2() const { return _expression.flag & 0x08; }
17952
17959 bool IsVisibleOnStaff(twobyte staff);
17960
17970
17971#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
17973 luabridge::RefCountedPtr<FCShapeExpressionDef> CreateShapeExpressionDef_GC()
17974 { return makeLuaSharedPtr(CreateShapeExpressionDef()); }
17975#endif
17976
17986
17987#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
17989 luabridge::RefCountedPtr<FCTextExpressionDef> CreateTextExpressionDef_GC()
17990 { return makeLuaSharedPtr(CreateTextExpressionDef()); }
17991#endif
17992
17999 bool IsShape() const { return GetBitFlag(_expression.flag, SCOREEXP_SHAPE_OBJECT); }
18000
18008 bool IsSingleStaffAssigned() { return (GetStaff() > 0); }
18009
18015 bool GetShape() const { return GetBitFlag(_expression.flag, SCOREEXP_SHAPE_OBJECT); }
18016
18027 twobyte GetID() const { return _expression.dynumber; }
18028
18034 bool SaveNewToCell(FCCell* pCell);
18035
18044 void SetID(twobyte id) { _expression.dynumber = id; }
18045
18052 void SetLayerAssignment(twobyte layer)
18053 {
18054 layer &= 0x07;
18055 _expression.flag &= ~0x07;
18056 _expression.flag |= layer;
18057 }
18058
18063 void SetScoreAssignment(bool value)
18064 {
18065 Set16BitFlag(&_expression.flag, 0x1000, !value);
18066 }
18067
18072 void SetPartAssignment(bool value)
18073 {
18074 Set16BitFlag(&_expression.flag, 0x0800, !value);
18075 }
18076
18087 void SetPlaybackLayerAssignment(twobyte layer)
18088 {
18089 layer &= 0x07;
18090 layer <<= 4;
18091 _expression.flag &= ~0x70;
18092 _expression.flag |= layer;
18093 }
18094
18102#ifndef PDK_FRAMEWORK_LUAFRIENDLY
18104#else
18105 int
18106#endif
18107 value
18108 )
18109 {
18110 switch (value)
18111 {
18113 Set16BitFlag(&_expression.flag, 0x0400, true);
18114 Set16BitFlag(&_expression.flag, 0x0200, false);
18115 break;
18117 Set16BitFlag(&_expression.flag, 0x0400, false);
18118 Set16BitFlag(&_expression.flag, 0x0200, true);
18119 break;
18120 default: /* EXPRPLAYSTART_BEGINNINGOFMEASURE */
18121 Set16BitFlag(&_expression.flag, 0x0400, false);
18122 Set16BitFlag(&_expression.flag, 0x0200, false);
18123 break;
18124 }
18125 }
18126
18133 void SetStaff(twobyte staffno) { _expression.staffAssign = staffno; }
18134
18143 void SetShape(bool isshape) { Set16BitFlag(&_expression.flag, SCOREEXP_SHAPE_OBJECT, isshape); }
18144
18151 void SetStaffListID(twobyte ID) { _expression.staffList = ID; }
18152
18158 void SetStaffGroupID(twobyte value) { _expression.staffGroup = value; }
18159
18166 void SetRehearsalMarkOffset(twobyte value) { _expression.rehearsalMarkOffset = value; }
18167
18173 void SetVisible(bool state) { Set16BitFlag(&_expression.flag, 0x4000, !state); }
18174
18179 void SetScaleWithEntry(bool state) { Set16BitFlag(&_expression.flag, 0x0100, !state); }
18180
18185 void SetMeasurePos(TimeEdu32 value)
18186 {
18187 _expression.horzEDUOffHi = (value & 0xffff0000) / 0x10000;
18188 _expression.horzEDUOffLo = value & 0x0000ffff;
18189 }
18190
18197 void SetHorizontalPos(twobyte value) { _expression.horzEVPUOff = value; }
18198
18205 void SetVerticalPos(twobyte value) { _expression.vertOff = value; }
18206
18211 void SetGraceNoteIndex(twobyte index) {
18212 if (index < 0) return; /* Negative indexes aren't allowed */
18213 _expression.graceNoteIndex = index;
18214 }
18215
18222 void SetTracksVoice2(bool value) { Set16BitFlag(&_expression.flag, 0x08, value); }
18223
18224#ifdef PDK_FRAMEWORK_DEBUG
18225 void DebugDump() override
18226 {
18228 DebugOutBlock(&_expression, 0, sizeof(_expression));
18229 DebugOutHex("Flag bits (hex): ", _expression.flag);
18230 DebugOutInt("Attached to Staff: ", GetStaff());
18231 DebugOutInt("Staff List ID: ", GetStaffListID());
18232 DebugOutInt("Rehearsal Mark Offset: ", GetRehearsalMarkOffset());
18233 DebugOutInt("Measure Pos (EDUs): ", GetMeasurePos());
18234 DebugOutInt("Horizontal Pos (EVPUs): ", GetHorizontalPos());
18235 DebugOutInt("Vertical Pos: ", GetVerticalPos());
18236 }
18237#endif
18238};
18239
18240
18241/* Macro for accessing same-name fields in different versions
18242 of the Staff Style Def struct: */
18243#define __STAFFSTYLEDEF_RETURN_FIELD_PTR(field) \
18244switch (_VersionToUse()) \
18245{ \
18246 case FINALEVERSION_2014: \
18247 return &_staffstyledef2014.field; \
18248 case FINALEVERSION_2012: \
18249 return &_staffstyledef2012.field; \
18250 default: \
18251 return &_staffstyledef2010.field; \
18252} \
18253
18254
18264{
18265private:
18266 const bool _skipWorkaround;
18267
18268#ifndef DOXYGEN_SHOULD_IGNORE_THIS
18269 EDTStaffStyle2010 _staffstyledef2010;
18270
18271#if FXT_VERSION >= FINALEVERSION_2012
18272 EDTStaffStyle2012 _staffstyledef2012;
18273#else
18274 EDTStaffStyle2010 _staffstyledef2012; /* Dummy struct for unsupported PDKs */
18275#endif
18276
18277#if FXT_VERSION >= FINALEVERSION_2014
18278 EDTStaffStyle2014 _staffstyledef2014;
18279#else
18280 EDTStaffStyle2010 _staffstyledef2014; /* Dummy struct for unsupported PDKs */
18281#endif
18282
18284 const uonebyte* _GetInstUUIDPtr() const override
18285 {
18286 if (_VersionToUse() >= FINALEVERSION_2014)
18287 return _staffstyledef2014.instUUID;
18288 if (_VersionToUse() >= FINALEVERSION_2012)
18289 return _staffstyledef2012.instUUID;
18290 return NULL;
18291 }
18292
18294 const FLAG_16* _GetInstFlagPtr() const override
18295 {
18296 __STAFFSTYLEDEF_RETURN_FIELD_PTR(instflag);
18297 }
18298
18300 const FLAG_16* _GetFlagPtr() const override
18301 {
18302 __STAFFSTYLEDEF_RETURN_FIELD_PTR(flag);
18303 }
18304
18306 const FLAG_16* _GetAltFlagPtr() const override
18307 {
18308 __STAFFSTYLEDEF_RETURN_FIELD_PTR(altFlag);
18309 }
18310
18312 const FLAG_16* _GetAltFlag2Ptr() const override
18313 {
18314 __STAFFSTYLEDEF_RETURN_FIELD_PTR(altFlag2);
18315 }
18316
18318 const twobyte* _GetTranspositionPtr() const override
18319 {
18320 __STAFFSTYLEDEF_RETURN_FIELD_PTR(transposition);
18321 }
18322
18324 const FLAG_16* _GetMoreFlagsPtr() const override
18325 {
18326 __STAFFSTYLEDEF_RETURN_FIELD_PTR(moreFlags);
18327 }
18328
18330 const FLAG_16* _GetMoreFlags2Ptr() const override
18331 {
18332 if (_VersionToUse() < FINALEVERSION_2014) return NULL;
18333#if FXT_VERSION < FINALEVERSION_25
18334 return (const FLAG_16*) &_staffstyledef2014.hideKeySigsShowAccis;
18335#else
18336 return &_staffstyledef2014.moreFlags2;
18337#endif
18338 }
18339
18341 const FLAG_16* _GetMoreFlags3Ptr() const override
18342 {
18343 if (_VersionToUse() < FINALEVERSION_2014) return NULL;
18344#if FXT_VERSION < FINALEVERSION_25
18345 return (const FLAG_16*) &_staffstyledef2014.redisplayLayerAccis;
18346#else
18347 return &_staffstyledef2014.moreFlags3;
18348#endif
18349 }
18350
18352 const FLAG_16* _GetMask1FlagPtr() const
18353 {
18354 __STAFFSTYLEDEF_RETURN_FIELD_PTR(mask1);
18355 }
18356
18358 const FLAG_16* _GetMask2FlagPtr() const
18359 {
18360 __STAFFSTYLEDEF_RETURN_FIELD_PTR(mask2);
18361 }
18362
18364 const FLAG_16* _GetMask3FlagPtr() const
18365 {
18366 __STAFFSTYLEDEF_RETURN_FIELD_PTR(mask3);
18367 }
18368
18370 const FLAG_16* _GetSFFlagPtr() const
18371 {
18372 __STAFFSTYLEDEF_RETURN_FIELD_PTR(sfflag);
18373 }
18374
18376 const twobyte* _GetAbbrvNamePtr() const override
18377 {
18378 __STAFFSTYLEDEF_RETURN_FIELD_PTR(abbrvName);
18379 }
18380
18382 const twobyte* _GetFullNamePtr() const override
18383 {
18384 __STAFFSTYLEDEF_RETURN_FIELD_PTR(fullName);
18385 }
18386
18388 const twobyte* _GetClefsPtr() const override
18389 {
18390 __STAFFSTYLEDEF_RETURN_FIELD_PTR(clefs);
18391 }
18392
18394 const Efix32* _GetVertTabNumOffPtr() const override
18395 {
18396 __STAFFSTYLEDEF_RETURN_FIELD_PTR(vertTabNumOff);
18397 }
18398
18400 const CMPER* _GetFretInstIDPtr() const override
18401 {
18402 __STAFFSTYLEDEF_RETURN_FIELD_PTR(fretInstID);
18403 }
18404
18406 const Evpu16* _GetBottomBarlineOffsetPtr() const override
18407 {
18408 __STAFFSTYLEDEF_RETURN_FIELD_PTR(botBarlineOffset);
18409 }
18410
18412 const Evpu16* _GetTopBarlineOffsetPtr() const override
18413 {
18414 __STAFFSTYLEDEF_RETURN_FIELD_PTR(topBarlineOffset);
18415 }
18416
18418 const utwobyte* _GetCapoLowFretPtr() const override
18419 {
18420 __STAFFSTYLEDEF_RETURN_FIELD_PTR(capoLowFret);
18421 }
18422
18424 const FLAG_16* _GetBotLinesPtr() const override
18425 {
18426 __STAFFSTYLEDEF_RETURN_FIELD_PTR(botLines);
18427 }
18428
18430 const FLAG_16* _GetTopLinesPtr() const override
18431 {
18432 __STAFFSTYLEDEF_RETURN_FIELD_PTR(topLines);
18433 }
18434
18436 const Efix32* _GetLineSpacePtr() const override
18437 {
18438 __STAFFSTYLEDEF_RETURN_FIELD_PTR(lineSpace);
18439 }
18440
18442 const twobyte* _GetDwWRestPtr() const override
18443 {
18444 __STAFFSTYLEDEF_RETURN_FIELD_PTR(dw_wRest);
18445 }
18446
18448 const twobyte* _GetStemReversalPtr() const override
18449 {
18450 __STAFFSTYLEDEF_RETURN_FIELD_PTR(stemReversal);
18451 }
18452
18454 const twobyte* _GetRepeatDotsOffPtr() const override
18455 {
18456 __STAFFSTYLEDEF_RETURN_FIELD_PTR(repeatDotsOff);
18457 }
18458
18460 const twobyte* _GetHOtherRestPtr() const override
18461 {
18462 __STAFFSTYLEDEF_RETURN_FIELD_PTR(h_otherRest);
18463 }
18464
18466 const EFONTID* _GetMFontPtr() const override
18467 {
18468 __STAFFSTYLEDEF_RETURN_FIELD_PTR(mfont);
18469 }
18470
18472 const twobyte* _GetSizeEfxPtr() const override
18473 {
18474 __STAFFSTYLEDEF_RETURN_FIELD_PTR(sizeefx);
18475 }
18476
18478 const Efix32* _GetHorzStemOffUpPtr() const override
18479 {
18480 __STAFFSTYLEDEF_RETURN_FIELD_PTR(horzStemOffUp);
18481 }
18482
18484 const Efix32* _GetHorzStemOffDownPtr() const override
18485 {
18486 __STAFFSTYLEDEF_RETURN_FIELD_PTR(horzStemOffDown);
18487 }
18488
18490 const Efix32* _GetVertStemStartOffUpPtr() const override
18491 {
18492 __STAFFSTYLEDEF_RETURN_FIELD_PTR(vertStemStartOffUp);
18493 }
18494
18496 const Efix32* _GetVertStemStartOffDownPtr() const override
18497 {
18498 __STAFFSTYLEDEF_RETURN_FIELD_PTR(vertStemStartOffDown);
18499 }
18500
18502 const Efix32* _GetVertStemEndOffUpPtr() const override
18503 {
18504 __STAFFSTYLEDEF_RETURN_FIELD_PTR(vertStemEndOffUp);
18505 }
18506
18508 const Efix32* _GetVertStemEndOffDownPtr() const override
18509 {
18510 __STAFFSTYLEDEF_RETURN_FIELD_PTR(vertStemEndOffDown);
18511 }
18512
18514 FLAG_16 GetMask1() const { return *_GetMask1FlagPtr(); }
18515
18517 FLAG_16 GetMask2() const { return *_GetMask2FlagPtr(); }
18518
18520 FLAG_16 GetMask3() const { return *_GetMask3FlagPtr(); }
18521
18526 EXTAG _GetFullNamePosTag() const override { return ot_NamePosFullStyle; }
18527
18532 twobyte _GetFullNamePosCmper() const override { return GetItemNo(); }
18533
18538 EXTAG _GetAbbreviatedNamePosTag() const override { return ot_NamePosAbbrvStyle; }
18539
18544 twobyte _GetAbbreviatedNamePosCmper() const override { return GetItemNo(); }
18545
18546#ifdef PDK_FRAMEWORK_PREFS
18548 virtual bool _SaveNewFullNamePos() override
18549 { return this->_pFullNamePosition && this->_pFullNamePosition->SaveAs(GetItemNo()); }
18550
18552 virtual bool _SaveNewAbbreviatedNamePos() override
18553 { return this->_pAbbreviatedNamePosition && this->_pAbbreviatedNamePosition->SaveAs(GetItemNo()); }
18554#endif
18555
18557 bool LoadFirst() override
18558 {
18559 /* Since there can be holes in the staff style "chain", there
18560 need to be a better method to find items. Scanning a gap of 2000 items
18561 should be an ok workaround for just about any documents. In fact,
18562 attempting to load non-existent items takes almost zero time.*/
18563 for (int i = 1; i <= 2000; i++)
18564 {
18565 if (Load(i)) return true;
18566 }
18567 return false;
18568 }
18569
18571 bool LoadNext() override
18572 {
18573 /* Since there can be holes in the staff style "chain", there
18574 need to be a better method to find items. Scanning a gap of 2000 items
18575 should be an ok workaround for just about any documents. In fact,
18576 attempting to load non-existent items takes almost zero time.*/
18577 int itemno = GetItemNo();
18578 for (int i = 1; i <= 2000; i++)
18579 {
18580 if (Load(itemno + i)) return true;
18581 }
18582 return false;
18583 }
18584
18586 bool _SaveRawFields() const;
18587
18588 void _Init()
18589 {
18590 memset(_GetStaffStyle(), 0, DataSizeLoad());
18591 _datablock = _GetStaffStyle();
18593 }
18594
18595#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
18596protected:
18597#ifndef DOXYGEN_SHOULD_IGNORE_THIS
18598
18599 EXTAG Tag() const override { return ot_EDTStaffStyle2010; }
18600 int DataSizeLoad() const override
18601 {
18602 switch (_VersionToUse())
18603 {
18604 case FINALEVERSION_2014:
18605 return sizeof(EDTStaffStyle2014);
18606 case FINALEVERSION_2012:
18607 return sizeof(EDTStaffStyle2012);
18608 default:
18609 return sizeof(EDTStaffStyle2010);
18610 }
18611 }
18612 void* Allocate() override
18613 {
18614 switch (_VersionToUse())
18615 {
18616 case FINALEVERSION_2014:
18617 return (void*) &_staffstyledef2014;
18618 case FINALEVERSION_2012:
18619 return (void*) &_staffstyledef2012;
18620 default:
18621 return (void*) &_staffstyledef2010;
18622 }
18623 }
18624 EVERSION EnigmaVersion() const override { return _VersionToUse(); }
18625
18630 void CloneMemoryFrom(__FCBaseData* pSource) override
18631 {
18632 memcpy(_GetStaffStyle(), ((FCStaffStyleDef*)pSource)->_GetStaffStyle(), DataSizeLoad());
18633 _datablock = _GetStaffStyle();
18635 }
18636
18637 __FCBaseData* CreateObject() override { return new FCStaffStyleDef(); }
18638
18639#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
18640public:
18641 const char* ClassName() const override { return "FCStaffStyleDef"; }
18642 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_STAFFSTYLEDEF; }
18643
18644#ifndef DOXYGEN_SHOULD_IGNORE_THIS
18651 void* _GetStaffStyle() { return Allocate(); }
18652
18654 bool Load(CMPER itemno) override;
18655
18657 bool Save() override
18658 {
18659 if (! __FCNoInciOther::Save()) return false;
18660 return _SaveRawFields();
18661 }
18662
18664 bool SaveNew() override
18665 {
18666 if (! __FCNoInciOther::SaveNew()) return false;
18667 return _SaveRawFields();
18668 }
18669#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
18670
18675 FCStaffStyleDef() : __FCStaffBase(), _skipWorkaround(false)
18676 { _Init(); }
18677
18678#ifdef PDK_FRAMEWORK_LUAFRIENDLY
18683 FCStaffStyleDef(bool skipWorkaround) : __FCStaffBase(), _skipWorkaround(skipWorkaround)
18684 { _Init(); }
18685
18687 static FCStaffStyleDef* FCStaffStyleDef_Lua(void* ptr, lua_State* L)
18688 {
18689 return _OneOptionalParamLuaConstructor<FCStaffStyleDef, bool>(ptr, L);
18690 }
18691#endif // PDK_FRAMEWORK_LUAFRIENDLY
18692
18693
18694 /************************
18695 *** GETTERS for data ***
18696 ************************/
18697
18702 bool GetCopyable() const { return GetBitFlag(*_GetSFFlagPtr(), SFFLAG_COPYABLE); }
18703
18708 bool GetAddToMenu() const { return GetBitFlag(*_GetSFFlagPtr(), SFFLAG_ADDTOMENU); }
18709
18710
18711 /*************************************
18712 *** GETTERS for Staff Style usage ***
18713 *************************************/
18714
18720 bool GetUseShowKeySignatures() const { return GetBitFlag(GetMask2(), SFMASK2_NEGKEY); }
18721
18727 bool GetUseShowMeasureNumbers() const { return GetBitFlag(GetMask1(), SFMASK1_NEGMNUMB); }
18728
18735 bool GetUseShowTimeSignatures() const { return GetBitFlag(GetMask2(), SFMASK2_NEGTIME); }
18736
18741 bool GetUseShowPartTimeSignatures() const { return GetBitFlag(GetMask3(), SFMASK3_NEGTIME_PARTS); }
18742
18748 bool GetUseShowClefs() const { return GetBitFlag(GetMask2(), SFMASK2_NEGCLEF); }
18749
18755 bool GetUseShowChords() const { return GetBitFlag(GetMask3(), SFMASK3_HIDE_CHORDS); }
18756
18762 bool GetUseShowAugmentationDots() const { return GetBitFlag(GetMask2(), SFMASK2_SHOWDOTS); }
18763
18769 bool GetUseShowFretboards() const { return GetBitFlag(GetMask3(), SFMASK3_HIDE_FRETBOARDS); }
18770
18776 bool GetUseShowLyrics() const { return GetBitFlag(GetMask3(), SFMASK3_HIDE_LYRICS); }
18777
18783 bool GetUseShowRepeats() const { return GetBitFlag(GetMask2(), SFMASK2_HIDE_RPT_BARS); }
18784
18790 bool GetUseShowRests() const { return GetBitFlag(GetMask2(), SFMASK2_SHOWRESTS); }
18791
18799 bool GetUseShowStaffLines() const;
18800
18806 bool GetUseShowScoreStaffNames() const { return GetBitFlag(GetMask1(), SFMASK1_NEGNAME); }
18807
18813 bool GetUseShowPartStaffNames() const { return GetBitFlag(GetMask3(), SFMASK3_SHOWNAME_PARTS); }
18814
18821 bool GetUseShowStems() const { return GetBitFlag(GetMask3(), SFMASK3_SHOWSTEMS); }
18822
18828 bool GetUseShowTies() const { return GetBitFlag(GetMask2(), SFMASK2_SHOWTIES); }
18829
18835 bool GetUseIndependentFont() const { return GetBitFlag(GetMask1(), SFMASK1_FLOATNOTEHEADFONT); }
18836
18842 bool GetUseFlatBeams() const { return GetBitFlag(GetMask1(), SFMASK1_FLAT_BEAMS); }
18843
18849 bool GetUseNotationStyle() const { return GetBitFlag(GetMask1(), SFMASK1_NOTATIONSTYLE); }
18850
18856 bool GetUseDisplayEmptyRests() const { return GetBitFlag(GetMask1(), SFMASK1_BLANKMEASURE); }
18857
18863 bool GetUseAllowHiding() const { return GetBitFlag(GetMask1(), SFMASK1_NO_OPTIMIZE); }
18864
18870 bool GetUseDefaultClef() const { return GetBitFlag(GetMask1(), SFMASK1_DEFAULTCLEF); }
18871
18880 bool GetUseStafflineAdjustments() const { return GetBitFlag(GetMask1(), SFMASK1_STAFFLINES); }
18881
18887 bool GetUseTransposition() const { return GetBitFlag(GetMask1(), SFMASK1_TRANSPOSITION); }
18888
18894 bool GetUseBreakBarlines() const { return GetBitFlag(GetMask1(), SFMASK1_BLINEBREAK); }
18895
18901 bool GetUseBreakRepeatBarlines() const { return GetBitFlag(GetMask1(), SFMASK1_RBARBREAK); }
18902
18908 bool GetUseShowTextRepeats() const { return GetBitFlag(GetMask1(), SFMASK1_NEGREPEAT); }
18909
18915 bool GetUseShowBarlines() const { return GetBitFlag(GetMask1(), SFMASK1_HIDE_BARLINES); }
18916
18922 bool GetUseFullName() const { return GetBitFlag(GetMask2(), SFMASK2_FULLNAME); }
18923
18929 bool GetUseAbbreviatedName() const { return GetBitFlag(GetMask2(), SFMASK2_ABBRVNAME); }
18930
18936 bool GetUseIndependentKeySig() const { return GetBitFlag(GetMask2(), SFMASK2_FLOATKEYS); }
18937
18943 bool GetUseIndependentTimeSig() const { return GetBitFlag(GetMask2(), SFMASK2_FLOATTIME); }
18944
18950 bool GetUseHideMode() const { return GetBitFlag(GetMask2(), SFMASK2_HIDESTAFF); }
18951
18957 bool GetUseIgnoreKeySig() const { return GetBitFlag(GetMask2(), SFMASK2_NOKEY); }
18958
18964 bool GetUseFullNamePosition() const { return GetBitFlag(GetMask2(), SFMASK2_FULLNAMEPOS); }
18965
18971 bool GetUseAbbreviatedPosition() const { return GetBitFlag(GetMask2(), SFMASK2_ABBRVNAMEPOS); }
18972
18978 bool GetUseAltNotationStyle() const { return GetBitFlag(GetMask2(), SFMASK2_ALTNOTATION); }
18979
18985 bool GetUseShowNoteColors() const { return GetBitFlag(GetMask3(), SFMASK3_SHOW_NOTE_COLORS); }
18986
18994 bool GetUseShowNoteShapes() const;
18995
19003 bool GetUseNoKeySigShowAccidentals() const;
19004
19013
19014
19015 /* **********************
19016 *** SETTERS for data ***
19017 ************************/
19018
19023 void SetCopyable(bool value) { Set16BitFlag((FLAG_16*)_GetSFFlagPtr(), SFFLAG_COPYABLE, value); }
19024
19029 void SetAddToMenu(bool value) { Set16BitFlag((FLAG_16*) _GetSFFlagPtr(), SFFLAG_ADDTOMENU, value); }
19030
19031 /* ***********************************
19032 *** SETTERS for Staff Style usage ***
19033 *************************************/
19034
19041 {
19042 Set16BitFlag((FLAG_16*) _GetMask2FlagPtr(), SFMASK2_NEGKEY, state);
19043 }
19044
19051 {
19052 Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_NEGMNUMB, state);
19053 }
19054
19063 {
19064 Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_NEGTIME, state);
19065 }
19066
19072 {
19073 Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_NEGTIME_PARTS, state);
19074 }
19075
19081 void SetUseShowClefs(bool state)
19082 {
19083 Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_NEGCLEF, state);
19084 }
19085
19091 void SetUseShowChords(bool state)
19092 {
19093 Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_HIDE_CHORDS, state);
19094 }
19095
19102 {
19103 Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_SHOWDOTS, state);
19104 }
19105
19111 void SetUseShowFretboards(bool state)
19112 {
19113 Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_HIDE_FRETBOARDS, state);
19114 }
19115
19121 void SetUseShowLyrics(bool state)
19122 {
19123 Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_HIDE_LYRICS, state);
19124 }
19125
19131 void SetUseShowRepeats(bool state)
19132 {
19133 Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_HIDE_RPT_BARS, state);
19134 }
19135
19141 void SetUseShowRests(bool state)
19142 {
19143 Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_SHOWRESTS, state);
19144 }
19145
19153 void SetUseShowStaffLines(bool state);
19154
19161 {
19162 Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_NEGNAME, state);
19163 }
19164
19171 {
19172 Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_SHOWNAME_PARTS, state);
19173 }
19174
19181 void SetUseShowStems(bool state)
19182 {
19183 Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_SHOWSTEMS, state);
19184 }
19185
19191 void SetUseShowTies(bool state)
19192 {
19193 Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_SHOWTIES, state);
19194 }
19195
19201 void SetUseIndependentFont(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_FLOATNOTEHEADFONT, state); }
19202
19208 void SetUseFlatBeams(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_FLAT_BEAMS, state); }
19209
19215 void SetUseNotationStyle(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_NOTATIONSTYLE, state); }
19216
19222 void SetUseDisplayEmptyRests(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_BLANKMEASURE, state); }
19223
19229 void SetUseAllowHiding(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_NO_OPTIMIZE, state); }
19230
19236 void SetUseDefaultClef(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_DEFAULTCLEF, state); }
19237
19246 void SetUseStafflineAdjustments(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_STAFFLINES, state); }
19247
19253 void SetUseTransposition(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_TRANSPOSITION, state); }
19254
19260 void SetUseBreakBarlines(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_BLINEBREAK, state); }
19261
19267 void SetUseBreakRepeatBarlines(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_RBARBREAK, state); }
19268
19274 void SetUseShowTextRepeats(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_NEGREPEAT, state); }
19275
19281 void SetUseShowBarlines(bool state) { Set16BitFlag((FLAG_16*)_GetMask1FlagPtr(), SFMASK1_HIDE_BARLINES, state); }
19282
19288 void SetUseFullName(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_FULLNAME, state); }
19289
19295 void SetUseAbbreviatedName(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_ABBRVNAME, state); }
19296
19302 void SetUseIndependentKeySig(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_FLOATKEYS, state); }
19303
19309 void SetUseIndependentTimeSig(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_FLOATTIME, state); }
19310
19316 void SetUseHideMode(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_HIDESTAFF, state); }
19317
19323 void SetUseIgnoreKeySig(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_NOKEY, state); }
19324
19330 void SetUseFullNamePosition(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_FULLNAMEPOS, state); }
19331
19337 void SetUseAbbreviatedPosition(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_ABBRVNAMEPOS, state); }
19338
19344 void SetUseAltNotationStyle(bool state) { Set16BitFlag((FLAG_16*)_GetMask2FlagPtr(), SFMASK2_ALTNOTATION, state); }
19345
19351 void SetUseShowNoteColors(bool state) { Set16BitFlag((FLAG_16*)_GetMask3FlagPtr(), SFMASK3_SHOW_NOTE_COLORS, state); }
19352
19360 void SetUseShowNoteShapes(bool state);
19361
19369 void SetUseNoKeySigShowAccidentals(bool state);
19370
19378 void SetUseRedisplayOtherLayerAccidentals(bool state);
19379
19380 /*********************
19381 *** MISC. METHODS ***
19382 *********************/
19383
19390 bool IsInstrumentChange();
19391
19392#ifdef PDK_FRAMEWORK_PREFS
19407
19422#endif
19423
19428 void GetName(FCString* pString);
19429
19434 void SetName(FCString* pString);
19435
19436
19437#ifdef PDK_FRAMEWORK_DEBUG
19438 void DebugDump() override
19439 {
19441 DebugOutBool("Is 2012 Instrument Change: ", IsInstrumentChange());
19442 }
19443#endif
19444};
19445
19446
19447
19457{
19458private:
19459#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19460 EDTStaffStyleAssign _staffstyleassign;
19461#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19462protected:
19463#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19464
19465 EXTAG Tag() const override { return ot_EDTStaffStyleAssign; }
19466 int DataSizeLoad() const override { return sizeof(EDTStaffStyleAssign); }
19467 void* Allocate() override { return (void*) &_staffstyleassign; }
19468
19473 void CloneMemoryFrom(__FCBaseData* pSource) override
19474 {
19475 memcpy(&_staffstyleassign, ((FCStaffStyleAssign*)pSource)->_GetStaffStyleAssign(), sizeof(_staffstyleassign));
19476 _datablock = &_staffstyleassign;
19477 _loadedsize = sizeof(_staffstyleassign);
19478 }
19479
19480 __FCBaseData* CreateObject() override
19481 { return new FCStaffStyleAssign(); }
19482
19483#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19484public:
19485 const char* ClassName() const override { return "FCStaffStyleAssign"; }
19486 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_STAFFSTYLEASSIGN; }
19487
19488#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19495 void* _GetStaffStyleAssign() { return Allocate(); }
19496#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19497
19503 {
19504 memset(&_staffstyleassign, 0, sizeof(_staffstyleassign));
19505 _datablock = &_staffstyleassign;
19506 _loadedsize = sizeof(_staffstyleassign);
19507 _staffstyleassign.range.end.edu = 0x7fffffff;
19508 }
19509
19516 twobyte GetStyleID() const { return _staffstyleassign.style; };
19517
19523 eMeas GetStartMeasure() const { return _staffstyleassign.range.start.meas; };
19524
19529 TimeEdu32 GetStartMeasurePos() const { return _staffstyleassign.range.start.edu; };
19530
19535 eMeas GetEndMeasure() const { return _staffstyleassign.range.end.meas; };
19536
19541 TimeEdu32 GetEndMeasurePos() const { return _staffstyleassign.range.end.edu; };
19542
19547 void SetStartMeasure(eMeas value) { _staffstyleassign.range.start.meas = value; }
19548
19553 void SetStartMeasurePos(TimeEdu32 value) { _staffstyleassign.range.start.edu = value; }
19554
19559 void SetEndMeasure(eMeas value) { _staffstyleassign.range.end.meas = value; }
19560
19565 void SetEndMeasurePos(TimeEdu32 value) { _staffstyleassign.range.end.edu = value; }
19566
19571 void SetStyleID(twobyte value) { _staffstyleassign.style = value; }
19572
19577 eStaff GetStaff() const override { return _dataid.other.cmper; };
19578
19585
19591 {
19592 if (!pRegion) return false;
19593 if (GetEndMeasure() < pRegion->GetStartMeasure()) return false;
19594 if (GetStartMeasure() > pRegion->GetEndMeasure()) return false;
19595 if (GetEndMeasure() == pRegion->GetStartMeasure())
19596 {
19597 if (GetEndMeasurePos() < pRegion->GetStartMeasurePos()) return false;
19598 }
19599 if (GetStartMeasure() == pRegion->GetEndMeasure())
19600 {
19601 if (GetStartMeasurePos() > pRegion->GetEndMeasurePos()) return false;
19602 }
19603 // Horizontally, it's an overlap - check the staff:
19604 if (pRegion->IsStaffIncluded(GetStaff())) return true;
19605 return false;
19606 }
19607
19608#ifdef PDK_FRAMEWORK_DEBUG
19609 void DebugDump() override
19610 {
19612 DebugOutInt("Style ID: ", GetStyleID());
19613 DebugOutInt("Start measure: ", GetStartMeasure());
19614 DebugOutInt("End measure: ", GetEndMeasure());
19615 }
19616#endif
19617};
19618
19619
19620
19633{
19634private:
19635#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19636 EDTMultimeasureRest _mmrest;
19637
19638#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19639protected:
19640#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19641
19642 EXTAG Tag() const override { return ot_MultimeasureRest; }
19643 int DataSizeLoad() const override { return sizeof(EDTMultimeasureRest); }
19644 void* Allocate() override { return (void*) &_mmrest; }
19645
19652 void CloneMemoryFrom(__FCBaseData* pSource) override
19653 {
19654 memcpy(&_mmrest, ((FCMultiMeasureRest*)pSource)->_GetMMRest(), sizeof(_mmrest));
19655 _datablock = &_mmrest;
19656 _loadedsize = sizeof(_mmrest);
19657 }
19658
19659 __FCBaseData* CreateObject() override { return new FCMultiMeasureRest(); }
19660
19661 bool LoadFirst() override
19662 {
19663 Load(0);
19664 return LoadNext();
19665 }
19666
19667 bool SaveNew() override { return false; } // Disabled: Save() has to be used
19668#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19669public:
19670 const char* ClassName() const override { return "FCMultiMeasureRest"; }
19671 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_MULTIMEASUREREST; }
19672
19673#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19680 void* _GetMMRest() { return Allocate(); }
19681#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19682
19689 {
19690 memset(&_mmrest, 0, sizeof(_mmrest));
19691 SetWidth(300); /* Just to set a width */
19692 _datablock = &_mmrest;
19693 _loadedsize = sizeof(_mmrest);
19694 }
19695
19701 twobyte GetStartMeasure() const { return _dataid.other.cmper; }
19702
19708 twobyte GetEndMeasure() const { return _mmrest.stopBefore - 1; }
19709
19715 twobyte GetWidth() const { return _mmrest.measureWidth; }
19716
19723 twobyte GetShapeID() const { return _mmrest.shape; }
19724
19730 bool GetUseSymbols() const
19731 {
19732 return GetBitFlag(_mmrest.flag, MMREST_USE_SYMBOLS);
19733 }
19734
19742 {
19743 return _mmrest.symbolMeasures;
19744 }
19745
19752 bool GetStretchHorizontally() const;
19753
19759 twobyte GetShapeEndAdjust() const { return _mmrest.adjustEndPoint; }
19760
19766 twobyte GetShapeStartAdjust() const { return _mmrest.adjustStartPoint; }
19767
19773 twobyte GetSymbolSpace() const { return _mmrest.spaceBetween; }
19774
19781 twobyte GetStartNumberingAt() const { return _mmrest.startNumbering; }
19782
19788 twobyte GetNumberHorizontalAdjust() const { return _mmrest.horizNumberAdjust; }
19789
19794 twobyte GetNumberVerticalAdjust() const { return _mmrest.vertNumberAdjust; }
19795
19800 twobyte CalcMeasureSpan() { return GetEndMeasure() - GetStartMeasure() + 1; }
19801
19806 void SetWidth(twobyte value) { _mmrest.measureWidth = value; }
19807
19815 void SetStartMeasure(twobyte measure) { _dataid.other.cmper = measure; }
19816
19822 void SetEndMeasure(twobyte measure) { _mmrest.stopBefore = measure + 1; }
19823
19829 void SetShapeEndAdjust(twobyte value) { _mmrest.adjustEndPoint = value; }
19830
19836 void SetShapeStartAdjust(twobyte value) { _mmrest.adjustStartPoint = value; }
19837
19844 void SetShapeID(twobyte shapeID) { _mmrest.shape = shapeID; }
19845
19846
19852 void SetUseSymbols(bool value)
19853 {
19854 Set16BitFlag(&_mmrest.flag, MMREST_USE_SYMBOLS, value);
19855 }
19856
19863 void SetUseSymbolsLessThan(twobyte value)
19864 {
19865 _mmrest.symbolMeasures = value;
19866 }
19867
19874 void SetStretchHorizontally( bool value );
19875
19881 void SetSymbolSpace(twobyte space) { _mmrest.spaceBetween = space; }
19882
19887 void SetStartNumberingAt(twobyte value) { _mmrest.startNumbering = value; }
19888
19893 void SetNumberHorizontalAdjust(twobyte value) { _mmrest.horizNumberAdjust = value; }
19894
19899 void SetNumberVerticalAdjust(twobyte value) { _mmrest.vertNumberAdjust = value; }
19900
19905 bool IsMeasureIncluded(int measure)
19906 {
19907 if (measure < GetStartMeasure()) return false;
19908 if (measure > GetEndMeasure()) return false;
19909 return true;
19910 }
19911
19916 bool IsShape()
19917 {
19918 if (!GetUseSymbols()) return true;
19919 if (GetUseSymbolsLessThan() >= CalcMeasureSpan()) return true;
19920 return false;
19921 }
19922
19923#ifdef PDK_FRAMEWORK_PREFS
19930 void PrefsReset();
19931#endif
19932
19933
19934#ifdef PDK_FRAMEWORK_DEBUG
19935 void DebugDump() override
19936 {
19938 DebugOutInt("Start measure: ", GetStartMeasure());
19939 DebugOutInt("End measure: ", GetEndMeasure());
19940 }
19941#endif
19942};
19943
19944#if FXT_VERSION >= FINALEVERSION_2012
19953{
19954private:
19955#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19956 EDTMultiStaffInstGroup _multistaffinstgroup;
19957
19958#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19959protected:
19960#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19961
19962 EXTAG Tag() const override { return otx_MultiStaffInstGroup; }
19963 int DataSizeLoad() const override { return sizeof(EDTMultiStaffInstGroup); }
19964 void* Allocate() override { return (void*) &_multistaffinstgroup; }
19965
19972 void CloneMemoryFrom(__FCBaseData* pSource) override
19973 {
19974 memcpy(&_multistaffinstgroup, ((FCMultiStaffInstrument*)pSource)->_GetMultiStaffInstGroup(), sizeof(_multistaffinstgroup));
19975 _datablock = &_multistaffinstgroup;
19976 _loadedsize = sizeof(_multistaffinstgroup);
19977 }
19978
19979 __FCBaseData* CreateObject() override { return new FCMultiStaffInstrument(); }
19980
19981 /*bool LoadFirst() override
19982 {
19983 Load(0);
19984 return LoadNext();
19985 } */
19986#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
19987public:
19988 const char* ClassName() const override { return "FCMultiStaffInstrument"; }
19989 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_MULTISTAFFINSTRUMENT; }
19990
19991#ifndef DOXYGEN_SHOULD_IGNORE_THIS
19998 void* _GetMultiStaffInstGroup() { return Allocate(); }
19999#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20000
20007 {
20008 memset(&_multistaffinstgroup, 0, sizeof(_multistaffinstgroup));
20009 }
20010
20016 bool ContainsStaff(CMPER staffno)
20017 {
20018 if (staffno == 0) return false;
20019 if (staffno == GetFirstStaff()) return true;
20020 if (staffno == GetSecondStaff()) return true;
20021 if (staffno == GetThirdStaff()) return true;
20022 return false;
20023 }
20024
20029 CMPER GetFirstStaff() const { return _multistaffinstgroup.staffNum1; }
20030
20035 CMPER GetSecondStaff() const { return _multistaffinstgroup.staffNum2; }
20036
20041 CMPER GetThirdStaff() const { return _multistaffinstgroup.staffNum3; }
20042
20047 eStaffGroup GetGroupID() const
20048 {
20049 return _multistaffinstgroup.staffGroupID;
20050 }
20051
20052
20058 void SetFirstStaff(CMPER value) { _multistaffinstgroup.staffNum1 = value; }
20059
20064 void SetSecondStaff(CMPER value) { _multistaffinstgroup.staffNum2 = value; }
20065
20071 void SetThirdStaff(CMPER value) { _multistaffinstgroup.staffNum3 = value; }
20072
20077 void SetGroupID(eStaffGroup value)
20078 {
20079 _multistaffinstgroup.staffGroupID = value;
20080 }
20081
20082
20090 {
20091 CMPER returnvalue = 0;
20092 twobyte lowestslot = 10000;
20093 twobyte slottest = FX_InstToSlot(GetFirstStaff(), 0);
20094 if (slottest)
20095 {
20096 lowestslot = slottest;
20097 returnvalue = GetFirstStaff();
20098 }
20099 slottest = FX_InstToSlot(GetSecondStaff(), 0);
20100 if ((slottest) && (slottest < lowestslot))
20101 {
20102 lowestslot = slottest;
20103 returnvalue = GetSecondStaff();
20104 }
20105 slottest = FX_InstToSlot(GetThirdStaff(), 0);
20106 if ((slottest) && (slottest < lowestslot))
20107 {
20108 returnvalue = GetThirdStaff();
20109 }
20110 return returnvalue;
20111 }
20112
20120 {
20121 CMPER returnvalue = 0;
20122 twobyte highestslot = -10000;
20123 twobyte slottest = FX_InstToSlot(GetFirstStaff(), 0);
20124 if (slottest)
20125 {
20126 highestslot = slottest;
20127 returnvalue = GetFirstStaff();
20128 }
20129 slottest = FX_InstToSlot(GetSecondStaff(), 0);
20130 if ((slottest) && (slottest > highestslot))
20131 {
20132 highestslot = slottest;
20133 returnvalue = GetSecondStaff();
20134 }
20135 slottest = FX_InstToSlot(GetThirdStaff(), 0);
20136 if ((slottest) && (slottest > highestslot))
20137 {
20138 returnvalue = GetThirdStaff();
20139 }
20140 return returnvalue;
20141 }
20142
20143
20144#ifdef PDK_FRAMEWORK_DEBUG
20145 void DebugDump() override
20146 {
20148 DebugOutInt("First staff: ", GetFirstStaff());
20149 DebugOutInt("Second staff: ", GetSecondStaff());
20150 DebugOutInt("Third staff: ", GetThirdStaff());
20151 DebugOutInt("Group ID: ", GetGroupID());
20152 }
20153#endif
20154};
20155#endif // #if FXT_VERSION >= FINALEVERSION_2012
20156
20157
20167{
20168private:
20169#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20170 EDTAllotment _allotment;
20171
20172#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20173protected:
20174#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20175
20176 EXTAG Tag() const override { return ot_Allotment; }
20177 int DataSizeLoad() const override { return sizeof(EDTAllotment); }
20178 void* Allocate() override { return (void*) &_allotment; }
20179
20186 void CloneMemoryFrom(__FCBaseData* pSource) override
20187 {
20188 memcpy(&_allotment, ((FCAllotment*)pSource)->_GetAllotment(), sizeof(_allotment));
20189 _datablock = &_allotment;
20190 _loadedsize = sizeof(_allotment);
20191 }
20192
20193 __FCBaseData* CreateObject() override { return new FCAllotment(); }
20194
20195 bool LoadFirst() override
20196 {
20197 if (!Load(0)) return LoadNext();
20198 return true;
20199 }
20200
20201 bool LoadNext() override
20202 {
20203 EDTAllotment scratch;
20204 if (!FX_NextEData(Tag(), &_dataid, &scratch, sizeof(scratch), EnigmaVersion())) return false;
20205 return LoadDataBlock();
20206 }
20207
20208#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20209public:
20210 const char* ClassName() const override { return "FCAllotment"; }
20211 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_ALLOTMENT; }
20212
20213#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20220 void* _GetAllotment() { return Allocate(); }
20221#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20222
20228 {
20229 memset(&_allotment, 0, sizeof(_allotment));
20230 _datablock = &_allotment;
20231 _loadedsize = sizeof(_allotment);
20232 }
20233
20238 void SetWidth(Evpu16 width)
20239 {
20240 _allotment.allotment = width;
20241 }
20242
20243
20248 Evpu16 GetWidth() const
20249 {
20250 return _allotment.allotment;
20251 }
20252
20253
20254#ifdef PDK_FRAMEWORK_DEBUG
20255 void DebugDump() override
20256 {
20258 DebugOutInt("Allotment Width: ", GetWidth());
20259 }
20260#endif
20261};
20262
20263
20264
20271{
20272private:
20273#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20276 EDTTGraphic _graphic;
20277
20278 EXTAG Tag() const override { return ot_PageGraphic; }
20279 int DataSizeLoad() const override { return sizeof(EDTTGraphic); }
20280 void* Allocate() override { return (void*) &_graphic; }
20281
20282 EVERSION EnigmaVersion() const override { return FINALEVERSION_2010; }
20283
20288 void CloneMemoryFrom(__FCBaseData* pSource) override
20289 {
20290 memcpy(&_graphic, ((FCPageGraphic*)pSource)->_GetGraphic(), sizeof(_graphic));
20291 _datablock = &_graphic;
20292 _loadedsize = sizeof(_graphic);
20293 }
20294
20296 bool LoadFirst() override
20297 {
20298 SetCmperAndInci(0, 0);
20299 if (Load(0, 0)) return true; /* 0, 0 is a valid record! */
20300 return LoadNext();
20301 }
20302
20304 bool SaveNew(CMPER) override
20305 { return false; }
20306
20308 bool _RawRelink() override;
20309
20310 __FCBaseData* CreateObject() override { return new FCPageGraphic(); }
20311
20312#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20313
20314public:
20315 const char* ClassName() const override { return "FCPageGraphic"; }
20316 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_PAGEGRAPHIC; }
20317
20318#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20325 void* _GetGraphic() { return &_graphic; }
20326#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20327
20328
20342
20356
20357
20358
20364 {
20365 memset(&_graphic, 0, sizeof(_graphic));
20366 }
20367
20373 {
20374 return MAKEBOOL(_graphic.graphicCmper);
20375 }
20376
20381 int GetFirstPage() const
20382 {
20383 return _graphic.start;
20384 }
20385
20390 int GetLastPage() const
20391 {
20392 return _graphic.end;
20393 }
20394
20399 Evpu16 GetHorizontalPos() const
20400 {
20401 return _graphic.left;
20402 }
20403
20408 Evpu16 GetVerticalPos() const
20409 {
20410 return _graphic.bottom;
20411 }
20412
20417 Evpu16 GetWidth() const
20418 {
20419 return _graphic.width;
20420 }
20421
20426 Evpu16 GetHeight() const
20427 {
20428 return _graphic.height;
20429 }
20430
20435 Evpu16 GetOriginalWidth() const
20436 {
20437 return _graphic.origWidth;
20438 }
20439
20444 Evpu16 GetOriginalHeight() const
20445 {
20446 return _graphic.origHeight;
20447 }
20448
20455 bool GetVisible() const { return !GetBitFlag(_graphic.displayFlags, GRAPHIC_DISPLAY_HIDDEN); }
20456
20463 bool GetPageEdgeRef() const { return GetBitFlag(_graphic.alignFlags, GRAPHIC_ALIGN_PAPER); }
20464
20469 bool GetIndependentRightPage() const { return (_graphic.rightPgAlignFlags != 0); }
20470
20475 Evpu16 GetHorizontalPosRightPage() const { return _graphic.rightPgLeft; }
20476
20481 Evpu16 GetVerticalPosRightPage() const { return _graphic.rightPgBottom; }
20482
20488 bool GetFixedPercent() const { return GetBitFlag(_graphic.alignFlags, GRAPHIC_ALIGN_FIXEDPERC); }
20489
20497#ifndef PDK_FRAMEWORK_LUAFRIENDLY
20499#else
20500 int
20501#endif
20503 {
20504 if (GetBitFlag(_graphic.alignFlags, GRAPHIC_ALIGN_LEFT)) return GRAPHICHORIZALIGN_LEFT;
20505 if (GetBitFlag(_graphic.alignFlags, GRAPHIC_ALIGN_RIGHT)) return GRAPHICHORIZALIGN_RIGHT;
20507 }
20508
20515#ifndef PDK_FRAMEWORK_LUAFRIENDLY
20517#else
20518 int
20519#endif
20521 {
20522 if (GetBitFlag(_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_LEFT)) return GRAPHICHORIZALIGN_LEFT;
20523 if (GetBitFlag(_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_RIGHT)) return GRAPHICHORIZALIGN_RIGHT;
20525 }
20526
20533#ifndef PDK_FRAMEWORK_LUAFRIENDLY
20535#else
20536 int
20537#endif
20539 {
20540 if (GetBitFlag(_graphic.alignFlags, GRAPHIC_ALIGN_TOP)) return GRAPHICVERTALIGN_TOP;
20541 if (GetBitFlag(_graphic.alignFlags, GRAPHIC_ALIGN_BOTTOM)) return GRAPHICVERTALIGN_BOTTOM;
20543 }
20544
20545 /* SETTERS */
20546
20551 void SetFirstPage(int pageno)
20552 {
20553 _graphic.start = pageno;
20554 }
20555
20560 void SetLastPage(int pageno)
20561 {
20562 _graphic.end = pageno;
20563 }
20564
20572 void SetHorizontalPos(Evpu16 pos)
20573 {
20574 _graphic.left = pos;
20576 }
20577
20585 void SetVerticalPos(Evpu16 pos)
20586 {
20587 _graphic.bottom = pos;
20589 }
20590
20595 void SetWidth(Evpu16 width)
20596 {
20597 _graphic.width = width;
20598 }
20599
20604 void SetHeight(Evpu16 height)
20605 {
20606 _graphic.height = height;
20607 }
20608
20613 void SetVisible(bool state)
20614 {
20615 Set16BitFlag(&_graphic.displayFlags, GRAPHIC_DISPLAY_HIDDEN, !state);
20616 }
20617
20629 void SetPageEdgeRef(bool state)
20630 {
20631 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_MARGINS, !state);
20632 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_PAPER, state);
20633 }
20634
20640 {
20641 if (GetIndependentRightPage() == state) return;
20642 /* Copy the alignment */
20643 if (state)
20644 _graphic.rightPgAlignFlags = _graphic.alignFlags;
20645 else
20646 _graphic.rightPgAlignFlags = 0;
20647 }
20648
20653 void SetHorizontalPosRightPage(Evpu16 value)
20654 {
20655 _graphic.rightPgLeft = value;
20656 }
20657
20662 void SetVerticalPosRightPage(Evpu16 value)
20663 {
20664 _graphic.rightPgBottom = value;
20665 }
20666
20672 void SetFixedPercent(bool state) { Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_FIXEDPERC, state); }
20673
20684#ifndef PDK_FRAMEWORK_LUAFRIENDLY
20686#else
20687 FLAG_16
20688#endif
20689 alignment
20690 )
20691 {
20692 switch (alignment)
20693 {
20695 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_LEFT, true);
20696 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_RIGHT, false);
20697 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_CENTERH, false);
20698 break;
20700 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_LEFT, false);
20701 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_RIGHT, true);
20702 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_CENTERH, false);
20703 break;
20704 default: /* Horizontally centered */
20705 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_LEFT, false);
20706 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_RIGHT, false);
20707 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_CENTERH, true);
20708 break;
20709 }
20711 }
20712
20720#ifndef PDK_FRAMEWORK_LUAFRIENDLY
20722#else
20723 FLAG_16
20724#endif
20725 alignment)
20726 {
20727 switch (alignment)
20728 {
20730 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_LEFT, true);
20731 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_RIGHT, false);
20732 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_CENTERH, false);
20733 break;
20735 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_LEFT, false);
20736 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_RIGHT, true);
20737 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_CENTERH, false);
20738 break;
20739 default: /* Horizontally centered */
20740 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_LEFT, false);
20741 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_RIGHT, false);
20742 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_CENTERH, true);
20743 break;
20744 }
20745 }
20746
20754#ifndef PDK_FRAMEWORK_LUAFRIENDLY
20756#else
20757 int
20758#endif
20759 alignment
20760 )
20761 {
20762 /* If GetIndependentRightPage() is ON, copy the vertical alignment
20763 * there as well (to make sure they are in synch). */
20764 switch (alignment)
20765 {
20767 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_TOP, true);
20768 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_BOTTOM, false);
20769 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_CENTERV, false);
20771 {
20772 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_TOP, true);
20773 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_BOTTOM, false);
20774 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_CENTERV, false);
20775 }
20776 break;
20778 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_TOP, false);
20779 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_BOTTOM, true);
20780 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_CENTERV, false);
20782 {
20783 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_TOP, false);
20784 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_BOTTOM, true);
20785 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_CENTERV, false);
20786 }
20787 break;
20788 default:
20789 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_TOP, false);
20790 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_BOTTOM, false);
20791 Set16BitFlag(&_graphic.alignFlags, GRAPHIC_ALIGN_CENTERV, true);
20793 {
20794 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_TOP, false);
20795 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_BOTTOM, false);
20796 Set16BitFlag(&_graphic.rightPgAlignFlags, GRAPHIC_ALIGN_CENTERV, true);
20797 }
20798 break;
20799 }
20800 }
20801};
20802
20803
20817{
20818private:
20819#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20821 EDTTextRepeatStyle2005 _repeatdef;
20822
20823protected:
20824 EXTAG Tag() const override { return ot_TextRepeatStyle; }
20825 int DataSizeLoad() const override { return sizeof(EDTTextRepeatStyle2005); }
20826 void* Allocate() override { return (void*) &_repeatdef; }
20827
20832 void CloneMemoryFrom(__FCBaseData* pSource) override
20833 {
20834 memcpy(&_repeatdef, ((FCTextRepeatDef*)pSource)->_GetRepeatDef(), sizeof(_repeatdef));
20835 _datablock = &_repeatdef;
20836 _loadedsize = sizeof(_repeatdef);
20837 }
20838
20839
20840 bool LoadFirst() override
20841 {
20842 bool returnval = __FCNoInciOther::LoadFirst();
20843 if (!returnval) return false;
20844 /* Check that a string exists as well.
20845 * Otherwise, it might be possible that it returns true
20846 * even if there are no text repeats at all. */
20847 FCString* pString = CreateTextString();
20848 bool stringexists = !pString->IsEmpty();
20849 delete pString;
20850 return stringexists;
20851 }
20852
20853
20854 __FCBaseData* CreateObject() override { return new FCTextRepeatDef(); }
20855
20860 bool _SaveTextAs(FCString* pString, CMPER itemno);
20861
20864 bool _DeleteText();
20865
20868 bool _DeleteEnclosure();
20869#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20870public:
20871
20878 {
20880 TEXTREPJUST_LEFT = TEXT_REPEAT_LEFTJUST,
20881
20883 TEXTREPJUST_RIGHT = TEXT_REPEAT_RITEJUST,
20884
20886 TEXTREPJUST_CENTER = TEXT_REPEAT_CENTERED,
20887
20889 TEXTREPJUST_FULL = TEXT_REPEAT_FULLJUST
20891
20907
20908
20909 const char* ClassName() const override { return "FCTextRepeatDef"; }
20910 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_TEXTREPEATDEF; }
20911
20912#ifndef DOXYGEN_SHOULD_IGNORE_THIS
20919 void* _GetRepeatDef() { return &_repeatdef; }
20920
20921#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
20922
20928
20934 bool DeepSaveAs(CMPER itemno) override;
20935
20941 bool DeepDeleteData() override
20942 {
20943 _DeleteEnclosure();
20944 _DeleteText();
20945 return DeleteData();
20946 }
20947
20957
20958#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
20960 luabridge::RefCountedPtr<FCString> CreateTextString_GC()
20961 { return makeLuaSharedPtr(CreateTextString()); }
20962#endif
20963
20974 bool SaveTextString(FCString *pString);
20975
20990 bool DeepSaveNew(FCString* pString, FCEnclosure* pEnclosure);
20991
21004
21005#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
21007 luabridge::RefCountedPtr<FCEnclosure> CreateEnclosure_GC()
21008 { return makeLuaSharedPtr(CreateEnclosure()); }
21009#endif
21010
21023 bool SaveEnclosure(FCEnclosure* pEnclosure);
21024
21030 {
21031 if (!pInfo) return;
21032 pInfo->SetNameByID(_repeatdef.font);
21033 pInfo->SetEnigmaStyles(_repeatdef.efx);
21034 pInfo->SetSize(_repeatdef.size);
21035 }
21036
21042 {
21043 if (!pInfo) return;
21044 _repeatdef.font = pInfo->GetIDByName();
21045 _repeatdef.efx = pInfo->GetEnigmaStyles();
21046 _repeatdef.size = pInfo->GetSize();
21047 }
21048
21054 bool GetUseThisFont() const
21055 {
21056 return GetBitFlag(_repeatdef.flag, TEXT_REPEAT_USETHISFONT);
21057 }
21058
21064 void SetUseThisFont(bool state)
21065 {
21066 return Set16BitFlag(&_repeatdef.flag, TEXT_REPEAT_USETHISFONT, state);
21067 }
21068
21075#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21077#else
21078 int
21079#endif
21080 GetJustification() const;
21081
21088 void SetJustification(
21089#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21091#else
21092 int
21093#endif
21094 value
21095 );
21096
21101#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21103#else
21104 int
21105#endif
21106 GetReplaceMode() const;
21107
21108
21114 void SetReplaceMode(
21115#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21117#else
21118 int
21119#endif
21120 value
21121 );
21122
21123
21124#ifdef PDK_FRAMEWORK_DEBUG
21125 void DebugDump() override
21126 {
21128 }
21129#endif
21130
21131};
21132
21133
21135
21148{
21149private:
21150#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21151 EDTTextRepeat2005 _textrepeat;
21152#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21153protected:
21154#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21155
21156 EXTAG Tag() const override { return ot_TextRepeat2005; }
21157 int DataSizeLoad() const override { return sizeof(EDTTextRepeat2005); }
21158 void* Allocate() override { return (void*) &_textrepeat; }
21159
21164 void CloneMemoryFrom(__FCBaseData* pSource) override
21165 {
21166 memcpy(&_textrepeat, ((FCTextRepeat*)pSource)->_GetTextRepeat(), sizeof(_textrepeat));
21167 _datablock = &_textrepeat;
21168 _loadedsize = sizeof(_textrepeat);
21169 }
21170
21171 __FCBaseData* CreateObject() override { return new FCTextRepeat(); }
21172
21173#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21174public:
21175 const char* ClassName() const override { return "FCTextRepeat"; }
21176 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_TEXTREPEAT; }
21177
21178#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21185 void* _GetTextRepeat() { return &_textrepeat; }
21186#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21187
21205
21242
21243
21268
21274 {
21275 memset(&_textrepeat, 0, sizeof(_textrepeat));
21276 _datablock = &_textrepeat;
21277 _loadedsize = sizeof(_textrepeat);
21278 }
21279
21287
21288
21295
21296#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
21298 luabridge::RefCountedPtr<FCTextRepeatDef> CreateTextRepeatDef_GC()
21299 { return makeLuaSharedPtr(CreateTextRepeatDef()); }
21300#endif
21301
21315
21316#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
21318 luabridge::RefCountedPtr<FCSeparatePlacements> CreateSeparatePlacements_GC()
21319 { return makeLuaSharedPtr(CreateSeparatePlacements()); }
21320#endif
21321
21331 twobyte GetID() const { return _textrepeat.repnum; }
21332
21342 void SetID(twobyte id) { _textrepeat.repnum = id; }
21343
21349 Evpu16 GetHorizontalPos() const { return _textrepeat.horzPos; }
21350
21356 void SetHorizontalPos(Evpu32 value) { _textrepeat.horzPos = value; }
21357
21362 Evpu16 GetVerticalPos() const { return _textrepeat.vertPos; }
21363
21368 void SetVerticalPos(Evpu32 value) { _textrepeat.vertPos = value; }
21369
21375 int GetTarget() const { return _textrepeat.target; }
21376
21382 void SetTarget(int value) { _textrepeat.target = value; }
21383
21388 bool GetAutoUpdateTarget() const { return GetBitFlag(_textrepeat.flag, TXTRPT_AUTOUPDATE); }
21389
21394 void SetAutoUpdateTarget(bool state) { Set16BitFlag(&_textrepeat.flag, TXTRPT_AUTOUPDATE, state); }
21395
21404 {
21405 return GetBitFlag(_textrepeat.flag, TXTRPT_INDIVPLAC);
21406 }
21407
21416 {
21417 Set16BitFlag(&_textrepeat.flag, TXTRPT_INDIVPLAC, state);
21418 }
21419
21427 bool GetVisible() const
21428 {
21429 return !GetBitFlag(_textrepeat.flag, 0x4000); // this is a reverse bit
21430 }
21431
21436 void SetVisible(bool state)
21437 {
21438 Set16BitFlag(&_textrepeat.flag, 0x4000, !state);
21439 }
21440
21441
21448#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21450#else
21451 int
21452#endif
21453 GetShowMode() const;
21454
21461 void SetShowMode(
21462#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21464#else
21465 int
21466#endif
21467 mode);
21468
21475 twobyte GetStaffListID() const { return _textrepeat.staffList; }
21476
21481 void SetStaffListID(twobyte list)
21482 {
21483 if (list < 0) return;
21484 _textrepeat.staffList = list;
21485 Set16BitFlag(&_textrepeat.flag, TXTRPT_TOPSTAFFONLY, false);
21486 }
21487
21492 twobyte GetTotalPasses() const { return _textrepeat.actuate; }
21493
21498 void SetTotalPasses(twobyte totalpasses)
21499 {
21500 _textrepeat.actuate = totalpasses;
21501 }
21502
21503
21508 bool GetJumpIfIgnore() const { return GetBitFlag(_textrepeat.flag, TXTRPT_JMPIGNORE); }
21509
21514 void SetJumpIfIgnore(bool state) { Set16BitFlag(&_textrepeat.flag, TXTRPT_JMPIGNORE, state); }
21515
21516
21521 bool GetResetOnRepeat() const { return GetBitFlag(_textrepeat.flag, TXTRPT_CLRonCHANGE); }
21522
21527 void SetResetOnRepeat(bool state) { Set16BitFlag(&_textrepeat.flag, TXTRPT_CLRonCHANGE, state); }
21528
21529
21537#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21539#else
21540 int
21541#endif
21542 GetTargetTrigger() const;
21543
21554 void SetTargetTrigger(
21555#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21557#else
21558 int
21559#endif
21560 mode);
21561
21562
21571#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21573#else
21574 int
21575#endif
21576 GetAction() const;
21577
21586 void SetAction(
21587#ifndef PDK_FRAMEWORK_LUAFRIENDLY
21589#else
21590 int
21591#endif
21592 mode);
21593
21594
21595#ifdef PDK_FRAMEWORK_DEBUG
21596 void DebugDump() override
21597 {
21599 DebugOutHex("FCTextRepeat:flag: ", _textrepeat.flag);
21600 }
21601#endif
21602};
21603
21604
21610{
21611private:
21612#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21614 EDTExecutableShapeDef _executableshapedef;
21615
21616protected:
21617 EXTAG Tag() const override { return ot_ExecutableShapeDef; }
21618 int DataSizeLoad() const override { return sizeof(EDTExecutableShapeDef); }
21619 void* Allocate() override { return (void*) &_executableshapedef; }
21620
21625 void CloneMemoryFrom(__FCBaseData* pSource) override
21626 {
21627 memcpy(&_executableshapedef, ((FCExecutableShapeDef*)pSource)->_GetExecutableShapeDef(), sizeof(_executableshapedef));
21628 _datablock = &_executableshapedef;
21629 _loadedsize = sizeof(_executableshapedef);
21630 }
21631
21636 bool LoadNext() override
21637 {
21638 EDataID olddataID = _dataid;
21639 _dataid.other.cmper ++;
21640 if (LoadDataBlock()) return true;
21641 _dataid = olddataID;
21642 return false;
21643 }
21644
21645 __FCBaseData* CreateObject() override { return new FCExecutableShapeDef(); }
21646
21647#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21648public:
21649 const char* ClassName() const override { return "FCExecutableShapeDef"; }
21650 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_EXECUTABLESHAPEDEF; }
21651
21652#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21659 void* _GetExecutableShapeDef() { return &_executableshapedef; }
21660
21661#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21662
21665
21668 twobyte GetShapeID() { return _executableshapedef.shapeID; }
21669
21672 void SetShapeID(twobyte shapeID) { _executableshapedef.shapeID = shapeID; }
21673
21674#ifdef PDK_FRAMEWORK_DEBUG
21675 void DebugDump() override
21676 {
21678 }
21679#endif
21680
21681};
21682
21683
21697{
21698#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21699 private:
21701 EDTChordSuffix _chordsuffixold;
21702#if FXT_VERSION >= FINALEVERSION_2012
21703 EDTChordSuffix2012 _chordsuffix2012;
21704#endif
21705protected:
21707 bool _Use2012Version() const;
21708
21709 EXTAG Tag() const override { return ot_ChordSuffix; }
21710 int DataSizeLoad() const override
21711 {
21712#if FXT_VERSION >= FINALEVERSION_2012
21713 if (_Use2012Version()) return sizeof(EDTChordSuffix2012);
21714#endif
21715 return sizeof(EDTChordSuffix);
21716 }
21717 void* Allocate() override
21718 {
21719#if FXT_VERSION >= FINALEVERSION_2012
21720 if (_Use2012Version()) return (void*) &_chordsuffix2012;
21721#endif
21722 return (void*) &_chordsuffixold;
21723 }
21724 EVERSION EnigmaVersion() const override
21725 {
21726 if (_Use2012Version()) return FINALEVERSION_2012;
21727 return FINALEVERSION_2010;
21728 }
21729
21734 void CloneMemoryFrom(__FCBaseData* pSource) override;
21735
21736 __FCBaseData* CreateObject() override { return new FCChordSuffixElement(); }
21737#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21738public:
21739 const char* ClassName() const override { return "FCChordSuffixElement"; }
21740 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_CHORDSUFFIXELEMENT; }
21741
21742#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21749 void* _GetDataPtr()
21750 {
21751#if FXT_VERSION >= FINALEVERSION_2012
21752 if (_Use2012Version()) return &_chordsuffix2012;
21753#endif
21754 return &_chordsuffixold;
21755 }
21756#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
21757
21762
21767 void GetFontInfo(FCFontInfo* pFontInfo);
21768
21773 void SetFontInfo(FCFontInfo* pFontInfo);
21774
21779 eUniChar32 GetSymbol() const;
21780
21785 void SetSymbol(eUniChar32 symbol);
21786
21791 bool GetNumberRepresentation() const;
21792
21797 void SetNumberRepresentation(bool state);
21798
21803 bool GetPrefixFlat() const;
21804
21809 void SetPrefixFlat(bool state);
21810
21815 bool GetPrefixSharp() const;
21816
21821 void SetPrefixSharp(bool state);
21822
21827 bool GetPrefixPlus() const;
21828
21833 void SetPrefixPlus(bool state);
21834
21839 bool GetPrefixMinus() const;
21840
21845 void SetPrefixMinus(bool state);
21846
21851 twobyte GetHorizontalOffset() const;
21852
21857 void SetHorizontalOffset(twobyte value);
21858
21863 twobyte GetVerticalOffset() const;
21864
21869 void SetVerticalOffset(twobyte value);
21870
21871#ifdef PDK_FRAMEWORK_DEBUG
21872 void DebugDump() override
21873 {
21875 }
21876#endif
21877};
21878
21879
21880#if FXT_VERSION >= FINALEVERSION_2012
21881
21882#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21883
21884// the conversion to Unicode names may have happened before Finale 25, but
21885// we only support 64-bit Finale in 2023, so no extra effort is going into
21886// supporting 32-bit versions.
21887#if FXT_VERSION >= FINALEVERSION_25
21888const EXTAG __ot_FRETSTYLE = MAKEEXTAG(MAKETAG(edMultiInciOther,31), 'f','t');
21889const int __MAX_FRET_NAME_LEN = 48 * sizeof(eUniChar16); // Max number of characters of names of
21890const int __MAX_FRET_NUM_TEXT_LEN = 24 * sizeof(eUniChar16);
21891#else
21892const EXTAG __ot_FRETSTYLE = MAKEEXTAG(MAKETAG(edMultiInciOther,13), 'f','t');
21893const int __MAX_FRET_NAME_LEN = 48; // Max number of characters of names of
21894const int __MAX_FRET_NUM_TEXT_LEN = 24;
21895#endif
21896
21897
21898#include "pragma_align_begin.h"
21899struct __FCFretStyle // ot_FRETSTYLE (1 logical incidences, 14 physical incidences (0..13))
21900 // cmper comes from EDTChord2010::fbStyleID
21901{
21902 // start of physical incident 0 (0 based)
21903 tbool showLastFret; // Show the last fret when drawing fretboards
21904 tbool rotate; // Rotate the diagram so the nut is on the left
21905 tbool fingNumWhite; // Draw fingering numbers white.
21906
21907 // CMPERs of the various shapes that can be drawn on the fretboard diagram. When these
21908 // are zero, the hardcoded shapes will be used. (Hardcoded shapes are designed to look
21909 // like the Seville Font.)
21910
21911 eShape fingStrShapeID; // ID of ot_SHAPEDEF record used for drawing
21912 // a fingered (closed) string shape
21913 eShape openStrShapeID; // ID of ot_SHAPEDEF record used for drawing
21914 // an open string shape
21915 eShape muteStrShapeID; // ID of ot_SHAPEDEF record used for drawing
21916 // a muted string shape
21917 // start of physical incident 1 (0 based)
21918 eShape barreShapeID; // ID of ot_SHAPEDEF record used for drawing
21919 // the fretboard barre shape
21920 eShape customShapeID; // ID of the ot_SHAPEDEF record used for
21921 // drawing the user defined shape
21922 utwobyte defNumFrets; // The number of frets to show by default in this style
21923
21924 // Following are the high and low twobyte fields that, together, designate various
21925 // Efix32 values for the fretboard style.
21926
21927 twobyte stringGapHi; // High and low twobyte values for
21928 twobyte stringGapLo; // Efix32 string gap (right edge to right edge)
21929
21930 twobyte fretGapHi; // High and low twobyte values for
21931 // start of physical incident 2 (0 based)
21932 twobyte fretGapLo; // Efix32 fret gap (bottom edge to bottom edge)
21933
21934 twobyte stringWidthHi; // High and low twobyte values for
21935 twobyte stringWidthLo; // Efix32 width of strings
21936
21937 twobyte fretWidthHi; // High and low twobyte values for
21938 twobyte fretWidthLo; // Efix32 width of frets
21939
21940 twobyte nutWidthHi; // High and low twobyte values for
21941 // start of physical incident 3 (0 based)
21942 twobyte nutWidthLo; // Efix32 width of the nut
21943
21944 twobyte vertTextOffHi; // High and low twobyte values for
21945 twobyte vertTextOffLo; // Efix32 vert offset of fret number text
21946
21947 twobyte horzTextOffHi; // High and low twobyte values for
21948 twobyte horzTextOffLo; // Efix32 horz offset of fret number text
21949
21950 twobyte horzHandleOffHi; // High and low twobyte values for
21951 // start of physical incident 4 (0 based)
21952 twobyte horzHandleOffLo; // Efix32 horz offset of the fretboard's handle
21953
21954 twobyte vertHandleOffHi; // High and low twobyte values for
21955 twobyte vertHandleOffLo; // Efix32 vert offset of the fretboard's handle
21956
21957 twobyte whiteoutHi; // High and low twobyte values for
21958 twobyte whiteoutLo; // Efix32 whiteout of strings for fingering numbers
21959
21960 // Font information
21961
21962 EFONTID fretNumFontID; // Font ID, size and EFX data for the
21963 // start of physical incident 5 (0 based)
21964 FontPoints16 fretNumFontSize; // fret number font. (Designates which
21965 FLAG_16 fretNumFontEfx; // fret is the first shown in the diagram
21966
21967 EFONTID fingNumFontID; // Font ID, size and EFX data for the
21968 FontPoints16 fingNumFontSize; // fingering numbers font used in the.
21969 FLAG_16 fingNumFontEfx; // fretboard diagrams
21970
21971 // Fingering number offsets
21972 twobyte horzFingNumOffHi; // High and low twobyte values for
21973 // start of physical incident 6 (0 based)
21974 twobyte horzFingNumOffLo; // Efix32 horizontal finger number offset
21975
21976 twobyte vertFingNumOffHi; // High and low twobyte values for
21977 twobyte vertFingNumOffLo; // Efix32 vertical finger number offset
21978
21979 twobyte pad[3]; // Unused--padding to make size mult of OTSIZE
21980
21981#if FXT_VERSION >= FINALEVERSION_25
21982 // start of physical incident 7 (0 based)
21983 eUniChar16 name[__MAX_FRET_NAME_LEN]; // The name of the fretboard style
21984
21985 // start of physical incident 23 (0 based)
21986 eUniChar16 fretNumText[__MAX_FRET_NUM_TEXT_LEN];
21987 // The text to display after the
21988 // fret number (e.g., 'fr' or 'fret')
21989 // end of physical incident 30 (0 based)
21990#else
21991 // start of physical incident 7 (0 based)
21992 ECHAR name[__MAX_FRET_NAME_LEN]; // The name of the fretboard style
21993
21994 // start of physical incident 11 (0 based)
21995 ECHAR fretNumText[__MAX_FRET_NUM_TEXT_LEN];
21996 // The text to display after the
21997 // fret number (e.g., 'fr' or 'fret')
21998 // end of physical incident 12 (0 based)
21999#endif
22000};
22001#include "pragma_align_end.h"
22002
22003#endif /* #ifndef DOXYGEN_SHOULD_IGNORE_THIS */
22004
22005
22015{
22016private:
22017#ifndef DOXYGEN_SHOULD_IGNORE_THIS
22018 /* The data storage for the object. */
22019 __FCFretStyle _fretstyledef;
22020
22021protected:
22022 EXTAG Tag() const override { return __ot_FRETSTYLE; }
22023 int DataSizeLoad() const override { return sizeof(__FCFretStyle); }
22024 void* Allocate() override { return (void*)&_fretstyledef; }
22025 EVERSION EnigmaVersion() const override { return FINALEVERSION_2010; }
22026
22031 void CloneMemoryFrom(__FCBaseData* pSource) override
22032 {
22033 memcpy(&_fretstyledef, ((FCFretboardStyleDef*)pSource)->_GetFretStyleDef(), sizeof(_fretstyledef));
22034 _datablock = &_fretstyledef;
22035 _loadedsize = sizeof(_fretstyledef);
22036 }
22037
22042 bool LoadNext() override
22043 {
22044 EDataID olddataID = _dataid;
22045 _dataid.other.cmper++;
22046 if (LoadDataBlock()) return true;
22047 _dataid = olddataID;
22048 return false;
22049 }
22050
22051 __FCBaseData* CreateObject() override { return new FCFretboardStyleDef(); }
22052
22053#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
22054public:
22055 const char* ClassName() const override { return "FCFretboardStyleDef"; }
22056 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_FRETBOARDSTYLEDEF; }
22057
22058#ifndef DOXYGEN_SHOULD_IGNORE_THIS
22065 void* _GetFretStyleDef() { return &_fretstyledef; }
22066
22067#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
22068
22074 {
22075 memset(&_fretstyledef, 0, sizeof(_fretstyledef));
22076 _datablock = &_fretstyledef;
22077 _loadedsize = sizeof(_fretstyledef);
22078 }
22079
22080 // *******
22081 // GETTERS
22082 // *******
22083
22090 void GetName(FCString* pString) const
22091 {
22092 if (!pString) return;
22093#if FXT_VERSION >= FINALEVERSION_25
22094 pString->SetUnicodeString(_fretstyledef.name);
22095#else
22096 pString->SetCString(_fretstyledef.name);
22097#endif
22098 }
22099
22104 Efix32 GetStringSpacing() const { return MAKELONG(_fretstyledef.stringGapLo, _fretstyledef.stringGapHi); }
22105
22110 Efix32 GetStringThickness() const { return MAKELONG(_fretstyledef.stringWidthLo, _fretstyledef.stringWidthHi); }
22111
22116 Efix32 GetFretSpacing() const { return MAKELONG(_fretstyledef.fretGapLo, _fretstyledef.fretGapHi); }
22117
22122 Efix32 GetFretThickness() const { return MAKELONG(_fretstyledef.fretWidthLo, _fretstyledef.fretWidthHi); }
22123
22128 Efix32 GetNutThickness() const { return MAKELONG(_fretstyledef.nutWidthLo, _fretstyledef.nutWidthHi); }
22129
22134 Efix32 GetHorizontalFingeringOffset() const { return MAKELONG(_fretstyledef.horzFingNumOffLo, _fretstyledef.horzFingNumOffHi); }
22135
22140 Efix32 GetVerticalFingeringOffset() const { return MAKELONG(_fretstyledef.vertFingNumOffLo, _fretstyledef.vertFingNumOffHi); }
22141
22146 Efix32 GetFingeringWhiteout() const { return MAKELONG(_fretstyledef.whiteoutLo, _fretstyledef.whiteoutHi); }
22147
22152 Efix32 GetHorizontalHandleOffset() const { return MAKELONG(_fretstyledef.horzHandleOffLo, _fretstyledef.horzHandleOffHi); }
22153
22158 Efix32 GetVerticalHandleOffset() const { return MAKELONG(_fretstyledef.vertHandleOffLo, _fretstyledef.vertHandleOffHi); }
22159
22166 void GetFretNumberText(FCString* pString) const
22167 {
22168 if (!pString) return;
22169#if FXT_VERSION >= FINALEVERSION_25
22170 pString->SetUnicodeString(_fretstyledef.fretNumText);
22171#else
22172 pString->SetCString(_fretstyledef.fretNumText);
22173#endif
22174 }
22175
22180 Efix32 GetHorizontalFretNumberOffset() const { return MAKELONG(_fretstyledef.horzTextOffLo, _fretstyledef.horzTextOffHi); }
22181
22186 Efix32 GetVerticalFretNumberOffset() const { return MAKELONG(_fretstyledef.vertTextOffLo, _fretstyledef.vertTextOffHi); }
22187
22192 int GetFretCountDefault() const { return _fretstyledef.defNumFrets; }
22193
22198 bool GetShowLastFret() const { return _fretstyledef.showLastFret != 0; }
22199
22206 bool GetRotate() const { return _fretstyledef.rotate != 0; }
22207
22212 bool GetDrawFingeringWhite() const { return _fretstyledef.fingNumWhite != 0; }
22213
22218 twobyte GetFingeredShapeID() const
22219 {
22220 return _fretstyledef.fingStrShapeID;
22221 }
22222
22227 twobyte GetOpenStringShapeID() const
22228 {
22229 return _fretstyledef.openStrShapeID;
22230 }
22231
22236 twobyte GetMuteStringShapeID() const
22237 {
22238 return _fretstyledef.muteStrShapeID;
22239 }
22240
22245 twobyte GetBarreShapeID() const
22246 {
22247 return _fretstyledef.barreShapeID;
22248 }
22249
22254 twobyte GetCustomShapeID() const
22255 {
22256 return _fretstyledef.customShapeID;
22257 }
22258
22266 {
22267 if (!pFontInfo) return;
22268 pFontInfo->SetNameByID(_fretstyledef.fingNumFontID);
22269 pFontInfo->SetSize(_fretstyledef.fingNumFontSize);
22270 pFontInfo->SetEnigmaStyles(_fretstyledef.fingNumFontEfx);
22271 }
22272
22280 {
22281 if (!pFontInfo) return;
22282 pFontInfo->SetNameByID(_fretstyledef.fretNumFontID);
22283 pFontInfo->SetSize(_fretstyledef.fretNumFontSize);
22284 pFontInfo->SetEnigmaStyles(_fretstyledef.fretNumFontEfx);
22285 }
22286
22287 // *******
22288 // SETTERS
22289 // *******
22290
22297 void SetName(const FCString* pString)
22298 {
22299 if (!pString) return;
22300 memset(&_fretstyledef.name, 0, sizeof(_fretstyledef.name));
22301#if FXT_VERSION >= FINALEVERSION_25
22302 pString->CopyToUnicodeBuffer(_fretstyledef.name, DIM(_fretstyledef.name));
22303#else
22304 strncpy(_fretstyledef.name, pString->GetCString(), sizeof(_fretstyledef.name) - 1);
22305#endif
22306 }
22307
22312 void SetStringSpacing(Efix32 value)
22313 {
22314 _fretstyledef.stringGapLo = LOWORD(value);
22315 _fretstyledef.stringGapHi = HIWORD(value);
22316 }
22317
22322 void SetStringThickness(Efix32 value)
22323 {
22324 _fretstyledef.stringWidthLo = LOWORD(value);
22325 _fretstyledef.stringWidthHi = HIWORD(value);
22326 }
22327
22332 void SetFretSpacing(Efix32 value)
22333 {
22334 _fretstyledef.fretGapLo = LOWORD(value);
22335 _fretstyledef.fretGapHi = HIWORD(value);
22336 }
22337
22342 void SetFretThickness(Efix32 value)
22343 {
22344 _fretstyledef.fretWidthLo = LOWORD(value);
22345 _fretstyledef.fretWidthHi = HIWORD(value);
22346 }
22347
22352 void SetNutThickness(Efix32 value)
22353 {
22354 _fretstyledef.nutWidthLo = LOWORD(value);
22355 _fretstyledef.nutWidthHi = HIWORD(value);
22356 }
22357
22363 {
22364 _fretstyledef.horzFingNumOffLo = LOWORD(value);
22365 _fretstyledef.horzFingNumOffHi = HIWORD(value);
22366 }
22367
22373 {
22374 _fretstyledef.vertFingNumOffLo = LOWORD(value);
22375 _fretstyledef.vertFingNumOffHi = HIWORD(value);
22376 }
22377
22382 void SetFingeringWhiteout(Efix32 value)
22383 {
22384 _fretstyledef.whiteoutLo = LOWORD(value);
22385 _fretstyledef.whiteoutHi = HIWORD(value);
22386 }
22387
22392 void SetHorizontalHandleOffset(Efix32 value)
22393 {
22394 _fretstyledef.horzHandleOffLo = LOWORD(value);
22395 _fretstyledef.horzHandleOffHi = HIWORD(value);
22396 }
22397
22402 void SetVerticalHandleOffset(Efix32 value)
22403 {
22404 _fretstyledef.vertHandleOffLo = LOWORD(value);
22405 _fretstyledef.vertHandleOffHi = HIWORD(value);
22406 }
22407
22414 void SetFretNumberText(const FCString* pString)
22415 {
22416 if (!pString) return;
22417 memset(&_fretstyledef.fretNumText, 0, sizeof(_fretstyledef.fretNumText));
22418#if FXT_VERSION >= FINALEVERSION_25
22419 pString->CopyToUnicodeBuffer(_fretstyledef.fretNumText, DIM(_fretstyledef.fretNumText));
22420#else
22421 strncpy(_fretstyledef.fretNumText, pString->GetCString(), sizeof(_fretstyledef.fretNumText) - 1);
22422#endif
22423 }
22424
22430 {
22431 _fretstyledef.horzTextOffLo = LOWORD(value);
22432 _fretstyledef.horzTextOffHi = HIWORD(value);
22433 }
22434
22440 {
22441 _fretstyledef.vertTextOffLo = LOWORD(value);
22442 _fretstyledef.vertTextOffHi = HIWORD(value);
22443 }
22444
22449 void SetFretCountDefault(int value) { _fretstyledef.defNumFrets = value; }
22450
22455 void SetShowLastFret(bool state) { _fretstyledef.showLastFret = state; }
22456
22463 void SetRotate(bool state) { _fretstyledef.rotate = state; }
22464
22469 void SetDrawFingeringWhite(bool state) { _fretstyledef.fingNumWhite = state; }
22470
22475 void SetFingeredShapeID(twobyte value)
22476 {
22477 _fretstyledef.fingStrShapeID = value;
22478 }
22479
22484 void SetOpenStringShapeID(twobyte value)
22485 {
22486 _fretstyledef.openStrShapeID = value;
22487 }
22488
22493 void SetMuteStringShapeID(twobyte value)
22494 {
22495 _fretstyledef.muteStrShapeID = value;
22496 }
22497
22502 void SetBarreShapeID(twobyte value)
22503 {
22504 _fretstyledef.barreShapeID = value;
22505 }
22506
22511 void SetCustomShapeID(twobyte value)
22512 {
22513 _fretstyledef.customShapeID = value;
22514 }
22515
22523 {
22524 if (!pFontInfo) return;
22525 _fretstyledef.fingNumFontID = pFontInfo->GetIDByName();
22526 _fretstyledef.fingNumFontSize = pFontInfo->GetSize();
22527 _fretstyledef.fingNumFontEfx = pFontInfo->GetEnigmaStyles();
22528 }
22529
22537 {
22538 if (!pFontInfo) return;
22539 _fretstyledef.fretNumFontID = pFontInfo->GetIDByName();
22540 _fretstyledef.fretNumFontSize = pFontInfo->GetSize();
22541 _fretstyledef.fretNumFontEfx = pFontInfo->GetEnigmaStyles();
22542 }
22543
22544#ifdef PDK_FRAMEWORK_DEBUG
22545 void DebugDump() override
22546 {
22548 }
22549#endif
22550
22551};
22552
22553#endif // FXT_VERSION >= FINALEVERSION_2012
22554
22555
22556#if FXT_VERSION >= FINALEVERSION_2012
22557
22560{
22561#ifndef DOXYGEN_SHOULD_IGNORE_THIS
22562 private:
22564 EDTFretGroup2012 _fretgroup;
22565
22566protected:
22567 EXTAG Tag() const override { return otx_FretGroup; }
22568 int DataSizeLoad() const override { return sizeof(EDTFretGroup2012); }
22569 void* Allocate() override { return (void*) &_fretgroup; }
22570 EVERSION EnigmaVersion() const override { return FINALEVERSION_2012; }
22571
22576 void CloneMemoryFrom(__FCBaseData* pSource) override
22577 {
22578 memcpy(&_fretgroup, ((FCFretboardGroupDef*)pSource)->_GetDataPtr(), sizeof(_fretgroup));
22579 _datablock = &_fretgroup;
22580 _loadedsize = sizeof(_fretgroup);
22581 }
22582
22583 __FCBaseData* CreateObject() override { return new FCFretboardGroupDef(); }
22584#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
22585public:
22586 const char* ClassName() const override { return "FCFretboardGroupDef"; }
22587 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_FRETBOARDGROUPDEF; }
22588
22589#ifndef DOXYGEN_SHOULD_IGNORE_THIS
22596 void* _GetDataPtr() { return &_fretgroup; }
22597#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
22598
22601
22602 bool LoadFirst() override
22603 {
22604 return Load(1, 0);
22605 }
22606
22609 twobyte _GetInci() { return _dataid.other.inci; }
22610
22618
22619#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
22621 luabridge::RefCountedPtr<FCFretInstrumentDef> CreateFretInstrumentDef_GC()
22622 { return makeLuaSharedPtr(CreateFretInstrumentDef()); }
22623#endif
22624
22632
22633#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
22635 luabridge::RefCountedPtr<FCFretboardGroup> CreateFretboardGroup_GC()
22636 { return makeLuaSharedPtr(CreateFretboardGroup()); }
22637#endif
22638
22643 CMPER GetFretInstrumentID() const { return _fretgroup.fretInstID; }
22644
22649 void SetFretInstrumentID(CMPER value) { _fretgroup.fretInstID = value; }
22650
22655 void GetName(FCString* pString) const { pString->SetUnicodeString(_fretgroup.name); }
22656
22661 void SetName(const FCString* pString) { pString->CopyToUnicodeBuffer(_fretgroup.name, DIM(_fretgroup.name)); }
22662
22663#ifdef PDK_FRAMEWORK_DEBUG
22664 void DebugDump() override
22665 {
22667 }
22668#endif
22669};
22670
22671#endif
22672
22673
22674
22688{
22689private:
22690#ifndef DOXYGEN_SHOULD_IGNORE_THIS
22691 /* Data is dynamically stored! */
22692
22693protected:
22694 EXTAG Tag() const override { return ot_EndingRepeat; }
22695
22696 void _AllocateMemory(int size);
22697
22698 int DataSizeLoad() const override;
22699 int DataSizeSave() const override;
22700 void* Allocate() override;
22701 void Deallocate() override;
22702 bool IsDynamicSize() override { return true; }
22703
22704 __FCBaseData* CreateObject() override { return new FCEndingRepeat(); }
22705#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
22706public:
22707
22708 const char* ClassName() const override { return "FCEndingRepeat"; }
22709 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_ENDINGREPEAT; }
22710
22711#ifndef DOXYGEN_SHOULD_IGNORE_THIS
22712
22716 EDTEndingRepeat2005* _TypeCast() const { return (EDTEndingRepeat2005*) _datablock; }
22717#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
22718
22724 {
22725 _AllocateMemory(sizeof(EDTEndingRepeat2005));
22726 }
22727
22733 bool DeepDeleteData() override;
22734
22740 bool DeepSaveAs(CMPER itemno) override;
22741
22748 twobyte GetStaffListID() const { return _TypeCast()->staffList; }
22749
22754 bool GetSkipOnIgnore() const
22755 {
22756 return GetBitFlag(_TypeCast()->flag, EndRepeat_JMPIGNORE);
22757 }
22758
22763 eMeas GetTargetMeasure() const
22764 {
22765 return _TypeCast()->nextend;
22766 }
22767
22773 {
22774 return GetBitFlag(_TypeCast()->flag, EndRepeat_INDIVPLAC);
22775 }
22776
22784 bool GetVisible() const
22785 {
22786 return !GetBitFlag(_TypeCast()->flag, 0x0004); // this is a reverse bit
22787 }
22788
22794 {
22795 return _TypeCast()->line2;
22796 }
22797
22803 {
22804 return _TypeCast()->pos;
22805 }
22806
22812 {
22813 return _TypeCast()->line;
22814 }
22815
22821 {
22822 return _TypeCast()->pos2;
22823 }
22824
22830 {
22831 return _TypeCast()->endline;
22832 }
22833
22839 {
22840 return _TypeCast()->textpos;
22841 }
22842
22848 {
22849 return _TypeCast()->textline;
22850 }
22851
22858#ifndef PDK_FRAMEWORK_LUAFRIENDLY
22860#else
22861 int
22862#endif
22863 GetShowMode() const;
22864
22869 int GetPassNumbersCount() const { return _TypeCast()->numTotalPasses; }
22870
22879#ifndef PDK_FRAMEWORK_LUAFRIENDLY
22881#else
22882int
22883#endif
22885 {
22886 switch (_TypeCast()->flag & EndRepeat_ACTION_BITS)
22887 {
22888 case 0:
22890 case 0x10:
22892 case 0x20:
22894 case 0x50:
22896 default:
22898 }
22899 }
22900
22905 void SetStaffListID(twobyte list)
22906 {
22907 if (list < 0) return;
22908 _TypeCast()->staffList = list;
22909 Set16BitFlag(&_TypeCast()->flag, EndRepeat_TOPSTAFFONLY, false);
22910 }
22911
22916 void SetSkipOnIgnore(bool state)
22917 {
22918 Set16BitFlag(&_TypeCast()->flag, EndRepeat_JMPIGNORE, state);
22919 }
22920
22926 void SetTargetMeasure(eMeas measure)
22927 {
22928 _TypeCast()->nextend = measure;
22929 }
22930
22936 {
22937 Set16BitFlag(&_TypeCast()->flag, EndRepeat_INDIVPLAC, state);
22938 }
22939
22944 void SetVisible(bool state)
22945 {
22946 Set16BitFlag(&_TypeCast()->flag, 0x004, !state);
22947 }
22948
22953 void SetVerticalTopBracketPosition(Evpu16 position)
22954 {
22955 _TypeCast()->line2 = position;
22956 }
22957
22963 {
22964 _TypeCast()->pos = position;
22965 }
22966
22972 {
22973 _TypeCast()->line = position;
22974 }
22975
22981 {
22982 _TypeCast()->pos2 = position;
22983 }
22984
22990 {
22991 _TypeCast()->endline = position;
22992 }
22993
22998 void SetHorizontalTextPosition(Evpu16 position)
22999 {
23000 _TypeCast()->textpos = position;
23001 }
23002
23007 void SetVerticalTextPosition(Evpu16 position)
23008 {
23009 _TypeCast()->textline = position;
23010 }
23011
23012
23019 void SetShowMode(
23020#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23022#else
23023 int
23024#endif
23025 mode);
23026
23027
23037
23038#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
23040 luabridge::RefCountedPtr<FCString> CreateTextString_GC()
23041 { return makeLuaSharedPtr(CreateTextString()); }
23042#endif
23043
23054 bool SaveTextString(FCString* pString);
23055
23064 bool GetPassNumbers(FCNumbers* pNumbers);
23065
23077 bool SetPassNumbers(FCNumbers* pNumbers);
23078
23087#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23089#else
23090int
23091#endif
23092 value
23093 )
23094 {
23095 switch (value)
23096 {
23098 _TypeCast()->flag &= ~EndRepeat_ACTION_BITS;
23099 _TypeCast()->flag |= 0x10;
23100 break;
23102 _TypeCast()->flag &= ~EndRepeat_ACTION_BITS;
23103 _TypeCast()->flag |= 0x20;
23104 break;
23106 _TypeCast()->flag &= ~EndRepeat_ACTION_BITS;
23107 _TypeCast()->flag |= 0x50;
23108 break;
23110 _TypeCast()->flag &= ~EndRepeat_ACTION_BITS;
23111 break;
23115 break;
23116 }
23117 }
23118
23119
23135
23136#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
23138 luabridge::RefCountedPtr<FCSeparatePlacements> CreateSeparatePlacements_GC()
23139 { return makeLuaSharedPtr(CreateSeparatePlacements()); }
23140#endif
23141
23157
23158#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
23160 luabridge::RefCountedPtr<FCSeparatePlacements> CreateTextSeparatePlacements_GC()
23161 { return makeLuaSharedPtr(CreateTextSeparatePlacements()); }
23162#endif
23163};
23164
23165
23176{
23177private:
23178#ifndef DOXYGEN_SHOULD_IGNORE_THIS
23183 EDTBackwardRepeat2005 _backwardrepeat;
23184
23185protected:
23186 EXTAG Tag() const override { return ot_BackwardRepeat; }
23187 int DataSizeLoad() const override { return sizeof(EDTBackwardRepeat2005); }
23188 void* Allocate() override { return (void*) &_backwardrepeat; }
23189
23194 void CloneMemoryFrom(__FCBaseData* pSource) override
23195 {
23196 memcpy(&_backwardrepeat, ((FCBackwardRepeat*)pSource)->_GetBackwardRepeat(), sizeof(_backwardrepeat));
23197 _datablock = &_backwardrepeat;
23198 _loadedsize = sizeof(_backwardrepeat);
23199 }
23200
23201 __FCBaseData* CreateObject() override { return new FCBackwardRepeat(); }
23202#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
23203public:
23204
23205 const char* ClassName() const override { return "FCBackwardRepeat"; }
23206 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_BACKWARDREPEAT; }
23207
23208#ifndef DOXYGEN_SHOULD_IGNORE_THIS
23215 void* _GetBackwardRepeat() { return &_backwardrepeat; }
23216#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
23217
23223 {
23224 memset(&_backwardrepeat, 0, sizeof(_backwardrepeat));
23225 _datablock = &_backwardrepeat;
23226 _loadedsize = sizeof(_backwardrepeat);
23227 }
23228
23229
23234 eMeas GetTargetMeasure() const
23235 {
23236 return _backwardrepeat.target;
23237 }
23238
23244 {
23245 return GetBitFlag(_backwardrepeat.flag, BackRepeat_INDIVPLAC);
23246 }
23247
23255 bool GetVisible() const
23256 {
23257 return !GetBitFlag(_backwardrepeat.flag, 0x4000); // this is a reverse bit
23258 }
23259
23265 twobyte GetTotalPasses() const
23266 {
23267 return _backwardrepeat.actuate;
23268 }
23269
23275 {
23276 return _backwardrepeat.line2;
23277 }
23278
23284 {
23285 return _backwardrepeat.line1;
23286 }
23287
23293 {
23294 return _backwardrepeat.pos1;
23295 }
23296
23302 {
23303 return _backwardrepeat.pos2;
23304 }
23305
23310 twobyte GetStaffListID() const
23311 {
23312 return _backwardrepeat.staffList;
23313 }
23314
23321#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23323#else
23324 int
23325#endif
23327 {
23328 if (GetBitFlag(_backwardrepeat.flag, BackRepeat_TOPSTAFFONLY)) return FCTextRepeat::REPSHOW_TOPSTAFF;
23329 if (_backwardrepeat.staffList) return FCTextRepeat::REPSHOW_STAFFLIST;
23331 }
23332
23340#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23342#else
23343 int
23344#endif
23345 mode)
23346 {
23347 switch (mode)
23348 {
23350 Set16BitFlag(&_backwardrepeat.flag, BackRepeat_TOPSTAFFONLY, true);
23351 _backwardrepeat.staffList = 0;
23352 break;
23354 Set16BitFlag(&_backwardrepeat.flag, BackRepeat_TOPSTAFFONLY, false);
23355 if (!_backwardrepeat.staffList) _backwardrepeat.staffList = 1;
23356 break;
23358 Set16BitFlag(&_backwardrepeat.flag, BackRepeat_TOPSTAFFONLY, false);
23359 _backwardrepeat.staffList = 0;
23360 break;
23361 }
23362 }
23363
23364
23369 void SetTargetMeasure(eMeas measure)
23370 {
23371 _backwardrepeat.target = measure;
23372 }
23373
23379 {
23380 return Set16BitFlag(&_backwardrepeat.flag, BackRepeat_INDIVPLAC, state);
23381 }
23382
23387 void SetVisible(bool state)
23388 {
23389 return Set16BitFlag(&_backwardrepeat.flag, 0x4000, !state);
23390 }
23391
23397 void SetTotalPasses(twobyte passes)
23398 {
23399 _backwardrepeat.actuate = passes;
23400 }
23401
23411#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23413#else
23414int
23415#endif
23417 {
23418 switch (_backwardrepeat.flag & BackRepeat_ACTION_BITS)
23419 {
23420 case 0:
23422 case 0x10:
23424 case 0x20:
23426 default:
23428 }
23429 }
23430
23436 {
23437 return GetBitFlag(_backwardrepeat.flag, BackRepeat_CLRonCHANGE);
23438 }
23439
23444 void SetTopBracketPosition(Evpu16 position)
23445 {
23446 _backwardrepeat.line2 = position;
23447 }
23448
23453 void SetBottomBracketPosition(Evpu16 position)
23454 {
23455 _backwardrepeat.line1 = position;
23456 }
23457
23462 void SetRightBracketPosition(Evpu16 position)
23463 {
23464 _backwardrepeat.pos1 = position;
23465 }
23466
23471 void SetLeftBracketPosition(Evpu16 position)
23472 {
23473 _backwardrepeat.pos2 = position;
23474 }
23475
23480 void SetStaffListID(twobyte stafflistid)
23481 {
23482 _backwardrepeat.staffList = stafflistid;
23483 }
23484
23494#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23496#else
23497int
23498#endif
23499 value
23500 )
23501 {
23502 switch (value)
23503 {
23505 _backwardrepeat.flag &= ~BackRepeat_ACTION_BITS;
23506 _backwardrepeat.flag |= 0x10;
23507 break;
23509 _backwardrepeat.flag &= ~BackRepeat_ACTION_BITS;
23510 _backwardrepeat.flag |= 0x20;
23511 break;
23513 _backwardrepeat.flag &= ~BackRepeat_ACTION_BITS;
23514 break;
23519 break;
23520 }
23521 }
23522
23527 void SetResetOnRepeatAction(bool state)
23528 {
23529 Set16BitFlag(&_backwardrepeat.flag, BackRepeat_CLRonCHANGE, state);
23530 }
23531
23540#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23542#else
23543 int
23544#endif
23546 {
23547 switch (_backwardrepeat.flag & 0xc00)
23548 {
23549 case 0x00:
23551 case 0x400:
23553 case 0x800:
23555 default:
23556 break;
23557 }
23558
23559#ifdef PDK_FRAMEWORK_DEBUG
23560 DebugOutHex("Undefined flag state for FCBackwardRepeat:GetAction: ", _backwardrepeat.flag);
23561#endif
23563 }
23564
23574#ifndef PDK_FRAMEWORK_LUAFRIENDLY
23576#else
23577 int
23578#endif
23579 mode)
23580 {
23581 switch (mode)
23582 {
23584 /* 0x0c40 bits should all be off */
23585 Set16BitFlag(&_backwardrepeat.flag, 0x0c00, false);
23586 break;
23587
23589 /* 0x0400 (in the 0x0c40 bit set) represents the "jump on pass" */
23590 Set16BitFlag(&_backwardrepeat.flag, 0x0c00, false);
23591 Set16BitFlag(&_backwardrepeat.flag, 0x0400, true);
23592 break;
23593
23595 /* 0x0800 (in the 0x0c40 bit set) represents the "play section" */
23596 Set16BitFlag(&_backwardrepeat.flag, 0x0c00, false);
23597 Set16BitFlag(&_backwardrepeat.flag, 0x0800, true);
23598 break;
23599
23602 break;
23603 }
23604 }
23605
23619
23620#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
23622 luabridge::RefCountedPtr<FCSeparatePlacements> CreateSeparatePlacements_GC()
23623 { return makeLuaSharedPtr(CreateSeparatePlacements()); }
23624#endif
23625
23626};
23627
23628
23635{
23636private:
23637#ifndef DOXYGEN_SHOULD_IGNORE_THIS
23639 struct __FCEDTBeatChartHeader
23640 {
23641 TimeEdu32 totalDur; // total duration of beat chart (should be equal to total duration of measure)
23642 Evpu16 totalWidth; // total "ideal width" (equal to last nextposi in array)
23643 Evpu16 minWidth; // final minpos value
23644 Evpu16 allotWidth;
23645 tbool incizero; // always 1
23646 };
23647
23651 EDTBeatChartElement _beatchartelement;
23652
23653 const __FCEDTBeatChartHeader* _GetDataAsHeader() const
23654 { return reinterpret_cast<const __FCEDTBeatChartHeader*>(&_beatchartelement); }
23655
23656 __FCEDTBeatChartHeader* _GetDataAsHeader()
23657 { return reinterpret_cast<__FCEDTBeatChartHeader*>(&_beatchartelement); }
23658
23659protected:
23660 EXTAG Tag() const override { return ot_BeatChartElement; }
23661 int DataSizeLoad() const override { return sizeof(EDTBeatChartElement); }
23662 void* Allocate() override { return (void*) &_beatchartelement; }
23663
23668 void CloneMemoryFrom(__FCBaseData* pSource) override
23669 {
23670 memcpy(&_beatchartelement, ((FCBeatChartElement*)pSource)->_GetBeatChartElement(), sizeof(_beatchartelement));
23671 _datablock = &_beatchartelement;
23672 _loadedsize = sizeof(_beatchartelement);
23673 }
23674
23675 __FCBaseData* CreateObject() override { return new FCBeatChartElement(); }
23676#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
23677public:
23678
23679 const char* ClassName() const override { return "FCBeatChartElement"; }
23680 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_BEATCHARTELEMENT; }
23681
23682#ifndef DOXYGEN_SHOULD_IGNORE_THIS
23689 void* _GetBeatChartElement() { return &_beatchartelement; }
23690#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
23691
23698 {
23699 memset(&_beatchartelement, 0, sizeof(_beatchartelement));
23700 _datablock = &_beatchartelement;
23701 _loadedsize = sizeof(_beatchartelement);
23702 }
23703
23717 TimeEdu32 GetMeasurePos() const override { return _beatchartelement.dura; }
23718
23726 Evpu16 GetHorizontalPosition() const { return _beatchartelement.posi; }
23727
23740 {
23741 if (GetInitElement()) return 0;
23742 return _beatchartelement.nextposi;
23743 }
23744
23754 Evpu16 GetMinimumPosition() const
23755 {
23756 if (GetInitElement()) return 0;
23757 return _beatchartelement.minpos;
23758 }
23759
23770 TimeEdu32 GetTotalDuration() const
23771 {
23772 if (!GetInitElement()) return 0;
23773 return _GetDataAsHeader()->totalDur;
23774 }
23775
23785 Evpu16 GetFullSpan() const
23786 {
23787 if (!GetInitElement()) return 0;
23788 return _GetDataAsHeader()->totalWidth;
23789 }
23790
23803 Evpu16 GetMinimumWidth() const
23804 {
23805 if (!GetInitElement()) return 0;
23806 return _GetDataAsHeader()->minWidth;
23807 }
23808
23821 Evpu16 GetReferenceWidth() const
23822 {
23823 if (!GetInitElement()) return 0;
23824 return _GetDataAsHeader()->allotWidth;
23825 }
23826
23832 bool GetInitElement() const { return _beatchartelement.incizero != 0; }
23833
23846 Evpu16 CalcWidth()
23847 {
23848 if (GetInitElement()) return 0;
23850 }
23851
23859 void SetMeasurePos(TimeEdu32 edupos) { _beatchartelement.dura = edupos; }
23860
23871 void SetWidth(Evpu16 width)
23872 {
23873 if (GetInitElement()) return;
23874 _beatchartelement.nextposi = width + _beatchartelement.posi;
23875 }
23876
23883 void SetHorizontalPosition(Evpu16 position)
23884 {
23885 if (GetInitElement()) return;
23886 _beatchartelement.posi = position;
23887 }
23888
23897 void SetNextHorizontalPosition(Evpu16 value)
23898 {
23899 if (GetInitElement()) return;
23900 _beatchartelement.nextposi = value;
23901 }
23902
23913 void SetMinimumPosition(Evpu16 value)
23914 {
23915 if (GetInitElement()) return;
23916 _beatchartelement.minpos = value;
23917 }
23918
23925 void SetTotalDuration(TimeEdu32 dura)
23926 {
23927 if (!GetInitElement()) return;
23928 _GetDataAsHeader()->totalDur = dura;
23929 }
23930
23937 void SetFullSpan(Evpu16 span)
23938 {
23939 if (!GetInitElement()) return;
23940 _GetDataAsHeader()->totalWidth = span;
23941 }
23942
23952 void SetMinimumWidth(Evpu16 width)
23953 {
23954 if (!GetInitElement()) return;
23955 _GetDataAsHeader()->minWidth = width;
23956 }
23957
23964 void SetReferenceWidth(Evpu16 width)
23965 {
23966 if (!GetInitElement()) return;
23967 _GetDataAsHeader()->allotWidth = width;
23968 }
23969
23983 bool MoveHorizontalPosition(Evpu16 offset, FCBeatChartElements* pBeatChart);
23984
23985
23986#ifdef PDK_FRAMEWORK_DEBUG
23987 void DebugDump() override
23988 {
23990 DebugOutInt("Measure Pos: ", GetMeasurePos());
23991 DebugOutInt("Horizontal Position: ", GetHorizontalPosition());
23992 DebugOutInt("Minimum position: ", GetMinimumPosition());
23993 DebugOutInt("Next horizontal position:", GetNextHorizontalPosition());
23994 DebugOutBool("Init element: ", GetInitElement());
23995 }
23996#endif
23997};
23998
23999
24007{
24008private:
24009#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24013 EDTTempo _tempo;
24014
24015protected:
24016 EXTAG Tag() const override { return ot_Tempo; }
24017 int DataSizeLoad() const override { return sizeof(EDTTempo); }
24018 void* Allocate() override { return (void*) &_tempo; }
24019
24024 void CloneMemoryFrom(__FCBaseData* pSource) override
24025 {
24026 memcpy(&_tempo, ((FCTempoElement*)pSource)->_GetTempoElement(), sizeof(_tempo));
24027 _datablock = &_tempo;
24028 _loadedsize = sizeof(_tempo);
24029 }
24030
24031 __FCBaseData* CreateObject() override { return new FCTempoElement(); }
24032#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24033public:
24034
24035 const char* ClassName() const override { return "FCTempoElement"; }
24036 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_TEMPOELEMENT; }
24037
24038#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24045 void* _GetTempoElement() { return &_tempo; }
24046#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24047
24053 {
24054 memset(&_tempo, 0, sizeof(_tempo));
24055 _tempo.unit = 1000;
24056 _datablock = &_tempo;
24057 _loadedsize = sizeof(_tempo);
24058 }
24059
24064 void SetMeasurePos(twobyte edupos) { _tempo.eldur = edupos; }
24065
24070 TimeEdu32 GetMeasurePos() const override { return _tempo.eldur; }
24071
24077 bool GetAbsolute() const { return _tempo.flag == TIMEDIAL_ABSOLUTE; }
24078
24085 void SetAbsolute(bool value)
24086 {
24087 _tempo.flag = value ? TIMEDIAL_ABSOLUTE : TIMEDIAL_RELATIVE;
24088 }
24089
24095 fourbyte GetRatio() const { return _tempo.ratio; }
24096
24101 void SetRatio(fourbyte value) { _tempo.ratio = value; }
24102
24113 {
24114 if (GetAbsolute())
24115 {
24116 float result = _tempo.ratio * _tempo.unit;
24117 result /= 65536;
24118 /* The value here is relative to 60 BPM == 1024 */
24119 result *= 60;
24120 result /= 1024;
24121 /* Round it off to 2 decimals */
24122 fourbyte fb = (fourbyte) (result * 100);
24123 result = fb;
24124 result /= 100;
24125 return result;
24126 }
24127 else
24128 {
24129 /* Relative */
24130 float result = GetRatio();
24131 result /= 10;
24132 return result;
24133 }
24134 }
24135
24142 void SetAbsoluteValue(float value)
24143 {
24144 SetAbsolute(true);
24145 _tempo.unit = 1000;
24146 value *= 1024;
24147 value /= 60;
24148 value *= 65536;
24149 value /= 1000;
24150 _tempo.ratio = (fourbyte) value;
24151 }
24152
24159 void SetRelativeValue(float value)
24160 {
24161 SetAbsolute(false);
24162 SetRatio((fourbyte) (value * 10));
24163 }
24164};
24165
24166
24167
24168#ifdef PDK_FRAMEWORK_TINYXML
24176{
24177 int _midikey;
24178 PERC_NOTE_TYPE _notetype;
24179 FCString _name;
24180public:
24187 PERCNOTETYPE_BASSDRUM = 13,
24188 PERCNOTETYPE_BELLTREE = 70,
24189 PERCNOTETYPE_BONGO_HIGH = 32,
24190 PERCNOTETYPE_BONGO_LOW = 33,
24191 PERCNOTETYPE_CONGA = 36,
24192 PERCNOTETYPE_COWBELL = 6,
24193 PERCNOTETYPE_CASTANETS = 362,
24194 PERCNOTETYPE_CYMBAL_CHINA = 17,
24195 PERCNOTETYPE_CYMBAL_CRASH = 4,
24196 PERCNOTETYPE_CYMBAL_RIDE = 18,
24197 PERCNOTETYPE_CYMBAL_SIZZLE = 121,
24198 PERCNOTETYPE_CYMBAL_SPLASH = 21,
24199 PERCNOTETYPE_CLAVES = 35,
24200 PERCNOTETYPE_GONG_SMALL = 137,
24201 PERCNOTETYPE_GONG_MEDIUM = 136,
24202 PERCNOTETYPE_GONG_LARGE = 135,
24203 PERCNOTETYPE_HIHAT_CLOSED = 15,
24204 PERCNOTETYPE_HIHAT_FOOT = 16,
24205 PERCNOTETYPE_HIHAT_OPEN = 14,
24206 PERCNOTETYPE_KICKDRUM = 2,
24207 PERCNOTETYPE_RHYTHMCUES = 235,
24208 PERCNOTETYPE_ROTOTOM_MID = 321,
24209 PERCNOTETYPE_SIDEDRUM = 279,
24210 PERCNOTETYPE_SNAREDRUM = 1,
24211 PERCNOTETYPE_TAMBOURINE = 7,
24212 PERCNOTETYPE_TAMTAM = 149,
24213 PERCNOTETYPE_TOM_HIGH = 24,
24214 PERCNOTETYPE_TOM_HIGHMID = 25,
24215 PERCNOTETYPE_TOM_LOW = 27,
24216 PERCNOTETYPE_TRIANGLE_MUTE = 8,
24217 PERCNOTETYPE_TRIANGLE_OPEN = 9,
24218 PERCNOTETYPE_VIBRASLAP = 12,
24219 PERCNOTETYPE_WINDCHIMES = 460,
24220 PERCNOTETYPE_WOODBLOCK_HIGH = 10
24221 };
24222
24224 FCPercussionMapNote(int midikey, int notetype, const char* pszName) : __FCBase()
24225 {
24226 _midikey = midikey;
24227 _notetype = notetype;
24228 _name.SetCString(pszName);
24229 }
24230 const char* ClassName() const override { return "FCPercussionMapNote"; }
24231
24236 PERC_NOTE_TYPE GetRawNoteType() const { return _notetype; }
24237
24245 PERC_NOTE_TYPE GetNoteType() const { return _notetype & 0x0fff; }
24246
24251 twobyte GetOrderID() const
24252 {
24253 twobyte returnvalue = _notetype & 0xf000;
24254 returnvalue /= 0x1000;
24255 return returnvalue;
24256 }
24257
24262 int GetMidiNote() const { return _midikey; }
24263
24266 const char* GetName() const { return _name.GetCString(); }
24267};
24268
24269
24280{
24281 twobyte _percussionid;
24282public:
24283
24289 FCPercussionMapNotes(twobyte percussionid) : __FCCollection()
24290 {
24291 _percussionid = percussionid;
24292 }
24293
24295 twobyte GetPercussionID() const { return _percussionid; }
24296
24297 const char* ClassName() const override { return "FCPercussionMapNotes"; }
24298
24304
24311 FCPercussionMapNote* FindRawNoteType(PERC_NOTE_TYPE rawnotetype)
24312 {
24313 for (int i = 0; i < GetCount(); i++)
24314 {
24315 FCPercussionMapNote* pItem = GetItemAt(i);
24316 if (pItem->GetRawNoteType() == rawnotetype) return pItem;
24317 }
24318 return NULL;
24319 }
24320
24328 {
24329 for (int i = 0; i < GetCount(); i++)
24330 {
24331 FCPercussionMapNote* pItem = GetItemAt(i);
24332 if (pItem->GetMidiNote() == midinote) return pItem;
24333 }
24334 return NULL;
24335 }
24336};
24337
24338class FCInstrumentDef;
24339
24348{
24349 public:
24350 const char* ClassName() const override { return "FCPercussionMapNotesLookup"; }
24351
24357
24368};
24369
24370#endif /*PDK_FRAMEWORK_TINYXML*/
24371
24372
24375
24384{
24385public:
24386 const char* ClassName() const override { return "FCPercussionLayoutNotesLookup"; }
24387
24393
24406
24415 FCPercussionLayoutNote* FindPercussionLayoutRawNote(FCPercussionStaff* pPercussionStaff, FLAG_16 percussionnote);
24416
24422};
24423
24424
24425
24433{
24434private:
24435#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24437 EDTInstDefinition _instrumentdef;
24438
24439protected:
24440 EXTAG Tag() const override { return ot_InstDefinition; }
24441 int DataSizeLoad() const override { return sizeof(EDTInstDefinition); }
24442 void* Allocate() override { return (void*) &_instrumentdef; }
24443
24448 void CloneMemoryFrom(__FCBaseData* pSource) override
24449 {
24450 memcpy(&_instrumentdef, ((FCInstrumentDef*)pSource)->_GetInstrumentDef(), sizeof(_instrumentdef));
24451 _datablock = &_instrumentdef;
24452 _loadedsize = sizeof(_instrumentdef);
24453 }
24454
24455 __FCBaseData* CreateObject() override { return new FCInstrumentDef(); }
24456#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24457public:
24458
24459 const char* ClassName() const override { return "FCInstrumentDef"; }
24460 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_INSTRUMENTDEF; }
24461
24462#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24469 void* _GetInstrumentDef() { return &_instrumentdef; }
24470
24471#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24472
24478
24491 {
24493 text.Load(GetItemNo());
24494 return text.CreateString();
24495 }
24496
24497#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
24499 luabridge::RefCountedPtr<FCString> CreateNameString_GC()
24500 { return makeLuaSharedPtr(CreateNameString()); }
24501#endif
24502
24507 twobyte GetVirtualChannel() const { return _instrumentdef.virtChannel; }
24508
24515 twobyte GetPercussionMapID() const { return _instrumentdef.percMapRefID; }
24516
24523 void SetPercussionMapID(twobyte mapID) { _instrumentdef.percMapRefID = mapID; }
24524
24525#ifdef PDK_FRAMEWORK_TINYXML
24540
24541#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
24543 luabridge::RefCountedPtr<FCPercussionMapNotes> CreatePercussionMapNotes_GC()
24544 { return makeLuaSharedPtr(CreatePercussionMapNotes()); }
24545#endif
24546#endif // PDK_FRAMEWORK_TINYXML
24547
24553 bool GetPercussionMapLocation(void* pFileSpecLocation, FCString* pMapName, EVERSION finpathspecversion);
24554
24555#ifdef PDK_FRAMEWORK_DEBUG
24556 void DebugDump() override
24557 {
24559 this->DebugDataDump();
24560 }
24561#endif
24562
24563};
24564
24565#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24566
24567#include "pragma_align_begin.h"
24568struct __EDTLayerPlayData
24569{
24570 ePlaybackRoute playbackRouteNum; // twobyte
24571 twobyte velControlLevel;
24572 FLAG_16 velControlSaveFlags;
24573 FLAG_16 playFlags;
24574};
24575#include "pragma_align_end.h"
24576
24577#include "pragma_align_begin.h"
24578struct __EDTPlayData2006
24579{
24580 __EDTLayerPlayData chordPlayData;
24581 __EDTLayerPlayData MIDIExpressionsPlayData;
24582 __EDTLayerPlayData layerPlayData[4]; // Should be MAX_LAYERS
24583};
24584#include "pragma_align_end.h"
24585
24586const EXTAG __ot_PlayData2006 = MAKEEXTAG(edOther4Inci,'P','L');
24587
24588// __EDTLayerPlayData.playFlags
24589const FLAG_16 __PLAY_LAYER_TRACK = 0x0001;
24590const FLAG_16 __SOLO_LAYER_TRACK = 0x0002;
24591
24592
24593#endif /* #ifndef DOXYGEN_SHOULD_IGNORE_THIS */
24594
24595
24606{
24607 __EDTLayerPlayData* _pLayerData;
24608public:
24613 FCLayerPlaybackData(__EDTLayerPlayData* pData) : __FCBase()
24614 {
24615 _pLayerData = pData;
24616 }
24617 const char* ClassName() const override { return "FCLayerPlaybackData"; }
24618
24623 ePlaybackRoute GetInstrumentDefID() const
24624 {
24625 /* The value is 0-based!!! To be able to map to FCInstrumentDef, it
24626 * needs to be 1-based. */
24627 return _pLayerData->playbackRouteNum + 1;
24628 }
24629
24634 bool GetPlay() const
24635 {
24636 return GetBitFlag(_pLayerData->playFlags, __PLAY_LAYER_TRACK);
24637 }
24638
24643 bool GetSolo() const
24644 {
24645 return GetBitFlag(_pLayerData->playFlags, __SOLO_LAYER_TRACK);
24646 }
24647
24654 void SetInstrumentDefID(ePlaybackRoute value)
24655 {
24656 /* The value is 0-based!!! (To be able to map to FCInstrumentDef, it
24657 * needs to be 1-based.) */
24658 _pLayerData->playbackRouteNum = value - 1;
24659 }
24660
24665 void SetPlay(bool state)
24666 {
24667 return Set16BitFlag(&_pLayerData->playFlags, __PLAY_LAYER_TRACK, state);
24668 }
24669
24674 void SetSolo(bool state)
24675 {
24676 return Set16BitFlag(&_pLayerData->playFlags, __SOLO_LAYER_TRACK, state);
24677 }
24678};
24679
24680
24688{
24689private:
24690#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24692 __EDTPlayData2006 _playbackdata;
24693
24694 std::unique_ptr<FCLayerPlaybackData> _pChordLayer;
24695 std::unique_ptr<FCLayerPlaybackData> _pExpressionLayer;
24696 std::vector<std::unique_ptr<FCLayerPlaybackData>> _pNoteLayers;
24697
24698protected:
24699 EXTAG Tag() const override { return __ot_PlayData2006; }
24700 int DataSizeLoad() const override { return sizeof(__EDTPlayData2006); }
24701 void* Allocate() override { return (void*) &_playbackdata; }
24702
24707 void CloneMemoryFrom(__FCBaseData* pSource) override
24708 {
24709 memcpy(&_playbackdata, ((FCInstrumentPlaybackData*)pSource)->_GetPlaybackData(), sizeof(_playbackdata));
24710 _datablock = &_playbackdata;
24711 _loadedsize = sizeof(_playbackdata);
24712 }
24713
24714 __FCBaseData* CreateObject() override { return new FCInstrumentPlaybackData(); }
24715#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24716public:
24717
24718 const char* ClassName() const override { return "FCInstrumentPlaybackData"; }
24719 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_INSTRUMENTPLAYBACKDATA; }
24720
24721#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24728 void* _GetPlaybackData() { return &_playbackdata; }
24729
24730#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24731
24736 FCInstrumentPlaybackData() : __FCNoInciOther(), _pNoteLayers(DIM(_playbackdata.layerPlayData))
24737 {}
24738
24755 {
24756 if (!DataIsLoaded()) return NULL;
24757 if (!_pChordLayer)
24758 _pChordLayer = std::make_unique<FCLayerPlaybackData>(FCLayerPlaybackData(&_playbackdata.chordPlayData));
24759 return _pChordLayer.get();
24760 }
24761
24778 {
24779 if (!DataIsLoaded()) return NULL;
24780 if (!_pExpressionLayer)
24781 _pExpressionLayer = std::make_unique<FCLayerPlaybackData>(FCLayerPlaybackData(&_playbackdata.MIDIExpressionsPlayData));
24782 return _pExpressionLayer.get();
24783 }
24784
24803 {
24804 if ((layernumber < 1) || (layernumber > _pNoteLayers.size())) return NULL;
24805 if (!DataIsLoaded()) return NULL;
24806 layernumber--; /* Make a 0-based index */
24807 if (!_pNoteLayers[layernumber])
24808 _pNoteLayers[layernumber] = std::make_unique<FCLayerPlaybackData>(FCLayerPlaybackData(&_playbackdata.layerPlayData[layernumber]));
24809 return _pNoteLayers[layernumber].get();
24810 }
24811
24812#ifdef PDK_FRAMEWORK_DEBUG
24813 void DebugDump() override
24814 {
24816 DebugDataDump();
24817 }
24818#endif
24819
24820};
24821
24831{
24832private:
24833#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24835 EDTPercussionNoteDef2010 _percussionnotedef2010;
24836#if FXT_VERSION >= FINALEVERSION_2012
24837 EDTPercussionNoteDef2012 _percussionnotedef2012;
24838#endif
24839
24844 EVERSION _VersionToUse() const;
24845
24846protected:
24847 EXTAG Tag() const override;
24848
24849 int DataSizeLoad() const override;
24850
24851 void* Allocate() override;
24852
24857 void CloneMemoryFrom(__FCBaseData* pSource) override
24858 {
24859 memcpy(_GetPercussionNoteDef(), ((FCPercussionLayoutNote*)pSource)->_GetPercussionNoteDef(), DataSizeLoad());
24860 _datablock = _GetPercussionNoteDef();
24862 }
24863
24864 __FCBaseData* CreateObject() override { return new FCPercussionLayoutNote(); }
24865#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24866public:
24867
24868 const char* ClassName() const override { return "FCPercussionLayoutNote"; }
24869 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_PERCUSSIONLAYOUTNOTE; }
24870
24871#ifndef DOXYGEN_SHOULD_IGNORE_THIS
24878 void* _GetPercussionNoteDef();
24879
24880
24881#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
24882
24888 memset(Allocate(), 0, DataSizeLoad());
24889 }
24890
24897 PERC_NOTE_TYPE GetRawNoteType() const;
24898
24904 PERC_NOTE_TYPE GetNoteType() const;
24905
24914 twobyte GetOrderID() const;
24915
24923 twobyte GetStaffPosition() const;
24924
24929 fourbyte GetClosedNotehead() const;
24930
24935 fourbyte GetHalfNotehead() const;
24936
24941 fourbyte GetWholeNotehead() const;
24942
24947 fourbyte GetDoubleWholeNotehead() const;
24948
24949
24950
24955 void SetNoteType(PERC_NOTE_TYPE value);
24956
24965 void SetOrderID(twobyte value);
24966
24975 void SetStaffPosition(twobyte value);
24976
24981 void SetClosedNotehead(fourbyte value);
24982
24987 void SetHalfNotehead(fourbyte value);
24988
24993 void SetWholeNotehead(fourbyte value);
24994
24999 void SetDoubleWholeNotehead(fourbyte value);
25000
25001#ifdef PDK_FRAMEWORK_TINYXML
25009 twobyte CalcMidiRawNote(FCPercussionMapNotes* pNotes);
25010
25018 twobyte CalcMidiNote(FCPercussionMapNotes* pNotes);
25019#endif
25020
25021
25022#ifdef PDK_FRAMEWORK_DEBUG
25023 void DebugDump() override
25024 {
25026 }
25027#endif
25028
25029};
25030
25031
25032
25033/* Previously undocumented stuff */
25034const EXTAG __ot_CategoryStaffListScore = MAKEEXTAG(edOther, 'C', 's');
25035const EXTAG __ot_CategoryStaffListParts = MAKEEXTAG(edOther, 'C', 'p');
25036const EXTAG __ot_CategoryStaffListScoreOverride = MAKEEXTAG(edOther, 'c',
25037'o');
25038const EXTAG __ot_CategoryStaffListPartsOverride = MAKEEXTAG(edOther, 'C',
25039'o');
25040
25041
25042const EXTAG __ot_StaffAssignStaffListScore = MAKEEXTAG(edOther, 'S', 's');
25043const EXTAG __ot_StaffAssignStaffListParts = MAKEEXTAG(edOther, 's', 'p');
25044const EXTAG __ot_StaffAssignStaffListScoreOverride = MAKEEXTAG(edOther, 'S',
25045'o');
25046const EXTAG __ot_StaffAssignStaffListPartsOverride = MAKEEXTAG(edOther, 's',
25047'o');
25048
25049
25063{
25064#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25065 EDTStaffList* _TypeCast() const { return (EDTStaffList*)_datablock; }
25066#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25067protected:
25068#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25069
25070 EXTAG Tag() const override { return GetCustomTag() ? GetCustomTag() : ot_StaffListDataScore; }
25071
25072 int DataSizeLoad() const override;
25073 int DataSizeSave() const override;
25074 void* Allocate() override;
25075 void Deallocate() override;
25076 bool IsDynamicSize() override { return true; }
25077
25078 __FCBaseData* CreateObject() override { return new FCStaffList(); }
25079
25080#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25081public:
25087 {
25088 SLMODE_SCORE = 0,
25089 SLMODE_PARTS,
25090 SLMODE_FORCESCORE,
25091 SLMODE_FORCEPARTS,
25092
25093 SLMODE_CATEGORY_SCORE,
25094 SLMODE_CATEGORY_PARTS,
25095 SLMODE_CATEGORY_FORCESCORE,
25096 SLMODE_CATEGORY_FORCEPARTS,
25097
25098 SLMODE_ASSIGNMENT_SCORE,
25099 SLMODE_ASSIGNMENT_PARTS,
25100 SLMODE_ASSIGNMENT_FORCESCORE,
25101 SLMODE_ASSIGNMENT_FORCEPARTS
25102 };
25103
25104
25110 {
25111 }
25112
25113 const char* ClassName() const override { return "FCStaffList"; }
25114 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_STAFFLIST; }
25115
25116#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25123 void* _GetStaffListElement() { return _datablock; }
25124#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25125
25126
25147#ifndef PDK_FRAMEWORK_LUAFRIENDLY
25149#else
25150 int
25151#endif
25152 mode
25153 )
25154 {
25155 switch (mode)
25156 {
25157 case SLMODE_SCORE:
25158 SetCustomTag(ot_StaffListDataScore);
25159 break;
25160 case SLMODE_PARTS:
25161 SetCustomTag(ot_StaffListDataParts);
25162 break;
25163 case SLMODE_FORCESCORE:
25164 SetCustomTag(ot_StaffListForceScore);
25165 break;
25166 case SLMODE_FORCEPARTS:
25167 SetCustomTag(ot_StaffListForceParts);
25168 break;
25169
25170 case SLMODE_CATEGORY_SCORE:
25171 SetCustomTag(__ot_CategoryStaffListScore);
25172 break;
25173 case SLMODE_CATEGORY_PARTS:
25174 SetCustomTag(__ot_CategoryStaffListParts);
25175 break;
25176 case SLMODE_CATEGORY_FORCESCORE:
25177 SetCustomTag(__ot_CategoryStaffListScoreOverride);
25178 break;
25179 case SLMODE_CATEGORY_FORCEPARTS:
25180 SetCustomTag(__ot_CategoryStaffListPartsOverride);
25181 break;
25182
25183 case SLMODE_ASSIGNMENT_SCORE:
25184 SetCustomTag(__ot_StaffAssignStaffListScore);
25185 break;
25186 case SLMODE_ASSIGNMENT_PARTS:
25187 SetCustomTag(__ot_StaffAssignStaffListParts);
25188 break;
25189 case SLMODE_ASSIGNMENT_FORCESCORE:
25190 SetCustomTag(__ot_StaffAssignStaffListScoreOverride);
25191 break;
25192 case SLMODE_ASSIGNMENT_FORCEPARTS:
25193 SetCustomTag(__ot_StaffAssignStaffListPartsOverride);
25194 break;
25195 }
25196 }
25197
25198#ifdef PDK_FRAMEWORK_DEBUG
25199 void DebugDump() override
25200 {
25202 }
25203#endif
25204
25206 bool Load(CMPER itemno) override;
25207
25209 bool SaveNew() override { return false; }
25210
25212 bool Save() override;
25213
25215 bool DeleteData() override { return false; }
25216
25218 bool LoadNext() override { return Load(GetItemNo() + 1); }
25219
25226 {
25227 if (!DataIsLoaded()) return 0;
25228 int maxcount = _loadedsize / sizeof(EDTStaffList);
25229 /* Reduce list if some elements are 0 at the end */
25230 while (maxcount > 0)
25231 {
25232 if (_TypeCast()[maxcount - 1].staff == 0)
25233 maxcount --;
25234 else
25235 return maxcount;
25236 }
25237 return maxcount;
25238 }
25239
25245 int GetStaffCount() const
25246 {
25247 if (!DataIsLoaded()) return 0;
25248 int maxcount = _loadedsize / sizeof(EDTStaffList);
25249 int staffcount = 0;
25250 for (int i = 0; i < maxcount; i++)
25251 {
25252 if (_TypeCast()[i].staff > 0) staffcount++;
25253 }
25254 return staffcount;
25255 }
25256
25266 int GetStaff(int index)
25267 {
25268 if (index < 0) return 0;
25269 int maxcount = _loadedsize / sizeof(EDTStaffList);
25270 int staffcount = 0;
25271 for (int i = 0; i < maxcount; i++)
25272 {
25273 if (_TypeCast()[i].staff > 0)
25274 {
25275 if (staffcount == index) return _TypeCast()[index].staff;
25276 staffcount++;
25277 }
25278 }
25279 return 0;
25280 }
25281
25286 bool IsElementAvailable(twobyte stafflistelement)
25287 {
25288 if (stafflistelement == 0) return false; /* This value would not be a valid value in a staff list. */
25289 int maxcount = _loadedsize / sizeof(EDTStaffList);
25290 for (int i = 0; i < maxcount; i++)
25291 {
25292 if (_TypeCast()[i].staff == stafflistelement) return true;
25293 }
25294 return false;
25295 }
25296
25302 {
25303 return IsElementAvailable(SLD_TOPSTAFF);
25304 }
25305
25311 {
25312 return IsElementAvailable(SLD_BOTTOMSTAFF);
25313 }
25314
25321 bool IncludesStaff(twobyte staffnumber)
25322 {
25323 return IsElementAvailable(staffnumber);
25324 }
25325
25337
25338#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
25340 luabridge::RefCountedPtr<FCString> CreateNameString_GC()
25341 { return makeLuaSharedPtr(CreateNameString()); }
25342#endif
25343
25350 bool SaveNameString(FCString* pString);
25351
25356 bool AddElement(twobyte elementnumber);
25357
25368 bool AddStaff(twobyte staffnumber)
25369 {
25370 if (staffnumber < 1) return false;
25371 return AddElement(staffnumber);
25372 }
25373
25382 {
25383 return AddElement(SLD_TOPSTAFF);
25384 }
25385
25394 {
25395 return AddElement(SLD_BOTTOMSTAFF);
25396 }
25397
25402 bool RemoveElement(twobyte element);
25403
25411 {
25412 return RemoveElement(SLD_TOPSTAFF);
25413 }
25414
25422 {
25423 return RemoveElement(SLD_BOTTOMSTAFF);
25424 }
25425
25432 bool RemoveStaff(twobyte staffnumber)
25433 {
25434 if (staffnumber < 1) return false;
25435 return RemoveElement(staffnumber);
25436 }
25437};
25438
25439
25440
25447{
25448private:
25449#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25450 EDTFretInstrument _fretinstrumentold; /* Pre 25.3 */
25451
25452 FIN25_3_CODE( EDTFretInstrument25_3 _fretinstrument25_3; )
25453
25454 /* Decides which of the structs that should be used, based on
25455 the PDK and running version. Returns true if 25.3 is supported. */
25456 bool _Use25_3Version() const;
25457
25458 /* Returns a pointer to the 'noOfFrets' member */
25459 const twobyte* _GetNoOfFretsPtr() const
25460 {
25461 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.noOfFrets; )
25462 return &_fretinstrumentold.noOfFrets;
25463 }
25464
25465 /* Returns a pointer to the 'noOfStrings' member */
25466 const twobyte* _GetNoOfStringsPtr() const
25467 {
25468 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.noOfStrings; )
25469 return &_fretinstrumentold.noOfStrings;
25470 }
25471
25472 /* Returns a pointer to the 'speedyClef' member */
25473 const eClef* _GetSpeedyClefPtr() const
25474 {
25475 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.speedyClef; )
25476 return &_fretinstrumentold.speedyClef;
25477 }
25478
25479 /* Returns a pointer to the 'diatonicStepsLo' member */
25480 const utwobyte* _GetDiatonicStepsLoPtr() const
25481 {
25482 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.diatonicStepsLo; )
25483 return &_fretinstrumentold.diatonicStepsLo;
25484 }
25485
25486 /* Returns a pointer to the 'diatonicStepsHi' member */
25487 const utwobyte* _GetDiatonicStepsHiPtr() const
25488 {
25489 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.diatonicStepsHi; )
25490 return &_fretinstrumentold.diatonicStepsHi;
25491 }
25492
25493 /* Returns a pointer to the 'name' member. On Finale 25.3+, it's an
25494 eUniChar16 buffer. On earlier Finale versions, it's an ECHAR buffer. */
25495 const void* _GetNamePtr() const
25496 {
25497 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.name; )
25498 return &_fretinstrumentold.name;
25499 }
25500
25501 /* Returns a pointer to the 'stringTuning' member. The meaning of this pointer is a
25502 bit different in 25.3 PDK versions. */
25503 const void* _GetStringTuningPtr(int stringno) const
25504 {
25505 FIN25_3_CODE( if (_Use25_3Version()) return &_fretinstrument25_3.stringTuning[stringno - 1]; )
25506 return &_fretinstrumentold.stringTuning[stringno - 1];
25507 }
25508
25509#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25510protected:
25511#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25512
25513 EXTAG Tag() const override;
25514 int DataSizeLoad() const override;
25515 void* Allocate() override;
25516 EVERSION EnigmaVersion() const override { return _Use25_3Version() ? FINALEVERSION_25_3 : FINALEVERSION_2010; }
25517
25524 void CloneMemoryFrom(__FCBaseData* pSource) override
25525 {
25526 int size = DataSizeLoad();
25527 memcpy(_GetFretInstrumentDef(), ((FCFretInstrumentDef*)pSource)->_GetFretInstrumentDef(), size);
25528 _datablock = _GetFretInstrumentDef();
25529 _loadedsize = size;
25530 }
25531
25532 __FCBaseData* CreateObject() override { return new FCFretInstrumentDef(); }
25533
25534#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25535public:
25536 const char* ClassName() const override { return "FCFretInstrumentDef"; }
25537 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_FRETINSTRUMENTDEF; }
25538
25540 bool LoadFirst() override { return Load(1); }
25541
25543 bool LoadNext() override
25544 {
25545 if (!DataIsLoaded()) return false;
25546 return Load(GetItemNo() + 1);
25547 }
25548
25549#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25556 void* _GetFretInstrumentDef() { return Allocate(); }
25557#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25558
25564 {
25565 /* Don't use virtual methods in the constructor */
25566 if (_Use25_3Version())
25567 {
25568#if FXT_VERSION >= FINALEVERSION_25_3
25569 memset(&_fretinstrument25_3, 0, sizeof(_fretinstrument25_3));
25570 _datablock = &_fretinstrument25_3;
25571 _loadedsize = sizeof(_fretinstrument25_3);
25572#endif
25573 }
25574 else
25575 {
25576 memset(&_fretinstrumentold, 0, sizeof(_fretinstrumentold));
25577 _datablock = &_fretinstrumentold;
25578 _loadedsize = sizeof(_fretinstrumentold);
25579 }
25580 }
25581
25586 twobyte GetFretCount() const
25587 {
25588 return *_GetNoOfFretsPtr();
25589 }
25590
25595 void SetFretCount(twobyte count)
25596 {
25597 *(twobyte*)_GetNoOfFretsPtr() = count;
25598 }
25599
25604 twobyte GetStringCount() const
25605 {
25606 return *_GetNoOfStringsPtr();
25607 }
25608
25615 void SetStringCount(twobyte count)
25616 {
25617 if (count < 1) return;
25618 if (count > 24) return;
25619 *(twobyte*)_GetNoOfStringsPtr() = count;
25620 }
25621
25626 eClef GetSpeedyClef() const
25627 {
25628 return *_GetSpeedyClefPtr();
25629 }
25630
25635 void SetSpeedyClef(eClef clef)
25636 {
25637 *(eClef*)_GetSpeedyClefPtr() = clef;
25638 }
25639
25650 bool GetName(FCString* pString)
25651 {
25652 if (!pString) return false;
25653 if (_Use25_3Version())
25654 {
25655 /* Unicode version */
25656 FIN25_3_CODE( pString->SetUnicodeString((eUniChar16*) _GetNamePtr()); )
25657 }
25658 else
25659 {
25660 /* Old ECHAR version */
25661 pString->SetCString((ECHAR*) _GetNamePtr());
25662 }
25663
25664 return true;
25665 }
25666
25677 bool SetName(FCString* pString)
25678 {
25679 if (!pString) return false;
25680 if (pString->GetLength() > 47) return false;
25681 if (_Use25_3Version())
25682 {
25683 /* Unicode version */
25684 FIN25_3_CODE( pString->CopyToUnicodeBuffer((eUniChar16*) _GetNamePtr()); )
25685 }
25686 else
25687 {
25688 /* Old ECHAR version */
25689 strcpy((ECHAR*) _GetNamePtr(), pString->GetCString());
25690 }
25691 return true;
25692 }
25693
25704 twobyte GetStringTuning(int stringnumber)
25705 {
25706 if (stringnumber < 1) return 0;
25707 if (stringnumber > GetStringCount()) return 0;
25708 if (stringnumber > 24) return 0;
25709
25710 /* The meaning of the StringTuning array has shifted a bit between PDKs.
25711 */
25712#if FXT_VERSION >= FINALEVERSION_25_3
25713 if (_Use25_3Version())
25714 {
25715 return ((EDTStringData*)_GetStringTuningPtr(stringnumber))->pitch;
25716 }
25717#endif
25718 return *(twobyte*)_GetStringTuningPtr(stringnumber);
25719 }
25720
25732 bool SetStringTuning(int stringnumber, twobyte midinumber)
25733 {
25734 if (stringnumber < 1) return false;
25735 if (stringnumber > GetStringCount()) return false;
25736 if (stringnumber > 24) return false;
25737
25738 if (_Use25_3Version())
25739 {
25740#if FXT_VERSION >= FINALEVERSION_25_3
25741 ((EDTStringData*)_GetStringTuningPtr(stringnumber))->pitch = midinumber;
25742#endif
25743 }
25744 else
25745 {
25746 *(twobyte*)_GetStringTuningPtr(stringnumber) = midinumber;
25747 }
25748 return true;
25749 }
25750
25756 {
25757 return (MAKELONG(*_GetDiatonicStepsLoPtr(), *_GetDiatonicStepsHiPtr()) != 0);
25758 }
25759
25765 {
25766 if (!IsDiatonic()) return 0;
25767 ufourbyte fb = MAKELONG(*_GetDiatonicStepsLoPtr(), *_GetDiatonicStepsHiPtr());
25768 int totalcount = 0;
25769 while (fb)
25770 {
25771 if (fb & 0x01) totalcount ++;
25772 fb = fb >> 1;
25773 }
25774 return totalcount;
25775 }
25776
25785 {
25786 if (!pNumbers) return false;
25787 pNumbers->ClearAll();
25788 ufourbyte fb = MAKELONG(*_GetDiatonicStepsLoPtr(), *_GetDiatonicStepsHiPtr());
25789 int count = 0;
25790 while (fb != 0)
25791 {
25792 count ++;
25793 if (fb & 0x01)
25794 {
25795 pNumbers->Add(new FCNumber(count));
25796 count = 0;
25797 }
25798 fb = fb >> 1;
25799 }
25800 return true;
25801 }
25802
25811 {
25812 if (!pNumbers) return false;
25813 ufourbyte fb = 0;
25814 for (int i = pNumbers->GetCount() - 1; i >= 0; i--)
25815 {
25816 FCNumber* pNumber = pNumbers->GetItemAt(i);
25817 if (pNumber->GetInt() < 1) return false;
25818 if (pNumber->GetInt() > 5) return false;
25819 fb = fb << 1; /* Shift to next number */
25820 fb |= 0x01;
25821 for (int bitcount = 0; bitcount < pNumber->GetInt() - 1; bitcount++)
25822 {
25823 fb = fb << 1; /* Shift with extra zeros, if necessary */
25824 }
25825 }
25826 *(utwobyte*)_GetDiatonicStepsLoPtr() = LOWORD(fb);
25827 *(utwobyte*)_GetDiatonicStepsHiPtr() = HIWORD(fb);
25828 return true;
25829 }
25830
25831
25832#ifdef PDK_FRAMEWORK_DEBUG
25833 void DebugDump() override
25834 {
25836 DebugOutHex("Diatonic bit set: ", MAKELONG(*_GetDiatonicStepsLoPtr(), *_GetDiatonicStepsHiPtr()));
25837 }
25838#endif
25839};
25840
25841
25842#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25843#include "pragma_align_begin.h"
25844struct __EDTMidClef
25845{
25846 twobyte clefindex;
25847 twobyte edupos;
25848 twobyte vertadjust;
25849 twobyte resize;
25850 twobyte horizadjust;
25851 FLAG_16 flag;
25852};
25853#include "pragma_align_end.h"
25854
25855const EXTAG __ot_MidClef = MAKEEXTAG(edOther, 'C', 'E');
25856#endif
25857
25858
25870{
25871private:
25872#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25873 __EDTMidClef _midclefdata;
25874
25877 {
25878 _midclefdata = src._midclefdata;
25879 _datablock = &_midclefdata;
25880 _loadedsize = sizeof(_midclefdata);
25881 }
25882
25883 friend class FCCellClefChanges;
25884#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25885protected:
25886#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25887
25888 EXTAG Tag() const override { return __ot_MidClef; }
25889 int DataSizeLoad() const override { return sizeof(__EDTMidClef); }
25890 void* Allocate() override { return (void*) &_midclefdata; }
25891
25892 void CloneMemoryFrom(__FCBaseData* pSource) override
25893 {
25894 memcpy(&_midclefdata, ((FCCellClefChange*)pSource)->_GetCellClefChange(), sizeof(_midclefdata));
25895 _datablock = &_midclefdata;
25896 _loadedsize = sizeof(_midclefdata);
25897 }
25898
25899 __FCBaseData* CreateObject() override { return new FCCellClefChange(); }
25900
25901#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25902public:
25903 const char* ClassName() const override { return "FCCellClefChange"; }
25904 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_CELLCLEFCHANGE; }
25905
25906#ifndef DOXYGEN_SHOULD_IGNORE_THIS
25913 void* _GetCellClefChange() { return Allocate(); }
25914#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
25915
25921
25926 twobyte GetClefIndex() const { return _midclefdata.clefindex; }
25927
25935 TimeEdu32 GetMeasurePos() const override { return _midclefdata.edupos; }
25936
25941 twobyte GetClefPercent() const { return _midclefdata.resize; }
25942
25947 twobyte GetHorizontalOffset() const { return _midclefdata.horizadjust; }
25948
25953 twobyte GetVerticalOffset() const { return _midclefdata.vertadjust; }
25954
25960 twobyte GetClefShow() const;
25961
25966 bool GetAllowVerticalDrag() const { return (_midclefdata.flag & 0x04) != 0; }
25967
25973 bool GetClefAfterBarline() const { return (_midclefdata.flag & 0x0010) != 0; }
25974
25979 void SetClefIndex(twobyte value) { _midclefdata.clefindex = value; }
25980
25991 void SetMeasurePos(twobyte value) { _midclefdata.edupos = value; }
25992
25997 void SetClefPercent(twobyte value) { _midclefdata.resize = value; }
25998
26003 void SetHorizontalOffset(twobyte value) { _midclefdata.horizadjust = value; }
26004
26009 void SetVerticalOffset(twobyte value) { _midclefdata.vertadjust = value; }
26010
26018 void SetClefShow(twobyte showstate);
26019
26027 void SetAllowVerticalDrag(bool state) { Set16BitFlag(&_midclefdata.flag, 0x04, state); }
26028
26034 void SetClefAfterBarline(bool state) { Set16BitFlag(&_midclefdata.flag, 0x0010, state); }
26035
26040 bool IsStartClef() { return (GetMeasurePos() == 0); }
26041};
26042
26043
26054class FCGuide : public __FCBase
26055{
26056 Efix32 _position;
26057 public:
26062 FCGuide(Efix32 position) : __FCBase()
26063 {
26064 _position = position;
26065 }
26066 const char* ClassName() const override { return "FCGuide"; }
26067
26076 Efix32 GetPosition() const { return _position; }
26077
26084 void SetPosition(Efix32 value) { _position = value; }
26085};
26086
26087#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26088
26089const EXTAG __ot_MetatoolExpression = MAKEEXTAG(edOther, '&', 'd');
26090const EXTAG __ot_MetatoolArticulation = MAKEEXTAG(edOther, '&', 'a');
26091const EXTAG __ot_MetatoolRepeat = MAKEEXTAG(edOther, '&', 'r');
26092const EXTAG __ot_MetatoolClef = MAKEEXTAG(edOther, '&', 'f');
26093const EXTAG __ot_MetatoolTuplet = MAKEEXTAG(edOther3Inci, '&', 'u');
26094const EXTAG __ot_MetatoolStaffStyle = MAKEEXTAG(edOther, '&', 's');
26095
26096#include "pragma_align_begin.h"
26097struct __EDTMetatool
26098{
26099 twobyte item1; /* For most data, this is a cmper */
26100 twobyte item2; /* For expressions, this is a bool */
26101 twobyte item3;
26102 twobyte item4;
26103 twobyte item5;
26104 twobyte item6;
26105};
26106#include "pragma_align_end.h"
26107
26108#endif /* #ifndef DOXYGEN_SHOULD_IGNORE_THIS */
26109
26110class FCClefDef;
26111#ifdef PDK_FRAMEWORK_ENTRIES
26112class FCTuplet;
26113#endif
26114
26128{
26129public:
26135 {
26136 /* Currently unassigned metatool mode. */
26137 MTOOLMODE_UNKNOWN = 0,
26138
26141
26144
26147
26150
26151#ifdef PDK_FRAMEWORK_ENTRIES
26155#endif
26156
26160private:
26161#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26162 METATOOL_MODES _mode; /* The mode of the object. */
26163
26164 __EDTMetatool _metatool; /* Data for most kind of items */
26165 EDTTuplet2005 _tupletmetatool; /* Data for tuplets */
26166
26167#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
26168protected:
26169#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26170
26171 EXTAG Tag() const override
26172 {
26173 switch (_mode)
26174 {
26176 return __ot_MetatoolExpression;
26178 return __ot_MetatoolArticulation;
26179 case MTOOLMODE_REPEAT:
26180 return __ot_MetatoolRepeat;
26181 case MTOOLMODE_CLEF:
26182 return __ot_MetatoolClef;
26183#ifdef PDK_FRAMEWORK_ENTRIES
26184 case MTOOLMODE_TUPLET:
26185 return __ot_MetatoolTuplet;
26186#endif
26188 return __ot_MetatoolStaffStyle;
26189 case MTOOLMODE_UNKNOWN:
26190 return 0;
26191 }
26192 return 0;
26193 }
26194 int DataSizeLoad() const override
26195 {
26196 switch (_mode)
26197 {
26198#ifdef PDK_FRAMEWORK_ENTRIES
26199 case MTOOLMODE_TUPLET:
26200 return sizeof(_tupletmetatool);
26201#endif
26202 case MTOOLMODE_UNKNOWN:
26203 return 0;
26204 default:
26205 return sizeof(__EDTMetatool);
26206 }
26207 }
26208 void* Allocate() override
26209 {
26210 switch (_mode)
26211 {
26212#ifdef PDK_FRAMEWORK_ENTRIES
26213 case MTOOLMODE_TUPLET:
26214 return (void*) &_tupletmetatool;
26215#endif
26216 case MTOOLMODE_UNKNOWN:
26217 return NULL;
26218 default:
26219 return (void*) &_metatool;
26220 }
26221 }
26222
26229 void CloneMemoryFrom(__FCBaseData* pSource) override
26230 {
26231 if (_mode == MTOOLMODE_UNKNOWN) return;
26232 memcpy(_GetMetatool(), ((FCMetatoolAssignment*)pSource)->_GetMetatool(), DataSizeLoad());
26233 _datablock = _GetMetatool();
26234 _loadedsize = sizeof(DataSizeLoad());
26235 }
26236
26237 __FCBaseData* CreateObject() override { return new FCMetatoolAssignment(); }
26238
26239#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
26240public:
26241 const char* ClassName() const override { return "FCMetatoolAssignment"; }
26242 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_METATOOLASSIGNMENT; }
26243
26244#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26251 void* _GetMetatool() { return Allocate(); }
26252#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
26253
26259 {
26260 _mode = MTOOLMODE_UNKNOWN;
26261 // _datablock and _loadedsize is initialized in SetMode()
26262 memset(&_metatool, 0, sizeof(_metatool));
26263 memset(&_tupletmetatool, 0, sizeof(_tupletmetatool));
26264 }
26265
26276#ifndef PDK_FRAMEWORK_LUAFRIENDLY
26278#else
26279 int
26280#endif
26281 mode)
26282 {
26283 if (_mode != MTOOLMODE_UNKNOWN) return;
26284 _mode = (METATOOL_MODES) mode;
26285 _datablock = _GetMetatool();
26287 }
26288
26295#ifndef PDK_FRAMEWORK_LUAFRIENDLY
26297#else
26298 int
26299#endif
26300 GetMode() const { return (METATOOL_MODES) _mode; }
26301
26320 CMPER GetDefID() const
26321 {
26322 switch (_mode)
26323 {
26326 case MTOOLMODE_REPEAT:
26327 case MTOOLMODE_CLEF:
26329 return _metatool.item1;
26330 default:
26331 return 0;
26332 }
26333 }
26334
26341 twobyte GetKeystroke() const;
26342
26352 {
26353 if (_mode != MTOOLMODE_EXPRESSION) return false;
26354 return (_metatool.item2 == 0);
26355 }
26356
26366 {
26367 if (!pDef) return false;
26368 if (_mode != MTOOLMODE_ARTICULATION) return false;
26369 _metatool.item1 = pDef->GetItemNo();
26370 return true;
26371 }
26372
26382 {
26383 if (!pDef) return false;
26384 if (_mode != MTOOLMODE_EXPRESSION) return false;
26385 _metatool.item1 = pDef->GetItemNo();
26386 _metatool.item2 = 1;
26387 return true;
26388 }
26389
26399 {
26400 if (!pDef) return false;
26401 if (_mode != MTOOLMODE_EXPRESSION) return false;
26402 _metatool.item1 = pDef->GetItemNo();
26403 _metatool.item2 = 0;
26404 return true;
26405 }
26406
26416 {
26417 if (!pDef) return false;
26418 if (_mode != MTOOLMODE_REPEAT) return false;
26419 _metatool.item1 = pDef->GetItemNo();
26420 return true;
26421 }
26422
26431 bool AssignClefDef(FCClefDef* pDef);
26432
26433#ifdef PDK_FRAMEWORK_ENTRIES
26442 bool AssignTuplet(FCTuplet* pTuplet);
26443#endif
26444
26454 {
26455 if (!pStaffStyle) return false;
26456 if (_mode != MTOOLMODE_STAFFSTYLE) return false;
26457 _metatool.item1 = pStaffStyle->GetItemNo();
26458 return true;
26459 }
26460
26467 bool SaveAsKeystroke(twobyte keystrokeslot)
26468 {
26469 if (_mode == MTOOLMODE_UNKNOWN) return false;
26470 if ((keystrokeslot >= 'A' && keystrokeslot <= 'Z') || (keystrokeslot >= '0' && keystrokeslot <= '9'))
26471 {
26472 return __FCNoInciOther::SaveAs(keystrokeslot);
26473 }
26474 return false;
26475 }
26476
26478 bool SaveNew() override { return false; }
26479
26482 virtual bool SaveAs([[maybe_unused]]CMPER cmper) override { return false; }
26483
26502
26503#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
26505 luabridge::RefCountedPtr<__FCBaseData> CreateLinkedObject_GC()
26506 { return makeLuaSharedPtr(CreateLinkedObject()); }
26507#endif
26508
26509#ifdef PDK_FRAMEWORK_DEBUG
26510 void DebugDump() override
26511 {
26513 switch (_mode)
26514 {
26515#ifdef PDK_FRAMEWORK_ENTRIES
26516 case MTOOLMODE_TUPLET:
26517 DebugDataDump();
26518 break;
26519#endif
26520 default:
26521 DebugOutInt("item1: ", _metatool.item1);
26522 DebugOutInt("item2: ", _metatool.item2);
26523 DebugOutInt("item3: ", _metatool.item3);
26524 DebugOutInt("item4: ", _metatool.item4);
26525 DebugOutInt("item5: ", _metatool.item5);
26526 DebugOutInt("item6: ", _metatool.item6);
26527 break;
26528 }
26529 }
26530#endif
26531};
26532
26533
26534#ifdef PDK_FRAMEWORK_ENIGMASTRINGS
26546{
26547private:
26548#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26550 EDTBookmark2012 _bookmark;
26551
26552protected:
26553 EXTAG Tag() const override { return ot_Bookmark2012; }
26554 int DataSizeLoad() const override { return sizeof(_bookmark); }
26555 void* Allocate() override { return (void*) &_bookmark; }
26556
26561 void CloneMemoryFrom(__FCBaseData* pSource) override
26562 {
26563 memcpy(&_bookmark, ((FCBookmark*)pSource)->_GetBookmark(), DataSizeLoad());
26564 _datablock = _GetBookmark();
26566 }
26567
26568 __FCBaseData* CreateObject() override { return new FCBookmark(); }
26569#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
26570public:
26571
26572 const char* ClassName() const override { return "FCBookmark"; }
26573 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_BOOKMARK; }
26574
26575#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26582 void* _GetBookmark() { return &_bookmark; }
26583
26585 bool LoadFirst() override
26586 {
26587 SetCmperAndInci(0, 0);
26588 return LoadNext();
26589 }
26590
26592 bool Save() override;
26593
26595 bool SaveNew() override;
26596
26597#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
26598
26608
26614 {
26615 memset(_GetBookmark(), 0, DataSizeLoad());
26616 _datablock = _GetBookmark();
26618 }
26619
26632 {
26633 FCBookmarkText text;
26634 if (! text.Load(_bookmark.nameRawTextID))
26635 return nullptr;
26636 FCString* retval = text.CreateString();
26637 retval->TrimEnigmaFontTags();
26638 return retval;
26639 }
26640
26641#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
26643 luabridge::RefCountedPtr<FCString> CreateNameString_GC()
26644 { return makeLuaSharedPtr(CreateNameString()); }
26645#endif
26646
26661 bool SaveNameString(const FCString* pString);
26662
26669#ifndef PDK_FRAMEWORK_LUAFRIENDLY
26671#else
26672 int
26673#endif
26674 GetViewType() const { return (BOOKMARKTYPES)_bookmark.view; }
26675
26682 ePercent GetViewPercent() const { return _bookmark.viewPercent; }
26683
26688 bool GetUseViewPercent() const { return MAKEBOOL(_bookmark.scaleView); }
26689
26696 int GetLocator() const { return _bookmark.page_meas; }
26697
26707 int GetHorizontalPosInst() const { return _bookmark.horizpos_inst; }
26708
26713 bool GetUseHorizontalPosInst() const { return GetBitFlag(_bookmark.flag, BM_SCRL_HORIZINST); }
26714
26725 {
26727 return static_cast<utwobyte>(_bookmark.vertpos_staffset) - IU_STAFFSET1 + 1;
26728 return _bookmark.vertpos_staffset;
26729 }
26730
26735 bool GetUseVerticalPosStaffSet() const { return GetBitFlag(_bookmark.flag, BM_SCRL_VERTSTAFFSET); }
26736
26745#ifndef PDK_FRAMEWORK_LUAFRIENDLY
26747#else
26748 int
26749#endif
26750 value) { _bookmark.view = (twobyte)value; }
26751
26758 void SetViewPercent(ePercent value) {_bookmark.viewPercent = value; }
26759
26764 void SetUseViewPercent(bool state) { _bookmark.scaleView = state; }
26765
26773 void SetLocator(int value) { _bookmark.page_meas = value; }
26774
26784 void SetHorizontalPosInst(int value) { _bookmark.horizpos_inst = value; }
26785
26790 void SetUseHorizontalPosInst(bool state) { Set16BitFlag(&_bookmark.flag, BM_SCRL_HORIZINST, state); }
26791
26802 {
26804 _bookmark.vertpos_staffset = IU_STAFFSET1 + value - 1;
26805 else
26806 _bookmark.vertpos_staffset = value;
26807 }
26808
26813 void SetUseVerticalPosStaffSet(bool state) { Set16BitFlag(&_bookmark.flag, BM_SCRL_VERTSTAFFSET, state); }
26814
26821 bool IsForPageView() const
26822 { return GetViewType() == BOOKMARKTYPE_PAGEVIEW; }
26823
26830 bool IsForScrollView() const
26831 { return GetViewType() == BOOKMARKTYPE_SCROLLVIEW; }
26832
26833#ifdef PDK_FRAMEWORK_DEBUG
26834 void DebugDump() override
26835 {
26837 this->DebugDataDump();
26838 }
26839#endif
26840
26841};
26842#endif // PDK_FRAMEWORK_ENIGMASTRINGS
26843
26844#ifndef DOXYGEN_SHOULD_IGNORE_THIS
26845
26846#include "pragma_align_begin.h"
26847struct _FCEDTKeyFormat
26848{
26849 twobyte totalSteps; // number elements in EDTKeyStep array (12 for std key)
26850 twobyte numDiatonicSteps; // (7 for std key)
26851private:
26852 twobyte filler[4];
26853};
26854#include "pragma_align_end.h"
26855
26856//cmper = key cmper from eKey
26857//inci = 0
26858#define __ot_KeyFormat MAKEEXTAG(edOther,'K','F')
26859
26860#include "pragma_align_begin.h"
26861struct _FCEDTKeyAttributes
26862{
26863 twobyte harmonicRef;
26864 eMIDIkey middleKey;
26865 EFONTID symbolFont; //enigma font id of accidental symbols
26866 twobyte gotoKeyUnit;
26867 twobyte symListID; //cmper of accidental symbols
26868 FLAG_16 flags;
26869
26870// flag values:
26871#define KEYSATTRIB_HAS_CLEFOCTV 0x0001 // indicates that accidental octave placement records exists
26872};
26873#include "pragma_align_end.h"
26874
26875//cmper = key cmper from eKey
26876//inci = 0
26877#define __ot_KeyAttributes MAKEEXTAG(edOther,'K','A')
26878
26879#include "pragma_align_begin.h"
26880struct __FCEDTKeyStep
26881{
26882 twobyte diatonicStep;
26883 FLAG_16 flag;
26884
26885//flag values:
26886#define KEYSTEP_IS_NEXT_DIATONIC_STEP 0x8000
26887};
26888#include "pragma_align_end.h"
26889
26890//multi-inci array of EDTKeyStep (
26891//cmper = key cmper from eKey
26892#define __ot_KeyStepMap MAKEEXTAG(edOther,'K','M')
26893
26894// cmper1 = cmper from _FCEDTKeyAttributes.symListID
26895// cmper2 = list element (1..7 or -1..-7)
26896// inci = 0
26897#define __dt_KeyAcciSymbol MAKEEXTAG(edDetail,'K','S')
26898
26899// inci array of twobytes
26900// cmper = key cmper from eKey
26901// inci = 0
26902#define __ot_KeyAcciOrderPositive MAKEEXTAG(edOther,'O','p') //0..6 (for 1 up to 7)
26903#define __ot_KeyAcciOrderNegative MAKEEXTAG(edOther,'O','n') //0..6 (for -1 down to -7)
26904
26905// inci array of twobytes
26906// cmper = key cmper from eKey
26907#define __ot_KeyAcciAmountPositive MAKEEXTAG(edOther,'A','p') //0..6 (for 1 up to 7)
26908#define __ot_KeyAcciAmountNegative MAKEEXTAG(edOther,'A','n') //0..6 (for -1 down to -7)
26909
26910// inci array of twobytes
26911// cmper = key cmper from eKey
26912#define __ot_KeyToneCenterPositive MAKEEXTAG(edOther,'T','p') //0..7 (for 0 up to 7)
26913#define __ot_KeyToneCenterNegative MAKEEXTAG(edOther,'T','n') //0..7 (for 0 down to -7, but 0 not used)
26914
26915// inci array of twobytes
26916// cmper1 = key cmper from eKey
26917// cmper2 = clef id
26918#define __dt_KeyOctavePlacementPositive MAKEEXTAG(edDetail,'C','p') //0..6 (for 1 up to 7)
26919#define __dt_KeyOctavePlacementNegative MAKEEXTAG(edDetail,'C','n') //0..6 (for -1 down to -7)
26920
26921// As far as I know custom key modes are the only Enigma data that use parallel
26922// positive and negative arrays like this. RGP 3/6/2024
26923
26924template<EXTAG TAGP, EXTAG TAGN, int MAXSIZE, bool CONSTRAIN_VALUES>
26925class __FCDualArray
26926{
26927 static_assert(MAXSIZE == 7 || MAXSIZE == 8, "MAXSIZE must be 7 o 8");
26928 static constexpr bool IS_DETAIL = HI_UTWOBYTE(TAGP) == edDetail;
26929
26930protected:
26931 using __FCPositiveArray = std::conditional_t<IS_DETAIL, __FCEnigmaDetailArray<twobyte, TAGP>, __FCEnigmaOtherArray<twobyte, TAGP>>;
26932 using __FCNegativeArray = std::conditional_t<IS_DETAIL, __FCEnigmaDetailArray<twobyte, TAGN>, __FCEnigmaOtherArray<twobyte, TAGN>>;
26933
26934 __FCPositiveArray _positive;
26935 __FCNegativeArray _negative;
26936
26937private:
26938 twobyte __getActualX(twobyte x) const
26939 {
26940 twobyte actualX = std::abs(x);
26941 if constexpr (MAXSIZE == 7)
26942 {
26943 if (actualX == 0)
26944 {
26945#ifdef PDK_FRAMEWORK_LUAFRIENDLY
26946 throw std::runtime_error("zero is not a valid index");
26947#endif
26948 assert(actualX);
26949 return 0;
26950 }
26951 actualX--;
26952 }
26953 if (actualX >= MAXSIZE)
26954 {
26955#ifdef PDK_FRAMEWORK_LUAFRIENDLY
26956 throw std::runtime_error("index out of range: " + std::to_string(x));
26957#endif
26958 return actualX % MAXSIZE;
26959 }
26960 return actualX;
26961 }
26962
26963protected:
26964 __FCDualArray() : _positive(MAXSIZE), _negative(MAXSIZE)
26965 {
26966 _positive.Reset();
26967 _negative.Reset();
26968 }
26969
26970public:
26971 twobyte operator[](twobyte x) const
26972 {
26973 twobyte actualX = __getActualX(x);
26974 if (x < 0) return _negative[actualX];
26975 return _positive[actualX];
26976 }
26977
26978 twobyte& operator[](twobyte x)
26979 {
26980 twobyte actualX = __getActualX(x);
26981 if (x < 0) return _negative[actualX];
26982 return _positive[actualX];
26983 }
26984
26985 int NumPositive() const { return _positive.NumElements(); }
26986 int NumNegative() const { return _negative.NumElements(); }
26987
26988 __FCDualArray& operator=(const std::map<twobyte, twobyte>& values)
26989 {
26990 _positive.Reset();
26991 _negative.Reset();
26992 for (auto value : values)
26993 {
26994 if (value.first >= 0 && !NumPositive())
26995 _positive.AllocateFor(MAXSIZE);
26996 else if (value.first < 0 && !NumNegative())
26997 _negative.AllocateFor(MAXSIZE);
26998 if constexpr(CONSTRAIN_VALUES)
26999 {
27000 if (value.second < 0 || value.second > 6)
27001 {
27002#ifdef PDK_FRAMEWORK_LUAFRIENDLY
27003 throw std::runtime_error("value must be between 0 and 6: got " + std::to_string(value.second));
27004#endif
27005 (*this)[value.first] = std::abs(value.second) % 6;
27006 return *this;
27007 }
27008 }
27009 (*this)[value.first] = value.second;
27010 }
27011 return *this;
27012 }
27013
27014 operator std::map<twobyte, twobyte>() const
27015 {
27016 std::map<twobyte, twobyte> values;
27017 const twobyte xoff = (MAXSIZE == 7) ? 1 : 0;
27018 for (twobyte x = 0; x < NumPositive(); x++)
27019 {
27020 if (x >= MAXSIZE) break;
27021 values[x + xoff] = _positive[x];
27022 }
27023 const twobyte startneg = (MAXSIZE == 7) ? 0 : 1;
27024 for (twobyte x = startneg; x < NumNegative(); x++)
27025 {
27026 if (x >= MAXSIZE) break;
27027 values[-x - xoff] = _negative[x];
27028 }
27029 return values;
27030 }
27031
27032 bool Load(CMPER cmper, CMPER cmper2)
27033 {
27034 bool retval = false;
27035 if constexpr(IS_DETAIL)
27036 {
27037 if (_positive.Load(cmper, cmper2)) retval = true;
27038 if (_negative.Load(cmper, cmper2)) retval = true;
27039 }
27040 else
27041 {
27042 if (_positive.Load(cmper)) retval = true;
27043 if (_negative.Load(cmper)) retval = true;
27044 }
27045 return retval;
27046 }
27047
27048 bool SaveAs(CMPER cmper, CMPER cmper2)
27049 {
27050 if constexpr(IS_DETAIL)
27051 return _positive.SaveAs(cmper, cmper2) && _negative.SaveAs(cmper, cmper2);
27052 else
27053 return _positive.SaveAs(cmper) && _negative.SaveAs(cmper);
27054 }
27055
27056 bool Delete(CMPER cmper)
27057 {
27058 bool deleted = false;
27059 if (__FCPositiveArray().Delete(cmper)) deleted = true;
27060 if (__FCNegativeArray().Delete(cmper)) deleted = true;
27061 return deleted;
27062 }
27063};
27064
27065template<EXTAG TAGP, EXTAG TAGN, int MAXSIZE, bool CONSTRAIN_VALUES = true>
27066class __FCDualOtherArray : public __FCDualArray<TAGP, TAGN, MAXSIZE, CONSTRAIN_VALUES>
27067{
27068 using __FCDualOtherArrayBase = __FCDualArray<TAGP, TAGN, MAXSIZE, CONSTRAIN_VALUES>;
27069
27070public:
27071 __FCDualOtherArray() = default;
27072
27073 using __FCDualOtherArrayBase::operator=;
27074 using __FCDualOtherArrayBase::operator std::map<twobyte, twobyte>;
27075
27076 bool Load(CMPER cmper)
27077 { return __FCDualOtherArrayBase::Load(cmper, 0); }
27078
27079 bool SaveAs(CMPER cmper)
27080 { return __FCDualOtherArrayBase::SaveAs(cmper, 0); }
27081};
27082
27083template<EXTAG TAGP, EXTAG TAGN, int MAXSIZE, bool CONSTRAIN_VALUES = true>
27084class __FCDualDetailArray : public __FCDualArray<TAGP, TAGN, MAXSIZE, CONSTRAIN_VALUES>
27085{
27086 using __FCDualDetailArrayBase = __FCDualArray<TAGP, TAGN, MAXSIZE, CONSTRAIN_VALUES>;
27087
27088public:
27089 __FCDualDetailArray() = default;
27090 using __FCDualDetailArrayBase::operator=;
27091 using __FCDualDetailArrayBase::operator std::map<twobyte, twobyte>;
27092};
27093
27094using __FCCustomKeyModeTonalCenters = __FCDualOtherArray<__ot_KeyToneCenterPositive, __ot_KeyToneCenterNegative, 8>;
27095using __FCCustomKeyModeAcciOrder = __FCDualOtherArray<__ot_KeyAcciOrderPositive, __ot_KeyAcciOrderNegative, 7>;
27096using __FCCustomKeyModeAcciAmounts = __FCDualOtherArray<__ot_KeyAcciAmountPositive, __ot_KeyAcciAmountNegative, 7, false>;
27097using __FCCustomKeyClefOctavePlacement = __FCDualDetailArray<__dt_KeyOctavePlacementPositive, __dt_KeyOctavePlacementNegative, 7, false>;
27098
27099class __FCCustomKeyClefOctavePlacements
27100{
27101 std::vector<__FCCustomKeyClefOctavePlacement> _placements;
27102
27103public:
27104 __FCCustomKeyClefOctavePlacements() = default;
27105
27106 __FCCustomKeyClefOctavePlacements& operator=(const std::vector<std::map<twobyte, twobyte>>& values)
27107 {
27108 _placements.clear();
27109 _placements.resize(values.size());
27110 for (size_t x = 0; x < _placements.size(); x++)
27111 _placements[x] = values[x];
27112 return *this;
27113 }
27114
27115 operator std::vector<std::map<twobyte, twobyte>>() const
27116 {
27117 std::vector<std::map<twobyte, twobyte>> retval(_placements.size());
27118 for (size_t x = 0; x < _placements.size(); x++)
27119 retval[x] = _placements[x];
27120 return retval;
27121 }
27122
27123 bool Load(CMPER cmper);
27124
27125 bool SaveAs(CMPER cmper)
27126 {
27127 for (CMPER x = 0; x < _placements.size(); x++)
27128 {
27129 if (!_placements[x].SaveAs(cmper, x)) return false;
27130 }
27131 return true;
27132 }
27133
27134 bool Delete(CMPER cmper)
27135 {
27136 return __FCCustomKeyClefOctavePlacement().Delete(cmper);
27137 }
27138};
27139
27140#endif // DOXYGEN_SHOULD_IGNORE_THIS
27141
27151{
27152 using symbolMap = std::map<twobyte, std::string>;
27153
27154 CMPER _itemno;
27155 symbolMap _list; // key: 1..7 for sharps, -1..-7 for flats, 0 for natural; value: utf8-encoded string
27156
27158 : _itemno(src._itemno), _list(src._list)
27159 {}
27160
27161public:
27162 const char* ClassName() const override { return "FCCustomKeyModeSymbolList"; }
27163
27164#ifndef DOXYGEN_SHOULD_IGNORE_THIS
27165 FCCustomKeyModeSymbolList* CreateClone() const
27166 { return new FCCustomKeyModeSymbolList(*this); }
27167#endif
27168
27173 FCCustomKeyModeSymbolList() : _itemno(kNewCmper) {}
27174
27179 bool Load(CMPER itemno);
27180
27185 bool LoadNext();
27186
27191 bool LoadFirst();
27192
27200 bool Save();
27201
27207 bool SaveAs(CMPER itemno)
27208 {
27209 _itemno = itemno;
27210 return Save();
27211 }
27212
27217 bool DeleteData();
27218
27224 CMPER GetItemNo() const { return _itemno; }
27225
27234 symbolMap GetList() const { return _list; }
27235
27250 void SetList(symbolMap list) { _list = list; }
27251
27257 FCString* CreateListString() const;
27258
27259#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
27261 luabridge::RefCountedPtr<FCString> CreateListString_GC() const
27262 { return makeLuaSharedPtr(CreateListString()); }
27263#endif
27264
27273 static symbolMap GetDefaultList();
27274
27281 bool CalcIsDefaultList() const;
27282};
27283
27318{
27319private:
27320 _FCEDTKeyFormat _format;
27321 _FCEDTKeyAttributes _attributes;
27322 std::vector<eHarmLev> _stepmap;
27323 __FCCustomKeyModeTonalCenters _tonalcenters;
27324 __FCCustomKeyModeAcciOrder _acciorder;
27325 __FCCustomKeyModeAcciAmounts _acciamounts;
27326 __FCCustomKeyClefOctavePlacements _clefplacements;
27327
27328 bool _LoadChildData();
27329 bool _SaveChildData();
27330 bool _DeleteChildData();
27331
27332 bool _LoadStepMap();
27333 bool _SaveStepMap();
27334
27336 bool SaveNew() override
27337 {
27338#if PDK_FRAMEWORK_LUAFRIENDLY
27339 throw std::runtime_error("SaveNew not implemented for FCCustomKeyModeDef");
27340#endif
27341 return false;
27342 }
27343
27344protected:
27345#ifndef DOXYGEN_SHOULD_IGNORE_THIS
27346 EXTAG Tag() const override { return __ot_KeyFormat; }
27347 int DataSizeLoad() const override { return sizeof(_format); }
27348 void* Allocate() override { return (void*) &_format; }
27349
27354 void CloneMemoryFrom(__FCBaseData* pSource) override
27355 {
27356 FCCustomKeyModeDef* pSourceKeyModeDef = dynamic_cast<FCCustomKeyModeDef*>(pSource);
27357 assert(pSourceKeyModeDef);
27358 _format = pSourceKeyModeDef->_format;
27359 _attributes = pSourceKeyModeDef->_attributes;
27360 _stepmap = pSourceKeyModeDef->_stepmap;
27361 _tonalcenters = pSourceKeyModeDef->_tonalcenters;
27362 _acciorder = pSourceKeyModeDef->_acciorder;
27363 _acciamounts = pSourceKeyModeDef->_acciamounts;
27364 _clefplacements = pSourceKeyModeDef->_clefplacements;
27365 _datablock = Allocate();
27367 }
27368
27369 __FCBaseData* CreateObject() override { return new FCCustomKeyModeDef(); }
27370#endif /* DOXYGEN_SHOULD_IGNORE_THIS */
27371public:
27372 const char* ClassName() const override { return "FCCustomKeyModeDef"; }
27373 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_KEYMODEDEF; }
27374
27380 {
27381 memset(&_attributes, 0, sizeof(_attributes));
27382 memset(&_format, 0, sizeof(_format));
27383 }
27384
27385#ifndef DOXYGEN_SHOULD_IGNORE_THIS
27387 bool LoadFirst() override
27388 {
27389 if (Load(0)) return true;
27390 return LoadNext();
27391 }
27392
27394 bool LoadNext() override
27395 {
27396 // Due to Finale bug, calling FX_NextEData with extag of __ot_KeyFormat and null buffer crashes Finale.
27397 // Therefore we cannot call the base class LoadNext (__FCBaseData::LoadNext).
27398 _FCEDTKeyFormat format;
27399 if (!FX_NextEData(Tag(), &_dataid, &format, sizeof(format), EnigmaVersion())) return false;
27400 return Load(_dataid.other.cmper);
27401 }
27402
27404 bool Load(CMPER itemno) override
27405 {
27406 if (! __FCNoInciOther::Load(itemno)) return false;
27407 return _LoadChildData();
27408 }
27409
27411 bool Save() override
27412 {
27413 _format.numDiatonicSteps = static_cast<twobyte>(_stepmap.size());
27414 if (! __FCNoInciOther::Save()) return false;
27415 return _SaveChildData();
27416 }
27417
27419 bool DeleteData() override
27420 {
27421 if (!_DeleteChildData()) return false;
27423 }
27424#endif // DOXYGEN_SHOULD_IGNORE_THIS
27425
27430 bool SaveNewLinear();
27431
27436 bool SaveNewNonLinear();
27437
27452 static bool DeleteItemNo(CMPER itemno)
27453 {
27455 def.SetCmperAndInci(itemno, 0);
27456 return def.DeleteData();
27457 }
27458
27468 eKey GetKeyID(int accidentalnumber = 0) const
27469 {
27470 if (IsLinear())
27471 return ::MakeLinearKey(accidentalnumber, GetItemNo());
27472 return GetItemNo();
27473 }
27474
27475#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
27477 static int GetKeyID_CFunc(lua_State *L)
27478 {
27479 return _CFunctionOneOptionalParameter<FCCustomKeyModeDef, eKey, int, &FCCustomKeyModeDef::GetKeyID>(L, 0);
27480 }
27481#endif
27482
27492 bool IsLinear() const { return ::IsLinearKeyMode(GetItemNo()); }
27493
27500 bool IsNonLinear() const { return !::IsLinearKey(GetItemNo()); }
27501
27506 bool IsPredefined() const { return ::IsPredefinedKeyMode(GetItemNo()); }
27507
27514 twobyte GetHarmonicReference() const { return _attributes.harmonicRef; }
27515
27524 void SetHarmonicReference(twobyte value) { _attributes.harmonicRef = value; }
27525
27532 twobyte GetMiddleKeyNumber() const { return _attributes.middleKey; }
27533
27551 void SetMiddleKeyNumber(twobyte value) { _attributes.middleKey = value; }
27552
27559 twobyte GetGoToKeyUnit() const { return _attributes.gotoKeyUnit; }
27560
27575 void SetGoToKeyUnit(twobyte value) { _attributes.gotoKeyUnit = value; }
27576
27585 twobyte GetSymbolListID() const { return _attributes.symListID; }
27586
27595 void SetSymbolListID(twobyte value) { _attributes.symListID = value; }
27596
27603 bool GetHasClefAccidentalPlacements() const { return GetBitFlag(_attributes.flags, KEYSATTRIB_HAS_CLEFOCTV); }
27604
27611 void SetHasClefAccidentalPlacements(bool state) { Set16BitFlag(&_attributes.flags, KEYSATTRIB_HAS_CLEFOCTV, state); }
27612
27619 EFONTID GetAccidentalFontID() const { return _attributes.symbolFont; }
27620
27631 void SetAccidentalFontID(const EFONTID value) { _attributes.symbolFont = value; }
27632
27643
27644#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
27646 luabridge::RefCountedPtr<FCFontInfo> CreateAccidentalFontInfo_GC() const
27647 { return makeLuaSharedPtr(CreateAccidentalFontInfo()); }
27648#endif
27649
27650
27657 twobyte GetTotalChromaticSteps() const { return _format.totalSteps; }
27658
27670 void SetTotalChromaticSteps(twobyte value) { _format.totalSteps = value; }
27671
27690 std::vector<eHarmLev> GetDiatonicStepsMap() const { return _stepmap; }
27691
27702 void SetDiatonicStepsMap(const std::vector<eHarmLev>& list) { _stepmap = list; }
27703
27713 std::map<twobyte, twobyte> GetTonalCenters() const { return _tonalcenters; }
27714
27771 void SetTonalCenters(const std::map<twobyte, twobyte>& values) { _tonalcenters = values; }
27772
27781 twobyte GetBaseTonalCenter() const
27782 {
27783 if (_tonalcenters.NumPositive() <= 0)
27784 return GetItemNo() == KEYMODE_MINOR ? 5 : 0;
27785 return _tonalcenters[0];
27786 }
27787
27803 void SetBaseTonalCenter(twobyte value)
27804 {
27805 if (value < 0 || value > 6)
27806 {
27807#ifdef PDK_FRAMEWORK_LUAFRIENDLY
27808 throw std::runtime_error("value must be between 0 and 6; got " + std::to_string(value));
27809#endif
27810 return;
27811 }
27812 if (value == 0 || (value == 5 && GetItemNo() == KEYMODE_MINOR))
27813 {
27814 // do not create tonal centers if they are not necessary.
27815 if (_tonalcenters.NumPositive() == 0 && _tonalcenters.NumNegative() == 0)
27816 return;
27817 }
27818 if (IsNonLinear())
27819 {
27820 SetTonalCenters({{0, value}, {1,0}, {2,0}, {3,0}, {4,0}, {5,0}, {6,0}, {7,0}});
27821 return;
27822 }
27823 auto tonalCenters = GetDefaultTonalCenters();
27824 if (value > 0)
27825 {
27826 for (auto& tonalCenter : tonalCenters)
27827 tonalCenter.second = (tonalCenter.second + value) % 7;
27828 }
27829 SetTonalCenters(tonalCenters);
27830 }
27831
27841 static std::map<twobyte, twobyte> GetDefaultTonalCenters()
27842 {
27843 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}};
27844 }
27845
27850 static bool CalcIsDefaultTonalCenters(const std::map<twobyte, twobyte>& values)
27851 {
27852 return values == GetDefaultTonalCenters();
27853 }
27854
27864 std::map<twobyte, twobyte> GetAccidentalOrder() const { return _acciorder; }
27865
27930 void SetAccidentalOrder(const std::map<twobyte, twobyte>& values) { _acciorder = values; }
27931
27940 static std::map<twobyte, twobyte> GetDefaultAccidentalOrder()
27941 {
27942 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}};
27943 }
27944
27949 static bool CalcIsDefaultAccidentalOrder(const std::map<twobyte, twobyte>& values)
27950 {
27951 return values == GetDefaultAccidentalOrder();
27952 }
27953
27963 std::map<twobyte, twobyte> GetAccidentalAmounts() const { return _acciamounts; }
27964
28016 void SetAccidentalAmounts(const std::map<twobyte, twobyte>& values) { _acciamounts = values; }
28017
28024 static std::map<twobyte, twobyte> GetDefaultAccidentalAmounts()
28025 {
28026 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}};
28027 }
28028
28033 static bool CalcIsDefaultAccidentalAmounts(const std::map<twobyte, twobyte>& values)
28034 {
28035 return values == GetDefaultAccidentalAmounts();
28036 }
28037
28046 std::vector<std::map<twobyte, twobyte>> GetClefAccidentalPlacements() const { return _clefplacements; }
28047
28070 void SetClefAccidentalPlacements(const std::vector<std::map<twobyte, twobyte>>& values) { _clefplacements = values; }
28071
28080 static std::vector<std::map<twobyte, twobyte>> GetDefaultClefAccidentalPlacements()
28081 {
28082 return
28083 {
28084 {{-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}},
28085 {{-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}},
28086 {{-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}},
28087 {{-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}},
28088 {{-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}},
28089 {{-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}},
28090 {{-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}},
28091 {{-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}},
28092 {{-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}},
28093 {{-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}},
28094 {{-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}},
28095 {{-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}},
28096 {{-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}},
28097 {{-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}},
28098 {{-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}},
28099 {{-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}},
28100 {{-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}},
28101 {{-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}}
28102 };
28103 }
28104
28109 static bool CalcIsDefaultClefAccidentalPlacements(const std::vector<std::map<twobyte, twobyte>>& values)
28110 {
28111 return values == GetDefaultClefAccidentalPlacements();
28112 }
28113
28126 FCKeySignature* CreateKeySignature(eHarmAlt alteration = 0) const;
28127
28128#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
28130private:
28131 luabridge::RefCountedPtr<FCKeySignature> CreateKeySignature_GC(eHarmAlt alteration)
28132 { return makeLuaSharedPtr(CreateKeySignature(alteration)); }
28133public:
28135 static int CreateKeySignature_CFunc(lua_State *L)
28136 {
28137 return _CFunctionOneOptionalParameter<FCCustomKeyModeDef, luabridge::RefCountedPtr<FCKeySignature>, eHarmAlt, &FCCustomKeyModeDef::CreateKeySignature_GC>(L, 0);
28138 }
28139#endif
28140
28141};
28142
28143#endif /* _FF_OTHER_H */
28144
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:20167
void SetWidth(Evpu16 width)
Sets the allotment reference width (int EVPUs).
Definition ff_other.h:20238
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:20211
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:20255
FCAllotment()
The constructor.
Definition ff_other.h:20227
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:20210
Evpu16 GetWidth() const
Returns the allotment reference width (int EVPUs).
Definition ff_other.h:20248
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:23176
FCTextRepeat::REPSHOWMODES GetShowMode() const
Returns on which staves the backward repeat should be shown.
Definition ff_other.h:23326
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:23416
void SetBottomBracketPosition(Evpu16 position)
Sets the vertical bottom position of the bracket.
Definition ff_other.h:23453
void SetRightBracketPosition(Evpu16 position)
Sets the horizontal right-side position of the bracket.
Definition ff_other.h:23462
twobyte GetStaffListID() const
Gets the staff list ID.
Definition ff_other.h:23310
Evpu16 GetBottomBracketPosition() const
Returns the vertical bottom position of the bracket.
Definition ff_other.h:23283
Evpu16 GetRightBracketPosition() const
Returns the horizontal right-side position of the bracket.
Definition ff_other.h:23292
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:23397
void SetVisible(bool state)
Sets if the repeat is visible. ("Show" is checked in the context menu.)
Definition ff_other.h:23387
void SetIndividualPositioning(bool state)
Returns true if the bracket has individual positioning.
Definition ff_other.h:23378
eMeas GetTargetMeasure() const
Sets the playback destination measure for the backward repeat.
Definition ff_other.h:23234
void SetLeftBracketPosition(Evpu16 position)
Sets the horizontal left-side position of the bracket.
Definition ff_other.h:23471
Evpu16 GetTopBracketPosition() const
Returns the vertical top position of the bracket.
Definition ff_other.h:23274
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:23493
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:23206
bool GetVisible() const
Returns true if the repeat is visible. ("Show" is checked in the context menu.)
Definition ff_other.h:23255
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:23205
void SetResetOnRepeatAction(bool state)
Sets the "Reset on Repeat Action" state.
Definition ff_other.h:23527
void SetTargetMeasure(eMeas measure)
Sets the playback destination measure for the backward repeat.
Definition ff_other.h:23369
bool GetResetOnRepeatAction() const
Returns the "Reset on Repeat Action" state.
Definition ff_other.h:23435
void SetShowMode(FCTextRepeat::REPSHOWMODES mode)
Sets where the backward repeat should be shown.
Definition ff_other.h:23339
FCBackwardRepeat()
The constructor.
Definition ff_other.h:23222
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:23545
Evpu16 GetLeftBracketPosition() const
Returns the horizontal left-side position of the bracket.
Definition ff_other.h:23301
bool GetIndividualPositioning() const
Returns true if the bracket has individual positioning.
Definition ff_other.h:23243
void SetStaffListID(twobyte stafflistid)
Sets the staff list ID.
Definition ff_other.h:23480
void SetTopBracketPosition(Evpu16 position)
Sets the vertical position of the bracket.
Definition ff_other.h:23444
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:23265
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:23573
The class for one single beat chart element.
Definition ff_other.h:23635
Evpu16 GetMinimumPosition() const
Returns the minimum position for the element.
Definition ff_other.h:23754
void SetNextHorizontalPosition(Evpu16 value)
Sets the next position in the measure.
Definition ff_other.h:23897
void SetMinimumPosition(Evpu16 value)
Sets the minimum position for the element.
Definition ff_other.h:23913
Evpu16 GetReferenceWidth() const
Returns the reference width for the beat chart.
Definition ff_other.h:23821
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:23679
void SetHorizontalPosition(Evpu16 position)
Sets the position of the beat chart element.
Definition ff_other.h:23883
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:23832
void SetFullSpan(Evpu16 span)
Sets the full span for the beat chart.
Definition ff_other.h:23937
Evpu16 GetHorizontalPosition() const
Returns the position in the measure for the element (in EVPUs).
Definition ff_other.h:23726
Evpu16 GetNextHorizontalPosition() const
Returns the next position in the measure.
Definition ff_other.h:23739
void SetMeasurePos(TimeEdu32 edupos)
Sets the duration reference position for the element.
Definition ff_other.h:23859
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:23680
TimeEdu32 GetTotalDuration() const
Returns the total duration for the beat chart.
Definition ff_other.h:23770
Evpu16 GetMinimumWidth() const
Returns the minimum width for the beat chart.
Definition ff_other.h:23803
FCBeatChartElement()
The constructor.
Definition ff_other.h:23697
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:23952
TimeEdu32 GetMeasurePos() const override
Return the duration reference position for the element.
Definition ff_other.h:23717
Evpu16 CalcWidth()
Calculates and returns the width of the beat chart element.
Definition ff_other.h:23846
void SetReferenceWidth(Evpu16 width)
Sets the reference width for the beat chart.
Definition ff_other.h:23964
Evpu16 GetFullSpan() const
Returns the full span for the beat chart.
Definition ff_other.h:23785
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:23987
void SetWidth(Evpu16 width)
Sets the width of the beat chart element.
Definition ff_other.h:23871
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:23925
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:26546
FCBookmark()
The constructor.
Definition ff_other.h:26613
void SetViewType(BOOKMARKTYPES value)
Sets the view type for the bookmark.
Definition ff_other.h:26744
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:26682
int GetHorizontalPosInst() const
Returns the first scroll locator for the bookmark.
Definition ff_other.h:26707
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:26834
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:26758
int GetLocator() const
Returns the locator for the bookmark.
Definition ff_other.h:26696
bool IsForScrollView() const
Returns true if this bookmark is for Scroll View.
Definition ff_other.h:26830
void SetLocator(int value)
Sets the locator for the bookmark.
Definition ff_other.h:26773
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:26572
int GetVerticalPosStaffSet() const
Returns the second scroll locator for the bookmark.
Definition ff_other.h:26724
bool GetUseHorizontalPosInst() const
Indicates whether to use the value returned by GetHorizontalPosInst.
Definition ff_other.h:26713
void SetHorizontalPosInst(int value)
Sets the first scroll locator for the bookmark.
Definition ff_other.h:26784
BOOKMARKTYPES GetViewType() const
Returns the view type for the bookmark.
Definition ff_other.h:26674
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:26573
bool GetUseVerticalPosStaffSet() const
Indicates whether to use the value returned by GetVerticalPosStaffSet.
Definition ff_other.h:26735
bool IsForPageView() const
Returns true if this bookmark is for Page View.
Definition ff_other.h:26821
bool SaveNameString(const FCString *pString)
Saves the name of the bookmark.
Definition finaleframework.cpp:13376
BOOKMARKTYPES
The bookmark type.
Definition ff_other.h:26601
@ BOOKMARKTYPE_PAGEVIEW
Definition ff_other.h:26603
@ BOOKMARKTYPE_SCROLLVIEW
Definition ff_other.h:26606
void SetUseVerticalPosStaffSet(bool state)
Sets whether to use the value specified by SetVerticalPosStaffSet.
Definition ff_other.h:26813
void SetUseHorizontalPosInst(bool state)
Sets whether to use the value specified by SetHorizontalPosInst.
Definition ff_other.h:26790
void SetVerticalPosStaffSet(int value)
Sets the second scroll locator for the bookmark.
Definition ff_other.h:26801
void SetUseViewPercent(bool state)
Sets if the view will be scaled. The scale value is specified by SetViewPercent.
Definition ff_other.h:26764
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:26631
bool GetUseViewPercent() const
Indicates if the view will be scaled. The scale value is specified by GetViewPercent.
Definition ff_other.h:26688
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:25870
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:25997
TimeEdu32 GetMeasurePos() const override
Returns the measure position (in EDUs) where the clef is placed in the measure.
Definition ff_other.h:25935
twobyte GetHorizontalOffset() const
Returns the horizontal adjustment for the mid-clef change.
Definition ff_other.h:25947
twobyte GetVerticalOffset() const
Returns the vertical adjustment for the mid-clef change.
Definition ff_other.h:25953
bool GetAllowVerticalDrag() const
Returns the "Allow Vertical Drag" setting.
Definition ff_other.h:25966
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:25973
void SetMeasurePos(twobyte value)
Sets the measure position (in EDUs) where the clef is placed in the measure.
Definition ff_other.h:25991
twobyte GetClefIndex() const
Returns the clef index.
Definition ff_other.h:25926
twobyte GetClefPercent() const
Returns the clef resizing, in percent.
Definition ff_other.h:25941
void SetHorizontalOffset(twobyte value)
Sets the horizontal adjustment for the mid-clef change.
Definition ff_other.h:26003
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:26040
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:26034
FCCellClefChange()
The constructor.
Definition finaleframework.cpp:13206
void SetAllowVerticalDrag(bool state)
Sets the "Allow Vertical Drag" setting.
Definition ff_other.h:26027
void SetVerticalOffset(twobyte value)
Sets the vertical adjustment for the mid-clef change.
Definition ff_other.h:26009
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:25904
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:25903
void SetClefIndex(twobyte value)
Sets the clef index.
Definition ff_other.h:25979
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:21697
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:21739
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:21740
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:21872
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:27318
static bool DeleteItemNo(CMPER itemno)
Class function that deletes all data associated with an item number.
Definition ff_other.h:27452
void SetBaseTonalCenter(twobyte value)
Sets the base tonal center for the key mode.
Definition ff_other.h:27803
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:28024
void SetMiddleKeyNumber(twobyte value)
Sets the "Middle Key Number" value from the Special Key Signature Attributes dialog.
Definition ff_other.h:27551
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:27372
std::map< twobyte, twobyte > GetAccidentalOrder() const
Definition ff_other.h:27864
twobyte GetBaseTonalCenter() const
Returns the base tonal center for the key mode.
Definition ff_other.h:27781
void SetAccidentalOrder(const std::map< twobyte, twobyte > &values)
Definition ff_other.h:27930
bool GetHasClefAccidentalPlacements() const
Returns whether the custom key mode has accidental octave placement records.
Definition ff_other.h:27603
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:27595
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:28033
std::map< twobyte, twobyte > GetAccidentalAmounts() const
Definition ff_other.h:27963
std::map< twobyte, twobyte > GetTonalCenters() const
Returns the table of tonal centers by number of sharps/flats.
Definition ff_other.h:27713
EFONTID GetAccidentalFontID() const
Returns the font ID for accidental symbols.
Definition ff_other.h:27619
void SetAccidentalAmounts(const std::map< twobyte, twobyte > &values)
Definition ff_other.h:28016
void SetDiatonicStepsMap(const std::vector< eHarmLev > &list)
Sets a list specifiying the chromatic step where each diatonic step occurs.
Definition ff_other.h:27702
twobyte GetMiddleKeyNumber() const
Returns the "Middle Key Number" value from the Special Key Signature Attributes dialog.
Definition ff_other.h:27532
twobyte GetHarmonicReference() const
Returns the "Harmonic Reference" value from the Special Key Signature Attributes dialog.
Definition ff_other.h:27514
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:28109
bool IsLinear() const
Returns true if this is a linear mode.
Definition ff_other.h:27492
bool IsPredefined() const
Returns true if this is a predefined mode (major or minor).
Definition ff_other.h:27506
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:27940
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:27468
twobyte GetSymbolListID() const
Returns the item number (ID) of the custom symbol list for accidentals, or zero if none....
Definition ff_other.h:27585
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:28080
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:28046
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:27949
void SetHasClefAccidentalPlacements(bool state)
Sets whether the custom key mode has accidental octave placement records.
Definition ff_other.h:27611
void SetGoToKeyUnit(twobyte value)
Sets the "Go to Key Unit" value from the Special Key Signature Attributes dialog.
Definition ff_other.h:27575
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:27841
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:27373
void SetTotalChromaticSteps(twobyte value)
Sets the "Total Steps" value from the Key Step Map dialog.
Definition ff_other.h:27670
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:27850
void SetTonalCenters(const std::map< twobyte, twobyte > &values)
Sets the table of tonal centers by number of sharps/flats.
Definition ff_other.h:27771
twobyte GetTotalChromaticSteps() const
Returns the "Total Steps" value from the Key Step Map dialog.
Definition ff_other.h:27657
void SetHarmonicReference(twobyte value)
Sets the "Harmonic Reference" value from the Special Key Signature Attributes dialog.
Definition ff_other.h:27524
twobyte GetGoToKeyUnit() const
Returns the "Go to Key Unit" value from the Special Key Signature Attributes dialog.
Definition ff_other.h:27559
FCCustomKeyModeDef()
The constructor.
Definition ff_other.h:27379
bool IsNonLinear() const
Returns true if this is a non-linear mode.
Definition ff_other.h:27500
void SetAccidentalFontID(const EFONTID value)
Sets the font ID for accidental symbols.
Definition ff_other.h:27631
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:27690
void SetClefAccidentalPlacements(const std::vector< std::map< twobyte, twobyte > > &values)
Definition ff_other.h:28070
Class that encapsulates the list of accidental symbols for instances of FCCustomKeyModeDef....
Definition ff_other.h:27151
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:27173
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:27162
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:27207
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:27250
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:27234
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:27224
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:22688
void SetVerticalTopBracketPosition(Evpu16 position)
Sets the top vertical position of the repeat bracket.
Definition ff_other.h:22953
void SetVerticalLeftBracketPosition(Evpu16 position)
Sets the vertical position of the repeat bracket's left side.
Definition ff_other.h:22971
bool GetVisible() const
Returns true if the repeat is visible. ("Show" is checked in the context menu.)
Definition ff_other.h:22784
eMeas GetTargetMeasure() const
Returns the target measure number.
Definition ff_other.h:22763
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:22723
void SetVisible(bool state)
Sets if the repeat is visible. ("Show" is checked in the context menu.)
Definition ff_other.h:22944
void SetSkipOnIgnore(bool state)
Returns the "Skip ending if ignoring repeats" setting.
Definition ff_other.h:22916
Evpu16 GetVerticalTopBracketPosition() const
Returns the top vertical position of the bracket.
Definition ff_other.h:22793
void SetStaffListID(twobyte list)
Sets the staff list ID to be used.
Definition ff_other.h:22905
Evpu16 GetHorizontalLeftBracketPosition() const
Returns the horizontal position of the bracket's left side.
Definition ff_other.h:22802
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:22708
Evpu16 GetHorizontalTextPosition() const
Returns the horizontal position of the repeat text.
Definition ff_other.h:22838
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:22847
void SetVerticalTextPosition(Evpu16 position)
Sets the vertical position of the repeat text.
Definition ff_other.h:23007
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:22829
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:23086
void SetHorizontalLeftBracketPosition(Evpu16 position)
Sets the horizontal position of the repeat bracket's left side.
Definition ff_other.h:22962
void SetHorizontalTextPosition(Evpu16 position)
Sets the horizontal position of the repeat text.
Definition ff_other.h:22998
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:22709
Evpu16 GetVerticalLeftBracketPosition() const
Returns the vertical position of the bracket's left side.
Definition ff_other.h:22811
bool GetSkipOnIgnore() const
Returns the "Skip ending if ignoring repeats" setting.
Definition ff_other.h:22754
Evpu16 GetHorizontalRightBracketPosition() const
Returns the horizontal position of the bracket's right side.
Definition ff_other.h:22820
void SetHorizontalRightBracketPosition(Evpu16 position)
Sets the horizontal position of the repeat bracket's right side.
Definition ff_other.h:22980
void SetIndividualPositioning(bool state)
Sets if the repeat bracket has individual staff positioning enabled or not.
Definition ff_other.h:22935
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:22748
int GetPassNumbersCount() const
Returns the number of pass numbers available to the ending repeat.
Definition ff_other.h:22869
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:22884
bool GetIndividualPositioning() const
Returns true if the bracket has individual staff positioning enabled.
Definition ff_other.h:22772
void SetTargetMeasure(eMeas measure)
Returns the target measure number. The value is dependent on GetTargetTrigger(), which is set with Se...
Definition ff_other.h:22926
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:22989
The class for an executable shape definition.
Definition ff_other.h:21610
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:21675
twobyte GetShapeID()
Returns the shape ID that is connected to the executable shape.
Definition ff_other.h:21668
void SetShapeID(twobyte shapeID)
Sets the shape ID that is connected to the executable shape.
Definition ff_other.h:21672
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:21650
FCExecutableShapeDef()
The constructor.
Definition ff_other.h:21664
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:21649
Class for expression assignments to a measure/staff.
Definition ff_other.h:17641
bool GetTracksVoice2() const
Returns if the assignment tracks Voice 2.
Definition ff_other.h:17951
bool IsSingleStaffAssigned()
Returns true if the expression is assigned to a single staff.
Definition ff_other.h:18008
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:18179
void SetMeasurePos(TimeEdu32 value)
Sets the expression position in EDUs.
Definition ff_other.h:18185
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:18063
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:18087
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:18197
void SetTracksVoice2(bool value)
Sets if the assignment tracks Voice 2.
Definition ff_other.h:18222
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:17999
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:18027
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:18173
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:18072
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:18044
void SetStaffListID(twobyte ID)
Sets the staff list ID for the expression.
Definition ff_other.h:18151
void SetGraceNoteIndex(twobyte index)
Sets the grace note index, for when expression are connected to grace notes.
Definition ff_other.h:18211
void SetPlaybackStart(EXPRESSION_PLAYBACK_STARTPOINTS value)
Sets the playback start point for the expression.
Definition ff_other.h:18101
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:18143
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:18225
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:18205
void SetLayerAssignment(twobyte layer)
Sets the layer that the expression is assigned to.
Definition ff_other.h:18052
void SetRehearsalMarkOffset(twobyte value)
Sets the rehearsal mark offset.
Definition ff_other.h:18166
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:18133
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:18015
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:18158
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:25447
bool SetDiatonicInfo(FCNumbers *pNumbers)
Sets the diatonic steps info, based on the numbers of a FCNumbers collection.
Definition ff_other.h:25810
twobyte GetStringTuning(int stringnumber)
Returns the MIDI number for a specific open string's tuning.
Definition ff_other.h:25704
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:25537
bool SetStringTuning(int stringnumber, twobyte midinumber)
Sets the MIDI number for a specific open string's tuning.
Definition ff_other.h:25732
bool GetDiatonicInfo(FCNumbers *pNumbers)
Fills a number collection with all the defined diatonic steps.
Definition ff_other.h:25784
twobyte GetFretCount() const
Returns the number of frets for the instrument definition.
Definition ff_other.h:25586
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:25536
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:25833
twobyte GetStringCount() const
Returns the number of strings for the instrument definition.
Definition ff_other.h:25604
bool GetName(FCString *pString)
Gets the name of the fretted instrument definition.
Definition ff_other.h:25650
bool SetName(FCString *pString)
Sets the name of the fretted instrument definition.
Definition ff_other.h:25677
bool LoadNext() override
Overridden version of LoadNext, to work with FCFretInstrumentDefs::LoadAll()
Definition ff_other.h:25543
void SetStringCount(twobyte count)
Sets the number of strings for the instrument definition.
Definition ff_other.h:25615
int GetDiatonicCount()
Returns the number of diatonic steps that are defined for the instrument.
Definition ff_other.h:25764
bool LoadFirst() override
Overridden version of LoadFirst, to work with FCFretInstrumentDefs::LoadAll()
Definition ff_other.h:25540
void SetFretCount(twobyte count)
Sets the number of frets for the instrument definition.
Definition ff_other.h:25595
void SetSpeedyClef(eClef clef)
Sets the clef number to be used in Speedy Edit.
Definition ff_other.h:25635
eClef GetSpeedyClef() const
Returns the clef number to be used in Speedy Edit.
Definition ff_other.h:25626
bool IsDiatonic()
Returns if the instrument has diatonic fretboard information defined or not.
Definition ff_other.h:25755
FCFretInstrumentDef()
The constructor.
Definition ff_other.h:25563
Class that stores one record of a fretboard chord definition.
Definition ff_other.h:22560
void SetFretInstrumentID(CMPER value)
Sets the ID for the FCFretInstrumentDef associated with this group.
Definition ff_other.h:22649
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:22586
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:22643
twobyte _GetInci()
Returns the inci for the fretboard (which indicates the alternate version of a fretboard).
Definition ff_other.h:22609
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:22664
void GetName(FCString *pString) const
Gets the name of the fretboard group.
Definition ff_other.h:22655
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:22587
void SetName(const FCString *pString)
Sets the name of the fretboard group.
Definition ff_other.h:22661
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:22602
FCFretboardGroupDef()
The constructor.
Definition ff_other.h:22600
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:22015
void SetFingeredShapeID(twobyte value)
Sets the shape ID of the "fingered" shape.
Definition ff_other.h:22475
void GetName(FCString *pString) const
Copies the style name to a FCString object.
Definition ff_other.h:22090
bool GetShowLastFret() const
Returns if the last fret should be shown when drawing the fretboards, or not.
Definition ff_other.h:22198
void SetNutThickness(Efix32 value)
Sets the nut thickness, in EFIXes.
Definition ff_other.h:22352
void SetFretNumberText(const FCString *pString)
Sets the fret number text, using a FCString object.
Definition ff_other.h:22414
void SetHorizontalFingeringOffset(Efix32 value)
Sets the horizontal offset for fingering numbers, in EFIXes.
Definition ff_other.h:22362
void GetFingeringFontInfo(FCFontInfo *pFontInfo)
Copies the fingering font information to a FCFontInfo object.
Definition ff_other.h:22265
void SetFretNumberFontInfo(FCFontInfo *pFontInfo)
Copies the fret number font information fro a FCFontInfo object.
Definition ff_other.h:22536
void SetFretThickness(Efix32 value)
Sets the fret thickness, in EFIXes.
Definition ff_other.h:22342
FCFretboardStyleDef()
The constructor.
Definition ff_other.h:22073
int GetFretCountDefault() const
Returns the default number of frets for the style.
Definition ff_other.h:22192
twobyte GetOpenStringShapeID() const
Returns the shape ID of the "open string" shape.
Definition ff_other.h:22227
twobyte GetMuteStringShapeID() const
Returns the shape ID of the "mute string" shape.
Definition ff_other.h:22236
void SetVerticalFretNumberOffset(Efix32 value)
Sets the vertical text offset for fret number text, in EFIXes.
Definition ff_other.h:22439
void SetCustomShapeID(twobyte value)
Sets the shape ID of the "custom" shape.
Definition ff_other.h:22511
void SetBarreShapeID(twobyte value)
Sets the shape ID of the "barre" shape.
Definition ff_other.h:22502
Efix32 GetFretThickness() const
Returns the fret thickness, in EFIXes.
Definition ff_other.h:22122
Efix32 GetVerticalHandleOffset() const
Returns the vertical handle offset, in EFIXes.
Definition ff_other.h:22158
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:22545
void SetHorizontalFretNumberOffset(Efix32 value)
Sets the horizontal text offset for fret number text, in EFIXes.
Definition ff_other.h:22429
void SetMuteStringShapeID(twobyte value)
Sets the shape ID of the "mute string" shape.
Definition ff_other.h:22493
void SetOpenStringShapeID(twobyte value)
Sets the shape ID of the "open string" shape.
Definition ff_other.h:22484
Efix32 GetNutThickness() const
Returns the nut thickness, in EFIXes.
Definition ff_other.h:22128
void GetFretNumberText(FCString *pString) const
Copies the fret number text to a FCString object.
Definition ff_other.h:22166
Efix32 GetVerticalFingeringOffset() const
Returns the vertical offset for fingering numbers, in EFIXes.
Definition ff_other.h:22140
twobyte GetCustomShapeID() const
Returns the shape ID of the "custom" shape.
Definition ff_other.h:22254
Efix32 GetFingeringWhiteout() const
Returns the whiteout for fingering numbers, in EFIXes.
Definition ff_other.h:22146
void SetStringSpacing(Efix32 value)
Sets the string spacing, in EFIXes.
Definition ff_other.h:22312
Efix32 GetVerticalFretNumberOffset() const
Returns the vertical text offset for fret number text, in EFIXes.
Definition ff_other.h:22186
Efix32 GetFretSpacing() const
Returns the fret spacing, in EFIXes.
Definition ff_other.h:22116
Efix32 GetHorizontalFingeringOffset() const
Returns the horizontal offset for fingering numbers, in EFIXes.
Definition ff_other.h:22134
void SetVerticalHandleOffset(Efix32 value)
Sets the vertical handle offset, in EFIXes.
Definition ff_other.h:22402
void SetVerticalFingeringOffset(Efix32 value)
Sets the vertical offset for fingering numbers, in EFIXes.
Definition ff_other.h:22372
void SetFingeringFontInfo(FCFontInfo *pFontInfo)
Copies the fingering font information from a FCFontInfo object.
Definition ff_other.h:22522
bool GetDrawFingeringWhite() const
Returns if the fingering numbers should be drawn in white.
Definition ff_other.h:22212
twobyte GetFingeredShapeID() const
Returns the shape ID of the "fingered" shape.
Definition ff_other.h:22218
void SetRotate(bool state)
Sets if the fret should be rotated or not.
Definition ff_other.h:22463
void SetFretCountDefault(int value)
Sets the default number of frets for the style.
Definition ff_other.h:22449
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:22055
Efix32 GetHorizontalHandleOffset() const
Returns the horizontal handle offset, in EFIXes.
Definition ff_other.h:22152
void SetFingeringWhiteout(Efix32 value)
Sets the whiteout for fingering numbers, in EFIXes.
Definition ff_other.h:22382
bool GetRotate() const
Returns if the fret should be rotated or not.
Definition ff_other.h:22206
void SetDrawFingeringWhite(bool state)
Sets if the fingering numbers should be drawn in white.
Definition ff_other.h:22469
void SetFretSpacing(Efix32 value)
Sets the fret spacing, in EFIXes.
Definition ff_other.h:22332
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:22056
void GetFretNumberFontInfo(FCFontInfo *pFontInfo)
Copies the fret number font information to a FCFontInfo object.
Definition ff_other.h:22279
void SetName(const FCString *pString)
Sets the style name, by using a FCString object.
Definition ff_other.h:22297
Efix32 GetStringSpacing() const
Returns the string spacing, in EFIXes.
Definition ff_other.h:22104
Efix32 GetStringThickness() const
Returns the string thickness, in EFIXes.
Definition ff_other.h:22110
void SetShowLastFret(bool state)
Sets if the last fret should be shown when drawing the fretboards, or not.
Definition ff_other.h:22455
Efix32 GetHorizontalFretNumberOffset() const
Returns the horizontal text offset for fret number text, in EFIXes.
Definition ff_other.h:22180
void SetStringThickness(Efix32 value)
Sets the string thickness, in EFIXes.
Definition ff_other.h:22322
void SetHorizontalHandleOffset(Efix32 value)
Sets the horizontal handle offset, in EFIXes.
Definition ff_other.h:22392
twobyte GetBarreShapeID() const
Returns the shape ID of the "barre" shape.
Definition ff_other.h:22245
The class for a guide in the document.
Definition ff_other.h:26055
Efix32 GetPosition() const
Returns the position for a guide, if EFIXes.
Definition ff_other.h:26076
FCGuide(Efix32 position)
The constructor.
Definition ff_other.h:26062
void SetPosition(Efix32 value)
Sets the position for a guide, if EFIXes.
Definition ff_other.h:26084
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:26066
The class for an instrument definition item (in the instrument list/Score Manager).
Definition ff_other.h:24433
FCInstrumentDef()
The constructor.
Definition ff_other.h:24477
void SetPercussionMapID(twobyte mapID)
Set the percussion mapping ID for the virtual instrument.
Definition ff_other.h:24523
twobyte GetPercussionMapID() const
Returns the percussion mapping ID for the instrument.
Definition ff_other.h:24515
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:24490
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:24460
twobyte GetVirtualChannel() const
Returns the virtual channel number for the instrument.
Definition ff_other.h:24507
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:24459
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:24556
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:24688
FCLayerPlaybackData * GetChordLayerData()
Returns the chord playback layer object (of the FCLayerPlaybackData class).
Definition ff_other.h:24754
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:24718
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:24813
FCLayerPlaybackData * GetNoteLayerData(int layernumber)
Returns the MIDI expression playback layer object (of the FCLayerPlaybackData class).
Definition ff_other.h:24802
FCLayerPlaybackData * GetMidiExpressionLayerData()
Returns the MIDI expression playback layer object (of the FCLayerPlaybackData class).
Definition ff_other.h:24777
FCInstrumentPlaybackData()
The constructor.
Definition ff_other.h:24736
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:24719
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:81
Helper class for FCInstrumentPlaybackData, providing the playback data for the Chord Layer,...
Definition ff_other.h:24606
void SetSolo(bool state)
Sets the "Solo" state of the layer.
Definition ff_other.h:24674
void SetInstrumentDefID(ePlaybackRoute value)
Set the ID that maps to the FCInstrumentDef class.
Definition ff_other.h:24654
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:24617
void SetPlay(bool state)
Sets the "Play" state of the layer.
Definition ff_other.h:24665
ePlaybackRoute GetInstrumentDefID() const
Returns the ID that maps to the FCInstrumentDef class.
Definition ff_other.h:24623
FCLayerPlaybackData(__EDTLayerPlayData *pData)
The constructor.
Definition ff_other.h:24613
bool GetSolo() const
Returns the "Solo" state of the layer.
Definition ff_other.h:24643
bool GetPlay() const
Returns the "Play" state of the layer.
Definition ff_other.h:24634
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:26128
bool SaveAsKeystroke(twobyte keystrokeslot)
Saves the metatool object to a specific keystroke.
Definition ff_other.h:26467
METATOOL_MODES
Definition ff_other.h:26135
@ MTOOLMODE_STAFFSTYLE
Definition ff_other.h:26158
@ MTOOLMODE_REPEAT
Definition ff_other.h:26146
@ MTOOLMODE_TUPLET
Definition ff_other.h:26154
@ MTOOLMODE_ARTICULATION
Definition ff_other.h:26143
@ MTOOLMODE_CLEF
Definition ff_other.h:26149
@ MTOOLMODE_EXPRESSION
Definition ff_other.h:26140
bool AssignArticulationDef(FCArticulationDef *pDef)
Assigns an articulation definition to a metatool.
Definition ff_other.h:26365
void SetMode(METATOOL_MODES mode)
Sets the mode of the object.
Definition ff_other.h:26275
bool SaveNew() override
Overridden functionality: SaveNew() is not supported for this class.
Definition ff_other.h:26478
bool AssignStaffStyle(FCStaffStyleDef *pStaffStyle)
Assigns an StaffStyle definition object to a metatool.
Definition ff_other.h:26453
bool AssignShapeExpressionDef(FCShapeExpressionDef *pDef)
Assigns a shape expression definition to a metatool.
Definition ff_other.h:26398
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:26482
__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:26241
bool AssignRepeatDef(FCTextRepeatDef *pDef)
Assigns an text repeat definition to a metatool.
Definition ff_other.h:26415
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:26510
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:26242
bool AssignTextExpressionDef(FCTextExpressionDef *pDef)
Assigns a text expression definition to a metatool.
Definition ff_other.h:26381
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:26300
bool AssignTuplet(FCTuplet *pTuplet)
Assigns an tuplet object to a metatool.
Definition finaleframework.cpp:13267
FCMetatoolAssignment()
The constructor.
Definition ff_other.h:26258
bool IsShapeExpressionDef() const
Returns if an expression metatool is connected to a shape expression definition, or not....
Definition ff_other.h:26351
CMPER GetDefID() const
Returns the 1-based (or 0-based) definition ID for supported object types.
Definition ff_other.h:26320
Class for a multi-measure rest instance.
Definition ff_other.h:19633
void SetNumberHorizontalAdjust(twobyte value)
Sets the horizontal adjustment value for the multimeasure rest number.
Definition ff_other.h:19893
twobyte GetShapeStartAdjust() const
Returns the left-side adjustment for multimeasure shapes.
Definition ff_other.h:19766
twobyte GetUseSymbolsLessThan() const
Returns the number of measures for the "Use symbols for restsless than" option.
Definition ff_other.h:19741
bool IsMeasureIncluded(int measure)
Returns true if the measure number is included in the MM rest.
Definition ff_other.h:19905
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:19822
void SetShapeEndAdjust(twobyte value)
Sets the right-side adjustment for MM shapes.
Definition ff_other.h:19829
FCMultiMeasureRest()
The constructor.
Definition ff_other.h:19688
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:19852
twobyte GetStartNumberingAt() const
Returns the threshold number where mm rests should start to be created.
Definition ff_other.h:19781
void SetShapeStartAdjust(twobyte value)
Sets the left-side adjustment for MM shapes.
Definition ff_other.h:19836
twobyte GetShapeID() const
Returns the shape ID (for use in the FCShapeDef class) for the MM rest.
Definition ff_other.h:19723
twobyte GetEndMeasure() const
Returns the end measure of the MM rest.
Definition ff_other.h:19708
twobyte GetShapeEndAdjust() const
Returns the right-side adjustment for multimeasure shapes.
Definition ff_other.h:19759
void SetNumberVerticalAdjust(twobyte value)
Sets the vertical adjustment value for the multimeasure rest number.
Definition ff_other.h:19899
twobyte GetNumberVerticalAdjust() const
Returns the vertical adjustment value for the multimeasure rest number.
Definition ff_other.h:19794
twobyte GetSymbolSpace() const
Gets the space between multimeasure rest symbols for the mm rest.
Definition ff_other.h:19773
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:19671
void SetSymbolSpace(twobyte space)
Sets the space between multimeasure rest symbols.
Definition ff_other.h:19881
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:19670
void SetShapeID(twobyte shapeID)
Sets the shape ID (for use in the FCShapeDef class) for the MM rest.
Definition ff_other.h:19844
bool GetUseSymbols() const
Returns true if the "Use symbols for rests less than" is used.
Definition ff_other.h:19730
twobyte GetWidth() const
Returns the width of the MM rest.
Definition ff_other.h:19715
void SetUseSymbolsLessThan(twobyte value)
Sets the number of measures for the "Use symbols for restsless than" option.
Definition ff_other.h:19863
bool IsShape()
Returns true if a shape is used for the MM rest.
Definition ff_other.h:19916
twobyte GetNumberHorizontalAdjust() const
Returns the horizontal adjustment value for the multimeasure rest number.
Definition ff_other.h:19788
void SetStartNumberingAt(twobyte value)
Sets the threshold number where mm rests should start to be created.
Definition ff_other.h:19887
void SetWidth(twobyte value)
Sets the width of the MM rest.
Definition ff_other.h:19806
twobyte CalcMeasureSpan()
Calculates the number of measures that MM rest spans.
Definition ff_other.h:19800
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:19935
twobyte GetStartMeasure() const
Returns the start measure of the MM rest.
Definition ff_other.h:19701
void SetStartMeasure(twobyte measure)
Sets the start measure of the MM rest.
Definition ff_other.h:19815
Class for a multi-staff instrument defined in the Score Manager.
Definition ff_other.h:19953
CMPER CalcTopStaff()
Returns the top staff in the group.
Definition ff_other.h:20089
CMPER CalcBottomStaff()
Returns the bottom staff in the group.
Definition ff_other.h:20119
void SetFirstStaff(CMPER value)
Sets the staff number of the first staff in the instrument group, Use with care!
Definition ff_other.h:20058
CMPER GetSecondStaff() const
Returns the staff number of the second staff in the instrument group.
Definition ff_other.h:20035
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:20145
void SetSecondStaff(CMPER value)
Sets the staff number of the second staff in the instrument group. Use with care!
Definition ff_other.h:20064
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:19989
void SetThirdStaff(CMPER value)
Sets the staff number of the third staff in the instrument group.
Definition ff_other.h:20071
CMPER GetThirdStaff() const
Returns the staff number of the third staff in the instrument group.
Definition ff_other.h:20041
bool ContainsStaff(CMPER staffno)
Returns true if the staff is available in the multi-instrument group.
Definition ff_other.h:20016
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:19988
eStaffGroup GetGroupID() const
Returns the staff group ID.
Definition ff_other.h:20047
CMPER GetFirstStaff() const
Returns the staff number of the first staff in the instrument group.
Definition ff_other.h:20029
void SetGroupID(eStaffGroup value)
Sets the staff group ID. Use with care!
Definition ff_other.h:20077
FCMultiStaffInstrument()
The constructor.
Definition ff_other.h:20006
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:20271
void SetVerticalAlignment(GRAPHIC_VERTICAL_ALIGN alignment)
Sets the vertical alignment for the text block.
Definition ff_other.h:20753
bool IsEmbedded()
Returns true if the graphic is embedded in the document.
Definition ff_other.h:20372
void SetLastPage(int pageno)
Sets the end page for the graphics.
Definition ff_other.h:20560
GRAPHIC_HORIZONTAL_ALIGN GetHorizontalAlignment() const
Returns the horizontal alignment for the graphic on left-side (or all) pages.
Definition ff_other.h:20502
GRAPHIC_VERTICAL_ALIGN GetVerticalAlignment() const
Returns the vertical alignment for the graphic.
Definition ff_other.h:20538
void SetIndependentRightPage(bool state)
Sets if the right-side page positioning is used or not.
Definition ff_other.h:20639
Evpu16 GetWidth() const
Returns the graphic rectangle's width, in EVPUs.
Definition ff_other.h:20417
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:20315
void SetVerticalPos(Evpu16 pos)
Sets the graphic rectangle's bottom position, in EVPUs.
Definition ff_other.h:20585
GRAPHIC_HORIZONTAL_ALIGN GetHorizontalAlignmentRightPage() const
Returns the horizontal alignment for a right-side page graphic.
Definition ff_other.h:20520
void SetHorizontalPosRightPage(Evpu16 value)
Sets the horizontal position for right-side pages (if used).
Definition ff_other.h:20653
void SetHorizontalAlignmentRightPage(GRAPHIC_HORIZONTAL_ALIGN alignment)
Sets the horizontal alignment for right-side pages.
Definition ff_other.h:20719
Evpu16 GetVerticalPosRightPage() const
Returns the vertical positioning for right-side pages (if used).
Definition ff_other.h:20481
void SetVisible(bool state)
Sets the visibility state of the graphic.
Definition ff_other.h:20613
FCPageGraphic()
The constructor.
Definition ff_other.h:20363
bool GetPageEdgeRef() const
Returns true if positioning is referenced from the page edge.
Definition ff_other.h:20463
Evpu16 GetOriginalHeight() const
Returns the original graphic rectangle's height (before stretching), in EVPUs.
Definition ff_other.h:20444
void SetVerticalPosRightPage(Evpu16 value)
Sets the vertical position for right-side pages (if used).
Definition ff_other.h:20662
Evpu16 GetHorizontalPosRightPage() const
Returns the horizontal positioning for right-side pages (if used).
Definition ff_other.h:20475
int GetFirstPage() const
Returns the start page for the graphics.
Definition ff_other.h:20381
void SetFirstPage(int pageno)
Sets the start page for the graphics.
Definition ff_other.h:20551
GRAPHIC_VERTICAL_ALIGN
Vertical alignment constants for graphic.
Definition ff_other.h:20348
@ GRAPHICVERTALIGN_CENTER
Definition ff_other.h:20354
@ GRAPHICVERTALIGN_TOP
Definition ff_other.h:20350
@ GRAPHICVERTALIGN_BOTTOM
Definition ff_other.h:20352
void SetHorizontalPos(Evpu16 pos)
Sets the graphic rectangle's left-side position, in EVPUs.
Definition ff_other.h:20572
Evpu16 GetHorizontalPos() const
Returns the graphic rectangle's left-side position, in EVPUs.
Definition ff_other.h:20399
void SetHeight(Evpu16 height)
Sets the graphic rectangle's height, in EVPUs.
Definition ff_other.h:20604
GRAPHIC_HORIZONTAL_ALIGN
Horizontal alignment constants for graphic.
Definition ff_other.h:20334
@ GRAPHICHORIZALIGN_LEFT
Definition ff_other.h:20336
@ GRAPHICHORIZALIGN_RIGHT
Definition ff_other.h:20338
@ GRAPHICHORIZALIGN_CENTER
Definition ff_other.h:20340
void SetFixedPercent(bool state)
Sets the state of the "Fixed Percent" checkbox in the graphic attributes dialog box.
Definition ff_other.h:20672
bool GetVisible() const
Returns the visibility status of the page graphic.
Definition ff_other.h:20455
Evpu16 GetOriginalWidth() const
Returns the original graphic rectangle's width (before stretching), in EVPUs.
Definition ff_other.h:20435
int GetLastPage() const
Returns the start page for the graphics.
Definition ff_other.h:20390
bool GetFixedPercent() const
Returns the state of the "Fixed Percent" checkbox in the graphic attributes dialog box.
Definition ff_other.h:20488
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:20316
void SetPageEdgeRef(bool state)
Sets if positioning is referenced from the page edge, or from the margin.
Definition ff_other.h:20629
Evpu16 GetVerticalPos() const
Returns the graphic rectangle's bottom position, in EVPUs.
Definition ff_other.h:20408
Evpu16 GetHeight() const
Returns the graphic rectangle's height, in EVPUs.
Definition ff_other.h:20426
void SetWidth(Evpu16 width)
Sets the graphic rectangle's width, in EVPUs.
Definition ff_other.h:20595
bool GetIndependentRightPage() const
Returns true if the right-side page positioning is used.
Definition ff_other.h:20469
void SetHorizontalAlignment(GRAPHIC_HORIZONTAL_ALIGN alignment)
Sets the horizontal alignment for left-side (or all) pages.
Definition ff_other.h:20683
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:24831
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:24887
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:24869
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:25023
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:24868
Collection class for FCPercussionLayoutNote class objects (=a percussion layout).
Definition ff_othercollection.h:1758
A lookup table for FCPercussionLayoutNotes collections.
Definition ff_other.h:24384
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:24392
FCPercussionLayoutNotes * GetItemAt(int index) const
Overridden GetItemAt method.
Definition ff_other.h:24421
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:24386
Class for an individual note in a percussion map, read from Finale's XML file.
Definition ff_other.h:24176
FCPercussionMapNote(int midikey, int notetype, const char *pszName)
The constructor. Not supported by Lua.
Definition ff_other.h:24224
int GetMidiNote() const
Returns the midi note value.
Definition ff_other.h:24262
PERC_NOTE_TYPE GetNoteType() const
Returns the percussion note type.
Definition ff_other.h:24245
PERCUSSION_NOTE_TYPES
The predefined "virtual" percussion note types in Finale.
Definition ff_other.h:24186
const char * GetName() const
The name string for the note type. This is usually empty for standard percussion note types.
Definition ff_other.h:24266
twobyte GetOrderID() const
Returns the order ID for the percussion note type.
Definition ff_other.h:24251
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:24230
PERC_NOTE_TYPE GetRawNoteType() const
Returns the "raw" percussion note type. This includes the order ID as well.
Definition ff_other.h:24236
Collection class for FCPercussionMapNote class objects, used by the FCInstrumentDef class.
Definition ff_other.h:24280
FCPercussionMapNote * FindRawNoteType(PERC_NOTE_TYPE rawnotetype)
Finds and returns the raw note type in the collection.
Definition ff_other.h:24311
FCPercussionMapNotes(twobyte percussionid)
The constructor. Not supported by Lua.
Definition ff_other.h:24289
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:24297
FCPercussionMapNote * FindMidiNote(twobyte midinote)
Finds and returns a MIDI note in the collection.
Definition ff_other.h:24327
twobyte GetPercussionID() const
Returns the percussion map ID for the loaded collection.
Definition ff_other.h:24295
FCPercussionMapNote * GetItemAt(int index) const
Overridden GetItemAt method.
Definition ff_other.h:24303
A lookup table for FCPercussionMapNotes notes.
Definition ff_other.h:24348
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:24350
FCPercussionMapNotesLookup()
The constructor.
Definition ff_other.h:24356
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:25063
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:25199
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:25215
int GetStaff(int index)
Gets a staff number for a reference index.
Definition ff_other.h:25266
bool RemoveStaff(twobyte staffnumber)
Removes a staff number from the staff list.
Definition ff_other.h:25432
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:25301
bool RemoveBottomStaff()
Removes a "Bottom Staff" from the staff list.
Definition ff_other.h:25421
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:25245
bool SaveNew() override
SaveNew() is not supported.
Definition ff_other.h:25209
FCStaffList()
the constructor.
Definition ff_other.h:25109
bool AddBottomStaff()
Adds a "Bottom Staff" to the staff list.
Definition ff_other.h:25393
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:25310
bool IncludesStaff(twobyte staffnumber)
Returns true if the staff number is included in the staff list.
Definition ff_other.h:25321
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:25146
bool RemoveTopStaff()
Removes a "Top Staff" from the staff list.
Definition ff_other.h:25410
bool IsElementAvailable(twobyte stafflistelement)
Returns true if the element (staff or top/bottom setting) is available.
Definition ff_other.h:25286
bool LoadNext() override
Overridden LoadNext so the FCStaffLists collection work correctly.
Definition ff_other.h:25218
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:25114
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:25113
STAFFLIST_MODES
Modes for loading/saving the staff list.
Definition ff_other.h:25087
bool AddTopStaff()
Adds a "Top Staff" to the staff list.
Definition ff_other.h:25381
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:25225
bool AddStaff(twobyte staffnumber)
Adds a staff number to the staff list.
Definition ff_other.h:25368
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:19457
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:19609
void SetEndMeasure(eMeas value)
Sets the end measure for the applied staff style.
Definition ff_other.h:19559
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:19486
FCStaffStyleAssign()
The constructor.
Definition ff_other.h:19502
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:19485
eMeas GetStartMeasure() const
Returns the start measure number of the assigned staff style.
Definition ff_other.h:19523
eStaff GetStaff() const override
Returns the staff number for a loaded staff style region.
Definition ff_other.h:19577
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:19516
void SetStartMeasure(eMeas value)
Sets the start measure for the applied staff style.
Definition ff_other.h:19547
TimeEdu32 GetEndMeasurePos() const
Returns the end measure EDU position of the assigned staff style.
Definition ff_other.h:19541
void SetStyleID(twobyte value)
Sets the staff style definition ID for the applied staff style.
Definition ff_other.h:19571
eMeas GetEndMeasure() const
Returns the end measure number of the assigned staff style.
Definition ff_other.h:19535
void SetStartMeasurePos(TimeEdu32 value)
Sets the start measure position for the applied staff style.
Definition ff_other.h:19553
void SetEndMeasurePos(TimeEdu32 value)
Sets the end measure position for the applied staff style.
Definition ff_other.h:19565
bool IsOverlapping(FCMusicRegion *pRegion)
Returns true if the supplied FCMusicRegion object is within staff style region.
Definition ff_other.h:19590
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:19584
TimeEdu32 GetStartMeasurePos() const
Returns the start measure EDU position of the assigned staff style.
Definition ff_other.h:19529
Class for a staff style definition.
Definition ff_other.h:18264
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:19170
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:19101
bool GetCopyable() const
Returns if the staff style definition should be copyable or not.
Definition ff_other.h:18702
bool GetUseShowRepeats() const
Returns true if the repeat bar display is active for the staff style definition.
Definition ff_other.h:18783
void SetUseShowTies(bool state)
Sets if the display of ties should be part of the staff style or not.
Definition ff_other.h:19191
void SetUseShowFretboards(bool state)
Sets if fretboard display should be part of the staff style or not.
Definition ff_other.h:19111
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:19267
bool GetUseDisplayEmptyRests() const
Returns true if "Display Rests in empty measures" state should be used for the staff style definition...
Definition ff_other.h:18856
void SetUseShowChords(bool state)
Sets if chords should be part of the staff style or not.
Definition ff_other.h:19091
bool GetUseShowPartStaffNames() const
Returns true if the staff name display in parts is active for the staff style definition.
Definition ff_other.h:18813
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:19288
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:18790
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:19438
bool GetUseNotationStyle() const
Returns true if the notation style should be used for the staff style definition.
Definition ff_other.h:18849
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:19316
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:18641
void SetUseIndependentTimeSig(bool state)
Sets if independent time signatures should be part of the staff style or not.
Definition ff_other.h:19309
void SetUseShowLyrics(bool state)
Sets if lyrics display should be part of the staff style or not.
Definition ff_other.h:19121
bool GetUseShowMeasureNumbers() const
Returns true if the measure number is active for the staff style definition.
Definition ff_other.h:18727
bool GetUseHideMode() const
Returns true if the hide mode (such as GetHideMode) should be used for the staff style definition.
Definition ff_other.h:18950
bool GetUseStafflineAdjustments() const
Returns true if the staffline adjustments settings should be used for the staff style definition.
Definition ff_other.h:18880
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:19222
bool GetUseIndependentKeySig() const
Returns true if independent key signatures should be used for the staff style definition.
Definition ff_other.h:18936
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:19260
void SetCopyable(bool value)
Sets if the staff style definition should be copyable or not.
Definition ff_other.h:19023
bool GetUseIndependentTimeSig() const
Returns true if independent time signatures should be used for the staff style definition.
Definition ff_other.h:18943
void SetUseShowNoteColors(bool state)
Sets if note colors should be part of the staff style or not.
Definition ff_other.h:19351
void SetUseAbbreviatedName(bool state)
Sets if the abbreviated staff name should be part of the staff style or not.
Definition ff_other.h:19295
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:18821
void SetUseShowRepeats(bool state)
Sets if repeat bar display should be part of the staff style or not.
Definition ff_other.h:19131
bool GetUseTransposition() const
Returns true if the transposition settings should be used for the staff style definition.
Definition ff_other.h:18887
void SetUseIndependentKeySig(bool state)
Sets if independent key signatures should be part of the staff style or not.
Definition ff_other.h:19302
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:18642
void SetUseNotationStyle(bool state)
Sets if the notation style should be part of the staff style or not.
Definition ff_other.h:19215
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:19141
bool GetUseFullName() const
Returns true if the full staff name should be used for the staff style definition.
Definition ff_other.h:18922
void SetUseAllowHiding(bool state)
Sets if the "optimization" state should be part of the staff style or not.
Definition ff_other.h:19229
void SetUseShowKeySignatures(bool state)
Sets if "Display Key Sig" should be part of the staff style or not.
Definition ff_other.h:19040
bool GetUseDefaultClef() const
Returns true if the default clef setting should be used for the staff style definition.
Definition ff_other.h:18870
void SetUseShowMeasureNumbers(bool state)
Sets if measure numbers should be part of the staff style or not.
Definition ff_other.h:19050
bool GetUseAltNotationStyle() const
Returns true if the alternate notation style should be used for the staff style definition.
Definition ff_other.h:18978
bool GetUseFlatBeams() const
Returns true if the flat beams state should be used for the staff style definition.
Definition ff_other.h:18842
void SetUseShowTextRepeats(bool state)
Sets if the text repeat display setting should be part of the staff style or not.
Definition ff_other.h:19274
bool GetUseShowFretboards() const
Returns true if the fretboard display is active for the staff style definition.
Definition ff_other.h:18769
bool GetUseShowNoteColors() const
Returns true if note colors should be used for the staff style definition.
Definition ff_other.h:18985
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:19181
bool GetUseShowChords() const
Returns true if the chords is active for the staff style definition.
Definition ff_other.h:18755
void SetUseShowClefs(bool state)
Sets if the clef should be part of the staff style or not.
Definition ff_other.h:19081
bool GetUseShowTies() const
Returns true if the display of ties is active for the staff style definition.
Definition ff_other.h:18828
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:19344
bool GetUseShowScoreStaffNames() const
Returns true if the statff name display in the score is active for the staff style definition.
Definition ff_other.h:18806
void SetUseIgnoreKeySig(bool state)
Sets if the "Ignore Key Signature" state should be part of the staff style or not.
Definition ff_other.h:19323
bool GetUseIndependentFont() const
Returns true if the independent notehead font state should be used for the staff style definition.
Definition ff_other.h:18835
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:18901
void SetAddToMenu(bool value)
Sets if the staff style definition should be added to the staff style menu, or not.
Definition ff_other.h:19029
void SetUseShowBarlines(bool state)
Sets if the barline display setting should be part of the staff style or not.
Definition ff_other.h:19281
bool GetUseAllowHiding() const
Returns true if the "optimization" state should be used for the staff style definition.
Definition ff_other.h:18863
bool GetUseShowTimeSignatures() const
Returns true if the time signature setting is active for the staff style definition.
Definition ff_other.h:18735
bool GetUseAbbreviatedPosition() const
Returns true if the abbreviated name positioning should be used for the staff style definition.
Definition ff_other.h:18971
bool GetUseShowTextRepeats() const
Returns true if the text repeat display setting should be used for the staff style definition.
Definition ff_other.h:18908
bool GetUseAbbreviatedName() const
Returns true if the abbreviated staff name should be used for the staff style definition.
Definition ff_other.h:18929
void SetUseAbbreviatedPosition(bool state)
Sets if the abbreviated name positioning should be part of the staff style or not.
Definition ff_other.h:19337
void SetUseDefaultClef(bool state)
Sets if the default clef setting should be part of the staff style or not.
Definition ff_other.h:19236
bool GetUseShowBarlines() const
Returns true if the barline display setting should be used for the staff style definition.
Definition ff_other.h:18915
bool GetUseBreakBarlines() const
Returns true if the "Break barlines between staves" setting should be used for the staff style defini...
Definition ff_other.h:18894
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:19160
bool GetUseFullNamePosition() const
Returns true if the full name positioning should be used for the staff style definition.
Definition ff_other.h:18964
bool GetUseShowAugmentationDots() const
Returns true if the augmentation dot setting is active for the staff style definition.
Definition ff_other.h:18762
bool GetUseShowClefs() const
Returns true if the clef is active for the staff style definition.
Definition ff_other.h:18748
bool GetUseShowKeySignatures() const
Returns true if the "Display Key Signature" is active for the staff style definition.
Definition ff_other.h:18720
void SetUseIndependentFont(bool state)
Sets if independent notehead font state should be part of the staff style or not.
Definition ff_other.h:19201
bool GetUseShowLyrics() const
Returns true if the lyrics display is active for the staff style definition.
Definition ff_other.h:18776
bool GetUseIgnoreKeySig() const
Returns true if the "Ignore Key Signature" state should be used for the staff style definition.
Definition ff_other.h:18957
void SetUseShowPartTimeSignatures(bool state)
Sets if the parts time signature setting is active for the staff style definition.
Definition ff_other.h:19071
void SetUseFlatBeams(bool state)
Sets if the flat beams state should be part of the staff style or not.
Definition ff_other.h:19208
FCStaffStyleDef()
The constructor.
Definition ff_other.h:18675
void SetUseTransposition(bool state)
Sets if the transposition settings should be part of the staff style or not.
Definition ff_other.h:19253
void SetUseShowTimeSignatures(bool state)
Sets if time signature should be part of the staff style or not.
Definition ff_other.h:19062
FCStaffNamePosition * GetFullNamePosition() override
Override of __FCStaffBase::GetFullNamePosition.
Definition ff_other.h:19402
FCStaffNamePosition * GetAbbreviatedNamePosition() override
Override of __FCStaffBase::GetAbbreviatedNamePosition.
Definition ff_other.h:19417
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:18741
void SetUseStafflineAdjustments(bool state)
Sets if the staffline adjustments settings should be part of the staff style or not.
Definition ff_other.h:19246
bool GetAddToMenu() const
Returns if the staff style definition should be added to the staff style menu, or not.
Definition ff_other.h:18708
void SetUseFullNamePosition(bool state)
Sets if the full name positioning should be part of the staff style or not.
Definition ff_other.h:19330
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:24007
FCTempoElement()
The constructor.
Definition ff_other.h:24052
bool GetAbsolute() const
Returns true if the tempo is an absolute or relative tempo setting.
Definition ff_other.h:24077
void SetRatio(fourbyte value)
Sets the tempo ratio value.
Definition ff_other.h:24101
float CalcValue()
Returns the actual value for the tempo. The returned value might be absolute or relative,...
Definition ff_other.h:24112
void SetAbsoluteValue(float value)
Sets the tempo to an actual absolute value.
Definition ff_other.h:24142
void SetMeasurePos(twobyte edupos)
Sets the duration reference position for the element.
Definition ff_other.h:24064
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:24035
TimeEdu32 GetMeasurePos() const override
Gets the duration reference position for the element.
Definition ff_other.h:24070
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:24036
fourbyte GetRatio() const
Returns the tempo ratio value.
Definition ff_other.h:24095
void SetAbsolute(bool value)
Sets the tempo to absolute or relative.
Definition ff_other.h:24085
void SetRelativeValue(float value)
Sets the tempo to an actual relative value in percent.
Definition ff_other.h:24159
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:20817
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:20941
REPEAT_REPLACE_MODE
Constants for use with FCTextRepeatDef::GetReplaceMode() and FCTextRepeatDef::SetReplaceMode().
Definition ff_other.h:20897
@ REPEATREPLACE_TARGETMEASURE
Definition ff_other.h:20905
@ REPEATREPLACE_TIMESPLAYED
Definition ff_other.h:20899
@ REPEATREPLACE_TARGETTEXT
Definition ff_other.h:20902
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:21041
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:21064
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:21029
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:20910
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:21054
TEXT_REPEAT_JUSTIFICATION
Constants for use with FCTextRepeatDef::GetJustification() and FCTextRepeatDef::SetJustification().
Definition ff_other.h:20878
@ TEXTREPJUST_FULL
Definition ff_other.h:20889
@ TEXTREPJUST_CENTER
Definition ff_other.h:20886
@ TEXTREPJUST_LEFT
Definition ff_other.h:20880
@ TEXTREPJUST_RIGHT
Definition ff_other.h:20883
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:20909
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:21125
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:21148
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:21394
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:21527
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:21382
void SetStaffListID(twobyte list)
Sets the staff list ID to be used.
Definition ff_other.h:21481
twobyte GetTotalPasses() const
Returns the number of passes for the text repeat assignment.
Definition ff_other.h:21492
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:21368
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:21436
REPTARGETTRIGGERS
The modes used by FCTextRepeat::GetTargetTrigger() and FCTextRepeat::SetTargetTrigger().
Definition ff_other.h:21217
@ REPTARGET_NEXTENDING
Definition ff_other.h:21240
@ REPTARGET_BACKWARDS
Definition ff_other.h:21230
@ REPTARGET_UNDEFINED
Definition ff_other.h:21220
@ REPTARGET_DEFID
Definition ff_other.h:21223
@ REPTARGET_NEVERSKIPENDING
Definition ff_other.h:21233
@ REPTARGET_MEASURENUM
Definition ff_other.h:21226
@ REPTARGET_FORWARDS
Definition ff_other.h:21237
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:21273
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:21356
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_other.h:21596
REPSHOWMODES
Constants for use with FCTextRepeat::GetShowMode() and FCTextRepeat::SetShowMode().
Definition ff_other.h:21195
@ REPSHOW_ALL
Definition ff_other.h:21197
@ REPSHOW_TOPSTAFF
Definition ff_other.h:21200
@ REPSHOW_STAFFLIST
Definition ff_other.h:21203
bool GetVisible() const
Returns true if the repeat is visible. ("Show" is checked in the context menu.)
Definition ff_other.h:21427
void SetID(twobyte id)
Use with care! Sets the definition ID for the text repeat.
Definition ff_other.h:21342
bool GetJumpIfIgnore() const
Returns the "Jump if ignoring repeats" setting.
Definition ff_other.h:21508
bool GetAutoUpdateTarget() const
Returns the "Auto-update target" setting.
Definition ff_other.h:21388
void SetTotalPasses(twobyte totalpasses)
Sets the number of passes for the text repeat assignment.
Definition ff_other.h:21498
bool GetIndividualPositioning() const
Returns if individual positioning on different staves should be allowed or not.
Definition ff_other.h:21403
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:21175
Evpu16 GetHorizontalPos() const
Returns the horiozontal position (in EVPUs) from the measure's origin. The value is depending on the ...
Definition ff_other.h:21349
void SetIndividualPositioning(bool state)
Sets if individual positioning on different staves should be allowed..
Definition ff_other.h:21415
REPACTIONS
Definition ff_other.h:21252
@ REPACTION_ALWAYSJUMP
Definition ff_other.h:21257
@ REPACTION_PLAYSECTION
Definition ff_other.h:21263
@ REPACTION_JUMPONPASS
Definition ff_other.h:21260
@ REPACTION_NEVERJUMP
Definition ff_other.h:21254
@ REPACTION_STOPONPASS
Definition ff_other.h:21266
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:21362
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:21331
void SetJumpIfIgnore(bool state)
Sets the "Jump if ignoring repeats" setting.
Definition ff_other.h:21514
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:21176
int GetTarget() const
Returns the target measure or ID for the text repeat. This value is dependent on the GetTargetTrigger...
Definition ff_other.h:21375
twobyte GetStaffListID() const
Returns the staff list ID to be used for the text repeat assignment.
Definition ff_other.h:21475
bool GetResetOnRepeat() const
Returns the "Reset on Repeat" setting.
Definition ff_other.h:21521
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