]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/ui/text/pango/pango.factor
factor: trim using lists
[factor.git] / basis / ui / text / pango / pango.factor
index 8499acf15e6297e0c16baff8d0421827f980e0d0..38f285e80df4a091b964c94ee99eee4eead1c48f 100644 (file)
@@ -2,7 +2,7 @@
 ! See http://factorcode.org/license.txt for BSD license.
 USING: accessors alien.c-types alien.data alien.strings arrays assocs
 cache cairo cairo.ffi classes.struct combinators destructors fonts fry
-gobject.ffi init io.encodings.utf8 kernel locals math math.rectangles
+gobject.ffi init io.encodings.utf8 kernel math math.rectangles
 math.vectors memoize namespaces pango.cairo.ffi pango.ffi sequences
 ui.text ui.text.private ;
 IN: ui.text.pango
@@ -43,8 +43,8 @@ SYMBOL: dpi
     <rect> ;
 
 : layout-extents ( layout -- ink-rect logical-rect )
-    PangoRectangle <struct>
-    PangoRectangle <struct>
+    PangoRectangle new
+    PangoRectangle new
     [ pango_layout_get_extents ] 2keep
     [ PangoRectangle>rect ] bi@ ;
 
@@ -67,13 +67,13 @@ SYMBOL: dpi
     layout>> 0 pango_layout_get_line_readonly ;
 
 : line-offset>x ( layout n -- x )
-    #! n is an index into the UTF8 encoding of the text
+    ! n is an index into the UTF8 encoding of the text
     [ drop first-line ] [ swap string>> >utf8-index ] 2bi
     f { int } [ pango_layout_line_index_to_x ] with-out-parameters
     pango>float ;
 
 : x>line-offset ( layout x -- n )
-    #! n is an index into the UTF8 encoding of the text
+    ! n is an index into the UTF8 encoding of the text
     [
         [ first-line ] dip
         float>pango
@@ -118,8 +118,8 @@ SYMBOL: dpi
     ] make-bitmap-image ;
 
 : escape-nulls ( str -- str' )
-    #! Replace nulls with something else since Pango uses null-terminated
-    #! strings
+    ! Replace nulls with something else since Pango uses null-terminated
+    ! strings
     H{ { 0 CHAR: zero-width-no-break-space } } substitute ;
 
 : unpack-selection ( layout string/selection -- layout )
@@ -128,7 +128,7 @@ SYMBOL: dpi
     ] [ escape-nulls >>string ] if ; inline
 
 : set-layout-resolution ( layout -- )
-    pango_layout_get_context dpi get pango_cairo_context_set_resolution ;
+    pango_layout_get_context dpi get-global pango_cairo_context_set_resolution ;
 
 : <PangoLayout> ( text font -- layout )
     dummy-cairo pango_cairo_create_layout |g_object_unref
@@ -140,8 +140,8 @@ SYMBOL: dpi
     swap <PangoLayout> &g_object_unref layout-extents drop dim>> second ;
 
 MEMO: missing-font-metrics ( font -- metrics )
-    #! Pango doesn't provide x-height and cap-height but Core Text does, so we
-    #! simulate them on Pango.
+    ! Pango doesn't provide x-height and cap-height but Core Text does, so we
+    ! simulate them on Pango.
     [
         [ metrics new ] dip
         [ "x" glyph-height >>x-height ]
@@ -170,7 +170,7 @@ M: layout dispose* layout>> g_object_unref ;
 SYMBOL: cached-layouts
 
 : cached-layout ( font string -- layout )
-    cached-layouts get [ <layout> ] 2cache ;
+    cached-layouts get-global [ <layout> ] 2cache ;
 
 : cached-line ( font string -- line )
     cached-layout layout>> first-line ;
@@ -182,24 +182,24 @@ SINGLETON: pango-renderer
 
 M: pango-renderer string-dim
     [ " " string-dim { 0 1 } v* ]
-    [ cached-layout logical-rect>> dim>> [ >integer ] map ] if-empty ;
+    [ cached-layout logical-rect>> dim>> v>integer ] if-empty ;
 
 M: pango-renderer flush-layout-cache
-    cached-layouts get purge-cache ;
+    cached-layouts get-global purge-cache ;
 
-M: pango-renderer string>image ( font string -- image loc )
+M: pango-renderer string>image
     cached-layout [ layout>image ] [ text-position vneg ] bi ;
 
-M: pango-renderer x>offset ( x font string -- n )
+M: pango-renderer x>offset
     cached-layout swap x>line-offset ;
 
-M: pango-renderer offset>x ( n font string -- x )
+M: pango-renderer offset>x
     cached-layout swap line-offset>x ;
 
-M: pango-renderer font-metrics ( font -- metrics )
+M: pango-renderer font-metrics
     " " cached-layout metrics>> clone f >>width ;
 
-M: pango-renderer line-metrics ( font string -- metrics )
+M: pango-renderer line-metrics
     [ " " line-metrics clone 0 >>width ]
     [ cached-layout metrics>> ]
     if-empty ;
@@ -210,4 +210,3 @@ M: pango-renderer line-metrics ( font string -- metrics )
 ] "ui.text.pango" add-startup-hook
 
 pango-renderer font-renderer set-global
-