From 22f703cab05b7cd368f4de9e03991b7664dc5022 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Frings-F=C3=BCrst?= Date: Mon, 1 Sep 2014 13:56:46 +0200 Subject: Initial import of argyll version 1.5.1-8 --- rspl/rspl1.h | 115 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 115 insertions(+) create mode 100644 rspl/rspl1.h (limited to 'rspl/rspl1.h') diff --git a/rspl/rspl1.h b/rspl/rspl1.h new file mode 100644 index 0000000..d5ea0b9 --- /dev/null +++ b/rspl/rspl1.h @@ -0,0 +1,115 @@ + +#ifndef _RSPL1_H_ + + /* Single dimension regularized spline data structure */ + +/* + * Argyll Color Correction System + * Author: Graeme W. Gill + * Date: 2000/10/29 + * + * Copyright 1996 - 2010 Graeme W. Gill + * All rights reserved. + * + * This material is licenced under the GNU GENERAL PUBLIC LICENSE Version 2 or later :- + * see the License2.txt file for licencing details. + * + * This is a simple 1D version of rspl, useful for standalone purposes. + * + */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* General data point position/value structure */ +typedef double datai[1]; +typedef double datao[1]; +typedef double ratai[1]; +typedef double ratao[1]; + +/* Interface coordinate value */ +typedef struct { + double p[1]; /* coordinate position */ + double v[1]; /* function values */ +} co; + +/* Interface coordinate value */ +typedef struct { + double p[1]; /* coordinate position */ + double v[1]; /* function values */ + double w; /* Weight to give this point, nominally 1.0 */ +} cow; + +#define RSPL_NOFLAGS 0 + +struct _rspl { + + /* Private: */ + int nig; /* number in interpolation grid */ + double gl,gh,gw;/* Interpolation grid scale low, high, grid cell width */ + double vl,vw; /* low & range */ + double xl,xh; /* Actual X data exremes low, high */ + double dl,dh; /* Actual Y Data scale low, high */ + double *x; /* Array of nig grid point scaled y values */ + + /* Public: */ + + /* destructor */ + void (*del)(struct _rspl *t); + + /* Initialise from scattered data. */ + /* Returns nz on error */ + int + (*fit_rspl)( + struct _rspl *s, /* this */ + int flags, /* (Not used) */ + co *d, /* Array holding position and function values of data points */ + int ndp, /* Number of data points */ + datai glow, /* Grid low scale - will expand to enclose data, NULL = default 0.0 */ + datai ghigh, /* Grid high scale - will expand to enclose data, NULL = default 1.0 */ + int *gres, /* Spline grid resolution, ncells = gres-1 */ + datao vlow, /* Data value low normalize, NULL = default 0.0 */ + datao vhigh, /* Data value high normalize - NULL = default 1.0 */ + double smooth, /* Smoothing factor, 0.0 = default 1.0 */ + double *avgdev, /* (Not used) */ + double **ipos /* (not used) */ + ); + + /* Initialise from scattered data with weighting. */ + /* Returns nz on error */ + int + (*fit_rspl_w)( + struct _rspl *s, /* this */ + int flags, /* (Not used) */ + cow *d, /* Array holding position and function values of data points */ + int ndp, /* Number of data points */ + datai glow, /* Grid low scale - will expand to enclose data, NULL = default 0.0 */ + datai ghigh, /* Grid high scale - will expand to enclose data, NULL = default 1.0 */ + int *gres, /* Spline grid resolution, ncells = gres-1 */ + datao vlow, /* Data value low normalize, NULL = default 0.0 */ + datao vhigh, /* Data value high normalize - NULL = default 1.0 */ + double smooth, /* Smoothing factor, 0.0 = default 1.0 */ + double *avgdev, /* (Not used) */ + double **ipos /* (not used) */ + ); + + /* Do forward interpolation */ + /* Return 0 if OK, 1 if input was clipped to grid */ + int (*interp)( + struct _rspl *s, /* this */ + co *p); /* Input and output values */ + +}; typedef struct _rspl rspl; + +/* Create a new, empty rspl object */ +rspl *new_rspl(int flags, int di, int fdi); + +#ifdef __cplusplus +} +#endif + +#define _RSPL1_H_ +#endif /* _RSPL1_H_ */ + + -- cgit v1.2.3