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