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 >>
11 : <CGFloat> ( x -- alien )
12 cell 4 = [ <float> ] [ <double> ] if ; inline
14 : *CGFloat ( alien -- x )
15 cell 4 = [ *float ] [ *double ] if ; inline
21 : <CGPoint> ( x y -- point )
22 CGPoint <struct-boa> ;
28 : <CGSize> ( w h -- size )
35 : CGPoint>loc ( CGPoint -- loc )
36 [ x>> ] [ y>> ] bi 2array ;
38 : CGSize>dim ( CGSize -- dim )
39 [ w>> ] [ h>> ] bi 2array ;
41 : CGRect>rect ( CGRect -- rect )
42 [ origin>> CGPoint>loc ]
46 : CGRect-x ( CGRect -- x )
48 : CGRect-y ( CGRect -- y )
50 : CGRect-w ( CGRect -- w )
52 : CGRect-h ( CGRect -- h )
55 : set-CGRect-x ( x CGRect -- )
57 : set-CGRect-y ( y CGRect -- )
59 : set-CGRect-w ( w CGRect -- )
61 : set-CGRect-h ( h CGRect -- )
64 : <CGRect> ( x y w h -- rect )
65 [ CGPoint <struct-boa> ] [ CGSize <struct-boa> ] 2bi*
68 : CGRect-x-y ( alien -- origin-x origin-y )
69 [ CGRect-x ] [ CGRect-y ] bi ;
71 : CGRect-top-left ( alien -- x y )
72 [ CGRect-x ] [ [ CGRect-y ] [ CGRect-h ] bi + ] bi ;
74 STRUCT: CGAffineTransform
82 TYPEDEF: void* CGColorRef
83 TYPEDEF: void* CGColorSpaceRef
84 TYPEDEF: void* CGContextRef
85 TYPEDEF: uint CGBitmapInfo
89 TYPEDEF: uint CGDirectDisplayID
90 TYPEDEF: int boolean_t
91 TYPEDEF: void* CGLContextObj
92 TYPEDEF: int CGLContextParameter