[babl] babl: add separate functions for 1.8 and 2.2 gamma
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [babl] babl: add separate functions for 1.8 and 2.2 gamma
- Date: Thu, 31 Aug 2017 14:27:08 +0000 (UTC)
commit b0d95e2da85fb0373079ad32feefe12c07ddd430
Author: Øyvind Kolås <pippin gimp org>
Date: Thu Aug 31 05:32:42 2017 +0200
babl: add separate functions for 1.8 and 2.2 gamma
babl/babl-trc.c | 17 +++++++++++++++--
babl/babl-trc.h | 25 ++++++++++++++++++++++++-
2 files changed, 39 insertions(+), 3 deletions(-)
---
diff --git a/babl/babl-trc.c b/babl/babl-trc.c
index 8992200..3b32f74 100644
--- a/babl/babl-trc.c
+++ b/babl/babl-trc.c
@@ -112,6 +112,14 @@ babl_trc_new (const char *name,
trc_db[i].fun_to_linear = _babl_trc_gamma_to_linear;
trc_db[i].fun_from_linear = _babl_trc_gamma_from_linear;
break;
+ case BABL_TRC_GAMMA_2_2:
+ trc_db[i].fun_to_linear = _babl_trc_gamma_2_2_to_linear;
+ trc_db[i].fun_from_linear = _babl_trc_gamma_2_2_from_linear;
+ break;
+ case BABL_TRC_GAMMA_1_8:
+ trc_db[i].fun_to_linear = _babl_trc_gamma_1_8_to_linear;
+ trc_db[i].fun_from_linear = _babl_trc_gamma_1_8_from_linear;
+ break;
case BABL_TRC_SRGB:
trc_db[i].fun_to_linear = _babl_trc_srgb_to_linear;
trc_db[i].fun_from_linear = _babl_trc_srgb_from_linear;
@@ -144,14 +152,19 @@ babl_trc_gamma (double gamma)
{
char name[32];
int i;
- if (fabs (gamma - 1.0) < 0.0001)
+ if (fabs (gamma - 1.0) < 0.01)
return babl_trc_new ("linear", BABL_TRC_LINEAR, 1.0, 0, NULL);
+ if (fabs (gamma - 1.8) < 0.01)
+ return babl_trc_new ("1.8", BABL_TRC_GAMMA_1_8, 1.8, 0, NULL);
+ if (fabs (gamma - 2.2) < 0.01)
+ return babl_trc_new ("2.2", BABL_TRC_GAMMA_2_2, 2.2, 0, NULL);
+
sprintf (name, "%.6f", gamma);
for (i = 0; name[i]; i++)
if (name[i] == ',') name[i] = '.';
while (name[strlen(name)-1]=='0')
name[strlen(name)-1]='\0';
- return babl_trc_new (name, BABL_TRC_GAMMA, gamma, 0, NULL);
+ return babl_trc_new (name, BABL_TRC_GAMMA, gamma, 0, NULL);
}
void
diff --git a/babl/babl-trc.h b/babl/babl-trc.h
index caec30c..dbdf2fe 100644
--- a/babl/babl-trc.h
+++ b/babl/babl-trc.h
@@ -27,8 +27,11 @@ BABL_CLASS_DECLARE (trc);
typedef enum {BABL_TRC_LINEAR,
BABL_TRC_GAMMA,
+ BABL_TRC_GAMMA_1_8,
+ BABL_TRC_GAMMA_2_2,
BABL_TRC_SRGB,
- BABL_TRC_LUT} BablTRCType;
+ BABL_TRC_LUT}
+BablTRCType;
typedef struct
{
@@ -374,6 +377,26 @@ static inline float _babl_trc_gamma_from_linear (const Babl *trc_, float value)
return babl_powf (value, trc->rgamma);
}
+static inline float _babl_trc_gamma_2_2_to_linear (const Babl *trc_, float value)
+{
+ return babl_powf (value, 2.2);
+}
+
+static inline float _babl_trc_gamma_2_2_from_linear (const Babl *trc_, float value)
+{
+ return babl_powf (value, 1.0/2.2);
+}
+
+static inline float _babl_trc_gamma_1_8_to_linear (const Babl *trc_, float value)
+{
+ return babl_powf (value, 1.8);
+}
+
+static inline float _babl_trc_gamma_1_8_from_linear (const Babl *trc_, float value)
+{
+ return babl_powf (value, 1.0/1.8);
+}
+
static inline float _babl_trc_srgb_to_linear (const Babl *trc_, float value)
{
return babl_gamma_2_2_to_linear (value);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]