Buffer size needs to be specified in bytes on input.
[wine] / include / usp10.h
1 /*
2  * Copyright (C) 2005 Steven Edwards
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17  */
18
19 #ifndef __USP10_H
20 #define __USP10_H
21
22 typedef struct tag_SCRIPT_CONTROL {
23   DWORD uDefaultLanguage        :16;
24   DWORD fContextDigits          :1;
25   DWORD fInvertPreBoundDir      :1;
26   DWORD fInvertPostBoundDir     :1;
27   DWORD fLinkStringBefore       :1;
28   DWORD fLinkStringAfter        :1;
29   DWORD fNeutralOverride        :1;
30   DWORD fNumericOverride        :1;
31   DWORD fLegacyBidiClass        :1;
32   DWORD fReserved               :8;
33 } SCRIPT_CONTROL;
34
35 typedef struct {
36   DWORD langid                  :16;
37   DWORD fNumeric                :1;
38   DWORD fComplex                :1;     
39   DWORD fNeedsWordBreaking      :1;     
40   DWORD fNeedsCaretInfo         :1;
41   DWORD bCharSet                :8;
42   DWORD fControl                :1;
43   DWORD fPrivateUseArea         :1;
44   DWORD fNeedsCharacterJustify  :1;
45   DWORD fInvalidGlyph           :1;
46   DWORD fInvalidLogAttr         :1;
47   DWORD fCDM                    :1;
48   DWORD fAmbiguousCharSet       :1;
49   DWORD fClusterSizeVaries      :1;
50   DWORD fRejectInvalid          :1;
51 } SCRIPT_PROPERTIES;
52
53 typedef struct tag_SCRIPT_STATE {
54   WORD uBidiLevel               :5;
55   WORD fOverrideDirection       :1;
56   WORD fInhibitSymSwap          :1;
57   WORD fCharShape               :1;
58   WORD fDigitSubstitute         :1;
59   WORD fInhibitLigate           :1;
60   WORD fDisplayZWG              :1;
61   WORD fArabicNumContext        :1;
62   WORD fGcpClusters             :1;
63   WORD fReserved                :1;
64   WORD fEngineReserved          :2;
65 } SCRIPT_STATE;
66
67 typedef struct tag_SCRIPT_ANALYSIS {
68   WORD eScript                  :10;
69   WORD fRTL                     :1;
70   WORD fLayoutRTL               :1;
71   WORD fLinkBefore              :1;
72   WORD fLinkAfter               :1;
73   WORD fLogicalOrder            :1;
74   WORD fNoGlyphIndex            :1;
75   SCRIPT_STATE  s;
76 } SCRIPT_ANALYSIS;
77
78 typedef struct tag_SCRIPT_ITEM {
79   int iCharPos;
80   SCRIPT_ANALYSIS a;
81 } SCRIPT_ITEM;
82
83 typedef struct tag_SCRIPT_DIGITSUBSTITUTE {
84   DWORD NationalDigitLanguage           :16;
85   DWORD TraditionalDigitLanguage        :16;
86   DWORD DigitSubstitute                 :8;
87   DWORD dwReserved;
88 } SCRIPT_DIGITSUBSTITUTE;
89
90 typedef struct tag_SCRIPT_FONTPROPERTIES {
91   int   cBytes;
92   WORD wgBlank;
93   WORD wgDefault;
94   WORD wgInvalid;
95   WORD wgKashida;
96   int iKashidaWidth;
97 } SCRIPT_FONTPROPERTIES;
98
99 typedef void *SCRIPT_CACHE;
100
101 /* Function Declairations */
102
103 HRESULT WINAPI ScriptGetProperties(const SCRIPT_PROPERTIES ***ppSp, int *piNumScripts);
104 HRESULT WINAPI ScriptRecordDigitSubstitution(LCID Locale, SCRIPT_DIGITSUBSTITUTE *psds);
105 HRESULT WINAPI ScriptApplyDigitSubstitution(const SCRIPT_DIGITSUBSTITUTE* psds, 
106                                             SCRIPT_CONTROL* psc, SCRIPT_STATE* pss);
107 HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItems, 
108                              const SCRIPT_CONTROL *psControl, const SCRIPT_STATE *psState, 
109                              SCRIPT_ITEM *pItems, int *pcItems);
110 HRESULT WINAPI ScriptGetFontProperties(HDC hdc, SCRIPT_CACHE *psc, SCRIPT_FONTPROPERTIES *sfp);
111
112 #endif /* __USP10_H */