aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2014-09-13 11:32:05 +0200
committerMattias Andrée <maandree@operamail.com>2014-09-13 11:32:05 +0200
commit6c48bac954014628681b211ff5c2575c026eee06 (patch)
treea99494eae82e20402cfdde4271b376507d19e81c /src
parenttest other bit-depths, 8 bits is not working when 16 bits is native (diff)
downloadlibgamma-6c48bac954014628681b211ff5c2575c026eee06.tar.gz
libgamma-6c48bac954014628681b211ff5c2575c026eee06.tar.bz2
libgamma-6c48bac954014628681b211ff5c2575c026eee06.tar.xz
update gamma-helper to support 8-bit ramps
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'src')
-rw-r--r--src/lib/gamma-helper.c3
-rw-r--r--src/test/test.c3
2 files changed, 4 insertions, 2 deletions
diff --git a/src/lib/gamma-helper.c b/src/lib/gamma-helper.c
index 41a27e0..e1386e0 100644
--- a/src/lib/gamma-helper.c
+++ b/src/lib/gamma-helper.c
@@ -189,6 +189,7 @@ static void translate_to_64(signed depth, size_t n, uint64_t* restrict out, libg
switch (depth)
{
/* Translate integer. */
+ case 8: __translate(out[i] = (uint64_t)(in.bits8. ALL[i]) * 0x0101010101010101ULL);
case 16: __translate(out[i] = (uint64_t)(in.bits16.ALL[i]) * 0x0001000100010001ULL);
case 32: __translate(out[i] = (uint64_t)(in.bits32.ALL[i]) * 0x0000000100000001ULL);
/* Identity translation. */
@@ -218,6 +219,7 @@ static void translate_from_64(signed depth, size_t n, libgamma_gamma_ramps_any_t
switch (depth)
{
/* Translate integer. */
+ case 8: __translate(out.bits8. ALL[i] = (uint8_t)(in[i] / 0x0101010101010101ULL));
case 16: __translate(out.bits16.ALL[i] = (uint16_t)(in[i] / 0x0001000100010001ULL));
case 32: __translate(out.bits32.ALL[i] = (uint32_t)(in[i] / 0x0000000100000001ULL));
/* Identity translation. */
@@ -251,6 +253,7 @@ static int allocated_any_ramp(libgamma_gamma_ramps_any_t* restrict ramps_sys,
size_t d, n = ramps.ANY.red_size + ramps.ANY.green_size + ramps.ANY.blue_size;
switch (depth)
{
+ case 8: d = sizeof(uint8_t); break;
case 16: d = sizeof(uint16_t); break;
case 32: d = sizeof(uint32_t); break;
case 64: d = sizeof(uint64_t); break;
diff --git a/src/test/test.c b/src/test/test.c
index 5604efe..988b4a2 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -273,10 +273,9 @@ int main(void)
{
/* ramps16 is last because we want to make sure that the gamma ramps are
preserved exactly on exit, and we assume RandR X is used. */
-#define LIST_INTEGER_RAMPS X(ramps32) X(ramps64) X(ramps16)
+#define LIST_INTEGER_RAMPS X(ramps8) X(ramps32) X(ramps64) X(ramps16)
#define LIST_FLOAT_RAMPS X(rampsf) X(rampsd)
#define LIST_RAMPS LIST_FLOAT_RAMPS LIST_INTEGER_RAMPS
- /* TODO X(ramps8) */
libgamma_site_state_t* restrict site_state = malloc(sizeof(libgamma_site_state_t));
libgamma_partition_state_t* restrict part_state = malloc(sizeof(libgamma_partition_state_t));