344 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			344 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Factor
		
	
	
! Copyright (C) 2009 Doug Coleman.
 | 
						|
! See http://factorcode.org/license.txt for BSD license.
 | 
						|
USING: alien.c-types alien.syntax alien.destructors classes.struct
 | 
						|
windows.types ;
 | 
						|
IN: windows.usp10
 | 
						|
 | 
						|
LIBRARY: usp10
 | 
						|
 | 
						|
STRUCT: SCRIPT_CONTROL
 | 
						|
    { flags DWORD } ;
 | 
						|
 | 
						|
STRUCT: SCRIPT_STATE
 | 
						|
    { flags WORD } ;
 | 
						|
 | 
						|
STRUCT: SCRIPT_ANALYSIS
 | 
						|
    { flags WORD }
 | 
						|
    { s SCRIPT_STATE } ;
 | 
						|
 | 
						|
STRUCT: SCRIPT_ITEM
 | 
						|
    { iCharPos int }
 | 
						|
    { a SCRIPT_ANALYSIS } ;
 | 
						|
 | 
						|
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
 | 
						|
)
 | 
						|
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_NONE 0
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_ARABIC_BLANK 1
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_CHARACTER 2
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_RESERVED1 3
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_BLANK 4
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_RESERVED2 5
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_RESERVED3 6
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_ARABIC_NORMAL 7
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_ARABIC_KASHIDA 8
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_ALEF 9
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_HA 10
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_RA 11
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_BA 12
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_BARA 13
 | 
						|
CONSTANT: SCRIPT_JUSTIFY_SEEN 14
 | 
						|
CONSTANT: SCRIPT_JUSTIFFY_RESERVED4 15
 | 
						|
 | 
						|
STRUCT: SCRIPT_VISATTR
 | 
						|
    { flags WORD } ;
 | 
						|
 | 
						|
C-TYPE: SCRIPT_CACHE
 | 
						|
C-TYPE: ABC
 | 
						|
 | 
						|
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
 | 
						|
)
 | 
						|
 | 
						|
STRUCT: GOFFSET
 | 
						|
    { du LONG }
 | 
						|
    { dv LONG } ;
 | 
						|
 | 
						|
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
 | 
						|
)
 | 
						|
 | 
						|
STRUCT: SCRIPT_LOGATTR
 | 
						|
    { flags BYTE } ;
 | 
						|
 | 
						|
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
 | 
						|
)
 | 
						|
 | 
						|
STRUCT: SCRIPT_PROPERTIES
 | 
						|
    { flags DWORD } ;
 | 
						|
 | 
						|
FUNCTION: HRESULT ScriptGetProperties (
 | 
						|
    SCRIPT_PROPERTIES*** ppSp,
 | 
						|
    int* piNumScripts
 | 
						|
)
 | 
						|
 | 
						|
STRUCT: SCRIPT_FONTPROPERTIES
 | 
						|
    { cBytes int }
 | 
						|
    { wgBlank WORD }
 | 
						|
    { wgDefault WORD }
 | 
						|
    { wgInvalid WORD }
 | 
						|
    { wgKashida WORD }
 | 
						|
    { iKashidaWidth int } ;
 | 
						|
 | 
						|
FUNCTION: HRESULT ScriptGetFontProperties (
 | 
						|
    HDC hdc,
 | 
						|
    SCRIPT_CACHE* psc,
 | 
						|
    SCRIPT_FONTPROPERTIES* sfp
 | 
						|
)
 | 
						|
 | 
						|
FUNCTION: HRESULT ScriptCacheGetHeight (
 | 
						|
    HDC hdc,
 | 
						|
    SCRIPT_CACHE* psc,
 | 
						|
    long* tmHeight
 | 
						|
)
 | 
						|
 | 
						|
CONSTANT: SSA_PASSWORD 0x00000001
 | 
						|
CONSTANT: SSA_TAB 0x00000002
 | 
						|
CONSTANT: SSA_CLIP 0x00000004
 | 
						|
CONSTANT: SSA_FIT 0x00000008
 | 
						|
CONSTANT: SSA_DZWG 0x00000010
 | 
						|
CONSTANT: SSA_FALLBACK 0x00000020
 | 
						|
CONSTANT: SSA_BREAK 0x00000040
 | 
						|
CONSTANT: SSA_GLYPHS 0x00000080
 | 
						|
CONSTANT: SSA_RTL 0x00000100
 | 
						|
CONSTANT: SSA_GCP 0x00000200
 | 
						|
CONSTANT: SSA_HOTKEY 0x00000400
 | 
						|
CONSTANT: SSA_METAFILE 0x00000800
 | 
						|
CONSTANT: SSA_LINK 0x00001000
 | 
						|
CONSTANT: SSA_HIDEHOTKEY 0x00002000
 | 
						|
CONSTANT: SSA_HOTKEYONLY 0x00002400
 | 
						|
CONSTANT: SSA_FULLMEASURE 0x04000000
 | 
						|
CONSTANT: SSA_LPKANSIFALLBACK 0x08000000
 | 
						|
CONSTANT: SSA_PIDX 0x10000000
 | 
						|
CONSTANT: SSA_LAYOUTRTL 0x20000000
 | 
						|
CONSTANT: SSA_DONTGLYPH 0x40000000
 | 
						|
CONSTANT: SSA_NOKASHIDA 0x80000000
 | 
						|
 | 
						|
STRUCT: SCRIPT_TABDEF
 | 
						|
    { cTabStops int }
 | 
						|
    { iScale int }
 | 
						|
    { pTabStops int* }
 | 
						|
    { iTabOrigin int } ;
 | 
						|
 | 
						|
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
 | 
						|
)
 | 
						|
 | 
						|
DESTRUCTOR: ScriptStringFree
 | 
						|
 | 
						|
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
 | 
						|
)
 | 
						|
 | 
						|
STRUCT: SCRIPT_DIGITSUBSTITUTE
 | 
						|
    { flags DWORD } ;
 | 
						|
 | 
						|
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
 | 
						|
)
 |