1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien.c-types alien.syntax kernel layouts ;
4 IN: core-graphics.types
6 << cell 4 = "float" "double" ? "CGFloat" typedef >>
8 : <CGFloat> ( x -- alien )
9 cell 4 = [ <float> ] [ <double> ] if ; inline
11 : *CGFloat ( alien -- x )
12 cell 4 = [ *float ] [ *double ] if ; inline
18 : <CGPoint> ( x y -- point )
20 [ set-CGPoint-y ] keep
21 [ set-CGPoint-x ] keep ;
27 : <CGSize> ( w h -- size )
30 [ set-CGSize-w ] keep ;
33 { "CGPoint" "origin" }
36 : CGRect-x ( CGRect -- x )
37 CGRect-origin CGPoint-x ; inline
38 : CGRect-y ( CGRect -- y )
39 CGRect-origin CGPoint-y ; inline
40 : CGRect-w ( CGRect -- w )
41 CGRect-size CGSize-w ; inline
42 : CGRect-h ( CGRect -- h )
43 CGRect-size CGSize-h ; inline
45 : set-CGRect-x ( x CGRect -- )
46 CGRect-origin set-CGPoint-x ; inline
47 : set-CGRect-y ( y CGRect -- )
48 CGRect-origin set-CGPoint-y ; inline
49 : set-CGRect-w ( w CGRect -- )
50 CGRect-size set-CGSize-w ; inline
51 : set-CGRect-h ( h CGRect -- )
52 CGRect-size set-CGSize-h ; inline
54 : <CGRect> ( x y w h -- rect )
59 [ set-CGRect-x ] keep ;
61 : CGRect-x-y ( alien -- origin-x origin-y )
62 [ CGRect-x ] keep CGRect-y ;
64 C-STRUCT: CGAffineTransform
72 TYPEDEF: void* CGColorRef
73 TYPEDEF: void* CGColorSpaceRef
74 TYPEDEF: void* CGContextRef
75 TYPEDEF: uint CGBitmapInfo
78 TYPEDEF: void* CGLContextObj
79 TYPEDEF: int CGLContextParameter