[babl] extensions: Make HSV works on perceptual color space
- From: Téo Mazars <teom src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [babl] extensions: Make HSV works on perceptual color space
- Date: Thu, 20 Jun 2013 18:27:58 +0000 (UTC)
commit b5f62886a960a077b4e2873501e62d771849bc7c
Author: Téo Mazars <teo mazars ensimag fr>
Date: Thu Jun 20 20:16:17 2013 +0200
extensions: Make HSV works on perceptual color space
extensions/HSV.c | 13 +++++++------
tests/hsva.c | 36 ++++++++++++++++++------------------
2 files changed, 25 insertions(+), 24 deletions(-)
---
diff --git a/extensions/HSV.c b/extensions/HSV.c
index 6c66f42..67e489f 100644
--- a/extensions/HSV.c
+++ b/extensions/HSV.c
@@ -26,6 +26,7 @@
#include <string.h>
#include "babl.h"
+#include "base/util.h"
#define MIN(a,b) (a > b) ? b : a;
#define MAX(a,b) (a < b) ? b : a;
@@ -94,9 +95,9 @@ rgba_to_hsva (char *src,
while (n--)
{
- double red = ((double *) src)[0];
- double green = ((double *) src)[1];
- double blue = ((double *) src)[2];
+ double red = linear_to_gamma_2_2 (((double *) src)[0]);
+ double green = linear_to_gamma_2_2 (((double *) src)[1]);
+ double blue = linear_to_gamma_2_2 (((double *) src)[2]);
double alpha = ((double *) src)[3];
double hue, saturation, value;
@@ -214,9 +215,9 @@ hsva_to_rgba (char *src,
green += min;
blue += min;
- ((double *) dst)[0] = red;
- ((double *) dst)[1] = green;
- ((double *) dst)[2] = blue;
+ ((double *) dst)[0] = gamma_2_2_to_linear (red);
+ ((double *) dst)[1] = gamma_2_2_to_linear (green);
+ ((double *) dst)[2] = gamma_2_2_to_linear (blue);
((double *) dst)[3] = alpha;
src += 4 * sizeof (double);
diff --git a/tests/hsva.c b/tests/hsva.c
index a973ea5..a29f506 100644
--- a/tests/hsva.c
+++ b/tests/hsva.c
@@ -60,24 +60,24 @@ main (int argc,
{
int OK = 1;
- float rgba[][4] = {{ 1.0, 1.0, 1.0, 1.0 },
- { 0.5, 0.5, 0.5, 1.0 },
- { 0.0, 0.0, 0.0, 1.0 },
- { 1.0, 0.0, 0.0, 1.0 },
- { 0.749, 0.75, 0.0, 1.0 },
- { 0.0, 0.5, 0.0, 1.0 },
- { 0.5, 1.0, 1.0, 1.0 },
- { 0.5, 0.5, 1.0, 1.0 },
- { 0.75, 0.25, 0.75, 1.0 },
- { 0.627, 0.643, 0.142, 1.0 },
- { 0.256, 0.104, 0.918, 1.0 },
- { 0.116, 0.675, 0.255, 1.0 },
- { 0.941, 0.783, 0.053, 1.0 },
- { 0.704, 0.187, 0.897, 1.0 },
- { 0.931, 0.463, 0.316, 1.0 },
- { 0.998, 0.974, 0.532, 1.0 },
- { 0.099, 0.795, 0.591, 1.0 },
- { 0.211, 0.149, 0.597, 1.0 }};
+ float rgba[][4] = {{ 1.0, 1.0, 1.0, 1.0 },
+ { 0.2140, 0.2140, 0.2140, 1.0 },
+ { 0, 0, 0, 1.0 },
+ { 1, 0, 0, 1.0 },
+ { 0.5209, 0.5225, 0, 1.0 },
+ { 0, 0.2140, 0, 1.0 },
+ { 0.2140, 1, 1, 1.0 },
+ { 0.2140, 0.2140, 1, 1.0 },
+ { 0.5215, 0.0508, 0.5225, 1.0 },
+ { 0.3509, 0.3710, 0.0178, 1.0 },
+ { 0.0533, 0.0106, 0.8235, 1.0 },
+ { 0.0126, 0.4132, 0.0529, 1.0 },
+ { 0.8709, 0.5754, 0.0042, 1.0 },
+ { 0.4537, 0.0291, 0.7814, 1.0 },
+ { 0.8501, 0.1813, 0.0814, 1.0 },
+ { 0.9954, 0.9418, 0.2448, 1.0 },
+ { 0.0099, 0.5953, 0.3081, 1.0 },
+ { 0.0366, 0.0193, 0.3150, 1.0 }};
float hsva[][4] = {{ 0.0, 0.0, 1.0, 1.0 },
{ 0.0, 0.0, 0.5, 1.0 },
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]