[babl] extensions/cairo: implement rgb8 to cairo32, speeding up RGB linear half display



commit 4b699e935577d83c063eaa95ccf32563d586e7aa
Author: Øyvind Kolås <pippin gimp org>
Date:   Fri Dec 16 01:01:43 2016 +0100

    extensions/cairo: implement rgb8 to cairo32, speeding up RGB linear half display

 extensions/cairo.c |   22 ++++++++++++++++++++++
 1 files changed, 22 insertions(+), 0 deletions(-)
---
diff --git a/extensions/cairo.c b/extensions/cairo.c
index 2d807cb..457b938 100644
--- a/extensions/cairo.c
+++ b/extensions/cairo.c
@@ -125,6 +125,24 @@ conv_rgbA8_cairo32_le (unsigned char *src, unsigned char *dst, long samples)
   return samples;
 }
 
+static inline long
+conv_rgb8_cairo32_le (unsigned char *src, unsigned char *dst, long samples)
+{
+  long n = samples;
+  while (n--)
+    {
+      unsigned char red    = *src++;
+      unsigned char green  = *src++;
+      unsigned char blue   = *src++;
+
+      *dst++ = blue;
+      *dst++ = green;
+      *dst++ = red;
+      *dst++ = 0xff;
+    }
+  return samples;
+}
+
 
 
 
@@ -305,6 +323,10 @@ init (void)
       babl_conversion_new (babl_format ("R'G'B'A u8"), f32, "linear",
                            conv_rgbA8_cairo32_le, NULL);
 
+
+      babl_conversion_new (babl_format ("R'G'B' u8"), f32, "linear",
+                           conv_rgb8_cairo32_le, NULL);
+
       babl_conversion_new (babl_format ("Y'A u8"), f32, "linear",
                            conv_yA8_cairo32_le, NULL);
       babl_conversion_new (babl_format ("Y'A u16"), f32, "linear",


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