1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors alien.c-types alien.syntax classes.struct kernel layouts
4 math math.rectangles arrays literals ;
5 FROM: alien.c-types => float ;
6 IN: core-graphics.types
9 << cell 4 = float double ? \ CGFloat typedef >>
15 : <CGPoint> ( x y -- point )
16 CGPoint <struct-boa> ;
22 : <CGSize> ( w h -- size )
29 : CGPoint>loc ( CGPoint -- loc )
30 [ x>> ] [ y>> ] bi 2array ;
32 : CGSize>dim ( CGSize -- dim )
33 [ w>> ] [ h>> ] bi 2array ;
35 : CGRect>rect ( CGRect -- rect )
36 [ origin>> CGPoint>loc ]
40 : CGRect-x ( CGRect -- x )
42 : CGRect-y ( CGRect -- y )
44 : CGRect-w ( CGRect -- w )
46 : CGRect-h ( CGRect -- h )
49 : set-CGRect-x ( x CGRect -- )
51 : set-CGRect-y ( y CGRect -- )
53 : set-CGRect-w ( w CGRect -- )
55 : set-CGRect-h ( h CGRect -- )
58 : <CGRect> ( x y w h -- rect )
59 [ CGPoint <struct-boa> ] [ CGSize <struct-boa> ] 2bi*
62 : CGRect-x-y ( alien -- origin-x origin-y )
63 [ CGRect-x ] [ CGRect-y ] bi ;
65 : CGRect-top-left ( alien -- x y )
66 [ CGRect-x ] [ [ CGRect-y ] [ CGRect-h ] bi + ] bi ;
68 STRUCT: CGAffineTransform
76 TYPEDEF: void* CGColorRef
77 TYPEDEF: void* CGColorSpaceRef
78 TYPEDEF: void* CGContextRef
79 TYPEDEF: uint CGBitmapInfo
83 TYPEDEF: uint CGDirectDisplayID
84 TYPEDEF: int boolean_t
85 TYPEDEF: void* CGLContextObj
86 TYPEDEF: int CGLContextParameter