diff 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
line wrap: on
line diff
--- a/postproc/rgb2rgb.c	Sun Nov 04 18:06:31 2001 +0000
+++ b/postproc/rgb2rgb.c	Sun Nov 04 19:36:24 2001 +0000
@@ -1,4 +1,4 @@
-/* 
+/*
  *
  *  rgb2rgb.c, Software RGB to RGB convertor
  *  Written by Nick Kurshev.
@@ -170,3 +170,60 @@
    }
 #endif
 }
+
+/**
+ * Pallete is assumed to contain bgr32
+ */
+void palette8torgb32(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette)
+{
+	int i;
+	for(i=0; i<src_size; i++)
+		((uint32_t *)dst)[i] = ((uint32_t *)palette)[ src[i] ];
+}
+
+void rgb32to16(uint8_t *src, uint8_t *dst, int src_size)
+{
+	int i;
+	for(i=0; i<src_size; i+=4)
+	{
+		const int b= src[i+0];
+		const int g= src[i+1];
+		const int r= src[i+2];
+
+		((uint16_t *)dst)[i]= (b>>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8);
+	}
+}
+
+void rgb32to15(uint8_t *src, uint8_t *dst, int src_size)
+{
+	int i;
+	for(i=0; i<src_size; i+=4)
+	{
+		const int b= src[i+0];
+		const int g= src[i+1];
+		const int r= src[i+2];
+
+		((uint16_t *)dst)[i]= (b>>3) | ((g&0xF8)<<3) | ((r&0xF8)<<7);
+	}
+}
+
+
+/**
+ * Palette is assumed to contain bgr16, see rgb32to16 to convert the palette
+ */
+void palette8torgb16(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette)
+{
+	int i;
+	for(i=0; i<src_size; i++)
+		((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];
+}
+
+/**
+ * Pallete is assumed to contain bgr15, see rgb32to15 to convert the palette
+ */
+void palette8torgb15(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette)
+{
+	int i;
+	for(i=0; i<src_size; i++)
+		((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ];
+}
\ No newline at end of file