diff options
author | Mattias Andrée <maandree@operamail.com> | 2014-05-31 07:32:09 +0200 |
---|---|---|
committer | Mattias Andrée <maandree@operamail.com> | 2014-05-31 07:32:09 +0200 |
commit | bdeb7f77f16b1e482904866ff21e43f8bfc01bb0 (patch) | |
tree | e5587a577db53a58ea52fd2579fa0cbb89007491 /src/lib/gamma-helper.h | |
parent | split out error identification for failure of open from libgamma_linux_drm_partition_initialise (diff) | |
download | libgamma-bdeb7f77f16b1e482904866ff21e43f8bfc01bb0.tar.gz libgamma-bdeb7f77f16b1e482904866ff21e43f8bfc01bb0.tar.bz2 libgamma-bdeb7f77f16b1e482904866ff21e43f8bfc01bb0.tar.xz |
move files around
Signed-off-by: Mattias Andrée <maandree@operamail.com>
Diffstat (limited to 'src/lib/gamma-helper.h')
-rw-r--r-- | src/lib/gamma-helper.h | 165 |
1 files changed, 165 insertions, 0 deletions
diff --git a/src/lib/gamma-helper.h b/src/lib/gamma-helper.h new file mode 100644 index 0000000..e0711ff --- /dev/null +++ b/src/lib/gamma-helper.h @@ -0,0 +1,165 @@ +/** + * libgamma — Display server abstraction layer for gamma ramp adjustments + * Copyright © 2014 Mattias Andrée (maandree@member.fsf.org) + * + * 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/>. + */ +#ifndef LIBGAMMA_GAMMA_HELPER_H +#define LIBGAMMA_GAMMA_HELPER_H + + +#include "libgamma-method.h" + + +/** + * Gamma ramp structure union for different depths. + */ +typedef union libgamma_gamma_ramps_any +{ + /** + * 16-bit gamma ramps. + */ + libgamma_gamma_ramps_t bits16; + + /** + * 32-bit gamma ramps. + */ + libgamma_gamma_ramps32_t bits32; + + /** + * 64-bit gamma ramps. + */ + libgamma_gamma_ramps64_t bits64; + + /** + * Single precision float gamma ramps. + */ + libgamma_gamma_rampsf_t float_single; + + /** + * Double precision float gamma ramps. + */ + libgamma_gamma_rampsd_t float_double; + +} libgamma_gamma_ramps_any_t; + + +/** + * A function for reading the gamma ramps from a CRTC. + * + * @param this The CRTC state. + * @param ramps The store for the gamma ramps. + * @return Zero on success, otherwise (negative) the value of an + * error identifier provided by this library. + */ +typedef int libgamma_get_ramps_any_fun(libgamma_crtc_state_t* restrict this, + libgamma_gamma_ramps_any_t* restrict ramps); + +/** + * A function for writing the gamma ramps to a CRTC. + * + * @param this The CRTC state. + * @param ramps The gamma ramps. + * @return Zero on success, otherwise (negative) the value of an + * error identifier provided by this library. + */ +typedef int libgamma_set_ramps_any_fun(libgamma_crtc_state_t* restrict this, + libgamma_gamma_ramps_any_t ramps); + + + +/** + * Get current the gamma ramps for a CRTC, re-encoding versio.n + * + * @param this The CRTC state. + * @param ramps The gamma ramps to fill with the current values. + * @param depth_user The depth of the gamma ramps that are provided by the user, + * `-1` for `float`, `-2` for `double`. + * @param depth_system The depth of the gamma ramps as required by the adjustment method, + * `-1` for `float`, `-2` for `double`. + * @param fun Function that is to be used read the ramps, its parameters have + * the same function as those of this function with the same names, + * and the return value too is identical. + * @return Zero on success, otherwise (negative) the value of an + * error identifier provided by this library. + */ +#define libgamma_translated_ramp_get(this, ramps, depth_user, depth_system, fun) \ + libgamma_translated_ramp_get_(this, ramps, depth_user, depth_system, \ + (libgamma_get_ramps_any_fun*)(fun)) + + +/** + * Set the gamma ramps for a CRTC, re-encoding version + * + * @param this The CRTC state. + * @param ramps The gamma ramps to apply. + * @param depth_user The depth of the gamma ramps that are provided by the user, + * `-1` for `float`, `-2` for `double`. + * @param depth_system The depth of the gamma ramps as required by the adjustment method, + * `-1` for `float`, `-2` for `double`. + * @param fun Function that is to be used write the ramps, its parameters have + * the same function as those of this function with the same names, + * and the return value too is identical. + * @return Zero on success, otherwise (negative) the value of an + * error identifier provided by this library. + */ +#define libgamma_translated_ramp_set(this, ramps, depth_user, depth_system, fun) \ + libgamma_translated_ramp_set_(this, ramps, depth_user, depth_system, \ + (libgamma_set_ramps_any_fun*)(fun)) + + +/** + * Get current the gamma ramps for a CRTC, re-encoding version. + * + * @param this The CRTC state. + * @param ramps The gamma ramps to fill with the current values. + * @param depth_user The depth of the gamma ramps that are provided by the user, + * `-1` for `float`, `-2` for `double`. + * @param depth_system The depth of the gamma ramps as required by the adjustment method, + * `-1` for `float`, `-2` for `double`. + * @param fun Function that is to be used read the ramps, its parameters have + * the same function as those of this function with the same names, + * and the return value too is identical. + * @return Zero on success, otherwise (negative) the value of an + * error identifier provided by this library. + */ +int libgamma_translated_ramp_get_(libgamma_crtc_state_t* restrict this, + libgamma_gamma_ramps_any_t* restrict ramps, + signed depth_user, signed depth_system, + libgamma_get_ramps_any_fun* fun); + + +/** + * Set the gamma ramps for a CRTC, re-encoding version. + * + * @param this The CRTC state. + * @param ramps The gamma ramps to apply. + * @param depth_user The depth of the gamma ramps that are provided by the user, + * `-1` for `float`, `-2` for `double`. + * @param depth_system The depth of the gamma ramps as required by the adjustment method, + * `-1` for `float`, `-2` for `double`. + * @param fun Function that is to be used write the ramps, its parameters have + * the same function as those of this function with the same names, + * and the return value too is identical. + * @return Zero on success, otherwise (negative) the value of an + * error identifier provided by this library. + */ +int libgamma_translated_ramp_set_(libgamma_crtc_state_t* restrict this, + libgamma_gamma_ramps_any_t ramps, + signed depth_user, signed depth_system, + libgamma_set_ramps_any_fun* fun); + + +#endif + |