]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/images/images.factor
basis: use lint.vocabs tool to trim using lists
[factor.git] / basis / images / images.factor
index 2d90faf9ada1b754258594d16de28e3e6229c6f1..4c392b84d1415ff3b8e270f9e030f153627b0bee 100644 (file)
@@ -1,6 +1,6 @@
 ! Copyright (C) 2009 Doug Coleman, Daniel Ehrenberg.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: combinators kernel locals accessors sequences math arrays ;
+USING: accessors combinators kernel math sequences ;
 IN: images
 
 SINGLETONS:
@@ -18,7 +18,7 @@ SINGLETONS:
     u-9-9-9-e5-components
     float-11-11-10-components ;
 
-UNION: component-order 
+UNION: component-order
     A L LA BGR RGB BGRA RGBA ABGR ARGB RGBX XRGB BGRX XBGR
     INTENSITY DEPTH DEPTH-STENCIL R RG ;
 
@@ -41,8 +41,8 @@ UNION: unnormalized-integer-components
     int-integer-components uint-integer-components ;
 
 UNION: signed-unnormalized-integer-components
-    byte-integer-components 
-    short-integer-components 
+    byte-integer-components
+    short-integer-components
     int-integer-components ;
 
 UNION: unsigned-unnormalized-integer-components
@@ -131,10 +131,13 @@ TUPLE: image
 
 : bytes-per-pixel ( image -- n )
     [ component-order>> ] [ component-type>> ] bi (bytes-per-pixel) ;
-    
+
 : bytes-per-image ( image -- n )
     [ dim>> product ] [ bytes-per-pixel ] bi * ;
 
+: rowstride ( image -- n )
+    [ dim>> first ] [ bytes-per-pixel ] bi * ;
+
 <PRIVATE
 
 :: pixel@ ( x y w image -- start end bitmap )
@@ -165,3 +168,12 @@ PRIVATE>
 : set-pixel-at ( pixel x y image -- )
     [ 1 ] dip set-pixel-row-at ; inline
 
+:: each-pixel ( ... image quot: ( ... x y pixel -- ... ) -- ... )
+    image dim>> first2 :> ( width height )
+    image bytes-per-pixel :> n
+    height width [ <iota> ] bi@ [| y x |
+        y width * x + :> start
+        start n * :> from
+        from n + :> to
+        x y from to image bitmap>> <slice> quot call
+    ] cartesian-each ; inline