[babl] float: add conversions to/from associated alpha for grayscale
- From: Øyvind "pippin" Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [babl] float: add conversions to/from associated alpha for grayscale
- Date: Mon, 19 Aug 2019 23:47:09 +0000 (UTC)
commit 3ba8ebb057b6d205a0c3b512452cefa8e484b679
Author: Øyvind Kolås <pippin gimp org>
Date: Tue Aug 20 01:46:08 2019 +0200
float: add conversions to/from associated alpha for grayscale
Further speeds up rotations/scales etc in all grayscale precisions.
extensions/float.c | 24 +++++++++++++++++++++++-
1 file changed, 23 insertions(+), 1 deletion(-)
---
diff --git a/extensions/float.c b/extensions/float.c
index 4d2840937..cd3442156 100644
--- a/extensions/float.c
+++ b/extensions/float.c
@@ -50,6 +50,27 @@ conv_yaF_linear_yAF_linear (const Babl *conversion,
}
+static void
+conv_yAF_linear_yaF_linear (const Babl *conversion,
+ unsigned char *src,
+ unsigned char *dst,
+ long samples)
+{
+ float *fsrc = (float *) src;
+ float *fdst = (float *) dst;
+ int n = samples;
+
+ while (n--)
+ {
+ float alpha = fsrc[1];
+ float alpha_reciprocal = 1.0f/babl_epsilon_for_zero_float (alpha);
+ *fdst++ = (*fsrc++) * alpha_reciprocal;
+ *fdst++ = alpha;
+ fsrc++;
+ }
+}
+
+
static void
conv_yaF_linear_yAF_nonlinear (const Babl *conversion,
unsigned char *src,
@@ -585,10 +606,11 @@ init (void)
o (rgbF_nonlinear, rgbF_linear);
+ o (yaF_linear, yAF_linear);
+ o (yAF_linear, yaF_linear);
o (yAF_linear, yAF_nonlinear);
o (yaF_linear, yAF_nonlinear);
o (yaF_linear, yaF_nonlinear);
- o (yaF_linear, yAF_linear);
o (yaF_nonlinear, yaF_linear);
o (yF_linear, yF_nonlinear);
o (yF_nonlinear, yF_linear);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]