[babl/sse-conversions-2013: 2/8] Get rid of duplicate rgba<->rgbA conversions



commit 7147d13ef73a31015a790cd00b2264fce988827e
Author: Daniel Sabo <DanielSabo gmail com>
Date:   Fri Mar 29 20:29:35 2013 -0700

    Get rid of duplicate rgba<->rgbA conversions
    
    gegl-fixup already has correct conversions for linear, the same
    code can be applied to gamma.

 extensions/gegl-fixups.c |   24 ++++++++++++++++++++++++
 extensions/simple.c      |   28 ----------------------------
 2 files changed, 24 insertions(+), 28 deletions(-)
---
diff --git a/extensions/gegl-fixups.c b/extensions/gegl-fixups.c
index 5a1b972..7645993 100644
--- a/extensions/gegl-fixups.c
+++ b/extensions/gegl-fixups.c
@@ -465,6 +465,8 @@ conv_rgbAF_lrgba8 (unsigned char *srcc,
 }
 
 #define conv_rgb8_rgbAF    conv_rgb8_rgbaF
+#define conv_gamma_rgbaF_gamma_rgbAF   conv_rgbaF_rgbAF
+#define conv_gamma_rgbAF_gamma_rgbaF   conv_rgbAF_rgbaF
 
 int init (void);
 
@@ -487,6 +489,24 @@ init (void)
     babl_component ("Ba"),
     babl_component ("A"),
     NULL);
+    
+    
+  const Babl *gamma_rgbaF = babl_format_new (
+    babl_model ("R'G'B'A"),
+    babl_type ("float"),
+    babl_component ("R'"),
+    babl_component ("G'"),
+    babl_component ("B'"),
+    babl_component ("A"),
+    NULL);
+  const Babl *gamma_rgbAF = babl_format_new (
+    babl_model ("R'aG'aB'aA"),
+    babl_type ("float"),
+    babl_component ("R'a"),
+    babl_component ("G'a"),
+    babl_component ("B'a"),
+    babl_component ("A"),
+    NULL);
 
   const Babl *lrgba8 = babl_format_new (
     babl_model ("RGBA"),
@@ -529,6 +549,10 @@ init (void)
 
   o (rgbaF, rgbAF);
   o (rgbAF, rgbaF);
+  
+  o (gamma_rgbaF, gamma_rgbAF);
+  o (gamma_rgbAF, gamma_rgbaF);
+  
   o (rgbAF, lrgba8);
   o (rgb8, rgbaF);
   o (rgb8, rgbAF);
diff --git a/extensions/simple.c b/extensions/simple.c
index 4d606ea..bde7785 100644
--- a/extensions/simple.c
+++ b/extensions/simple.c
@@ -113,37 +113,9 @@ float_pre_to_u16_pre (unsigned char *src_char, unsigned char *dst_char, long sam
   return samples;
 }
 
-static inline long
-float_pre_to_float (unsigned char *src_char, unsigned char *dst_char, long samples)
-{
-  float *src = (float *)src_char;
-  float *dst = (float *)dst_char;
-  long n = samples;
-  while (n--)
-    {
-      const float a_term = 1.0f / src[3];
-      dst[0] = src[0] * a_term;
-      dst[1] = src[1] * a_term;
-      dst[2] = src[2] * a_term;
-      dst[3] = src[3];
-      
-      dst += 4;
-      src += 4;
-
-    }
-  return samples;
-}
-
 int
 init (void)
 {
-  /* float and float */
-  babl_conversion_new (babl_format ("R'aG'aB'aA float"),
-                       babl_format ("R'G'B'A float"),
-                      "linear", 
-                       float_pre_to_float,
-                       NULL);
-
   /* float and u8 */
   babl_conversion_new (babl_format ("R'G'B'A float"),
                        babl_format ("R'G'B'A u8"),


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]