]> gitweb.factorcode.org Git - factor.git/blob - basis/core-graphics/types/types.factor
classes.struct: moving to new/boa instead of <struct>/<struct-boa>
[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 arrays
4 classes.struct kernel layouts math math.rectangles ;
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 C: <CGPoint> CGPoint
16
17 STRUCT: CGSize
18     { w CGFloat }
19     { h CGFloat } ;
20
21 C: <CGSize> CGSize
22
23 STRUCT: CGRect
24     { origin CGPoint }
25     { size CGSize } ;
26
27 : CGPoint>loc ( CGPoint -- loc )
28     [ x>> ] [ y>> ] bi 2array ;
29
30 : CGSize>dim ( CGSize -- dim )
31     [ w>> ] [ h>> ] bi 2array ;
32
33 : CGRect>rect ( CGRect -- rect )
34     [ origin>> CGPoint>loc ]
35     [ size>> CGSize>dim ]
36     bi <rect> ; inline
37
38 : CGRect-x ( CGRect -- x )
39     origin>> x>> ; inline
40 : CGRect-y ( CGRect -- y )
41     origin>> y>> ; inline
42 : CGRect-w ( CGRect -- w )
43     size>> w>> ; inline
44 : CGRect-h ( CGRect -- h )
45     size>> h>> ; inline
46
47 : set-CGRect-x ( x CGRect -- )
48     origin>> x<< ; inline
49 : set-CGRect-y ( y CGRect -- )
50     origin>> y<< ; inline
51 : set-CGRect-w ( w CGRect -- )
52     size>> w<< ; inline
53 : set-CGRect-h ( h CGRect -- )
54     size>> h<< ; inline
55
56 : <CGRect> ( x y w h -- rect )
57     [ CGPoint boa ] [ CGSize boa ] 2bi* CGRect boa ;
58
59 : CGRect-x-y ( alien -- origin-x origin-y )
60     [ CGRect-x ] [ CGRect-y ] bi ;
61
62 : CGRect-top-left ( alien -- x y )
63     [ CGRect-x ] [ [ CGRect-y ] [ CGRect-h ] bi + ] bi ;
64
65 STRUCT: CGAffineTransform
66     { a CGFloat }
67     { b CGFloat }
68     { c CGFloat }
69     { d CGFloat }
70     { tx CGFloat }
71     { ty CGFloat } ;
72
73 TYPEDEF: void* CGColorRef
74 TYPEDEF: void* CGColorSpaceRef
75 TYPEDEF: void* CGContextRef
76 TYPEDEF: void* CGImageRef
77 TYPEDEF: void* CGImageDestinationRef
78
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