From 0ce0d8d6e0c420ccafa79e0203b928c3559a4311 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Fri, 5 Mar 2021 00:43:38 +0100 Subject: Split source files, merge public header files, eliminite use gpp, rewrite makefile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- fake-quartz-cg.h | 120 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 fake-quartz-cg.h (limited to 'fake-quartz-cg.h') diff --git a/fake-quartz-cg.h b/fake-quartz-cg.h new file mode 100644 index 0000000..361a73c --- /dev/null +++ b/fake-quartz-cg.h @@ -0,0 +1,120 @@ +/* See LICENSE file for copyright and license details. */ +#ifndef LIBGAMMA_FAKE_QUARTZ_CG_H +#define LIBGAMMA_FAKE_QUARTZ_CG_H + +#ifndef FAKE_LIBGAMMA_METHOD_QUARTZ_CORE_GRAPHICS +# error Including fake-quartz-cg.h without FAKE_LIBGAMMA_METHOD_QUARTZ_CORE_GRAPHICS +#endif + + +#ifndef __GNUC__ +# define __attribute__(x) +#endif + + +/* This header file contains some capabilities of + * and , + * and can be used modify gamma ramps without Mac OS X and Quartz + * but with its API. + * + * The content of this file is based on the documentation found on: + * + * https://developer.apple.com/library/mac/documentation/GraphicsImaging/Reference/Quartz_Services_Ref/Reference/reference.html + * + * https://developer.apple.com/library/mac/documentation/CoreGraphics/Reference/CoreGraphicsConstantsRef/Reference/reference.html#//apple_ref/c/tdef/CGError */ + + +#include + + +/** + * Numerical `typedef` for errors that occur in CoreGraphics calls + */ +typedef int32_t CGError; + +/** + * The call was successful + */ +#define kCGErrorSuccess 0 + +/** + * The data type that is used for the values in the gamma ramps + */ +typedef float CGGammaValue; + +/** + * The data type for display ID:s + */ +typedef uint32_t CGDirectDisplayID; + + +/** + * Get a list of all online displays on the system + * + * @param max_size The number of elements allocated for `displays_out` + * @param displays_out List ot fill with the ID for each online display on the system + * @param count_out Output parameter for the number of elements stored in `displays_out` + * if `displays_out` is too small to fit all display ID:s, + * `*count_out` will be `max_size` + * @return `kCGErrorSuccess` on success, and error number of failure + */ +CGError CGGetOnlineDisplayList(uint32_t, CGDirectDisplayID *restrict, uint32_t *restrict); + +/** + * Set the gamma ramps for a display + * + * @param display The ID of the display + * @param gamma_size The number of stops in gamma ramps + * @param red The gamma ramp for the red channel + * @param green The gamma ramp for the green channel + * @param blue The gamma ramp for the blue channel + * @return `kCGErrorSuccess` on success, and error number of failure + */ +CGError CGSetDisplayTransferByTable(CGDirectDisplayID, uint32_t, const CGGammaValue *, const CGGammaValue *, const CGGammaValue *); + +/** + * Get the current gamma ramps for a display + * + * @param display The ID of the display + * @param gamma_size The number of stops you have allocated for the gamma ramps + * @param red Table allocated for the gamma ramp for the red channel + * @param green Table allocated for the gamma ramp for the green channel + * @param blue Table allocated for the gamma ramp for the blue channel + * @param gamma_size_out Output parameter for the actual number of stops in the gamma ramps + * @return `kCGErrorSuccess` on success, and error number of failure + */ +CGError CGGetDisplayTransferByTable(CGDirectDisplayID, uint32_t, CGGammaValue *restrict, + CGGammaValue *restrict, CGGammaValue *restrict, uint32_t *restrict); + +/** + * Restore each display's gamma ramps to the settings in ColorSync + */ +void CGDisplayRestoreColorSyncSettings(void); + +/** + * Get the number of stops in the gamma ramps for a display + * + * @param display The ID of the display + * @return The number of stops in the gamma ramps + */ +uint32_t CGDisplayGammaTableCapacity(CGDirectDisplayID) __attribute__((const)); + + +/* The follow part most only be used when this module is used, + * it cannot be used when the real CoreGraphics is used. + * CoreGraphics does not have this function, it is added so + * that there is a way to cleanly close the X connection + * and free resources needed by this module. */ + +/** + * Release resources used by the backend + */ +void close_fake_quartz_cg(void); + + + +#ifndef __GNUC__ +# undef __attribute__ +#endif + +#endif -- cgit v1.2.3-70-g09d2