--- ray/src/px/ra_xyze.c 1997/07/22 10:17:53 2.4 +++ ray/src/px/ra_xyze.c 2004/03/28 20:33:14 2.9 @@ -1,41 +1,39 @@ -/* Copyright (c) 1997 Silicon Graphics, Inc. */ - #ifndef lint -static char SCCSid[] = "$SunId$ SGI"; +static const char RCSid[] = "$Id: ra_xyze.c,v 2.9 2004/03/28 20:33:14 schorsch Exp $"; #endif - /* * Program to convert between RADIANCE RGBE and XYZE formats + * Added white-balance adjustment 10/01 (GW). */ #include +#include #include +#include + +#include "platform.h" #include "color.h" #include "resolu.h" -#ifdef MSDOS -#include -#endif - -extern char *malloc(), *strcpy(); - int rgbinp = -1; /* input is RGBE? */ - int rgbout = 0; /* output should be RGBE? */ - RGBPRIMS inprims = STDPRIMS; /* input primaries */ - RGBPRIMS outprims = STDPRIMS; /* output primaries */ - double expcomp = 1.0; /* exposure compensation */ - int doflat = -1; /* produce flat file? */ - char *progname; +static gethfunc headline; +static void quiterr(char *err); +static void convert(void); -headline(s) /* process header line */ -char *s; + + +static int +headline( /* process header line */ + char *s, + void *p +) { char fmt[32]; @@ -46,28 +44,24 @@ char *s; rgbinp = 0; else rgbinp = -2; - return; /* don't echo */ + return(0); /* don't echo */ } if (isprims(s)) { /* get input primaries */ primsval(inprims, s); - return; /* don't echo */ + return(0); /* don't echo */ } /* should I grok colcorr also? */ - fputs(s, stdout); + return(fputs(s, stdout)); } -main(argc, argv) -int argc; -char *argv[]; +int +main(int argc, char *argv[]) { int i; -#ifdef MSDOS - extern int _fmode; - _fmode = O_BINARY; - setmode(fileno(stdin), O_BINARY); - setmode(fileno(stdout), O_BINARY); -#endif + SET_DEFAULT_BINARY(); + SET_FILE_BINARY(stdin); + SET_FILE_BINARY(stdout); progname = argv[0]; for (i = 1; i < argc; i++) @@ -134,8 +128,10 @@ userr: } -quiterr(err) /* print message and exit */ -char *err; +static void +quiterr( /* print message and exit */ + char *err +) { if (err != NULL) { fprintf(stderr, "%s: %s\n", progname, err); @@ -145,7 +141,8 @@ char *err; } -convert() /* convert to XYZE or RGBE picture */ +static void +convert(void) /* convert to XYZE or RGBE picture */ { int order; int xmax, ymax; @@ -158,14 +155,14 @@ convert() /* convert to XYZE or RGBE picture */ /* compute transform */ if (rgbout) { if (rgbinp) { /* RGBE -> RGBE */ - comprgb2rgbmat(xfm, inprims, outprims); + comprgb2rgbWBmat(xfm, inprims, outprims); } else { /* XYZE -> RGBE */ - compxyz2rgbmat(xfm, outprims); + compxyz2rgbWBmat(xfm, outprims); ourexp *= WHTEFFICACY; } } else { if (rgbinp) { /* RGBE -> XYZE */ - comprgb2xyzmat(xfm, inprims); + comprgb2xyzWBmat(xfm, inprims); ourexp /= WHTEFFICACY; } else { /* XYZE -> XYZE */ for (y = 0; y < 3; y++) @@ -216,7 +213,7 @@ convert() /* convert to XYZE or RGBE picture */ quiterr("error writing output picture"); } /* free scanline */ - free((char *)scanin); + free((void *)scanin); if (scanout != NULL) - free((char *)scanout); + free((void *)scanout); }