[babl] two-table: add RGBA float to R'G'B'A u8
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [babl] two-table: add RGBA float to R'G'B'A u8
- Date: Sun, 20 Nov 2016 09:36:46 +0000 (UTC)
commit 16063f12395cab7d2f1b5b33000c5aa4b8c321ae
Author: Øyvind Kolås <pippin gimp org>
Date: Sat Nov 19 20:08:28 2016 +0100
two-table: add RGBA float to R'G'B'A u8
extensions/two-table.c | 37 +++++++++++++++++++++++++++++++++++++
1 files changed, 37 insertions(+), 0 deletions(-)
---
diff --git a/extensions/two-table.c b/extensions/two-table.c
index 5c67ad6..6be18ca 100644
--- a/extensions/two-table.c
+++ b/extensions/two-table.c
@@ -116,6 +116,37 @@ conv_rgbafloat_linear_rgbu8_gamma (unsigned char *src_char,
return samples;
}
+
+static long
+conv_rgbafloat_linear_rgbau8_gamma (unsigned char *src_char,
+ unsigned char *dst,
+ long samples)
+{
+ long n = samples;
+ float *src = (float*)src_char;
+
+ while (n--)
+ {
+ if (src[3] <=0)
+ {
+ dst[0] = 0;
+ dst[1] = 0;
+ dst[2] = 0;
+ dst[3] = 0;
+ }
+ else
+ {
+ dst[0] = conv_float_u8_two_table_map (src[0]);
+ dst[1] = conv_float_u8_two_table_map (src[1]);
+ dst[2] = conv_float_u8_two_table_map (src[2]);
+ dst[3] = src[3] * 0xff + 0.5;
+ }
+ src += 4;
+ dst += 4;
+ }
+ return samples;
+}
+
static long
conv_rgbfloat_linear_rgbu8_gamma (unsigned char *src_char,
unsigned char *dst,
@@ -211,6 +242,12 @@ init (void)
conv_rgbafloat_linear_rgbu8_gamma,
NULL);
+ babl_conversion_new (babl_format ("RGBA float"),
+ babl_format ("R'G'B'A u8"),
+ "linear",
+ conv_rgbafloat_linear_rgbau8_gamma,
+ NULL);
+
babl_conversion_new (babl_format ("RGB float"),
babl_format ("R'G'B' u8"),
"linear",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]