changeset 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 1a8e5e017b1d
children af8b2c0e4dad
files postproc/rgb2rgb.c postproc/rgb2rgb.h postproc/rgb2rgb_template.c
diffstat 3 files changed, 124 insertions(+), 3 deletions(-) [+]
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
--- a/postproc/rgb2rgb.h	Sun Nov 04 18:06:31 2001 +0000
+++ b/postproc/rgb2rgb.h	Sun Nov 04 19:36:24 2001 +0000
@@ -1,4 +1,4 @@
-/* 
+/*
  *
  *  rgb2rgb.h, Software RGB to RGB convertor
  *
@@ -11,4 +11,11 @@
 extern void rgb32to24(const uint8_t *src,uint8_t *dst,uint32_t src_size);
 extern void rgb15to16(const uint8_t *src,uint8_t *dst,uint32_t src_size);
 
+void rgb32to16(uint8_t *src, uint8_t *dst, int src_size);
+void rgb32to15(uint8_t *src, uint8_t *dst, int src_size);
+void palette8torgb32(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette);
+void palette8torgb16(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette);
+void palette8torgb15(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette);
+
+
 #endif
--- a/postproc/rgb2rgb_template.c	Sun Nov 04 18:06:31 2001 +0000
+++ b/postproc/rgb2rgb_template.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