1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors alien.c-types assocs cache kernel math math.vectors
4 namespaces opengl.textures pango.cairo pango.layouts ui.gadgets.worlds
5 ui.text ui.text.private pango ;
8 SINGLETON: pango-renderer
10 M: pango-renderer init-text-rendering
11 <cache-assoc> >>text-handle drop ;
13 M: pango-renderer string-dim cached-layout logical-rect>> dim>> ;
15 M: pango-renderer finish-text-rendering
16 text-handle>> purge-cache
17 cached-layouts get purge-cache ;
19 : rendered-layout ( font string -- texture )
20 world get text-handle>>
21 [ cached-layout [ image>> ] [ text-position vneg ] bi <texture> ]
24 M: pango-renderer draw-string ( font string -- )
25 rendered-layout draw-texture ;
27 M: pango-renderer x>offset ( x font string -- n )
28 cached-line swap x>line-offset ;
30 M: pango-renderer offset>x ( n font string -- x )
31 cached-line swap line-offset>x ;
33 M: pango-renderer font-metrics ( font -- metrics )
34 "" cached-layout metrics>> clone f >>width ;
36 M: pango-renderer line-metrics ( font string -- metrics )
37 cached-layout metrics>> ;
39 pango-renderer font-renderer set-global