[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2-demos] master 89f1af0 2/2: * graph/gblbgra.h: Gamma-corrected
From: |
Alexei Podtelezhnikov |
Subject: |
[freetype2-demos] master 89f1af0 2/2: * graph/gblbgra.h: Gamma-corrected variant (disabled). |
Date: |
Mon, 21 May 2018 23:04:50 -0400 (EDT) |
branch: master
commit 89f1af01acfec275c54e6ac676cfd9d6226df4a2
Author: Alexei Podtelezhnikov <address@hidden>
Commit: Alexei Podtelezhnikov <address@hidden>
* graph/gblbgra.h: Gamma-corrected variant (disabled).
---
ChangeLog | 4 ++++
graph/gblbgra.h | 20 +++++++++++++++++++-
2 files changed, 23 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index 4a50165..0cda76d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2018-05-21 Alexei Podtelezhnikov <address@hidden>
+ * graph/gblbgra.h: Gamma-corrected variant (disabled).
+
+2018-05-21 Alexei Podtelezhnikov <address@hidden>
+
* graph/gblbgra.h: Make it wotk for all destination targets.
2018-05-19 Alexei Podtelezhnikov <address@hidden>
diff --git a/graph/gblbgra.h b/graph/gblbgra.h
index c7a60b6..848a57b 100644
--- a/graph/gblbgra.h
+++ b/graph/gblbgra.h
@@ -37,10 +37,28 @@
unsigned int back_g = (back >> 8) & 255;
unsigned int back_b = (back) & 255;
-
+#if 1 /* premultiplied blending without gamma correction */
pix_r = (back_r * ba / 255 + pix_r);
pix_g = (back_g * ba / 255 + pix_g);
pix_b = (back_b * ba / 255 + pix_b);
+
+#else /* gamma-corrected blending */
+ const unsigned char* gamma_ramp_inv =
blit->blender->gamma_ramp_inv;
+ const unsigned short* gamma_ramp = blit->blender->gamma_ramp;
+
+ back_r = gamma_ramp[back_r];
+ back_g = gamma_ramp[back_g];
+ back_b = gamma_ramp[back_b];
+
+ /* premultiplication undone */
+ pix_r = gamma_ramp[pix_r * 255 / a];
+ pix_g = gamma_ramp[pix_g * 255 / a];
+ pix_b = gamma_ramp[pix_b * 255 / a];
+
+ pix_r = gamma_ramp_inv[(back_r * ba + pix_r * a + 127) / 255];
+ pix_g = gamma_ramp_inv[(back_g * ba + pix_g * a + 127) / 255];
+ pix_b = gamma_ramp_inv[(back_b * ba + pix_b * a + 127) / 255];
+#endif
}
GDST_STOREC(dst,pix_r,pix_g,pix_b);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2-demos] master 89f1af0 2/2: * graph/gblbgra.h: Gamma-corrected variant (disabled).,
Alexei Podtelezhnikov <=