@@ -705,7 +705,7 @@ ImagingUnpackBGR15(UINT8 *out, const UINT8 *in, int pixels) {
705705void
706706ImagingUnpackBGRA15 (UINT8 * out , const UINT8 * in , int pixels ) {
707707 int i , pixel ;
708- /* RGB, reversed bytes , 5/5/5/1 bits per pixel */
708+ /* RGB, rearranged channels , 5/5/5/1 bits per pixel */
709709 for (i = 0 ; i < pixels ; i ++ ) {
710710 pixel = in [0 ] + (in [1 ] << 8 );
711711 out [B ] = (pixel & 31 ) * 255 / 31 ;
@@ -1056,7 +1056,7 @@ unpackABGR(UINT8 *_out, const UINT8 *in, int pixels) {
10561056static void
10571057unpackBGRA (UINT8 * _out , const UINT8 * in , int pixels ) {
10581058 int i ;
1059- /* RGBA, reversed bytes */
1059+ /* RGBA, rearranged channels */
10601060 for (i = 0 ; i < pixels ; i ++ ) {
10611061 UINT32 iv = MAKE_UINT32 (in [2 ], in [1 ], in [0 ], in [3 ]);
10621062 memcpy (_out , & iv , sizeof (iv ));
@@ -1065,6 +1065,30 @@ unpackBGRA(UINT8 *_out, const UINT8 *in, int pixels) {
10651065 }
10661066}
10671067
1068+ static void
1069+ unpackBGRA16L (UINT8 * _out , const UINT8 * in , int pixels ) {
1070+ int i ;
1071+ /* 16-bit RGBA, little-endian order, rearranged channels */
1072+ for (i = 0 ; i < pixels ; i ++ ) {
1073+ UINT32 iv = MAKE_UINT32 (in [5 ], in [3 ], in [1 ], in [7 ]);
1074+ memcpy (_out , & iv , sizeof (iv ));
1075+ in += 8 ;
1076+ _out += 4 ;
1077+ }
1078+ }
1079+
1080+ static void
1081+ unpackBGRA16B (UINT8 * _out , const UINT8 * in , int pixels ) {
1082+ int i ;
1083+ /* 16-bit RGBA, big-endian order, rearranged channels */
1084+ for (i = 0 ; i < pixels ; i ++ ) {
1085+ UINT32 iv = MAKE_UINT32 (in [4 ], in [2 ], in [0 ], in [6 ]);
1086+ memcpy (_out , & iv , sizeof (iv ));
1087+ in += 8 ;
1088+ _out += 4 ;
1089+ }
1090+ }
1091+
10681092/* Unpack to "CMYK" image */
10691093
10701094static void
@@ -1574,6 +1598,8 @@ static struct {
15741598 {"RGBA" , "RGBA;16L" , 64 , unpackRGBA16L },
15751599 {"RGBA" , "RGBA;16B" , 64 , unpackRGBA16B },
15761600 {"RGBA" , "BGRA" , 32 , unpackBGRA },
1601+ {"RGBA" , "BGRA;16L" , 64 , unpackBGRA16L },
1602+ {"RGBA" , "BGRA;16B" , 64 , unpackBGRA16B },
15771603 {"RGBA" , "ARGB" , 32 , unpackARGB },
15781604 {"RGBA" , "ABGR" , 32 , unpackABGR },
15791605 {"RGBA" , "YCCA;P" , 32 , ImagingUnpackYCCA },
0 commit comments