comparison win32/usp10.d @ 1:4a9dcbd9e54f

-files of 0.13 beta -fixes so that it now compiles with the current dmd version
author marton@basel.hu
date Tue, 05 Apr 2011 20:44:01 +0200
parents
children
comparison
equal deleted inserted replaced
0:586e4a649642 1:4a9dcbd9e54f
1 /* USP - Unicode Complex Script processor
2 * http://msdn2.microsoft.com/library/ms776488 */
3
4
5 module win32.usp10;
6 import win32.windows;
7
8
9
10 /* Uniscribe Enumeration Types
11 * http://msdn2.microsoft.com/library/ms776518 */
12
13 enum : WORD {
14 SCRIPT_UNDEFINED = 0,
15 }
16
17 enum : DWORD {
18 SGCM_RTL = 0x00000001,
19 }
20
21 enum : DWORD {
22 SSA_PASSWORD = 0x00000001,
23 SSA_TAB = 0x00000002,
24 SSA_CLIP = 0x00000004,
25 SSA_FIT = 0x00000008,
26 SSA_DZWG = 0x00000010,
27 SSA_FALLBACK = 0x00000020,
28 SSA_BREAK = 0x00000040,
29 SSA_GLYPHS = 0x00000080,
30 SSA_RTL = 0x00000100,
31 SSA_GCP = 0x00000200,
32 SSA_HOTKEY = 0x00000400,
33 SSA_METAFILE = 0x00000800,
34 SSA_LINK = 0x00001000,
35 SSA_HIDEHOTKEY = 0x00002000,
36 SSA_HOTKEYONLY = 0x00002400,
37 SSA_FULLMEASURE = 0x04000000,
38 SSA_LPKANSIFALLBACK = 0x08000000,
39 SSA_PIDX = 0x10000000,
40 SSA_LAYOUTRTL = 0x20000000,
41 SSA_DONTGLYPH = 0x40000000,
42 SSA_NOKASHIDA = 0x80000000,
43 }
44
45 enum : DWORD {
46 SIC_COMPLEX = 1,
47 SIC_ASCIIDIGIT = 2,
48 SIC_NEUTRAL = 4,
49 }
50
51 enum : DWORD {
52 SCRIPT_DIGITSUBSTITUTE_CONTEXT,
53 SCRIPT_DIGITSUBSTITUTE_NONE,
54 SCRIPT_DIGITSUBSTITUTE_NATIONAL,
55 SCRIPT_DIGITSUBSTITUTE_TRADITIONAL,
56 }
57
58 enum SCRIPT_JUSTIFY : WORD {
59 SCRIPT_JUSTIFY_NONE,
60 SCRIPT_JUSTIFY_ARABIC_BLANK,
61 SCRIPT_JUSTIFY_CHARACTER,
62 SCRIPT_JUSTIFY_RESERVED1,
63 SCRIPT_JUSTIFY_BLANK,
64 SCRIPT_JUSTIFY_RESERVED2,
65 SCRIPT_JUSTIFY_RESERVED3,
66 SCRIPT_JUSTIFY_ARABIC_NORMAL,
67 SCRIPT_JUSTIFY_ARABIC_KASHIDA,
68 SCRIPT_JUSTIFY_ARABIC_ALEF,
69 SCRIPT_JUSTIFY_ARABIC_HA,
70 SCRIPT_JUSTIFY_ARABIC_RA,
71 SCRIPT_JUSTIFY_ARABIC_BA,
72 SCRIPT_JUSTIFY_ARABIC_BARA,
73 SCRIPT_JUSTIFY_ARABIC_SEEN,
74 SCRIPT_JUSTIFY_ARABIC_SEEN_M,
75 }
76
77
78
79 /* Uniscribe Structures
80 * http://msdn2.microsoft.com/library/ms776479 */
81
82 alias void* SCRIPT_CACHE;
83 alias void* SCRIPT_STRING_ANALYSIS;
84
85 extern (C)
86 {
87 struct SCRIPT_CONTROL
88 {
89 private DWORD _bitfield;
90 DWORD uDefaultLanguage() { return (_bitfield >> 0) & 0xFFFF; }
91 DWORD uDefaultLanguage(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFF0000) | (val << 0)); return val; }
92 DWORD fContextDigits() { return (_bitfield >> 16) & 0x1; }
93 DWORD fContextDigits(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFEFFFF) | (val << 16)); return val; }
94 DWORD fInvertPreBoundDir() { return (_bitfield >> 17) & 0x1; }
95 DWORD fInvertPreBoundDir(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFDFFFF) | (val << 17)); return val; }
96 DWORD fInvertPostBoundDir() { return (_bitfield >> 18) & 0x1; }
97 DWORD fInvertPostBoundDir(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFFBFFFF) | (val << 18)); return val; }
98 DWORD fLinkStringBefore() { return (_bitfield >> 19) & 0x1; }
99 DWORD fLinkStringBefore(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFF7FFFF) | (val << 19)); return val; }
100 DWORD fLinkStringAfter() { return (_bitfield >> 20) & 0x1; }
101 DWORD fLinkStringAfter(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFEFFFFF) | (val << 20)); return val; }
102 DWORD fNeutralOverride() { return (_bitfield >> 21) & 0x1; }
103 DWORD fNeutralOverride(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFDFFFFF) | (val << 21)); return val; }
104 DWORD fNumericOverride() { return (_bitfield >> 22) & 0x1; }
105 DWORD fNumericOverride(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFFBFFFFF) | (val << 22)); return val; }
106 DWORD fLegacyBidiClass() { return (_bitfield >> 23) & 0x1; }
107 DWORD fLegacyBidiClass(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFFFF7FFFFF) | (val << 23)); return val; }
108 DWORD fReserved() { return (_bitfield >> 24) & 0xFF; }
109 DWORD fReserved(DWORD val) { _bitfield = cast(DWORD)((_bitfield & 0xFFFFFFFF00FFFFFF) | (val << 24)); return val; }
110 }
111
112 struct SCRIPT_STATE
113 {
114 private WORD _bitfield;
115 WORD uBidiLevel() { return cast(WORD)((_bitfield >> 0) & 0x1F); }
116 WORD uBidiLevel(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFE0) | (val << 0)); return val; }
117 WORD fOverrideDirection() { return cast(WORD)((_bitfield >> 5) & 0x1); }
118 WORD fOverrideDirection(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFDF) | (val << 5)); return val; }
119 WORD fInhibitSymSwap() { return cast(WORD)((_bitfield >> 6) & 0x1); }
120 WORD fInhibitSymSwap(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFBF) | (val << 6)); return val; }
121 WORD fCharShape() { return cast(WORD)((_bitfield >> 7) & 0x1); }
122 WORD fCharShape(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFF7F) | (val << 7)); return val; }
123 WORD fDigitSubstitute() { return cast(WORD)((_bitfield >> 8) & 0x1); }
124 WORD fDigitSubstitute(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFEFF) | (val << 8)); return val; }
125 WORD fInhibitLigate() { return cast(WORD)((_bitfield >> 9) & 0x1); }
126 WORD fInhibitLigate(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFDFF) | (val << 9)); return val; }
127 WORD fDisplayZWG() { return cast(WORD)((_bitfield >> 10) & 0x1); }
128 WORD fDisplayZWG(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFBFF) | (val << 10)); return val; }
129 WORD fArabicNumContext() { return cast(WORD)((_bitfield >> 11) & 0x1); }
130 WORD fArabicNumContext(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFF7FF) | (val << 11)); return val; }
131 WORD fGcpClusters() { return cast(WORD)((_bitfield >> 12) & 0x1); }
132 WORD fGcpClusters(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFEFFF) | (val << 12)); return val; }
133 WORD fReserved() { return cast(WORD)((_bitfield >> 13) & 0x1); }
134 WORD fReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFDFFF) | (val << 13)); return val; }
135 WORD fEngineReserved() { return cast(WORD)((_bitfield >> 14) & 0x3); }
136 WORD fEngineReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFF3FFF) | (val << 14)); return val; }
137 }
138
139
140 struct SCRIPT_ANALYSIS
141 {
142 private WORD _bitfield;
143 WORD eScript() { return cast(WORD)((_bitfield >> 0) & 0x3FF); }
144 WORD eScript(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFC00) | (val << 0)); return val; }
145 WORD fRTL() { return cast(WORD)((_bitfield >> 10) & 0x1); }
146 WORD fRTL(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFBFF) | (val << 10)); return val; }
147 WORD fLayoutRTL() { return cast(WORD)((_bitfield >> 11) & 0x1); }
148 WORD fLayoutRTL(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFF7FF) | (val << 11)); return val; }
149 WORD fLinkBefore() { return cast(WORD)((_bitfield >> 12) & 0x1); }
150 WORD fLinkBefore(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFEFFF) | (val << 12)); return val; }
151 WORD fLinkAfter() { return cast(WORD)((_bitfield >> 13) & 0x1); }
152 WORD fLinkAfter(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFDFFF) | (val << 13)); return val; }
153 WORD fLogicalOrder() { return cast(WORD)((_bitfield >> 14) & 0x1); }
154 WORD fLogicalOrder(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFBFFF) | (val << 14)); return val; }
155 WORD fNoGlyphIndex() { return cast(WORD)((_bitfield >> 15) & 0x1); }
156 WORD fNoGlyphIndex(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFF7FFF) | (val << 15)); return val; }
157 SCRIPT_STATE s;
158 }
159
160
161 struct SCRIPT_ITEM
162 {
163 int iCharPos;
164 SCRIPT_ANALYSIS a;
165 }
166
167 struct SCRIPT_VISATTR
168 {
169 private WORD _bitfield;
170 WORD uJustification() { return cast(WORD)((_bitfield >> 0) & 0xF); }
171 WORD uJustification(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFF0) | (val << 0)); return val; }
172 WORD fClusterStart() { return cast(WORD)((_bitfield >> 4) & 0x1); }
173 WORD fClusterStart(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFEF) | (val << 4)); return val; }
174 WORD fDiacritic() { return cast(WORD)((_bitfield >> 5) & 0x1); }
175 WORD fDiacritic(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFDF) | (val << 5)); return val; }
176 WORD fZeroWidth() { return cast(WORD)((_bitfield >> 6) & 0x1); }
177 WORD fZeroWidth(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFFBF) | (val << 6)); return val; }
178 WORD fReserved() { return cast(WORD)((_bitfield >> 7) & 0x1); }
179 WORD fReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFFFF7F) | (val << 7)); return val; }
180 WORD fShapeReserved() { return cast(WORD)((_bitfield >> 8) & 0xFF); }
181 WORD fShapeReserved(WORD val) { _bitfield = cast(WORD)((_bitfield & 0xFFFFFFFFFFFF00FF) | (val << 8)); return val; }
182 }
183
184 struct GOFFSET
185 {
186 LONG du;
187 LONG dv;
188 }
189
190 struct SCRIPT_LOGATTR
191 {
192 BYTE _bitfield;
193 BYTE fSoftBreak() { return cast(BYTE)((_bitfield >> 0) & 0x1); }
194 BYTE fSoftBreak(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFFE) | (val << 0)); return val; }
195 BYTE fWhiteSpace() { return cast(BYTE)((_bitfield >> 1) & 0x1); }
196 BYTE fWhiteSpace(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFFD) | (val << 1)); return val; }
197 BYTE fCharStop() { return cast(BYTE)((_bitfield >> 2) & 0x1); }
198 BYTE fCharStop(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFFB) | (val << 2)); return val; }
199 BYTE fWordStop() { return cast(BYTE)((_bitfield >> 3) & 0x1); }
200 BYTE fWordStop(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFF7) | (val << 3)); return val; }
201 BYTE fInvalid() { return cast(BYTE)((_bitfield >> 4) & 0x1); }
202 BYTE fInvalid(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFFEF) | (val << 4)); return val; }
203 BYTE fReserved() { return cast(BYTE)((_bitfield >> 5) & 0x7); }
204 BYTE fReserved(BYTE val) { _bitfield = cast(BYTE)((_bitfield & 0xFFFFFFFFFFFFFF1F) | (val << 5)); return val; }
205 }
206
207 struct SCRIPT_PROPERTIES
208 {
209 private DWORD _bitfield1;
210 DWORD langid() { return (_bitfield1 >> 0) & 0xFFFF; }
211 DWORD langid(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFF0000) | (val << 0)); return val; }
212 DWORD fNumeric() { return (_bitfield1 >> 16) & 0x1; }
213 DWORD fNumeric(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFEFFFF) | (val << 16)); return val; }
214 DWORD fComplex() { return (_bitfield1 >> 17) & 0x1; }
215 DWORD fComplex(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFDFFFF) | (val << 17)); return val; }
216 DWORD fNeedsWordBreaking() { return (_bitfield1 >> 18) & 0x1; }
217 DWORD fNeedsWordBreaking(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFBFFFF) | (val << 18)); return val; }
218 DWORD fNeedsCaretInfo() { return (_bitfield1 >> 19) & 0x1; }
219 DWORD fNeedsCaretInfo(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFF7FFFF) | (val << 19)); return val; }
220 DWORD bCharSet() { return (_bitfield1 >> 20) & 0xFF; }
221 DWORD bCharSet(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFF00FFFFF) | (val << 20)); return val; }
222 DWORD fControl() { return (_bitfield1 >> 28) & 0x1; }
223 DWORD fControl(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFEFFFFFFF) | (val << 28)); return val; }
224 DWORD fPrivateUseArea() { return (_bitfield1 >> 29) & 0x1; }
225 DWORD fPrivateUseArea(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFDFFFFFFF) | (val << 29)); return val; }
226 DWORD fNeedsCharacterJustify() { return (_bitfield1 >> 30) & 0x1; }
227 DWORD fNeedsCharacterJustify(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFBFFFFFFF) | (val << 30)); return val; }
228 DWORD fInvalidGlyph() { return (_bitfield1 >> 31) & 0x1; }
229 DWORD fInvalidGlyph(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFF7FFFFFFF) | (val << 31)); return val; }
230 private DWORD _bitfield2;
231 DWORD fInvalidLogAttr() { return (_bitfield2 >> 0) & 0x1; }
232 DWORD fInvalidLogAttr(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFFE) | (val << 0)); return val; }
233 DWORD fCDM() { return (_bitfield2 >> 1) & 0x1; }
234 DWORD fCDM(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFFD) | (val << 1)); return val; }
235 DWORD fAmbiguousCharSet() { return (_bitfield2 >> 2) & 0x1; }
236 DWORD fAmbiguousCharSet(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFFB) | (val << 2)); return val; }
237 DWORD fClusterSizeVaries() { return (_bitfield2 >> 3) & 0x1; }
238 DWORD fClusterSizeVaries(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFF7) | (val << 3)); return val; }
239 DWORD fRejectInvalid() { return (_bitfield2 >> 4) & 0x1; }
240 DWORD fRejectInvalid(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFFEF) | (val << 4)); return val; }
241 }
242
243 struct SCRIPT_FONTPROPERTIES
244 {
245 int cBytes = SCRIPT_FONTPROPERTIES.sizeof;
246 WORD wgBlank;
247 WORD wgDefault;
248 WORD wgInvalid;
249 WORD wgKashida;
250 int iKashidaWidth;
251 }
252
253 struct SCRIPT_TABDEF
254 {
255 int cTabStops;
256 int iScale;
257 int* pTabStops;
258 int iTabOrigin;
259 }
260
261 struct SCRIPT_DIGITSUBSTITUTE
262 {
263 private DWORD _bitfield1;
264 DWORD NationalDigitLanguage() { return (_bitfield1 >> 0) & 0xFFFF; }
265 DWORD NationalDigitLanguage(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFFFFFF0000) | (val << 0)); return val; }
266 DWORD TraditionalDigitLanguage() { return (_bitfield1 >> 16) & 0xFFFF; }
267 DWORD TraditionalDigitLanguage(DWORD val) { _bitfield1 = cast(DWORD)((_bitfield1 & 0xFFFFFFFF0000FFFF) | (val << 16)); return val; }
268 private DWORD _bitfield2;
269 DWORD DigitSubstitute() { return (_bitfield2 >> 0) & 0xFF; }
270 DWORD DigitSubstitute(DWORD val) { _bitfield2 = cast(DWORD)((_bitfield2 & 0xFFFFFFFFFFFFFF00) | (val << 0)); return val; }
271 DWORD dwReserved;
272 }
273
274 /* TODO: Windows Vista fearured structs
275 OPENTYPE_FEATURE_RECORD
276 OPENTYPE_TAG
277 SCRIPT_CHARPROP
278 SCRIPT_GLYPHPROP
279 TEXTRANGE_PROPERTIES
280 */
281 }
282
283
284 /* Uniscribe Functions
285 * http://msdn2.microsoft.com/library/ms776469 */
286 extern (Windows)
287 {
288 HRESULT ScriptFreeCache(SCRIPT_CACHE*);
289 HRESULT ScriptItemize(WCHAR*, int, int, SCRIPT_CONTROL*, SCRIPT_STATE*, SCRIPT_ITEM*, int*);
290 HRESULT ScriptLayout(int, BYTE*, int*, int*);
291 HRESULT ScriptShape(HDC, SCRIPT_CACHE*, WCHAR*, int, int, SCRIPT_ANALYSIS*, WORD*, WORD*, SCRIPT_VISATTR*, int*);
292 HRESULT ScriptPlace(HDC, SCRIPT_CACHE*, WORD*, int, SCRIPT_VISATTR*, SCRIPT_ANALYSIS*, int*, GOFFSET*, ABC*);
293 HRESULT ScriptTextOut(HDC, SCRIPT_CACHE*, int, int, UINT, RECT*, SCRIPT_ANALYSIS*, WCHAR*, int, WORD*, int, int*, int*, GOFFSET*);
294 HRESULT ScriptJustify(SCRIPT_VISATTR*, int*, int, int, int, int*);
295 HRESULT ScriptBreak(WCHAR*, int, SCRIPT_ANALYSIS*, SCRIPT_LOGATTR*);
296 HRESULT ScriptCPtoX(int, BOOL, int, int, WORD*, SCRIPT_VISATTR*, int*, SCRIPT_ANALYSIS*, int*);
297 HRESULT ScriptXtoCP(int, int, int, WORD*, SCRIPT_VISATTR*, int*, SCRIPT_ANALYSIS*, int*, int*);
298 HRESULT ScriptGetLogicalWidths(SCRIPT_ANALYSIS*, int, int, int*, WORD*, SCRIPT_VISATTR*, int*);
299 HRESULT ScriptApplyLogicalWidth(int*, int, int, WORD*, SCRIPT_VISATTR*, int*, SCRIPT_ANALYSIS*, ABC*, int*);
300 HRESULT ScriptGetCMap(HDC, SCRIPT_CACHE*, WCHAR*, int, DWORD, WORD*);
301 HRESULT ScriptGetGlyphABCWidth(HDC, SCRIPT_CACHE*, WORD, ABC*);
302 HRESULT ScriptGetProperties(SCRIPT_PROPERTIES***, int*);
303 HRESULT ScriptGetFontProperties(HDC, SCRIPT_CACHE*, SCRIPT_FONTPROPERTIES*);
304 HRESULT ScriptCacheGetHeight(HDC, SCRIPT_CACHE*, int*);
305 HRESULT ScriptIsComplex(WCHAR*, int, DWORD);
306 HRESULT ScriptRecordDigitSubstitution(LCID, SCRIPT_DIGITSUBSTITUTE*);
307 HRESULT ScriptApplyDigitSubstitution(SCRIPT_DIGITSUBSTITUTE*, SCRIPT_CONTROL*, SCRIPT_STATE*);
308
309 /* ScriptString Functions
310 * http://msdn2.microsoft.com/library/ms776485 */
311 HRESULT ScriptStringAnalyse(HDC, void*, int, int, int, DWORD, int, SCRIPT_CONTROL*, SCRIPT_STATE*, int*, SCRIPT_TABDEF*, BYTE*, SCRIPT_STRING_ANALYSIS*);
312 HRESULT ScriptStringFree(SCRIPT_STRING_ANALYSIS*);
313 SIZE* ScriptString_pSize(SCRIPT_STRING_ANALYSIS);
314 int* ScriptString_pcOutChars(SCRIPT_STRING_ANALYSIS);
315 SCRIPT_LOGATTR* ScriptString_pLogAttr(SCRIPT_STRING_ANALYSIS);
316 HRESULT ScriptStringGetOrder(SCRIPT_STRING_ANALYSIS, UINT*);
317 HRESULT ScriptStringCPtoX(SCRIPT_STRING_ANALYSIS, int, BOOL, int*);
318 HRESULT ScriptStringXtoCP(SCRIPT_STRING_ANALYSIS, int, int*, int*);
319 HRESULT ScriptStringGetLogicalWidths(SCRIPT_STRING_ANALYSIS, int*);
320 HRESULT ScriptStringValidate(SCRIPT_STRING_ANALYSIS);
321 HRESULT ScriptStringOut(SCRIPT_STRING_ANALYSIS, int, int, UINT, RECT*, int, int, BOOL);
322
323 /* TODO: Windows Vista fearured functions
324 ScriptGetFontAlternateGlyphs()
325 ScriptGetFontFeatureTags()
326 ScriptGetFontLanguageTags()
327 ScriptGetFontScriptTags()
328 ScriptItemizeOpenType()
329 ScriptPlaceOpenType()
330 ScriptPositionSingleGlyph()
331 ScriptShapeOpenType()
332 ScriptSubstituteSingleGlyph()
333 */
334 }