]> gitweb.factorcode.org Git - factor.git/blob - basis/core-graphics/types/types.factor
Merge branch 'master' into new_ui
[factor.git] / basis / core-graphics / types / types.factor
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 math ;
4 IN: core-graphics.types
5
6 << cell 4 = "float" "double" ? "CGFloat" typedef >>
7
8 : <CGFloat> ( x -- alien )
9     cell 4 = [ <float> ] [ <double> ] if ; inline
10
11 : *CGFloat ( alien -- x )
12     cell 4 = [ *float ] [ *double ] if ; inline
13
14 C-STRUCT: CGPoint
15     { "CGFloat" "x" }
16     { "CGFloat" "y" } ;
17
18 : <CGPoint> ( x y -- point )
19     "CGPoint" <c-object>
20     [ set-CGPoint-y ] keep
21     [ set-CGPoint-x ] keep ;
22
23 C-STRUCT: CGSize
24     { "CGFloat" "w" }
25     { "CGFloat" "h" } ;
26
27 : <CGSize> ( w h -- size )
28     "CGSize" <c-object>
29     [ set-CGSize-h ] keep
30     [ set-CGSize-w ] keep ;
31
32 C-STRUCT: CGRect
33     { "CGPoint" "origin" }
34     { "CGSize"  "size"   } ;
35
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
44
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
53
54 : <CGRect> ( x y w h -- rect )
55     "CGRect" <c-object>
56     [ set-CGRect-h ] keep
57     [ set-CGRect-w ] keep
58     [ set-CGRect-y ] keep
59     [ set-CGRect-x ] keep ;
60
61 : CGRect-x-y ( alien -- origin-x origin-y )
62     [ CGRect-x ] [ CGRect-y ] bi ;
63
64 : CGRect-top-left ( alien -- x y )
65     [ CGRect-x ] [ [ CGRect-y ] [ CGRect-h ] bi + ] bi ;
66
67 C-STRUCT: CGAffineTransform
68     { "CGFloat" "a" }
69     { "CGFloat" "b" }
70     { "CGFloat" "c" }
71     { "CGFloat" "d" }
72     { "CGFloat" "tx" }
73     { "CGFloat" "ty" } ;
74
75 TYPEDEF: void* CGColorRef
76 TYPEDEF: void* CGColorSpaceRef
77 TYPEDEF: void* CGContextRef
78 TYPEDEF: uint CGBitmapInfo
79
80 TYPEDEF: int CGLError
81 TYPEDEF: void* CGLContextObj
82 TYPEDEF: int CGLContextParameter