diff options
Diffstat (limited to 'xicc/xcal.h')
-rw-r--r-- | xicc/xcal.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/xicc/xcal.h b/xicc/xcal.h new file mode 100644 index 0000000..99f1c9c --- /dev/null +++ b/xicc/xcal.h @@ -0,0 +1,78 @@ + +#ifndef XCAL_H +#define XCAL_H + +/* + * Argyll Color Correction System + * Calibration curve class. + * + * Author: Graeme W. Gill + * Date: 30/10/2005 + * + * Copyright 2005 Graeme W. Gill + * All rights reserved. + * This material is licenced under the GNU AFFERO GENERAL PUBLIC LICENSE Version 3 :- + * see the License.txt file for licencing details. + * + * This class allows reading and using a calibration file. + * Creation is currently left up to specialized programs (dispcal, printcal). + * This is also used by xicc to automatically take calibration into account + * when computing ink limits. + */ + +struct _xcal { + + /* Public: */ + void (*del)(struct _xcal *p); + + /* Read a calibration file from a CGATS table */ + /* Return nz if this fails (filename is for error messages) */ + int (*read_cgats) (struct _xcal *p, cgats *cg, int table, char *filename); + + /* Read a calibration file */ + /* Return nz if this fails */ + int (*read) (struct _xcal *p, char *filename); + + /* Write a calibration to a new cgats table */ + /* Return nz if this fails */ + int (*write_cgats)(struct _xcal *p, cgats *tcg); + + /* Write a calibration file */ + /* Return nz if this fails */ + int (*write)(struct _xcal *p, char *filename); + + /* Translate values through the curves curves. */ + void (*interp) (struct _xcal *p, double *out, double *in); + + /* Translate a value backwards through the curves. */ + /* Return nz if the inversion fails */ + int (*inv_interp) (struct _xcal *p, double *out, double *in); + + /* Translate a value through one of the curves */ + double (*interp_ch) (struct _xcal *p, int ch, double in); + + /* Translate a value backwards through one of the curves */ + /* Return -1.0 if the inversion fails */ + double (*inv_interp_ch) (struct _xcal *p, int ch, double in); + + int noramdac; /* Set to nz if there was no VideoLUT access */ + + /* Private: */ + icProfileClassSignature devclass; /* Type of device */ + inkmask devmask; /* ICX ink mask of device space */ + icColorSpaceSignature colspace; /* Corresponding ICC device space sig (0 if none) */ + int devchan; /* Number of chanels in device space */ + profxinf xpi; /* Extra calibration description information */ + + char err[CGATS_ERRM_LENGTH]; /* Error message */ + int errc; /* Error code */ + + rspl *cals[MAX_CHAN]; + +}; typedef struct _xcal xcal; + +/* Create a new, uninitialised xcal */ +xcal *new_xcal(void); + +#endif /* XCAL */ + |