From 44e336e351ab3d3e841fbe8ffc76bd9e4b8d718f Mon Sep 17 00:00:00 2001 From: Magnus Olsen Date: Sun, 11 Feb 2007 10:06:35 +0000 Subject: [PATCH] perpare import of usp10 from wine, import wine usp10.h (from wine cvs 11/02-2007 rev 1.8) from wine log Revision 1.8 Hans Leidekker usp10: Implement ScriptString_pSize. -------------------------------------------------------------------------------- Revision 1.7 Francois Gouget include/usp10.h: Add missing include directives. -------------------------------------------------------------------------------- Revision 1.6 Jonathan Ernst Update the address of the Free Software Foundation. -------------------------------------------------------------------------------- Revision 1.5 Vijay Kiran Kamuju Added some missing definitions in usp10.h. -------------------------------------------------------------------------------- Revision 1.4 Marcus Meissner extern "C" wrappers for usp10.h. -------------------------------------------------------------------------------- Revision 1.3 Raphael Junqueira Add stubs around ScriptStringAnalyse to avoid PAF crash. -------------------------------------------------------------------------------- Revision 1.2 Oliver Stieber Added stubbed support for ScriptGetFontProperties. -------------------------------------------------------------------------------- Revision 1.1 Steven Edwards Add stub implementation of the Uniscribe Script Processor. svn path=/trunk/; revision=25771 --- reactos/include/psdk/usp10.h | 270 +++++++++++++++++++++++++++++++++++ 1 file changed, 270 insertions(+) create mode 100644 reactos/include/psdk/usp10.h diff --git a/reactos/include/psdk/usp10.h b/reactos/include/psdk/usp10.h new file mode 100644 index 00000000000..6dc7584d7f3 --- /dev/null +++ b/reactos/include/psdk/usp10.h @@ -0,0 +1,270 @@ +/* + * Copyright (C) 2005 Steven Edwards + * Copyright (C) 2005 Vijay Kiran Kamuju + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __USP10_H +#define __USP10_H + +#ifndef __WINESRC__ +# include +#endif +/* FIXME: #include */ + +#ifdef __cplusplus +extern "C" { +#endif + +/** ScriptStringAnalyse */ +#define SSA_PASSWORD 0x00000001 +#define SSA_TAB 0x00000002 +#define SSA_CLIP 0x00000004 +#define SSA_FIT 0x00000008 +#define SSA_DZWG 0x00000010 +#define SSA_FALLBACK 0x00000020 +#define SSA_BREAK 0x00000040 +#define SSA_GLYPHS 0x00000080 +#define SSA_RTL 0x00000100 +#define SSA_GCP 0x00000200 +#define SSA_HOTKEY 0x00000400 +#define SSA_METAFILE 0x00000800 +#define SSA_LINK 0x00001000 +#define SSA_HIDEHOTKEY 0x00002000 +#define SSA_HOTKEYONLY 0x00002400 +#define SSA_FULLMEASURE 0x04000000 +#define SSA_LPKANSIFALLBACK 0x08000000 +#define SSA_PIDX 0x10000000 +#define SSA_LAYOUTRTL 0x20000000 +#define SSA_DONTGLYPH 0x40000000 +#define SSA_NOKASHIDA 0x80000000 + +/** StringIsComplex */ +#define SIC_COMPLEX 1 +#define SIC_ASCIIDIGIT 2 +#define SIC_NEUTRAL 4 + +/** ScriptGetCMap */ +#define SGCM_RTL 0x00000001 + +/** ScriptApplyDigitSubstitution */ +#define SCRIPT_DIGITSUBSTITUTE_CONTEXT 0 +#define SCRIPT_DIGITSUBSTITUTE_NONE 1 +#define SCRIPT_DIGITSUBSTITUTE_NATIONAL 2 +#define SCRIPT_DIGITSUBSTITUTE_TRADITIONAL 3 + +#define SCRIPT_UNDEFINED 0 + +#define USP_E_SCRIPT_NOT_IN_FONT MAKE_HRESULT(SEVERITY_ERROR,FACILITY_ITF,0x200) + +typedef enum tag_SCRIPT_JUSTIFY { + SCRIPT_JUSTIFY_NONE = 0, + SCRIPT_JUSTIFY_ARABIC_BLANK = 1, + SCRIPT_JUSTIFY_CHARACTER = 2, + SCRIPT_JUSTIFY_RESERVED1 = 3, + SCRIPT_JUSTIFY_BLANK = 4, + SCRIPT_JUSTIFY_RESERVED2 = 5, + SCRIPT_JUSTIFY_RESERVED3 = 6, + SCRIPT_JUSTIFY_ARABIC_NORMAL = 7, + SCRIPT_JUSTIFY_ARABIC_KASHIDA = 8, + SCRIPT_JUSTIFY_ARABIC_ALEF = 9, + SCRIPT_JUSTIFY_ARABIC_HA = 10, + SCRIPT_JUSTIFY_ARABIC_RA = 11, + SCRIPT_JUSTIFY_ARABIC_BA = 12, + SCRIPT_JUSTIFY_ARABIC_BARA = 13, + SCRIPT_JUSTIFY_ARABIC_SEEN = 14, + SCRIPT_JUSTIFY_RESERVED4 = 15, +} SCRIPT_JUSTIFY; + +typedef struct tag_SCRIPT_CONTROL { + DWORD uDefaultLanguage :16; + DWORD fContextDigits :1; + DWORD fInvertPreBoundDir :1; + DWORD fInvertPostBoundDir :1; + DWORD fLinkStringBefore :1; + DWORD fLinkStringAfter :1; + DWORD fNeutralOverride :1; + DWORD fNumericOverride :1; + DWORD fLegacyBidiClass :1; + DWORD fReserved :8; +} SCRIPT_CONTROL; + +typedef struct { + DWORD langid :16; + DWORD fNumeric :1; + DWORD fComplex :1; + DWORD fNeedsWordBreaking :1; + DWORD fNeedsCaretInfo :1; + DWORD bCharSet :8; + DWORD fControl :1; + DWORD fPrivateUseArea :1; + DWORD fNeedsCharacterJustify :1; + DWORD fInvalidGlyph :1; + DWORD fInvalidLogAttr :1; + DWORD fCDM :1; + DWORD fAmbiguousCharSet :1; + DWORD fClusterSizeVaries :1; + DWORD fRejectInvalid :1; +} SCRIPT_PROPERTIES; + +typedef struct tag_SCRIPT_STATE { + WORD uBidiLevel :5; + WORD fOverrideDirection :1; + WORD fInhibitSymSwap :1; + WORD fCharShape :1; + WORD fDigitSubstitute :1; + WORD fInhibitLigate :1; + WORD fDisplayZWG :1; + WORD fArabicNumContext :1; + WORD fGcpClusters :1; + WORD fReserved :1; + WORD fEngineReserved :2; +} SCRIPT_STATE; + +typedef struct tag_SCRIPT_ANALYSIS { + WORD eScript :10; + WORD fRTL :1; + WORD fLayoutRTL :1; + WORD fLinkBefore :1; + WORD fLinkAfter :1; + WORD fLogicalOrder :1; + WORD fNoGlyphIndex :1; + SCRIPT_STATE s; +} SCRIPT_ANALYSIS; + +typedef struct tag_SCRIPT_ITEM { + int iCharPos; + SCRIPT_ANALYSIS a; +} SCRIPT_ITEM; + +typedef struct tag_SCRIPT_DIGITSUBSTITUTE { + DWORD NationalDigitLanguage :16; + DWORD TraditionalDigitLanguage :16; + DWORD DigitSubstitute :8; + DWORD dwReserved; +} SCRIPT_DIGITSUBSTITUTE; + +typedef struct tag_SCRIPT_FONTPROPERTIES { + int cBytes; + WORD wgBlank; + WORD wgDefault; + WORD wgInvalid; + WORD wgKashida; + int iKashidaWidth; +} SCRIPT_FONTPROPERTIES; + +typedef struct tag_SCRIPT_TABDEF { + int cTabStops; + int iScale; + int *pTabStops; + int iTabOrigin; +} SCRIPT_TABDEF; + +typedef struct tag_SCRIPT_VISATTR { + WORD uJustification :4; + WORD fClusterStart :1; + WORD fDiacritic :1; + WORD fZeroWidth :1; + WORD fReserved :1; + WORD fShapeReserved :8; +} SCRIPT_VISATTR; + +typedef struct tag_SCRIPT_LOGATTR { + BYTE fSoftBreak :1; + BYTE fWhiteSpace :1; + BYTE fCharStop :1; + BYTE fWordStop :1; + BYTE fInvalid :1; + BYTE fReserved :3; +} SCRIPT_LOGATTR; + +typedef void *SCRIPT_CACHE; +typedef void *SCRIPT_STRING_ANALYSIS; + +#ifndef LSDEFS_DEFINED +typedef struct tagGOFFSET { + LONG du; + LONG dv; +} GOFFSET; +#endif + +/* Function Declarations */ + +HRESULT WINAPI ScriptApplyDigitSubstitution(const SCRIPT_DIGITSUBSTITUTE* psds, + SCRIPT_CONTROL* psc, SCRIPT_STATE* pss); +HRESULT WINAPI ScriptApplyLogicalWidth(const int *piDx, int cChars, int cGlyphs, const WORD *pwLogClust, + const SCRIPT_VISATTR *psva, const int *piAdvance, + const SCRIPT_ANALYSIS *psa, ABC *pABC, int *piJustify); +HRESULT WINAPI ScriptRecordDigitSubstitution(LCID Locale, SCRIPT_DIGITSUBSTITUTE *psds); +HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItems, + const SCRIPT_CONTROL *psControl, const SCRIPT_STATE *psState, + SCRIPT_ITEM *pItems, int *pcItems); +HRESULT WINAPI ScriptGetCMap(HDC hdc, SCRIPT_CACHE *psc, const WCHAR *pwcInChars, int cChars, + DWORD dwFlags, WORD *pwOutGlyphs); +HRESULT WINAPI ScriptGetFontProperties(HDC hdc, SCRIPT_CACHE *psc, SCRIPT_FONTPROPERTIES *sfp); +HRESULT WINAPI ScriptGetGlyphABCWidth(HDC hdc, SCRIPT_CACHE *psc, WORD wGlyph, ABC *pABC); +HRESULT WINAPI ScriptGetLogicalWidths(const SCRIPT_ANALYSIS *psa, int cChars, int cGlyphs, + const int *piGlyphWidth, const WORD *pwLogClust, + const SCRIPT_VISATTR *psva, int *piDx); +HRESULT WINAPI ScriptGetProperties(const SCRIPT_PROPERTIES ***ppSp, int *piNumScripts); +HRESULT WINAPI ScriptStringAnalyse(HDC hdc, + const void *pString, + int cString, + int cGlyphs, + int iCharset, + DWORD dwFlags, + int iReqWidth, + SCRIPT_CONTROL *psControl, + SCRIPT_STATE *psState, + const int *piDx, + SCRIPT_TABDEF *pTabdef, + const BYTE *pbInClass, + SCRIPT_STRING_ANALYSIS *pssa); +HRESULT WINAPI ScriptStringValidate(SCRIPT_STRING_ANALYSIS ssa); +HRESULT WINAPI ScriptStringFree(SCRIPT_STRING_ANALYSIS *pssa); +HRESULT WINAPI ScriptFreeCache(SCRIPT_CACHE *psc); +HRESULT WINAPI ScriptIsComplex(const WCHAR* pwcInChars, int cInChars, DWORD dwFlags); +HRESULT WINAPI ScriptJustify(const SCRIPT_VISATTR *psva, const int *piAdvance, int cGlyphs, + int iDx, int iMinKashida, int *piJustify); +HRESULT WINAPI ScriptLayout(int cRuns, const BYTE *pbLevel, int *piVisualToLogical, int *piLogicalToVisual); +HRESULT WINAPI ScriptShape(HDC hdc, SCRIPT_CACHE *psc, const WCHAR *pwcChars, int cChars, int cMaxGlyphs, + SCRIPT_ANALYSIS *psa, WORD *pwOutGlyphs, WORD *pwLogClust, SCRIPT_VISATTR *psva, int *pcGlyphs); +HRESULT WINAPI ScriptPlace(HDC hdc, SCRIPT_CACHE *psc, const WORD *pwGlyphs, int cGlyphs, const SCRIPT_VISATTR *psva, + SCRIPT_ANALYSIS *psa, int *piAdvance, GOFFSET *pGoffset, ABC *pABC ); +HRESULT WINAPI ScriptBreak(const WCHAR *pwcChars, int cChars, const SCRIPT_ANALYSIS *psa, SCRIPT_LOGATTR *psla); +HRESULT WINAPI ScriptCacheGetHeight(HDC hdc, SCRIPT_CACHE *psc, LONG *tmHeight); +HRESULT WINAPI ScriptCPtoX(int iCP, BOOL fTrailing, int cChars, int cGlyphs, const WORD *pwLogClust, const SCRIPT_VISATTR *psva, + const int *piAdvance, const SCRIPT_ANALYSIS *psa, int *piX); +HRESULT WINAPI ScriptXtoCP(int iX, int cChars, int cGlyphs, const WORD *pwLogClust, const SCRIPT_VISATTR *psva, + const int *piAdvance, const SCRIPT_ANALYSIS *psa, int *piCP, int *piTrailing); +HRESULT WINAPI ScriptStringCPtoX(SCRIPT_STRING_ANALYSIS ssa, int icp, BOOL fTrailing, int *pX); +HRESULT WINAPI ScriptStringXtoCP(SCRIPT_STRING_ANALYSIS ssa, int iX, int *piCh , int *piTrailing); +HRESULT WINAPI ScriptStringGetLogicalWidths(SCRIPT_STRING_ANALYSIS ssa, int *piDx); +HRESULT WINAPI ScriptStringGetOrder(SCRIPT_STRING_ANALYSIS ssa, UINT *puOrder); +HRESULT WINAPI ScriptStringOut(SCRIPT_STRING_ANALYSIS ssa, int iX, int iY, UINT uOptions, const RECT *prc, + int iMinSel, int iMaxSel, BOOL fDisabled); +HRESULT WINAPI ScriptTextOut(const HDC hdc, SCRIPT_CACHE *psc, int x, int y, UINT fuOptions, const RECT *lprc, + const SCRIPT_ANALYSIS *psa, const WCHAR *pwcReserved, int iReserved, const WORD *pwGlyphs, + int cGlyphs, const int *piAdvance, const int *piJustify, const GOFFSET *pGoffset); +const int* WINAPI ScriptString_pcOutChars(SCRIPT_STRING_ANALYSIS ssa); +const SCRIPT_LOGATTR* WINAPI ScriptString_pLogAttr(SCRIPT_STRING_ANALYSIS ssa); +const SIZE* WINAPI ScriptString_pSize(SCRIPT_STRING_ANALYSIS ssa); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /* __USP10_H */