diff options
-rw-r--r-- | src/gammad.c | 8 | ||||
-rw-r--r-- | src/output.h | 47 | ||||
-rw-r--r-- | src/ramps.h | 58 |
3 files changed, 75 insertions, 38 deletions
diff --git a/src/gammad.c b/src/gammad.c index 49c6219..c04ba5d 100644 --- a/src/gammad.c +++ b/src/gammad.c @@ -129,6 +129,8 @@ int main(int argc, char** argv) saved_errno = errno; outputs[i].crtc = crtcs + i; libgamma_crtc_information_destroy(&info); + outputs[i].ramps_size = outputs[i].red_size + outputs[i].green_size + outputs[i].blue_size; + /* outputs[i].ramps_size will be multipled by the stop-size later */ errno = saved_errno; if (outputs[i].name == NULL) goto fail; @@ -154,24 +156,30 @@ int main(int argc, char** argv) switch (outputs[i].depth) { case 8: + outputs[i].ramps_size *= sizeof(uint8_t); LOAD_RAMPS(8, u8); break; case 16: + outputs[i].ramps_size *= sizeof(uint16_t); LOAD_RAMPS(16, u16); break; case 32: + outputs[i].ramps_size *= sizeof(uint32_t); LOAD_RAMPS(32, u32); break; default: outputs[i].depth = 64; /* fall through */ case 64: + outputs[i].ramps_size *= sizeof(uint64_t); LOAD_RAMPS(64, u64); break; case -1: + outputs[i].ramps_size *= sizeof(float); LOAD_RAMPS(f, f); break; case -2: + outputs[i].ramps_size *= sizeof(double); LOAD_RAMPS(d, d); break; } diff --git a/src/output.h b/src/output.h index b84ea22..d3b39ec 100644 --- a/src/output.h +++ b/src/output.h @@ -19,43 +19,8 @@ #include <libgamma.h> +#include "ramps.h" -/** - * Gamma ramps union for all - * lbigamma gamma ramps types - */ -union gamma_ramps -{ - /** - * Ramps with 8-bit value - */ - libgamma_gamma_ramps8_t u8; - - /** - * Ramps with 16-bit value - */ - libgamma_gamma_ramps16_t u16; - - /** - * Ramps with 32-bit value - */ - libgamma_gamma_ramps32_t u32; - - /** - * Ramps with 64-bit value - */ - libgamma_gamma_ramps64_t u64; - - /** - * Ramps with `float` value - */ - libgamma_gamma_rampsf_t f; - - /** - * Ramps with `double` value - */ - libgamma_gamma_rampsd_t d; -}; /** @@ -79,16 +44,22 @@ struct output size_t red_size; /** - * The number of stops in the red gamma ramp + * The number of stops in the green gamma ramp */ size_t green_size; /** - * The number of stops in the red gamma ramp + * The number of stops in the blue gamma ramp */ size_t blue_size; /** + * `.red_size + .green_size + .blue_size` + * multiplied by the byte-size of each stop + */ + size_t ramps_size; + + /** * Whether gamma ramps are supported */ enum libgamma_decision supported; diff --git a/src/ramps.h b/src/ramps.h new file mode 100644 index 0000000..0f1462c --- /dev/null +++ b/src/ramps.h @@ -0,0 +1,58 @@ +/** + * gammad -- Cooperative gamma server + * Copyright (C) 2016 Mattias Andrée (maandree@kth.se) + * + * This library is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this library. If not, see <http://www.gnu.org/licenses/>. + */ +#include <libgamma.h> + + + +/** + * Gamma ramps union for all + * lbigamma gamma ramps types + */ +union gamma_ramps +{ + /** + * Ramps with 8-bit value + */ + libgamma_gamma_ramps8_t u8; + + /** + * Ramps with 16-bit value + */ + libgamma_gamma_ramps16_t u16; + + /** + * Ramps with 32-bit value + */ + libgamma_gamma_ramps32_t u32; + + /** + * Ramps with 64-bit value + */ + libgamma_gamma_ramps64_t u64; + + /** + * Ramps with `float` value + */ + libgamma_gamma_rampsf_t f; + + /** + * Ramps with `double` value + */ + libgamma_gamma_rampsd_t d; +}; + |