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

Comparing ray/src/common/tmaptiff.c (file contents):
Revision 3.4 by schorsch, Sun Jul 27 22:12:01 2003 UTC vs.
Revision 3.5 by greg, Fri Jan 7 20:33:02 2005 UTC

# Line 78 | Line 78 | getTIFFtype(TIFF *tif)
78  
79   /* load and convert TIFF */
80   int
81 < tmLoadTIFF(TMbright **lpp, BYTE **cpp, int *xp, int *yp, char *fname, TIFF *tp)
81 > tmLoadTIFF(TMstruct *tms, TMbright **lpp, BYTE **cpp,
82 >                int *xp, int *yp, char *fname, TIFF *tp)
83   {
84          char    *funcName = fname==NULL ? "tmLoadTIFF" : fname;
85 <        RGBPRIMP        inppri = tmTop->monpri;
85 >        RGBPRIMP        inppri = tms->monpri;
86          RGBPRIMS        myprims;
87          float   *fa;
88          TIFF    *tif;
# Line 92 | Line 93 | tmLoadTIFF(TMbright **lpp, BYTE **cpp, int *xp, int *y
93          double  stonits;
94          int     y;
95                                          /* check arguments */
96 <        if (tmTop == NULL)
96 >        if (tms == NULL)
97                  returnErr(TM_E_TMINVAL);
98          if ((lpp == NULL) | (xp == NULL) | (yp == NULL) |
99                          ((fname == NULL) & (tp == NULL)))
# Line 132 | Line 133 | tmLoadTIFF(TMbright **lpp, BYTE **cpp, int *xp, int *y
133          case TC_LOGLUV24:
134                  TIFFSetField(tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_RAW);
135                  sl.l = (uint32 *)malloc(width*sizeof(uint32));
136 <                tmSetSpace(TM_XYZPRIM, stonits);
136 >                tmSetSpace(tms, TM_XYZPRIM, stonits);
137                  break;
138          case TC_LOGL16:
139                  TIFFSetField(tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_16BIT);
140                  sl.w = (uint16 *)malloc(width*sizeof(uint16));
141 <                tmSetSpace(tmTop->monpri, stonits);
141 >                tmSetSpace(tms, tms->monpri, stonits);
142                  break;
143          case TC_RGBFLOAT:
144                  sl.f = (float *)malloc(width*3*sizeof(float));
145 <                tmSetSpace(inppri, stonits);
145 >                tmSetSpace(tms, inppri, stonits);
146                  break;
147          case TC_GRYFLOAT:
148                  sl.f = (float *)malloc(width*sizeof(float));
149 <                tmSetSpace(tmTop->monpri, stonits);
149 >                tmSetSpace(tms, tms->monpri, stonits);
150                  break;
151          case TC_RGBSHORT:
152                  sl.w = (uint16 *)malloc(width*3*sizeof(uint16));
153 <                tmSetSpace(inppri, stonits);
153 >                tmSetSpace(tms, inppri, stonits);
154                  break;
155          case TC_GRYSHORT:
156                  sl.w = (uint16 *)malloc(width*sizeof(uint16));
157 <                tmSetSpace(tmTop->monpri, stonits);
157 >                tmSetSpace(tms, tms->monpri, stonits);
158                  break;
159          default:
160                  err = TM_E_CODERR1;
# Line 186 | Line 187 | tmLoadTIFF(TMbright **lpp, BYTE **cpp, int *xp, int *y
187                  }
188                  switch (tcase) {
189                  case TC_LOGLUV32:
190 <                        err = tmCvLuv32(*lpp + y*width,
190 >                        err = tmCvLuv32(tms, *lpp + y*width,
191                                  cpp==TM_NOCHROMP ? TM_NOCHROM : *cpp+y*3*width,
192                                          sl.l, width);
193                          break;
194                  case TC_LOGLUV24:
195 <                        err = tmCvLuv24(*lpp + y*width,
195 >                        err = tmCvLuv24(tms, *lpp + y*width,
196                                  cpp==TM_NOCHROMP ? TM_NOCHROM : *cpp+y*3*width,
197                                          sl.l, width);
198                          break;
199                  case TC_LOGL16:
200 <                        err = tmCvL16(*lpp + y*width, sl.w, width);
200 >                        err = tmCvL16(tms, *lpp + y*width, sl.w, width);
201                          break;
202                  case TC_RGBFLOAT:
203 <                        err = tmCvColors(*lpp + y*width,
203 >                        err = tmCvColors(tms, *lpp + y*width,
204                                  cpp==TM_NOCHROMP ? TM_NOCHROM : *cpp+y*3*width,
205                                          (COLOR *)sl.f, width);
206                          break;
207                  case TC_GRYFLOAT:
208 <                        err = tmCvGrays(*lpp + y*width, sl.f, width);
208 >                        err = tmCvGrays(tms, *lpp + y*width, sl.f, width);
209                          break;
210                  case TC_RGBSHORT:
211 <                        err = tmCvRGB48(*lpp + y*width,
211 >                        err = tmCvRGB48(tms, *lpp + y*width,
212                                  cpp==TM_NOCHROMP ? TM_NOCHROM : *cpp+y*3*width,
213                                          (uint16 (*)[3])sl.w, width, DEFGAM);
214                          break;
215                  case TC_GRYSHORT:
216 <                        err = tmCvGray16(*lpp + y*width, sl.w, width, DEFGAM);
216 >                        err = tmCvGray16(tms, *lpp + y*width,
217 >                                        sl.w, width, DEFGAM);
218                          break;
219                  default:
220                          err = TM_E_CODERR1;
# Line 253 | Line 255 | tmMapTIFF(BYTE **psp, int *xp, int *yp, int flags, RGB
255          double gamval, double Lddyn, double Ldmax, char *fname, TIFF *tp)
256   {
257          char    *funcName = fname==NULL ? "tmMapTIFF" : fname;
258 +        TMstruct        *tms;
259          TMbright        *lp;
260          BYTE    *cp;
261          int     err;
# Line 265 | Line 268 | tmMapTIFF(BYTE **psp, int *xp, int *yp, int flags, RGB
268          if (Ldmax < MINLDMAX) Ldmax = DEFLDMAX;
269          if (flags & TM_F_BW) monpri = stdprims;
270                                          /* initialize tone mapping */
271 <        if (tmInit(flags, monpri, gamval) == NULL)
271 >        if ((tms = tmInit(flags, monpri, gamval)) == NULL)
272                  returnErr(TM_E_NOMEM);
273                                          /* load and convert TIFF */
274          cp = TM_NOCHROM;
275 <        err = tmLoadTIFF(&lp, flags&TM_F_BW ? TM_NOCHROMP : &cp,
275 >        err = tmLoadTIFF(tms, &lp, flags&TM_F_BW ? TM_NOCHROMP : &cp,
276                          xp, yp, fname, tp);
277          if (err != TM_E_OK) {
278 <                tmDone(NULL);
278 >                tmDone(tms);
279                  return(err);
280          }
281          if (cp == TM_NOCHROM) {
282                  *psp = (BYTE *)malloc(*xp * *yp * sizeof(BYTE));
283                  if (*psp == NULL) {
284                          free((MEM_PTR)lp);
285 <                        tmDone(NULL);
285 >                        tmDone(tms);
286                          returnErr(TM_E_NOMEM);
287                  }
288          } else
289                  *psp = cp;
290                                          /* compute color mapping */
291 <        err = tmAddHisto(lp, *xp * *yp, 1);
291 >        err = tmAddHisto(tms, lp, *xp * *yp, 1);
292          if (err != TM_E_OK)
293                  goto done;
294 <        err = tmComputeMapping(gamval, Lddyn, Ldmax);
294 >        err = tmComputeMapping(tms, gamval, Lddyn, Ldmax);
295          if (err != TM_E_OK)
296                  goto done;
297                                          /* map pixels */
298 <        err = tmMapPixels(*psp, lp, cp, *xp * *yp);
298 >        err = tmMapPixels(tms, *psp, lp, cp, *xp * *yp);
299  
300   done:                                   /* clean up */
301          free((MEM_PTR)lp);
302 <        tmDone(NULL);
302 >        tmDone(tms);
303          if (err != TM_E_OK) {           /* free memory on error */
304                  free((MEM_PTR)*psp);
305                  *psp = NULL;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines