Fix normalization to take stride/padding bytes into account
parent
64b248c5d5
commit
155ede5ad7
|
@ -7,72 +7,87 @@ IN: images.normalization.tests
|
||||||
! 1>x
|
! 1>x
|
||||||
|
|
||||||
[ B{ 255 255 } ]
|
[ B{ 255 255 } ]
|
||||||
[ B{ 0 1 } A L permute ] unit-test
|
[ B{ 0 1 } 2 2 A L permute ] unit-test
|
||||||
|
|
||||||
[ B{ 255 255 255 255 } ]
|
[ B{ 255 255 255 255 } ]
|
||||||
[ B{ 0 1 } A RG permute ] unit-test
|
[ B{ 0 1 } 2 2 A RG permute ] unit-test
|
||||||
|
|
||||||
[ B{ 255 255 255 255 255 255 } ]
|
[ B{ 255 255 255 255 255 255 } ]
|
||||||
[ B{ 0 1 } A BGR permute ] unit-test
|
[ B{ 0 1 } 2 2 A BGR permute ] unit-test
|
||||||
|
|
||||||
[ B{ 0 255 255 255 1 255 255 255 } ]
|
[ B{ 0 255 255 255 1 255 255 255 } ]
|
||||||
[ B{ 0 1 } A ABGR permute ] unit-test
|
[ B{ 0 1 } 2 2 A ABGR permute ] unit-test
|
||||||
|
|
||||||
|
! Difference stride
|
||||||
|
! The last byte is padding, so it should not end up in the image
|
||||||
|
|
||||||
|
[ B{ 255 255 } ]
|
||||||
|
[ B{ 0 1 0 } 2 3 A L permute ] unit-test
|
||||||
|
|
||||||
|
[ B{ 255 255 255 255 } ]
|
||||||
|
[ B{ 0 1 0 } 2 3 A RG permute ] unit-test
|
||||||
|
|
||||||
|
[ B{ 255 255 255 255 255 255 } ]
|
||||||
|
[ B{ 0 1 0 } 2 3 A BGR permute ] unit-test
|
||||||
|
|
||||||
|
[ B{ 0 255 255 255 1 255 255 255 } ]
|
||||||
|
[ B{ 0 1 0 } 2 3 A ABGR permute ] unit-test
|
||||||
|
|
||||||
! 2>x
|
! 2>x
|
||||||
|
|
||||||
[ B{ 0 2 } ]
|
[ B{ 0 2 } ]
|
||||||
[ B{ 0 1 2 3 } LA L permute ] unit-test
|
[ B{ 0 1 2 3 } 2 4 LA L permute ] unit-test
|
||||||
|
|
||||||
[ B{ 255 255 255 255 } ]
|
[ B{ 255 255 255 255 } ]
|
||||||
[ B{ 0 1 2 3 } LA RG permute ] unit-test
|
[ B{ 0 1 2 3 } 2 4 LA RG permute ] unit-test
|
||||||
|
|
||||||
[ B{ 255 255 255 255 255 255 } ]
|
[ B{ 255 255 255 255 255 255 } ]
|
||||||
[ B{ 0 1 2 3 } LA BGR permute ] unit-test
|
[ B{ 0 1 2 3 } 2 4 LA BGR permute ] unit-test
|
||||||
|
|
||||||
[ B{ 1 255 255 255 3 255 255 255 } ]
|
[ B{ 1 255 255 255 3 255 255 255 } ]
|
||||||
[ B{ 0 1 2 3 } LA ABGR permute ] unit-test
|
[ B{ 0 1 2 3 } 2 4 LA ABGR permute ] unit-test
|
||||||
|
|
||||||
! 3>x
|
! 3>x
|
||||||
|
|
||||||
[ B{ 255 255 } ]
|
[ B{ 255 255 } ]
|
||||||
[ B{ 0 1 2 3 4 5 } RGB L permute ] unit-test
|
[ B{ 0 1 2 3 4 5 } 2 6 RGB L permute ] unit-test
|
||||||
|
|
||||||
[ B{ 0 1 3 4 } ]
|
[ B{ 0 1 3 4 } ]
|
||||||
[ B{ 0 1 2 3 4 5 } RGB RG permute ] unit-test
|
[ B{ 0 1 2 3 4 5 } 2 6 RGB RG permute ] unit-test
|
||||||
|
|
||||||
[ B{ 2 1 0 5 4 3 } ]
|
[ B{ 2 1 0 5 4 3 } ]
|
||||||
[ B{ 0 1 2 3 4 5 } RGB BGR permute ] unit-test
|
[ B{ 0 1 2 3 4 5 } 2 6 RGB BGR permute ] unit-test
|
||||||
|
|
||||||
[ B{ 255 2 1 0 255 5 4 3 } ]
|
[ B{ 255 2 1 0 255 5 4 3 } ]
|
||||||
[ B{ 0 1 2 3 4 5 } RGB ABGR permute ] unit-test
|
[ B{ 0 1 2 3 4 5 } 2 6 RGB ABGR permute ] unit-test
|
||||||
|
|
||||||
! 4>x
|
! 4>x
|
||||||
|
|
||||||
[ B{ 255 255 } ]
|
[ B{ 255 255 } ]
|
||||||
[ B{ 0 1 2 3 4 5 6 7 } RGBA L permute ] unit-test
|
[ B{ 0 1 2 3 4 5 6 7 } 2 8 RGBA L permute ] unit-test
|
||||||
|
|
||||||
[ B{ 0 1 4 5 } ]
|
[ B{ 0 1 4 5 } ]
|
||||||
[ B{ 0 1 2 3 4 5 6 7 } RGBA RG permute ] unit-test
|
[ B{ 0 1 2 3 4 5 6 7 } 2 8 RGBA RG permute ] unit-test
|
||||||
|
|
||||||
[ B{ 2 1 0 6 5 4 } ]
|
[ B{ 2 1 0 6 5 4 } ]
|
||||||
[ B{ 0 1 2 3 4 5 6 7 } RGBA BGR permute ] unit-test
|
[ B{ 0 1 2 3 4 5 6 7 } 2 8 RGBA BGR permute ] unit-test
|
||||||
|
|
||||||
[ B{ 3 2 1 0 7 6 5 4 } ]
|
[ B{ 3 2 1 0 7 6 5 4 } ]
|
||||||
[ B{ 0 1 2 3 4 5 6 7 } RGBA ABGR permute ] unit-test
|
[ B{ 0 1 2 3 4 5 6 7 } 2 8 RGBA ABGR permute ] unit-test
|
||||||
|
|
||||||
! Edge cases
|
! Edge cases
|
||||||
|
|
||||||
[ B{ 0 4 } ]
|
[ B{ 0 4 } ]
|
||||||
[ B{ 0 1 2 3 4 5 6 7 } RGBA R permute ] unit-test
|
[ B{ 0 1 2 3 4 5 6 7 } 2 8 RGBA R permute ] unit-test
|
||||||
|
|
||||||
[ B{ 255 0 1 2 255 4 5 6 } ]
|
[ B{ 255 0 1 2 255 4 5 6 } ]
|
||||||
[ B{ 0 1 2 3 4 5 6 7 } RGBA XRGB permute ] unit-test
|
[ B{ 0 1 2 3 4 5 6 7 } 2 8 RGBA XRGB permute ] unit-test
|
||||||
|
|
||||||
[ B{ 1 2 3 255 5 6 7 255 } ]
|
[ B{ 1 2 3 255 5 6 7 255 } ]
|
||||||
[ B{ 0 1 2 3 4 5 6 7 } XRGB RGBA permute ] unit-test
|
[ B{ 0 1 2 3 4 5 6 7 } 2 8 XRGB RGBA permute ] unit-test
|
||||||
|
|
||||||
[ B{ 255 255 255 255 255 255 255 255 } ]
|
[ B{ 255 255 255 255 255 255 255 255 } ]
|
||||||
[ B{ 0 1 } L RGBA permute ] unit-test
|
[ B{ 0 1 } 2 2 L RGBA permute ] unit-test
|
||||||
|
|
||||||
! Invalid inputs
|
! Invalid inputs
|
||||||
|
|
||||||
|
|
|
@ -25,15 +25,21 @@ CONSTANT: fill-value 255
|
||||||
dup 4 >= [ drop fill-value ] [ _ nth ] if
|
dup 4 >= [ drop fill-value ] [ _ nth ] if
|
||||||
] B{ } map-as ;
|
] B{ } map-as ;
|
||||||
|
|
||||||
:: permute ( bytes src-order dst-order -- new-bytes )
|
:: permute ( bytes width stride src-order dst-order -- new-bytes )
|
||||||
src-order name>> :> src
|
src-order name>> :> src
|
||||||
dst-order name>> :> dst
|
dst-order name>> :> dst
|
||||||
bytes src length group
|
bytes stride group
|
||||||
[ pad4 src dst permutation shuffle dst length head ]
|
[
|
||||||
map concat ;
|
src length group width head
|
||||||
|
[ pad4 src dst permutation shuffle dst length head ] map concat
|
||||||
|
] map concat ;
|
||||||
|
|
||||||
|
: stride ( image -- n )
|
||||||
|
[ bitmap>> length ] [ dim>> second ] bi / ;
|
||||||
|
|
||||||
: (reorder-components) ( image src-order dest-order -- image )
|
: (reorder-components) ( image src-order dest-order -- image )
|
||||||
[ permute ] 2curry change-bitmap ;
|
[ [ ] [ dim>> first ] [ stride ] tri ] 2dip
|
||||||
|
'[ _ _ _ _ permute ] change-bitmap ;
|
||||||
|
|
||||||
GENERIC: normalize-component-type* ( image component-type -- image )
|
GENERIC: normalize-component-type* ( image component-type -- image )
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue