]> 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: accessors alien.c-types alien.syntax classes.struct 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 STRUCT: CGPoint
16     { x CGFloat }
17     { y CGFloat } ;
18
19 : <CGPoint> ( x y -- point )
20     CGPoint <struct-boa> ;
21
22 STRUCT: CGSize
23     { w CGFloat }
24     { h CGFloat } ;
25
26 : <CGSize> ( w h -- size )
27     CGSize <struct-boa> ;
28
29 STRUCT: CGRect
30     { origin CGPoint }
31     { size   CGSize  } ;
32
33 : CGPoint>loc ( CGPoint -- loc )
34     [ x>> ] [ y>> ] bi 2array ;
35
36 : CGSize>dim ( CGSize -- dim )
37     [ w>> ] [ h>> ] bi 2array ;
38
39 : CGRect>rect ( CGRect -- rect )
40     [ origin>> CGPoint>loc ]
41     [ size>>   CGSize>dim ]
42     bi <rect> ; inline
43
44 : CGRect-x ( CGRect -- x )
45     origin>> x>> ; inline
46 : CGRect-y ( CGRect -- y )
47     origin>> y>> ; inline
48 : CGRect-w ( CGRect -- w )
49     size>> w>> ; inline
50 : CGRect-h ( CGRect -- h )
51     size>> h>> ; inline
52
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 -- )
58     size>> (>>w) ; inline
59 : set-CGRect-h ( h CGRect -- )
60     size>> (>>h) ; inline
61
62 : <CGRect> ( x y w h -- rect )
63     [ CGPoint <struct-boa> ] [ CGSize <struct-boa> ] 2bi*
64     CGRect <struct-boa> ;
65
66 : CGRect-x-y ( alien -- origin-x origin-y )
67     [ CGRect-x ] [ CGRect-y ] bi ;
68
69 : CGRect-top-left ( alien -- x y )
70     [ CGRect-x ] [ [ CGRect-y ] [ CGRect-h ] bi + ] bi ;
71
72 STRUCT: CGAffineTransform
73     { a CGFloat }
74     { b CGFloat }
75     { c CGFloat }
76     { d CGFloat }
77     { tx CGFloat }
78     { ty CGFloat } ;
79
80 TYPEDEF: void* CGColorRef
81 TYPEDEF: void* CGColorSpaceRef
82 TYPEDEF: void* CGContextRef
83 TYPEDEF: uint CGBitmapInfo
84
85 TYPEDEF: int CGLError
86 TYPEDEF: int CGError
87 TYPEDEF: uint CGDirectDisplayID
88 TYPEDEF: int boolean_t
89 TYPEDEF: void* CGLContextObj
90 TYPEDEF: int CGLContextParameter