From 4e206f41813beeb9f1b056439219243ee355952f Mon Sep 17 00:00:00 2001 From: John Benediktsson <mrjbq7@gmail.com> Date: Fri, 14 Mar 2014 07:31:27 -0700 Subject: [PATCH] images.loader: optionally register "non-system" image classes. --- basis/images/loader/loader.factor | 3 +++ extra/images/bitmap/bitmap.factor | 2 +- extra/images/gif/gif.factor | 2 +- extra/images/pbm/pbm.factor | 2 +- extra/images/pgm/pgm.factor | 2 +- extra/images/png/png.factor | 2 +- extra/images/ppm/ppm.factor | 2 +- extra/images/tga/tga.factor | 2 +- extra/images/tiff/tiff.factor | 2 +- unmaintained/images/jpeg/jpeg.factor | 3 +-- 10 files changed, 12 insertions(+), 10 deletions(-) diff --git a/basis/images/loader/loader.factor b/basis/images/loader/loader.factor index a97315f884..a50391b1bd 100644 --- a/basis/images/loader/loader.factor +++ b/basis/images/loader/loader.factor @@ -32,6 +32,9 @@ GENERIC: stream>image* ( stream class -- image ) : 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* ; diff --git a/extra/images/bitmap/bitmap.factor b/extra/images/bitmap/bitmap.factor index 80a975d887..2ac2326e32 100644 --- a/extra/images/bitmap/bitmap.factor +++ b/extra/images/bitmap/bitmap.factor @@ -14,7 +14,7 @@ IN: images.bitmap ! 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 ; diff --git a/extra/images/gif/gif.factor b/extra/images/gif/gif.factor index 25776bffdd..cdfd9d1a5a 100644 --- a/extra/images/gif/gif.factor +++ b/extra/images/gif/gif.factor @@ -7,7 +7,7 @@ kernel make math math.bitwise namespaces sequences ; IN: images.gif SINGLETON: gif-image -"gif" gif-image register-image-class +"gif" gif-image ?register-image-class TUPLE: loading-gif loading? diff --git a/extra/images/pbm/pbm.factor b/extra/images/pbm/pbm.factor index efba26c7b2..ae1b258246 100644 --- a/extra/images/pbm/pbm.factor +++ b/extra/images/pbm/pbm.factor @@ -7,7 +7,7 @@ sequences io.streams.throwing ; IN: images.pbm SINGLETON: pbm-image -"pbm" pbm-image register-image-class +"pbm" pbm-image ?register-image-class <PRIVATE : read-token ( -- token ) diff --git a/extra/images/pgm/pgm.factor b/extra/images/pgm/pgm.factor index d8e1033c90..d7ea44c886 100644 --- a/extra/images/pgm/pgm.factor +++ b/extra/images/pgm/pgm.factor @@ -7,7 +7,7 @@ SPECIALIZED-ARRAY: ushort IN: images.pgm SINGLETON: pgm-image -"pgm" pgm-image register-image-class +"pgm" pgm-image ?register-image-class : read-token ( -- token ) [ read1 dup blank? diff --git a/extra/images/png/png.factor b/extra/images/png/png.factor index f39285ad38..ffd0a7a09d 100644 --- a/extra/images/png/png.factor +++ b/extra/images/png/png.factor @@ -11,7 +11,7 @@ QUALIFIED: math IN: images.png SINGLETON: png-image -"png" png-image register-image-class +"png" png-image ?register-image-class TUPLE: loading-png chunks diff --git a/extra/images/ppm/ppm.factor b/extra/images/ppm/ppm.factor index 326edc8f11..34d3a288b0 100755 --- a/extra/images/ppm/ppm.factor +++ b/extra/images/ppm/ppm.factor @@ -6,7 +6,7 @@ math.parser sequences io.streams.throwing ; IN: images.ppm SINGLETON: ppm-image -"ppm" ppm-image register-image-class +"ppm" ppm-image ?register-image-class : read-token ( -- token ) [ read1 dup blank? diff --git a/extra/images/tga/tga.factor b/extra/images/tga/tga.factor index 70ab3e1df9..debf66d0f3 100644 --- a/extra/images/tga/tga.factor +++ b/extra/images/tga/tga.factor @@ -7,7 +7,7 @@ ui.pixel-formats combinators continuations io.streams.throwing ; 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 ; diff --git a/extra/images/tiff/tiff.factor b/extra/images/tiff/tiff.factor index bdba422fd8..5abf233a2f 100755 --- a/extra/images/tiff/tiff.factor +++ b/extra/images/tiff/tiff.factor @@ -563,4 +563,4 @@ ERROR: unknown-component-order ifd ; 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 diff --git a/unmaintained/images/jpeg/jpeg.factor b/unmaintained/images/jpeg/jpeg.factor index d18412e0c1..4b530091ee 100644 --- a/unmaintained/images/jpeg/jpeg.factor +++ b/unmaintained/images/jpeg/jpeg.factor @@ -21,8 +21,7 @@ TUPLE: loading-jpeg < image { 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