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
9 << cell 4 = float double ? \ CGFloat typedef >>
27 : CGPoint>loc ( CGPoint -- loc )
28 [ x>> ] [ y>> ] bi 2array ;
30 : CGSize>dim ( CGSize -- dim )
31 [ w>> ] [ h>> ] bi 2array ;
33 : CGRect>rect ( CGRect -- rect )
34 [ origin>> CGPoint>loc ] [ size>> CGSize>dim ] bi <rect> ; inline
36 : CGRect-x ( CGRect -- x ) origin>> x>> ; inline
38 : CGRect-y ( CGRect -- y ) origin>> y>> ; inline
40 : CGRect-w ( CGRect -- w ) size>> w>> ; inline
42 : CGRect-h ( CGRect -- h ) size>> h>> ; inline
44 : set-CGRect-x ( x CGRect -- ) origin>> x<< ; inline
46 : set-CGRect-y ( y CGRect -- ) origin>> y<< ; inline
48 : set-CGRect-w ( w CGRect -- ) size>> w<< ; inline
50 : set-CGRect-h ( h CGRect -- ) size>> h<< ; inline
52 : <CGRect> ( x y w h -- rect )
53 [ CGPoint <struct-boa> ] [ CGSize <struct-boa> ] 2bi* CGRect <struct-boa> ;
55 : CGRect-x-y ( alien -- origin-x origin-y )
56 [ CGRect-x ] [ CGRect-y ] bi ;
58 : CGRect-top-left ( alien -- x y )
59 [ CGRect-x ] [ [ CGRect-y ] [ CGRect-h ] bi + ] bi ;
61 STRUCT: CGAffineTransform
69 TYPEDEF: void* CGColorRef
70 TYPEDEF: void* CGColorSpaceRef
71 TYPEDEF: void* CGContextRef
72 TYPEDEF: void* CGImageRef
73 TYPEDEF: void* CGImageDestinationRef
75 TYPEDEF: uint CGBitmapInfo
79 TYPEDEF: uint CGDirectDisplayID
80 TYPEDEF: int boolean_t
81 TYPEDEF: void* CGLContextObj
82 TYPEDEF: int CGLContextParameter