From fd4c6b73bb0401e3c3138de890569865b1220952 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 8 Oct 2009 20:33:15 -0500 Subject: [PATCH] ushort pngs are byte-reversed from how i'm reading them -- fixed. --- basis/images/png/png.factor | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/basis/images/png/png.factor b/basis/images/png/png.factor index 254ec40f51..c41a1956cd 100755 --- a/basis/images/png/png.factor +++ b/basis/images/png/png.factor @@ -3,7 +3,7 @@ USING: accessors arrays checksums checksums.crc32 combinators compression.inflate fry grouping images images.loader io io.binary io.encodings.ascii io.encodings.string kernel locals -math math.bitwise math.ranges sequences sorting ; +math math.bitwise math.ranges sequences sorting assocs ; QUALIFIED-WITH: bitstreams bs IN: images.png @@ -183,11 +183,11 @@ ERROR: unknown-component-type n ; } case ; : scale-greyscale ( byte-array loading-png -- byte-array' ) - bit-depth>> dup 8 >= [ - drop - ] [ - scale-factor '[ _ * ] B{ } map-as - ] if ; + bit-depth>> { + { 8 [ ] } + { 16 [ 2 group [ swap ] assoc-map B{ } concat-as ] } + [ scale-factor '[ _ * ] B{ } map-as ] + } case ; : decode-greyscale ( loading-png -- byte-array ) [ raw-bytes ] keep scale-greyscale ; @@ -213,6 +213,11 @@ ERROR: invalid-color-type/bit-depth loading-png ; : validate-truecolor-alpha ( loading-png -- loading-png ) { 8 16 } validate-bit-depth ; +: decode-greyscale-alpha ( loading-image -- byte-array' ) + [ raw-bytes ] [ bit-depth>> ] bi 16 = [ + 3 group [ first3 swapd 3array ] map B{ } concat-as + ] when ; + : loading-png>bitmap ( loading-png -- bytes component-order ) dup color-type>> { { greyscale [ @@ -225,7 +230,7 @@ ERROR: invalid-color-type/bit-depth loading-png ; validate-indexed-color unimplemented-color-type ] } { greyscale-alpha [ - validate-greyscale-alpha raw-bytes LA + validate-greyscale-alpha decode-greyscale-alpha LA ] } { truecolor-alpha [ validate-truecolor-alpha raw-bytes RGBA