new vocab images.cocoa: load image objects using native cocoa api
parent
044a862c37
commit
05faf6919b
|
@ -43,7 +43,9 @@ SYNTAX: IMPORT: scan [ ] import-objc-class ;
|
||||||
"NSApplication"
|
"NSApplication"
|
||||||
"NSArray"
|
"NSArray"
|
||||||
"NSAutoreleasePool"
|
"NSAutoreleasePool"
|
||||||
|
"NSBitmapImageRep"
|
||||||
"NSBundle"
|
"NSBundle"
|
||||||
|
"NSColorSpace"
|
||||||
"NSData"
|
"NSData"
|
||||||
"NSDictionary"
|
"NSDictionary"
|
||||||
"NSError"
|
"NSError"
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
Joe Groff
|
|
@ -0,0 +1,64 @@
|
||||||
|
! (c)2010 Joe Groff bsd license
|
||||||
|
USING: accessors alien.data cocoa cocoa.classes cocoa.messages
|
||||||
|
combinators core-foundation.data core-graphics.types fry images
|
||||||
|
images.loader io kernel literals ;
|
||||||
|
IN: images.cocoa
|
||||||
|
|
||||||
|
SINGLETON: ns-image
|
||||||
|
! "png" ns-image register-image-class
|
||||||
|
! "tif" ns-image register-image-class
|
||||||
|
! "tiff" ns-image register-image-class
|
||||||
|
! "gif" ns-image register-image-class
|
||||||
|
! "jpg" ns-image register-image-class
|
||||||
|
! "jpeg" ns-image register-image-class
|
||||||
|
! "bmp" ns-image register-image-class
|
||||||
|
! "ico" ns-image register-image-class
|
||||||
|
|
||||||
|
CONSTANT: NSImageRepLoadStatusUnknownType -1
|
||||||
|
CONSTANT: NSImageRepLoadStatusReadingHeader -2
|
||||||
|
CONSTANT: NSImageRepLoadStatusWillNeedAllData -3
|
||||||
|
CONSTANT: NSImageRepLoadStatusInvalidData -4
|
||||||
|
CONSTANT: NSImageRepLoadStatusUnexpectedEOF -5
|
||||||
|
CONSTANT: NSImageRepLoadStatusCompleted -6
|
||||||
|
|
||||||
|
CONSTANT: NSColorRenderingIntentDefault 0
|
||||||
|
CONSTANT: NSColorRenderingIntentAbsoluteColorimetric 1
|
||||||
|
CONSTANT: NSColorRenderingIntentRelativeColorimetric 2
|
||||||
|
CONSTANT: NSColorRenderingIntentPerceptual 3
|
||||||
|
CONSTANT: NSColorRenderingIntentSaturation 4
|
||||||
|
|
||||||
|
ERROR: ns-image-unknown-type ;
|
||||||
|
ERROR: ns-image-invalid-data ;
|
||||||
|
ERROR: ns-image-unexpected-eof ;
|
||||||
|
ERROR: ns-image-planar-images-not-supported ;
|
||||||
|
|
||||||
|
<PRIVATE
|
||||||
|
|
||||||
|
: check-return ( n -- )
|
||||||
|
{
|
||||||
|
{ $ NSImageRepLoadStatusUnknownType [ ns-image-unknown-type ] }
|
||||||
|
{ $ NSImageRepLoadStatusInvalidData [ ns-image-invalid-data ] }
|
||||||
|
{ $ NSImageRepLoadStatusUnexpectedEOF [ ns-image-unexpected-eof ] }
|
||||||
|
[ drop ]
|
||||||
|
} case ;
|
||||||
|
|
||||||
|
PRIVATE>
|
||||||
|
|
||||||
|
: load-image-rep ( -- image-rep )
|
||||||
|
NSBitmapImageRep contents <CFData> -> autorelease -> imageRepWithData:
|
||||||
|
NSColorSpace -> genericRGBColorSpace
|
||||||
|
NSColorRenderingIntentDefault
|
||||||
|
-> bitmapImageRepByConvertingToColorSpace:renderingIntent: ;
|
||||||
|
|
||||||
|
: image-rep>image ( image-rep -- image )
|
||||||
|
image new swap {
|
||||||
|
[ -> size CGSize>dim >>dim ]
|
||||||
|
[ -> bitmapData ]
|
||||||
|
[ -> bytesPerPlane memory>byte-array >>bitmap ]
|
||||||
|
} cleave
|
||||||
|
RGBA >>component-order
|
||||||
|
ubyte-components >>component-type
|
||||||
|
f >>upside-down? ;
|
||||||
|
|
||||||
|
M: ns-image stream>image
|
||||||
|
drop [ load-image-rep ] with-input-stream image-rep>image ;
|
|
@ -0,0 +1 @@
|
||||||
|
macosx
|
|
@ -0,0 +1 @@
|
||||||
|
Image loading using MacOS X's native Cocoa APIs
|
Loading…
Reference in New Issue