Revert "lists: Add list literal doc example."
[factor.git] / basis / core-graphics / core-graphics.factor
blob58fda8f96cfcba7f9d78c39e4ab27a2a9ac789f9
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
4 USING: accessors alien alien.c-types alien.data
5 alien.destructors alien.syntax colors
6 core-foundation.dictionaries core-foundation.strings
7 core-foundation.urls core-foundation.utilities
8 core-graphics.types destructors fry images images.memory kernel
9 libc math opengl.gl sequences ;
11 IN: core-graphics
13 TYPEDEF: int CGImageAlphaInfo
14 CONSTANT: kCGImageAlphaNone 0
15 CONSTANT: kCGImageAlphaPremultipliedLast 1
16 CONSTANT: kCGImageAlphaPremultipliedFirst 2
17 CONSTANT: kCGImageAlphaLast 3
18 CONSTANT: kCGImageAlphaFirst 4
19 CONSTANT: kCGImageAlphaNoneSkipLast 5
20 CONSTANT: kCGImageAlphaNoneSkipFirst 6
22 CONSTANT: kCGBitmapAlphaInfoMask 0x1f
23 CONSTANT: kCGBitmapFloatComponents 256
25 CONSTANT: kCGBitmapByteOrderMask 0x7000
26 CONSTANT: kCGBitmapByteOrderDefault 0
27 CONSTANT: kCGBitmapByteOrder16Little 4096
28 CONSTANT: kCGBitmapByteOrder32Little 8192
29 CONSTANT: kCGBitmapByteOrder16Big 12288
30 CONSTANT: kCGBitmapByteOrder32Big 16384
32 : kCGBitmapByteOrder16Host ( -- n )
33     little-endian?
34     kCGBitmapByteOrder16Little
35     kCGBitmapByteOrder16Big ? ; foldable
37 : kCGBitmapByteOrder32Host ( -- n )
38     little-endian?
39     kCGBitmapByteOrder32Little
40     kCGBitmapByteOrder32Big ? ; foldable
42 FUNCTION: CGColorRef CGColorCreateGenericRGB (
43    CGFloat red,
44    CGFloat green,
45    CGFloat blue,
46    CGFloat alpha
49 : <CGColor> ( color -- CGColor )
50     >rgba-components CGColorCreateGenericRGB ;
52 M: color (>cf) <CGColor> ;
54 FUNCTION: CGColorSpaceRef CGColorSpaceCreateDeviceRGB ( )
56 FUNCTION: CGContextRef CGBitmapContextCreate (
57    void* data,
58    size_t width,
59    size_t height,
60    size_t bitsPerComponent,
61    size_t bytesPerRow,
62    CGColorSpaceRef colorspace,
63    CGBitmapInfo bitmapInfo
66 FUNCTION: CGImageRef CGBitmapContextCreateImage (
67    CGContextRef c
70 FUNCTION: void CGColorSpaceRelease ( CGColorSpaceRef ref )
72 DESTRUCTOR: CGColorSpaceRelease
74 FUNCTION: void CGContextRelease ( CGContextRef ref )
76 DESTRUCTOR: CGContextRelease
78 FUNCTION: void CGContextSetRGBStrokeColor (
79    CGContextRef c,
80    CGFloat red,
81    CGFloat green,
82    CGFloat blue,
83    CGFloat alpha
86 FUNCTION: void CGContextSetRGBFillColor (
87    CGContextRef c,
88    CGFloat red,
89    CGFloat green,
90    CGFloat blue,
91    CGFloat alpha
94 FUNCTION: void CGContextSetTextPosition (
95    CGContextRef c,
96    CGFloat x,
97    CGFloat y
100 FUNCTION: void CGContextFillRect (
101    CGContextRef c,
102    CGRect rect
105 FUNCTION: void CGContextSetShouldSmoothFonts (
106    CGContextRef c,
107    bool shouldSmoothFonts
110 FUNCTION: void CGContextDrawImage (
111    CGContextRef c,
112    CGRect rect,
113    CGImageRef image
116 FUNCTION: size_t CGImageGetWidth (
117    CGImageRef image
120 FUNCTION: size_t CGImageGetHeight (
121    CGImageRef image
124 FUNCTION: CGImageDestinationRef CGImageDestinationCreateWithURL (
125    CFURLRef url,
126    CFStringRef type,
127    size_t count,
128    CFDictionaryRef options
131 FUNCTION: void CGImageDestinationAddImage (
132    CGImageDestinationRef idst,
133    CGImageRef image,
134    CFDictionaryRef properties
137 FUNCTION: bool CGImageDestinationFinalize (
138    CGImageDestinationRef idst
141 FUNCTION: void* CGBitmapContextGetData ( CGContextRef c )
143 CONSTANT: kCGLRendererGenericFloatID 0x00020400
145 FUNCTION: CGLError CGLSetParameter ( CGLContextObj ctx, CGLContextParameter pname, GLint* params )
147 FUNCTION: CGDirectDisplayID CGMainDisplayID ( )
149 FUNCTION: CGError CGDisplayHideCursor ( CGDirectDisplayID display )
150 FUNCTION: CGError CGDisplayShowCursor ( CGDirectDisplayID display )
152 FUNCTION: CGError CGDisplayMoveCursorToPoint ( CGDirectDisplayID display, CGPoint point )
154 FUNCTION: CGError CGAssociateMouseAndMouseCursorPosition ( boolean_t connected )
156 FUNCTION: CGError CGWarpMouseCursorPosition ( CGPoint newCursorPosition )
158 FUNCTION: uint GetCurrentButtonState ( )
160 <PRIVATE
162 : bitmap-flags ( -- n )
163     kCGImageAlphaPremultipliedFirst kCGBitmapByteOrder32Host bitor ;
165 : bitmap-color-space ( -- color-space )
166     CGColorSpaceCreateDeviceRGB &CGColorSpaceRelease ;
168 : <CGBitmapContext> ( data dim -- context )
169     [ first2 8 ] [ first 4 * ] bi
170     bitmap-color-space bitmap-flags CGBitmapContextCreate
171     [ "CGBitmapContextCreate failed" throw ] unless* ;
173 PRIVATE>
175 : dummy-context ( -- context )
176     \ dummy-context [
177         [ 4 malloc { 1 1 } <CGBitmapContext> ] with-destructors
178     ] initialize-alien ;
180 : make-bitmap-image ( dim quot -- image )
181     '[ <CGBitmapContext> &CGContextRelease @ ] make-memory-bitmap
182     ARGB >>component-order
183     ubyte-components >>component-type
184     t >>premultiplied-alpha? ; inline