: register-image-class ( extension class -- )
swap types get set-at ;
+: ?register-image-class ( extension class -- )
+ over types get key? [ 2drop ] [ register-image-class ] if ;
+
: load-image ( path -- image )
[ binary <file-reader> ] [ image-class ] bi load-image* ;
! http://www.digicamsoft.com/bmp/bmp.html
SINGLETON: bmp-image
-"bmp" bmp-image register-image-class
+"bmp" bmp-image ?register-image-class
: write2 ( n -- ) 2 >le write ;
: write4 ( n -- ) 4 >le write ;
IN: images.gif
SINGLETON: gif-image
-"gif" gif-image register-image-class
+"gif" gif-image ?register-image-class
TUPLE: loading-gif
loading?
IN: images.pbm
SINGLETON: pbm-image
-"pbm" pbm-image register-image-class
+"pbm" pbm-image ?register-image-class
<PRIVATE
: read-token ( -- token )
IN: images.pgm
SINGLETON: pgm-image
-"pgm" pgm-image register-image-class
+"pgm" pgm-image ?register-image-class
: read-token ( -- token )
[ read1 dup blank?
IN: images.png
SINGLETON: png-image
-"png" png-image register-image-class
+"png" png-image ?register-image-class
TUPLE: loading-png
chunks
IN: images.ppm
SINGLETON: ppm-image
-"ppm" ppm-image register-image-class
+"ppm" ppm-image ?register-image-class
: read-token ( -- token )
[ read1 dup blank?
IN: images.tga
SINGLETON: tga-image
-"tga" tga-image register-image-class
+"tga" tga-image ?register-image-class
ERROR: bad-tga-header ;
ERROR: bad-tga-footer ;
M: tiff-image stream>image* ( stream tiff-image -- image )
drop [ [ load-tiff tiff>image ] throw-on-eof ] with-input-stream ;
-{ "tif" "tiff" } [ tiff-image register-image-class ] each
+{ "tif" "tiff" } [ tiff-image ?register-image-class ] each
{ huff-tables initial: { f f f f } }
{ components } ;
-"jpg" jpeg-image register-image-class
-"jpeg" jpeg-image register-image-class
+{ "jpg" "jpeg" } [ jpeg-image ?register-image-class ] each
<PRIVATE