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 CONSTANT: kCGBitmapAlphaInfoMask HEX: 1f
20 CONSTANT: kCGBitmapFloatComponents 256
22 CONSTANT: kCGBitmapByteOrderMask HEX: 7000
23 CONSTANT: kCGBitmapByteOrderDefault 0
24 CONSTANT: kCGBitmapByteOrder16Little 4096
25 CONSTANT: kCGBitmapByteOrder32Little 8192
26 CONSTANT: kCGBitmapByteOrder16Big 12288
27 CONSTANT: kCGBitmapByteOrder32Big 16384
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 : bitmap-flags ( -- n )
125 kCGImageAlphaPremultipliedFirst kCGBitmapByteOrder32Host bitor ;
127 : bitmap-color-space ( -- color-space )
128 CGColorSpaceCreateDeviceRGB &CGColorSpaceRelease ;
130 : <CGBitmapContext> ( data dim -- context )
131 [ first2 8 ] [ first 4 * ] bi
132 bitmap-color-space bitmap-flags CGBitmapContextCreate
133 [ "CGBitmapContextCreate failed" throw ] unless* ;
137 : dummy-context ( -- context )
139 [ 4 malloc { 1 1 } <CGBitmapContext> ] with-destructors
142 : make-bitmap-image ( dim quot -- image )
143 '[ <CGBitmapContext> &CGContextRelease @ ] make-memory-bitmap
144 ARGB >>component-order
145 ubyte-components >>component-type ; inline