some misc categorizations and factorings for image component formats

db4
Joe Groff 2009-07-01 13:52:26 -05:00
parent 911acd6a4a
commit 9ddecb5e03
1 changed files with 18 additions and 6 deletions

View File

@ -23,7 +23,7 @@ UNION: component-order
INTENSITY DEPTH DEPTH-STENCIL R RG ; INTENSITY DEPTH DEPTH-STENCIL R RG ;
UNION: component-type UNION: component-type
ubyte-components ushort-components ubyte-components ushort-components uint-components
half-components float-components half-components float-components
byte-integer-components ubyte-integer-components byte-integer-components ubyte-integer-components
short-integer-components ushort-integer-components short-integer-components ushort-integer-components
@ -40,6 +40,16 @@ UNION: unnormalized-integer-components
short-integer-components ushort-integer-components short-integer-components ushort-integer-components
int-integer-components uint-integer-components ; int-integer-components uint-integer-components ;
UNION: signed-unnormalized-integer-components
byte-integer-components
short-integer-components
int-integer-components ;
UNION: unsigned-unnormalized-integer-components
ubyte-integer-components
ushort-integer-components
uint-integer-components ;
UNION: packed-components UNION: packed-components
u-5-5-5-1-components u-5-6-5-components u-5-5-5-1-components u-5-6-5-components
u-10-10-10-2-components u-10-10-10-2-components
@ -109,13 +119,15 @@ GENERIC: load-image* ( path class -- image )
{ RG [ 2 ] } { RG [ 2 ] }
} case ; } case ;
: bytes-per-pixel ( image -- n ) : (bytes-per-pixel) ( component-order component-type -- n )
dup component-type>> packed-components? dup packed-components?
[ component-type>> bytes-per-packed-pixel ] [ [ nip bytes-per-packed-pixel ] [
[ component-order>> component-count ] [ component-count ] [ bytes-per-component ] bi* *
[ component-type>> bytes-per-component ] bi *
] if ; ] if ;
: bytes-per-pixel ( image -- n )
[ component-order>> ] [ component-type>> ] bi (bytes-per-pixel) ;
<PRIVATE <PRIVATE
: pixel@ ( x y image -- start end bitmap ) : pixel@ ( x y image -- start end bitmap )