From 1fb7cf37c4822be719ba11a03b610817e9e4bc52 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Mon, 28 Sep 2009 14:50:36 -0500 Subject: [PATCH] make a png-image type instead of having a singleton class --- basis/images/png/png.factor | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/basis/images/png/png.factor b/basis/images/png/png.factor index 5746a9098b..3dfbaefbd7 100755 --- a/basis/images/png/png.factor +++ b/basis/images/png/png.factor @@ -6,7 +6,7 @@ io.binary io.encodings.ascii io.encodings.string kernel locals math math.bitwise math.ranges sequences sorting ; IN: images.png -SINGLETON: png-image +TUPLE: png-image < image ; "png" png-image register-image-class TUPLE: loading-png @@ -123,17 +123,22 @@ ERROR: unimplemented-color-type image ; ] map B{ } concat-as ; : png-image-bytes ( loading-png -- byte-array ) - [ png-bytes-per-pixel ] [ inflate-data ] [ png-group-width ] tri group reverse-png-filter ; + [ png-bytes-per-pixel ] + [ inflate-data ] + [ png-group-width ] tri group reverse-png-filter ; + +: loading-png>image ( loading-png -- image ) + [ png-image new ] dip { + [ png-image-bytes >>bitmap ] + [ [ width>> ] [ height>> ] bi 2array >>dim ] + [ drop ubyte-components >>component-type ] + } cleave ; : decode-greyscale ( loading-png -- image ) unimplemented-color-type ; : decode-truecolor ( loading-png -- image ) - [ ] dip { - [ png-image-bytes >>bitmap ] - [ [ width>> ] [ height>> ] bi 2array >>dim ] - [ drop RGB >>component-order ubyte-components >>component-type ] - } cleave ; + loading-png>image RGB >>component-order ; : decode-indexed-color ( loading-png -- image ) unimplemented-color-type ; @@ -142,11 +147,7 @@ ERROR: unimplemented-color-type image ; unimplemented-color-type ; : decode-truecolor-alpha ( loading-png -- image ) - [ ] dip { - [ png-image-bytes >>bitmap ] - [ [ width>> ] [ height>> ] bi 2array >>dim ] - [ drop RGBA >>component-order ubyte-components >>component-type ] - } cleave ; + loading-png>image RGBA >>component-order ; ERROR: invalid-color-type/bit-depth loading-png ;