1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: alien alien.c-types alien.destructors alien.syntax accessors
4 destructors fry kernel math math.bitwise sequences libc colors
5 images images.memory core-graphics.types core-foundation.utilities
12 kCGImageAlphaPremultipliedLast
13 kCGImageAlphaPremultipliedFirst
16 kCGImageAlphaNoneSkipLast
17 kCGImageAlphaNoneSkipFirst ;
19 : kCGBitmapAlphaInfoMask ( -- n ) HEX: 1f ; inline
20 : kCGBitmapFloatComponents ( -- n ) 1 8 shift ; inline
22 : kCGBitmapByteOrderMask ( -- n ) HEX: 7000 ; inline
23 : kCGBitmapByteOrderDefault ( -- n ) 0 12 shift ; inline
24 : kCGBitmapByteOrder16Little ( -- n ) 1 12 shift ; inline
25 : kCGBitmapByteOrder32Little ( -- n ) 2 12 shift ; inline
26 : kCGBitmapByteOrder16Big ( -- n ) 3 12 shift ; inline
27 : kCGBitmapByteOrder32Big ( -- n ) 4 12 shift ; inline
29 : kCGBitmapByteOrder16Host ( -- n )
31 kCGBitmapByteOrder16Little
32 kCGBitmapByteOrder16Big ? ; foldable
34 : kCGBitmapByteOrder32Host ( -- n )
36 kCGBitmapByteOrder32Little
37 kCGBitmapByteOrder32Big ? ; foldable
39 FUNCTION: CGColorRef CGColorCreateGenericRGB (
46 : <CGColor> ( color -- CGColor )
47 >rgba-components CGColorCreateGenericRGB ;
49 M: color (>cf) <CGColor> ;
51 FUNCTION: CGColorSpaceRef CGColorSpaceCreateDeviceRGB ( ) ;
53 FUNCTION: CGContextRef CGBitmapContextCreate (
57 size_t bitsPerComponent,
59 CGColorSpaceRef colorspace,
60 CGBitmapInfo bitmapInfo
63 FUNCTION: void CGColorSpaceRelease ( CGColorSpaceRef ref ) ;
65 DESTRUCTOR: CGColorSpaceRelease
67 FUNCTION: void CGContextRelease ( CGContextRef ref ) ;
69 DESTRUCTOR: CGContextRelease
71 FUNCTION: void CGContextSetRGBStrokeColor (
79 FUNCTION: void CGContextSetRGBFillColor (
87 FUNCTION: void CGContextSetTextPosition (
93 FUNCTION: void CGContextFillRect (
98 FUNCTION: void CGContextSetShouldSmoothFonts (
100 bool shouldSmoothFonts
103 FUNCTION: void* CGBitmapContextGetData ( CGContextRef c ) ;
105 CONSTANT: kCGLRendererGenericFloatID HEX: 00020400
107 FUNCTION: CGLError CGLSetParameter ( CGLContextObj ctx, CGLContextParameter pname, GLint* params ) ;
109 FUNCTION: CGDirectDisplayID CGMainDisplayID ( ) ;
111 FUNCTION: CGError CGDisplayHideCursor ( CGDirectDisplayID display ) ;
112 FUNCTION: CGError CGDisplayShowCursor ( CGDirectDisplayID display ) ;
114 FUNCTION: CGError CGDisplayMoveCursorToPoint ( CGDirectDisplayID display, CGPoint point ) ;
116 FUNCTION: CGError CGAssociateMouseAndMouseCursorPosition ( boolean_t connected ) ;
118 FUNCTION: CGError CGWarpMouseCursorPosition ( CGPoint newCursorPosition ) ;
120 FUNCTION: uint GetCurrentButtonState ( ) ;
124 CONSTANT: bitmap-flags flags{ kCGImageAlphaPremultipliedFirst kCGBitmapByteOrder32Host }
126 : bitmap-color-space ( -- color-space )
127 CGColorSpaceCreateDeviceRGB &CGColorSpaceRelease ;
129 : <CGBitmapContext> ( data dim -- context )
130 [ first2 8 ] [ first 4 * ] bi
131 bitmap-color-space bitmap-flags CGBitmapContextCreate
132 [ "CGBitmapContextCreate failed" throw ] unless* ;
136 : dummy-context ( -- context )
138 [ 4 malloc { 1 1 } <CGBitmapContext> ] with-destructors
141 : make-bitmap-image ( dim quot -- image )
142 '[ <CGBitmapContext> &CGContextRelease @ ] make-memory-bitmap
143 ARGB >>component-order
144 ubyte-components >>component-type ; inline