From a1cffb65cdad507939472105f14dd72f06db7894 Mon Sep 17 00:00:00 2001 From: Slava Pestov Date: Sat, 28 Feb 2009 20:33:27 -0600 Subject: [PATCH] Simplify core-text vocab a bit since we don't need the CTFont after we've created the CTLine anymore --- basis/core-text/core-text.factor | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/basis/core-text/core-text.factor b/basis/core-text/core-text.factor index bbd4ea7d5f..de3b5ac715 100644 --- a/basis/core-text/core-text.factor +++ b/basis/core-text/core-text.factor @@ -46,7 +46,7 @@ ERROR: not-a-string object ; CTLineCreateWithAttributedString ] with-destructors ; -TUPLE: line font line metrics image loc dim disposed ; +TUPLE: line line metrics image loc dim disposed ; : typographic-bounds ( line -- width ascent descent leading ) 0 0 0 @@ -86,11 +86,14 @@ TUPLE: line font line metrics image loc dim disposed ; [ f CTLineGetOffsetForStringIndex round ] bi-curry@ bi [ drop nip 0 ] [ swap - swap second ] 3bi ; +: CGRect-translate-x ( CGRect x -- CGRect' ) + [ dup CGRect-x ] dip - over set-CGRect-x ; + :: fill-selection-background ( context loc dim line string -- ) string selection? [ context string color>> >rgba-components CGContextSetRGBFillColor context dim line string selection-rect - dup CGRect-x loc first - over set-CGRect-x + loc first CGRect-translate-x CGContextFillRect ] when ; @@ -106,7 +109,7 @@ TUPLE: line font line metrics image loc dim disposed ; :: ( font string -- line ) [ - [let* | open-font [ font cache-font CFRetain |CFRelease ] + [let* | open-font [ font cache-font ] line [ string open-font font foreground>> |CFRelease ] rect [ line line-rect ] @@ -117,7 +120,7 @@ TUPLE: line font line metrics image loc dim disposed ; ext [ (loc) (dim) [ + ceiling ] 2map ] dim [ ext loc [ - >integer ] 2map ] metrics [ open-font line compute-line-metrics ] | - open-font line metrics + line metrics dim [ { [ font dim fill-background ] @@ -132,7 +135,7 @@ TUPLE: line font line metrics image loc dim disposed ; f line boa ] with-destructors ; -M: line dispose* [ font>> CFRelease ] [ line>> CFRelease ] bi ; +M: line dispose* line>> CFRelease ; SYMBOL: cached-lines