From f31c3f867a9a5966234d557d5a647c50d44076ec Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Tue, 2 Jun 2009 23:29:04 -0500 Subject: [PATCH] support run-length encoding in bitmaps --- basis/compression/run-length/run-length.factor | 7 +++++++ basis/images/bitmap/bitmap.factor | 9 +++++---- 2 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 basis/compression/run-length/run-length.factor diff --git a/basis/compression/run-length/run-length.factor b/basis/compression/run-length/run-length.factor new file mode 100644 index 0000000000..d281b0718a --- /dev/null +++ b/basis/compression/run-length/run-length.factor @@ -0,0 +1,7 @@ +! Copyright (C) 2009 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: arrays grouping sequences ; +IN: compression.run-length + +: run-length-uncompress8 ( byte-array -- byte-array' ) + 2 group [ first2 ] map concat ; diff --git a/basis/images/bitmap/bitmap.factor b/basis/images/bitmap/bitmap.factor index 998cf54075..8bf8d59944 100755 --- a/basis/images/bitmap/bitmap.factor +++ b/basis/images/bitmap/bitmap.factor @@ -1,9 +1,10 @@ ! Copyright (C) 2007, 2009 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien alien.c-types arrays byte-arrays columns -combinators fry grouping io io.binary io.encodings.binary io.files -kernel macros math math.bitwise math.functions namespaces sequences -strings images endian summary locals images.loader ; +combinators compression.run-length endian fry grouping images +images.loader io io.binary io.encodings.binary io.files kernel +locals macros math math.bitwise math.functions namespaces +sequences strings summary ; IN: images.bitmap : assert-sequence= ( a b -- ) @@ -54,7 +55,7 @@ ERROR: unsupported-bitmap-compression compression ; : uncompress-bitmap ( loading-bitmap -- loading-bitmap' ) dup compression>> { { 0 [ ] } - { 1 [ "run-length encoding 8" unsupported-bitmap-compression ] } + { 1 [ [ run-length-uncompress8 ] change-color-index ] } { 2 [ "run-length encoding 4" unsupported-bitmap-compression ] } { 3 [ "bitfields" unsupported-bitmap-compression ] } { 4 [ "jpeg" unsupported-bitmap-compression ] }