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 ;
5 IN: core-graphics.types
7 << cell 4 = "float" "double" ? "CGFloat" typedef >>
9 : <CGFloat> ( x -- alien )
10 cell 4 = [ <float> ] [ <double> ] if ; inline
12 : *CGFloat ( alien -- x )
13 cell 4 = [ *float ] [ *double ] if ; inline
19 : <CGPoint> ( x y -- point )
20 CGPoint <struct-boa> ;
26 : <CGSize> ( w h -- size )
33 : CGPoint>loc ( CGPoint -- loc )
34 [ x>> ] [ y>> ] bi 2array ;
36 : CGSize>dim ( CGSize -- dim )
37 [ w>> ] [ h>> ] bi 2array ;
39 : CGRect>rect ( CGRect -- rect )
40 [ origin>> CGPoint>loc ]
44 : CGRect-x ( CGRect -- x )
46 : CGRect-y ( CGRect -- y )
48 : CGRect-w ( CGRect -- w )
50 : CGRect-h ( CGRect -- h )
53 : set-CGRect-x ( x CGRect -- )
54 origin>> (>>x) ; inline
55 : set-CGRect-y ( y CGRect -- )
56 origin>> (>>y) ; inline
57 : set-CGRect-w ( w CGRect -- )
59 : set-CGRect-h ( h CGRect -- )
62 : <CGRect> ( x y w h -- rect )
63 [ CGPoint <struct-boa> ] [ CGSize <struct-boa> ] 2bi*
66 : CGRect-x-y ( alien -- origin-x origin-y )
67 [ CGRect-x ] [ CGRect-y ] bi ;
69 : CGRect-top-left ( alien -- x y )
70 [ CGRect-x ] [ [ CGRect-y ] [ CGRect-h ] bi + ] bi ;
72 STRUCT: CGAffineTransform
80 TYPEDEF: void* CGColorRef
81 TYPEDEF: void* CGColorSpaceRef
82 TYPEDEF: void* CGContextRef
83 TYPEDEF: uint CGBitmapInfo
87 TYPEDEF: uint CGDirectDisplayID
88 TYPEDEF: int boolean_t
89 TYPEDEF: void* CGLContextObj
90 TYPEDEF: int CGLContextParameter