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