]> gitweb.factorcode.org Git - factor.git/blob - basis/core-graphics/core-graphics.factor
Revert "Fixes #2966"
[factor.git] / basis / core-graphics / core-graphics.factor
1 ! Copyright (C) 2009 Slava Pestov.
2 ! See http://factorcode.org/license.txt for BSD license.
3
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 images images.memory kernel
9 libc math opengl.gl sequences ;
10
11 IN: core-graphics
12
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
21
22 CONSTANT: kCGBitmapAlphaInfoMask 0x1f
23 CONSTANT: kCGBitmapFloatComponents 256
24
25 CONSTANT: kCGBitmapByteOrderMask 0x7000
26 CONSTANT: kCGBitmapByteOrderDefault 0
27 CONSTANT: kCGBitmapByteOrder16Little 4096
28 CONSTANT: kCGBitmapByteOrder32Little 8192
29 CONSTANT: kCGBitmapByteOrder16Big 12288
30 CONSTANT: kCGBitmapByteOrder32Big 16384
31
32 : kCGBitmapByteOrder16Host ( -- n )
33     little-endian?
34     kCGBitmapByteOrder16Little
35     kCGBitmapByteOrder16Big ? ; foldable
36
37 : kCGBitmapByteOrder32Host ( -- n )
38     little-endian?
39     kCGBitmapByteOrder32Little
40     kCGBitmapByteOrder32Big ? ; foldable
41
42 FUNCTION: CGColorRef CGColorCreateGenericRGB (
43    CGFloat red,
44    CGFloat green,
45    CGFloat blue,
46    CGFloat alpha
47 )
48
49 : <CGColor> ( color -- CGColor )
50     >rgba-components CGColorCreateGenericRGB ;
51
52 M: color (>cf) <CGColor> ;
53
54 FUNCTION: CGColorSpaceRef CGColorSpaceCreateDeviceRGB ( )
55
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
64 )
65
66 FUNCTION: CGImageRef CGBitmapContextCreateImage (
67    CGContextRef c
68 )
69
70 FUNCTION: void CGColorSpaceRelease ( CGColorSpaceRef ref )
71
72 DESTRUCTOR: CGColorSpaceRelease
73
74 FUNCTION: void CGContextRelease ( CGContextRef ref )
75
76 DESTRUCTOR: CGContextRelease
77
78 FUNCTION: void CGContextSetRGBStrokeColor (
79    CGContextRef c,
80    CGFloat red,
81    CGFloat green,
82    CGFloat blue,
83    CGFloat alpha
84 )
85
86 FUNCTION: void CGContextSetRGBFillColor (
87    CGContextRef c,
88    CGFloat red,
89    CGFloat green,
90    CGFloat blue,
91    CGFloat alpha
92 )
93
94 FUNCTION: void CGContextSetTextPosition (
95    CGContextRef c,
96    CGFloat x,
97    CGFloat y
98 )
99
100 FUNCTION: void CGContextFillRect (
101    CGContextRef c,
102    CGRect rect
103 )
104
105 FUNCTION: void CGContextSetShouldSmoothFonts (
106    CGContextRef c,
107    bool shouldSmoothFonts
108 )
109
110 FUNCTION: void CGContextDrawImage (
111    CGContextRef c,
112    CGRect rect,
113    CGImageRef image
114 )
115
116 FUNCTION: size_t CGImageGetWidth (
117    CGImageRef image
118 )
119
120 FUNCTION: size_t CGImageGetHeight (
121    CGImageRef image
122 )
123
124 FUNCTION: CGImageDestinationRef CGImageDestinationCreateWithURL (
125    CFURLRef url,
126    CFStringRef type,
127    size_t count,
128    CFDictionaryRef options
129 )
130
131 FUNCTION: void CGImageDestinationAddImage (
132    CGImageDestinationRef idst,
133    CGImageRef image,
134    CFDictionaryRef properties
135 )
136
137 FUNCTION: bool CGImageDestinationFinalize (
138    CGImageDestinationRef idst
139 )
140
141 FUNCTION: void* CGBitmapContextGetData ( CGContextRef c )
142
143 CONSTANT: kCGLRendererGenericFloatID 0x00020400
144
145 FUNCTION: CGLError CGLSetParameter ( CGLContextObj ctx, CGLContextParameter pname, GLint* params )
146
147 FUNCTION: CGDirectDisplayID CGMainDisplayID ( )
148
149 FUNCTION: CGError CGDisplayHideCursor ( CGDirectDisplayID display )
150 FUNCTION: CGError CGDisplayShowCursor ( CGDirectDisplayID display )
151
152 FUNCTION: CGError CGDisplayMoveCursorToPoint ( CGDirectDisplayID display, CGPoint point )
153
154 FUNCTION: CGError CGAssociateMouseAndMouseCursorPosition ( boolean_t connected )
155
156 FUNCTION: CGError CGWarpMouseCursorPosition ( CGPoint newCursorPosition )
157
158 FUNCTION: uint GetCurrentButtonState ( )
159
160 <PRIVATE
161
162 : bitmap-flags ( -- n )
163     kCGImageAlphaPremultipliedFirst kCGBitmapByteOrder32Host bitor ;
164
165 : bitmap-color-space ( -- color-space )
166     CGColorSpaceCreateDeviceRGB &CGColorSpaceRelease ;
167
168 : <CGBitmapContext> ( data dim -- context )
169     [ first2 8 ] [ first 4 * ] bi
170     bitmap-color-space bitmap-flags CGBitmapContextCreate
171     [ "CGBitmapContextCreate failed" throw ] unless* ;
172
173 PRIVATE>
174
175 : dummy-context ( -- context )
176     \ dummy-context [
177         [ 4 malloc { 1 1 } <CGBitmapContext> ] with-destructors
178     ] initialize-alien ;
179
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