Uniscribe text rendering work in progress
parent
a58ce33bb3
commit
cf87e20a30
|
@ -0,0 +1 @@
|
||||||
|
Slava Pestov
|
|
@ -0,0 +1,65 @@
|
||||||
|
! Copyright (C) 2009 Slava Pestov.
|
||||||
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
|
USING: kernel math sequences io.encodings.string io.encodings.utf16n
|
||||||
|
accessors arrays destructors alien.c-types windows windows.usp10
|
||||||
|
windows.offscreen ;
|
||||||
|
IN: windows.uniscribe
|
||||||
|
|
||||||
|
TUPLE: script-string pssa size image ;
|
||||||
|
|
||||||
|
: make-script-string ( dc string -- script-string )
|
||||||
|
[ utf16n encode ] ! pString
|
||||||
|
[ length ] bi ! cString
|
||||||
|
dup 1.5 * 16 + ! cGlyphs -- MSDN says this is "recommended size"
|
||||||
|
-1 ! iCharset -- Unicode
|
||||||
|
SSA_GLYPHS ! dwFlags
|
||||||
|
... ! iReqWidth
|
||||||
|
f ! psControl
|
||||||
|
f ! psState
|
||||||
|
f ! piDx
|
||||||
|
f ! pTabdef
|
||||||
|
... ! pbInClass
|
||||||
|
f <void*> ! pssa
|
||||||
|
[ ScriptStringAnalyse ] keep
|
||||||
|
[ win32-error=0/f ] [ |ScriptStringFree ] bi* ;
|
||||||
|
|
||||||
|
: draw-script-string ( script-string -- bitmap )
|
||||||
|
! ssa
|
||||||
|
0 ! iX
|
||||||
|
0 ! iY
|
||||||
|
ETO_OPAQUE ! uOptions ... ????
|
||||||
|
f ! prc
|
||||||
|
0 ! iMinSel
|
||||||
|
0 ! iMaxSel
|
||||||
|
f ! fDisabled
|
||||||
|
ScriptStringOut ;
|
||||||
|
|
||||||
|
: <script-string> ( string -- script-string )
|
||||||
|
[
|
||||||
|
... dim ... [
|
||||||
|
make-script-string |ScriptStringFree
|
||||||
|
[ ]
|
||||||
|
[ draw-script-string ]
|
||||||
|
[
|
||||||
|
ScriptString_pSize
|
||||||
|
dup win32-error=0/f
|
||||||
|
[ SIZE-cx ] [ SIZE-cy ] bi 2array
|
||||||
|
] tri
|
||||||
|
] make-bitmap-image
|
||||||
|
script-string boa
|
||||||
|
] with-destructors ;
|
||||||
|
|
||||||
|
M: script-string dispose* pssa>> ScriptStringFree win32-error=0/f ;
|
||||||
|
|
||||||
|
: line-offset>x ( offset script-string -- x )
|
||||||
|
pssa>> ! ssa
|
||||||
|
swap ! icp
|
||||||
|
... ! fTrailing
|
||||||
|
0 <int> [ ScriptStringCPtoX win32-error=0/f ] keep *int ;
|
||||||
|
|
||||||
|
: line-x>offset ( x script-string -- offset trailing )
|
||||||
|
pssa>> ! ssa
|
||||||
|
swap ! iX
|
||||||
|
0 <int> ! pCh
|
||||||
|
0 <int> ! piTrailing
|
||||||
|
[ ScriptStringXtoCP win32-error=0/f ] 2keep [ *int ] bi@ ;
|
|
@ -1,6 +1,6 @@
|
||||||
! Copyright (C) 2009 Doug Coleman.
|
! Copyright (C) 2009 Doug Coleman.
|
||||||
! See http://factorcode.org/license.txt for BSD license.
|
! See http://factorcode.org/license.txt for BSD license.
|
||||||
USING: alien.syntax ;
|
USING: alien.syntax alien.destructors ;
|
||||||
IN: windows.usp10
|
IN: windows.usp10
|
||||||
|
|
||||||
LIBRARY: usp10
|
LIBRARY: usp10
|
||||||
|
@ -262,6 +262,8 @@ FUNCTION: HRESULT ScriptStringFree (
|
||||||
SCRIPT_STRING_ANALYSIS* pssa
|
SCRIPT_STRING_ANALYSIS* pssa
|
||||||
) ;
|
) ;
|
||||||
|
|
||||||
|
DESTRUCTOR: ScriptStringFree
|
||||||
|
|
||||||
FUNCTION: SIZE* ScriptString_pSize ( SCRIPT_STRING_ANALYSIS ssa ) ;
|
FUNCTION: SIZE* ScriptString_pSize ( SCRIPT_STRING_ANALYSIS ssa ) ;
|
||||||
|
|
||||||
FUNCTION: int* ScriptString_pcOutChars ( SCRIPT_STRING_ANALYSIS ssa ) ;
|
FUNCTION: int* ScriptString_pcOutChars ( SCRIPT_STRING_ANALYSIS ssa ) ;
|
||||||
|
|
Loading…
Reference in New Issue