extensions: add a Y' u8 to RGBA float conversion
authorØyvind Kolås <pippin@gimp.org>
Mon, 19 Aug 2019 01:19:39 +0000 (03:19 +0200)
committerØyvind Kolås <pippin@gimp.org>
Mon, 19 Aug 2019 01:19:39 +0000 (03:19 +0200)
extensions/gegl-fixups.c

index e38d73f6d4d1562deaf62834b872b08ae3e8d07c..45888ce657baa7136049c3d43fe57dde8170fb08 100644 (file)
@@ -317,6 +317,34 @@ conv_rgba8_rgbaF (const Babl    *conversion,
     }
 }
 
+static void
+conv_ga8_rgbaF (const Babl    *conversion,
+                  unsigned char *src, 
+                  unsigned char *dst, 
+                  long           samples)
+{
+  long n = samples;
+
+  while (n--)
+    {
+      float gray       = table_8g_F[*(unsigned char *) src];
+      (*(float *) dst) = gray;
+      dst             += 4;
+      src             += 1;
+
+      (*(float *) dst) = gray;
+      dst             += 4;
+
+      (*(float *) dst) = gray;
+      dst             += 4;
+
+      (*(float *) dst) = table_8_F[*(unsigned char *) src];
+      dst             += 4;
+      src             += 1;
+    }
+}
+
+
 static void
 conv_rgb8_rgbaF (const Babl    *conversion,
                  unsigned char *src, 
@@ -567,6 +595,12 @@ init (void)
     babl_component ("G'"),
     babl_component ("B'"),
     NULL);
+  const Babl *ga8 = babl_format_new (
+    babl_model ("Y'A"),
+    babl_type ("u8"),
+    babl_component ("Y'"),
+    babl_component ("A"),
+    NULL);
 
   table_init ();
 
@@ -585,6 +619,7 @@ init (void)
   o (rgbAF, rgb8);
   o (bgrA8, rgba8);
   o (rgba8, rgb8);
+  o (ga8, rgbaF);
 
   return 0;
 }