images: move rowstride to the images vocab because it will be used by

gdi too
db4
Björn Lindqvist 2014-10-07 17:33:30 +02:00 committed by John Benediktsson
parent 56217afcbb
commit c10c5f5736
4 changed files with 35 additions and 28 deletions

View File

@ -0,0 +1,6 @@
USING: help.markup help.syntax math ;
IN: images
HELP: rowstride
{ $values { "image" image } { "n" integer } }
{ $description "Returns an images rowstride metric." } ;

View File

@ -27,3 +27,8 @@ IN: images.tests
0 0 0 0
0 0 0 0
} } [ set-pixel-at ] keep bitmap>> ] unit-test
{ 40 30 } [
T{ image f { 10 3 } RGBA ubyte-components f f } rowstride
T{ image f { 10 3 } RGB ubyte-components f f } rowstride
] unit-test

View File

@ -135,6 +135,9 @@ TUPLE: image
: 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 )
@ -164,4 +167,3 @@ PRIVATE>
: set-pixel-at ( pixel x y image -- )
[ 1 ] dip set-pixel-row-at ; inline

View File

@ -60,18 +60,12 @@ CONSTANT: bits>components {
f >>premultiplied-alpha?
f >>upside-down? ;
: bits-per-sample ( image -- bits )
component-type>> bits>components value-at ;
: rowstride ( image -- rowstride )
[ dim>> first ] [ bits-per-sample 8 / ] [ has-alpha? 4 3 ? ] tri * * ;
: image>GdkPixbuf ( image -- GdkPixbuf )
{
[ bitmap>> ]
[ drop GDK_COLORSPACE_RGB ]
[ has-alpha? ]
[ bits-per-sample ]
[ bytes-per-component 8 * ]
[ dim>> first2 ]
[ rowstride ]
} cleave f f gdk_pixbuf_new_from_data ;