31 lines
		
	
	
		
			881 B
		
	
	
	
		
			Factor
		
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			881 B
		
	
	
	
		
			Factor
		
	
	
USING: alien alien.c-types 
 | 
						|
math
 | 
						|
destructors accessors namespaces
 | 
						|
pango kernel ;
 | 
						|
IN: pango.layouts
 | 
						|
 | 
						|
: pango-layout-get-pixel-size ( layout -- width height )
 | 
						|
    0 <int> 0 <int> [ pango_layout_get_pixel_size ] 2keep
 | 
						|
    [ *int ] bi@ ;
 | 
						|
 | 
						|
TUPLE: pango-layout alien ;
 | 
						|
C: <pango-layout> pango-layout
 | 
						|
M: pango-layout dispose ( alien -- ) alien>> g_object_unref ;
 | 
						|
 | 
						|
: layout ( -- pango-layout ) pango-layout get ;
 | 
						|
 | 
						|
: (with-layout) ( pango-layout quot -- )
 | 
						|
    >r alien>> pango-layout r> with-variable ; inline
 | 
						|
 | 
						|
: with-layout ( layout quot -- )
 | 
						|
    >r <pango-layout> r> [ (with-layout) ] curry with-disposal ; inline
 | 
						|
 | 
						|
: layout-font ( str -- )
 | 
						|
    pango_font_description_from_string
 | 
						|
    dup zero? [ "pango: not a valid font." throw ] when
 | 
						|
    layout over pango_layout_set_font_description
 | 
						|
    pango_font_description_free ;
 | 
						|
 | 
						|
: layout-text ( str -- )
 | 
						|
    layout swap -1 pango_layout_set_text ;
 |