[babl] two-table: add RGBA float to R'G'B'A u8



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]