|
|
|
@ -0,0 +1,337 @@
|
|
|
|
|
! Copyright (C) 2009 Doug Coleman.
|
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
|
|
|
USING: alien.syntax ;
|
|
|
|
|
IN: windows.usp10
|
|
|
|
|
|
|
|
|
|
LIBRARY: usp10
|
|
|
|
|
|
|
|
|
|
C-STRUCT: SCRIPT_CONTROL
|
|
|
|
|
{ "DWORD" "flags" } ;
|
|
|
|
|
|
|
|
|
|
C-STRUCT: SCRIPT_STATE
|
|
|
|
|
{ "WORD" "flags" } ;
|
|
|
|
|
|
|
|
|
|
C-STRUCT: SCRIPT_ANALYSIS
|
|
|
|
|
{ "WORD" "flags" }
|
|
|
|
|
{ "SCRIPT_STATE" "s" } ;
|
|
|
|
|
|
|
|
|
|
C-STRUCT: SCRIPT_ITEM
|
|
|
|
|
{ "int" "iCharPos" }
|
|
|
|
|
{ "SCRIPT_ANALYSIS" "a" } ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptItemize (
|
|
|
|
|
WCHAR* pwcInChars,
|
|
|
|
|
int cInChars,
|
|
|
|
|
int cMaxItems,
|
|
|
|
|
SCRIPT_CONTROL* psControl,
|
|
|
|
|
SCRIPT_STATE* psState,
|
|
|
|
|
SCRIPT_ITEM* pItems,
|
|
|
|
|
int* pcItems
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptLayout (
|
|
|
|
|
int cRuns,
|
|
|
|
|
BYTE* pbLevel,
|
|
|
|
|
int* piVisualToLogical,
|
|
|
|
|
int* piLogicalToVisual
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
C-ENUM: SCRIPT_JUSTIFY_NONE
|
|
|
|
|
SCRIPT_JUSTIFY_ARABIC_BLANK
|
|
|
|
|
SCRIPT_JUSTIFY_CHARACTER
|
|
|
|
|
SCRIPT_JUSTIFY_RESERVED1
|
|
|
|
|
SCRIPT_JUSTIFY_BLANK
|
|
|
|
|
SCRIPT_JUSTIFY_RESERVED2
|
|
|
|
|
SCRIPT_JUSTIFY_RESERVED3
|
|
|
|
|
SCRIPT_JUSTIFY_ARABIC_NORMAL
|
|
|
|
|
SCRIPT_JUSTIFY_ARABIC_KASHIDA
|
|
|
|
|
SCRIPT_JUSTIFY_ALEF
|
|
|
|
|
SCRIPT_JUSTIFY_HA
|
|
|
|
|
SCRIPT_JUSTIFY_RA
|
|
|
|
|
SCRIPT_JUSTIFY_BA
|
|
|
|
|
SCRIPT_JUSTIFY_BARA
|
|
|
|
|
SCRIPT_JUSTIFY_SEEN
|
|
|
|
|
SCRIPT_JUSTIFFY_RESERVED4 ;
|
|
|
|
|
|
|
|
|
|
C-STRUCT: SCRIPT_VISATTR
|
|
|
|
|
{ "WORD" "flags" } ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptShape (
|
|
|
|
|
HDC hdc,
|
|
|
|
|
SCRIPT_CACHE* psc,
|
|
|
|
|
WCHAR* pwcChars,
|
|
|
|
|
int cChars,
|
|
|
|
|
int cMaxGlyphs,
|
|
|
|
|
SCRIPT_ANALYSIS* psa,
|
|
|
|
|
WORD* pwOutGlyphs,
|
|
|
|
|
WORD* pwLogClust,
|
|
|
|
|
SCRIPT_VISATTR* psva,
|
|
|
|
|
int* pcGlyphs
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
C-STRUCT: GOFFSET
|
|
|
|
|
{ "LONG" "du" }
|
|
|
|
|
{ "LONG" "dv" } ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptPlace (
|
|
|
|
|
HDC hdc,
|
|
|
|
|
SCRIPT_CACHE* psc,
|
|
|
|
|
WORD* pwGlyphs,
|
|
|
|
|
int cGlyphs,
|
|
|
|
|
SCRIPT_VISATTR* psva,
|
|
|
|
|
SCRIPT_ANALYSIS* psa,
|
|
|
|
|
int* piAdvance,
|
|
|
|
|
GOFFSET* pGoffset,
|
|
|
|
|
ABC* pABC
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptTextOut (
|
|
|
|
|
HDC hdc,
|
|
|
|
|
SCRIPT_CACHE* psc,
|
|
|
|
|
int x,
|
|
|
|
|
int y,
|
|
|
|
|
UINT fuOptions,
|
|
|
|
|
RECT* lprc,
|
|
|
|
|
SCRIPT_ANALYSIS* psa,
|
|
|
|
|
WCHAR* pwcReserved,
|
|
|
|
|
int iReserved,
|
|
|
|
|
WORD* pwGlyphs,
|
|
|
|
|
int cGlyphs,
|
|
|
|
|
int* piAdvance,
|
|
|
|
|
int* piJustify,
|
|
|
|
|
GOFFSET* pGoffset
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptJustify (
|
|
|
|
|
SCRIPT_VISATTR* psva,
|
|
|
|
|
int* piAdvance,
|
|
|
|
|
int cGlyphs,
|
|
|
|
|
int iDx,
|
|
|
|
|
int iMinKashida,
|
|
|
|
|
int* piJustify
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
C-STRUCT: SCRIPT_LOGATTR
|
|
|
|
|
{ "BYTE" "flags" } ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptBreak (
|
|
|
|
|
WCHAR* pwcChars,
|
|
|
|
|
int cChars,
|
|
|
|
|
SCRIPT_ANALYSIS* psa,
|
|
|
|
|
SCRIPT_LOGATTR* psla
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptCPtoX (
|
|
|
|
|
int iCP,
|
|
|
|
|
BOOL fTrailing,
|
|
|
|
|
int cChars,
|
|
|
|
|
int cGlyphs,
|
|
|
|
|
WORD* pwLogClust,
|
|
|
|
|
SCRIPT_VISATTR* psva,
|
|
|
|
|
int* piAdvance,
|
|
|
|
|
SCRIPT_ANALYSIS* psa,
|
|
|
|
|
int* piX
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptXtoCP (
|
|
|
|
|
int iCP,
|
|
|
|
|
BOOL fTrailing,
|
|
|
|
|
int cChars,
|
|
|
|
|
int cGlyphs,
|
|
|
|
|
WORD* pwLogClust,
|
|
|
|
|
SCRIPT_VISATTR* psva,
|
|
|
|
|
int* piAdvance,
|
|
|
|
|
SCRIPT_ANALYSIS* psa,
|
|
|
|
|
int* piCP,
|
|
|
|
|
int* piTrailing
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptGetLogicalWidths (
|
|
|
|
|
SCRIPT_ANALYSIS* psa,
|
|
|
|
|
int cChars,
|
|
|
|
|
int cGlyphs,
|
|
|
|
|
int* piGlyphWidth,
|
|
|
|
|
WORD* pwLogClust,
|
|
|
|
|
SCRIPT_VISATTR* psva,
|
|
|
|
|
int* piDx
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptApplyLogicalWidth (
|
|
|
|
|
int* piDx,
|
|
|
|
|
int cChars,
|
|
|
|
|
int cGlyphs,
|
|
|
|
|
WORD* pwLogClust,
|
|
|
|
|
SCRIPT_VISATTR* psva,
|
|
|
|
|
int* piAdvance,
|
|
|
|
|
SCRIPT_ANALYSIS* psa,
|
|
|
|
|
ABC* pABC,
|
|
|
|
|
int* piJustify
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptGetCMap (
|
|
|
|
|
HDC hdc,
|
|
|
|
|
SCRIPT_CACHE* psc,
|
|
|
|
|
WCHAR* pwcInChars,
|
|
|
|
|
int cChars,
|
|
|
|
|
DWORD dwFlags,
|
|
|
|
|
WORD* pwOutGlyphs
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptGetGlyphABCWidth (
|
|
|
|
|
HDC hdc,
|
|
|
|
|
SCRIPT_CACHE* psc,
|
|
|
|
|
WORD wGlyph,
|
|
|
|
|
ABC* pABC
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
C-STRUCT: SCRIPT_PROPERTIES
|
|
|
|
|
{ "DWORD" "flags" } ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptGetProperties (
|
|
|
|
|
SCRIPT_PROPERTIES*** ppSp,
|
|
|
|
|
int* piNumScripts
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
C-STRUCT: SCRIPT_FONTPROPERTIES
|
|
|
|
|
{ "int" "cBytes" }
|
|
|
|
|
{ "WORD" "wgBlank" }
|
|
|
|
|
{ "WORD" "wgDefault" }
|
|
|
|
|
{ "WORD" "wgInvalid" }
|
|
|
|
|
{ "WORD" "wgKashida" }
|
|
|
|
|
{ "int" "iKashidaWidth" } ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptGetFontProperties (
|
|
|
|
|
HDC hdc,
|
|
|
|
|
SCRIPT_CACHE* psc,
|
|
|
|
|
SCRIPT_FONTPROPERTIES* sfp
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptCacheGetHeight (
|
|
|
|
|
HDC hdc,
|
|
|
|
|
SCRIPT_CACHE* psc,
|
|
|
|
|
long* tmHeight
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
CONSTANT: SSA_PASSWORD HEX: 00000001
|
|
|
|
|
CONSTANT: SSA_TAB HEX: 00000002
|
|
|
|
|
CONSTANT: SSA_CLIP HEX: 00000004
|
|
|
|
|
CONSTANT: SSA_FIT HEX: 00000008
|
|
|
|
|
CONSTANT: SSA_DZWG HEX: 00000010
|
|
|
|
|
CONSTANT: SSA_FALLBACK HEX: 00000020
|
|
|
|
|
CONSTANT: SSA_BREAK HEX: 00000040
|
|
|
|
|
CONSTANT: SSA_GLYPHS HEX: 00000080
|
|
|
|
|
CONSTANT: SSA_RTL HEX: 00000100
|
|
|
|
|
CONSTANT: SSA_GCP HEX: 00000200
|
|
|
|
|
CONSTANT: SSA_HOTKEY HEX: 00000400
|
|
|
|
|
CONSTANT: SSA_METAFILE HEX: 00000800
|
|
|
|
|
CONSTANT: SSA_LINK HEX: 00001000
|
|
|
|
|
CONSTANT: SSA_HIDEHOTKEY HEX: 00002000
|
|
|
|
|
CONSTANT: SSA_HOTKEYONLY HEX: 00002400
|
|
|
|
|
CONSTANT: SSA_FULLMEASURE HEX: 04000000
|
|
|
|
|
CONSTANT: SSA_LPKANSIFALLBACK HEX: 08000000
|
|
|
|
|
CONSTANT: SSA_PIDX HEX: 10000000
|
|
|
|
|
CONSTANT: SSA_LAYOUTRTL HEX: 20000000
|
|
|
|
|
CONSTANT: SSA_DONTGLYPH HEX: 40000000
|
|
|
|
|
CONSTANT: SSA_NOKASHIDA HEX: 80000000
|
|
|
|
|
|
|
|
|
|
C-STRUCT: SCRIPT_TABDEF
|
|
|
|
|
{ "int" "cTabStops" }
|
|
|
|
|
{ "int" "iScale" }
|
|
|
|
|
{ "int*" "pTabStops" }
|
|
|
|
|
{ "int" "iTabOrigin" } ;
|
|
|
|
|
|
|
|
|
|
TYPEDEF: void* SCRIPT_STRING_ANALYSIS
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptStringAnalyse (
|
|
|
|
|
HDC hdc,
|
|
|
|
|
void* pString,
|
|
|
|
|
int cString,
|
|
|
|
|
int cGlyphs,
|
|
|
|
|
int iCharset,
|
|
|
|
|
DWORD dwFlags,
|
|
|
|
|
int iReqWidth,
|
|
|
|
|
SCRIPT_CONTROL* psControl,
|
|
|
|
|
SCRIPT_STATE* psState,
|
|
|
|
|
int* piDx,
|
|
|
|
|
SCRIPT_TABDEF* pTabDef,
|
|
|
|
|
BYTE* pbInClass,
|
|
|
|
|
SCRIPT_STRING_ANALYSIS* pssa
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptStringFree (
|
|
|
|
|
SCRIPT_STRING_ANALYSIS* pssa
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: SIZE* ScriptString_pSize ( SCRIPT_STRING_ANALYSIS ssa ) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: int* ScriptString_pcOutChars ( SCRIPT_STRING_ANALYSIS ssa ) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: SCRIPT_LOGATTR* ScriptString_pLogAttr ( SCRIPT_STRING_ANALYSIS ssa ) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptStringGetOrder (
|
|
|
|
|
SCRIPT_STRING_ANALYSIS ssa,
|
|
|
|
|
UINT* puOrder
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptStringCPtoX (
|
|
|
|
|
SCRIPT_STRING_ANALYSIS ssa,
|
|
|
|
|
int icp,
|
|
|
|
|
BOOL fTrailing,
|
|
|
|
|
int* pX
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptStringXtoCP (
|
|
|
|
|
SCRIPT_STRING_ANALYSIS ssa,
|
|
|
|
|
int iX,
|
|
|
|
|
int* piCh,
|
|
|
|
|
int* piTrailing
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptStringGetLogicalWidths (
|
|
|
|
|
SCRIPT_STRING_ANALYSIS ssa,
|
|
|
|
|
int* piDx
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptStringValidate (
|
|
|
|
|
SCRIPT_STRING_ANALYSIS ssa
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptStringOut (
|
|
|
|
|
SCRIPT_STRING_ANALYSIS ssa,
|
|
|
|
|
int iX,
|
|
|
|
|
int iY,
|
|
|
|
|
UINT uOptions,
|
|
|
|
|
RECT* prc,
|
|
|
|
|
int iMinSel,
|
|
|
|
|
int iMaxSel,
|
|
|
|
|
BOOL fDisabled
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
CONSTANT: SIC_COMPLEX 1
|
|
|
|
|
CONSTANT: SIC_ASCIIDIGIT 2
|
|
|
|
|
CONSTANT: SIC_NEUTRAL 4
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptIsComplex (
|
|
|
|
|
WCHAR* pwcInChars,
|
|
|
|
|
int cInChars,
|
|
|
|
|
DWORD dwFlags
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
C-STRUCT: SCRIPT_DIGITSUBSTITUTE
|
|
|
|
|
{ "DWORD" "flags" } ;
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptRecordDigitSubstitution (
|
|
|
|
|
LCID Locale,
|
|
|
|
|
SCRIPT_DIGITSUBSTITUTE* psds
|
|
|
|
|
) ;
|
|
|
|
|
|
|
|
|
|
CONSTANT: SCRIPT_DIGITSUBSTITUTE_CONTEXT 0
|
|
|
|
|
CONSTANT: SCRIPT_DIGITSUBSTITUTE_NONE 1
|
|
|
|
|
CONSTANT: SCRIPT_DIGITSUBSTITUTE_NATIONAL 2
|
|
|
|
|
CONSTANT: SCRIPT_DIGITSUBSTITUTE_TRADITIONAL 3
|
|
|
|
|
|
|
|
|
|
FUNCTION: HRESULT ScriptApplyDigitSubstitution (
|
|
|
|
|
SCRIPT_DIGITSUBSTITUTE* psds,
|
|
|
|
|
SCRIPT_CONTROL* psc,
|
|
|
|
|
SCRIPT_STATE* pss
|
|
|
|
|
) ;
|