Finale PDK Framework 0.77
Power Up Your Finale Music Software
Loading...
Searching...
No Matches
ff_details.h
1/*
2 * File: ff_details.h
3 * Author: Jari Williamsson
4 *
5 * Created on den 17 april 2011, 12:17
6 */
7
8#ifndef FF_DETAILS_H
9#define FF_DETAILS_H
10
11#include "ff_text.h"
12
15{
16public:
18 const char* ClassName() const override { return "__FCDetail"; }
19
20#ifndef DOXYGEN_SHOULD_IGNORE_THIS
21 CMPER _GetCmper2() { return _dataid.detail.cmper2; }
22#endif /* #ifndef DOXYGEN_SHOULD_IGNORE_THIS */
23};
24
30{
31 bool LoadFirst() override { return false; }
32public:
34 const char* ClassName() const override { return "__FCNoInciDetail"; }
35
40 bool Load(CMPER cmper1, CMPER cmper2);
41
46 virtual bool SaveNew(CMPER cmper1);
47
48#ifdef PDK_FRAMEWORK_DEBUG
49 void DebugDump() override
50 {
52 DebugOutInt("cmper1: ", _dataid.detail.cmper1);
53 DebugOutInt("cmper2: ", _dataid.detail.cmper2);
54 }
55#endif
56};
57
58class FCMusicRegion;
59
79{
80#ifndef DOXYGEN_SHOULD_SKIP_THIS
81 EDTGroupSpec _groupspec;
82protected:
83
84 EVERSION EnigmaVersion() const override;
85
86 bool LoadFirst() override
87 {
88 _dataid.detail.cmper1 = 0;
89 _dataid.detail.cmper2 = 0;
90 _dataid.detail.inci = 0;
91 return LoadNext();
92 }
93
94 EXTAG Tag() const override
95 {
96 return dt_GroupSpec;
97 }
98
99 int DataSizeLoad() const override
100 {
101 return sizeof (EDTGroupSpec);
102 }
103
104 void* Allocate() override
105 {
106 return (void*) &_groupspec;
107 }
108
113 void CloneMemoryFrom(__FCBaseData* pSource) override
114 {
115 memcpy(&_groupspec, ((FCGroup*) pSource)->_GetGroupSpec(), sizeof (_groupspec));
116 _datablock = &_groupspec;
117 _loadedsize = sizeof (_groupspec);
118 }
119
120 __FCBaseData* CreateObject() override
121 {
122 return new FCGroup();
123 }
124
125 void _SetAbbreviatedNameID(CMPER value)
126 {
127 _groupspec.abrvNameID = value;
128 }
129
130 void _SetFullNameID(CMPER value)
131 {
132 _groupspec.fullNameID = value;
133 }
134
135#endif
136
137public:
138
144 {
146 GRBRAC_NONE = BRACKET_NONE,
147
149 GRBRAC_PLAIN = BRACKET_PLAINBRAC,
150
152 GRBRAC_CHORUS = BRACKET_CHORUSBRAC,
153
155 GRBRAC_PIANO = BRACKET_PIANOBRAC,
156
158 GRBRAC_REVERSECHORUS = BRACKET_REVCHORUSBRAC,
159
161 GRBRAC_REVERSEPIANO = BRACKET_REVPIANOBRAC,
162
164 GRBRAC_CURVEDCHORUS = BRACKET_CURVECHORUSBRAC,
165
167 GRBRAC_REVERSECURVEDCHORUS = BRACKET_REVCURVECHORUSBRAC,
168
170 GRBRAC_DESK = BRACKET_DESKBRAC,
171
173 GRBRAC_REVERSEDESK = BRACKET_REVDESKBRAC
174 };
175
176
177#ifndef DOXYGEN_SHOULD_SKIP_THIS
178 EDTGroupSpec* _GetGroupSpec()
179 {
180 return &_groupspec;
181 }
182#endif
183
199
216
217
218 const char* ClassName() const override { return "FCGroup"; }
219 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_GROUP; }
220
227 {
228 memset(&_groupspec, 0, sizeof (_groupspec));
229 _datablock = &_groupspec;
230 _loadedsize = sizeof (_groupspec);
231 }
232
244 int CalcStaffIndex(twobyte staff);
245
251 int CalcStaffSpan();
252
257 bool ContainsStaff(twobyte staff);
258
268
269#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
271 luabridge::RefCountedPtr<FCString> CreateAbbreviatedNameString_GC()
272 { return makeLuaSharedPtr(CreateAbbreviatedNameString()); }
273#endif
274
284
285#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
287 luabridge::RefCountedPtr<FCString> CreateFullNameString_GC()
288 { return makeLuaSharedPtr(CreateFullNameString()); }
289#endif
290
291#ifdef PDK_FRAMEWORK_ENIGMASTRINGS
300
301#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
303 luabridge::RefCountedPtr<FCString> CreateTrimmedFullNameString_GC()
304 { return makeLuaSharedPtr(CreateTrimmedFullNameString()); }
305#endif
306#endif
307
308#ifdef PDK_FRAMEWORK_ENIGMASTRINGS
323
324#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
326 luabridge::RefCountedPtr<FCString> CreateDisplayFullNameString_GC()
327 { return makeLuaSharedPtr(CreateDisplayFullNameString()); }
328#endif
329#endif
330
341
342#ifdef PDK_FRAMEWORK_LUAFRIENDLY_CPP
344 luabridge::RefCountedPtr<FCMusicRegion> CreateMusicRegion_GC()
345 { return makeLuaSharedPtr(CreateMusicRegion()); }
346#endif
347
348
353 CMPER GetAbbreviatedNameID() const { return _groupspec.abrvNameID; }
354
360 {
361 return GetBitFlag(_groupspec.auxflag, GROUP_AUX_EXPAND_FULL);
362 }
363
369 {
370 return GetBitFlag(_groupspec.auxflag, GROUP_AUX_EXPAND_ABRV);
371 }
372
378#ifndef PDK_FRAMEWORK_LUAFRIENDLY
380#else
381 twobyte
382#endif
384 {
385#if FXT_VERSION >= FINALEVERSION_2014
386 return (FCGROUP_BRACKETS)_groupspec.bracket.bracID;
387#else
388#ifdef __OBJC__
389 return (FCGROUP_BRACKETS)_groupspec.bracket.bracID;
390#else
391 return (FCGROUP_BRACKETS)_groupspec.bracket.id;
392#endif
393#endif
394 }
395
402 {
403 return _groupspec.bracket.bracpos;
404 }
405
411 {
412 return _groupspec.bracket.bractop;
413 }
414
420 {
421 return _groupspec.bracket.bracbot;
422 }
423
429 {
430 return GetBitFlag(_groupspec.bracket.flag, BRACKET_BRACKET_ON_SINGLE);
431 }
432
437 twobyte GetEndStaff() const { return _groupspec.endInst; }
438
443 CMPER GetFullNameID() const { return _groupspec.fullNameID; }
444
450 bool GetUseFullNamePositioning() const { return GetBitFlag(_groupspec.flag, GROUP_FULLNAME_INDIVPOS); }
451
457 bool GetUseAbbreviatedNamePositioning() const { return GetBitFlag(_groupspec.flag, GROUP_ABRVNAME_INDIVPOS); }
458
466 Evpu16 GetFullNameHorizontalOffset() const { return _groupspec.fullNameXadj; }
467
475 Evpu16 GetAbbreviatedNameHorizontalOffset() const { return _groupspec.abrvNameXadj; }
476
484 Evpu16 GetFullNameVerticalOffset() const { return _groupspec.fullNameYadj; }
485
493 Evpu16 GetAbbreviatedNameVerticalOffset() const { return _groupspec.abrvNameYadj; }
494
499 twobyte GetStartStaff() const { return _groupspec.startInst; }
500
505 twobyte GetItemID() const { return _dataid.detail.cmper2; }
506
513 twobyte GetBarlineStyle() const;
514
519 bool GetBarlineUse() const
520 {
521 return GetBitFlag(_groupspec.flag, GROUP_OWN_BARLINE);
522 }
523
531 twobyte GetBarlineShapeID() const;
532
533
540#ifndef PDK_FRAMEWORK_LUAFRIENDLY
542#else
543 int
544#endif
546 {
547 if (GetBitFlag(_groupspec.auxflag, GROUP_AUX_OPT_REMOVEWHENALLEMPTY))
549 if (GetBitFlag(_groupspec.auxflag, GROUP_AUX_OPT_REMOVENEVER))
552 }
553
558 bool GetShowGroupName() const
559 {
560 return !GetBitFlag(_groupspec.flag, GROUP_HIDE_NAME);
561 }
562
569#ifndef PDK_FRAMEWORK_LUAFRIENDLY
571#else
572 int
573#endif
575 {
576 switch (_groupspec.flag & GROUP_BARLINE_STYLE)
577 {
578 case GROUP_GROUP_BARLINES:
580 break;
581 case GROUP_MENSURSTRICHE:
583 default:
585 }
586 }
587
594 FLAG_16 GetFullNameJustify() const
595 {
596 return (_groupspec.flag & GROUP_JUSTIFY_FULL);
597 }
598
606 {
607 return ((_groupspec.flag & GROUP_JUSTIFY_ABRV) >> 3);
608 }
609
616 FLAG_16 GetFullNameAlign() const
617 {
618 return (_groupspec.auxflag & GROUP_AUX_HALIGN_FULL);
619 }
620
627 {
628 return (_groupspec.auxflag & GROUP_AUX_HALIGN_ABRV) >> 2;
629 }
630
635 bool HasFullName() { return (GetFullNameID() != 0); }
636
641 bool HasAbbreviatedName() { return (GetAbbreviatedNameID() != 0); }
642
643
644#if FXT_VERSION >= FINALEVERSION_2011
652 twobyte GetEndMeasure() const { return _groupspec.endMeas; }
653
661 twobyte GetStartMeasure() const { return _groupspec.startMeas; }
662
671 void SetEndMeasure(twobyte value) { _groupspec.endMeas = value; }
672
680 void SetStartMeasure(twobyte value) { _groupspec.startMeas = value; }
681#endif
682
687 void SetStartStaff(twobyte staffno) { _groupspec.startInst = staffno; }
688
693 void SetEndStaff(twobyte staffno) { _groupspec.endInst = staffno; }
694
704
713 bool SaveNewFullNameBlock(FCString *pString);
714
720 void SetUseFullNamePositioning(bool state) { Set16BitFlag(&_groupspec.flag, GROUP_FULLNAME_INDIVPOS, state); }
721
727 void SetUseAbbreviatedNamePositioning(bool state) { Set16BitFlag(&_groupspec.flag, GROUP_ABRVNAME_INDIVPOS, state); }
728
736 void SetFullNameHorizontalOffset(Evpu16 value) { _groupspec.fullNameXadj = value; }
737
745 void SetAbbreviatedNameHorizontalOffset(Evpu16 value) { _groupspec.abrvNameXadj = value; }
746
754 void SetFullNameVerticalOffset(Evpu16 value) { _groupspec.fullNameYadj = value; }
755
763 void SetAbbreviatedNameVerticalOffset(Evpu16 value) { _groupspec.abrvNameYadj = value; }
764
772 void SetBarlineStyle(twobyte barline);
773
778 void SetBarlineUse(bool value)
779 {
780 Set16BitFlag(&_groupspec.flag, GROUP_OWN_BARLINE, value);
781 }
782
788 void SetBarlineShapeID(twobyte shapeID) {
789 _groupspec.custombarshape = shapeID;
790 }
791
799#ifndef PDK_FRAMEWORK_LUAFRIENDLY
801#else
802 int
803#endif
804 value
805 )
806 {
807 switch (value)
808 {
810 Set16BitFlag(&_groupspec.auxflag, GROUP_AUX_OPT_REMOVEWHENALLEMPTY, true);
811 Set16BitFlag(&_groupspec.auxflag, GROUP_AUX_OPT_REMOVENEVER, false);
812 break;
814 Set16BitFlag(&_groupspec.auxflag, GROUP_AUX_OPT_REMOVEWHENALLEMPTY, false);
815 Set16BitFlag(&_groupspec.auxflag, GROUP_AUX_OPT_REMOVENEVER, true);
816 break;
817 default:
818 Set16BitFlag(&_groupspec.auxflag, GROUP_AUX_OPT_REMOVEWHENALLEMPTY, false);
819 Set16BitFlag(&_groupspec.auxflag, GROUP_AUX_OPT_REMOVENEVER, false);
820 break;
821 }
822 }
823
828 void SetShowGroupName(bool state)
829 {
830 Set16BitFlag(&_groupspec.flag, GROUP_HIDE_NAME, !state);
831 }
832
840#ifndef PDK_FRAMEWORK_LUAFRIENDLY
842#else
843 int
844#endif
845 value)
846 {
847 switch (value)
848 {
850 _groupspec.flag &= ~GROUP_BARLINE_STYLE;
851 _groupspec.flag |= GROUP_GROUP_BARLINES;
852 break;
854 _groupspec.flag &= ~GROUP_BARLINE_STYLE;
855 _groupspec.flag |= GROUP_MENSURSTRICHE;
856 break;
858 _groupspec.flag &= ~GROUP_BARLINE_STYLE;
859 _groupspec.flag |= GROUP_NORMAL_BARLINES;
860 break;
861 }
862 }
863
870 void SetFullNameJustify(FLAG_16 value)
871 {
872 value &= 0x07;
873 _groupspec.flag &= ~GROUP_JUSTIFY_FULL;
874 _groupspec.flag |= value;
875 }
876
882 void SetAbbreviatedNameJustify(FLAG_16 value)
883 {
884 value &= 0x07;
885 _groupspec.flag &= ~GROUP_JUSTIFY_ABRV;
886 _groupspec.flag |= (value << 3);
887 }
888
889
895 void SetFullNameAlign(FLAG_16 value)
896 {
897 value &= 0x03;
898 _groupspec.auxflag &= ~GROUP_AUX_HALIGN_FULL;
899 _groupspec.auxflag |= value;
900 }
901
907 void SetAbbreviatedNameAlign(FLAG_16 value)
908 {
909 value &= 0x03;
910 _groupspec.auxflag &= ~GROUP_AUX_HALIGN_ABRV;
911 _groupspec.auxflag |= (value << 2);
912 }
913
918 void SetFullNameExpandSingle(bool state)
919 {
920 Set16BitFlag(&_groupspec.auxflag, GROUP_AUX_EXPAND_FULL, state);
921 }
922
928 {
929 Set16BitFlag(&_groupspec.auxflag, GROUP_AUX_EXPAND_ABRV, state);
930 }
931
938#ifndef PDK_FRAMEWORK_LUAFRIENDLY
940#else
941 twobyte
942#endif
943 bracketid
944 )
945 {
946#if FXT_VERSION >= FINALEVERSION_2014
947 _groupspec.bracket.bracID = bracketid;
948#else
949#ifdef __OBJC__
950 _groupspec.bracket.bracID = bracketid;
951#else
952 _groupspec.bracket.id = bracketid;
953#endif
954#endif
955 }
956
961 void SetBracketHorizontalPos(Evpu16 value)
962 {
963 _groupspec.bracket.bracpos = value;
964 }
965
970 void SetBracketVerticalTopPos(Evpu16 value)
971 {
972 _groupspec.bracket.bractop = value;
973 }
974
981 {
982 _groupspec.bracket.bracbot = value;
983 }
984
990 void SetBracketSingleStaff(bool state)
991 {
992 Set16BitFlag(&_groupspec.bracket.flag, BRACKET_BRACKET_ON_SINGLE, state);
993 }
994
995#ifdef PDK_FRAMEWORK_DEBUG
996 void DebugDump() override
997 {
999#ifdef PDK_FRAMEWORK_ENIGMASTRINGS
1001 DebugOutString("Full Name: ", pString);
1002 delete pString;
1003#endif
1004 DebugOutInt("Start staff: ", GetStartStaff());
1005 DebugOutInt("End staff: ", GetEndStaff());
1006#if FXT_VERSION >= FINALEVERSION_2011
1007 DebugOutInt("Start measure: ", GetStartMeasure());
1008 DebugOutInt("End measure: ", GetEndMeasure());
1009#endif
1010 }
1011#endif
1012};
1013
1014
1015
1016#ifndef DOXYGEN_SHOULD_SKIP_THIS
1017#include "pragma_align_begin.h"
1018struct __EDTCellClefInfo
1019{
1020 twobyte clefinfoID;
1021 twobyte eduvalue;
1022 twobyte percent;
1023 twobyte unknown;
1024 twobyte AAAA;
1025 twobyte BBBB;
1026 twobyte CCCC;
1027 twobyte DDDD;
1028 twobyte EEEE;
1029 twobyte FFFF;
1030};
1031#include "pragma_align_end.h"
1032
1033const EXTAG __dt_CellClefInfo = MAKEEXTAG(edDetail,'G','F');
1034
1035#endif
1036
1037#if FXT_VERSION < FINALEVERSION_27_3
1038#ifndef DOXYGEN_SHOULD_SKIP_THIS
1039#include "pragma_align_begin.h"
1040struct EDTBaseline // dt_BASELINES_*, dt_BASELINES_Sys_*
1041{
1042 Evpu32 basedisp;
1043 eLyric lyricNumber; // for lyrics baselines only, otherwise unused
1044 twobyte AAAA; // unused
1045 twobyte BBBB; // unused
1046};
1047#include "pragma_align_end.h"
1048
1049const EXTAG dt_BaselineChords = MAKEEXTAG(edDetail,'C','L');
1050const EXTAG dt_BaselineExprAboveStaff = MAKEEXTAG(edDetail,'X','A');
1051const EXTAG dt_BaselineExprBelowStaff = MAKEEXTAG(edDetail,'X','B');
1052const EXTAG dt_BaselineFretboards = MAKEEXTAG(edDetail,'G','L');
1053const EXTAG dt_BaselineLyricsChorus = MAKEEXTAG(edDetail,'B','c');
1054const EXTAG dt_BaselineLyricsSection = MAKEEXTAG(edDetail,'B','s');
1055const EXTAG dt_BaselineLyricsVerse = MAKEEXTAG(edDetail,'B','v');
1056const EXTAG dt_BaselineSysChords = MAKEEXTAG(edDetail,'C','l');
1057const EXTAG dt_BaselineSysExprAboveStaff = MAKEEXTAG(edDetail,'X','a');
1058const EXTAG dt_BaselineSysExprBelowStaff = MAKEEXTAG(edDetail,'X','b');
1059const EXTAG dt_BaselineSysFretboards = MAKEEXTAG(edDetail,'G','l');
1060const EXTAG dt_BaselineSysLyricsChorus = MAKEEXTAG(edDetail,'b','c');
1061const EXTAG dt_BaselineSysLyricsSection = MAKEEXTAG(edDetail,'B','S');
1062const EXTAG dt_BaselineSysLyricsVerse = MAKEEXTAG(edDetail,'b','v');
1063
1064#endif // DOXYGEN_SHOULD_SKIP_THIS
1065#endif // FXT_VERSION < FINALEVERSION_27_3
1066
1096{
1097public:
1130
1131
1132#ifndef DOXYGEN_SHOULD_SKIP_THIS
1133private:
1134 EDTBaseline _baseline;
1135 BASELINEMODES _mode;
1136 bool _globalscope; /* Internal flag to indicate which type of tag that
1137 * should be used. */
1138
1139
1140 EVERSION EnigmaVersion() const override { return FINALEVERSION_2010; }
1141
1142 EXTAG Tag() const override;
1143
1144 int DataSizeLoad() const override { return sizeof (_baseline); }
1145
1146 void* Allocate() override { return (void*) &_baseline; }
1147
1152 void CloneMemoryFrom(__FCBaseData* pSource) override
1153 {
1154 FCBaseline* pSourceObject = (FCBaseline*) pSource;
1155 memcpy(&_baseline, pSourceObject->_GetBaseline(), sizeof (_baseline));
1156 _datablock = &_baseline;
1157 _loadedsize = sizeof (_baseline);
1158 _globalscope = pSourceObject->GetGlobalScope();
1159 _mode = (BASELINEMODES) pSourceObject->GetMode();
1160 }
1161
1162 __FCBaseData* CreateObject() override
1163 {
1164 return new FCBaseline();
1165 }
1166
1167 bool _RawRelink() override;
1168#endif
1169
1170public:
1171#ifndef DOXYGEN_SHOULD_SKIP_THIS
1172 EDTBaseline* _GetBaseline() { return &_baseline; }
1173
1174 bool LoadFirst() override { return false; }
1175#endif
1176
1177 const char* ClassName() const override { return "FCBaseline"; }
1178 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_BASELINE; }
1179
1180
1186 {
1187 memset(&_baseline, 0, sizeof (_baseline));
1188 _datablock = &_baseline;
1189 _loadedsize = sizeof (_baseline);
1190 _mode = BASELINEMODE_UNDEFINED;
1191 _globalscope = false;
1192 }
1193
1201 Evpu32 GetVerticalOffset() const { return _baseline.basedisp; }
1202
1210 twobyte GetLyricNumber() const
1211 { return IsLyricMode() ? _baseline.lyricNumber : 0; }
1212
1213
1220#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1222#else
1223 int
1224#endif
1225 GetMode() const { return _mode; }
1226
1235 eSsys GetSystem() const
1236 {
1237 if (GetGlobalScope()) return 0;
1238 return _dataid.detail.cmper1;
1239 }
1240
1249 bool GetGlobalScope() const { return _globalscope; }
1250
1255 eStaff GetStaff() const
1256 {
1257 return _dataid.detail.cmper2;
1258 }
1259
1267 void SetVerticalOffset(Evpu32 value) { _baseline.basedisp = value; }
1268
1275 void SetLyricNumber(twobyte number)
1276 {
1277 if (number < 1) return;
1278 _baseline.lyricNumber = number;
1279 }
1280
1281#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1284 void _SetFullMode(BASELINEMODES mode, bool globalscope)
1285 {
1286 _mode = mode;
1287 _globalscope = globalscope;
1288 }
1289#endif /* #ifndef DOXYGEN_SHOULD_IGNORE_THIS */
1290
1302#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1304#else
1305 int
1306#endif
1307 mode
1308 )
1309 {
1310 switch (mode)
1311 {
1315 case BASELINEMODE_CHORD:
1320 _mode = (BASELINEMODES) mode;
1321 break;
1322 }
1323 }
1324
1331 static bool IsModeLyricMode(
1332#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1334#else
1335 int
1336#endif
1337 mode
1338 );
1339
1346 bool IsLyricMode() const
1347 { return IsModeLyricMode(GetMode()); }
1348
1360 bool Load(eSsys systemno, eStaff staffno, twobyte inci);
1361
1368 bool SaveNew(eSsys systemno, eStaff staffno);
1369
1375 bool SaveAs(eSsys systemno, eStaff staffno, twobyte inci);
1376
1387 bool LoadForStaff(eSsys systemno, eStaff staffno);
1388
1400#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1402#else
1403 int
1404#endif
1405 mode)
1406 {
1407 if (IsModeLyricMode(mode)) return false;
1408 _SetFullMode((BASELINEMODES) mode, true);
1409 return Load(0, 0, 0);
1410 }
1411
1424#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1426#else
1427 int
1428#endif
1429 mode,
1430 eLyric lyricno
1431 )
1432 {
1433 if (lyricno < 1) return false;
1434 if (!IsModeLyricMode(mode)) return false;
1435 _SetFullMode((BASELINEMODES) mode, true);
1436 twobyte tryinci = 0;
1437 while (Load(0, 0, tryinci))
1438 {
1439 if (GetLyricNumber() == lyricno) return true;
1440 tryinci ++;
1441 }
1442 return false;
1443 }
1444
1452 bool Save() override
1453 {
1454 if (_mode == BASELINEMODE_UNDEFINED) return false;
1455 return __FCDetail::Save();
1456 }
1457
1476 static Evpu32 CalcTotalOffset(
1477#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1479#else
1480 int
1481#endif
1482 mode,
1483 eSsys system,
1484 eStaff staff
1485 );
1486
1508 static Evpu32 CalcTotalOffsetForLyricNumber(
1509#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1511#else
1512 int
1513#endif
1514 mode,
1515 eSsys system,
1516 eStaff staff,
1517 eLyric lyricno
1518 );
1519};
1520
1521#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1522#include "pragma_align_begin.h"
1523struct __FCEDTActiveLyric
1524{
1525 twobyte tag; // dt_LYRDATA_Verse, dt_LYRDATA_Chorus, dt_LYRDATA_Section
1526 CMPER textID; // cmper of current lyric text block
1527 twobyte syllable; // the active syllable
1528private:
1529 twobyte filler[2];
1530};
1531#include "pragma_align_end.h"
1532#endif // DOXYGEN_SHOULD_IGNORE_THIS
1533
1534constexpr EXTAG __dt_ActiveLyric = MAKEEXTAG(edDetail,'A','L');
1535constexpr ufourbyte __al_VerseLyric = 0x454;
1536constexpr ufourbyte __al_ChorusLyric = 0x452;
1537constexpr ufourbyte __al_SectionLyric = 0x453;
1538
1545{
1546private:
1547 __FCEDTActiveLyric _activelyric;
1548
1549 EXTAG Tag() const override { return __dt_ActiveLyric; }
1550
1551 int DataSizeLoad() const override { return sizeof (_activelyric); }
1552
1553 void* Allocate() override { return (void*) &_activelyric; }
1554
1559 void CloneMemoryFrom(__FCBaseData* pSource) override
1560 {
1561 FCActiveLyric* pSourceObject = dynamic_cast<FCActiveLyric*>(pSource);
1562 assert(pSourceObject);
1563 _activelyric = pSourceObject->_activelyric;
1564 _datablock = Allocate();
1565 _loadedsize = DataSizeLoad();
1566 _activelyric.tag = __al_VerseLyric;
1567 }
1568
1569 __FCBaseData* CreateObject() override
1570 {
1571 return new FCActiveLyric();
1572 }
1573
1575 bool SaveNew(CMPER) override { return false; }
1576
1577public:
1578 const char* ClassName() const override { return "FCActiveLyric"; }
1579 const PDKFRAMEWORK_CLASSID GetClassID() const override { return FCID_ACTIVELYRIC; }
1580
1585 bool Load() { return __FCNoInciDetail::Load(1, 1); }
1586
1587
1592 bool Save() override
1593 {
1594 _dataid.detail.cmper1 = 1;
1595 _dataid.detail.cmper2 = 1;
1596 _dataid.detail.inci = 0;
1597 _loadedsize = DataSizeLoad();
1598 return __FCDetail::Save();
1599 }
1600
1605#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1607#else
1608 int
1609#endif
1611 {
1612 switch(_activelyric.tag)
1613 {
1614 case __al_VerseLyric: return FCRawText::RAWTEXTTYPE_VERSELYRIC;
1615 case __al_ChorusLyric: return FCRawText::RAWTEXTTYPE_CHORUSLYRIC;
1616 case __al_SectionLyric: return FCRawText::RAWTEXTTYPE_SECTIONLYRIC;
1617 }
1618 // no throw on retrieval because if the file for some reason
1619 // does not have a valid value, we need to be able to fix it.
1621 }
1622
1627 CMPER GetTextBlockID() const { return _activelyric.textID; }
1628
1633 int GetSyllable() const { return _activelyric.syllable; }
1634
1640#ifndef PDK_FRAMEWORK_LUAFRIENDLY
1642#else
1643 int
1644#endif
1645 value)
1646 {
1647 switch(static_cast<FCRawText::RAWTEXTTYPES>(value))
1648 {
1649 default:
1650#ifdef PDK_FRAMEWORK_LUAFRIENDLY
1651 throw std::runtime_error("block type must be for a lyrics text block");
1652#endif
1653 break;
1655 _activelyric.tag = __al_VerseLyric;
1656 break;
1658 _activelyric.tag = __al_ChorusLyric;
1659 break;
1661 _activelyric.tag = __al_SectionLyric;
1662 break;
1663 }
1664 }
1665
1670 void SetTextBlockID(CMPER value) { _activelyric.textID = value; }
1671
1676 void SetSyllable(int value) { _activelyric.syllable = value; }
1677};
1678
1679#if FXT_VERSION >= FINALEVERSION_2012
1680
1681#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1682
1683const EXTAG __ot_FRETGROUPITEM = MAKEEXTAG(edDetail, 'f','b');
1684
1685#include "pragma_align_begin.h"
1686struct __FCEDTFretItemsHeader // __ot_FRETGROUPITEM (inci 0)
1687 // cmper1 is the same cmper as FCFretboardGroupDef
1688 // cmper2 is (0..11), one for each of 12 chord roots
1689{
1690 twobyte numFrets; // "Number of Frets"
1691 twobyte fretboardNum; // "Fretboard Number"
1692 FLAG_16 flags;
1693 // bits for flags:
1694#define FRETITEMS_LOCK_FRETBOARD 0x0001
1695#define FRETITEMS_SHOW_FRETBOARD_NUM 0x0004
1696 twobyte numFretItems; // number of fret items in fret array
1697 twobyte numBarres; // number of barres in fret array
1698};
1699#include "pragma_align_end.h"
1700
1701#include "pragma_align_begin.h"
1702struct __FCEDTFretItem // __ot_FRETGROUPITEM (inci 1..n; 2 per inci; not order-dependent)
1703 // cmper1 is the same cmper as FCFretboardGroupDef
1704 // cmper2 is (0..11), one for each of 12 chord roots
1705{
1706 FLAG_16 fretstring;
1707 // bits for fretstring:
1708#define FRETITEM_FRETNUM_MASK 0x00FF // 0-based fret number (0 is open string)
1709#define FRETITEM_STRING_MASK 0xF800 // 1-based string number from right (or 0 when it's a barre)
1710 FLAG_16 symbols; // indicates the symbol(s) on the fret
1711#define FRETSYMBOL_FINGER_MASK 0xE000 // 1-based finger number (1-4) or thumb (5)
1712#define FRETSYMBOL_SHAPE_MASK 0x00FF // bit-oriented shape value
1713 // 0x0001: closed circle
1714 // 0x0002: open circle
1715 // 0x0004: X
1716 // 0x0008: diamond
1717 // 0x2000: first finger ("1")
1718 // 0x4000: second finger ("2")
1719 // 0x6000: third finger ("3")
1720 // 0x8000: fourth finger ("4")
1721 // 0xA000: thumb ("T")
1722
1723 // for barres, the string number is set to zero and the symbols field is reinterpreted as:
1724 // LOBYTE = from string (on left)
1725 // HIBYTE = to string (on right)
1726};
1727#include "pragma_align_end.h"
1728
1729#endif /* #ifndef DOXYGEN_SHOULD_IGNORE_THIS */
1730
1736{
1737 __FCEDTFretItem _item;
1738
1739protected:
1740
1743 {
1744 memset(&_item, 0, sizeof(_item));
1745 }
1746
1747#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1750 {
1751 _item = src._item;
1752 }
1754 __FCFretItemBase(const __FCEDTFretItem& srcItem) : __FCBase()
1755 {
1756 _item = srcItem;
1757 }
1758
1759 int _GetStringNumber() const { return (_GetEDTItem().fretstring & FRETITEM_STRING_MASK) >> 11; }
1760 int _GetBarreLeftStringNumber() const { return LOBYTE(_GetEDTItem().symbols); }
1761 int _GetBarreRightStringNumber() const { return HIBYTE(_GetEDTItem().symbols); }
1762#endif
1763
1764public:
1765 const char* ClassName() const override { return "__FCFretItemBase"; }
1766
1767#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1769 const __FCEDTFretItem& _GetEDTItem() const { return _item; }
1771 __FCEDTFretItem& _GetEDTItem() { return _item; }
1772#endif // DOXYGEN_SHOULD_IGNORE_THIS
1773
1778 int GetFretNumber() const { return LOBYTE(_GetEDTItem().fretstring); }
1779
1784 void SetFretNumber(int value) { _GetEDTItem().fretstring = MAKEWORD(value, HIBYTE(_GetEDTItem().fretstring)); }
1785
1794 bool IsBarre() const
1795 {
1796 if (_GetStringNumber()) return false;
1797 if (!_GetBarreLeftStringNumber() || ! _GetBarreRightStringNumber())
1798 return false;
1799 return true;
1800 }
1801
1802};
1803
1809{
1810public:
1811 const char* ClassName() const override { return "FCFretItem"; }
1812
1818 {
1821
1824
1827
1829 FRETITEM_X = 0x0004,
1830
1832 FRETITEM_DIAMOND = 0x0008
1834
1859
1866
1867#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1869 FCFretItem(const FCFretItem& src) : __FCFretItemBase(src) {}
1871 FCFretItem(const __FCEDTFretItem& srcItem) : __FCFretItemBase(srcItem) {}
1872#endif // DOXYGEN_SHOULD_IGNORE_THIS
1873
1878 int GetStringNumber() const { return _GetStringNumber(); }
1879
1884 void SetStringNumber(int value)
1885 {
1886 _GetEDTItem().fretstring = LOBYTE(_GetEDTItem().fretstring) | ((value << 11) & FRETITEM_STRING_MASK);
1887 }
1888
1895 int GetFingering() const { return (_GetEDTItem().symbols & FRETSYMBOL_FINGER_MASK) >> 13; }
1896
1903 void SetFingering(int value)
1904 {
1905 _GetEDTItem().symbols = LOBYTE(_GetEDTItem().symbols) | ((value << 13) & FRETSYMBOL_FINGER_MASK);
1906 }
1907
1914 int GetSymbol() const { return LOBYTE(_GetEDTItem().symbols); }
1915
1922 void SetSymbol(int value)
1923 {
1924 _GetEDTItem().symbols = MAKEWORD(value, HIBYTE(_GetEDTItem().symbols));
1925 }
1926
1936 void SetupItem(int symbol, int fretnum, int stringnum, int fingering)
1937 {
1938 _GetEDTItem().fretstring = ((stringnum << 11) & FRETITEM_STRING_MASK) | LOBYTE(fretnum);
1939 _GetEDTItem().symbols = ((fingering << 13) & FRETSYMBOL_FINGER_MASK) | LOBYTE(symbol);
1940 }
1941};
1942
1948{
1949public:
1950 const char* ClassName() const override { return "FCFretBarreItem"; }
1951
1958
1959#ifndef DOXYGEN_SHOULD_IGNORE_THIS
1961 FCFretBarreItem(const FCFretItem& src) : __FCFretItemBase(src) {}
1963 FCFretBarreItem(const __FCEDTFretItem& srcItem) : __FCFretItemBase(srcItem) {}
1964#endif // DOXYGEN_SHOULD_IGNORE_THIS
1965
1970 int GetLeftStringNumber() const { return _GetBarreLeftStringNumber(); }
1971
1976 void SetLeftStringNumber(int value)
1977 {
1978 _GetEDTItem().symbols = MAKEWORD(value, HIBYTE(_GetEDTItem().symbols));
1979 }
1980
1985 int GetRightStringNumber() const { return _GetBarreRightStringNumber(); }
1986
1991 void SetRightStringNumber(int value)
1992 {
1993 _GetEDTItem().symbols = MAKEWORD(LOBYTE(_GetEDTItem().symbols), value);
1994 }
1995
2003 void SetupBarre(int fretnum, int leftstringnum, int rightstringnum)
2004 {
2005 _GetEDTItem().fretstring = LOBYTE(fretnum);
2006 _GetEDTItem().symbols = MAKEWORD(leftstringnum, rightstringnum);
2007 }
2008};
2009
2010#endif // FXT_VERSION >= FINALEVERSION_2012
2011
2012#if FXT_VERSION >= FINALEVERSION_2012
2013
2014class FCFretItems;
2015class FCFretBarreItems;
2016
2023{
2024 // Note that this class does not use the __FCBaseData/__FCDetail pattern because it is so
2025 // unusual.
2026 __FCEDTFretItemsHeader _header;
2027 std::unique_ptr<FCFretItems> _fretitems;
2028 std::unique_ptr<FCFretBarreItems> _barreitems;
2029 CMPER _fretboardGroupID;
2030 CMPER _cmper2;
2031
2032 static twobyte _CalcCmper2(twobyte fretboardGroupInci, twobyte rootIndex)
2033 { return 16*fretboardGroupInci + rootIndex; }
2034
2035public:
2036 const char* ClassName() const override { return "FCFretboardGroupItem"; }
2037
2043
2053 bool Load(CMPER fretboardGroupID, twobyte fretboardGroupInci, twobyte rootIndex)
2054 {
2055 _fretboardGroupID = fretboardGroupID;
2056 _cmper2 = _CalcCmper2(fretboardGroupInci, rootIndex);
2057 return Reload();
2058 }
2059
2066 bool Reload();
2067
2074 bool Save();
2075
2086 bool SaveAs(CMPER fretboardGroupID, twobyte fretboardGroupInci, twobyte rootIndex)
2087 {
2088 _fretboardGroupID = fretboardGroupID;
2089 _cmper2 = _CalcCmper2(fretboardGroupInci, rootIndex);
2090 return Save();
2091 }
2092
2097 bool Delete();
2098
2105 FCFretItems* GetFretItems() const { return _fretitems.get(); }
2106
2113 FCFretBarreItems* GetFretBarreItems() const { return _barreitems.get(); }
2114
2119 twobyte GetNumberOfFrets() const { return _header.numFrets; }
2120
2125 void SetNumberOfFrets(twobyte value) { _header.numFrets = value; }
2126
2131 twobyte GetFretboardNumber() const { return _header.fretboardNum; }
2132
2137 void SetFretboardNumber(twobyte value) { _header.fretboardNum = value; }
2138
2143 bool GetLocked() const { return GetBitFlag(_header.flags, FRETITEMS_LOCK_FRETBOARD); }
2144
2149 void SetLocked(bool state) { Set16BitFlag(&_header.flags, FRETITEMS_LOCK_FRETBOARD, state); }
2150
2155 bool GetShowFretboardNumber() const { return GetBitFlag(_header.flags, FRETITEMS_SHOW_FRETBOARD_NUM); }
2156
2161 void SetShowFretboardNumber(bool state) { Set16BitFlag(&_header.flags, FRETITEMS_LOCK_FRETBOARD, state); }
2162};
2163
2164#endif // FXT_VERSION >= FINALEVERSION_2012
2165
2166#endif /* FF_DETAILS_H */
Base class for all data-related classes (that handles Finale data).
Definition ff_base.h:676
virtual __FCBaseData * CreateObject()=0
Creates a new instance of the object.
virtual bool LoadFirst()=0
Loads the very first element in the database, if any.
__FCBaseData()
The constructor.
Definition finaleframework.cpp:788
EDataID _dataid
The EdataID for the last loaded/saved object.
Definition ff_base.h:712
void * _datablock
Pointer to the object's data block, the meaning is implementation-specific for each derived subclass.
Definition ff_base.h:695
virtual EVERSION EnigmaVersion() const
The Enigma version for save/load/create/delete operations.
Definition ff_base.h:812
virtual int DataSizeLoad() const =0
Returns the data size for the data structure that should be loaded.
virtual EXTAG Tag() const =0
The Enigma tag for the derived class.
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
virtual bool Save()
Saves the currently loaded to its current location.
Definition finaleframework.cpp:951
virtual void * Allocate()=0
int _loadedsize
Loaded size of the data block for a loaded object, in bytes. Since the datablock is implementation-sp...
Definition ff_base.h:708
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
void Set16BitFlag(FLAG_16 *flag, FLAG_16 flagbits, bool state)
Sets a 16 bit flag.
Definition finaleframework.cpp:635
PDKFRAMEWORK_CLASSID
Constants for the GetClassID method.
Definition ff_base.h:84
static void DebugOutInt(const char *pszPrefixText, int i)
Static method that outputs a line for debugging purposes. The text appears with the extra digit (in d...
Definition finaleframework.cpp:335
bool GetBitFlag(FLAG_32 flag, FLAG_32 flagbits) const
Gets a state from flag bits. Returns true if any bit in the mask is set.
Definition ff_base.h:485
virtual void DebugDump()
Outputs the class data/information for debugging purposes.
Definition finaleframework.cpp:609
Base class for all classes that access Finale's detail records.
Definition ff_details.h:15
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_details.h:18
Base class for classes that describe a single fret item on a fret and string.
Definition ff_details.h:1736
bool IsBarre() const
returns true if this item is a barre rather than a fret symbol.
Definition ff_details.h:1794
__FCFretItemBase()
Constructor.
Definition ff_details.h:1742
void SetFretNumber(int value)
Sets the 0-based fret number for this item. (0 means open string.)
Definition ff_details.h:1784
int GetFretNumber() const
Returns the 0-based fret number for this item. (0 means open string.)
Definition ff_details.h:1778
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_details.h:1765
Abstract data class that contains a detail record without using the inci.
Definition ff_details.h:30
bool Load(CMPER cmper1, CMPER cmper2)
Loads a record with cmper1 and cmper2.
Definition finaleframework.cpp:36449
virtual bool SaveNew(CMPER cmper1)
Saves a new record at cmper1.
Definition finaleframework.cpp:36457
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_details.h:49
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_details.h:34
Class that provides access to the active lyrics block and syllable.
Definition ff_details.h:1545
bool Save() override
Overridden method for saving the existing record.
Definition ff_details.h:1592
int GetSyllable() const
Returns the active syllable in the Lyrics Window.
Definition ff_details.h:1633
FCRawText::RAWTEXTTYPES GetBlockType() const
Returns the type of the active lyric text block.
Definition ff_details.h:1610
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_details.h:1579
bool Load()
Loads the active lyric record.
Definition ff_details.h:1585
void SetBlockType(FCRawText::RAWTEXTTYPES value)
Sets the type of the active lyric text block.
Definition ff_details.h:1639
CMPER GetTextBlockID() const
Returns the item number for the active lyric text block.
Definition ff_details.h:1627
void SetTextBlockID(CMPER value)
Sets the item number for the active lyric text block.
Definition ff_details.h:1670
void SetSyllable(int value)
Sets the active syllable in the Lyrics Window.
Definition ff_details.h:1676
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_details.h:1578
Encapsulates baselines offset values for lyrics, expressions, fretboards and chords.
Definition ff_details.h:1096
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_details.h:1177
eStaff GetStaff() const
Returns the staff number ID for the baseline.
Definition ff_details.h:1255
bool GetGlobalScope() const
Returns true if the object is referencing data that affects the whole piece.
Definition ff_details.h:1249
bool LoadDefaultForLyricNumber(BASELINEMODES mode, eLyric lyricno)
Loads the default baseline value for a specific lyric number in the whole piece.
Definition ff_details.h:1423
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_details.h:1178
BASELINEMODES
The mode constants of the object, used for both loading and saving objects.
Definition ff_details.h:1105
@ BASELINEMODE_EXPRESSIONABOVE
Definition ff_details.h:1110
@ BASELINEMODE_LYRICSVERSE
Definition ff_details.h:1122
@ BASELINEMODE_FRETBOARD
Definition ff_details.h:1119
@ BASELINEMODE_UNDEFINED
Definition ff_details.h:1107
@ BASELINEMODE_EXPRESSIONBELOW
Definition ff_details.h:1113
@ BASELINEMODE_LYRICSSECTION
Definition ff_details.h:1128
@ BASELINEMODE_LYRICSCHORUS
Definition ff_details.h:1125
@ BASELINEMODE_CHORD
Definition ff_details.h:1116
bool LoadForStaff(eSsys systemno, eStaff staffno)
Load a record for a staff.
Definition finaleframework.cpp:37453
static Evpu32 CalcTotalOffset(BASELINEMODES mode, eSsys system, eStaff staff)
Static method for non-lyric modes that calculates the resulting offset for a system/staff.
Definition finaleframework.cpp:37322
bool LoadDefaultForMode(BASELINEMODES mode)
Loads the (non-lyrics) default baseline value for the whole piece.
Definition ff_details.h:1399
eSsys GetSystem() const
Returns the system number for the baseline.
Definition ff_details.h:1235
void SetVerticalOffset(Evpu32 value)
Sets the vertical offset of the baseline. This is the value that affects the baseline position.
Definition ff_details.h:1267
bool IsLyricMode() const
Returns true if the current mode is a lyric mode.
Definition ff_details.h:1346
bool SaveAs(eSsys systemno, eStaff staffno, twobyte inci)
Saves baseline data at a specific position. Normally, this isn't called directly.
Definition finaleframework.cpp:37442
static Evpu32 CalcTotalOffsetForLyricNumber(BASELINEMODES mode, eSsys system, eStaff staff, eLyric lyricno)
Static method that calculates the resulting baseline offset for a specific lyric number in a system/s...
Definition finaleframework.cpp:37358
bool SaveNew(eSsys systemno, eStaff staffno)
Saves a new baseline data structure. Normally, this isn't called directly.
Definition finaleframework.cpp:37431
void SetLyricNumber(twobyte number)
Sets the connected lyric number that the baseline should be connected to.
Definition ff_details.h:1275
FCBaseline()
The constructor.
Definition ff_details.h:1185
void SetMode(BASELINEMODES mode)
Sets the mode for the object. If an automatic loader (such as LoadDefaultForMode or any of the loader...
Definition ff_details.h:1301
bool Save() override
Overridden method for saving the existing record.
Definition ff_details.h:1452
BASELINEMODES GetMode() const
Returns the mode for the object.
Definition ff_details.h:1225
Evpu32 GetVerticalOffset() const
Returns the vertical offset of the baseline. This is the value that affects the baseline position.
Definition ff_details.h:1201
static bool IsModeLyricMode(BASELINEMODES mode)
Returns true if the specified mode is a lyric mode.
Definition finaleframework.cpp:37491
bool Load(eSsys systemno, eStaff staffno, twobyte inci)
Loads a baseline data structure. Normally, this isn't called directly.
Definition finaleframework.cpp:37422
twobyte GetLyricNumber() const
Returns the connected lyric number for the baseline.
Definition ff_details.h:1210
Class that describes a single fret item on a fret and string.
Definition ff_details.h:1948
void SetupBarre(int fretnum, int leftstringnum, int rightstringnum)
Set up the barre. Use this to initialize the barre rather than individual Set methods.
Definition ff_details.h:2003
FCFretBarreItem()
Constructor.
Definition ff_details.h:1956
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_details.h:1950
int GetRightStringNumber() const
Returns the right string number for a barre. The strings are numbered right-to-left starting with 1.
Definition ff_details.h:1985
int GetLeftStringNumber() const
Returns the left string number for a barre. The strings are numbered right-to-left starting with 1.
Definition ff_details.h:1970
void SetLeftStringNumber(int value)
Sets the left string number for a barre. The strings are numbered right-to-left starting with 1.
Definition ff_details.h:1976
void SetRightStringNumber(int value)
Returns the right string number for a barre. The strings are numbered right-to-left starting with 1.
Definition ff_details.h:1991
Collection class of FCFretItem class objects that are barres.
Definition ff_detailscollection.h:436
Class that describes a single fret item on a fret and string.
Definition ff_details.h:1809
void SetSymbol(int value)
Returns the symbol value for this item.
Definition ff_details.h:1922
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_details.h:1811
int GetSymbol() const
Returns the symbol value for this item.
Definition ff_details.h:1914
int GetStringNumber() const
Returns the string number for this item. The strings are numbered right-to-left starting with 1.
Definition ff_details.h:1878
FRETITEMSYMBOLS
Codes for fretboard item symbols.
Definition ff_details.h:1818
@ FRETITEM_CIRCLE
Definition ff_details.h:1826
@ FRETITEM_DIAMOND
Definition ff_details.h:1832
@ FRETITEM_DOT
Definition ff_details.h:1823
@ FRETITEM_X
Definition ff_details.h:1829
@ FRETITEM_NONE
Definition ff_details.h:1820
void SetStringNumber(int value)
Sets the string number for this item. The strings are numbered right-to-left starting with 1.
Definition ff_details.h:1884
void SetFingering(int value)
Sets the fingering value for this item.
Definition ff_details.h:1903
FCFretItem()
Constructor.
Definition ff_details.h:1864
FRETITEMFINGERINGS
Codes for fretboard item fingering symbols.
Definition ff_details.h:1840
@ FRETFINGERING_SECOND
Definition ff_details.h:1848
@ FRETFINGERING_FOURTH
Definition ff_details.h:1854
@ FRETFINGERING_THUMB
Definition ff_details.h:1857
@ FRETFINGERING_FIRST
Definition ff_details.h:1845
@ FRETFINGERING_NONE
Definition ff_details.h:1842
@ FRETFINGERING_THIRD
Definition ff_details.h:1851
void SetupItem(int symbol, int fretnum, int stringnum, int fingering)
Set up the item. Use this to set up the item rather than individual set methods.
Definition ff_details.h:1936
int GetFingering() const
Returns the fingering value for this item.
Definition ff_details.h:1895
Collection class of FCFretItem class objects that are not barres.
Definition ff_detailscollection.h:403
Class that represents a single fretboard group item. The fretboard group item has a header and a list...
Definition ff_details.h:2023
FCFretboardGroupItem()
The constructor.
Definition finaleframework.cpp:37515
FCFretBarreItems * GetFretBarreItems() const
returns the FCFretBarreItems for this fretboard group item. This value is a pointer into the current ...
Definition ff_details.h:2113
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_details.h:2036
void SetLocked(bool state)
Sets the locked state from the Fretboard Editor dialog for this fretboard group item.
Definition ff_details.h:2149
void SetFretboardNumber(twobyte value)
Sets the "Fretboard Number" value from the Fretboard Editor dialog for this fretboard group item.
Definition ff_details.h:2137
void SetShowFretboardNumber(bool state)
Sets the "Show Fretboard Number" state from the Fretboard Editor dialog for this fretboard group item...
Definition ff_details.h:2161
bool SaveAs(CMPER fretboardGroupID, twobyte fretboardGroupInci, twobyte rootIndex)
Saves a loaded or newly constructed fretboard group item for the given key pair to a new FCFretboardG...
Definition ff_details.h:2086
bool GetShowFretboardNumber() const
Returns the "Show Fretboard Number" state from the Fretboard Editor dialog for this fretboard group i...
Definition ff_details.h:2155
FCFretItems * GetFretItems() const
returns the FCFretItems for this fretboard group item. This value is a pointer into the current insta...
Definition ff_details.h:2105
bool Reload()
Reloads the fretboard group item using the key pair from the previous call to Load.
Definition finaleframework.cpp:37522
twobyte GetFretboardNumber() const
Returns the "Fretboard Number" value from the Fretboard Editor dialog for this fretboard group item.
Definition ff_details.h:2131
twobyte GetNumberOfFrets() const
Returns the "Number of Frets" value from the Fretboard Editor dialog for this fretboard group item.
Definition ff_details.h:2119
bool Delete()
Deletes all data associated with the loaded fretboard group from the document.
Definition finaleframework.cpp:37551
bool Save()
Save the loaded fretboard group item for the given key pair.
Definition finaleframework.cpp:37560
bool GetLocked() const
Returns the locked state from the Fretboard Editor dialog for this fretboard group item.
Definition ff_details.h:2143
bool Load(CMPER fretboardGroupID, twobyte fretboardGroupInci, twobyte rootIndex)
Loads the fretboard group item for the given key pair.
Definition ff_details.h:2053
void SetNumberOfFrets(twobyte value)
Sets the "Number of Frets" value from the Fretboard Editor dialog for this fretboard group item.
Definition ff_details.h:2125
Encapsulates a staff group.
Definition ff_details.h:79
void SetEndMeasure(twobyte value)
Sets the end measure for the group (for Finale 2011 and later).
Definition ff_details.h:671
void SetUseAbbreviatedNamePositioning(bool state)
Sets if the individual positioning information should be used for abbreviated names in the group.
Definition ff_details.h:727
void SetEndStaff(twobyte staffno)
Sets the end staff number for the group.
Definition ff_details.h:693
void SetBracketSingleStaff(bool state)
Sets the "Bracket on single staves" state for the bracket.
Definition ff_details.h:990
GROUPSTAFFHIDES GetEmptyStaffHide() const
Returns the optimization setting for the group.
Definition ff_details.h:545
twobyte GetEndMeasure() const
Returns the end measure for the group (for Finale 2011 and later).
Definition ff_details.h:652
void SetBracketVerticalTopPos(Evpu16 value)
Sets the vertical top position/offset for the bracket.
Definition ff_details.h:970
void SetBarlineUse(bool value)
Sets the "Use Alternating Barline" state for the group.
Definition ff_details.h:778
CMPER GetAbbreviatedNameID() const
Returns the raw text ID for the abbreviated group name.
Definition ff_details.h:353
FLAG_16 GetFullNameAlign() const
Returns the alignment for the group's full name text.
Definition ff_details.h:616
FCString * CreateTrimmedFullNameString()
Creates a string object of the trimmed full group name.
Definition finaleframework.cpp:37119
FCMusicRegion * CreateMusicRegion() const
Creates a region corresponding to the FCGroup instance in Scroll View.
Definition finaleframework.cpp:37162
FCString * CreateAbbreviatedNameString()
Creates a string object of the abbreviated group name (including the Enigma text tags).
Definition finaleframework.cpp:37104
bool GetShowGroupName() const
Returns the "Show Group Name" state.
Definition ff_details.h:558
CMPER GetFullNameID() const
Returns the raw text ID for the full group name.
Definition ff_details.h:443
bool GetUseAbbreviatedNamePositioning() const
Returns if the individual positioning information should be used for abbreviated names in the group.
Definition ff_details.h:457
bool SaveNewAbbreviatedNameBlock(FCString *pString)
Saves a new raw text block (both a raw text and the connected text block) and assigns it to the full ...
Definition finaleframework.cpp:37182
FLAG_16 GetAbbreviatedNameJustify() const
Returns the justification for the group's abbreviated name text.
Definition ff_details.h:605
void DebugDump() override
Outputs the class data/information for debugging purposes.
Definition ff_details.h:996
Evpu16 GetBracketHorizontalPos() const
Returns the horizontal position/offset for the bracket.
Definition ff_details.h:401
bool GetUseFullNamePositioning() const
Returns if the individual positioning information should be used for full names in the group.
Definition ff_details.h:450
void SetBarlineShapeID(twobyte shapeID)
Sets the custom barline shape ID.
Definition ff_details.h:788
FLAG_16 GetFullNameJustify() const
Returns the justification for the group's full name text.
Definition ff_details.h:594
FCString * CreateFullNameString()
Creates a string object of the full group name (including the Enigma text tags).
Definition finaleframework.cpp:37111
void SetStartMeasure(twobyte value)
Sets the start measure for the group (for Finale 2011 and later).
Definition ff_details.h:680
FCString * CreateDisplayFullNameString()
Creates a group name for display purposes.
Definition finaleframework.cpp:37130
Evpu16 GetFullNameHorizontalOffset() const
Returns the horizontal adjustment offset for the full group name (compared to the default position).
Definition ff_details.h:466
Evpu16 GetFullNameVerticalOffset() const
Returns the vertical adjustment offset for the full group name (compared to the default position).
Definition ff_details.h:484
twobyte GetBarlineShapeID() const
Returns the custom barline shape ID, it any.
Definition finaleframework.cpp:37278
GROUPBARLINESTYLES
The group barline styles, used by FCGroup::GetDrawBarlineMode() and FCGroup::SetDrawBarlineMode().
Definition ff_details.h:206
@ GROUPBARLINESTYLE_ONLYON
Definition ff_details.h:208
@ GROUPBARLINESTYLE_THROUGH
Definition ff_details.h:214
@ GROUPBARLINESTYLE_ONLYBETWEEN
Definition ff_details.h:211
Evpu16 GetBracketVerticalTopPos() const
Returns the vertical top position/offset for the bracket.
Definition ff_details.h:410
Evpu16 GetBracketVerticalBottomPos() const
Returns the vertical bottom position/offset for the bracket.
Definition ff_details.h:419
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_details.h:219
void SetAbbreviatedNameAlign(FLAG_16 value)
Returns the alignment for the group's abbreviated name text.
Definition ff_details.h:907
twobyte GetStartStaff() const
Returns the start staff number for the group.
Definition ff_details.h:499
void SetEmptyStaffHide(GROUPSTAFFHIDES value)
Sets the optimization setting for the group.
Definition ff_details.h:798
Evpu16 GetAbbreviatedNameVerticalOffset() const
Returns the vertical adjustment offset for the abbreviated group name (compared to the default positi...
Definition ff_details.h:493
bool GetAbbreviatedNameExpandSingle() const
Definition ff_details.h:368
void SetAbbreviatedNameExpandSingle(bool state)
Definition ff_details.h:927
void SetBracketVerticalBottomPos(Evpu16 value)
Sets the vertical bottom position/offset for the bracket.
Definition ff_details.h:980
int CalcStaffIndex(twobyte staff)
Returns the 0-based index within the group for a staff.
Definition finaleframework.cpp:37208
FLAG_16 GetAbbreviatedNameAlign() const
Returns the alignment for the group's abbreviated name text.
Definition ff_details.h:626
void SetAbbreviatedNameJustify(FLAG_16 value)
Sets the justification for the group's abbreviated name text.
Definition ff_details.h:882
void SetFullNameVerticalOffset(Evpu16 value)
Sets the vertical adjustment offset for the full group name (compared to the default position).
Definition ff_details.h:754
twobyte GetBarlineStyle() const
Returns the barline style for the group.
Definition finaleframework.cpp:37284
bool SaveNewFullNameBlock(FCString *pString)
Saves a new raw text block (both a raw text and the connected text block) and assigns it to the full ...
Definition finaleframework.cpp:37195
bool GetFullNameExpandSingle() const
Definition ff_details.h:359
void SetBracketStyle(FCGROUP_BRACKETS bracketid)
Sets the bracket style (any of the GRBRAC_* defines, such as GRBRAC_PIANO).
Definition ff_details.h:937
FCGroup()
The constructor.
Definition ff_details.h:226
Evpu16 GetAbbreviatedNameHorizontalOffset() const
Returns the horizontal adjustment offset for the abbreviated group name (compared to the default posi...
Definition ff_details.h:475
void SetDrawBarlineMode(GROUPBARLINESTYLES value)
Sets how barlines are drawn for the group.
Definition ff_details.h:839
FCGROUP_BRACKETS
Constants for group bracket styles, for use with GetBracketStyle() and SetBracketStyle().
Definition ff_details.h:144
@ GRBRAC_NONE
Definition ff_details.h:146
@ GRBRAC_REVERSEDESK
Definition ff_details.h:173
@ GRBRAC_REVERSEPIANO
Definition ff_details.h:161
@ GRBRAC_CURVEDCHORUS
Definition ff_details.h:164
@ GRBRAC_DESK
Definition ff_details.h:170
@ GRBRAC_CHORUS
Definition ff_details.h:152
@ GRBRAC_PIANO
Definition ff_details.h:155
@ GRBRAC_REVERSECHORUS
Definition ff_details.h:158
@ GRBRAC_PLAIN
Definition ff_details.h:149
@ GRBRAC_REVERSECURVEDCHORUS
Definition ff_details.h:167
GROUPSTAFFHIDES
The constants for "optimization" of staves in a group.
Definition ff_details.h:189
@ GROUPSTAFFHIDE_ALLEMPTY
Definition ff_details.h:194
@ GROUPSTAFFHIDE_NEVER
Definition ff_details.h:197
@ GROUPSTAFFHIDE_NORMAL
Definition ff_details.h:191
void SetAbbreviatedNameHorizontalOffset(Evpu16 value)
Sets the horizontal adjustment offset for the abbreviated group name (compared to the default positio...
Definition ff_details.h:745
void SetAbbreviatedNameVerticalOffset(Evpu16 value)
Sets the vertical adjustment offset for the abbreviated group name (compared to the default position)...
Definition ff_details.h:763
void SetBarlineStyle(twobyte barline)
Sets the barline style for the group.
Definition finaleframework.cpp:37298
bool ContainsStaff(twobyte staff)
Returns true if the staff belongs to the group.
Definition finaleframework.cpp:37246
void SetFullNameAlign(FLAG_16 value)
Returns the alignment for the group's full name text.
Definition ff_details.h:895
void SetUseFullNamePositioning(bool state)
Sets if the individual positioning information should be used for full names in the group.
Definition ff_details.h:720
void SetFullNameExpandSingle(bool state)
Definition ff_details.h:918
void SetFullNameHorizontalOffset(Evpu16 value)
Sets the horizontal adjustment offset for the full group name (compared to the default position).
Definition ff_details.h:736
int CalcStaffSpan()
Returns the number of staves contained in the group, based on the global list of staves.
Definition finaleframework.cpp:37229
twobyte GetItemID() const
Returns the saved ID for the group.
Definition ff_details.h:505
GROUPBARLINESTYLES GetDrawBarlineMode() const
Returns how barlines are drawn for the group.
Definition ff_details.h:574
void SetFullNameJustify(FLAG_16 value)
Sets the justification for the group's full name text.
Definition ff_details.h:870
bool GetBracketSingleStaff() const
Returns the "Bracket on single staves" state for the bracket.
Definition ff_details.h:428
twobyte GetEndStaff() const
Returns the end staff number for the group.
Definition ff_details.h:437
void SetStartStaff(twobyte staffno)
Sets the start staff number for the group.
Definition ff_details.h:687
bool GetBarlineUse() const
Returns true if "Use Alternating Barline" is set for the group.
Definition ff_details.h:519
twobyte GetStartMeasure() const
Returns the start measure for the group (for Finale 2011 and later)
Definition ff_details.h:661
bool HasAbbreviatedName()
Returns true if an abbreivated name is available.
Definition ff_details.h:641
const char * ClassName() const override
Returns the name of the class, for diagnostic purposes. This method MUST be overwritten in each child...
Definition ff_details.h:218
FCGROUP_BRACKETS GetBracketStyle() const
Returns the bracket style (any of the GRBRAC_* constants, such as GRBRAC_PIANO).
Definition ff_details.h:383
void SetBracketHorizontalPos(Evpu16 value)
Sets the horizontal position/offset for the bracket.
Definition ff_details.h:961
void SetShowGroupName(bool state)
Sets the "Show Group Name" state.
Definition ff_details.h:828
bool HasFullName()
Returns true if a full name is available.
Definition ff_details.h:635
Class that encapsulates EREGION and provides additional functionality to region handling.
Definition ff_region.h:25
RAWTEXTTYPES
enumerates the possible raw text types.
Definition ff_text.h:72
@ RAWTEXTTYPE_VERSELYRIC
Definition ff_text.h:77
@ RAWTEXTTYPE_CHORUSLYRIC
Definition ff_text.h:80
@ RAWTEXTTYPE_SECTIONLYRIC
Definition ff_text.h:83
@ RAWTEXTTYPE_UNKNOWN
Definition ff_text.h:98
Class that provides storage for text. This is to achieve platform-transparent text handling,...
Definition ff_base.h:1877