]> gitweb.factorcode.org Git - factor.git/blob - basis/core-graphics/types/types.factor
Merge branch 'master' of git://factorcode.org/git/factor
[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
4 math math.rectangles arrays ;
5 IN: core-graphics.types
6
7 << cell 4 = "float" "double" ? "CGFloat" typedef >>
8
9 : <CGFloat> ( x -- alien )
10     cell 4 = [ <float> ] [ <double> ] if ; inline
11
12 : *CGFloat ( alien -- x )
13     cell 4 = [ *float ] [ *double ] if ; inline
14
15 C-STRUCT: CGPoint
16     { "CGFloat" "x" }
17     { "CGFloat" "y" } ;
18
19 : <CGPoint> ( x y -- point )
20     "CGPoint" <c-object>
21     [ set-CGPoint-y ] keep
22     [ set-CGPoint-x ] keep ;
23
24 C-STRUCT: CGSize
25     { "CGFloat" "w" }
26     { "CGFloat" "h" } ;
27
28 : <CGSize> ( w h -- size )
29     "CGSize" <c-object>
30     [ set-CGSize-h ] keep
31     [ set-CGSize-w ] keep ;
32
33 C-STRUCT: CGRect
34     { "CGPoint" "origin" }
35     { "CGSize"  "size"   } ;
36
37 : CGPoint>loc ( CGPoint -- loc )
38     [ CGPoint-x ] [ CGPoint-y ] bi 2array ;
39
40 : CGSize>dim ( CGSize -- dim )
41     [ CGSize-w ] [ CGSize-h ] bi 2array ;
42
43 : CGRect>rect ( CGRect -- rect )
44     [ CGRect-origin CGPoint>loc ]
45     [ CGRect-size CGSize>dim ]
46     bi <rect> ; inline
47
48 : CGRect-x ( CGRect -- x )
49     CGRect-origin CGPoint-x ; inline
50 : CGRect-y ( CGRect -- y )
51     CGRect-origin CGPoint-y ; inline
52 : CGRect-w ( CGRect -- w )
53     CGRect-size CGSize-w ; inline
54 : CGRect-h ( CGRect -- h )
55     CGRect-size CGSize-h ; inline
56
57 : set-CGRect-x ( x CGRect -- )
58     CGRect-origin set-CGPoint-x ; inline
59 : set-CGRect-y ( y CGRect -- )
60     CGRect-origin set-CGPoint-y ; inline
61 : set-CGRect-w ( w CGRect -- )
62     CGRect-size set-CGSize-w ; inline
63 : set-CGRect-h ( h CGRect -- )
64     CGRect-size set-CGSize-h ; inline
65
66 : <CGRect> ( x y w h -- rect )
67     "CGRect" <c-object>
68     [ set-CGRect-h ] keep
69     [ set-CGRect-w ] keep
70     [ set-CGRect-y ] keep
71     [ set-CGRect-x ] keep ;
72
73 : CGRect-x-y ( alien -- origin-x origin-y )
74     [ CGRect-x ] [ CGRect-y ] bi ;
75
76 : CGRect-top-left ( alien -- x y )
77     [ CGRect-x ] [ [ CGRect-y ] [ CGRect-h ] bi + ] bi ;
78
79 C-STRUCT: CGAffineTransform
80     { "CGFloat" "a" }
81     { "CGFloat" "b" }
82     { "CGFloat" "c" }
83     { "CGFloat" "d" }
84     { "CGFloat" "tx" }
85     { "CGFloat" "ty" } ;
86
87 TYPEDEF: void* CGColorRef
88 TYPEDEF: void* CGColorSpaceRef
89 TYPEDEF: void* CGContextRef
90 TYPEDEF: uint CGBitmapInfo
91
92 TYPEDEF: int CGLError
93 TYPEDEF: int CGError
94 TYPEDEF: uint CGDirectDisplayID
95 TYPEDEF: int boolean_t
96 TYPEDEF: void* CGLContextObj
97 TYPEDEF: int CGLContextParameter