add a binding to part or all of uniscribe

db4
Doug Coleman 2009-03-12 21:52:45 -05:00
parent 3bfce6e95c
commit 39ce205f75
3 changed files with 339 additions and 0 deletions

View File

@ -12,4 +12,5 @@ USING: alien sequences ;
{ "gl" "opengl32.dll" "stdcall" }
{ "glu" "glu32.dll" "stdcall" }
{ "ole32" "ole32.dll" "stdcall" }
{ "usp10" "usp10.dll" "stdcall" }
} [ first3 add-library ] each

View File

@ -0,0 +1 @@
Doug Coleman

337
basis/windows/usp10/usp10.factor Executable file
View File

@ -0,0 +1,337 @@
! Copyright (C) 2009 Doug Coleman.
! See http:
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
) ;