ViewVC Help
View File | Revision Log | Show Annotations | Download File | Root Listing
root/radiance/ray/src/common/tonemap.h
(Generate patch)

Comparing ray/src/common/tonemap.h (file contents):
Revision 3.17 by greg, Fri Jan 7 20:33:02 2005 UTC vs.
Revision 3.27 by greg, Wed Jan 6 19:25:00 2021 UTC

# Line 7 | Line 7
7   #ifndef _RAD_TONEMAP_H_
8   #define _RAD_TONEMAP_H_
9  
10 < #include        "tifftypes.h"
10 > #include        "tiff.h"        /* needed for int32, etc. */
11  
12   #ifdef __cplusplus
13   extern "C" {
14   #endif
15  
16   /****    Argument Macros    ****/
17 <                                /* Flags of what to do */
17 >                                /* flags of what to do */
18   #define TM_F_HCONTR     01              /* human contrast sensitivity */
19   #define TM_F_MESOPIC    02              /* mesopic color sensitivity */
20   #define TM_F_LINEAR     04              /* linear brightness mapping */
# Line 32 | Line 32 | extern "C" {
32  
33                                  /* special pointer values */
34   #define TM_XYZPRIM      (RGBPRIMP)NULL  /* indicate XYZ primaries (Note 1) */
35 < #define TM_NOCHROM      (BYTE *)NULL    /* indicate no chrominance */
36 < #define TM_NOCHROMP     (BYTE **)NULL   /* indicate no chrominances */
35 > #define TM_NOCHROM      (uby8 *)NULL    /* indicate no chrominance */
36 > #define TM_NOCHROMP     (uby8 **)NULL   /* indicate no chrominances */
37   #define TM_GETFILE      (FILE *)NULL    /* indicate file must be opened */
38  
39  
# Line 51 | Line 51 | extern "C" {
51  
52   /****    Conversion Constants and Table Sizes    ****/
53  
54 < #define TM_BRTSCALE     128             /* brightness scale factor (integer) */
54 > #define TM_BRTSCALE     256             /* brightness scale factor (integer) */
55  
56 < #define TM_NOBRT        (-1<<15)        /* bogus brightness value */
56 > #define TM_NOBRT        (~0x7fff)       /* bogus brightness value */
57   #define TM_NOLUM        (1e-17)         /* ridiculously small luminance */
58  
59   #define TM_MAXPKG       8               /* maximum number of color formats */
# Line 64 | Line 64 | extern "C" {
64   #ifndef MEM_PTR
65   #define MEM_PTR         void *
66   #endif
67 + #ifndef HIST_TYP
68 + #define HIST_TYP        unsigned long
69 + #endif
70 + #define TMAP_TYP        unsigned short
71  
72   extern char     *tmErrorMessage[];      /* error messages */
69 extern int      tmLastError;            /* last error incurred by library */
70 extern char     *tmLastFunction;        /* error-generating function name */
73  
74   typedef short   TMbright;               /* encoded luminance type */
75  
76                                  /* basic tone mapping data structure */
77 < typedef struct tmStruct {
77 > typedef struct {
78          int             flags;          /* flags of what to do */
79          RGBPRIMP        monpri;         /* monitor RGB primaries */
80          double          mongam;         /* monitor gamma value (approx.) */
# Line 80 | Line 82 | typedef struct tmStruct {
82          int             cdiv[3];        /* computed color divisors */
83          RGBPRIMP        inppri;         /* current input primaries */
84          double          inpsf;          /* current input scalefactor */
85 +        MEM_PTR         inpdat;         /* current input client data */
86          COLORMAT        cmat;           /* color conversion matrix */
87          TMbright        hbrmin, hbrmax; /* histogram brightness limits */      
88 <        int             *histo;         /* input histogram */
88 >        HIST_TYP        *histo;         /* input histogram */
89          TMbright        mbrmin, mbrmax; /* mapped brightness limits */
90 <        unsigned short  *lumap;         /* computed luminance map */
90 >        TMAP_TYP        *lumap;         /* computed luminance map */
91          MEM_PTR         pd[TM_MAXPKG];  /* pointers to private data */
92 +        int             lastError;      /* last error incurred */
93 +        const char      *lastFunc;      /* error-generating function name */
94   } TMstruct;
95  
96                                  /* conversion package functions */
# Line 117 | Line 122 | extern int     tmNumPkgs;      /* number of registered packages
122  
123   /****    Library Function Calls    ****/
124  
125 + extern TMbright
126 + tmCvLuminance(double lum);
127 + /*
128 +        Convert a single luminance value to an encoded brightness value.
129 + */
130  
131 + extern int
132 + tmCvLums(TMbright *ls, float *scan, int len);
133 + /*
134 +        Convert luminance values to encoded brightness values using lookup.
135 +
136 +        ls      -       returned encoded luminance values.
137 +        scan    -       input scanline.
138 +        len     -       scanline length.
139 +
140 +        returns -       0 on success, TM_E_* on error.
141 + */
142 +
143   extern TMstruct *
144   tmInit(int flags, RGBPRIMP monpri, double gamval);
145   /*
# Line 131 | Line 153 | tmInit(int flags, RGBPRIMP monpri, double gamval);
153   */
154  
155   extern int
156 < tmSetSpace(TMstruct *tms, RGBPRIMP pri, double sf);
156 > tmSetSpace(TMstruct *tms, RGBPRIMP pri, double sf, MEM_PTR dat);
157   /*
158          Set color primaries and scale factor for incoming scanlines.
159  
160          tms     -       tone mapping structure pointer.
161          pri     -       RGB color input primaries (Note 1).
162          sf      -       scale factor to get to luminance in cd/m^2.
163 +        dat     -       application-specific data (NULL if not needed)
164  
165          returns -       0 on success, TM_E_* code on failure.
166   */
# Line 175 | Line 198 | tmFixedMapping(TMstruct *tms, double expmult, double g
198          tms     -       tone mapping structure pointer.
199          expmult -       the fixed exposure multiplier to use.
200          gamval  -       display gamma response (0. for default).
201 +
202          returns -       0 on success, TM_E_* on error.
203   */
204  
# Line 195 | Line 219 | tmComputeMapping(TMstruct *tms, double gamval, double
219   */
220  
221   extern int
222 < tmMapPixels(TMstruct *tms, BYTE *ps, TMbright *ls, BYTE *cs, int len);
222 > tmMapPixels(TMstruct *tms, uby8 *ps, TMbright *ls, uby8 *cs, int len);
223   /*
224          Apply tone mapping function to pixel values.
225  
# Line 214 | Line 238 | tmDup(TMstruct *orig);
238          Duplicate the given tone mapping into a new struct.
239  
240          orig    -       tone mapping structure to duplicate.
241 +
242          returns -       pointer to new struct, or NULL on error.
243   */
244  
# Line 226 | Line 251 | tmDone(TMstruct *tms);
251   */
252  
253   extern int
254 < tmCvColors(TMstruct *tms, TMbright *ls, BYTE *cs, COLOR *scan, int len);
254 > tmCvGrays(TMstruct *tms, TMbright *ls, float *scan, int len);
255   /*
256 <        Convert RGB/XYZ float scanline to encoded luminance and chrominance.
256 >        Convert gray float scanline to encoded luminance.
257  
258          tms     -       tone mapping structure pointer.
259          ls      -       returned encoded luminance values.
235        cs      -       returned encoded chrominance values (Note 2).
260          scan    -       input scanline.
261          len     -       scanline length.
262  
# Line 240 | Line 264 | tmCvColors(TMstruct *tms, TMbright *ls, BYTE *cs, COLO
264   */
265  
266   extern int
267 < tmCvGrays(TMstruct *tms, TMbright *ls, float *scan, int len);
267 > tmCvColors(TMstruct *tms, TMbright *ls, uby8 *cs, COLOR *scan, int len);
268   /*
269 <        Convert gray float scanline to encoded luminance.
269 >        Convert RGB/XYZ float scanline to encoded luminance and chrominance.
270  
271          tms     -       tone mapping structure pointer.
272          ls      -       returned encoded luminance values.
273 +        cs      -       returned encoded chrominance values (Note 2).
274          scan    -       input scanline.
275          len     -       scanline length.
276  
# Line 253 | Line 278 | tmCvGrays(TMstruct *tms, TMbright *ls, float *scan, in
278   */
279  
280   extern int
281 < tmCvColrs(TMstruct *tms, TMbright *ls, BYTE *cs, COLR *scan, int len);
281 > tmCvColrs(TMstruct *tms, TMbright *ls, uby8 *cs, COLR *scan, int len);
282   /*
283          Convert RGBE/XYZE scanline to encoded luminance and chrominance.
284  
# Line 267 | Line 292 | tmCvColrs(TMstruct *tms, TMbright *ls, BYTE *cs, COLR
292   */
293  
294   extern int
295 < tmLoadPicture(TMstruct *tms, TMbright **lpp, BYTE **cpp, int *xp, int *yp,
295 > tmLoadPicture(TMstruct *tms, TMbright **lpp, uby8 **cpp, int *xp, int *yp,
296                  char *fname, FILE *fp);
297   /*
298          Load Radiance picture and convert to tone mapping representation.
# Line 286 | Line 311 | tmLoadPicture(TMstruct *tms, TMbright **lpp, BYTE **cp
311   */
312  
313   extern int
314 < tmMapPicture(BYTE **psp, int *xp, int *yp, int flags,
314 > tmMapPicture(uby8 **psp, int *xp, int *yp, int flags,
315                  RGBPRIMP monpri, double gamval, double Lddyn, double Ldmax,
316                  char *fname, FILE *fp);
317   /*
# Line 311 | Line 336 | tmMapPicture(BYTE **psp, int *xp, int *yp, int flags,
336   */
337  
338   extern int
339 < tmCvRGB48(TMstruct *tms, TMbright *ls, BYTE *cs, uint16 (*scan)[3],
339 > tmCvRGB48(TMstruct *tms, TMbright *ls, uby8 *cs, uint16 (*scan)[3],
340                  int len, double gv);
341   /*
342          Convert 48-bit RGB scanline to encoded luminance and chrominance.

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines