--- ray/src/common/image.c 1999/02/26 12:24:07 2.15 +++ ray/src/common/image.c 2003/06/26 00:58:09 2.18 @@ -1,19 +1,18 @@ -/* Copyright (c) 1996 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: image.c,v 2.18 2003/06/26 00:58:09 schorsch Exp $"; #endif - /* * image.c - routines for image generation. + * + * External symbols declared in view.h */ +#include "copyright.h" + #include "standard.h" #include "view.h" -#include "resolu.h" - #include "paths.h" #define FEQ(x,y) (fabs((x)-(y)) <= FTINY) @@ -108,6 +107,7 @@ register VIEW *v; } +void normaspect(va, ap, xp, yp) /* fix pixel aspect or resolution */ double va; /* view aspect ratio */ double *ap; /* pixel aspect in (or out if 0) */ @@ -199,6 +199,7 @@ double x, y; } +void viewloc(ip, v, p) /* find image location for point */ FVECT ip; register VIEW *v; @@ -268,29 +269,31 @@ FVECT p; } +void pix2loc(loc, rp, px, py) /* compute image location from pixel pos. */ -FLOAT loc[2]; +RREAL loc[2]; register RESOLU *rp; int px, py; { register int x, y; - if (rp->or & YMAJOR) { + if (rp->rt & YMAJOR) { x = px; y = py; } else { x = py; y = px; } - if (rp->or & XDECR) + if (rp->rt & XDECR) x = rp->xr-1 - x; - if (rp->or & YDECR) + if (rp->rt & YDECR) y = rp->yr-1 - y; loc[0] = (x+.5)/rp->xr; loc[1] = (y+.5)/rp->yr; } +void loc2pix(pp, rp, lx, ly) /* compute pixel pos. from image location */ int pp[2]; register RESOLU *rp; @@ -300,11 +303,11 @@ double lx, ly; x = lx * rp->xr; y = ly * rp->yr; - if (rp->or & XDECR) + if (rp->rt & XDECR) x = rp->xr-1 - x; - if (rp->or & YDECR) + if (rp->rt & YDECR) y = rp->yr-1 - y; - if (rp->or & YMAJOR) { + if (rp->rt & YMAJOR) { pp[0] = x; pp[1] = y; } else { @@ -413,6 +416,7 @@ register char *s; } +void fprintview(vp, fp) /* write out view parameters */ register VIEW *vp; FILE *fp; @@ -536,13 +540,15 @@ RESOLU *rp; struct myview mvs; FILE *fp; - if ((fp = fopen(fname, "r")) == NULL) + if (fname == NULL || !strcmp(fname, "-")) + fp = stdin; + else if ((fp = fopen(fname, "r")) == NULL) return(-1); mvs.hv = vp; mvs.ok = 0; - getheader(fp, gethview, &mvs); + getheader(fp, (int (*)(char *, char *))&gethview, (char *)&mvs); if (rp != NULL && !fgetsresolu(rp, fp)) mvs.ok = 0;