diff options
Diffstat (limited to 'target/ifarp.h')
-rw-r--r-- | target/ifarp.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/target/ifarp.h b/target/ifarp.h new file mode 100644 index 0000000..083411b --- /dev/null +++ b/target/ifarp.h @@ -0,0 +1,67 @@ + +#ifndef IFARP_H + +/* + * Argyll Color Correction System + * + * Incremental far point class + * + * Author: Graeme W. Gill + * Date: 6/11/2002 + * + * Copyright 2002 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. + */ + +/* A sample point node */ +struct _ifpnode { + int fx; /* nz if point is fixed (existing) */ + double p[MXTD]; /* Device coordinate position */ + double v[MXTD]; /* Subjective value (Labnnn..) */ + + unsigned int touch; /* nn: Per value touch count */ +}; typedef struct _ifpnode ifpnode; + + +/* Main simplex latice object */ +struct _ifarp { +/* private: */ + int di; /* Point dimensionality */ + double ilimit; /* Ink limit - limit on sum of p[] */ + int inp; /* Intended number of points in list */ + int np; /* Number of point nodes in list */ + ifpnode *nodes; /* Current array of nodes */ + int rix; /* Next read index */ + + /* Perceptual function */ + void (*percept)(void *od, double *out, double *in); + void *od; /* Opaque data for perceptual point */ + + /* nn support */ + ifpnode **sax[MXTD]; /* Sorted axis pointers, one for each direction */ + unsigned int tbase; /* Touch base value for this pass */ + unsigned int ttarget; /* Touch target value for this pass */ + +/* public: */ + /* Initialise, ready to read out all the points */ + void (*reset)(struct _ifarp *s); + + /* Read the next set of non-fixed points values */ + /* return non-zero when no more points */ + int (*read)(struct _ifarp *s, double *d, double *p); + + /* Destroy ourselves */ + void (*del)(struct _ifarp *s); + +}; typedef struct _ifarp ifarp; + +/* Constructor */ +extern ifarp *new_ifarp(int di, double ilimit, int npoints, + fxpos *fxlist, int fxno, + void (*percept)(void *od, double *out, double *in), void *od); + +#define IFARP_H +#endif /* IFARP_H */ |