]> gitweb.factorcode.org Git - factor.git/blob - basis/core-graphics/types/types.factor
Switch to https urls
[factor.git] / basis / core-graphics / types / types.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See https://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 ] [ size>> CGSize>dim ] bi <rect> ; inline
35
36 : CGRect-x ( CGRect -- x ) origin>> x>> ; inline
37
38 : CGRect-y ( CGRect -- y ) origin>> y>> ; inline
39
40 : CGRect-w ( CGRect -- w ) size>> w>> ; inline
41
42 : CGRect-h ( CGRect -- h ) size>> h>> ; inline
43
44 : set-CGRect-x ( x CGRect -- ) origin>> x<< ; inline
45
46 : set-CGRect-y ( y CGRect -- ) origin>> y<< ; inline
47
48 : set-CGRect-w ( w CGRect -- ) size>> w<< ; inline
49
50 : set-CGRect-h ( h CGRect -- ) size>> h<< ; inline
51
52 : <CGRect> ( x y w h -- rect )
53     [ CGPoint <struct-boa> ] [ CGSize <struct-boa> ] 2bi* CGRect <struct-boa> ;
54
55 : CGRect-x-y ( alien -- origin-x origin-y )
56     [ CGRect-x ] [ CGRect-y ] bi ;
57
58 : CGRect-top-left ( alien -- x y )
59     [ CGRect-x ] [ [ CGRect-y ] [ CGRect-h ] bi + ] bi ;
60
61 STRUCT: CGAffineTransform
62     { a CGFloat }
63     { b CGFloat }
64     { c CGFloat }
65     { d CGFloat }
66     { tx CGFloat }
67     { ty CGFloat } ;
68
69 TYPEDEF: void* CGColorRef
70 TYPEDEF: void* CGColorSpaceRef
71 TYPEDEF: void* CGContextRef
72 TYPEDEF: void* CGImageRef
73 TYPEDEF: void* CGImageDestinationRef
74
75 TYPEDEF: uint CGBitmapInfo
76
77 TYPEDEF: int CGLError
78 TYPEDEF: int CGError
79 TYPEDEF: uint CGDirectDisplayID
80 TYPEDEF: int boolean_t
81 TYPEDEF: void* CGLContextObj
82 TYPEDEF: int CGLContextParameter