comparison postproc/rgb2rgb.c @ 2694:2924350d92ed

bgr32to16, bgr32to15 (needed for palette stuff) paletteto 32,16,15bgr all in c, will be optimized as soon as they are tested (assuming opt. is possible)
author michael
date Sun, 04 Nov 2001 19:36:24 +0000
parents 794dec2fae64
children 1eaf3f89e49f
comparison
equal deleted inserted replaced
2693:1a8e5e017b1d 2694:2924350d92ed
1 /* 1 /*
2 * 2 *
3 * rgb2rgb.c, Software RGB to RGB convertor 3 * rgb2rgb.c, Software RGB to RGB convertor
4 * Written by Nick Kurshev. 4 * Written by Nick Kurshev.
5 */ 5 */
6 #include <inttypes.h> 6 #include <inttypes.h>
168 00000000000001 1111=0x001F */ 168 00000000000001 1111=0x001F */
169 *( d1++ )=( x&0x001F )|( ( x&0x7FE0 )<<1 ); 169 *( d1++ )=( x&0x001F )|( ( x&0x7FE0 )<<1 );
170 } 170 }
171 #endif 171 #endif
172 } 172 }
173
174 /**
175 * Pallete is assumed to contain bgr32
176 */
177 void palette8torgb32(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette)
178 {
179 int i;
180 for(i=0; i<src_size; i++)
181 ((uint32_t *)dst)[i] = ((uint32_t *)palette)[ src[i] ];
182 }
183
184 void rgb32to16(uint8_t *src, uint8_t *dst, int src_size)
185 {
186 int i;
187 for(i=0; i<src_size; i+=4)
188 {
189 const int b= src[i+0];
190 const int g= src[i+1];
191 const int r= src[i+2];
192
193 ((uint16_t *)dst)[i]= (b>>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8);
194 }
195 }
196
197 void rgb32to15(uint8_t *src, uint8_t *dst, int src_size)
198 {
199 int i;
200 for(i=0; i<src_size; i+=4)
201 {
202 const int b= src[i+0];
203 const int g= src[i+1];
204 const int r= src[i+2];
205
206 ((uint16_t *)dst)[i]= (b>>3) | ((g&0xF8)<<3) | ((r&0xF8)<<7);
207 }
208 }
209
210
211 /**
212 * Palette is assumed to contain bgr16, see rgb32to16 to convert the palette
213 */
214 void palette8torgb16(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette)
215 {
216 int i;
217 for(i=0; i<src_size; i++)
218 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];
219 }
220
221 /**
222 * Pallete is assumed to contain bgr15, see rgb32to15 to convert the palette
223 */
224 void palette8torgb15(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette)
225 {
226 int i;
227 for(i=0; i<src_size; i++)
228 ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];
229 }