ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/rt/data.h
Revision: 2.9
Committed: Tue Mar 12 16:54:51 2024 UTC (2 months ago) by greg
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 2.8: +10 -10 lines
Log Message:
perf: added datavector() call for quicker spectral interpolation

File Contents

# User Rev Content
1 greg 2.9 /* RCSid $Id: data.h,v 2.8 2023/12/13 23:26:16 greg Exp $ */
2 greg 2.4 /*
3     * Header for data file loading and computation routines.
4     */
5 schorsch 2.6 #ifndef _RAD_DATA_H_
6     #define _RAD_DATA_H_
7     #ifdef __cplusplus
8     extern "C" {
9     #endif
10 greg 1.1
11 greg 2.9 #define MAXDDIM 6 /* maximum data dimensions */
12 greg 1.1
13     #define DATATYPE float /* single precision to save space */
14 greg 2.2 #define DATATY 'f' /* format for DATATYPE */
15 greg 2.8 #define SPECTY 'c' /* format for SCOLR */
16 greg 1.1
17     typedef struct datarray {
18 greg 2.9 struct datarray *next; /* next array in list */
19 greg 1.1 char *name; /* name of our data */
20 greg 2.8 short type; /* DATATY, SPECTY, RED, GRN or BLU */
21 greg 2.3 short nd; /* number of dimensions */
22     union {
23     DATATYPE *d; /* float data */
24 greg 2.8 COLR *c; /* RGBE data */
25     uby8 *s; /* spectral data */
26     void *p; /* generic pointer */
27 greg 2.3 } arr; /* the data */
28 greg 2.9 struct dadim { /* put this last */
29     DATATYPE *p; /* point locations */
30     DATATYPE org, siz; /* coordinate domain */
31     int ne; /* number of elements */
32     } dim[MAXDDIM]; /* dimension specifications */
33 greg 1.1 } DATARRAY; /* a data array */
34    
35 greg 2.4 extern DATARRAY *getdata(char *dname);
36     extern DATARRAY *getpict(char *pname);
37 greg 2.8 extern DATARRAY *getspec(char *sname);
38 greg 2.4 extern void freedata(DATARRAY *dta);
39     extern double datavalue(DATARRAY *dp, double *pt);
40 greg 2.9 /* release datavector() pointer with free() not freedata() */
41     extern DATARRAY *datavector(DATARRAY *dp, double *pt);
42 schorsch 2.6
43     #ifdef __cplusplus
44     }
45 greg 2.4 #endif
46 schorsch 2.6 #endif /* _RAD_DATA_H_ */
47