From 4fbdcc72aa13e21d884fec73d15144fdb6d9ded6 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 28 Sep 2009 15:59:32 -0500 Subject: [PATCH] fix jpeg loading --- basis/images/jpeg/jpeg.factor | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/basis/images/jpeg/jpeg.factor b/basis/images/jpeg/jpeg.factor index f0280e46de..6e45dd1ce8 100644 --- a/basis/images/jpeg/jpeg.factor +++ b/basis/images/jpeg/jpeg.factor @@ -11,7 +11,9 @@ IN: images.jpeg QUALIFIED-WITH: bitstreams bs -TUPLE: jpeg-image < image +SINGLETON: jpeg-image + +TUPLE: loading-jpeg < image { headers } { bitstream } { color-info initial: { f f f f } } @@ -24,8 +26,8 @@ TUPLE: jpeg-image < image ( headers bitstream -- image ) - jpeg-image new swap >>bitstream swap >>headers ; +: ( headers bitstream -- image ) + loading-jpeg new swap >>bitstream swap >>headers ; SINGLETONS: SOF DHT DAC RST SOI EOI SOS DQT DNL DRI DHP EXP APP JPG COM TEM RES ; @@ -357,15 +359,20 @@ SINGLETONS: YUV420 YUV444 Y MAGIC! ; ERROR: not-a-jpeg-image ; -PRIVATE> - -M: jpeg-image stream>image ( stream jpeg-image -- bitmap ) - drop [ - parse-marker { SOI } = [ not-a-jpeg-image ] unless - parse-headers - contents - ] with-input-stream +: loading-jpeg>image ( loading-jpeg -- image ) dup jpeg-image [ baseline-parse baseline-decompress ] with-variable ; + +: load-jpeg ( stream -- loading-jpeg ) + [ + parse-marker { SOI } = [ not-a-jpeg-image ] unless + parse-headers + unlimited-input contents + ] with-input-stream ; + +PRIVATE> + +M: jpeg-image stream>image ( stream jpeg-image -- bitmap ) + drop load-jpeg loading-jpeg>image ;