Finale PDK Framework 0.77
Power Up Your Finale Music Software
Loading...
Searching...
No Matches
ff_pdkcompatibilty.h
1/*
2 * File: ff_pdkcompatibilty.h
3 * Author: Jari Williamsson
4 *
5 * Created on den 21 november 2010, 14:39
6 */
7
8#ifndef FF_PDKCOMPATIBILTY_H
9#define FF_PDKCOMPATIBILTY_H
10
11/* Define the needed version tags independently of the PDK, so
12the framework doesn't get dependent of a certain PDK version. */
13
14#define FINALEVERSION_2009 MAKE_FINVER( 14, 0, 0, 0, 0 )
15#define FINALEVERSION_2010 MAKE_FINVER( 15, 0, 0, 0, 0 )
16#define FINALEVERSION_2011 MAKE_FINVER( 16, 0, 0, 0, 0 )
17#define FINALEVERSION_2012 MAKE_FINVER( 17, 0, 0, 0, 0 )
18#define FINALEVERSION_2014 MAKE_FINVER( 18, 0, 0, 0, 0 )
19#define FINALEVERSION_2014B MAKE_FINVER( 18, 0, 2, 0, 0 )
20#define FINALEVERSION_2014D MAKE_FINVER( 18, 0, 4, 0, 0 )
21#define FINALEVERSION_2014_5 MAKE_FINVER( 18, 0, 5, 0, 0 )
22#define FINALEVERSION_25 MAKE_FINVER( 25, 0, 0, 0, 0 )
23#define FINALEVERSION_2025 MAKE_FINVER( 25, 0, 0, 0, 0 )
24#define FINALEVERSION_25_1 MAKE_FINVER( 25, 1, 0, 0, 0 )
25#define FINALEVERSION_25_2 MAKE_FINVER( 25, 2, 0, 0, 0 )
26#define FINALEVERSION_25_3 MAKE_FINVER( 25, 3, 0, 0, 0 )
27#define FINALEVERSION_25_4 MAKE_FINVER( 25, 4, 0, 0, 0 )
28#define FINALEVERSION_26 MAKE_FINVER( 26, 0, 0, 0, 0 )
29#define FINALEVERSION_26_1 MAKE_FINVER( 26, 1, 0, 0, 0 )
30#define FINALEVERSION_26_2 MAKE_FINVER( 26, 2, 0, 0, 0 )
31#define FINALEVERSION_26_2_2 MAKE_FINVER( 26, 2, 2, 0, 0 )
32#define FINALEVERSION_26_3 MAKE_FINVER( 26, 3, 0, 0, 0 )
33#define FINALEVERSION_27 MAKE_FINVER( 27, 0, 0, 0, 0 )
34#define FINALEVERSION_27_1 MAKE_FINVER( 27, 1, 0, 0, 0 )
35#define FINALEVERSION_27_2 MAKE_FINVER( 27, 2, 0, 0, 0 )
36#define FINALEVERSION_27_3 MAKE_FINVER( 27, 3, 0, 0, 0 )
37#define FINALEVERSION_27_4 MAKE_FINVER( 27, 4, 0, 0, 0 )
38
39/* Macro to simplify lines of code intended only for Finale 2012 and above */
40#if FXT_VERSION >= FINALEVERSION_2012
41#define FIN2012_CODE(x) x
42#else
43#define FIN2012_CODE(x)
44#endif
45
46/* Macro to simplify lines of code intended only for Finale 2014 and above */
47#if FXT_VERSION >= FINALEVERSION_2014
48#define FIN2014_CODE(x) x
49#else
50#define FIN2014_CODE(x)
51#endif
52
53/* Macro to simplify lines of code intended only for Fin25 and above */
54#if FXT_VERSION >= FINALEVERSION_25
55#define FIN25_CODE(x) x
56#else
57#define FIN25_CODE(x)
58#endif
59
60/* Macro to simplify lines of code intended only for Fin25.1 and above */
61#if FXT_VERSION >= FINALEVERSION_25_1
62#define FIN25_1_CODE(x) x
63#else
64#define FIN25_1_CODE(x)
65#endif
66
67/* Macro to simplify lines of code intended only for Fin25.2 and above */
68#if FXT_VERSION >= FINALEVERSION_25_2
69#define FIN25_2_CODE(x) x
70#else
71#define FIN25_2_CODE(x)
72#endif
73
74/* Macro to simplify lines of code intended only for Fin25.3 and above */
75#if FXT_VERSION >= FINALEVERSION_25_3
76#define FIN25_3_CODE(x) x
77#else
78#define FIN25_3_CODE(x)
79#endif
80
81/* Macro to simplify lines of code intended only for Fin25.4 and above */
82#if FXT_VERSION >= FINALEVERSION_25_4
83#define FIN25_4_CODE(x) x
84#else
85#define FIN25_4_CODE(x)
86#endif
87
88/* Macro to simplify lines of code intended only for Fin26.2 and above */
89#if FXT_VERSION >= FINALEVERSION_26_2
90#define FIN26_2_CODE(x) x
91#else
92#define FIN26_2_CODE(x)
93#endif
94
95
96#ifndef HIBYTE
97#define HIBYTE(w) ((w & 0xff00) / 0x100)
98#endif
99
100#ifndef LOBYTE
101#define LOBYTE(w) (w & 0xff)
102#endif
103
104#ifndef LOWORD
105#define LOWORD(l) (l & 0xffff)
106#endif
107
108#ifndef BYTE
109#define BYTE unsigned char
110#endif
111
112#ifndef HIWORD
113#define HIWORD(l) ((l & 0xffff0000) / 0x10000)
114#endif
115
116#ifndef MAKEWORD
117#define MAKEWORD(a,b) ((EWORD)(((BYTE)((EDWORD)(a) & 0xff)) | ((EWORD)((BYTE)((EDWORD)(b) & 0xff))) << 8))
118#endif
119
120#ifndef MAKELONG
121#define MAKELONG(a,b) ((ELONG)(((EWORD)((EDWORD)(a) & 0xffff)) | ((EWORD)((EWORD)((EDWORD)(b) & 0xffff))) << 16))
122#endif
123
124
125#if FXT_VERSION < FINALEVERSION_2012
126/* Compatibility stuff for the changes between
127 * the 2010 and 2012 PDKs. */
128
129typedef eInst eStaff;
130
131typedef SEVPU Evpu16;
132typedef EVPU Evpu32;
133typedef TIME_EDU TimeEdu32;
134typedef twobyte TimeEdu16;
135typedef twobyte Efix16;
136typedef fourbyte Efix32;
137
138#define ot_EDTPageSpec ot_PageSpec
139#define ot_EDTStaffSystemSpec ot_StaffSystemSpec
140#define ot_EDTStaffSpec ot_StaffSpec
141#define ot_EDTCurrStaffSpec ot_CurrStaffSpec
142#define ot_EDTStaffStyleAssign ot_StaffStyleAssign
143
144#define EF_DOTTIEALTS EF_SPECIALALTS
145#define EF_VALID EF_SETBIT
146#define NF_VALID NF_SETBIT
147#define NF_TIESTART NF_TSBIT
148#define NF_TIEEND NF_TEBIT
149
150#define eUniChar16 utwobyte
151#define eUniChar32 ufourbyte
152#define ePlaybackRoute twobyte
153
154#endif
155
156#if FXT_VERSION >= FINALEVERSION_2014
157#define XEF_CHECKACCIS 0 /* Actually obsolete in Finale 2014, so not using any flag state */
158#endif
159
160#if FXT_VERSION >= FINALEVERSION_2014_5
161#ifndef EWND /* 2014.5 */
162#define EWND FXWND
163#endif /* #ifndef EWND */
164#endif /* FXT_VERSION > FINALEVERSION_2014 */
165
166#if FXT_VERSION < FINALEVERSION_26
167typedef ERECT JWERECT;
168#else
169typedef AlignedERECT JWERECT;
170#endif
171
172#if FXT_VERSION < FINALEVERSION_26_2
173typedef ufourbyte UInt10000ths32;
174typedef fourbyte Int10000ths32;
175#define EDT_SNAP_ARTICS 0x00000001
176#define EDT_SNAP_BRACKETS 0x00000002
177#define EDT_SNAP_CHORDS 0x00000004 // Chords (chord names)
178#define EDT_SNAP_FRETBOARDS 0x00000008
179#define EDT_SNAP_GRAPHICS_RESIZE 0x00000010
180#define EDT_SNAP_GRAPHICS_MOVE 0x00000020
181#define EDT_SNAP_LYRICS 0x00000040
182#define EDT_SNAP_MEASNUMS 0x00000080
183#define EDT_SNAP_REPEATS 0x00000100
184#define EDT_SNAP_EXPRESSIONS 0x00000200 // Score expressions
185#define EDT_SNAP_SPECTOOLS 0x00000400 // Special tool items
186#define EDT_SNAP_STAFFEXPS_DEPRECATED 0x00000800 // rmd 4/14/08: Staff expressions are no longer used (do not remove -- must preserve numbering)
187#define EDT_SNAP_STAFFNAMES 0x00001000 // Staff/group names
188#define EDT_SNAP_STAFFS 0x00002000
189#define EDT_SNAP_TEXTBLKS_RESIZE 0x00004000
190#define EDT_SNAP_TEXTBLKS_MOVE 0x000080000
191#define EDT_SNAP_TUPLETS 0x00010000
192#define EDT_SNAP_ALL 0x0001FFFF
193#endif // FXT_VERSION < FINALEVERSION_26_2
194
195#ifndef PART_PREFS_CMPER
196#define PART_PREFS_CMPER ((CMPER) 65534)
197#endif
198
199#if FXT_VERSION > FINALEVERSION_26_1
200#define SYSCOURTESY_KEYSIG 0x0001
201#define SYSCOURTESY_CLEF 0x0004
202#endif
203
204#if FXT_VERSION < FINALEVERSION_27
205typedef PsPoint16 FontPoints16;
206#endif
207
208#ifndef ARTIC_AUTONOTESTEM
209#define ARTIC_AUTONOTESTEM 4
210#endif
211
212#ifndef ARTIC_SLUR_MODE
213#define ARTIC_SLUR_MODE` 0x0600 // "Slur interaction" dropdown - added in 25.6
214#endif
215
216#ifndef TIE_OPT_INSET_STYLE_FIXED
217#define TIE_OPT_INSET_STYLE_FIXED 0
218#endif
219
220#ifndef TIE_OPT_INSET_STYLE_PERCENT
221#define TIE_OPT_INSET_STYLE_PERCENT 1
222#endif
223
224#if FXT_VERSION < FINALEVERSION_27_2
225#define MMREST_NO_HORZ_STRETCH 0x0002
226#endif
227
228// The PDK omits the definitions for these flags in EDTBeamExtensionMods
229#define BMEXT_HAS_BMEXT 0x0800 // is set when any beam bits are set
230#define BMEXT_BEAM_MASK 0x03ff // 10 beam bits: 8th beam is 0x200 (==FCNoteEntry::EIGHTH_NOTE)
231 // 16th beam is 0x100 (==FCNoteEntry::SIXTEENTH_NOTE), etc.
232
233#ifndef MEASNUM_IS_ALTNUM
234#define MEASNUM_IS_ALTNUM 0x0008
235#endif
236
237#if FXT_VERSION < FINALEVERSION_27_3
238#define ot_SeparateTextRepeatPlacement MAKEEXTAG(edOther,'R','I')
239#endif
240
241#ifndef SEPARATES_HIDDEN
242#define SEPARATES_HIDDEN 0x0001
243#endif
244
245#ifndef NOTEHEAD_ENHARMONIC_FLIP
246#define NOTEHEAD_ENHARMONIC_FLIP 0x0004 // If set, this note is enharmonically flipped
247#endif
248
249#ifndef TEXT_EXP_BREAKREST
250#define TEXT_EXP_BREAKREST 0x0400
251#endif
252
253#ifndef TEXT_EXP_HIDEMEASURENUM
254#define TEXT_EXP_HIDEMEASURENUM 0x8000
255#endif
256
257#ifndef smUninterpEnigma
258#define smUninterpEnigma 0x0FFF // from Mac section in scptutil.h
259#endif
260
261#endif /* FF_PDKCOMPATIBILTY_H */
262