| 
									
										
										
										
											2009-01-16 18:44:46 -05:00
										 |  |  | ! Copyright (C) 2009 Slava Pestov. | 
					
						
							|  |  |  | ! See http://factorcode.org/license.txt for BSD license. | 
					
						
							| 
									
										
										
										
											2013-09-20 14:58:01 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | USING: accessors alien alien.c-types alien.data | 
					
						
							|  |  |  | alien.destructors alien.syntax colors | 
					
						
							|  |  |  | core-foundation.dictionaries core-foundation.strings | 
					
						
							|  |  |  | core-foundation.urls core-foundation.utilities | 
					
						
							|  |  |  | core-graphics.types destructors fry images images.memory kernel | 
					
						
							|  |  |  | libc math opengl.gl sequences ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-16 18:44:46 -05:00
										 |  |  | IN: core-graphics | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-18 16:34:18 -04:00
										 |  |  | TYPEDEF: int CGImageAlphaInfo | 
					
						
							|  |  |  | CONSTANT: kCGImageAlphaNone 0
 | 
					
						
							|  |  |  | CONSTANT: kCGImageAlphaPremultipliedLast 1
 | 
					
						
							|  |  |  | CONSTANT: kCGImageAlphaPremultipliedFirst 2
 | 
					
						
							|  |  |  | CONSTANT: kCGImageAlphaLast 3
 | 
					
						
							|  |  |  | CONSTANT: kCGImageAlphaFirst 4
 | 
					
						
							|  |  |  | CONSTANT: kCGImageAlphaNoneSkipLast 5
 | 
					
						
							|  |  |  | CONSTANT: kCGImageAlphaNoneSkipFirst 6
 | 
					
						
							| 
									
										
										
										
											2009-01-16 18:44:46 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-23 21:49:33 -05:00
										 |  |  | CONSTANT: kCGBitmapAlphaInfoMask 0x1f
 | 
					
						
							| 
									
										
										
										
											2010-04-01 16:37:57 -04:00
										 |  |  | CONSTANT: kCGBitmapFloatComponents 256
 | 
					
						
							| 
									
										
										
										
											2009-01-16 18:44:46 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-23 21:49:33 -05:00
										 |  |  | CONSTANT: kCGBitmapByteOrderMask 0x7000
 | 
					
						
							| 
									
										
										
										
											2010-04-01 16:37:57 -04:00
										 |  |  | CONSTANT: kCGBitmapByteOrderDefault 0
 | 
					
						
							|  |  |  | CONSTANT: kCGBitmapByteOrder16Little 4096
 | 
					
						
							|  |  |  | CONSTANT: kCGBitmapByteOrder32Little 8192
 | 
					
						
							|  |  |  | CONSTANT: kCGBitmapByteOrder16Big 12288
 | 
					
						
							|  |  |  | CONSTANT: kCGBitmapByteOrder32Big 16384
 | 
					
						
							| 
									
										
										
										
											2009-01-16 18:44:46 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-29 23:07:51 -05:00
										 |  |  | : kCGBitmapByteOrder16Host ( -- n )
 | 
					
						
							|  |  |  |     little-endian? | 
					
						
							|  |  |  |     kCGBitmapByteOrder16Little | 
					
						
							|  |  |  |     kCGBitmapByteOrder16Big ? ; foldable
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | : kCGBitmapByteOrder32Host ( -- n )
 | 
					
						
							|  |  |  |     little-endian? | 
					
						
							|  |  |  |     kCGBitmapByteOrder32Little | 
					
						
							|  |  |  |     kCGBitmapByteOrder32Big ? ; foldable
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 20:34:42 -05:00
										 |  |  | FUNCTION: CGColorRef CGColorCreateGenericRGB (
 | 
					
						
							|  |  |  |    CGFloat red, | 
					
						
							|  |  |  |    CGFloat green, | 
					
						
							|  |  |  |    CGFloat blue, | 
					
						
							|  |  |  |    CGFloat alpha | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2009-01-21 20:34:42 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | : <CGColor> ( color -- CGColor )
 | 
					
						
							|  |  |  |     >rgba-components CGColorCreateGenericRGB ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | M: color (>cf) <CGColor> ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | FUNCTION: CGColorSpaceRef CGColorSpaceCreateDeviceRGB ( )
 | 
					
						
							| 
									
										
										
										
											2009-01-16 18:44:46 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | FUNCTION: CGContextRef CGBitmapContextCreate (
 | 
					
						
							|  |  |  |    void* data, | 
					
						
							|  |  |  |    size_t width, | 
					
						
							|  |  |  |    size_t height, | 
					
						
							|  |  |  |    size_t bitsPerComponent, | 
					
						
							|  |  |  |    size_t bytesPerRow, | 
					
						
							|  |  |  |    CGColorSpaceRef colorspace, | 
					
						
							|  |  |  |    CGBitmapInfo bitmapInfo | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2009-01-16 18:44:46 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-02 20:28:17 -04:00
										 |  |  | FUNCTION: CGImageRef CGBitmapContextCreateImage (
 | 
					
						
							| 
									
										
										
										
											2013-09-20 14:58:01 -04:00
										 |  |  |    CGContextRef c | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2013-09-20 14:58:01 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | FUNCTION: void CGColorSpaceRelease ( CGColorSpaceRef ref ) | 
					
						
							| 
									
										
										
										
											2009-01-16 18:44:46 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-16 23:37:56 -05:00
										 |  |  | DESTRUCTOR: CGColorSpaceRelease | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | FUNCTION: void CGContextRelease ( CGContextRef ref ) | 
					
						
							| 
									
										
										
										
											2009-01-16 23:37:56 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | DESTRUCTOR: CGContextRelease | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-16 18:44:46 -05:00
										 |  |  | FUNCTION: void CGContextSetRGBStrokeColor (
 | 
					
						
							|  |  |  |    CGContextRef c, | 
					
						
							|  |  |  |    CGFloat red, | 
					
						
							|  |  |  |    CGFloat green, | 
					
						
							|  |  |  |    CGFloat blue, | 
					
						
							|  |  |  |    CGFloat alpha | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2013-09-20 14:58:01 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-16 18:44:46 -05:00
										 |  |  | FUNCTION: void CGContextSetRGBFillColor (
 | 
					
						
							|  |  |  |    CGContextRef c, | 
					
						
							|  |  |  |    CGFloat red, | 
					
						
							|  |  |  |    CGFloat green, | 
					
						
							|  |  |  |    CGFloat blue, | 
					
						
							|  |  |  |    CGFloat alpha | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2009-01-16 20:11:48 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | FUNCTION: void CGContextSetTextPosition (
 | 
					
						
							|  |  |  |    CGContextRef c, | 
					
						
							|  |  |  |    CGFloat x, | 
					
						
							|  |  |  |    CGFloat y | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2009-01-16 23:37:56 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-29 23:07:51 -05:00
										 |  |  | FUNCTION: void CGContextFillRect (
 | 
					
						
							|  |  |  |    CGContextRef c, | 
					
						
							|  |  |  |    CGRect rect | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2009-01-29 23:07:51 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | FUNCTION: void CGContextSetShouldSmoothFonts (
 | 
					
						
							|  |  |  |    CGContextRef c, | 
					
						
							|  |  |  |    bool shouldSmoothFonts | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2009-01-29 23:07:51 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-09-02 21:59:58 -04:00
										 |  |  | FUNCTION: void CGContextDrawImage (
 | 
					
						
							|  |  |  |    CGContextRef c, | 
					
						
							|  |  |  |    CGRect rect, | 
					
						
							|  |  |  |    CGImageRef image | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2011-09-02 21:59:58 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | FUNCTION: size_t CGImageGetWidth (
 | 
					
						
							|  |  |  |    CGImageRef image | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2011-09-02 21:59:58 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | FUNCTION: size_t CGImageGetHeight (
 | 
					
						
							|  |  |  |    CGImageRef image | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2011-09-02 21:59:58 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-20 14:58:01 -04:00
										 |  |  | FUNCTION: CGImageDestinationRef CGImageDestinationCreateWithURL (
 | 
					
						
							|  |  |  |    CFURLRef url, | 
					
						
							|  |  |  |    CFStringRef type, | 
					
						
							|  |  |  |    size_t count, | 
					
						
							|  |  |  |    CFDictionaryRef options | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2013-09-20 14:58:01 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | FUNCTION: void CGImageDestinationAddImage (
 | 
					
						
							|  |  |  |    CGImageDestinationRef idst, | 
					
						
							|  |  |  |    CGImageRef image, | 
					
						
							|  |  |  |    CFDictionaryRef properties | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2013-09-20 14:58:01 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | FUNCTION: bool CGImageDestinationFinalize (
 | 
					
						
							|  |  |  |    CGImageDestinationRef idst | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | ) | 
					
						
							| 
									
										
										
										
											2013-09-20 14:58:01 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | FUNCTION: void* CGBitmapContextGetData ( CGContextRef c ) | 
					
						
							| 
									
										
										
										
											2009-01-21 00:06:23 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-23 21:49:33 -05:00
										 |  |  | CONSTANT: kCGLRendererGenericFloatID 0x00020400
 | 
					
						
							| 
									
										
										
										
											2009-02-24 02:21:10 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | FUNCTION: CGLError CGLSetParameter ( CGLContextObj ctx, CGLContextParameter pname, GLint* params ) | 
					
						
							| 
									
										
										
										
											2009-02-24 02:21:10 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | FUNCTION: CGDirectDisplayID CGMainDisplayID ( )
 | 
					
						
							| 
									
										
										
										
											2009-05-08 16:07:15 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | FUNCTION: CGError CGDisplayHideCursor ( CGDirectDisplayID display ) | 
					
						
							|  |  |  | FUNCTION: CGError CGDisplayShowCursor ( CGDirectDisplayID display ) | 
					
						
							| 
									
										
										
										
											2009-05-08 16:07:15 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | FUNCTION: CGError CGDisplayMoveCursorToPoint ( CGDirectDisplayID display, CGPoint point ) | 
					
						
							| 
									
										
										
										
											2009-05-14 16:01:21 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | FUNCTION: CGError CGAssociateMouseAndMouseCursorPosition ( boolean_t connected ) | 
					
						
							| 
									
										
										
										
											2009-05-08 16:07:15 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | FUNCTION: CGError CGWarpMouseCursorPosition ( CGPoint newCursorPosition ) | 
					
						
							| 
									
										
										
										
											2009-05-08 16:07:15 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-19 19:25:30 -04:00
										 |  |  | FUNCTION: uint GetCurrentButtonState ( )
 | 
					
						
							| 
									
										
										
										
											2009-05-14 16:36:18 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-01-21 00:06:23 -05:00
										 |  |  | <PRIVATE
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2010-04-01 16:37:57 -04:00
										 |  |  | : bitmap-flags ( -- n )
 | 
					
						
							|  |  |  |     kCGImageAlphaPremultipliedFirst kCGBitmapByteOrder32Host bitor ;
 | 
					
						
							| 
									
										
										
										
											2009-01-29 23:07:51 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | : bitmap-color-space ( -- color-space )
 | 
					
						
							|  |  |  |     CGColorSpaceCreateDeviceRGB &CGColorSpaceRelease ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-20 21:53:51 -05:00
										 |  |  | : <CGBitmapContext> ( data dim -- context )
 | 
					
						
							|  |  |  |     [ first2 8 ] [ first 4 * ] bi
 | 
					
						
							| 
									
										
										
										
											2009-01-29 23:07:51 -05:00
										 |  |  |     bitmap-color-space bitmap-flags CGBitmapContextCreate | 
					
						
							| 
									
										
										
										
											2009-01-21 00:06:23 -05:00
										 |  |  |     [ "CGBitmapContextCreate failed" throw ] unless* ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | PRIVATE>
 | 
					
						
							| 
									
										
										
										
											2009-01-16 23:37:56 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-20 21:53:51 -05:00
										 |  |  | : dummy-context ( -- context )
 | 
					
						
							|  |  |  |     \ dummy-context [ | 
					
						
							|  |  |  |         [ 4 malloc { 1 1 } <CGBitmapContext> ] with-destructors | 
					
						
							|  |  |  |     ] initialize-alien ;
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-13 20:11:07 -05:00
										 |  |  | : make-bitmap-image ( dim quot -- image )
 | 
					
						
							| 
									
										
										
										
											2009-02-28 02:31:51 -05:00
										 |  |  |     '[ <CGBitmapContext> &CGContextRelease @ ] make-memory-bitmap | 
					
						
							| 
									
										
										
										
											2009-06-22 12:20:54 -04:00
										 |  |  |     ARGB >>component-order | 
					
						
							| 
									
										
										
										
											2011-09-09 02:08:16 -04:00
										 |  |  |     ubyte-components >>component-type | 
					
						
							|  |  |  |     t >>premultiplied-alpha? ; inline
 |