--- ray/src/rt/rpict.c 2003/02/22 02:07:29 2.52
+++ ray/src/rt/rpict.c 2003/06/30 14:59:12 2.57
@@ -1,72 +1,17 @@
#ifndef lint
-static const char RCSid[] = "$Id: rpict.c,v 2.52 2003/02/22 02:07:29 greg Exp $";
+static const char RCSid[] = "$Id";
#endif
/*
* rpict.c - routines and variables for picture generation.
*/
-/* ====================================================================
- * The Radiance Software License, Version 1.0
- *
- * Copyright (c) 1990 - 2002 The Regents of the University of California,
- * through Lawrence Berkeley National Laboratory. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. The end-user documentation included with the redistribution,
- * if any, must include the following acknowledgment:
- * "This product includes Radiance software
- * (http://radsite.lbl.gov/)
- * developed by the Lawrence Berkeley National Laboratory
- * (http://www.lbl.gov/)."
- * Alternately, this acknowledgment may appear in the software itself,
- * if and wherever such third-party acknowledgments normally appear.
- *
- * 4. The names "Radiance," "Lawrence Berkeley National Laboratory"
- * and "The Regents of the University of California" must
- * not be used to endorse or promote products derived from this
- * software without prior written permission. For written
- * permission, please contact radiance@radsite.lbl.gov.
- *
- * 5. Products derived from this software may not be called "Radiance",
- * nor may "Radiance" appear in their name, without prior written
- * permission of Lawrence Berkeley National Laboratory.
- *
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
- * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL Lawrence Berkeley National Laboratory OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
- * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
- * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of Lawrence Berkeley National Laboratory. For more
- * information on Lawrence Berkeley National Laboratory, please see
- * .
- */
+#include "copyright.h"
#include "ray.h"
#include
-#ifndef NIX
+#ifndef NON_POSIX
#ifdef BSD
#include
#include
@@ -76,21 +21,22 @@ static const char RCSid[] = "$Id: rpict.c,v 2.52 2003/
#endif
#endif
-extern time_t time();
-
+#include
#include
+#include "platform.h"
#include "view.h"
-
#include "random.h"
-
#include "paths.h"
+
#define RFTEMPLATE "rfXXXXXX"
#ifndef SIGCONT
+#ifdef SIGIO /* XXX can we live without this? */
#define SIGCONT SIGIO
#endif
+#endif
CUBE thescene; /* our scene */
OBJECT nsceneobjs; /* number of objects in our scene */
@@ -163,13 +109,13 @@ int hres, vres; /* resolution for this frame */
static VIEW lastview; /* the previous view input */
-extern char *mktemp();
+extern char *mktemp(); /* XXX should be in stdlib.h or unistd.h */
void report();
double pixvalue();
-#ifdef NIX
+#ifdef RHAS_ACCESS
#define file_exists(f) (access(f,F_OK)==0)
#else
#include
@@ -191,7 +137,7 @@ int code;
{
if (code) /* report status */
report();
-#ifndef NIX
+#ifndef NON_POSIX
headclean(); /* delete header file */
pfclean(); /* clean up persist files */
#endif
@@ -199,7 +145,7 @@ int code;
}
-#ifndef NIX
+#ifndef NON_POSIX
void
report() /* report progress */
{
@@ -236,7 +182,7 @@ report() /* report progress */
nrays, pctdone, u/3600., s/3600.,
(tlastrept-tstart)/3600., myhostname());
eputs(errmsg);
-#ifndef BSD
+#ifdef SIGCONT
signal(SIGCONT, report);
#endif
}
@@ -268,7 +214,6 @@ char *pout, *zout, *prvr;
* sequenced file naming.
*/
{
- extern char *rindex(), *strncpy(), *strcat(), *strcpy();
char fbuf[128], fbuf2[128];
int npicts;
register char *cp;
@@ -345,9 +290,7 @@ char *pout, *zout, *prvr;
"cannot open output file \"%s\"", fbuf);
error(SYSTEM, errmsg);
}
-#ifdef MSDOS
- setmode(fileno(stdout), O_BINARY);
-#endif
+ SET_FILE_BINARY(stdout);
dupheader();
}
hres = hresolu; vres = vresolu; pa = pixaspect;
@@ -449,9 +392,7 @@ char *zfile, *oldfile;
sprintf(errmsg, "cannot open z-file \"%s\"", zfile);
error(SYSTEM, errmsg);
}
-#ifdef MSDOS
- setmode(zfd, O_BINARY);
-#endif
+ SET_FD_BINARY(zfd);
for (i = 0; i <= psample; i++) {
zbar[i] = (float *)malloc(hres*sizeof(float));
if (zbar[i] == NULL)
@@ -474,10 +415,10 @@ char *zfile, *oldfile;
pctdone = 100.0*i/vres;
if (ralrm > 0) /* report init stats */
report();
-#ifndef BSD
+#ifdef SIGCONT
else
-#endif
signal(SIGCONT, report);
+#endif
ypos = vres-1 - i; /* initialize sampling */
if (directvis)
init_drawsources(psample);
@@ -503,7 +444,7 @@ char *zfile, *oldfile;
if (directvis) /* add bitty sources */
drawsources(scanbar, zbar, 0, hres, ypos, ystep);
/* write it out */
-#ifndef BSD
+#ifdef SIGCONT
signal(SIGCONT, SIG_IGN); /* don't interrupt writes */
#endif
for (i = ystep; i > 0; i--) {
@@ -520,13 +461,15 @@ char *zfile, *oldfile;
pctdone = 100.0*(vres-1-ypos)/vres;
if (ralrm > 0 && time((time_t *)NULL) >= tlastrept+ralrm)
report();
-#ifndef BSD
+#ifdef SIGCONT
else
signal(SIGCONT, report);
#endif
}
/* clean up */
+#ifdef SIGCONT
signal(SIGCONT, SIG_IGN);
+#endif
if (zfd != -1 && write(zfd, (char *)zbar[0], hres*sizeof(float))
< hres*sizeof(float))
goto writerr;
@@ -547,7 +490,9 @@ alldone:
pctdone = 100.0;
if (ralrm > 0)
report();
+#ifdef SIGCONT
signal(SIGCONT, SIG_DFL);
+#endif
return;
writerr:
error(SYSTEM, "write error in render");
@@ -733,9 +678,7 @@ char *oldfile;
error(WARNING, errmsg);
goto gotzip;
}
-#ifdef MSDOS
- setmode(fileno(fp), O_BINARY);
-#endif
+ SET_FILE_BINARY(fp);
/* discard header */
getheader(fp, NULL, NULL);
/* get picture size */